@kanonak-protocol/cli 8.15.0 → 8.16.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/commands/search.d.ts +12 -0
- package/dist/index.js +219 -218
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __kanonakCreateRequire } from 'module'; const require = __kanonakCreateRequire(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`,
|
|
5
|
-
`)&&(r=
|
|
6
|
-
`)}};Qs.defaultYaml={explicit:!1,version:"1.2"};Qs.defaultTags={"!!":"tag:yaml.org,2002:"};
|
|
7
|
-
`)?
|
|
3
|
+
var $x=Object.create;var Lh=Object.defineProperty;var Sx=Object.getOwnPropertyDescriptor;var Ax=Object.getOwnPropertyNames;var xx=Object.getPrototypeOf,Ex=Object.prototype.hasOwnProperty;var to=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var re=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _x=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Ax(e))!Ex.call(t,a)&&a!==n&&Lh(t,a,{get:()=>e[a],enumerable:!(r=Sx(e,a))||r.enumerable});return t};var Rh=(t,e,n)=>(n=t!=null?$x(xx(t)):{},_x(e||!t||!t.__esModule?Lh(n,"default",{value:t,enumerable:!0}):n,t));var Zy=re((hH,Mo)=>{"use strict";function Hy(t){return Array.isArray(t)?t:[t]}var Ur=void 0,Fn="",Wa=" ",Xt="\\",M1=/[.*+?()[\]{}^$|\\/]/,D1="\uFEFF",F1=/(?:[^\\]|^)\\$/,V1=/^\\!/,q1=/^\\#/,K1=/\r?\n/g,U1="//",Ha=47,Vy=46,gn="/",Wy="node-ignore";typeof Symbol<"u"&&(Wy=Symbol.for("node-ignore"));var zy=Wy,$a=(t,e,n)=>(Object.defineProperty(t,e,{value:n}),n),Yy=()=>!1,qy={alnum:"0-9A-Za-z",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"!-.0-~",lower:"a-z",print:" -.0-~",punct:"!-.:-@\\[-`{-~",space:" \\t\\n\\r",upper:"A-Z",xdigit:"0-9A-Fa-f"},B1="\\]^-[",Po=t=>B1.indexOf(t)<0?t:Xt+t,H1="(?!\\/)",W1=(t,e)=>{if(t)return`[^\\/${e}]`;let n=`[${e}]`;return new RegExp(n).test("/")?H1+n:n},z1=(t,e)=>{let{length:n}=t,r=e+1,a=Fn,s=t[r];(s==="!"||s==="^")&&(a="^",r++);let i=Fn,o=Fn;for(;;){let l=t[r];if(l===Ur)return null;if(l===Xt){let c=t[r+1];if(c===Ur)return null;i+=Po(c),o=c,r++}else if(l==="-"&&o&&r+1<n&&t[r+1]!=="]"){r++;let c=t[r];c===Xt&&(c=t[r+=1]),o<=c&&(i+=`-${Po(c)}`),o=Fn}else if(l==="["&&t[r+1]===":"){let c=r+2,u=c;for(;u<n&&t[u]!=="]";)u++;if(u===n)return null;if(u>c&&t[u-1]===":"){let p=t.slice(c,u-1);if(!Object.prototype.hasOwnProperty.call(qy,p))return null;i+=qy[p],o=Fn,r=u}else i+=Po("["),o="[",r=c-2}else i+=Po(l),o=l;if(r++,t[r]==="]")return{end:r,source:W1(a,i)}}},Wu="[]",Gs="\0",Y1=new RegExp(`${Gs}(\\d+)${Gs}`,"g"),Lo="\uE000",Ro="\uE001",Ky=t=>t===Gs||t===Lo||t===Ro,G1=t=>{let e=[],n=i=>`${Gs}${e.push(i)-1}${Gs}`,{length:r}=t,a=Fn,s=0;for(;s<r;){let i=t[s];if(i===Xt){let o=t[s+1];o===Ur||o===gn&&s+2===r?a+=n(Wu):o==="*"||o==="["||o===Wa?a+=t.slice(s,s+2):a+=n(M1.test(o)?Xt+o:Ky(o)?`[${o}]`:o),s+=2}else if(Ky(i))a+=n(`[${i}]`),s++;else if(i==="["){let o=z1(t,s);o===null?(a+=n(Wu),s=r):(a+=n(o.source),s=o.end+1)}else a+=i,s++}return{source:a,sources:e}},zu=null,J1=/\/(?!$)/,X1=[[/(\\+)( ?)/g,(t,e,n)=>n?e.slice(0,e.length-e.length%2)+Wa:e,Xt+Wa],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]","?"],[/^\//,()=>"^",gn],[/\//g,()=>"\\/",gn],[/^\^*(?:\\\*\\\*\\\/)+/,()=>"^(?:.*\\/)?","*"],[zu,(t,e)=>!t||t[0]==="^"?t:(J1.test(e)?"^":"(?:^|\\/)")+t],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,n)=>e+6<n.length?n.slice(e+6)==="\\/"?"(?:\\/[^\\/]+)+":"(?:\\/[^\\/]+)*":`\\/${Ro}`,"*"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(t,e,n)=>{let r=n.replace(/\\\*/g,"[^\\/]*");return e+r},"*"],[/(^|[^\\])((?:\\\\)*)\\\*$/,(t,e,n)=>n===Fn?e+Lo:t,"*"],[/\\\\\\(?=[$.|*+(){^])/g,()=>Xt,Xt+Xt],[/\\\\/g,()=>Xt,Xt+Xt],[/\\\[([^\]/]*?)($|\])/g,(t,e,n)=>`\\[${e}${n}`,"["],[zu,t=>{let e=t[t.length-1];return!e||e===Lo||e===Ro?t:e===gn?`${t}$`:`${t}(?=$|\\/$)`}]],Q1=/(^|\\\/)?\uE000$/,Oo="regex",Uy="checkRegex",By="_",Z1=(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`,e_=/\uE001$/,t_=()=>".+(?=$|\\/$)",To="[^\\/]*",n_=(t,e)=>{let n=Fn;for(let r=e+1;r<t.length&&!t[r].wildcard;r++)n+=t[r].single;return n},r_=t=>{if(t.indexOf(To)<0)return t;let e=[],{length:n}=t,r=0;for(;r<n;){let o=t[r];if(t.startsWith(To,r))e.push({wildcard:!0}),r+=To.length;else if(o==="["){let l=r+1;for(t[l]==="^"&&l++,t[l]==="]"&&l++;l<n&&t[l]!=="]";)l+=t[l]===Xt?2:1;l++,e.push({single:t.slice(r,l)}),r=l}else if(o===Xt)e.push({single:t.slice(r,r+2)}),r+=2;else if(o==="("){let l=0,c=r;do t[c]===Xt?c++:t[c]==="("?l++:t[c]===")"&&l--,c++;while(c<n&&l>0);"*+?".indexOf(t[c])>=0&&c++,e.push({boundary:t.slice(r,c)}),r=c}else o==="^"||o==="$"?(e.push({boundary:o}),r++):(e.push({single:o}),r++)}let a=Fn,s=[],i=()=>{let o;s.forEach((l,c)=>{l.wildcard&&(o=c)}),s.forEach((l,c)=>{if(!l.wildcard){a+=l.single;return}a+=c===o?To:`(?:(?!${n_(s,c)})[^\\/])*`}),s=[]};return e.forEach(o=>{if(o.boundary===void 0){s.push(o);return}i(),a+=o.boundary}),i(),a},Gy=t=>{let{source:e,sources:n}=G1(t),r=X1.reduce((a,[s,i,o])=>s===zu?i(a,t):o!==Ur&&a.indexOf(o)<0?a:s.test(a)?a.replace(s,i.bind(t)):a,e);return n.length?r.replace(Y1,(a,s)=>n[s]):r},a_=(t,e)=>{t[t.length-1]===gn&&(e=Gy(t.slice(0,-1)));let n=e.slice(0,-1),r=e[e.length-1];return r===Lo?`${n}$`:r===Ro?`${n}.*$`:Wu},Jy=t=>{let e=t.indexOf(gn);return e<0||e===t.length-1},s_=t=>{let e=t.length-1,n=t.lastIndexOf(gn,t[e]===gn?e-1:e);return n<0?t:t.slice(n+1)},i_=t=>{if(t.charCodeAt(0)===Ha||t.indexOf(U1)>=0){let r=t.split(gn).filter(Boolean);return r.pop(),r.length?r.join(gn)+gn:Fn}let e=t.length-1,n=t.lastIndexOf(gn,t.charCodeAt(e)===Ha?e-1:e);return n<0?Fn:t.slice(0,n+1)},Io=t=>typeof t=="string",o_=t=>t&&Io(t)&&!F1.test(t),l_=t=>t.split(K1).filter(Boolean),Yu=class{constructor(e,n,r,a,s,i){this.pattern=e,this.mark=n,this.negative=s,$a(this,"body",r),$a(this,"ignoreCase",a),$a(this,"regexPrefix",i)}get _basenameOnly(){return $a(this,"_basenameOnly",Jy(this.body))}get regex(){let e=By+Oo;return this[e]?this[e]:this._make(Oo,e)}get checkRegex(){let e=By+Uy;return this[e]?this[e]:this._make(Uy,e)}_make(e,n){let r=r_(e===Oo?this.regexPrefix.replace(Q1,Z1).replace(e_,t_):a_(this.body,this.regexPrefix)),a=this.ignoreCase?new RegExp(r,"i"):new RegExp(r);return $a(this,n,a)}},c_=t=>t==="\r"||t===`
|
|
4
|
+
`,u_=t=>{let e=t.length;for(;e&&c_(t[e-1]);)e--;let n=e;for(;e&&t[e-1]===Wa;)e--;if(e===n)return t.slice(0,e);let r=0;for(;r<e&&t[e-r-1]===Xt;)r++;return r%2?t.slice(0,e-1)+Wa:t.slice(0,e)},p_=({pattern:t,mark:e},n)=>{let r=t[0]===D1?t.slice(1):t;if(r[0]==="#")return;let a=!1;r[0]==="!"&&(a=!0,r=r.slice(1));let s=r[r.length-1];if((s===Wa||s==="\r"||s===`
|
|
5
|
+
`)&&(r=u_(r)),!r)return;r=r.replace(V1,"!").replace(q1,"#");let i=Gy(r);return new Yu(t,e,r,n,a,i)},Gu=class{constructor(e){this._ignoreCase=e,this._rules=[],this._basenameCount=0}_add(e){if(e&&e[zy]){this._rules=this._rules.concat(e._rules._rules),this._basenameCount+=e._rules._basenameCount,this._added=!0;return}Io(e)&&(e={pattern:e});let n=o_(e.pattern)&&p_(e,this._ignoreCase);n&&(this._added=!0,this._rules.push(n),Jy(n.body)&&this._basenameCount++)}add(e){return this._added=!1,Hy(Io(e)?l_(e):e).forEach(this._add,this),this._added&&(this._literalRules=Ur),this._added}testLiteral(e){let n=this._literalRules||(this._literalRules=this._rules.filter(({body:o})=>o[o.length-(o[o.length-1]===gn?2:1)]==="*")),r=!1,a=!1,s;for(let o=n.length-1;o>=0;o--){let l=n[o];if(l.checkRegex.test(e)){r=!l.negative,a=l.negative,s=l.negative?Ur:l;break}}let i={ignored:r,unignored:a};return s&&(i.rule=s),i}test(e,n,r){let a=!1,s=!1,i,o=this._rules,{length:l}=o,c=this._basenameCount*2>=l,u=c?s_(e):e;for(let f=0;f<l;f++){let h=o[f],{negative:g}=h;!(s===g&&a!==s||g&&!a&&!s&&!n)&&h[r].test(c&&h._basenameOnly?u:e)&&(a=!g,s=g,i=g?Ur:h)}let p={ignored:a,unignored:s};return i&&(p.rule=i),p}},f_=(t,e)=>{throw new e(t)},wr=(t,e,n)=>Io(t)?t?wr.isNotRelative(t)?n(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:n("path must not be empty",TypeError):n(`path must be a string, but got \`${e}\``,TypeError),Xy=t=>{let e=t.charCodeAt(0);if(e===Ha)return!0;if(e!==Vy)return!1;if(t.length===1)return!0;let n=t.charCodeAt(1);return n===Ha?!0:n!==Vy?!1:t.length===2||t.charCodeAt(2)===Ha};wr.isNotRelative=Xy;wr.convert=t=>t;var Ju=class{constructor({ignorecase:e=!0,ignoreCase:n=e,allowRelativePaths:r=!1}={}){$a(this,zy,!0),this._rules=new Gu(n),this._strictPathCheck=!r,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,n,r){let a=e&&wr.convert(e);return wr(a,e,this._strictPathCheck?f_:Yy),this._t(a,n,r)}checkIgnore(e){if(e.charCodeAt(e.length-1)!==Ha)return this.test(e);let n=this._t(e,this._testCache,!0);if(n.ignored)return n;let r=this._rules.testLiteral(e);return r.ignored||r.unignored?r:n}_t(e,n,r){if(e in n)return n[e];let a=i_(e),s=a?this._t(a,n,r):Ur;return n[e]=s&&s.ignored?s:this._rules.test(e,r,Oo)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Hy(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Xu=t=>new Ju(t),d_=t=>wr(t&&wr.convert(t),t,Yy),Qy=()=>{let t=n=>/^\\\\\?\\/.test(n)||/["<>|\u0000-\u001F]+/u.test(n)?n:n.replace(/\\/g,"/");wr.convert=t;let e=/^[a-z]:\//i;wr.isNotRelative=n=>e.test(n)||Xy(n)};typeof process<"u"&&process.platform==="win32"&&Qy();Mo.exports=Xu;Xu.default=Xu;Mo.exports.isPathValid=d_;$a(Mo.exports,Symbol.for("setupWindows"),Qy)});var Me=re(Ut=>{"use strict";var np=Symbol.for("yaml.alias"),lk=Symbol.for("yaml.document"),Fo=Symbol.for("yaml.map"),ck=Symbol.for("yaml.pair"),rp=Symbol.for("yaml.scalar"),Vo=Symbol.for("yaml.seq"),Sr=Symbol.for("yaml.node.type"),k_=t=>!!t&&typeof t=="object"&&t[Sr]===np,b_=t=>!!t&&typeof t=="object"&&t[Sr]===lk,v_=t=>!!t&&typeof t=="object"&&t[Sr]===Fo,w_=t=>!!t&&typeof t=="object"&&t[Sr]===ck,uk=t=>!!t&&typeof t=="object"&&t[Sr]===rp,$_=t=>!!t&&typeof t=="object"&&t[Sr]===Vo;function pk(t){if(t&&typeof t=="object")switch(t[Sr]){case Fo:case Vo:return!0}return!1}function S_(t){if(t&&typeof t=="object")switch(t[Sr]){case np:case Fo:case rp:case Vo:return!0}return!1}var A_=t=>(uk(t)||pk(t))&&!!t.anchor;Ut.ALIAS=np;Ut.DOC=lk;Ut.MAP=Fo;Ut.NODE_TYPE=Sr;Ut.PAIR=ck;Ut.SCALAR=rp;Ut.SEQ=Vo;Ut.hasAnchor=A_;Ut.isAlias=k_;Ut.isCollection=pk;Ut.isDocument=b_;Ut.isMap=v_;Ut.isNode=S_;Ut.isPair=w_;Ut.isScalar=uk;Ut.isSeq=$_});var Xs=re(ap=>{"use strict";var jt=Me(),cn=Symbol("break visit"),fk=Symbol("skip children"),sr=Symbol("remove node");function qo(t,e){let n=dk(e);jt.isDocument(t)?Ga(null,t.contents,n,Object.freeze([t]))===sr&&(t.contents=null):Ga(null,t,n,Object.freeze([]))}qo.BREAK=cn;qo.SKIP=fk;qo.REMOVE=sr;function Ga(t,e,n,r){let a=hk(t,e,n,r);if(jt.isNode(a)||jt.isPair(a))return mk(t,r,a),Ga(t,a,n,r);if(typeof a!="symbol"){if(jt.isCollection(e)){r=Object.freeze(r.concat(e));for(let s=0;s<e.items.length;++s){let i=Ga(s,e.items[s],n,r);if(typeof i=="number")s=i-1;else{if(i===cn)return cn;i===sr&&(e.items.splice(s,1),s-=1)}}}else if(jt.isPair(e)){r=Object.freeze(r.concat(e));let s=Ga("key",e.key,n,r);if(s===cn)return cn;s===sr&&(e.key=null);let i=Ga("value",e.value,n,r);if(i===cn)return cn;i===sr&&(e.value=null)}}return a}async function Ko(t,e){let n=dk(e);jt.isDocument(t)?await Ja(null,t.contents,n,Object.freeze([t]))===sr&&(t.contents=null):await Ja(null,t,n,Object.freeze([]))}Ko.BREAK=cn;Ko.SKIP=fk;Ko.REMOVE=sr;async function Ja(t,e,n,r){let a=await hk(t,e,n,r);if(jt.isNode(a)||jt.isPair(a))return mk(t,r,a),Ja(t,a,n,r);if(typeof a!="symbol"){if(jt.isCollection(e)){r=Object.freeze(r.concat(e));for(let s=0;s<e.items.length;++s){let i=await Ja(s,e.items[s],n,r);if(typeof i=="number")s=i-1;else{if(i===cn)return cn;i===sr&&(e.items.splice(s,1),s-=1)}}}else if(jt.isPair(e)){r=Object.freeze(r.concat(e));let s=await Ja("key",e.key,n,r);if(s===cn)return cn;s===sr&&(e.key=null);let i=await Ja("value",e.value,n,r);if(i===cn)return cn;i===sr&&(e.value=null)}}return a}function dk(t){return typeof t=="object"&&(t.Collection||t.Node||t.Value)?Object.assign({Alias:t.Node,Map:t.Node,Scalar:t.Node,Seq:t.Node},t.Value&&{Map:t.Value,Scalar:t.Value,Seq:t.Value},t.Collection&&{Map:t.Collection,Seq:t.Collection},t):t}function hk(t,e,n,r){if(typeof n=="function")return n(t,e,r);if(jt.isMap(e))return n.Map?.(t,e,r);if(jt.isSeq(e))return n.Seq?.(t,e,r);if(jt.isPair(e))return n.Pair?.(t,e,r);if(jt.isScalar(e))return n.Scalar?.(t,e,r);if(jt.isAlias(e))return n.Alias?.(t,e,r)}function mk(t,e,n){let r=e[e.length-1];if(jt.isCollection(r))r.items[t]=n;else if(jt.isPair(r))t==="key"?r.key=n:r.value=n;else if(jt.isDocument(r))r.contents=n;else{let a=jt.isAlias(r)?"alias":"scalar";throw new Error(`Cannot replace node with ${a} parent`)}}ap.visit=qo;ap.visitAsync=Ko});var sp=re(yk=>{"use strict";var gk=Me(),x_=Xs(),E_={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},__=t=>t.replace(/[!,[\]{}]/g,e=>E_[e]),Qs=class t{constructor(e,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,e),this.tags=Object.assign({},t.defaultTags,n)}clone(){let e=new t(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return e}add(e,n){this.atNextDocument&&(this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1);let r=e.trim().split(/[ \t]+/),a=r.shift();switch(a){case"%TAG":{if(r.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;let[s,i]=r;return this.tags[s]=i,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;let[s]=r;if(s==="1.1"||s==="1.2")return this.yaml.version=s,!0;{let i=/^\d+\.\d+$/.test(s);return n(6,`Unsupported YAML version ${s}`,i),!1}}default:return n(0,`Unknown directive ${a}`,!0),!1}}tagName(e,n){if(e==="!")return"!";if(e[0]!=="!")return n(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let i=e.slice(2,-1);return i==="!"||i==="!!"?(n(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&n("Verbatim tags must end with a >"),i)}let[,r,a]=e.match(/^(.*!)([^!]*)$/s);a||n(`The ${e} tag has no suffix`);let s=this.tags[r];if(s)try{return s+decodeURIComponent(a)}catch(i){return n(String(i)),null}return r==="!"?e:(n(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[n,r]of Object.entries(this.tags))if(e.startsWith(r))return n+__(e.substring(r.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags),a;if(e&&r.length>0&&gk.isNode(e.contents)){let s={};x_.visit(e.contents,(i,o)=>{gk.isNode(o)&&o.tag&&(s[o.tag]=!0)}),a=Object.keys(s)}else a=[];for(let[s,i]of r)s==="!!"&&i==="tag:yaml.org,2002:"||(!e||a.some(o=>o.startsWith(i)))&&n.push(`%TAG ${s} ${i}`);return n.join(`
|
|
6
|
+
`)}};Qs.defaultYaml={explicit:!1,version:"1.2"};Qs.defaultTags={"!!":"tag:yaml.org,2002:"};yk.Directives=Qs});var Uo=re(Zs=>{"use strict";var kk=Me(),C_=Xs();function j_(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){let n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(n)}return!0}function bk(t){let e=new Set;return C_.visit(t,{Value(n,r){r.anchor&&e.add(r.anchor)}}),e}function vk(t,e){for(let n=1;;++n){let r=`${t}${n}`;if(!e.has(r))return r}}function N_(t,e){let n=[],r=new Map,a=null;return{onAnchor:s=>{n.push(s),a??(a=bk(t));let i=vk(e,a);return a.add(i),i},setAnchors:()=>{for(let s of n){let i=r.get(s);if(typeof i=="object"&&i.anchor&&(kk.isScalar(i.node)||kk.isCollection(i.node)))i.node.anchor=i.anchor;else{let o=new Error("Failed to resolve repeated object (this should not happen)");throw o.source=s,o}}},sourceObjects:r}}Zs.anchorIsValid=j_;Zs.anchorNames=bk;Zs.createNodeAnchors=N_;Zs.findNewAnchor=vk});var ip=re(wk=>{"use strict";function ei(t,e,n,r){if(r&&typeof r=="object")if(Array.isArray(r))for(let a=0,s=r.length;a<s;++a){let i=r[a],o=ei(t,r,String(a),i);o===void 0?delete r[a]:o!==i&&(r[a]=o)}else if(r instanceof Map)for(let a of Array.from(r.keys())){let s=r.get(a),i=ei(t,r,a,s);i===void 0?r.delete(a):i!==s&&r.set(a,i)}else if(r instanceof Set)for(let a of Array.from(r)){let s=ei(t,r,a,a);s===void 0?r.delete(a):s!==a&&(r.delete(a),r.add(s))}else for(let[a,s]of Object.entries(r)){let i=ei(t,r,a,s);i===void 0?delete r[a]:i!==s&&(r[a]=i)}return t.call(e,n,r)}wk.applyReviver=ei});var Br=re(Sk=>{"use strict";var P_=Me();function $k(t,e,n){if(Array.isArray(t))return t.map((r,a)=>$k(r,String(a),n));if(t&&typeof t.toJSON=="function"){if(!n||!P_.hasAnchor(t))return t.toJSON(e,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(t,r),n.onCreate=s=>{r.res=s,delete n.onCreate};let a=t.toJSON(e,n);return n.onCreate&&n.onCreate(a),a}return typeof t=="bigint"&&!n?.keep?Number(t):t}Sk.toJS=$k});var Bo=re(xk=>{"use strict";var T_=ip(),Ak=Me(),O_=Br(),op=class{constructor(e){Object.defineProperty(this,Ak.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:n,maxAliasCount:r,onAnchor:a,reviver:s}={}){if(!Ak.isDocument(e))throw new TypeError("A document argument is required");let i={anchors:new Map,doc:e,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},o=O_.toJS(this,"",i);if(typeof a=="function")for(let{count:l,res:c}of i.anchors.values())a(c,l);return typeof s=="function"?T_.applyReviver(s,{"":o},"",o):o}};xk.NodeBase=op});var ti=re(Ek=>{"use strict";var L_=Uo(),R_=Xs(),Xa=Me(),I_=Bo(),M_=Br(),lp=class extends I_.NodeBase{constructor(e){super(Xa.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,n){if(n?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let r;n?.aliasResolveCache?r=n.aliasResolveCache:(r=[],R_.visit(e,{Node:(s,i)=>{(Xa.isAlias(i)||Xa.hasAnchor(i))&&r.push(i)}}),n&&(n.aliasResolveCache=r));let a;for(let s of r){if(s===this)break;s.anchor===this.source&&(a=s)}if(a&&n){let{anchors:s,doc:i,maxAliasCount:o}=n,l=s.get(a);if(l||(M_.toJS(a,null,n),l=s.get(a)),l?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(o>=0&&(l.count+=1,l.aliasCount===0&&(l.aliasCount=Ho(i,a,s)),l.count*l.aliasCount>o)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}}return a}toJSON(e,n){if(!n)return{source:this.source};let r=this.resolve(n.doc,n);if(!r){let a=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(a)}return n.anchors.get(r).res}toString(e,n,r){let a=`*${this.source}`;if(e){if(L_.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let s=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(s)}if(e.implicitKey)return`${a} `}return a}};function Ho(t,e,n){if(Xa.isAlias(e)){let r=e.resolve(t),a=n&&r&&n.get(r);return a?a.count*a.aliasCount:0}else if(Xa.isCollection(e)){let r=0;for(let a of e.items){let s=Ho(t,a,n);s>r&&(r=s)}return r}else if(Xa.isPair(e)){let r=Ho(t,e.key,n),a=Ho(t,e.value,n);return Math.max(r,a)}return 1}Ek.Alias=lp});var $t=re(cp=>{"use strict";var D_=Me(),F_=Bo(),V_=Br(),q_=t=>!t||typeof t!="function"&&typeof t!="object",Hr=class extends F_.NodeBase{constructor(e){super(D_.SCALAR),this.value=e}toJSON(e,n){return n?.keep?this.value:V_.toJS(this.value,e,n)}toString(){return String(this.value)}};Hr.BLOCK_FOLDED="BLOCK_FOLDED";Hr.BLOCK_LITERAL="BLOCK_LITERAL";Hr.PLAIN="PLAIN";Hr.QUOTE_DOUBLE="QUOTE_DOUBLE";Hr.QUOTE_SINGLE="QUOTE_SINGLE";cp.Scalar=Hr;cp.isScalarValue=q_});var ni=re(Ck=>{"use strict";var K_=ti(),Sa=Me(),_k=$t(),U_="tag:yaml.org,2002:";function B_(t,e,n){if(e){let r=n.filter(s=>s.tag===e),a=r.find(s=>!s.format)??r[0];if(!a)throw new Error(`Tag ${e} not found`);return a}return n.find(r=>r.identify?.(t)&&!r.format)}function H_(t,e,n){if(Sa.isDocument(t)&&(t=t.contents),Sa.isNode(t))return t;if(Sa.isPair(t)){let p=n.schema[Sa.MAP].createNode?.(n.schema,null,n);return p.items.push(t),p}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());let{aliasDuplicateObjects:r,onAnchor:a,onTagObj:s,schema:i,sourceObjects:o}=n,l;if(r&&t&&typeof t=="object"){if(l=o.get(t),l)return l.anchor??(l.anchor=a(t)),new K_.Alias(l.anchor);l={anchor:null,node:null},o.set(t,l)}e?.startsWith("!!")&&(e=U_+e.slice(2));let c=B_(t,e,i.tags);if(!c){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){let p=new _k.Scalar(t);return l&&(l.node=p),p}c=t instanceof Map?i[Sa.MAP]:Symbol.iterator in Object(t)?i[Sa.SEQ]:i[Sa.MAP]}s&&(s(c),delete n.onTagObj);let u=c?.createNode?c.createNode(n.schema,t,n):typeof c?.nodeClass?.from=="function"?c.nodeClass.from(n.schema,t,n):new _k.Scalar(t);return e?u.tag=e:c.default||(u.tag=c.tag),l&&(l.node=u),u}Ck.createNode=H_});var zo=re(Wo=>{"use strict";var W_=ni(),ir=Me(),z_=Bo();function up(t,e,n){let r=n;for(let a=e.length-1;a>=0;--a){let s=e[a];if(typeof s=="number"&&Number.isInteger(s)&&s>=0){let i=[];i[s]=r,r=i}else r=new Map([[s,r]])}return W_.createNode(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}var jk=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done,pp=class extends z_.NodeBase{constructor(e,n){super(e),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(e){let n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(n.schema=e),n.items=n.items.map(r=>ir.isNode(r)||ir.isPair(r)?r.clone(e):r),this.range&&(n.range=this.range.slice()),n}addIn(e,n){if(jk(e))this.add(n);else{let[r,...a]=e,s=this.get(r,!0);if(ir.isCollection(s))s.addIn(a,n);else if(s===void 0&&this.schema)this.set(r,up(this.schema,a,n));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}deleteIn(e){let[n,...r]=e;if(r.length===0)return this.delete(n);let a=this.get(n,!0);if(ir.isCollection(a))return a.deleteIn(r);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}getIn(e,n){let[r,...a]=e,s=this.get(r,!0);return a.length===0?!n&&ir.isScalar(s)?s.value:s:ir.isCollection(s)?s.getIn(a,n):void 0}hasAllNullValues(e){return this.items.every(n=>{if(!ir.isPair(n))return!1;let r=n.value;return r==null||e&&ir.isScalar(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[n,...r]=e;if(r.length===0)return this.has(n);let a=this.get(n,!0);return ir.isCollection(a)?a.hasIn(r):!1}setIn(e,n){let[r,...a]=e;if(a.length===0)this.set(r,n);else{let s=this.get(r,!0);if(ir.isCollection(s))s.setIn(a,n);else if(s===void 0&&this.schema)this.set(r,up(this.schema,a,n));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}};Wo.Collection=pp;Wo.collectionFromPath=up;Wo.isEmptyPath=jk});var ri=re(Yo=>{"use strict";var Y_=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function fp(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}var G_=(t,e,n)=>t.endsWith(`
|
|
7
|
+
`)?fp(n,e):n.includes(`
|
|
8
8
|
`)?`
|
|
9
|
-
`+
|
|
10
|
-
`)n===
|
|
9
|
+
`+fp(n,e):(t.endsWith(" ")?"":" ")+n;Yo.indentComment=fp;Yo.lineComment=G_;Yo.stringifyComment=Y_});var Pk=re(ai=>{"use strict";var J_="flow",dp="block",Go="quoted";function X_(t,e,n="flow",{indentAtStart:r,lineWidth:a=80,minContentWidth:s=20,onFold:i,onOverflow:o}={}){if(!a||a<0)return t;a<s&&(s=0);let l=Math.max(1+s,1+a-e.length);if(t.length<=l)return t;let c=[],u={},p=a-e.length;typeof r=="number"&&(r>a-Math.max(2,s)?c.push(0):p=a-r);let f,h,g=!1,m=-1,y=-1,v=-1;n===dp&&(m=Nk(t,m,e.length),m!==-1&&(p=m+l));for(let w;w=t[m+=1];){if(n===Go&&w==="\\"){switch(y=m,t[m+1]){case"x":m+=3;break;case"u":m+=5;break;case"U":m+=9;break;default:m+=1}v=m}if(w===`
|
|
10
|
+
`)n===dp&&(m=Nk(t,m,e.length)),p=m+e.length+l,f=void 0;else{if(w===" "&&h&&h!==" "&&h!==`
|
|
11
11
|
`&&h!==" "){let S=t[m+1];S&&S!==" "&&S!==`
|
|
12
|
-
`&&S!==" "&&(f=m)}if(m>=p)if(f)c.push(f),p=f+l,f=void 0;else if(n===
|
|
13
|
-
${e}${t.slice(0,A)}`:(n===
|
|
14
|
-
${e}${t.slice(S+1,A)}`)}return k}function
|
|
15
|
-
`);r=e,a=e+1,s=t[a]}return r}ai.FOLD_BLOCK=
|
|
16
|
-
`){if(s-i>r)return!0;if(i=s+1,a-i<=r)return!1}return!0}function si(t,e){let n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;let{implicitKey:r}=e,a=e.options.doubleQuotedMinMultiLineLength,s=e.indent||(
|
|
12
|
+
`&&S!==" "&&(f=m)}if(m>=p)if(f)c.push(f),p=f+l,f=void 0;else if(n===Go){for(;h===" "||h===" ";)h=w,w=t[m+=1],g=!0;let S=m>v+1?m-2:y-1;if(u[S])return t;c.push(S),u[S]=!0,p=S+l,f=void 0}else g=!0}h=w}if(g&&o&&o(),c.length===0)return t;i&&i();let k=t.slice(0,c[0]);for(let w=0;w<c.length;++w){let S=c[w],A=c[w+1]||t.length;S===0?k=`
|
|
13
|
+
${e}${t.slice(0,A)}`:(n===Go&&u[S]&&(k+=`${t[S]}\\`),k+=`
|
|
14
|
+
${e}${t.slice(S+1,A)}`)}return k}function Nk(t,e,n){let r=e,a=e+1,s=t[a];for(;s===" "||s===" ";)if(e<a+n)s=t[++e];else{do s=t[++e];while(s&&s!==`
|
|
15
|
+
`);r=e,a=e+1,s=t[a]}return r}ai.FOLD_BLOCK=dp;ai.FOLD_FLOW=J_;ai.FOLD_QUOTED=Go;ai.foldFlowLines=X_});var ii=re(Tk=>{"use strict";var Vn=$t(),Wr=Pk(),Xo=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),Qo=t=>/^(%|---|\.\.\.)/m.test(t);function Q_(t,e,n){if(!e||e<0)return!1;let r=e-n,a=t.length;if(a<=r)return!1;for(let s=0,i=0;s<a;++s)if(t[s]===`
|
|
16
|
+
`){if(s-i>r)return!0;if(i=s+1,a-i<=r)return!1}return!0}function si(t,e){let n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;let{implicitKey:r}=e,a=e.options.doubleQuotedMinMultiLineLength,s=e.indent||(Qo(t)?" ":""),i="",o=0;for(let l=0,c=n[l];c;c=n[++l])if(c===" "&&n[l+1]==="\\"&&n[l+2]==="n"&&(i+=n.slice(o,l)+"\\ ",l+=1,o=l,c="\\"),c==="\\")switch(n[l+1]){case"u":{i+=n.slice(o,l);let u=n.substr(l+2,4);switch(u){case"0000":i+="\\0";break;case"0007":i+="\\a";break;case"000b":i+="\\v";break;case"001b":i+="\\e";break;case"0085":i+="\\N";break;case"00a0":i+="\\_";break;case"2028":i+="\\L";break;case"2029":i+="\\P";break;default:u.substr(0,2)==="00"?i+="\\x"+u.substr(2):i+=n.substr(l,6)}l+=5,o=l+1}break;case"n":if(r||n[l+2]==='"'||n.length<a)l+=1;else{for(i+=n.slice(o,l)+`
|
|
17
17
|
|
|
18
18
|
`;n[l+2]==="\\"&&n[l+3]==="n"&&n[l+4]!=='"';)i+=`
|
|
19
|
-
`,l+=2;i+=s,n[l+2]===" "&&(i+="\\"),l+=1,o=l+1}break;default:l+=1}return i=o?i+n.slice(o):n,r?i:
|
|
20
|
-
`)||/[ \t]\n|\n[ \t]/.test(t))return si(t,e);let n=e.indent||(
|
|
21
|
-
${n}`)+"'";return e.implicitKey?r:
|
|
19
|
+
`,l+=2;i+=s,n[l+2]===" "&&(i+="\\"),l+=1,o=l+1}break;default:l+=1}return i=o?i+n.slice(o):n,r?i:Wr.foldFlowLines(i,s,Wr.FOLD_QUOTED,Xo(e,!1))}function hp(t,e){if(e.options.singleQuote===!1||e.implicitKey&&t.includes(`
|
|
20
|
+
`)||/[ \t]\n|\n[ \t]/.test(t))return si(t,e);let n=e.indent||(Qo(t)?" ":""),r="'"+t.replace(/'/g,"''").replace(/\n+/g,`$&
|
|
21
|
+
${n}`)+"'";return e.implicitKey?r:Wr.foldFlowLines(r,n,Wr.FOLD_FLOW,Xo(e,!1))}function Qa(t,e){let{singleQuote:n}=e.options,r;if(n===!1)r=si;else{let a=t.includes('"'),s=t.includes("'");a&&!s?r=hp:s&&!a?r=si:r=n?hp:si}return r(t,e)}var mp;try{mp=new RegExp(`(^|(?<!
|
|
22
22
|
))
|
|
23
23
|
+(?!
|
|
24
|
-
|$)`,"g")}catch{
|
|
24
|
+
|$)`,"g")}catch{mp=/\n+(?!\n|$)/g}function Jo({comment:t,type:e,value:n},r,a,s){let{blockQuote:i,commentString:o,lineWidth:l}=r.options;if(!i||/\n[\t ]+$/.test(n))return Qa(n,r);let c=r.indent||(r.forceBlockIndent||Qo(n)?" ":""),u=i==="literal"?!0:i==="folded"||e===Vn.Scalar.BLOCK_FOLDED?!1:e===Vn.Scalar.BLOCK_LITERAL?!0:!Q_(n,l,c.length);if(!n)return u?`|
|
|
25
25
|
`:`>
|
|
26
26
|
`;let p,f;for(f=n.length;f>0;--f){let A=n[f-1];if(A!==`
|
|
27
27
|
`&&A!==" "&&A!==" ")break}let h=n.substring(f),g=h.indexOf(`
|
|
28
28
|
`);g===-1?p="-":n===h||g!==h.length-1?(p="+",s&&s()):p="",h&&(n=n.slice(0,-h.length),h[h.length-1]===`
|
|
29
|
-
`&&(h=h.slice(0,-1)),h=h.replace(
|
|
29
|
+
`&&(h=h.slice(0,-1)),h=h.replace(mp,`$&${c}`));let m=!1,y,v=-1;for(y=0;y<n.length;++y){let A=n[y];if(A===" ")m=!0;else if(A===`
|
|
30
30
|
`)v=y;else break}let k=n.substring(0,v<y?v+1:y);k&&(n=n.substring(k.length),k=k.replace(/\n+/g,`$&${c}`));let S=(m?c?"2":"1":"")+p;if(t&&(S+=" "+o(t.replace(/ ?[\r\n]+/g," ")),a&&a()),!u){let A=n.replace(/\n+/g,`
|
|
31
|
-
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`),C=!1,N=
|
|
31
|
+
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`),C=!1,N=Xo(r,!0);i!=="folded"&&e!==Vn.Scalar.BLOCK_FOLDED&&(N.onOverflow=()=>{C=!0});let _=Wr.foldFlowLines(`${k}${A}${h}`,c,Wr.FOLD_BLOCK,N);if(!C)return`>${S}
|
|
32
32
|
${c}${_}`}return n=n.replace(/\n+/g,`$&${c}`),`|${S}
|
|
33
|
-
${c}${k}${n}${h}`}function
|
|
33
|
+
${c}${k}${n}${h}`}function Z_(t,e,n,r){let{type:a,value:s}=t,{actualString:i,implicitKey:o,indent:l,indentStep:c,inFlow:u}=e;if(o&&s.includes(`
|
|
34
34
|
`)||u&&/[[\]{},]/.test(s))return Qa(s,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(s))return o||u||!s.includes(`
|
|
35
|
-
`)?Qa(s,e):
|
|
36
|
-
`))return
|
|
37
|
-
${l}`);if(i){let f=m=>m.default&&m.tag!=="tag:yaml.org,2002:str"&&m.test?.test(p),{compat:h,tags:g}=e.doc.schema;if(g.some(f)||h?.some(f))return Qa(s,e)}return o?p:
|
|
38
|
-
${e.indent}${o}`:o}
|
|
39
|
-
${o}:`):(y=`${y}:`,f&&(y+=li.lineComment(y,n.indent,c(f))));let v,k,w;
|
|
35
|
+
`)?Qa(s,e):Jo(t,e,n,r);if(!o&&!u&&a!==Vn.Scalar.PLAIN&&s.includes(`
|
|
36
|
+
`))return Jo(t,e,n,r);if(Qo(s)){if(l==="")return e.forceBlockIndent=!0,Jo(t,e,n,r);if(o&&l===c)return Qa(s,e)}let p=s.replace(/\n+/g,`$&
|
|
37
|
+
${l}`);if(i){let f=m=>m.default&&m.tag!=="tag:yaml.org,2002:str"&&m.test?.test(p),{compat:h,tags:g}=e.doc.schema;if(g.some(f)||h?.some(f))return Qa(s,e)}return o?p:Wr.foldFlowLines(p,l,Wr.FOLD_FLOW,Xo(e,!1))}function eC(t,e,n,r){let{implicitKey:a,inFlow:s}=e,i=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)}),{type:o}=t;o!==Vn.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(i.value)&&(o=Vn.Scalar.QUOTE_DOUBLE);let l=u=>{switch(u){case Vn.Scalar.BLOCK_FOLDED:case Vn.Scalar.BLOCK_LITERAL:return a||s?Qa(i.value,e):Jo(i,e,n,r);case Vn.Scalar.QUOTE_DOUBLE:return si(i.value,e);case Vn.Scalar.QUOTE_SINGLE:return hp(i.value,e);case Vn.Scalar.PLAIN:return Z_(i,e,n,r);default:return null}},c=l(o);if(c===null){let{defaultKeyType:u,defaultStringType:p}=e.options,f=a&&u||p;if(c=l(f),c===null)throw new Error(`Unsupported default string type ${f}`)}return c}Tk.stringifyString=eC});var oi=re(gp=>{"use strict";var tC=Uo(),zr=Me(),nC=ri(),rC=ii();function aC(t,e){let n=Object.assign({blockQuote:!0,commentString:nC.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},t.schema.toStringOptions,e),r;switch(n.collectionStyle){case"block":r=!1;break;case"flow":r=!0;break;default:r=null}return{anchors:new Set,doc:t,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:r,options:n}}function sC(t,e){if(e.tag){let a=t.filter(s=>s.tag===e.tag);if(a.length>0)return a.find(s=>s.format===e.format)??a[0]}let n,r;if(zr.isScalar(e)){r=e.value;let a=t.filter(s=>s.identify?.(r));if(a.length>1){let s=a.filter(i=>i.test);s.length>0&&(a=s)}n=a.find(s=>s.format===e.format)??a.find(s=>!s.format)}else r=e,n=t.find(a=>a.nodeClass&&r instanceof a.nodeClass);if(!n){let a=r?.constructor?.name??(r===null?"null":typeof r);throw new Error(`Tag not resolved for ${a} value`)}return n}function iC(t,e,{anchors:n,doc:r}){if(!r.directives)return"";let a=[],s=(zr.isScalar(t)||zr.isCollection(t))&&t.anchor;s&&tC.anchorIsValid(s)&&(n.add(s),a.push(`&${s}`));let i=t.tag??(e.default?null:e.tag);return i&&a.push(r.directives.tagString(i)),a.join(" ")}function oC(t,e,n,r){if(zr.isPair(t))return t.toString(e,n,r);if(zr.isAlias(t)){if(e.doc.directives)return t.toString(e);if(e.resolvedAliases?.has(t))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(t):e.resolvedAliases=new Set([t]),t=t.resolve(e.doc)}let a,s=zr.isNode(t)?t:e.doc.createNode(t,{onTagObj:l=>a=l});a??(a=sC(e.doc.schema.tags,s));let i=iC(s,a,e);i.length>0&&(e.indentAtStart=(e.indentAtStart??0)+i.length+1);let o=typeof a.stringify=="function"?a.stringify(s,e,n,r):zr.isScalar(s)?rC.stringifyString(s,e,n,r):s.toString(e,n,r);return i?zr.isScalar(s)||o[0]==="{"||o[0]==="["?`${i} ${o}`:`${i}
|
|
38
|
+
${e.indent}${o}`:o}gp.createStringifyContext=aC;gp.stringify=oC});var Ik=re(Rk=>{"use strict";var Ar=Me(),Ok=$t(),Lk=oi(),li=ri();function lC({key:t,value:e},n,r,a){let{allNullValues:s,doc:i,indent:o,indentStep:l,options:{commentString:c,indentSeq:u,simpleKeys:p}}=n,f=Ar.isNode(t)&&t.comment||null;if(p){if(f)throw new Error("With simple keys, key nodes cannot have comments");if(Ar.isCollection(t)||!Ar.isNode(t)&&typeof t=="object"){let N="With simple keys, collection cannot be used as a key value";throw new Error(N)}}let h=!p&&(!t||f&&e==null&&!n.inFlow||Ar.isCollection(t)||(Ar.isScalar(t)?t.type===Ok.Scalar.BLOCK_FOLDED||t.type===Ok.Scalar.BLOCK_LITERAL:typeof t=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!h&&(p||!s),indent:o+l});let g=!1,m=!1,y=Lk.stringify(t,n,()=>g=!0,()=>m=!0);if(!h&&!n.inFlow&&y.length>1024){if(p)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(n.inFlow){if(s||e==null)return g&&r&&r(),y===""?"?":h?`? ${y}`:y}else if(s&&!p||e==null&&h)return y=`? ${y}`,f&&!g?y+=li.lineComment(y,n.indent,c(f)):m&&a&&a(),y;g&&(f=null),h?(f&&(y+=li.lineComment(y,n.indent,c(f))),y=`? ${y}
|
|
39
|
+
${o}:`):(y=`${y}:`,f&&(y+=li.lineComment(y,n.indent,c(f))));let v,k,w;Ar.isNode(e)?(v=!!e.spaceBefore,k=e.commentBefore,w=e.comment):(v=!1,k=null,w=null,e&&typeof e=="object"&&(e=i.createNode(e))),n.implicitKey=!1,!h&&!f&&Ar.isScalar(e)&&(n.indentAtStart=y.length+1),m=!1,!u&&l.length>=2&&!n.inFlow&&!h&&Ar.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(n.indent=n.indent.substring(2));let S=!1,A=Lk.stringify(e,n,()=>S=!0,()=>m=!0),C=" ";if(f||v||k){if(C=v?`
|
|
40
40
|
`:"",k){let N=c(k);C+=`
|
|
41
41
|
${li.indentComment(N,n.indent)}`}A===""&&!n.inFlow?C===`
|
|
42
42
|
`&&w&&(C=`
|
|
43
43
|
|
|
44
44
|
`):C+=`
|
|
45
|
-
${n.indent}`}else if(!h&&
|
|
45
|
+
${n.indent}`}else if(!h&&Ar.isCollection(e)){let N=A[0],_=A.indexOf(`
|
|
46
46
|
`),B=_!==-1,X=n.inFlow??e.flow??e.items.length===0;if(B||!X){let pe=!1;if(B&&(N==="&"||N==="!")){let J=A.indexOf(" ");N==="&"&&J!==-1&&J<_&&A[J+1]==="!"&&(J=A.indexOf(" ",J+1)),(J===-1||_<J)&&(pe=!0)}pe||(C=`
|
|
47
47
|
${n.indent}`)}}else(A===""||A[0]===`
|
|
48
|
-
`)&&(C="");return y+=C+A,n.inFlow?S&&r&&r():w&&!S?y+=li.lineComment(y,n.indent,c(w)):m&&a&&a(),y}
|
|
48
|
+
`)&&(C="");return y+=C+A,n.inFlow?S&&r&&r():w&&!S?y+=li.lineComment(y,n.indent,c(w)):m&&a&&a(),y}Rk.stringifyPair=lC});var kp=re(yp=>{"use strict";var Mk=to("process");function cC(t,...e){t==="debug"&&console.log(...e)}function uC(t,e){(t==="debug"||t==="warn")&&(typeof Mk.emitWarning=="function"?Mk.emitWarning(e):console.warn(e))}yp.debug=cC;yp.warn=uC});var rl=re(nl=>{"use strict";var tl=Me(),Dk=$t(),Zo="<<",el={identify:t=>t===Zo||typeof t=="symbol"&&t.description===Zo,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Dk.Scalar(Symbol(Zo)),{addToJSMap:Fk}),stringify:()=>Zo},pC=(t,e)=>(el.identify(e)||tl.isScalar(e)&&(!e.type||e.type===Dk.Scalar.PLAIN)&&el.identify(e.value))&&t?.doc.schema.tags.some(n=>n.tag===el.tag&&n.default);function Fk(t,e,n){let r=Vk(t,n);if(tl.isSeq(r))for(let a of r.items)bp(t,e,a);else if(Array.isArray(r))for(let a of r)bp(t,e,a);else bp(t,e,r)}function bp(t,e,n){let r=Vk(t,n);if(!tl.isMap(r))throw new Error("Merge sources must be maps or map aliases");let a=r.toJSON(null,t,Map);for(let[s,i]of a)e instanceof Map?e.has(s)||e.set(s,i):e instanceof Set?e.add(s):Object.prototype.hasOwnProperty.call(e,s)||Object.defineProperty(e,s,{value:i,writable:!0,enumerable:!0,configurable:!0});return e}function Vk(t,e){return t&&tl.isAlias(e)?e.resolve(t.doc,t):e}nl.addMergeToJSMap=Fk;nl.isMergeKey=pC;nl.merge=el});var wp=re(Uk=>{"use strict";var fC=kp(),qk=rl(),dC=oi(),Kk=Me(),vp=Br();function hC(t,e,{key:n,value:r}){if(Kk.isNode(n)&&n.addToJSMap)n.addToJSMap(t,e,r);else if(qk.isMergeKey(t,n))qk.addMergeToJSMap(t,e,r);else{let a=vp.toJS(n,"",t);if(e instanceof Map)e.set(a,vp.toJS(r,a,t));else if(e instanceof Set)e.add(a);else{let s=mC(n,a,t),i=vp.toJS(r,s,t);s in e?Object.defineProperty(e,s,{value:i,writable:!0,enumerable:!0,configurable:!0}):e[s]=i}}return e}function mC(t,e,n){if(e===null)return"";if(typeof e!="object")return String(e);if(Kk.isNode(t)&&n?.doc){let r=dC.createStringifyContext(n.doc,{});r.anchors=new Set;for(let s of n.anchors.keys())r.anchors.add(s.anchor);r.inFlow=!0,r.inStringifyKey=!0;let a=t.toString(r);if(!n.mapKeyWarned){let s=JSON.stringify(a);s.length>40&&(s=s.substring(0,36)+'..."'),fC.warn(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${s}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return a}return JSON.stringify(e)}Uk.addPairToJSMap=hC});var Yr=re($p=>{"use strict";var Bk=ni(),gC=Ik(),yC=wp(),al=Me();function kC(t,e,n){let r=Bk.createNode(t,void 0,n),a=Bk.createNode(e,void 0,n);return new sl(r,a)}var sl=class t{constructor(e,n=null){Object.defineProperty(this,al.NODE_TYPE,{value:al.PAIR}),this.key=e,this.value=n}clone(e){let{key:n,value:r}=this;return al.isNode(n)&&(n=n.clone(e)),al.isNode(r)&&(r=r.clone(e)),new t(n,r)}toJSON(e,n){let r=n?.mapAsMap?new Map:{};return yC.addPairToJSMap(n,r,this)}toString(e,n,r){return e?.doc?gC.stringifyPair(this,e,n,r):JSON.stringify(this)}};$p.Pair=sl;$p.createPair=kC});var Sp=re(Wk=>{"use strict";var Aa=Me(),Hk=oi(),il=ri();function bC(t,e,n){return(e.inFlow??t.flow?wC:vC)(t,e,n)}function vC({comment:t,items:e},n,{blockItemPrefix:r,flowChars:a,itemIndent:s,onChompKeep:i,onComment:o}){let{indent:l,options:{commentString:c}}=n,u=Object.assign({},n,{indent:s,type:null}),p=!1,f=[];for(let g=0;g<e.length;++g){let m=e[g],y=null;if(Aa.isNode(m))!p&&m.spaceBefore&&f.push(""),ol(n,f,m.commentBefore,p),m.comment&&(y=m.comment);else if(Aa.isPair(m)){let k=Aa.isNode(m.key)?m.key:null;k&&(!p&&k.spaceBefore&&f.push(""),ol(n,f,k.commentBefore,p))}p=!1;let v=Hk.stringify(m,u,()=>y=null,()=>p=!0);y&&(v+=il.lineComment(v,s,c(y))),p&&y&&(p=!1),f.push(r+v)}let h;if(f.length===0)h=a.start+a.end;else{h=f[0];for(let g=1;g<f.length;++g){let m=f[g];h+=m?`
|
|
49
49
|
${l}${m}`:`
|
|
50
50
|
`}}return t?(h+=`
|
|
51
|
-
`+
|
|
52
|
-
`)),g<t.length-1?v+=",":e.options.trailingComma&&(e.options.lineWidth>0&&(c||(c=p.reduce((k,w)=>k+w.length+2,2)+(v.length+2)>e.options.lineWidth)),c&&(v+=",")),y&&(v+=
|
|
51
|
+
`+il.indentComment(c(t),l),o&&o()):p&&i&&i(),h}function wC({items:t},e,{flowChars:n,itemIndent:r}){let{indent:a,indentStep:s,flowCollectionPadding:i,options:{commentString:o}}=e;r+=s;let l=Object.assign({},e,{indent:r,inFlow:!0,type:null}),c=!1,u=0,p=[];for(let g=0;g<t.length;++g){let m=t[g],y=null;if(Aa.isNode(m))m.spaceBefore&&p.push(""),ol(e,p,m.commentBefore,!1),m.comment&&(y=m.comment);else if(Aa.isPair(m)){let k=Aa.isNode(m.key)?m.key:null;k&&(k.spaceBefore&&p.push(""),ol(e,p,k.commentBefore,!1),k.comment&&(c=!0));let w=Aa.isNode(m.value)?m.value:null;w?(w.comment&&(y=w.comment),w.commentBefore&&(c=!0)):m.value==null&&k?.comment&&(y=k.comment)}y&&(c=!0);let v=Hk.stringify(m,l,()=>y=null);c||(c=p.length>u||v.includes(`
|
|
52
|
+
`)),g<t.length-1?v+=",":e.options.trailingComma&&(e.options.lineWidth>0&&(c||(c=p.reduce((k,w)=>k+w.length+2,2)+(v.length+2)>e.options.lineWidth)),c&&(v+=",")),y&&(v+=il.lineComment(v,r,o(y))),p.push(v),u=p.length}let{start:f,end:h}=n;if(p.length===0)return f+h;if(!c){let g=p.reduce((m,y)=>m+y.length+2,2);c=e.options.lineWidth>0&&g>e.options.lineWidth}if(c){let g=f;for(let m of p)g+=m?`
|
|
53
53
|
${s}${a}${m}`:`
|
|
54
54
|
`;return`${g}
|
|
55
|
-
${a}${h}`}else return`${f}${i}${p.join(" ")}${i}${h}`}function
|
|
56
|
-
`:" ")}return
|
|
55
|
+
${a}${h}`}else return`${f}${i}${p.join(" ")}${i}${h}`}function ol({indent:t,options:{commentString:e}},n,r,a){if(r&&a&&(r=r.replace(/^\n+/,"")),r){let s=il.indentComment(e(r),t);n.push(s.trimStart())}}Wk.stringifyCollection=bC});var Jr=re(xp=>{"use strict";var $C=Sp(),SC=wp(),AC=zo(),Gr=Me(),ll=Yr(),xC=$t();function ci(t,e){let n=Gr.isScalar(e)?e.value:e;for(let r of t)if(Gr.isPair(r)&&(r.key===e||r.key===n||Gr.isScalar(r.key)&&r.key.value===n))return r}var Ap=class extends AC.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Gr.MAP,e),this.items=[]}static from(e,n,r){let{keepUndefined:a,replacer:s}=r,i=new this(e),o=(l,c)=>{if(typeof s=="function")c=s.call(n,l,c);else if(Array.isArray(s)&&!s.includes(l))return;(c!==void 0||a)&&i.items.push(ll.createPair(l,c,r))};if(n instanceof Map)for(let[l,c]of n)o(l,c);else if(n&&typeof n=="object")for(let l of Object.keys(n))o(l,n[l]);return typeof e.sortMapEntries=="function"&&i.items.sort(e.sortMapEntries),i}add(e,n){let r;Gr.isPair(e)?r=e:!e||typeof e!="object"||!("key"in e)?r=new ll.Pair(e,e?.value):r=new ll.Pair(e.key,e.value);let a=ci(this.items,r.key),s=this.schema?.sortMapEntries;if(a){if(!n)throw new Error(`Key ${r.key} already set`);Gr.isScalar(a.value)&&xC.isScalarValue(r.value)?a.value.value=r.value:a.value=r.value}else if(s){let i=this.items.findIndex(o=>s(r,o)<0);i===-1?this.items.push(r):this.items.splice(i,0,r)}else this.items.push(r)}delete(e){let n=ci(this.items,e);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(e,n){let a=ci(this.items,e)?.value;return(!n&&Gr.isScalar(a)?a.value:a)??void 0}has(e){return!!ci(this.items,e)}set(e,n){this.add(new ll.Pair(e,n),!0)}toJSON(e,n,r){let a=r?new r:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(a);for(let s of this.items)SC.addPairToJSMap(n,a,s);return a}toString(e,n,r){if(!e)return JSON.stringify(this);for(let a of this.items)if(!Gr.isPair(a))throw new Error(`Map items must all be pairs; found ${JSON.stringify(a)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),$C.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:r,onComment:n})}};xp.YAMLMap=Ap;xp.findPair=ci});var Za=re(Yk=>{"use strict";var EC=Me(),zk=Jr(),_C={collection:"map",default:!0,nodeClass:zk.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(t,e){return EC.isMap(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,n)=>zk.YAMLMap.from(t,e,n)};Yk.map=_C});var Xr=re(Gk=>{"use strict";var CC=ni(),jC=Sp(),NC=zo(),ul=Me(),PC=$t(),TC=Br(),Ep=class extends NC.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(ul.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let n=cl(e);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(e,n){let r=cl(e);if(typeof r!="number")return;let a=this.items[r];return!n&&ul.isScalar(a)?a.value:a}has(e){let n=cl(e);return typeof n=="number"&&n<this.items.length}set(e,n){let r=cl(e);if(typeof r!="number")throw new Error(`Expected a valid index, not ${e}.`);let a=this.items[r];ul.isScalar(a)&&PC.isScalarValue(n)?a.value=n:this.items[r]=n}toJSON(e,n){let r=[];n?.onCreate&&n.onCreate(r);let a=0;for(let s of this.items)r.push(TC.toJS(s,String(a++),n));return r}toString(e,n,r){return e?jC.stringifyCollection(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:r,onComment:n}):JSON.stringify(this)}static from(e,n,r){let{replacer:a}=r,s=new this(e);if(n&&Symbol.iterator in Object(n)){let i=0;for(let o of n){if(typeof a=="function"){let l=n instanceof Set?o:String(i++);o=a.call(n,l,o)}s.items.push(CC.createNode(o,void 0,r))}}return s}};function cl(t){let e=ul.isScalar(t)?t.value:t;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}Gk.YAMLSeq=Ep});var es=re(Xk=>{"use strict";var OC=Me(),Jk=Xr(),LC={collection:"seq",default:!0,nodeClass:Jk.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(t,e){return OC.isSeq(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,n)=>Jk.YAMLSeq.from(t,e,n)};Xk.seq=LC});var ui=re(Qk=>{"use strict";var RC=ii(),IC={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,n,r){return e=Object.assign({actualString:!0},e),RC.stringifyString(t,e,n,r)}};Qk.string=IC});var pl=re(tb=>{"use strict";var Zk=$t(),eb={identify:t=>t==null,createNode:()=>new Zk.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Zk.Scalar(null),stringify:({source:t},e)=>typeof t=="string"&&eb.test.test(t)?t:e.options.nullStr};tb.nullTag=eb});var _p=re(rb=>{"use strict";var MC=$t(),nb={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new MC.Scalar(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},n){if(t&&nb.test.test(t)){let r=t[0]==="t"||t[0]==="T";if(e===r)return t}return e?n.options.trueStr:n.options.falseStr}};rb.boolTag=nb});var ts=re(ab=>{"use strict";function DC({format:t,minFractionDigits:e,tag:n,value:r}){if(typeof r=="bigint")return String(r);let a=typeof r=="number"?r:Number(r);if(!isFinite(a))return isNaN(a)?".nan":a<0?"-.inf":".inf";let s=Object.is(r,-0)?"-0":JSON.stringify(r);if(!t&&e&&(!n||n==="tag:yaml.org,2002:float")&&/^-?\d/.test(s)&&!s.includes("e")){let i=s.indexOf(".");i<0&&(i=s.length,s+=".");let o=e-(s.length-i-1);for(;o-- >0;)s+="0"}return s}ab.stringifyNumber=DC});var jp=re(fl=>{"use strict";var FC=$t(),Cp=ts(),VC={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Cp.stringifyNumber},qC={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():Cp.stringifyNumber(t)}},KC={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(t){let e=new FC.Scalar(parseFloat(t)),n=t.indexOf(".");return n!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-n-1),e},stringify:Cp.stringifyNumber};fl.float=KC;fl.floatExp=qC;fl.floatNaN=VC});var Pp=re(hl=>{"use strict";var sb=ts(),dl=t=>typeof t=="bigint"||Number.isInteger(t),Np=(t,e,n,{intAsBigInt:r})=>r?BigInt(t):parseInt(t.substring(e),n);function ib(t,e,n){let{value:r}=t;return dl(r)&&r>=0?n+r.toString(e):sb.stringifyNumber(t)}var UC={identify:t=>dl(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,n)=>Np(t,2,8,n),stringify:t=>ib(t,8,"0o")},BC={identify:dl,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,n)=>Np(t,0,10,n),stringify:sb.stringifyNumber},HC={identify:t=>dl(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,n)=>Np(t,2,16,n),stringify:t=>ib(t,16,"0x")};hl.int=BC;hl.intHex=HC;hl.intOct=UC});var lb=re(ob=>{"use strict";var WC=Za(),zC=pl(),YC=es(),GC=ui(),JC=_p(),Tp=jp(),Op=Pp(),XC=[WC.map,YC.seq,GC.string,zC.nullTag,JC.boolTag,Op.intOct,Op.int,Op.intHex,Tp.floatNaN,Tp.floatExp,Tp.float];ob.schema=XC});var pb=re(ub=>{"use strict";var QC=$t(),ZC=Za(),ej=es();function cb(t){return typeof t=="bigint"||Number.isInteger(t)}var ml=({value:t})=>JSON.stringify(t),tj=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:ml},{identify:t=>t==null,createNode:()=>new QC.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:ml},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:ml},{identify:cb,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:n})=>n?BigInt(t):parseInt(t,10),stringify:({value:t})=>cb(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:ml}],nj={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},rj=[ZC.map,ej.seq].concat(tj,nj);ub.schema=rj});var Rp=re(fb=>{"use strict";var pi=to("buffer"),Lp=$t(),aj=ii(),sj={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof pi.Buffer=="function")return pi.Buffer.from(t,"base64");if(typeof atob=="function"){let n=atob(t.replace(/[\n\r]/g,"")),r=new Uint8Array(n.length);for(let a=0;a<n.length;++a)r[a]=n.charCodeAt(a);return r}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),t},stringify({comment:t,type:e,value:n},r,a,s){if(!n)return"";let i=n,o;if(typeof pi.Buffer=="function")o=i instanceof pi.Buffer?i.toString("base64"):pi.Buffer.from(i.buffer).toString("base64");else if(typeof btoa=="function"){let l="";for(let c=0;c<i.length;++c)l+=String.fromCharCode(i[c]);o=btoa(l)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=Lp.Scalar.BLOCK_LITERAL),e!==Lp.Scalar.QUOTE_DOUBLE){let l=Math.max(r.options.lineWidth-r.indent.length,r.options.minContentWidth),c=Math.ceil(o.length/l),u=new Array(c);for(let p=0,f=0;p<c;++p,f+=l)u[p]=o.substr(f,l);o=u.join(e===Lp.Scalar.BLOCK_LITERAL?`
|
|
56
|
+
`:" ")}return aj.stringifyString({comment:t,type:e,value:o},r,a,s)}};fb.binary=sj});var kl=re(yl=>{"use strict";var gl=Me(),Ip=Yr(),ij=$t(),oj=Xr();function db(t,e){if(gl.isSeq(t))for(let n=0;n<t.items.length;++n){let r=t.items[n];if(!gl.isPair(r)){if(gl.isMap(r)){r.items.length>1&&e("Each pair must have its own sequence indicator");let a=r.items[0]||new Ip.Pair(new ij.Scalar(null));if(r.commentBefore&&(a.key.commentBefore=a.key.commentBefore?`${r.commentBefore}
|
|
57
57
|
${a.key.commentBefore}`:r.commentBefore),r.comment){let s=a.value??a.key;s.comment=s.comment?`${r.comment}
|
|
58
|
-
${s.comment}`:r.comment}r=a}t.items[n]=ml.isPair(r)?r:new Lp.Pair(r)}}else e("Expected a sequence for this tag");return t}function pb(t,e,n){let{replacer:r}=n,a=new ij.YAMLSeq(t);a.tag="tag:yaml.org,2002:pairs";let s=0;if(e&&Symbol.iterator in Object(e))for(let i of e){typeof r=="function"&&(i=r.call(e,String(s++),i));let o,l;if(Array.isArray(i))if(i.length===2)o=i[0],l=i[1];else throw new TypeError(`Expected [key, value] tuple: ${i}`);else if(i&&i instanceof Object){let c=Object.keys(i);if(c.length===1)o=c[0],l=i[o];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else o=i;a.items.push(Lp.createPair(o,l,n))}return a}var oj={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:ub,createNode:pb};gl.createPairs=pb;gl.pairs=oj;gl.resolvePairs=ub});var Mp=re(Ip=>{"use strict";var fb=Me(),Rp=Ur(),fi=Gr(),lj=Jr(),db=yl(),xa=class t extends lj.YAMLSeq{constructor(){super(),this.add=fi.YAMLMap.prototype.add.bind(this),this.delete=fi.YAMLMap.prototype.delete.bind(this),this.get=fi.YAMLMap.prototype.get.bind(this),this.has=fi.YAMLMap.prototype.has.bind(this),this.set=fi.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,n){if(!n)return super.toJSON(e);let r=new Map;n?.onCreate&&n.onCreate(r);for(let a of this.items){let s,i;if(fb.isPair(a)?(s=Rp.toJS(a.key,"",n),i=Rp.toJS(a.value,s,n)):s=Rp.toJS(a,"",n),r.has(s))throw new Error("Ordered maps must not include duplicate keys");r.set(s,i)}return r}static from(e,n,r){let a=db.createPairs(e,n,r),s=new this;return s.items=a.items,s}};xa.tag="tag:yaml.org,2002:omap";var cj={collection:"seq",identify:t=>t instanceof Map,nodeClass:xa,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let n=db.resolvePairs(t,e),r=[];for(let{key:a}of n.items)fb.isScalar(a)&&(r.includes(a.value)?e(`Ordered maps must not include duplicate keys: ${a.value}`):r.push(a.value));return Object.assign(new xa,n)},createNode:(t,e,n)=>xa.from(t,e,n)};Ip.YAMLOMap=xa;Ip.omap=cj});var kb=re(Dp=>{"use strict";var hb=$t();function mb({value:t,source:e},n){return e&&(t?gb:yb).test.test(e)?e:t?n.options.trueStr:n.options.falseStr}var gb={identify:t=>t===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new hb.Scalar(!0),stringify:mb},yb={identify:t=>t===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new hb.Scalar(!1),stringify:mb};Dp.falseTag=yb;Dp.trueTag=gb});var bb=re(kl=>{"use strict";var uj=$t(),Fp=ts(),pj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Fp.stringifyNumber},fj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t.replace(/_/g,"")),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():Fp.stringifyNumber(t)}},dj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(t){let e=new uj.Scalar(parseFloat(t.replace(/_/g,""))),n=t.indexOf(".");if(n!==-1){let r=t.substring(n+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:Fp.stringifyNumber};kl.float=dj;kl.floatExp=fj;kl.floatNaN=pj});var wb=re(hi=>{"use strict";var vb=ts(),di=t=>typeof t=="bigint"||Number.isInteger(t);function bl(t,e,n,{intAsBigInt:r}){let a=t[0];if((a==="-"||a==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),r){switch(n){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let i=BigInt(t);return a==="-"?BigInt(-1)*i:i}let s=parseInt(t,n);return a==="-"?-1*s:s}function qp(t,e,n){let{value:r}=t;if(di(r)){let a=r.toString(e);return r<0?"-"+n+a.substr(1):n+a}return vb.stringifyNumber(t)}var hj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,n)=>bl(t,2,2,n),stringify:t=>qp(t,2,"0b")},mj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,n)=>bl(t,1,8,n),stringify:t=>qp(t,8,"0")},gj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,n)=>bl(t,0,10,n),stringify:vb.stringifyNumber},yj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,n)=>bl(t,2,16,n),stringify:t=>qp(t,16,"0x")};hi.int=gj;hi.intBin=hj;hi.intHex=yj;hi.intOct=mj});var Kp=re(Vp=>{"use strict";var $l=Me(),vl=zr(),wl=Gr(),Ea=class t extends wl.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let n;$l.isPair(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new vl.Pair(e.key,null):n=new vl.Pair(e,null),wl.findPair(this.items,n.key)||this.items.push(n)}get(e,n){let r=wl.findPair(this.items,e);return!n&&$l.isPair(r)?$l.isScalar(r.key)?r.key.value:r.key:r}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let r=wl.findPair(this.items,e);r&&!n?this.items.splice(this.items.indexOf(r),1):!r&&n&&this.items.push(new vl.Pair(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,r);throw new Error("Set items must all have null values")}static from(e,n,r){let{replacer:a}=r,s=new this(e);if(n&&Symbol.iterator in Object(n))for(let i of n)typeof a=="function"&&(i=a.call(n,i,i)),s.items.push(vl.createPair(i,null,r));return s}};Ea.tag="tag:yaml.org,2002:set";var kj={collection:"map",identify:t=>t instanceof Set,nodeClass:Ea,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,n)=>Ea.from(t,e,n),resolve(t,e){if($l.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Ea,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};Vp.YAMLSet=Ea;Vp.set=kj});var Bp=re(Sl=>{"use strict";var bj=ts();function Up(t,e){let n=t[0],r=n==="-"||n==="+"?t.substring(1):t,a=i=>e?BigInt(i):Number(i),s=r.replace(/_/g,"").split(":").reduce((i,o)=>i*a(60)+a(o),a(0));return n==="-"?a(-1)*s:s}function $b(t){let{value:e}=t,n=i=>i;if(typeof e=="bigint")n=i=>BigInt(i);else if(isNaN(e)||!isFinite(e))return bj.stringifyNumber(t);let r="";e<0&&(r="-",e*=n(-1));let a=n(60),s=[e%a];return e<60?s.unshift(0):(e=(e-s[0])/a,s.unshift(e%a),e>=60&&(e=(e-s[0])/a,s.unshift(e))),r+s.map(i=>String(i).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var vj={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:n})=>Up(t,n),stringify:$b},wj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>Up(t,!1),stringify:$b},Sb={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(Sb.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,r,a,s,i,o]=e.map(Number),l=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(n,r-1,a,s||0,i||0,o||0,l),u=e[8];if(u&&u!=="Z"){let p=Up(u,!1);Math.abs(p)<30&&(p*=60),c-=6e4*p}return new Date(c)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Sl.floatTime=wj;Sl.intTime=vj;Sl.timestamp=Sb});var Eb=re(xb=>{"use strict";var $j=Za(),Sj=ul(),Aj=es(),xj=ui(),Ej=Op(),Ab=kb(),Hp=bb(),Al=wb(),_j=nl(),Cj=Mp(),jj=yl(),Nj=Kp(),Wp=Bp(),Pj=[$j.map,Aj.seq,xj.string,Sj.nullTag,Ab.trueTag,Ab.falseTag,Al.intBin,Al.intOct,Al.int,Al.intHex,Hp.floatNaN,Hp.floatExp,Hp.float,Ej.binary,_j.merge,Cj.omap,jj.pairs,Nj.set,Wp.intTime,Wp.floatTime,Wp.timestamp];xb.schema=Pj});var Ib=re(Gp=>{"use strict";var Nb=Za(),Tj=ul(),Pb=es(),Oj=ui(),Lj=xp(),zp=_p(),Yp=jp(),Rj=sb(),Ij=lb(),Tb=Op(),mi=nl(),Ob=Mp(),Lb=yl(),_b=Eb(),Rb=Kp(),xl=Bp(),Cb=new Map([["core",Rj.schema],["failsafe",[Nb.map,Pb.seq,Oj.string]],["json",Ij.schema],["yaml11",_b.schema],["yaml-1.1",_b.schema]]),jb={binary:Tb.binary,bool:Lj.boolTag,float:zp.float,floatExp:zp.floatExp,floatNaN:zp.floatNaN,floatTime:xl.floatTime,int:Yp.int,intHex:Yp.intHex,intOct:Yp.intOct,intTime:xl.intTime,map:Nb.map,merge:mi.merge,null:Tj.nullTag,omap:Ob.omap,pairs:Lb.pairs,seq:Pb.seq,set:Rb.set,timestamp:xl.timestamp},Mj={"tag:yaml.org,2002:binary":Tb.binary,"tag:yaml.org,2002:merge":mi.merge,"tag:yaml.org,2002:omap":Ob.omap,"tag:yaml.org,2002:pairs":Lb.pairs,"tag:yaml.org,2002:set":Rb.set,"tag:yaml.org,2002:timestamp":xl.timestamp};function Dj(t,e,n){let r=Cb.get(e);if(r&&!t)return n&&!r.includes(mi.merge)?r.concat(mi.merge):r.slice();let a=r;if(!a)if(Array.isArray(t))a=[];else{let s=Array.from(Cb.keys()).filter(i=>i!=="yaml11").map(i=>JSON.stringify(i)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${s} or define customTags array`)}if(Array.isArray(t))for(let s of t)a=a.concat(s);else typeof t=="function"&&(a=t(a.slice()));return n&&(a=a.concat(mi.merge)),a.reduce((s,i)=>{let o=typeof i=="string"?jb[i]:i;if(!o){let l=JSON.stringify(i),c=Object.keys(jb).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${l}; use one of ${c}`)}return s.includes(o)||s.push(o),s},[])}Gp.coreKnownTags=Mj;Gp.getTags=Dj});var Qp=re(Mb=>{"use strict";var Jp=Me(),Fj=Za(),qj=es(),Vj=ui(),El=Ib(),Kj=(t,e)=>t.key<e.key?-1:t.key>e.key?1:0,Xp=class t{constructor({compat:e,customTags:n,merge:r,resolveKnownTags:a,schema:s,sortMapEntries:i,toStringDefaults:o}){this.compat=Array.isArray(e)?El.getTags(e,"compat"):e?El.getTags(null,e):null,this.name=typeof s=="string"&&s||"core",this.knownTags=a?El.coreKnownTags:{},this.tags=El.getTags(n,this.name,r),this.toStringOptions=o??null,Object.defineProperty(this,Jp.MAP,{value:Fj.map}),Object.defineProperty(this,Jp.SCALAR,{value:Vj.string}),Object.defineProperty(this,Jp.SEQ,{value:qj.seq}),this.sortMapEntries=typeof i=="function"?i:i===!0?Kj:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Mb.Schema=Xp});var Fb=re(Db=>{"use strict";var Uj=Me(),Zp=oi(),gi=ri();function Bj(t,e){let n=[],r=e.directives===!0;if(e.directives!==!1&&t.directives){let l=t.directives.toString(t);l?(n.push(l),r=!0):t.directives.docStart&&(r=!0)}r&&n.push("---");let a=Zp.createStringifyContext(t,e),{commentString:s}=a.options;if(t.commentBefore){n.length!==1&&n.unshift("");let l=s(t.commentBefore);n.unshift(gi.indentComment(l,""))}let i=!1,o=null;if(t.contents){if(Uj.isNode(t.contents)){if(t.contents.spaceBefore&&r&&n.push(""),t.contents.commentBefore){let u=s(t.contents.commentBefore);n.push(gi.indentComment(u,""))}a.forceBlockIndent=!!t.comment,o=t.contents.comment}let l=o?void 0:()=>i=!0,c=Zp.stringify(t.contents,a,()=>o=null,l);o&&(c+=gi.lineComment(c,"",s(o))),(c[0]==="|"||c[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${c}`:n.push(c)}else n.push(Zp.stringify(t.contents,a));if(t.directives?.docEnd)if(t.comment){let l=s(t.comment);l.includes(`
|
|
58
|
+
${s.comment}`:r.comment}r=a}t.items[n]=gl.isPair(r)?r:new Ip.Pair(r)}}else e("Expected a sequence for this tag");return t}function hb(t,e,n){let{replacer:r}=n,a=new oj.YAMLSeq(t);a.tag="tag:yaml.org,2002:pairs";let s=0;if(e&&Symbol.iterator in Object(e))for(let i of e){typeof r=="function"&&(i=r.call(e,String(s++),i));let o,l;if(Array.isArray(i))if(i.length===2)o=i[0],l=i[1];else throw new TypeError(`Expected [key, value] tuple: ${i}`);else if(i&&i instanceof Object){let c=Object.keys(i);if(c.length===1)o=c[0],l=i[o];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else o=i;a.items.push(Ip.createPair(o,l,n))}return a}var lj={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:db,createNode:hb};yl.createPairs=hb;yl.pairs=lj;yl.resolvePairs=db});var Fp=re(Dp=>{"use strict";var mb=Me(),Mp=Br(),fi=Jr(),cj=Xr(),gb=kl(),xa=class t extends cj.YAMLSeq{constructor(){super(),this.add=fi.YAMLMap.prototype.add.bind(this),this.delete=fi.YAMLMap.prototype.delete.bind(this),this.get=fi.YAMLMap.prototype.get.bind(this),this.has=fi.YAMLMap.prototype.has.bind(this),this.set=fi.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,n){if(!n)return super.toJSON(e);let r=new Map;n?.onCreate&&n.onCreate(r);for(let a of this.items){let s,i;if(mb.isPair(a)?(s=Mp.toJS(a.key,"",n),i=Mp.toJS(a.value,s,n)):s=Mp.toJS(a,"",n),r.has(s))throw new Error("Ordered maps must not include duplicate keys");r.set(s,i)}return r}static from(e,n,r){let a=gb.createPairs(e,n,r),s=new this;return s.items=a.items,s}};xa.tag="tag:yaml.org,2002:omap";var uj={collection:"seq",identify:t=>t instanceof Map,nodeClass:xa,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let n=gb.resolvePairs(t,e),r=[];for(let{key:a}of n.items)mb.isScalar(a)&&(r.includes(a.value)?e(`Ordered maps must not include duplicate keys: ${a.value}`):r.push(a.value));return Object.assign(new xa,n)},createNode:(t,e,n)=>xa.from(t,e,n)};Dp.YAMLOMap=xa;Dp.omap=uj});var wb=re(Vp=>{"use strict";var yb=$t();function kb({value:t,source:e},n){return e&&(t?bb:vb).test.test(e)?e:t?n.options.trueStr:n.options.falseStr}var bb={identify:t=>t===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new yb.Scalar(!0),stringify:kb},vb={identify:t=>t===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new yb.Scalar(!1),stringify:kb};Vp.falseTag=vb;Vp.trueTag=bb});var $b=re(bl=>{"use strict";var pj=$t(),qp=ts(),fj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:qp.stringifyNumber},dj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t.replace(/_/g,"")),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():qp.stringifyNumber(t)}},hj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(t){let e=new pj.Scalar(parseFloat(t.replace(/_/g,""))),n=t.indexOf(".");if(n!==-1){let r=t.substring(n+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:qp.stringifyNumber};bl.float=hj;bl.floatExp=dj;bl.floatNaN=fj});var Ab=re(hi=>{"use strict";var Sb=ts(),di=t=>typeof t=="bigint"||Number.isInteger(t);function vl(t,e,n,{intAsBigInt:r}){let a=t[0];if((a==="-"||a==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),r){switch(n){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let i=BigInt(t);return a==="-"?BigInt(-1)*i:i}let s=parseInt(t,n);return a==="-"?-1*s:s}function Kp(t,e,n){let{value:r}=t;if(di(r)){let a=r.toString(e);return r<0?"-"+n+a.substr(1):n+a}return Sb.stringifyNumber(t)}var mj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,n)=>vl(t,2,2,n),stringify:t=>Kp(t,2,"0b")},gj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,n)=>vl(t,1,8,n),stringify:t=>Kp(t,8,"0")},yj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,n)=>vl(t,0,10,n),stringify:Sb.stringifyNumber},kj={identify:di,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,n)=>vl(t,2,16,n),stringify:t=>Kp(t,16,"0x")};hi.int=yj;hi.intBin=mj;hi.intHex=kj;hi.intOct=gj});var Bp=re(Up=>{"use strict";var Sl=Me(),wl=Yr(),$l=Jr(),Ea=class t extends $l.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let n;Sl.isPair(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new wl.Pair(e.key,null):n=new wl.Pair(e,null),$l.findPair(this.items,n.key)||this.items.push(n)}get(e,n){let r=$l.findPair(this.items,e);return!n&&Sl.isPair(r)?Sl.isScalar(r.key)?r.key.value:r.key:r}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let r=$l.findPair(this.items,e);r&&!n?this.items.splice(this.items.indexOf(r),1):!r&&n&&this.items.push(new wl.Pair(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,r);throw new Error("Set items must all have null values")}static from(e,n,r){let{replacer:a}=r,s=new this(e);if(n&&Symbol.iterator in Object(n))for(let i of n)typeof a=="function"&&(i=a.call(n,i,i)),s.items.push(wl.createPair(i,null,r));return s}};Ea.tag="tag:yaml.org,2002:set";var bj={collection:"map",identify:t=>t instanceof Set,nodeClass:Ea,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,n)=>Ea.from(t,e,n),resolve(t,e){if(Sl.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Ea,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};Up.YAMLSet=Ea;Up.set=bj});var Wp=re(Al=>{"use strict";var vj=ts();function Hp(t,e){let n=t[0],r=n==="-"||n==="+"?t.substring(1):t,a=i=>e?BigInt(i):Number(i),s=r.replace(/_/g,"").split(":").reduce((i,o)=>i*a(60)+a(o),a(0));return n==="-"?a(-1)*s:s}function xb(t){let{value:e}=t,n=i=>i;if(typeof e=="bigint")n=i=>BigInt(i);else if(isNaN(e)||!isFinite(e))return vj.stringifyNumber(t);let r="";e<0&&(r="-",e*=n(-1));let a=n(60),s=[e%a];return e<60?s.unshift(0):(e=(e-s[0])/a,s.unshift(e%a),e>=60&&(e=(e-s[0])/a,s.unshift(e))),r+s.map(i=>String(i).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var wj={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:n})=>Hp(t,n),stringify:xb},$j={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>Hp(t,!1),stringify:xb},Eb={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(Eb.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,r,a,s,i,o]=e.map(Number),l=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(n,r-1,a,s||0,i||0,o||0,l),u=e[8];if(u&&u!=="Z"){let p=Hp(u,!1);Math.abs(p)<30&&(p*=60),c-=6e4*p}return new Date(c)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Al.floatTime=$j;Al.intTime=wj;Al.timestamp=Eb});var jb=re(Cb=>{"use strict";var Sj=Za(),Aj=pl(),xj=es(),Ej=ui(),_j=Rp(),_b=wb(),zp=$b(),xl=Ab(),Cj=rl(),jj=Fp(),Nj=kl(),Pj=Bp(),Yp=Wp(),Tj=[Sj.map,xj.seq,Ej.string,Aj.nullTag,_b.trueTag,_b.falseTag,xl.intBin,xl.intOct,xl.int,xl.intHex,zp.floatNaN,zp.floatExp,zp.float,_j.binary,Cj.merge,jj.omap,Nj.pairs,Pj.set,Yp.intTime,Yp.floatTime,Yp.timestamp];Cb.schema=Tj});var Fb=re(Xp=>{"use strict";var Ob=Za(),Oj=pl(),Lb=es(),Lj=ui(),Rj=_p(),Gp=jp(),Jp=Pp(),Ij=lb(),Mj=pb(),Rb=Rp(),mi=rl(),Ib=Fp(),Mb=kl(),Nb=jb(),Db=Bp(),El=Wp(),Pb=new Map([["core",Ij.schema],["failsafe",[Ob.map,Lb.seq,Lj.string]],["json",Mj.schema],["yaml11",Nb.schema],["yaml-1.1",Nb.schema]]),Tb={binary:Rb.binary,bool:Rj.boolTag,float:Gp.float,floatExp:Gp.floatExp,floatNaN:Gp.floatNaN,floatTime:El.floatTime,int:Jp.int,intHex:Jp.intHex,intOct:Jp.intOct,intTime:El.intTime,map:Ob.map,merge:mi.merge,null:Oj.nullTag,omap:Ib.omap,pairs:Mb.pairs,seq:Lb.seq,set:Db.set,timestamp:El.timestamp},Dj={"tag:yaml.org,2002:binary":Rb.binary,"tag:yaml.org,2002:merge":mi.merge,"tag:yaml.org,2002:omap":Ib.omap,"tag:yaml.org,2002:pairs":Mb.pairs,"tag:yaml.org,2002:set":Db.set,"tag:yaml.org,2002:timestamp":El.timestamp};function Fj(t,e,n){let r=Pb.get(e);if(r&&!t)return n&&!r.includes(mi.merge)?r.concat(mi.merge):r.slice();let a=r;if(!a)if(Array.isArray(t))a=[];else{let s=Array.from(Pb.keys()).filter(i=>i!=="yaml11").map(i=>JSON.stringify(i)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${s} or define customTags array`)}if(Array.isArray(t))for(let s of t)a=a.concat(s);else typeof t=="function"&&(a=t(a.slice()));return n&&(a=a.concat(mi.merge)),a.reduce((s,i)=>{let o=typeof i=="string"?Tb[i]:i;if(!o){let l=JSON.stringify(i),c=Object.keys(Tb).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${l}; use one of ${c}`)}return s.includes(o)||s.push(o),s},[])}Xp.coreKnownTags=Dj;Xp.getTags=Fj});var ef=re(Vb=>{"use strict";var Qp=Me(),Vj=Za(),qj=es(),Kj=ui(),_l=Fb(),Uj=(t,e)=>t.key<e.key?-1:t.key>e.key?1:0,Zp=class t{constructor({compat:e,customTags:n,merge:r,resolveKnownTags:a,schema:s,sortMapEntries:i,toStringDefaults:o}){this.compat=Array.isArray(e)?_l.getTags(e,"compat"):e?_l.getTags(null,e):null,this.name=typeof s=="string"&&s||"core",this.knownTags=a?_l.coreKnownTags:{},this.tags=_l.getTags(n,this.name,r),this.toStringOptions=o??null,Object.defineProperty(this,Qp.MAP,{value:Vj.map}),Object.defineProperty(this,Qp.SCALAR,{value:Kj.string}),Object.defineProperty(this,Qp.SEQ,{value:qj.seq}),this.sortMapEntries=typeof i=="function"?i:i===!0?Uj:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Vb.Schema=Zp});var Kb=re(qb=>{"use strict";var Bj=Me(),tf=oi(),gi=ri();function Hj(t,e){let n=[],r=e.directives===!0;if(e.directives!==!1&&t.directives){let l=t.directives.toString(t);l?(n.push(l),r=!0):t.directives.docStart&&(r=!0)}r&&n.push("---");let a=tf.createStringifyContext(t,e),{commentString:s}=a.options;if(t.commentBefore){n.length!==1&&n.unshift("");let l=s(t.commentBefore);n.unshift(gi.indentComment(l,""))}let i=!1,o=null;if(t.contents){if(Bj.isNode(t.contents)){if(t.contents.spaceBefore&&r&&n.push(""),t.contents.commentBefore){let u=s(t.contents.commentBefore);n.push(gi.indentComment(u,""))}a.forceBlockIndent=!!t.comment,o=t.contents.comment}let l=o?void 0:()=>i=!0,c=tf.stringify(t.contents,a,()=>o=null,l);o&&(c+=gi.lineComment(c,"",s(o))),(c[0]==="|"||c[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${c}`:n.push(c)}else n.push(tf.stringify(t.contents,a));if(t.directives?.docEnd)if(t.comment){let l=s(t.comment);l.includes(`
|
|
59
59
|
`)?(n.push("..."),n.push(gi.indentComment(l,""))):n.push(`... ${l}`)}else n.push("...");else{let l=t.comment;l&&i&&(l=l.replace(/^\n+/,"")),l&&((!i||o)&&n[n.length-1]!==""&&n.push(""),n.push(gi.indentComment(s(l),"")))}return n.join(`
|
|
60
60
|
`)+`
|
|
61
|
-
`}
|
|
61
|
+
`}qb.stringifyDocument=Hj});var yi=re(Ub=>{"use strict";var Wj=ti(),ns=zo(),En=Me(),zj=Yr(),Yj=Br(),Gj=ef(),Jj=Kb(),nf=Uo(),Xj=ip(),Qj=ni(),rf=sp(),af=class t{constructor(e,n,r){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,En.NODE_TYPE,{value:En.DOC});let a=null;typeof n=="function"||Array.isArray(n)?a=n:r===void 0&&n&&(r=n,n=void 0);let s=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},r);this.options=s;let{version:i}=s;r?._directives?(this.directives=r._directives.atDocument(),this.directives.yaml.explicit&&(i=this.directives.yaml.version)):this.directives=new rf.Directives({version:i}),this.setSchema(i,r),this.contents=e===void 0?null:this.createNode(e,a,r)}clone(){let e=Object.create(t.prototype,{[En.NODE_TYPE]:{value:En.DOC}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=En.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){rs(this.contents)&&this.contents.add(e)}addIn(e,n){rs(this.contents)&&this.contents.addIn(e,n)}createAlias(e,n){if(!e.anchor){let r=nf.anchorNames(this);e.anchor=!n||r.has(n)?nf.findNewAnchor(n||"a",r):n}return new Wj.Alias(e.anchor)}createNode(e,n,r){let a;if(typeof n=="function")e=n.call({"":e},"",e),a=n;else if(Array.isArray(n)){let y=k=>typeof k=="number"||k instanceof String||k instanceof Number,v=n.filter(y).map(String);v.length>0&&(n=n.concat(v)),a=n}else r===void 0&&n&&(r=n,n=void 0);let{aliasDuplicateObjects:s,anchorPrefix:i,flow:o,keepUndefined:l,onTagObj:c,tag:u}=r??{},{onAnchor:p,setAnchors:f,sourceObjects:h}=nf.createNodeAnchors(this,i||"a"),g={aliasDuplicateObjects:s??!0,keepUndefined:l??!1,onAnchor:p,onTagObj:c,replacer:a,schema:this.schema,sourceObjects:h},m=Qj.createNode(e,u,g);return o&&En.isCollection(m)&&(m.flow=!0),f(),m}createPair(e,n,r={}){let a=this.createNode(e,null,r),s=this.createNode(n,null,r);return new zj.Pair(a,s)}delete(e){return rs(this.contents)?this.contents.delete(e):!1}deleteIn(e){return ns.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):rs(this.contents)?this.contents.deleteIn(e):!1}get(e,n){return En.isCollection(this.contents)?this.contents.get(e,n):void 0}getIn(e,n){return ns.isEmptyPath(e)?!n&&En.isScalar(this.contents)?this.contents.value:this.contents:En.isCollection(this.contents)?this.contents.getIn(e,n):void 0}has(e){return En.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return ns.isEmptyPath(e)?this.contents!==void 0:En.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,n){this.contents==null?this.contents=ns.collectionFromPath(this.schema,[e],n):rs(this.contents)&&this.contents.set(e,n)}setIn(e,n){ns.isEmptyPath(e)?this.contents=n:this.contents==null?this.contents=ns.collectionFromPath(this.schema,Array.from(e),n):rs(this.contents)&&this.contents.setIn(e,n)}setSchema(e,n={}){typeof e=="number"&&(e=String(e));let r;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new rf.Directives({version:"1.1"}),r={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new rf.Directives({version:e}),r={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,r=null;break;default:{let a=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${a}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(r)this.schema=new Gj.Schema(Object.assign(r,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:n,mapAsMap:r,maxAliasCount:a,onAnchor:s,reviver:i}={}){let o={anchors:new Map,doc:this,keep:!e,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof a=="number"?a:100},l=Yj.toJS(this.contents,n??"",o);if(typeof s=="function")for(let{count:c,res:u}of o.anchors.values())s(u,c);return typeof i=="function"?Xj.applyReviver(i,{"":l},"",l):l}toJSON(e,n){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:n})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let n=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return Jj.stringifyDocument(this,e)}};function rs(t){if(En.isCollection(t))return!0;throw new Error("Expected a YAML collection as document contents")}Ub.Document=af});var vi=re(bi=>{"use strict";var ki=class extends Error{constructor(e,n,r,a){super(),this.name=e,this.code=r,this.message=a,this.pos=n}},sf=class extends ki{constructor(e,n,r){super("YAMLParseError",e,n,r)}},of=class extends ki{constructor(e,n,r){super("YAMLWarning",e,n,r)}},Zj=(t,e)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(o=>e.linePos(o));let{line:r,col:a}=n.linePos[0];n.message+=` at line ${r}, column ${a}`;let s=a-1,i=t.substring(e.lineStarts[r-1],e.lineStarts[r]).replace(/[\n\r]+$/,"");if(s>=60&&i.length>80){let o=Math.min(s-39,i.length-79);i="\u2026"+i.substring(o),s-=o-1}if(i.length>80&&(i=i.substring(0,79)+"\u2026"),r>1&&/^ *$/.test(i.substring(0,s))){let o=t.substring(e.lineStarts[r-2],e.lineStarts[r-1]);o.length>80&&(o=o.substring(0,79)+`\u2026
|
|
62
62
|
`),i=o+i}if(/[^ ]/.test(i)){let o=1,l=n.linePos[1];l?.line===r&&l.col>a&&(o=Math.max(1,Math.min(l.col-a,80-s)));let c=" ".repeat(s)+"^".repeat(o);n.message+=`:
|
|
63
63
|
|
|
64
64
|
${i}
|
|
65
65
|
${c}
|
|
66
|
-
`}};bi.YAMLError=ki;bi.YAMLParseError=
|
|
67
|
-
`))return!0;if(t.end){for(let e of t.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of t.items){for(let n of e.start)if(n.type==="newline")return!0;if(e.sep){for(let n of e.sep)if(n.type==="newline")return!0}if(
|
|
68
|
-
`+m.comment:o.comment=m.comment);continue}(m.newlineAfterProp||
|
|
69
|
-
`+w.comment:k.comment=w.comment);let S=new
|
|
70
|
-
`+C.comment:c.comment=C.comment),p=C.end;continue}!i&&n.options.strict&&
|
|
71
|
-
`+N:_.comment=N,C.comment=C.comment.substring(N.length+1)}}if(!i&&!S&&!C.found){let N=A?t(n,A,C,a):e(n,C.end,S,null,C,a);c.items.push(N),p=N.range[2],
|
|
72
|
-
`+B.comment:_.comment=B.comment);let pe=new
|
|
73
|
-
`+y.comment:c.comment=y.comment),c.range=[r.offset,m,y.offset]}else c.range=[r.offset,m,m];return c}
|
|
66
|
+
`}};bi.YAMLError=ki;bi.YAMLParseError=sf;bi.YAMLWarning=of;bi.prettifyError=Zj});var wi=re(Bb=>{"use strict";function eN(t,{flow:e,indicator:n,next:r,offset:a,onError:s,parentIndent:i,startOnNewline:o}){let l=!1,c=o,u=o,p="",f="",h=!1,g=!1,m=null,y=null,v=null,k=null,w=null,S=null,A=null;for(let _ of t)switch(g&&(_.type!=="space"&&_.type!=="newline"&&_.type!=="comma"&&s(_.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),m&&(c&&_.type!=="comment"&&_.type!=="newline"&&s(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),m=null),_.type){case"space":!e&&(n!=="doc-start"||r?.type!=="flow-collection")&&_.source.includes(" ")&&(m=_),u=!0;break;case"comment":{u||s(_,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let B=_.source.substring(1)||" ";p?p+=f+B:p=B,f="",c=!1;break}case"newline":c?p?p+=_.source:(!S||n!=="seq-item-ind")&&(l=!0):f+=_.source,c=!0,h=!0,(y||v)&&(k=_),u=!0;break;case"anchor":y&&s(_,"MULTIPLE_ANCHORS","A node can have at most one anchor"),_.source.endsWith(":")&&s(_.offset+_.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),y=_,A??(A=_.offset),c=!1,u=!1,g=!0;break;case"tag":{v&&s(_,"MULTIPLE_TAGS","A node can have at most one tag"),v=_,A??(A=_.offset),c=!1,u=!1,g=!0;break}case n:(y||v)&&s(_,"BAD_PROP_ORDER",`Anchors and tags must be after the ${_.source} indicator`),S&&s(_,"UNEXPECTED_TOKEN",`Unexpected ${_.source} in ${e??"collection"}`),S=_,c=n==="seq-item-ind"||n==="explicit-key-ind",u=!1;break;case"comma":if(e){w&&s(_,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),w=_,c=!1,u=!1;break}default:s(_,"UNEXPECTED_TOKEN",`Unexpected ${_.type} token`),c=!1,u=!1}let C=t[t.length-1],N=C?C.offset+C.source.length:a;return g&&r&&r.type!=="space"&&r.type!=="newline"&&r.type!=="comma"&&(r.type!=="scalar"||r.source!=="")&&s(r.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m&&(c&&m.indent<=i||r?.type==="block-map"||r?.type==="block-seq")&&s(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:w,found:S,spaceBefore:l,comment:p,hasNewline:h,anchor:y,tag:v,newlineAfterProp:k,end:N,start:A??N}}Bb.resolveProps=eN});var Cl=re(Hb=>{"use strict";function lf(t){if(!t)return null;switch(t.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(t.source.includes(`
|
|
67
|
+
`))return!0;if(t.end){for(let e of t.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of t.items){for(let n of e.start)if(n.type==="newline")return!0;if(e.sep){for(let n of e.sep)if(n.type==="newline")return!0}if(lf(e.key)||lf(e.value))return!0}return!1;default:return!0}}Hb.containsNewline=lf});var cf=re(Wb=>{"use strict";var tN=Cl();function nN(t,e,n){if(e?.type==="flow-collection"){let r=e.end[0];r.indent===t&&(r.source==="]"||r.source==="}")&&tN.containsNewline(e)&&n(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Wb.flowIndentCheck=nN});var uf=re(Yb=>{"use strict";var zb=Me();function rN(t,e,n){let{uniqueKeys:r}=t.options;if(r===!1)return!1;let a=typeof r=="function"?r:(s,i)=>s===i||zb.isScalar(s)&&zb.isScalar(i)&&s.value===i.value;return e.some(s=>a(s.key,n))}Yb.mapIncludes=rN});var ev=re(Zb=>{"use strict";var Gb=Yr(),aN=Jr(),Jb=wi(),sN=Cl(),Xb=cf(),iN=uf(),Qb="All mapping items must start at the same column";function oN({composeNode:t,composeEmptyNode:e},n,r,a,s){let i=s?.nodeClass??aN.YAMLMap,o=new i(n.schema);n.atRoot&&(n.atRoot=!1);let l=r.offset,c=null;for(let u of r.items){let{start:p,key:f,sep:h,value:g}=u,m=Jb.resolveProps(p,{indicator:"explicit-key-ind",next:f??h?.[0],offset:l,onError:a,parentIndent:r.indent,startOnNewline:!0}),y=!m.found;if(y){if(f&&(f.type==="block-seq"?a(l,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in f&&f.indent!==r.indent&&a(l,"BAD_INDENT",Qb)),!m.anchor&&!m.tag&&!h){c=m.end,m.comment&&(o.comment?o.comment+=`
|
|
68
|
+
`+m.comment:o.comment=m.comment);continue}(m.newlineAfterProp||sN.containsNewline(f))&&a(f??p[p.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else m.found?.indent!==r.indent&&a(l,"BAD_INDENT",Qb);n.atKey=!0;let v=m.end,k=f?t(n,f,m,a):e(n,v,p,null,m,a);n.schema.compat&&Xb.flowIndentCheck(r.indent,f,a),n.atKey=!1,iN.mapIncludes(n,o.items,k)&&a(v,"DUPLICATE_KEY","Map keys must be unique");let w=Jb.resolveProps(h??[],{indicator:"map-value-ind",next:g,offset:k.range[2],onError:a,parentIndent:r.indent,startOnNewline:!f||f.type==="block-scalar"});if(l=w.end,w.found){y&&(g?.type==="block-map"&&!w.hasNewline&&a(l,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&m.start<w.found.offset-1024&&a(k.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let S=g?t(n,g,w,a):e(n,l,h,null,w,a);n.schema.compat&&Xb.flowIndentCheck(r.indent,g,a),l=S.range[2];let A=new Gb.Pair(k,S);n.options.keepSourceTokens&&(A.srcToken=u),o.items.push(A)}else{y&&a(k.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),w.comment&&(k.comment?k.comment+=`
|
|
69
|
+
`+w.comment:k.comment=w.comment);let S=new Gb.Pair(k);n.options.keepSourceTokens&&(S.srcToken=u),o.items.push(S)}}return c&&c<l&&a(c,"IMPOSSIBLE","Map comment with trailing content"),o.range=[r.offset,l,c??l],o}Zb.resolveBlockMap=oN});var nv=re(tv=>{"use strict";var lN=Xr(),cN=wi(),uN=cf();function pN({composeNode:t,composeEmptyNode:e},n,r,a,s){let i=s?.nodeClass??lN.YAMLSeq,o=new i(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let l=r.offset,c=null;for(let{start:u,value:p}of r.items){let f=cN.resolveProps(u,{indicator:"seq-item-ind",next:p,offset:l,onError:a,parentIndent:r.indent,startOnNewline:!0});if(!f.found)if(f.anchor||f.tag||p)p?.type==="block-seq"?a(f.end,"BAD_INDENT","All sequence items must start at the same column"):a(l,"MISSING_CHAR","Sequence item without - indicator");else{c=f.end,f.comment&&(o.comment=f.comment);continue}let h=p?t(n,p,f,a):e(n,f.end,u,null,f,a);n.schema.compat&&uN.flowIndentCheck(r.indent,p,a),l=h.range[2],o.items.push(h)}return o.range=[r.offset,l,c??l],o}tv.resolveBlockSeq=pN});var as=re(rv=>{"use strict";function fN(t,e,n,r){let a="";if(t){let s=!1,i="";for(let o of t){let{source:l,type:c}=o;switch(c){case"space":s=!0;break;case"comment":{n&&!s&&r(o,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=l.substring(1)||" ";a?a+=i+u:a=u,i="";break}case"newline":a&&(i+=l),s=!0;break;default:r(o,"UNEXPECTED_TOKEN",`Unexpected ${c} at node end`)}e+=l.length}}return{comment:a,offset:e}}rv.resolveEnd=fN});var ov=re(iv=>{"use strict";var dN=Me(),hN=Yr(),av=Jr(),mN=Xr(),gN=as(),sv=wi(),yN=Cl(),kN=uf(),pf="Block collections are not allowed within flow collections",ff=t=>t&&(t.type==="block-map"||t.type==="block-seq");function bN({composeNode:t,composeEmptyNode:e},n,r,a,s){let i=r.start.source==="{",o=i?"flow map":"flow sequence",l=s?.nodeClass??(i?av.YAMLMap:mN.YAMLSeq),c=new l(n.schema);c.flow=!0;let u=n.atRoot;u&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let p=r.offset+r.start.source.length;for(let y=0;y<r.items.length;++y){let v=r.items[y],{start:k,key:w,sep:S,value:A}=v,C=sv.resolveProps(k,{flow:o,indicator:"explicit-key-ind",next:w??S?.[0],offset:p,onError:a,parentIndent:r.indent,startOnNewline:!1});if(!C.found){if(!C.anchor&&!C.tag&&!S&&!A){y===0&&C.comma?a(C.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${o}`):y<r.items.length-1&&a(C.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${o}`),C.comment&&(c.comment?c.comment+=`
|
|
70
|
+
`+C.comment:c.comment=C.comment),p=C.end;continue}!i&&n.options.strict&&yN.containsNewline(w)&&a(w,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(y===0)C.comma&&a(C.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${o}`);else if(C.comma||a(C.start,"MISSING_CHAR",`Missing , between ${o} items`),C.comment){let N="";e:for(let _ of k)switch(_.type){case"comma":case"space":break;case"comment":N=_.source.substring(1);break e;default:break e}if(N){let _=c.items[c.items.length-1];dN.isPair(_)&&(_=_.value??_.key),_.comment?_.comment+=`
|
|
71
|
+
`+N:_.comment=N,C.comment=C.comment.substring(N.length+1)}}if(!i&&!S&&!C.found){let N=A?t(n,A,C,a):e(n,C.end,S,null,C,a);c.items.push(N),p=N.range[2],ff(A)&&a(N.range,"BLOCK_IN_FLOW",pf)}else{n.atKey=!0;let N=C.end,_=w?t(n,w,C,a):e(n,N,k,null,C,a);ff(w)&&a(_.range,"BLOCK_IN_FLOW",pf),n.atKey=!1;let B=sv.resolveProps(S??[],{flow:o,indicator:"map-value-ind",next:A,offset:_.range[2],onError:a,parentIndent:r.indent,startOnNewline:!1});if(B.found){if(!i&&!C.found&&n.options.strict){if(S)for(let J of S){if(J===B.found)break;if(J.type==="newline"){a(J,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}C.start<B.found.offset-1024&&a(B.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else A&&("source"in A&&A.source?.[0]===":"?a(A,"MISSING_CHAR",`Missing space after : in ${o}`):a(B.start,"MISSING_CHAR",`Missing , or : between ${o} items`));let X=A?t(n,A,B,a):B.found?e(n,B.end,S,null,B,a):null;X?ff(A)&&a(X.range,"BLOCK_IN_FLOW",pf):B.comment&&(_.comment?_.comment+=`
|
|
72
|
+
`+B.comment:_.comment=B.comment);let pe=new hN.Pair(_,X);if(n.options.keepSourceTokens&&(pe.srcToken=v),i){let J=c;kN.mapIncludes(n,J.items,_)&&a(N,"DUPLICATE_KEY","Map keys must be unique"),J.items.push(pe)}else{let J=new av.YAMLMap(n.schema);J.flow=!0,J.items.push(pe);let Q=(X??_).range;J.range=[_.range[0],Q[1],Q[2]],c.items.push(J)}p=X?X.range[2]:B.end}}let f=i?"}":"]",[h,...g]=r.end,m=p;if(h?.source===f)m=h.offset+h.source.length;else{let y=o[0].toUpperCase()+o.substring(1),v=u?`${y} must end with a ${f}`:`${y} in block collection must be sufficiently indented and end with a ${f}`;a(p,u?"MISSING_CHAR":"BAD_INDENT",v),h&&h.source.length!==1&&g.unshift(h)}if(g.length>0){let y=gN.resolveEnd(g,m,n.options.strict,a);y.comment&&(c.comment?c.comment+=`
|
|
73
|
+
`+y.comment:c.comment=y.comment),c.range=[r.offset,m,y.offset]}else c.range=[r.offset,m,m];return c}iv.resolveFlowCollection=bN});var cv=re(lv=>{"use strict";var vN=Me(),wN=$t(),$N=Jr(),SN=Xr(),AN=ev(),xN=nv(),EN=ov();function df(t,e,n,r,a,s){let i=n.type==="block-map"?AN.resolveBlockMap(t,e,n,r,s):n.type==="block-seq"?xN.resolveBlockSeq(t,e,n,r,s):EN.resolveFlowCollection(t,e,n,r,s),o=i.constructor;return a==="!"||a===o.tagName?(i.tag=o.tagName,i):(a&&(i.tag=a),i)}function _N(t,e,n,r,a){let s=r.tag,i=s?e.directives.tagName(s.source,f=>a(s,"TAG_RESOLVE_FAILED",f)):null;if(n.type==="block-seq"){let{anchor:f,newlineAfterProp:h}=r,g=f&&s?f.offset>s.offset?f:s:f??s;g&&(!h||h.offset<g.offset)&&a(g,"MISSING_CHAR","Missing newline after block sequence props")}let o=n.type==="block-map"?"map":n.type==="block-seq"?"seq":n.start.source==="{"?"map":"seq";if(!s||!i||i==="!"||i===$N.YAMLMap.tagName&&o==="map"||i===SN.YAMLSeq.tagName&&o==="seq")return df(t,e,n,a,i);let l=e.schema.tags.find(f=>f.tag===i&&f.collection===o);if(!l){let f=e.schema.knownTags[i];if(f?.collection===o)e.schema.tags.push(Object.assign({},f,{default:!1})),l=f;else return f?a(s,"BAD_COLLECTION_TYPE",`${f.tag} used for ${o} collection, but expects ${f.collection??"scalar"}`,!0):a(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${i}`,!0),df(t,e,n,a,i)}let c=df(t,e,n,a,i,l),u=l.resolve?.(c,f=>a(s,"TAG_RESOLVE_FAILED",f),e.options)??c,p=vN.isNode(u)?u:new wN.Scalar(u);return p.range=c.range,p.tag=i,l?.format&&(p.format=l.format),p}lv.composeCollection=_N});var mf=re(uv=>{"use strict";var hf=$t();function CN(t,e,n){let r=e.offset,a=jN(e,t.options.strict,n);if(!a)return{value:"",type:null,comment:"",range:[r,r,r]};let s=a.mode===">"?hf.Scalar.BLOCK_FOLDED:hf.Scalar.BLOCK_LITERAL,i=e.source?NN(e.source):[],o=i.length;for(let m=i.length-1;m>=0;--m){let y=i[m][1];if(y===""||y==="\r")o=m;else break}if(o===0){let m=a.chomp==="+"&&i.length>0?`
|
|
74
74
|
`.repeat(Math.max(1,i.length-1)):"",y=r+a.length;return e.source&&(y+=e.source.length),{value:m,type:s,comment:a.comment,range:[r,y,y]}}let l=e.indent+a.indent,c=e.offset+a.length,u=0;for(let m=0;m<o;++m){let[y,v]=i[m];if(v===""||v==="\r")a.indent===0&&y.length>l&&(l=y.length);else{y.length<l&&n(c+y.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),a.indent===0&&(l=y.length),u=m,l===0&&!t.atRoot&&n(c,"BAD_INDENT","Block scalar values in collections must be indented");break}c+=y.length+v.length+1}for(let m=i.length-1;m>=o;--m)i[m][0].length>l&&(o=m+1);let p="",f="",h=!1;for(let m=0;m<u;++m)p+=i[m][0].slice(l)+`
|
|
75
|
-
`;for(let m=u;m<o;++m){let[y,v]=i[m];c+=y.length+v.length+1;let k=v[v.length-1]==="\r";if(k&&(v=v.slice(0,-1)),v&&y.length<l){let S=`Block scalar lines must not be less indented than their ${a.indent?"explicit indentation indicator":"first line"}`;n(c-v.length-(k?2:1),"BAD_INDENT",S),y=""}s===
|
|
75
|
+
`;for(let m=u;m<o;++m){let[y,v]=i[m];c+=y.length+v.length+1;let k=v[v.length-1]==="\r";if(k&&(v=v.slice(0,-1)),v&&y.length<l){let S=`Block scalar lines must not be less indented than their ${a.indent?"explicit indentation indicator":"first line"}`;n(c-v.length-(k?2:1),"BAD_INDENT",S),y=""}s===hf.Scalar.BLOCK_LITERAL?(p+=f+y.slice(l)+v,f=`
|
|
76
76
|
`):y.length>l||v[0]===" "?(f===" "?f=`
|
|
77
77
|
`:!h&&f===`
|
|
78
78
|
`&&(f=`
|
|
@@ -85,113 +85,113 @@ ${c}
|
|
|
85
85
|
`+i[m][0].slice(l);p[p.length-1]!==`
|
|
86
86
|
`&&(p+=`
|
|
87
87
|
`);break;default:p+=`
|
|
88
|
-
`}let g=r+a.length+e.source.length;return{value:p,type:s,comment:a.comment,range:[r,g,g]}}function
|
|
88
|
+
`}let g=r+a.length+e.source.length;return{value:p,type:s,comment:a.comment,range:[r,g,g]}}function jN({offset:t,props:e},n,r){if(e[0].type!=="block-scalar-header")return r(e[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:a}=e[0],s=a[0],i=0,o="",l=-1;for(let f=1;f<a.length;++f){let h=a[f];if(!o&&(h==="-"||h==="+"))o=h;else{let g=Number(h);!i&&g?i=g:l===-1&&(l=t+f)}}l!==-1&&r(l,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${a}`);let c=!1,u="",p=a.length;for(let f=1;f<e.length;++f){let h=e[f];switch(h.type){case"space":c=!0;case"newline":p+=h.source.length;break;case"comment":n&&!c&&r(h,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),p+=h.source.length,u=h.source.substring(1);break;case"error":r(h,"UNEXPECTED_TOKEN",h.message),p+=h.source.length;break;default:{let g=`Unexpected token in block scalar header: ${h.type}`;r(h,"UNEXPECTED_TOKEN",g);let m=h.source;m&&typeof m=="string"&&(p+=m.length)}}}return{mode:s,indent:i,chomp:o,comment:u,length:p}}function NN(t){let e=t.split(/\n( *)/),n=e[0],r=n.match(/^( *)/),s=[r?.[1]?[r[1],n.slice(r[1].length)]:["",n]];for(let i=1;i<e.length;i+=2)s.push([e[i],e[i+1]]);return s}uv.resolveBlockScalar=CN});var yf=re(fv=>{"use strict";var gf=$t(),PN=as();function TN(t,e,n){let{offset:r,type:a,source:s,end:i}=t,o,l,c=(f,h,g)=>n(r+f,h,g);switch(a){case"scalar":o=gf.Scalar.PLAIN,l=ON(s,c);break;case"single-quoted-scalar":o=gf.Scalar.QUOTE_SINGLE,l=LN(s,c);break;case"double-quoted-scalar":o=gf.Scalar.QUOTE_DOUBLE,l=RN(s,c);break;default:return n(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${a}`),{value:"",type:null,comment:"",range:[r,r+s.length,r+s.length]}}let u=r+s.length,p=PN.resolveEnd(i,u,e,n);return{value:l,type:o,comment:p.comment,range:[r,u,p.offset]}}function ON(t,e){let n="";switch(t[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${t[0]}`;break}case"@":case"`":{n=`reserved character ${t[0]}`;break}}return n&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),pv(t)}function LN(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),pv(t.slice(1,-1)).replace(/''/g,"'")}function pv(t){let e=/(.*?)\r?\n/sy,n=e.exec(t);if(!n)return t;let r,a;try{r=new RegExp("(?<![ ])[ ]+$"),a=new RegExp("^[ ]+|(?<![ ])[ ]+$","g")}catch{r=/[ \t]+$/,a=/^[ \t]+|[ \t]+$/g}let s=n[1].replace(r,""),i=" ",o=e.lastIndex;for(;n=e.exec(t);){let c=n[1].replace(a,"");c===""?i===`
|
|
89
89
|
`?s+=i:i=`
|
|
90
|
-
`:(s+=i+c,i=" "),o=e.lastIndex}let l=/[ \t]*(.*)/sy;return l.lastIndex=o,n=l.exec(t),s+i+(n?.[1]??"")}function
|
|
90
|
+
`:(s+=i+c,i=" "),o=e.lastIndex}let l=/[ \t]*(.*)/sy;return l.lastIndex=o,n=l.exec(t),s+i+(n?.[1]??"")}function RN(t,e){let n="";for(let r=1;r<t.length-1;++r){let a=t[r];if(!(a==="\r"&&t[r+1]===`
|
|
91
91
|
`))if(a===`
|
|
92
|
-
`){let{fold:s,offset:i}=
|
|
92
|
+
`){let{fold:s,offset:i}=IN(t,r);n+=s,r=i}else if(a==="\\"){let s=t[++r],i=MN[s];if(i)n+=i;else if(s===`
|
|
93
93
|
`)for(s=t[r+1];s===" "||s===" ";)s=t[++r+1];else if(s==="\r"&&t[r+1]===`
|
|
94
|
-
`)for(s=t[++r+1];s===" "||s===" ";)s=t[++r+1];else if(s==="x"||s==="u"||s==="U"){let o=s==="x"?2:s==="u"?4:8;n+=
|
|
94
|
+
`)for(s=t[++r+1];s===" "||s===" ";)s=t[++r+1];else if(s==="x"||s==="u"||s==="U"){let o=s==="x"?2:s==="u"?4:8;n+=DN(t,r+1,o,e),r+=o}else{let o=t.substr(r-1,2);e(r-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${o}`),n+=o}}else if(a===" "||a===" "){let s=r,i=t[r+1];for(;i===" "||i===" ";)i=t[++r+1];i!==`
|
|
95
95
|
`&&!(i==="\r"&&t[r+2]===`
|
|
96
|
-
`)&&(n+=r>s?t.slice(s,r+1):a)}else n+=a}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),n}function
|
|
96
|
+
`)&&(n+=r>s?t.slice(s,r+1):a)}else n+=a}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),n}function IN(t,e){let n="",r=t[e+1];for(;(r===" "||r===" "||r===`
|
|
97
97
|
`||r==="\r")&&!(r==="\r"&&t[e+2]!==`
|
|
98
98
|
`);)r===`
|
|
99
99
|
`&&(n+=`
|
|
100
|
-
`),e+=1,r=t[e+1];return n||(n=" "),{fold:n,offset:e}}var
|
|
101
|
-
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function
|
|
100
|
+
`),e+=1,r=t[e+1];return n||(n=" "),{fold:n,offset:e}}var MN={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
101
|
+
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function DN(t,e,n,r){let a=t.substr(e,n),i=a.length===n&&/^[0-9a-fA-F]+$/.test(a)?parseInt(a,16):NaN;try{return String.fromCodePoint(i)}catch{let o=t.substr(e-2,n+2);return r(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${o}`),o}}fv.resolveFlowScalar=TN});var mv=re(hv=>{"use strict";var _a=Me(),dv=$t(),FN=mf(),VN=yf();function qN(t,e,n,r){let{value:a,type:s,comment:i,range:o}=e.type==="block-scalar"?FN.resolveBlockScalar(t,e,r):VN.resolveFlowScalar(e,t.options.strict,r),l=n?t.directives.tagName(n.source,p=>r(n,"TAG_RESOLVE_FAILED",p)):null,c;t.options.stringKeys&&t.atKey?c=t.schema[_a.SCALAR]:l?c=KN(t.schema,a,l,n,r):e.type==="scalar"?c=UN(t,a,e,r):c=t.schema[_a.SCALAR];let u;try{let p=c.resolve(a,f=>r(n??e,"TAG_RESOLVE_FAILED",f),t.options);u=_a.isScalar(p)?p:new dv.Scalar(p)}catch(p){let f=p instanceof Error?p.message:String(p);r(n??e,"TAG_RESOLVE_FAILED",f),u=new dv.Scalar(a)}return u.range=o,u.source=a,s&&(u.type=s),l&&(u.tag=l),c.format&&(u.format=c.format),i&&(u.comment=i),u}function KN(t,e,n,r,a){if(n==="!")return t[_a.SCALAR];let s=[];for(let o of t.tags)if(!o.collection&&o.tag===n)if(o.default&&o.test)s.push(o);else return o;for(let o of s)if(o.test?.test(e))return o;let i=t.knownTags[n];return i&&!i.collection?(t.tags.push(Object.assign({},i,{default:!1,test:void 0})),i):(a(r,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),t[_a.SCALAR])}function UN({atKey:t,directives:e,schema:n},r,a,s){let i=n.tags.find(o=>(o.default===!0||t&&o.default==="key")&&o.test?.test(r))||n[_a.SCALAR];if(n.compat){let o=n.compat.find(l=>l.default&&l.test?.test(r))??n[_a.SCALAR];if(i.tag!==o.tag){let l=e.tagString(i.tag),c=e.tagString(o.tag),u=`Value may be parsed as either ${l} or ${c}`;s(a,"TAG_RESOLVE_FAILED",u,!0)}}return i}hv.composeScalar=qN});var yv=re(gv=>{"use strict";function BN(t,e,n){if(e){n??(n=e.length);for(let r=n-1;r>=0;--r){let a=e[r];switch(a.type){case"space":case"comment":case"newline":t-=a.source.length;continue}for(a=e[++r];a?.type==="space";)t+=a.source.length,a=e[++r];break}}return t}gv.emptyScalarPosition=BN});var vv=re(bf=>{"use strict";var HN=ti(),WN=Me(),zN=cv(),kv=mv(),YN=as(),GN=yv(),JN={composeNode:bv,composeEmptyNode:kf};function bv(t,e,n,r){let a=t.atKey,{spaceBefore:s,comment:i,anchor:o,tag:l}=n,c,u=!0;switch(e.type){case"alias":c=XN(t,e,r),(o||l)&&r(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":c=kv.composeScalar(t,e,l,r),o&&(c.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{c=zN.composeCollection(JN,t,e,n,r),o&&(c.anchor=o.source.substring(1))}catch(p){let f=p instanceof Error?p.message:String(p);r(e,"RESOURCE_EXHAUSTION",f)}break;default:{let p=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;r(e,"UNEXPECTED_TOKEN",p),u=!1}}return c??(c=kf(t,e.offset,void 0,null,n,r)),o&&c.anchor===""&&r(o,"BAD_ALIAS","Anchor cannot be an empty string"),a&&t.options.stringKeys&&(!WN.isScalar(c)||typeof c.value!="string"||c.tag&&c.tag!=="tag:yaml.org,2002:str")&&r(l??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),s&&(c.spaceBefore=!0),i&&(e.type==="scalar"&&e.source===""?c.comment=i:c.commentBefore=i),t.options.keepSourceTokens&&u&&(c.srcToken=e),c}function kf(t,e,n,r,{spaceBefore:a,comment:s,anchor:i,tag:o,end:l},c){let u={type:"scalar",offset:GN.emptyScalarPosition(e,n,r),indent:-1,source:""},p=kv.composeScalar(t,u,o,c);return i&&(p.anchor=i.source.substring(1),p.anchor===""&&c(i,"BAD_ALIAS","Anchor cannot be an empty string")),a&&(p.spaceBefore=!0),s&&(p.comment=s,p.range[2]=l),p}function XN({options:t},{offset:e,source:n,end:r},a){let s=new HN.Alias(n.substring(1));s.source===""&&a(e,"BAD_ALIAS","Alias cannot be an empty string"),s.source.endsWith(":")&&a(e+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let i=e+n.length,o=YN.resolveEnd(r,i,t.strict,a);return s.range=[e,i,o.offset],o.comment&&(s.comment=o.comment),s}bf.composeEmptyNode=kf;bf.composeNode=bv});var Sv=re($v=>{"use strict";var QN=yi(),wv=vv(),ZN=as(),eP=wi();function tP(t,e,{offset:n,start:r,value:a,end:s},i){let o=Object.assign({_directives:e},t),l=new QN.Document(void 0,o),c={atKey:!1,atRoot:!0,directives:l.directives,options:l.options,schema:l.schema},u=eP.resolveProps(r,{indicator:"doc-start",next:a??s?.[0],offset:n,onError:i,parentIndent:0,startOnNewline:!0});u.found&&(l.directives.docStart=!0,a&&(a.type==="block-map"||a.type==="block-seq")&&!u.hasNewline&&i(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),l.contents=a?wv.composeNode(c,a,u,i):wv.composeEmptyNode(c,u.end,r,null,u,i);let p=l.contents.range[2],f=ZN.resolveEnd(s,p,!1,i);return f.comment&&(l.comment=f.comment),l.range=[n,p,f.offset],l}$v.composeDoc=tP});var wf=re(Ev=>{"use strict";var nP=to("process"),rP=sp(),aP=yi(),$i=vi(),Av=Me(),sP=Sv(),iP=as();function Si(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];let{offset:e,source:n}=t;return[e,e+(typeof n=="string"?n.length:1)]}function xv(t){let e="",n=!1,r=!1;for(let a=0;a<t.length;++a){let s=t[a];switch(s[0]){case"#":e+=(e===""?"":r?`
|
|
102
102
|
|
|
103
103
|
`:`
|
|
104
|
-
`)+(s.substring(1)||" "),n=!0,r=!1;break;case"%":t[a+1]?.[0]!=="#"&&(a+=1),n=!1;break;default:n||(r=!0),n=!1}}return{comment:e,afterEmptyLine:r}}var
|
|
105
|
-
${r}`:r;else if(a||e.directives.docStart||!s)e.commentBefore=r;else if(
|
|
104
|
+
`)+(s.substring(1)||" "),n=!0,r=!1;break;case"%":t[a+1]?.[0]!=="#"&&(a+=1),n=!1;break;default:n||(r=!0),n=!1}}return{comment:e,afterEmptyLine:r}}var vf=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(n,r,a,s)=>{let i=Si(n);s?this.warnings.push(new $i.YAMLWarning(i,r,a)):this.errors.push(new $i.YAMLParseError(i,r,a))},this.directives=new rP.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,n){let{comment:r,afterEmptyLine:a}=xv(this.prelude);if(r){let s=e.contents;if(n)e.comment=e.comment?`${e.comment}
|
|
105
|
+
${r}`:r;else if(a||e.directives.docStart||!s)e.commentBefore=r;else if(Av.isCollection(s)&&!s.flow&&s.items.length>0){let i=s.items[0];Av.isPair(i)&&(i=i.key);let o=i.commentBefore;i.commentBefore=o?`${r}
|
|
106
106
|
${o}`:r}else{let i=s.commentBefore;s.commentBefore=i?`${r}
|
|
107
|
-
${i}`:r}}if(n){for(let s=0;s<this.errors.length;++s)e.errors.push(this.errors[s]);for(let s=0;s<this.warnings.length;++s)e.warnings.push(this.warnings[s])}else e.errors=this.errors,e.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment
|
|
108
|
-
${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new $i.YAMLParseError(Si(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let r=Object.assign({_directives:this.directives},this.options),a=new
|
|
107
|
+
${i}`:r}}if(n){for(let s=0;s<this.errors.length;++s)e.errors.push(this.errors[s]);for(let s=0;s<this.warnings.length;++s)e.warnings.push(this.warnings[s])}else e.errors=this.errors,e.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:xv(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,n=!1,r=-1){for(let a of e)yield*this.next(a);yield*this.end(n,r)}*next(e){switch(nP.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(n,r,a)=>{let s=Si(e);s[0]+=n,this.onError(s,"BAD_DIRECTIVE",r,a)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let n=sP.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let n=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,r=new $i.YAMLParseError(Si(e),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(r):this.doc.errors.push(r);break}case"doc-end":{if(!this.doc){let r="Unexpected doc-end without preceding document";this.errors.push(new $i.YAMLParseError(Si(e),"UNEXPECTED_TOKEN",r));break}this.doc.directives.docEnd=!0;let n=iP.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){let r=this.doc.comment;this.doc.comment=r?`${r}
|
|
108
|
+
${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new $i.YAMLParseError(Si(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let r=Object.assign({_directives:this.directives},this.options),a=new aP.Document(void 0,r);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),a.range=[0,n,n],this.decorate(a,!1),yield a}}};Ev.Composer=vf});var jv=re(jl=>{"use strict";var oP=mf(),lP=yf(),cP=vi(),_v=ii();function uP(t,e=!0,n){if(t){let r=(a,s,i)=>{let o=typeof a=="number"?a:Array.isArray(a)?a[0]:a.offset;if(n)n(o,s,i);else throw new cP.YAMLParseError([o,o+1],s,i)};switch(t.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return lP.resolveFlowScalar(t,e,r);case"block-scalar":return oP.resolveBlockScalar({options:{strict:e}},t,r)}}return null}function pP(t,e){let{implicitKey:n=!1,indent:r,inFlow:a=!1,offset:s=-1,type:i="PLAIN"}=e,o=_v.stringifyString({type:i,value:t},{implicitKey:n,indent:r>0?" ".repeat(r):"",inFlow:a,options:{blockQuote:!0,lineWidth:-1}}),l=e.end??[{type:"newline",offset:-1,indent:r,source:`
|
|
109
109
|
`}];switch(o[0]){case"|":case">":{let c=o.indexOf(`
|
|
110
110
|
`),u=o.substring(0,c),p=o.substring(c+1)+`
|
|
111
|
-
`,f=[{type:"block-scalar-header",offset:s,indent:r,source:u}];return
|
|
112
|
-
`}),{type:"block-scalar",offset:s,indent:r,props:f,source:p}}case'"':return{type:"double-quoted-scalar",offset:s,indent:r,source:o,end:l};case"'":return{type:"single-quoted-scalar",offset:s,indent:r,source:o,end:l};default:return{type:"scalar",offset:s,indent:r,source:o,end:l}}}function
|
|
111
|
+
`,f=[{type:"block-scalar-header",offset:s,indent:r,source:u}];return Cv(f,l)||f.push({type:"newline",offset:-1,indent:r,source:`
|
|
112
|
+
`}),{type:"block-scalar",offset:s,indent:r,props:f,source:p}}case'"':return{type:"double-quoted-scalar",offset:s,indent:r,source:o,end:l};case"'":return{type:"single-quoted-scalar",offset:s,indent:r,source:o,end:l};default:return{type:"scalar",offset:s,indent:r,source:o,end:l}}}function fP(t,e,n={}){let{afterKey:r=!1,implicitKey:a=!1,inFlow:s=!1,type:i}=n,o="indent"in t?t.indent:null;if(r&&typeof o=="number"&&(o+=2),!i)switch(t.type){case"single-quoted-scalar":i="QUOTE_SINGLE";break;case"double-quoted-scalar":i="QUOTE_DOUBLE";break;case"block-scalar":{let c=t.props[0];if(c.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i=c.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:i="PLAIN"}let l=_v.stringifyString({type:i,value:e},{implicitKey:a||o===null,indent:o!==null&&o>0?" ".repeat(o):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":dP(t,l);break;case'"':$f(t,l,"double-quoted-scalar");break;case"'":$f(t,l,"single-quoted-scalar");break;default:$f(t,l,"scalar")}}function dP(t,e){let n=e.indexOf(`
|
|
113
113
|
`),r=e.substring(0,n),a=e.substring(n+1)+`
|
|
114
|
-
`;if(t.type==="block-scalar"){let s=t.props[0];if(s.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s.source=r,t.source=a}else{let{offset:s}=t,i="indent"in t?t.indent:-1,o=[{type:"block-scalar-header",offset:s,indent:i,source:r}];
|
|
115
|
-
`});for(let l of Object.keys(t))l!=="type"&&l!=="offset"&&delete t[l];Object.assign(t,{type:"block-scalar",indent:i,props:o,source:a})}}function
|
|
116
|
-
`};delete t.items,Object.assign(t,{type:n,source:e,end:[a]});break}default:{let r="indent"in t?t.indent:-1,a="end"in t&&Array.isArray(t.end)?t.end.filter(s=>s.type==="space"||s.type==="comment"||s.type==="newline"):[];for(let s of Object.keys(t))s!=="type"&&s!=="offset"&&delete t[s];Object.assign(t,{type:n,indent:r,source:e,end:a})}}}
|
|
114
|
+
`;if(t.type==="block-scalar"){let s=t.props[0];if(s.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s.source=r,t.source=a}else{let{offset:s}=t,i="indent"in t?t.indent:-1,o=[{type:"block-scalar-header",offset:s,indent:i,source:r}];Cv(o,"end"in t?t.end:void 0)||o.push({type:"newline",offset:-1,indent:i,source:`
|
|
115
|
+
`});for(let l of Object.keys(t))l!=="type"&&l!=="offset"&&delete t[l];Object.assign(t,{type:"block-scalar",indent:i,props:o,source:a})}}function Cv(t,e){if(e)for(let n of e)switch(n.type){case"space":case"comment":t.push(n);break;case"newline":return t.push(n),!0}return!1}function $f(t,e,n){switch(t.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":t.type=n,t.source=e;break;case"block-scalar":{let r=t.props.slice(1),a=e.length;t.props[0].type==="block-scalar-header"&&(a-=t.props[0].source.length);for(let s of r)s.offset+=a;delete t.props,Object.assign(t,{type:n,source:e,end:r});break}case"block-map":case"block-seq":{let a={type:"newline",offset:t.offset+e.length,indent:t.indent,source:`
|
|
116
|
+
`};delete t.items,Object.assign(t,{type:n,source:e,end:[a]});break}default:{let r="indent"in t?t.indent:-1,a="end"in t&&Array.isArray(t.end)?t.end.filter(s=>s.type==="space"||s.type==="comment"||s.type==="newline"):[];for(let s of Object.keys(t))s!=="type"&&s!=="offset"&&delete t[s];Object.assign(t,{type:n,indent:r,source:e,end:a})}}}jl.createScalarToken=pP;jl.resolveAsScalar=uP;jl.setScalarValue=fP});var Pv=re(Nv=>{"use strict";var hP=t=>"type"in t?Pl(t):Nl(t);function Pl(t){switch(t.type){case"block-scalar":{let e="";for(let n of t.props)e+=Pl(n);return e+t.source}case"block-map":case"block-seq":{let e="";for(let n of t.items)e+=Nl(n);return e}case"flow-collection":{let e=t.start.source;for(let n of t.items)e+=Nl(n);for(let n of t.end)e+=n.source;return e}case"document":{let e=Nl(t);if(t.end)for(let n of t.end)e+=n.source;return e}default:{let e=t.source;if("end"in t&&t.end)for(let n of t.end)e+=n.source;return e}}}function Nl({start:t,key:e,sep:n,value:r}){let a="";for(let s of t)a+=s.source;if(e&&(a+=Pl(e)),n)for(let s of n)a+=s.source;return r&&(a+=Pl(r)),a}Nv.stringify=hP});var Rv=re(Lv=>{"use strict";var Sf=Symbol("break visit"),mP=Symbol("skip children"),Tv=Symbol("remove item");function Ca(t,e){"type"in t&&t.type==="document"&&(t={start:t.start,value:t.value}),Ov(Object.freeze([]),t,e)}Ca.BREAK=Sf;Ca.SKIP=mP;Ca.REMOVE=Tv;Ca.itemAtPath=(t,e)=>{let n=t;for(let[r,a]of e){let s=n?.[r];if(s&&"items"in s)n=s.items[a];else return}return n};Ca.parentCollection=(t,e)=>{let n=Ca.itemAtPath(t,e.slice(0,-1)),r=e[e.length-1][0],a=n?.[r];if(a&&"items"in a)return a;throw new Error("Parent collection not found")};function Ov(t,e,n){let r=n(e,t);if(typeof r=="symbol")return r;for(let a of["key","value"]){let s=e[a];if(s&&"items"in s){for(let i=0;i<s.items.length;++i){let o=Ov(Object.freeze(t.concat([[a,i]])),s.items[i],n);if(typeof o=="number")i=o-1;else{if(o===Sf)return Sf;o===Tv&&(s.items.splice(i,1),i-=1)}}typeof r=="function"&&a==="key"&&(r=r(e,t))}}return typeof r=="function"?r(e,t):r}Lv.visit=Ca});var Tl=re(un=>{"use strict";var Af=jv(),gP=Pv(),yP=Rv(),xf="\uFEFF",Ef="",_f="",Cf="",kP=t=>!!t&&"items"in t,bP=t=>!!t&&(t.type==="scalar"||t.type==="single-quoted-scalar"||t.type==="double-quoted-scalar"||t.type==="block-scalar");function vP(t){switch(t){case xf:return"<BOM>";case Ef:return"<DOC>";case _f:return"<FLOW_END>";case Cf:return"<SCALAR>";default:return JSON.stringify(t)}}function wP(t){switch(t){case xf:return"byte-order-mark";case Ef:return"doc-mode";case _f:return"flow-error-end";case Cf:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
117
117
|
`:case`\r
|
|
118
|
-
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(t[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}un.createScalarToken
|
|
119
|
-
`:case"\r":case" ":return!0;default:return!1}}var
|
|
120
|
-
\r `),
|
|
118
|
+
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(t[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}un.createScalarToken=Af.createScalarToken;un.resolveAsScalar=Af.resolveAsScalar;un.setScalarValue=Af.setScalarValue;un.stringify=gP.stringify;un.visit=yP.visit;un.BOM=xf;un.DOCUMENT=Ef;un.FLOW_END=_f;un.SCALAR=Cf;un.isCollection=kP;un.isScalar=bP;un.prettyToken=vP;un.tokenType=wP});var Pf=re(Mv=>{"use strict";var Ai=Tl();function qn(t){switch(t){case void 0:case" ":case`
|
|
119
|
+
`:case"\r":case" ":return!0;default:return!1}}var Iv=new Set("0123456789ABCDEFabcdef"),$P=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Ol=new Set(",[]{}"),SP=new Set(` ,[]{}
|
|
120
|
+
\r `),jf=t=>!t||SP.has(t),Nf=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,n=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!n;let r=this.next??"stream";for(;r&&(n||this.hasChars(1));)r=yield*this.parseNext(r)}atLineEnd(){let e=this.pos,n=this.buffer[e];for(;n===" "||n===" ";)n=this.buffer[++e];return!n||n==="#"||n===`
|
|
121
121
|
`?!0:n==="\r"?this.buffer[e+1]===`
|
|
122
122
|
`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let n=this.buffer[e];if(this.indentNext>0){let r=0;for(;n===" ";)n=this.buffer[++r+e];if(n==="\r"){let a=this.buffer[r+e+1];if(a===`
|
|
123
123
|
`||!a&&!this.atEnd)return e+r+1}return n===`
|
|
124
|
-
`||r>=this.indentNext||!n&&!this.atEnd?e+r:-1}if(n==="-"||n==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")&&
|
|
125
|
-
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===Ai.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let n=e.length,r=e.indexOf("#");for(;r!==-1;){let s=e[r-1];if(s===" "||s===" "){n=r-1;break}else r=e.indexOf("#",r+1)}for(;;){let s=e[n-1];if(s===" "||s===" ")n-=1;else break}let a=(yield*this.pushCount(n))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-a),this.pushNewline(),"stream"}if(this.atLineEnd()){let n=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-n),yield*this.pushNewline(),"stream"}return yield Ai.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let n=this.peek(3);if((n==="---"||n==="...")&&
|
|
124
|
+
`||r>=this.indentNext||!n&&!this.atEnd?e+r:-1}if(n==="-"||n==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")&&qn(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&e<this.pos)&&(e=this.buffer.indexOf(`
|
|
125
|
+
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===Ai.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let n=e.length,r=e.indexOf("#");for(;r!==-1;){let s=e[r-1];if(s===" "||s===" "){n=r-1;break}else r=e.indexOf("#",r+1)}for(;;){let s=e[n-1];if(s===" "||s===" ")n-=1;else break}let a=(yield*this.pushCount(n))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-a),this.pushNewline(),"stream"}if(this.atLineEnd()){let n=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-n),yield*this.pushNewline(),"stream"}return yield Ai.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let n=this.peek(3);if((n==="---"||n==="...")&&qn(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,n==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!qn(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&qn(n)){let r=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=r,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(e[n]){case"#":yield*this.pushCount(e.length-n);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(jf),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,n,r=-1;do e=yield*this.pushNewline(),e>0?(n=yield*this.pushSpaces(!1),this.indentValue=r=n):n=0,n+=yield*this.pushSpaces(!0);while(e+n>0);let a=this.getLine();if(a===null)return this.setNext("flow");if((r!==-1&&r<this.indentNext&&a[0]!=="#"||r===0&&(a.startsWith("---")||a.startsWith("..."))&&qn(a[3]))&&!(r===this.indentNext-1&&this.flowLevel===1&&(a[0]==="]"||a[0]==="}")))return this.flowLevel=0,yield Ai.FLOW_END,yield*this.parseLineStart();let s=0;for(;a[s]===",";)s+=yield*this.pushCount(1),s+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(s+=yield*this.pushIndicators(),a[s]){case void 0:return"flow";case"#":return yield*this.pushCount(a.length-s),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(jf),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let i=this.charAt(1);if(this.flowKey||qn(i)||i===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let e=this.charAt(0),n=this.buffer.indexOf(e,this.pos+1);if(e==="'")for(;n!==-1&&this.buffer[n+1]==="'";)n=this.buffer.indexOf("'",n+2);else for(;n!==-1;){let s=0;for(;this.buffer[n-1-s]==="\\";)s+=1;if(s%2===0)break;n=this.buffer.indexOf('"',n+1)}let r=this.buffer.substring(0,n),a=r.indexOf(`
|
|
126
126
|
`,this.pos);if(a!==-1){for(;a!==-1;){let s=this.continueScalar(a+1);if(s===-1)break;a=r.indexOf(`
|
|
127
|
-
`,s)}a!==-1&&(n=a-(r[a-1]==="\r"?2:1))}if(n===-1){if(!this.atEnd)return this.setNext("quoted-scalar");n=this.buffer.length}return yield*this.pushToIndex(n+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let n=this.buffer[++e];if(n==="+")this.blockScalarKeep=!0;else if(n>"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>
|
|
127
|
+
`,s)}a!==-1&&(n=a-(r[a-1]==="\r"?2:1))}if(n===-1){if(!this.atEnd)return this.setNext("quoted-scalar");n=this.buffer.length}return yield*this.pushToIndex(n+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let n=this.buffer[++e];if(n==="+")this.blockScalarKeep=!0;else if(n>"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>qn(n)||n==="#")}*parseBlockScalar(){let e=this.pos-1,n=0,r;e:for(let s=this.pos;r=this.buffer[s];++s)switch(r){case" ":n+=1;break;case`
|
|
128
128
|
`:e=s,n=0;break;case"\r":{let i=this.buffer[s+1];if(!i&&!this.atEnd)return this.setNext("block-scalar");if(i===`
|
|
129
129
|
`)break}default:break e}if(!r&&!this.atEnd)return this.setNext("block-scalar");if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let s=this.continueScalar(e+1);if(s===-1)break;e=this.buffer.indexOf(`
|
|
130
130
|
`,s)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let a=e+1;for(r=this.buffer[a];r===" ";)r=this.buffer[++a];if(r===" "){for(;r===" "||r===" "||r==="\r"||r===`
|
|
131
131
|
`;)r=this.buffer[++a];e=a-1}else if(!this.blockScalarKeep)do{let s=e-1,i=this.buffer[s];i==="\r"&&(i=this.buffer[--s]);let o=s;for(;i===" ";)i=this.buffer[--s];if(i===`
|
|
132
|
-
`&&s>=this.pos&&s+1+n>o)e=s;else break}while(!0);return yield Ai.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,n=this.pos-1,r=this.pos-1,a;for(;a=this.buffer[++r];)if(a===":"){let s=this.buffer[r+1];if(
|
|
132
|
+
`&&s>=this.pos&&s+1+n>o)e=s;else break}while(!0);return yield Ai.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,n=this.pos-1,r=this.pos-1,a;for(;a=this.buffer[++r];)if(a===":"){let s=this.buffer[r+1];if(qn(s)||e&&Ol.has(s))break;n=r}else if(qn(a)){let s=this.buffer[r+1];if(a==="\r"&&(s===`
|
|
133
133
|
`?(r+=1,a=`
|
|
134
|
-
`,s=this.buffer[r+1]):n=r),s==="#"||e&&
|
|
135
|
-
`){let i=this.continueScalar(r+1);if(i===-1)break;r=Math.max(r,i-2)}}else{if(e&&
|
|
134
|
+
`,s=this.buffer[r+1]):n=r),s==="#"||e&&Ol.has(s))break;if(a===`
|
|
135
|
+
`){let i=this.continueScalar(r+1);if(i===-1)break;r=Math.max(r,i-2)}}else{if(e&&Ol.has(a))break;n=r}return!a&&!this.atEnd?this.setNext("plain-scalar"):(yield Ai.SCALAR,yield*this.pushToIndex(n+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,n){let r=this.buffer.slice(this.pos,e);return r?(yield r,this.pos+=r.length,r.length):(n&&(yield""),0)}*pushIndicators(){let e=0;e:for(;;){switch(this.charAt(0)){case"!":e+=yield*this.pushTag(),e+=yield*this.pushSpaces(!0);continue e;case"&":e+=yield*this.pushUntil(jf),e+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let n=this.flowLevel>0,r=this.charAt(1);if(qn(r)||n&&Ol.has(r)){n?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,e+=yield*this.pushCount(1),e+=yield*this.pushSpaces(!0);continue e}}}break e}return e}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,n=this.buffer[e];for(;!qn(n)&&n!==">";)n=this.buffer[++e];return yield*this.pushToIndex(n===">"?e+1:e,!1)}else{let e=this.pos+1,n=this.buffer[e];for(;n;)if($P.has(n))n=this.buffer[++e];else if(n==="%"&&Iv.has(this.buffer[e+1])&&Iv.has(this.buffer[e+2]))n=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===`
|
|
136
136
|
`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
|
|
137
|
-
`?yield*this.pushCount(2):0}*pushSpaces(e){let n=this.pos-1,r;do r=this.buffer[++n];while(r===" "||e&&r===" ");let a=n-this.pos;return a>0&&(yield this.buffer.substr(this.pos,a),this.pos=n),a}*pushUntil(e){let n=this.pos,r=this.buffer[n];for(;!e(r);)r=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};
|
|
137
|
+
`?yield*this.pushCount(2):0}*pushSpaces(e){let n=this.pos-1,r;do r=this.buffer[++n];while(r===" "||e&&r===" ");let a=n-this.pos;return a>0&&(yield this.buffer.substr(this.pos,a),this.pos=n),a}*pushUntil(e){let n=this.pos,r=this.buffer[n];for(;!e(r);)r=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};Mv.Lexer=Nf});var Of=re(Dv=>{"use strict";var Tf=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let n=0,r=this.lineStarts.length;for(;n<r;){let s=n+r>>1;this.lineStarts[s]<e?n=s+1:r=s}if(this.lineStarts[n]===e)return{line:n+1,col:1};if(n===0)return{line:0,col:e};let a=this.lineStarts[n-1];return{line:n,col:e-a+1}}}};Dv.LineCounter=Tf});var Rf=re(Uv=>{"use strict";var AP=to("process"),Fv=Tl(),xP=Pf();function Qr(t,e){for(let n=0;n<t.length;++n)if(t[n].type===e)return!0;return!1}function Vv(t){for(let e=0;e<t.length;++e)switch(t[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function Kv(t){switch(t?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function Ll(t){switch(t.type){case"document":return t.start;case"block-map":{let e=t.items[t.items.length-1];return e.sep??e.start}case"block-seq":return t.items[t.items.length-1].start;default:return[]}}function ss(t){if(t.length===0)return[];let e=t.length;e:for(;--e>=0;)switch(t[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;t[++e]?.type==="space";);return t.splice(e,t.length)}function Rl(t,e){if(e.length<1e5)Array.prototype.push.apply(t,e);else for(let n=0;n<e.length;++n)t.push(e[n])}function qv(t){if(t.start.type==="flow-seq-start")for(let e of t.items)e.sep&&!e.value&&!Qr(e.start,"explicit-key-ind")&&!Qr(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Kv(e.value)?e.value.end?Rl(e.value.end,e.sep):e.value.end=e.sep:Rl(e.start,e.sep),delete e.sep)}var Lf=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new xP.Lexer,this.onNewLine=e}*parse(e,n=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let r of this.lexer.lex(e,n))yield*this.next(r);n||(yield*this.end())}*next(e){if(this.source=e,AP.env.LOG_TOKENS&&console.log("|",Fv.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let n=Fv.tokenType(e);if(n)if(n==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=n,yield*this.step(),n){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let r=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:r,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&e?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let n=e??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{let r=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in r?r.indent:0:n.type==="flow-collection"&&r.type==="document"&&(n.indent=0),n.type==="flow-collection"&&qv(n),r.type){case"document":r.value=n;break;case"block-scalar":r.props.push(n);break;case"block-map":{let a=r.items[r.items.length-1];if(a.value){r.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(a.sep)a.value=n;else{Object.assign(a,{key:n,sep:[]}),this.onKeyLine=!a.explicitKey;return}break}case"block-seq":{let a=r.items[r.items.length-1];a.value?r.items.push({start:[],value:n}):a.value=n;break}case"flow-collection":{let a=r.items[r.items.length-1];!a||a.value?r.items.push({start:[],key:n,sep:[]}):a.sep?a.value=n:Object.assign(a,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((r.type==="document"||r.type==="block-map"||r.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){let a=n.items[n.items.length-1];a&&!a.sep&&!a.value&&a.start.length>0&&Vv(a.start)===-1&&(n.indent===0||a.start.every(s=>s.type!=="comment"||s.indent<n.indent))&&(r.type==="document"?r.end=a.start:r.items.push({start:a.start}),n.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let e={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&e.start.push(this.sourceToken),this.stack.push(e);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(e){if(e.value)return yield*this.lineEnd(e);switch(this.type){case"doc-start":{Vv(e.start)!==-1?(yield*this.pop(),yield*this.step()):e.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":e.start.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(e){if(this.type==="map-value-ind"){let n=Ll(this.peek(2)),r=ss(n),a;e.end?(a=e.end,a.push(this.sourceToken),delete e.end):a=[this.sourceToken];let s={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:r,key:e,sep:a}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=s}else yield*this.lineEnd(e)}*blockScalar(e){switch(this.type){case"space":case"comment":case"newline":e.props.push(this.sourceToken);return;case"scalar":if(e.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let n=this.source.indexOf(`
|
|
138
138
|
`)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(`
|
|
139
|
-
`,n)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,n.value){let r="end"in n.value?n.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else if(n.sep)n.sep.push(this.sourceToken);else{if(this.atIndentedComment(n.start,e.indent)){let a=e.items[e.items.length-2]?.value?.end;if(Array.isArray(a)){
|
|
139
|
+
`,n)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,n.value){let r="end"in n.value?n.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else if(n.sep)n.sep.push(this.sourceToken);else{if(this.atIndentedComment(n.start,e.indent)){let a=e.items[e.items.length-2]?.value?.end;if(Array.isArray(a)){Rl(a,n.start),a.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let r=!this.onKeyLine&&this.indent===e.indent,a=r&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind",s=[];if(a&&n.sep&&!n.value){let i=[];for(let o=0;o<n.sep.length;++o){let l=n.sep[o];switch(l.type){case"newline":i.push(o);break;case"space":break;case"comment":l.indent>e.indent&&(i.length=0);break;default:i.length=0}}i.length>=2&&(s=n.sep.splice(i[1]))}switch(this.type){case"anchor":case"tag":a||n.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):a||n.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(n.explicitKey)if(n.sep)if(n.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Qr(n.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(Kv(n.key)&&!Qr(n.sep,"newline")){let i=ss(n.start),o=n.key,l=n.sep;l.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:o,sep:l}]})}else s.length>0?n.sep=n.sep.concat(s,this.sourceToken):n.sep.push(this.sourceToken);else if(Qr(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{let i=ss(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||a?e.items.push({start:s,key:null,sep:[this.sourceToken]}):Qr(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);a||n.value?(e.items.push({start:s,key:i,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(i):(Object.assign(n,{key:i,sep:[]}),this.onKeyLine=!0);return}default:{let i=this.startBlockValue(e);if(i){if(i.type==="block-seq"){if(!n.explicitKey&&n.sep&&!Qr(n.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else r&&e.items.push({start:s});this.stack.push(i);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(n.value){let r="end"in n.value?n.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,e.indent)){let a=e.items[e.items.length-2]?.value?.end;if(Array.isArray(a)){Rl(a,n.start),a.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=e.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;n.value||Qr(n.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>e.indent){let r=this.startBlockValue(e);if(r){this.stack.push(r);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let n=e.items[e.items.length-1];if(this.type==="flow-error-end"){let r;do yield*this.pop(),r=this.peek(1);while(r?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?e.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);!n||n.value?e.items.push({start:[],key:a,sep:[]}):n.sep?this.stack.push(a):Object.assign(n,{key:a,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let r=this.startBlockValue(e);r?this.stack.push(r):(yield*this.pop(),yield*this.step())}else{let r=this.peek(2);if(r.type==="block-map"&&(this.type==="map-value-ind"&&r.indent===e.indent||this.type==="newline"&&!r.items[r.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&r.type!=="flow-collection"){let a=Ll(r),s=ss(a);qv(e);let i=e.end.splice(1,e.end.length);i.push(this.sourceToken);let o={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:s,key:e,sep:i}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=o}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let n=this.source.indexOf(`
|
|
140
140
|
`)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(`
|
|
141
|
-
`,n)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let n=Ol(e),r=ss(n);return r.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=Ol(e),r=ss(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,n){return this.type!=="comment"||this.indent<=n?!1:e.every(r=>r.type==="newline"||r.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};qv.Parser=Tf});var Hv=re(Ei=>{"use strict";var Vv=bf(),xP=yi(),xi=vi(),EP=gp(),_P=Me(),CP=Pf(),Kv=Of();function Uv(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new CP.LineCounter||null,prettyErrors:e}}function jP(t,e={}){let{lineCounter:n,prettyErrors:r}=Uv(e),a=new Kv.Parser(n?.addNewLine),s=new Vv.Composer(e),i=Array.from(s.compose(a.parse(t)));if(r&&n)for(let o of i)o.errors.forEach(xi.prettifyError(t,n)),o.warnings.forEach(xi.prettifyError(t,n));return i.length>0?i:Object.assign([],{empty:!0},s.streamInfo())}function Bv(t,e={}){let{lineCounter:n,prettyErrors:r}=Uv(e),a=new Kv.Parser(n?.addNewLine),s=new Vv.Composer(e),i=null;for(let o of s.compose(a.parse(t),!0,t.length))if(!i)i=o;else if(i.options.logLevel!=="silent"){i.errors.push(new xi.YAMLParseError(o.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&n&&(i.errors.forEach(xi.prettifyError(t,n)),i.warnings.forEach(xi.prettifyError(t,n))),i}function NP(t,e,n){let r;typeof e=="function"?r=e:n===void 0&&e&&typeof e=="object"&&(n=e);let a=Bv(t,n);if(!a)return null;if(a.warnings.forEach(s=>EP.warn(a.options.logLevel,s)),a.errors.length>0){if(a.options.logLevel!=="silent")throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function PP(t,e,n){let r=null;if(typeof e=="function"||Array.isArray(e)?r=e:n===void 0&&e&&(n=e),typeof n=="string"&&(n=n.length),typeof n=="number"){let a=Math.round(n);n=a<1?void 0:a>8?{indent:8}:{indent:a}}if(t===void 0){let{keepUndefined:a}=n??e??{};if(!a)return}return _P.isDocument(t)&&!r?t.toString(n):new xP.Document(t,r,n).toString(n)}Ei.parse=NP;Ei.parseAllDocuments=jP;Ei.parseDocument=Bv;Ei.stringify=PP});var zv=re(Ue=>{"use strict";var TP=bf(),OP=yi(),LP=Qp(),Lf=vi(),RP=ti(),Qr=Me(),IP=zr(),MP=$t(),DP=Gr(),FP=Jr(),qP=Pl(),VP=jf(),KP=Pf(),UP=Of(),Rl=Hv(),Wv=Xs();Ue.Composer=TP.Composer;Ue.Document=OP.Document;Ue.Schema=LP.Schema;Ue.YAMLError=Lf.YAMLError;Ue.YAMLParseError=Lf.YAMLParseError;Ue.YAMLWarning=Lf.YAMLWarning;Ue.Alias=RP.Alias;Ue.isAlias=Qr.isAlias;Ue.isCollection=Qr.isCollection;Ue.isDocument=Qr.isDocument;Ue.isMap=Qr.isMap;Ue.isNode=Qr.isNode;Ue.isPair=Qr.isPair;Ue.isScalar=Qr.isScalar;Ue.isSeq=Qr.isSeq;Ue.Pair=IP.Pair;Ue.Scalar=MP.Scalar;Ue.YAMLMap=DP.YAMLMap;Ue.YAMLSeq=FP.YAMLSeq;Ue.CST=qP;Ue.Lexer=VP.Lexer;Ue.LineCounter=KP.LineCounter;Ue.Parser=UP.Parser;Ue.parse=Rl.parse;Ue.parseAllDocuments=Rl.parseAllDocuments;Ue.parseDocument=Rl.parseDocument;Ue.stringify=Rl.stringify;Ue.visit=Wv.visit;Ue.visitAsync=Wv.visitAsync});import{Command as zK}from"commander";import{readFileSync as YK}from"fs";import{fileURLToPath as GK}from"url";import{dirname as JK,join as XK}from"path";import{existsSync as P2,readFileSync as T2,statSync as O2}from"fs";import{resolve as L2,dirname as DS,relative as FS,sep as qS}from"path";var Cc=["dependency","link"];function it(t){return t.mode==="link"}function jc(t){let e=new Set;for(let[n,r]of Object.entries(t.metadata?.imports??{}))for(let a of r)it(a)&&e.add(`${n}/${a.packageName}`);return e}var we=(t=>(t[t.Exact=0]="Exact",t[t.Compatible=1]="Compatible",t[t.Major=2]="Major",t[t.Any=3]="Any",t))(we||{});function Pc(t,e="A version operator"){switch(t){case"=":return we.Exact;case"~":return we.Compatible;case"^":return we.Major;case"*":return we.Any;default:throw new Error(`${e} is ${JSON.stringify(t)}, which isn't one of the protocol's four version operators: *, ~, ^ and =.`)}}function Dt(t){switch(t){case we.Exact:return"=";case we.Compatible:return"~";case we.Major:return"^";case we.Any:return"*";default:throw new Error(`${JSON.stringify(t)} isn't a VersionOperator.`)}}function _e(t,e){return t.major!==e.major?t.major-e.major:t.minor!==e.minor?t.minor-e.minor:t.patch-e.patch}function Sn(t,e){return t.major===e.major&&t.minor===e.minor&&t.patch===e.patch}function ee(t){return`${t.major}.${t.minor}.${t.patch}`}function fr(t,e,n){let r=`${t}.${e}.${n}`;return{major:t,minor:e,patch:n,toString:()=>r,equals:a=>a?.major===t&&a?.minor===e&&a?.patch===n,getHashCode:()=>t<<20|e<<10|n,compareTo:a=>t!==a.major?t-a.major:e!==a.minor?e-a.minor:n-a.patch}}var Ex=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function At(t){let e=Ex.exec(t);return e?fr(Number(e[1]),Number(e[2]),Number(e[3])):null}function zt(t,e){let n=typeof t=="string"?At(t):null;if(!n)throw new Error(`${e} is ${JSON.stringify(t)}, which isn't a MAJOR.MINOR.PATCH version: three non-negative integers with no leading zero, such as 1.2.0.`);return n}function no(t,e){return _e(t,e)>=0&&t.major===e.major&&t.minor===e.minor}function Oh(t,e){return e.major===0?_e(t,e)>=0&&t.major===0&&t.minor===e.minor:_e(t,e)>=0&&t.major===e.major}function on(t,e){switch(e.versionOperator){case we.Exact:return Sn(t,e.version);case we.Compatible:return no(t,e.version);case we.Major:return Oh(t,e.version);case we.Any:return _e(t,e.minVersion)>=0;default:return!1}}function Ra(t,e,n){let r=Array.isArray(n)?n:[n],a;for(let s of t){let i=e(s);r.every(o=>on(i,o))&&(a===void 0||_e(i,e(a))>0)&&(a=s)}return a}function dr(t,e={}){let{requestedVersion:n}=e;if(t.length===0)return{chosen:null,alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!!n};if(n){let a=t.find(s=>{let i=s.metadata.namespace_?.version;return!!i&&ee(i)===n});return a?{chosen:a,alternatives:t.filter(s=>s!==a),multipleVersionsPresent:t.length>1,exactRequestedVersionMissing:!1}:{chosen:null,alternatives:t,multipleVersionsPresent:t.length>1,exactRequestedVersionMissing:!0}}if(t.length===1)return{chosen:t[0],alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!1};let r=[...t].sort((a,s)=>{let i=a.metadata.namespace_?.version,o=s.metadata.namespace_?.version;return!i&&!o?0:i?o?_e(o,i):-1:1});return{chosen:r[0],alternatives:r.slice(1),multipleVersionsPresent:!0,exactRequestedVersionMissing:!1}}var rt=class Nc{constructor(e,n,r,a){this.publisher=e,this.package_=n,this.name=r,this.version=a}publisher;package_;name;version;static parse(e){if(!e||e.trim().length===0)throw new Error("Kanonak URI string cannot be null or empty");let n=e.split("/");if(n.length!==3)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let[r,a,s]=n;if(!r||!a||!s)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let i=a.indexOf("@");if(i===-1)return new Nc(r,a,s,void 0);let o=a.substring(0,i),l=a.substring(i+1);if(!o||!l)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let c=l.split(".").map(Number),u=_x(c[0]||0,c[1]||0,c[2]||0);return new Nc(r,o,s,u)}toString(){return this.version?`${this.publisher}/${this.package_}@${this.version.major}.${this.version.minor}.${this.version.patch}/${this.name}`:`${this.publisher}/${this.package_}/${this.name}`}};function _x(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 An(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 s=a.indexOf("@");if(s===-1)return{kind:"package",publisher:r,package_:a};let i=a.substring(0,s),o=a.substring(s+1);if(!i||!o)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let l=zt(o,`The Kanonak address "${t}"'s version`);return{kind:"package",publisher:r,package_:i,version:l}}return{kind:"resource",uri:rt.parse(e)}}function Cx(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Yt={},ro={},Rr={},Lh;function Cs(){if(Lh)return Rr;Lh=1;function t(i){return typeof i>"u"||i===null}function e(i){return typeof i=="object"&&i!==null}function n(i){return Array.isArray(i)?i:t(i)?[]:[i]}function r(i,o){if(o){let l=Object.keys(o);for(let c=0,u=l.length;c<u;c+=1){let p=l[c];i[p]=o[p]}}return i}function a(i,o){let l="";for(let c=0;c<o;c+=1)l+=i;return l}function s(i){return i===0&&Number.NEGATIVE_INFINITY===1/i}return Rr.isNothing=t,Rr.isObject=e,Rr.toArray=n,Rr.repeat=a,Rr.isNegativeZero=s,Rr.extend=r,Rr}var Tc,Rh;function js(){if(Rh)return Tc;Rh=1;function t(n,r){let a="",s=n.reason||"(unknown reason)";return n.mark?(n.mark.name&&(a+='in "'+n.mark.name+'" '),a+="("+(n.mark.line+1)+":"+(n.mark.column+1)+")",!r&&n.mark.snippet&&(a+=`
|
|
141
|
+
`,n)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let n=Ll(e),r=ss(n);return r.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=Ll(e),r=ss(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,n){return this.type!=="comment"||this.indent<=n?!1:e.every(r=>r.type==="newline"||r.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Uv.Parser=Lf});var Yv=re(Ei=>{"use strict";var Bv=wf(),EP=yi(),xi=vi(),_P=kp(),CP=Me(),jP=Of(),Hv=Rf();function Wv(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new jP.LineCounter||null,prettyErrors:e}}function NP(t,e={}){let{lineCounter:n,prettyErrors:r}=Wv(e),a=new Hv.Parser(n?.addNewLine),s=new Bv.Composer(e),i=Array.from(s.compose(a.parse(t)));if(r&&n)for(let o of i)o.errors.forEach(xi.prettifyError(t,n)),o.warnings.forEach(xi.prettifyError(t,n));return i.length>0?i:Object.assign([],{empty:!0},s.streamInfo())}function zv(t,e={}){let{lineCounter:n,prettyErrors:r}=Wv(e),a=new Hv.Parser(n?.addNewLine),s=new Bv.Composer(e),i=null;for(let o of s.compose(a.parse(t),!0,t.length))if(!i)i=o;else if(i.options.logLevel!=="silent"){i.errors.push(new xi.YAMLParseError(o.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&n&&(i.errors.forEach(xi.prettifyError(t,n)),i.warnings.forEach(xi.prettifyError(t,n))),i}function PP(t,e,n){let r;typeof e=="function"?r=e:n===void 0&&e&&typeof e=="object"&&(n=e);let a=zv(t,n);if(!a)return null;if(a.warnings.forEach(s=>_P.warn(a.options.logLevel,s)),a.errors.length>0){if(a.options.logLevel!=="silent")throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function TP(t,e,n){let r=null;if(typeof e=="function"||Array.isArray(e)?r=e:n===void 0&&e&&(n=e),typeof n=="string"&&(n=n.length),typeof n=="number"){let a=Math.round(n);n=a<1?void 0:a>8?{indent:8}:{indent:a}}if(t===void 0){let{keepUndefined:a}=n??e??{};if(!a)return}return CP.isDocument(t)&&!r?t.toString(n):new EP.Document(t,r,n).toString(n)}Ei.parse=PP;Ei.parseAllDocuments=NP;Ei.parseDocument=zv;Ei.stringify=TP});var Jv=re(Ue=>{"use strict";var OP=wf(),LP=yi(),RP=ef(),If=vi(),IP=ti(),Zr=Me(),MP=Yr(),DP=$t(),FP=Jr(),VP=Xr(),qP=Tl(),KP=Pf(),UP=Of(),BP=Rf(),Il=Yv(),Gv=Xs();Ue.Composer=OP.Composer;Ue.Document=LP.Document;Ue.Schema=RP.Schema;Ue.YAMLError=If.YAMLError;Ue.YAMLParseError=If.YAMLParseError;Ue.YAMLWarning=If.YAMLWarning;Ue.Alias=IP.Alias;Ue.isAlias=Zr.isAlias;Ue.isCollection=Zr.isCollection;Ue.isDocument=Zr.isDocument;Ue.isMap=Zr.isMap;Ue.isNode=Zr.isNode;Ue.isPair=Zr.isPair;Ue.isScalar=Zr.isScalar;Ue.isSeq=Zr.isSeq;Ue.Pair=MP.Pair;Ue.Scalar=DP.Scalar;Ue.YAMLMap=FP.YAMLMap;Ue.YAMLSeq=VP.YAMLSeq;Ue.CST=qP;Ue.Lexer=KP.Lexer;Ue.LineCounter=UP.LineCounter;Ue.Parser=BP.Parser;Ue.parse=Il.parse;Ue.parseAllDocuments=Il.parseAllDocuments;Ue.parseDocument=Il.parseDocument;Ue.stringify=Il.stringify;Ue.visit=Gv.visit;Ue.visitAsync=Gv.visitAsync});import{Command as GK}from"commander";import{readFileSync as JK}from"fs";import{fileURLToPath as XK}from"url";import{dirname as QK,join as ZK}from"path";import{existsSync as T2,readFileSync as O2,statSync as L2}from"fs";import{resolve as R2,dirname as qS,relative as KS,sep as US}from"path";var Nc=["dependency","link"];function it(t){return t.mode==="link"}function Pc(t){let e=new Set;for(let[n,r]of Object.entries(t.metadata?.imports??{}))for(let a of r)it(a)&&e.add(`${n}/${a.packageName}`);return e}var we=(t=>(t[t.Exact=0]="Exact",t[t.Compatible=1]="Compatible",t[t.Major=2]="Major",t[t.Any=3]="Any",t))(we||{});function Oc(t,e="A version operator"){switch(t){case"=":return we.Exact;case"~":return we.Compatible;case"^":return we.Major;case"*":return we.Any;default:throw new Error(`${e} is ${JSON.stringify(t)}, which isn't one of the protocol's four version operators: *, ~, ^ and =.`)}}function Ft(t){switch(t){case we.Exact:return"=";case we.Compatible:return"~";case we.Major:return"^";case we.Any:return"*";default:throw new Error(`${JSON.stringify(t)} isn't a VersionOperator.`)}}function _e(t,e){return t.major!==e.major?t.major-e.major:t.minor!==e.minor?t.minor-e.minor:t.patch-e.patch}function Sn(t,e){return t.major===e.major&&t.minor===e.minor&&t.patch===e.patch}function ee(t){return`${t.major}.${t.minor}.${t.patch}`}function Ln(t,e,n){let r=`${t}.${e}.${n}`;return{major:t,minor:e,patch:n,toString:()=>r,equals:a=>a?.major===t&&a?.minor===e&&a?.patch===n,getHashCode:()=>t<<20|e<<10|n,compareTo:a=>t!==a.major?t-a.major:e!==a.minor?e-a.minor:n-a.patch}}var Cx=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;function At(t){let e=Cx.exec(t);return e?Ln(Number(e[1]),Number(e[2]),Number(e[3])):null}function Lt(t,e){let n=typeof t=="string"?At(t):null;if(!n)throw new Error(`${e} is ${JSON.stringify(t)}, which isn't a MAJOR.MINOR.PATCH version: three non-negative integers with no leading zero, such as 1.2.0.`);return n}function no(t,e){return _e(t,e)>=0&&t.major===e.major&&t.minor===e.minor}function Ih(t,e){return e.major===0?_e(t,e)>=0&&t.major===0&&t.minor===e.minor:_e(t,e)>=0&&t.major===e.major}function on(t,e){switch(e.versionOperator){case we.Exact:return Sn(t,e.version);case we.Compatible:return no(t,e.version);case we.Major:return Ih(t,e.version);case we.Any:return _e(t,e.minVersion)>=0;default:return!1}}function Ra(t,e,n){let r=Array.isArray(n)?n:[n],a;for(let s of t){let i=e(s);r.every(o=>on(i,o))&&(a===void 0||_e(i,e(a))>0)&&(a=s)}return a}function hr(t,e={}){let{requestedVersion:n}=e;if(t.length===0)return{chosen:null,alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!!n};if(n){let a=t.find(s=>{let i=s.metadata.namespace_?.version;return!!i&&ee(i)===n});return a?{chosen:a,alternatives:t.filter(s=>s!==a),multipleVersionsPresent:t.length>1,exactRequestedVersionMissing:!1}:{chosen:null,alternatives:t,multipleVersionsPresent:t.length>1,exactRequestedVersionMissing:!0}}if(t.length===1)return{chosen:t[0],alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!1};let r=[...t].sort((a,s)=>{let i=a.metadata.namespace_?.version,o=s.metadata.namespace_?.version;return!i&&!o?0:i?o?_e(o,i):-1:1});return{chosen:r[0],alternatives:r.slice(1),multipleVersionsPresent:!0,exactRequestedVersionMissing:!1}}var rt=class Tc{constructor(e,n,r,a){this.publisher=e,this.package_=n,this.name=r,this.version=a}publisher;package_;name;version;static parse(e){if(!e||e.trim().length===0)throw new Error("Kanonak URI string cannot be null or empty");let n=e.split("/");if(n.length!==3)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let[r,a,s]=n;if(!r||!a||!s)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let i=a.indexOf("@");if(i===-1)return new Tc(r,a,s,void 0);let o=a.substring(0,i),l=a.substring(i+1);if(!o||!l)throw new Error(`Invalid Kanonak URI: ${e}. Expected format: publisher/package[@version]/name`);let c=l.split(".").map(Number),u=jx(c[0]||0,c[1]||0,c[2]||0);return new Tc(r,o,s,u)}toString(){return this.version?`${this.publisher}/${this.package_}@${this.version.major}.${this.version.minor}.${this.version.patch}/${this.name}`:`${this.publisher}/${this.package_}/${this.name}`}};function jx(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 An(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 s=a.indexOf("@");if(s===-1)return{kind:"package",publisher:r,package_:a};let i=a.substring(0,s),o=a.substring(s+1);if(!i||!o)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let l=Lt(o,`The Kanonak address "${t}"'s version`);return{kind:"package",publisher:r,package_:i,version:l}}return{kind:"resource",uri:rt.parse(e)}}function Nx(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Yt={},ro={},Ir={},Mh;function Cs(){if(Mh)return Ir;Mh=1;function t(i){return typeof i>"u"||i===null}function e(i){return typeof i=="object"&&i!==null}function n(i){return Array.isArray(i)?i:t(i)?[]:[i]}function r(i,o){if(o){let l=Object.keys(o);for(let c=0,u=l.length;c<u;c+=1){let p=l[c];i[p]=o[p]}}return i}function a(i,o){let l="";for(let c=0;c<o;c+=1)l+=i;return l}function s(i){return i===0&&Number.NEGATIVE_INFINITY===1/i}return Ir.isNothing=t,Ir.isObject=e,Ir.toArray=n,Ir.repeat=a,Ir.isNegativeZero=s,Ir.extend=r,Ir}var Lc,Dh;function js(){if(Dh)return Lc;Dh=1;function t(n,r){let a="",s=n.reason||"(unknown reason)";return n.mark?(n.mark.name&&(a+='in "'+n.mark.name+'" '),a+="("+(n.mark.line+1)+":"+(n.mark.column+1)+")",!r&&n.mark.snippet&&(a+=`
|
|
142
142
|
|
|
143
|
-
`+n.mark.snippet),s+" "+a):s}function e(n,r){Error.call(this),this.name="YAMLException",this.reason=n,this.mark=r,this.message=t(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e.prototype.toString=function(r){return this.name+": "+t(this,r)},
|
|
143
|
+
`+n.mark.snippet),s+" "+a):s}function e(n,r){Error.call(this),this.name="YAMLException",this.reason=n,this.mark=r,this.message=t(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e.prototype.toString=function(r){return this.name+": "+t(this,r)},Lc=e,Lc}var Rc,Fh;function Px(){if(Fh)return Rc;Fh=1;let t=Cs();function e(a,s,i,o,l){let c="",u="",p=Math.floor(l/2)-1;return o-s>p&&(c=" ... ",s=o-p+c.length),i-o>p&&(u=" ...",i=o+p-u.length),{str:c+a.slice(s,i).replace(/\t/g,"\u2192")+u,pos:o-s+c.length}}function n(a,s){return t.repeat(" ",s-a.length)+a}function r(a,s){if(s=Object.create(s||null),!a.buffer)return null;s.maxLength||(s.maxLength=79),typeof s.indent!="number"&&(s.indent=1),typeof s.linesBefore!="number"&&(s.linesBefore=3),typeof s.linesAfter!="number"&&(s.linesAfter=2);let i=/\r?\n|\r|\0/g,o=[0],l=[],c,u=-1;for(;c=i.exec(a.buffer);)l.push(c.index),o.push(c.index+c[0].length),a.position<=c.index&&u<0&&(u=o.length-2);u<0&&(u=o.length-1);let p="",f=Math.min(a.line+s.linesAfter,l.length).toString().length,h=s.maxLength-(s.indent+f+3);for(let m=1;m<=s.linesBefore&&!(u-m<0);m++){let y=e(a.buffer,o[u-m],l[u-m],a.position-(o[u]-o[u-m]),h);p=t.repeat(" ",s.indent)+n((a.line-m+1).toString(),f)+" | "+y.str+`
|
|
144
144
|
`+p}let g=e(a.buffer,o[u],l[u],a.position,h);p+=t.repeat(" ",s.indent)+n((a.line+1).toString(),f)+" | "+g.str+`
|
|
145
145
|
`,p+=t.repeat("-",s.indent+f+3+g.pos)+`^
|
|
146
146
|
`;for(let m=1;m<=s.linesAfter&&!(u+m>=l.length);m++){let y=e(a.buffer,o[u+m],l[u+m],a.position-(o[u]-o[u+m]),h);p+=t.repeat(" ",s.indent)+n((a.line+m+1).toString(),f)+" | "+y.str+`
|
|
147
|
-
`}return p.replace(/\n$/,"")}return
|
|
148
|
-
\r`;function n(i){if(i===null)return!1;let o=0,l=i.length,c=e;for(let u=0;u<l;u++){let p=c.indexOf(i.charAt(u));if(!(p>64)){if(p<0)return!1;o+=6}}return o%8===0}function r(i){let o=i.replace(/[\r\n=]/g,""),l=o.length,c=e,u=0,p=[];for(let h=0;h<l;h++)h%4===0&&h&&(p.push(u>>16&255),p.push(u>>8&255),p.push(u&255)),u=u<<6|c.indexOf(o.charAt(h));let f=l%4*6;return f===0?(p.push(u>>16&255),p.push(u>>8&255),p.push(u&255)):f===18?(p.push(u>>10&255),p.push(u>>2&255)):f===12&&p.push(u>>4&255),new Uint8Array(p)}function a(i){let o="",l=0,c=i.length,u=e;for(let f=0;f<c;f++)f%3===0&&f&&(o+=u[l>>18&63],o+=u[l>>12&63],o+=u[l>>6&63],o+=u[l&63]),l=(l<<8)+i[f];let p=c%3;return p===0?(o+=u[l>>18&63],o+=u[l>>12&63],o+=u[l>>6&63],o+=u[l&63]):p===2?(o+=u[l>>10&63],o+=u[l>>4&63],o+=u[l<<2&63],o+=u[64]):p===1&&(o+=u[l>>2&63],o+=u[l<<4&63],o+=u[64],o+=u[64]),o}function s(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}return
|
|
149
|
-
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"\x85";case 95:return"\xA0";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function X(d){return d<=65535?String.fromCharCode(d):String.fromCharCode((d-65536>>10)+55296,(d-65536&1023)+56320)}function pe(d,j,F){j==="__proto__"?Object.defineProperty(d,j,{configurable:!0,enumerable:!0,writable:!0,value:F}):d[j]=F}let J=new Array(256),Q=new Array(256);for(let d=0;d<256;d++)J[d]=B(d)?1:0,Q[d]=B(d);function H(d,j){this.input=d,this.filename=j.filename||null,this.schema=j.schema||r,this.onWarning=j.onWarning||null,this.legacy=j.legacy||!1,this.json=j.json||!1,this.listener=j.listener||null,this.maxDepth=typeof j.maxDepth=="number"?j.maxDepth:100,this.maxTotalMergeKeys=typeof j.maxTotalMergeKeys=="number"?j.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=d.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function K(d,j){let F={name:d.filename,buffer:d.input.slice(0,-1),position:d.position,line:d.line,column:d.position-d.lineStart};return F.snippet=n(F),new e(j,F)}function E(d,j){throw K(d,j)}function U(d,j){d.onWarning&&d.onWarning.call(null,K(d,j))}function R(d,j,F){let
|
|
150
|
-
`,j-1))}function
|
|
151
|
-
`,I?1+L:L):
|
|
147
|
+
`}return p.replace(/\n$/,"")}return Rc=r,Rc}var Ic,Vh;function tn(){if(Vh)return Ic;Vh=1;let t=js(),e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],n=["scalar","sequence","mapping"];function r(s){let i={};return s!==null&&Object.keys(s).forEach(function(o){s[o].forEach(function(l){i[String(l)]=o})}),i}function a(s,i){if(i=i||{},Object.keys(i).forEach(function(o){if(e.indexOf(o)===-1)throw new t('Unknown option "'+o+'" is met in definition of "'+s+'" YAML type.')}),this.options=i,this.tag=s,this.kind=i.kind||null,this.resolve=i.resolve||function(){return!0},this.construct=i.construct||function(o){return o},this.instanceOf=i.instanceOf||null,this.predicate=i.predicate||null,this.represent=i.represent||null,this.representName=i.representName||null,this.defaultStyle=i.defaultStyle||null,this.multi=i.multi||!1,this.styleAliases=r(i.styleAliases||null),n.indexOf(this.kind)===-1)throw new t('Unknown kind "'+this.kind+'" is specified for "'+s+'" YAML type.')}return Ic=a,Ic}var Mc,qh;function lm(){if(qh)return Mc;qh=1;let t=js(),e=tn();function n(s,i){let o=[];return s[i].forEach(function(l){let c=o.length;o.forEach(function(u,p){u.tag===l.tag&&u.kind===l.kind&&u.multi===l.multi&&(c=p)}),o[c]=l}),o}function r(){let s={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(o){o.multi?(s.multi[o.kind].push(o),s.multi.fallback.push(o)):s[o.kind][o.tag]=s.fallback[o.tag]=o}for(let o=0,l=arguments.length;o<l;o+=1)arguments[o].forEach(i);return s}function a(s){return this.extend(s)}return a.prototype.extend=function(i){let o=[],l=[];if(i instanceof e)l.push(i);else if(Array.isArray(i))l=l.concat(i);else if(i&&(Array.isArray(i.implicit)||Array.isArray(i.explicit)))i.implicit&&(o=o.concat(i.implicit)),i.explicit&&(l=l.concat(i.explicit));else throw new t("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");o.forEach(function(u){if(!(u instanceof e))throw new t("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(u.loadKind&&u.loadKind!=="scalar")throw new t("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(u.multi)throw new t("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),l.forEach(function(u){if(!(u instanceof e))throw new t("Specified list of YAML types (or a single Type object) contains a non-Type object.")});let c=Object.create(a.prototype);return c.implicit=(this.implicit||[]).concat(o),c.explicit=(this.explicit||[]).concat(l),c.compiledImplicit=n(c,"implicit"),c.compiledExplicit=n(c,"explicit"),c.compiledTypeMap=r(c.compiledImplicit,c.compiledExplicit),c},Mc=a,Mc}var Dc,Kh;function cm(){if(Kh)return Dc;Kh=1;let t=tn();return Dc=new t("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),Dc}var Fc,Uh;function um(){if(Uh)return Fc;Uh=1;let t=tn();return Fc=new t("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),Fc}var Vc,Bh;function pm(){if(Bh)return Vc;Bh=1;let t=tn();return Vc=new t("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),Vc}var qc,Hh;function fm(){if(Hh)return qc;Hh=1;let t=lm();return qc=new t({explicit:[cm(),um(),pm()]}),qc}var Kc,Wh;function dm(){if(Wh)return Kc;Wh=1;let t=tn();function e(a){if(a===null)return!0;let s=a.length;return s===1&&a==="~"||s===4&&(a==="null"||a==="Null"||a==="NULL")}function n(){return null}function r(a){return a===null}return Kc=new t("tag:yaml.org,2002:null",{kind:"scalar",resolve:e,construct:n,predicate:r,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"}),Kc}var Uc,zh;function hm(){if(zh)return Uc;zh=1;let t=tn();function e(a){if(a===null)return!1;let s=a.length;return s===4&&(a==="true"||a==="True"||a==="TRUE")||s===5&&(a==="false"||a==="False"||a==="FALSE")}function n(a){return a==="true"||a==="True"||a==="TRUE"}function r(a){return Object.prototype.toString.call(a)==="[object Boolean]"}return Uc=new t("tag:yaml.org,2002:bool",{kind:"scalar",resolve:e,construct:n,predicate:r,represent:{lowercase:function(a){return a?"true":"false"},uppercase:function(a){return a?"TRUE":"FALSE"},camelcase:function(a){return a?"True":"False"}},defaultStyle:"lowercase"}),Uc}var Bc,Yh;function mm(){if(Yh)return Bc;Yh=1;let t=Cs(),e=tn();function n(c){return c>=48&&c<=57||c>=65&&c<=70||c>=97&&c<=102}function r(c){return c>=48&&c<=55}function a(c){return c>=48&&c<=57}function s(c){if(c===null)return!1;let u=c.length,p=0,f=!1;if(!u)return!1;let h=c[p];if((h==="-"||h==="+")&&(h=c[++p]),h==="0"){if(p+1===u)return!0;if(h=c[++p],h==="b"){for(p++;p<u;p++){if(h=c[p],h!=="0"&&h!=="1")return!1;f=!0}return f&&isFinite(i(c))}if(h==="x"){for(p++;p<u;p++){if(!n(c.charCodeAt(p)))return!1;f=!0}return f&&isFinite(i(c))}if(h==="o"){for(p++;p<u;p++){if(!r(c.charCodeAt(p)))return!1;f=!0}return f&&isFinite(i(c))}}for(;p<u;p++){if(!a(c.charCodeAt(p)))return!1;f=!0}return f?isFinite(i(c)):!1}function i(c){let u=c,p=1,f=u[0];if((f==="-"||f==="+")&&(f==="-"&&(p=-1),u=u.slice(1),f=u[0]),u==="0")return 0;if(f==="0"){if(u[1]==="b")return p*parseInt(u.slice(2),2);if(u[1]==="x")return p*parseInt(u.slice(2),16);if(u[1]==="o")return p*parseInt(u.slice(2),8)}return p*parseInt(u,10)}function o(c){return i(c)}function l(c){return Object.prototype.toString.call(c)==="[object Number]"&&c%1===0&&!t.isNegativeZero(c)}return Bc=new e("tag:yaml.org,2002:int",{kind:"scalar",resolve:s,construct:o,predicate:l,represent:{binary:function(c){return c>=0?"0b"+c.toString(2):"-0b"+c.toString(2).slice(1)},octal:function(c){return c>=0?"0o"+c.toString(8):"-0o"+c.toString(8).slice(1)},decimal:function(c){return c.toString(10)},hexadecimal:function(c){return c>=0?"0x"+c.toString(16).toUpperCase():"-0x"+c.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Bc}var Hc,Gh;function gm(){if(Gh)return Hc;Gh=1;let t=Cs(),e=tn(),n=new RegExp("^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),r=new RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function a(c){return c===null||!n.test(c)?!1:isFinite(parseFloat(c,10))?!0:r.test(c)}function s(c){let u=c.toLowerCase(),p=u[0]==="-"?-1:1;return"+-".indexOf(u[0])>=0&&(u=u.slice(1)),u===".inf"?p===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:u===".nan"?NaN:p*parseFloat(u,10)}let i=/^[-+]?[0-9]+e/;function o(c,u){if(isNaN(c))switch(u){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===c)switch(u){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===c)switch(u){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(t.isNegativeZero(c))return"-0.0";let p=c.toString(10);return i.test(p)?p.replace("e",".e"):p}function l(c){return Object.prototype.toString.call(c)==="[object Number]"&&(c%1!==0||t.isNegativeZero(c))}return Hc=new e("tag:yaml.org,2002:float",{kind:"scalar",resolve:a,construct:s,predicate:l,represent:o,defaultStyle:"lowercase"}),Hc}var Wc,Jh;function ym(){return Jh||(Jh=1,Wc=fm().extend({implicit:[dm(),hm(),mm(),gm()]})),Wc}var zc,Xh;function km(){return Xh||(Xh=1,zc=ym()),zc}var Yc,Qh;function bm(){if(Qh)return Yc;Qh=1;let t=tn(),e=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),n=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function r(i){return i===null?!1:e.exec(i)!==null||n.exec(i)!==null}function a(i){let o=0,l=null,c=e.exec(i);if(c===null&&(c=n.exec(i)),c===null)throw new Error("Date resolve error");let u=+c[1],p=+c[2]-1,f=+c[3];if(!c[4])return new Date(Date.UTC(u,p,f));let h=+c[4],g=+c[5],m=+c[6];if(c[7]){for(o=c[7].slice(0,3);o.length<3;)o+="0";o=+o}if(c[9]){let v=+c[10],k=+(c[11]||0);l=(v*60+k)*6e4,c[9]==="-"&&(l=-l)}let y=new Date(Date.UTC(u,p,f,h,g,m,o));return l&&y.setTime(y.getTime()-l),y}function s(i){return i.toISOString()}return Yc=new t("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:r,construct:a,instanceOf:Date,represent:s}),Yc}var Gc,Zh;function vm(){if(Zh)return Gc;Zh=1;let t=tn();function e(n){return n==="<<"||n===null}return Gc=new t("tag:yaml.org,2002:merge",{kind:"scalar",resolve:e}),Gc}var Jc,em;function wm(){if(em)return Jc;em=1;let t=tn(),e=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
148
|
+
\r`;function n(i){if(i===null)return!1;let o=0,l=i.length,c=e;for(let u=0;u<l;u++){let p=c.indexOf(i.charAt(u));if(!(p>64)){if(p<0)return!1;o+=6}}return o%8===0}function r(i){let o=i.replace(/[\r\n=]/g,""),l=o.length,c=e,u=0,p=[];for(let h=0;h<l;h++)h%4===0&&h&&(p.push(u>>16&255),p.push(u>>8&255),p.push(u&255)),u=u<<6|c.indexOf(o.charAt(h));let f=l%4*6;return f===0?(p.push(u>>16&255),p.push(u>>8&255),p.push(u&255)):f===18?(p.push(u>>10&255),p.push(u>>2&255)):f===12&&p.push(u>>4&255),new Uint8Array(p)}function a(i){let o="",l=0,c=i.length,u=e;for(let f=0;f<c;f++)f%3===0&&f&&(o+=u[l>>18&63],o+=u[l>>12&63],o+=u[l>>6&63],o+=u[l&63]),l=(l<<8)+i[f];let p=c%3;return p===0?(o+=u[l>>18&63],o+=u[l>>12&63],o+=u[l>>6&63],o+=u[l&63]):p===2?(o+=u[l>>10&63],o+=u[l>>4&63],o+=u[l<<2&63],o+=u[64]):p===1&&(o+=u[l>>2&63],o+=u[l<<4&63],o+=u[64],o+=u[64]),o}function s(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}return Jc=new t("tag:yaml.org,2002:binary",{kind:"scalar",resolve:n,construct:r,predicate:s,represent:a}),Jc}var Xc,tm;function $m(){if(tm)return Xc;tm=1;let t=tn(),e=Object.prototype.hasOwnProperty,n=Object.prototype.toString;function r(s){if(s===null)return!0;let i={},o=s;for(let l=0,c=o.length;l<c;l+=1){let u=o[l],p=!1;if(n.call(u)!=="[object Object]")return!1;let f;for(f in u)if(e.call(u,f))if(!p)p=!0;else return!1;if(!p||e.call(i,f))return!1;Object.defineProperty(i,f,{value:!0})}return!0}function a(s){return s!==null?s:[]}return Xc=new t("tag:yaml.org,2002:omap",{kind:"sequence",resolve:r,construct:a}),Xc}var Qc,nm;function Sm(){if(nm)return Qc;nm=1;let t=tn(),e=Object.prototype.toString;function n(a){if(a===null)return!0;let s=a,i=new Array(s.length);for(let o=0,l=s.length;o<l;o+=1){let c=s[o];if(e.call(c)!=="[object Object]")return!1;let u=Object.keys(c);if(u.length!==1)return!1;i[o]=[u[0],c[u[0]]]}return!0}function r(a){if(a===null)return[];let s=a,i=new Array(s.length);for(let o=0,l=s.length;o<l;o+=1){let c=s[o],u=Object.keys(c);i[o]=[u[0],c[u[0]]]}return i}return Qc=new t("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:n,construct:r}),Qc}var Zc,rm;function Am(){if(rm)return Zc;rm=1;let t=tn(),e=Object.prototype.hasOwnProperty;function n(a){if(a===null)return!0;let s=a;for(let i in s)if(e.call(s,i)&&s[i]!==null)return!1;return!0}function r(a){return a!==null?a:{}}return Zc=new t("tag:yaml.org,2002:set",{kind:"mapping",resolve:n,construct:r}),Zc}var eu,am;function nu(){return am||(am=1,eu=km().extend({implicit:[bm(),vm()],explicit:[wm(),$m(),Sm(),Am()]})),eu}var sm;function Tx(){if(sm)return ro;sm=1;let t=Cs(),e=js(),n=Px(),r=nu(),a=Object.prototype.hasOwnProperty,s=1,i=2,o=3,l=4,c=1,u=2,p=3,f=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,h=/[\x85\u2028\u2029]/,g=/[,\[\]{}]/,m=/^(?:!|!!|![0-9A-Za-z-]+!)$/,y=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function v(d){return Object.prototype.toString.call(d)}function k(d){return d===10||d===13}function w(d){return d===9||d===32}function S(d){return d===9||d===32||d===10||d===13}function A(d){return d===44||d===91||d===93||d===123||d===125}function C(d){if(d>=48&&d<=57)return d-48;let j=d|32;return j>=97&&j<=102?j-97+10:-1}function N(d){return d===120?2:d===117?4:d===85?8:0}function _(d){return d>=48&&d<=57?d-48:-1}function B(d){switch(d){case 48:return"\0";case 97:return"\x07";case 98:return"\b";case 116:return" ";case 9:return" ";case 110:return`
|
|
149
|
+
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"\x85";case 95:return"\xA0";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function X(d){return d<=65535?String.fromCharCode(d):String.fromCharCode((d-65536>>10)+55296,(d-65536&1023)+56320)}function pe(d,j,F){j==="__proto__"?Object.defineProperty(d,j,{configurable:!0,enumerable:!0,writable:!0,value:F}):d[j]=F}let J=new Array(256),Q=new Array(256);for(let d=0;d<256;d++)J[d]=B(d)?1:0,Q[d]=B(d);function H(d,j){this.input=d,this.filename=j.filename||null,this.schema=j.schema||r,this.onWarning=j.onWarning||null,this.legacy=j.legacy||!1,this.json=j.json||!1,this.listener=j.listener||null,this.maxDepth=typeof j.maxDepth=="number"?j.maxDepth:100,this.maxTotalMergeKeys=typeof j.maxTotalMergeKeys=="number"?j.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=d.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function K(d,j){let F={name:d.filename,buffer:d.input.slice(0,-1),position:d.position,line:d.line,column:d.position-d.lineStart};return F.snippet=n(F),new e(j,F)}function E(d,j){throw K(d,j)}function U(d,j){d.onWarning&&d.onWarning.call(null,K(d,j))}function R(d,j,F){let q=d.anchorMapTransactions;if(q.length!==0){let I=q[q.length-1];a.call(I,j)||(I[j]={existed:a.call(d.anchorMap,j),value:d.anchorMap[j]})}d.anchorMap[j]=F}function ce(d){d.anchorMapTransactions.push(Object.create(null))}function ae(d){let j=d.anchorMapTransactions.pop(),F=d.anchorMapTransactions;if(F.length===0)return;let q=F[F.length-1],I=Object.keys(j);for(let b=0,P=I.length;b<P;b+=1){let L=I[b];a.call(q,L)||(q[L]=j[L])}}function se(d){let j=d.anchorMapTransactions.pop(),F=Object.keys(j);for(let q=F.length-1;q>=0;q-=1){let I=j[F[q]];I.existed?d.anchorMap[F[q]]=I.value:delete d.anchorMap[F[q]]}}function Ne(d){return{position:d.position,line:d.line,lineStart:d.lineStart,lineIndent:d.lineIndent,firstTabInLine:d.firstTabInLine,tag:d.tag,anchor:d.anchor,kind:d.kind,result:d.result}}function qe(d,j){d.position=j.position,d.line=j.line,d.lineStart=j.lineStart,d.lineIndent=j.lineIndent,d.firstTabInLine=j.firstTabInLine,d.tag=j.tag,d.anchor=j.anchor,d.kind=j.kind,d.result=j.result}let Le={YAML:function(j,F,q){j.version!==null&&E(j,"duplication of %YAML directive"),q.length!==1&&E(j,"YAML directive accepts exactly one argument");let I=/^([0-9]+)\.([0-9]+)$/.exec(q[0]);I===null&&E(j,"ill-formed argument of the YAML directive");let b=parseInt(I[1],10),P=parseInt(I[2],10);b!==1&&E(j,"unacceptable YAML version of the document"),j.version=q[0],j.checkLineBreaks=P<2,P!==1&&P!==2&&U(j,"unsupported YAML version of the document")},TAG:function(j,F,q){let I;q.length!==2&&E(j,"TAG directive accepts exactly two arguments");let b=q[0];I=q[1],m.test(b)||E(j,"ill-formed tag handle (first argument) of the TAG directive"),a.call(j.tagMap,b)&&E(j,'there is a previously declared suffix for "'+b+'" tag handle'),y.test(I)||E(j,"ill-formed tag prefix (second argument) of the TAG directive");try{I=decodeURIComponent(I)}catch{E(j,"tag prefix is malformed: "+I)}j.tagMap[b]=I}};function Re(d,j,F,q){if(j<F){let I=d.input.slice(j,F);if(q)for(let b=0,P=I.length;b<P;b+=1){let L=I.charCodeAt(b);L===9||L>=32&&L<=1114111||E(d,"expected valid JSON character")}else f.test(I)&&E(d,"the stream contains non-printable characters");d.result+=I}}function Ke(d){d.totalMergeKeys++,d.maxTotalMergeKeys!==-1&&d.totalMergeKeys>d.maxTotalMergeKeys&&E(d,"merge keys exceeded maxTotalMergeKeys ("+d.maxTotalMergeKeys+")")}function We(d,j,F,q){t.isObject(F)||E(d,"cannot merge mappings; the provided source object is unacceptable"),Ke(d);let I=Object.keys(F);for(let b=0,P=I.length;b<P;b+=1){let L=I[b];Ke(d),a.call(j,L)||(pe(j,L,F[L]),q[L]=!0)}}function pt(d,j,F,q,I,b,P,L,W){if(Array.isArray(I)){I=Array.prototype.slice.call(I);for(let z=0,G=I.length;z<G;z+=1)Array.isArray(I[z])&&E(d,"nested arrays are not supported inside keys"),typeof I=="object"&&v(I[z])==="[object Object]"&&(I[z]="[object Object]")}if(typeof I=="object"&&v(I)==="[object Object]"&&(I="[object Object]"),I=String(I),j===null&&(j={}),q==="tag:yaml.org,2002:merge")if(Array.isArray(b)){b.length>100&&E(d,"abnormal merge sequence size");for(let z=0,G=b.length;z<G;z+=1)We(d,j,b[z],F)}else We(d,j,b,F);else!d.json&&!a.call(F,I)&&a.call(j,I)&&(d.line=P||d.line,d.lineStart=L||d.lineStart,d.position=W||d.position,E(d,"duplicated mapping key")),pe(j,I,b),delete F[I];return j}function yt(d){let j=d.input.charCodeAt(d.position);j===10?d.position++:j===13?(d.position++,d.input.charCodeAt(d.position)===10&&d.position++):E(d,"a line break is expected"),d.line+=1,d.lineStart=d.position,d.firstTabInLine=-1}function Te(d,j,F){let q=0,I=d.input.charCodeAt(d.position);for(;I!==0;){for(;w(I);)I===9&&d.firstTabInLine===-1&&(d.firstTabInLine=d.position),I=d.input.charCodeAt(++d.position);if(j&&I===35)do I=d.input.charCodeAt(++d.position);while(I!==10&&I!==13&&I!==0);if(k(I))for(yt(d),I=d.input.charCodeAt(d.position),q++,d.lineIndent=0;I===32;)d.lineIndent++,I=d.input.charCodeAt(++d.position);else break}return F!==-1&&q!==0&&d.lineIndent<F&&U(d,"deficient indentation"),q}function Ot(d){let j=d.position,F=d.input.charCodeAt(j);return!!((F===45||F===46)&&F===d.input.charCodeAt(j+1)&&F===d.input.charCodeAt(j+2)&&(j+=3,F=d.input.charCodeAt(j),F===0||S(F)))}function zt(d,j){j===1?d.result+=" ":j>1&&(d.result+=t.repeat(`
|
|
150
|
+
`,j-1))}function Yn(d,j,F){let q,I,b,P,L,W,z=d.kind,G=d.result,M=d.input.charCodeAt(d.position);if(S(M)||A(M)||M===35||M===38||M===42||M===33||M===124||M===62||M===39||M===34||M===37||M===64||M===96)return!1;if(M===63||M===45){let Z=d.input.charCodeAt(d.position+1);if(S(Z)||F&&A(Z))return!1}for(d.kind="scalar",d.result="",q=I=d.position,b=!1;M!==0;){if(M===58){let Z=d.input.charCodeAt(d.position+1);if(S(Z)||F&&A(Z))break}else if(M===35){let Z=d.input.charCodeAt(d.position-1);if(S(Z))break}else{if(d.position===d.lineStart&&Ot(d)||F&&A(M))break;if(k(M))if(P=d.line,L=d.lineStart,W=d.lineIndent,Te(d,!1,-1),d.lineIndent>=j){b=!0,M=d.input.charCodeAt(d.position);continue}else{d.position=I,d.line=P,d.lineStart=L,d.lineIndent=W;break}}b&&(Re(d,q,I,!1),zt(d,d.line-P),q=I=d.position,b=!1),w(M)||(I=d.position+1),M=d.input.charCodeAt(++d.position)}return Re(d,q,I,!1),d.result?!0:(d.kind=z,d.result=G,!1)}function $n(d,j){let F,q,I=d.input.charCodeAt(d.position);if(I!==39)return!1;for(d.kind="scalar",d.result="",d.position++,F=q=d.position;(I=d.input.charCodeAt(d.position))!==0;)if(I===39)if(Re(d,F,d.position,!0),I=d.input.charCodeAt(++d.position),I===39)F=d.position,d.position++,q=d.position;else return!0;else k(I)?(Re(d,F,q,!0),zt(d,Te(d,!1,j)),F=q=d.position):d.position===d.lineStart&&Ot(d)?E(d,"unexpected end of the document within a single quoted scalar"):(d.position++,w(I)||(q=d.position));E(d,"unexpected end of the stream within a single quoted scalar")}function Yi(d,j){let F,q,I,b=d.input.charCodeAt(d.position);if(b!==34)return!1;for(d.kind="scalar",d.result="",d.position++,F=q=d.position;(b=d.input.charCodeAt(d.position))!==0;){if(b===34)return Re(d,F,d.position,!0),d.position++,!0;if(b===92){if(Re(d,F,d.position,!0),b=d.input.charCodeAt(++d.position),k(b))Te(d,!1,j);else if(b<256&&J[b])d.result+=Q[b],d.position++;else if((I=N(b))>0){let P=I,L=0;for(;P>0;P--)b=d.input.charCodeAt(++d.position),(I=C(b))>=0?L=(L<<4)+I:E(d,"expected hexadecimal character");d.result+=X(L),d.position++}else E(d,"unknown escape sequence");F=q=d.position}else k(b)?(Re(d,F,q,!0),zt(d,Te(d,!1,j)),F=q=d.position):d.position===d.lineStart&&Ot(d)?E(d,"unexpected end of the document within a double quoted scalar"):(d.position++,w(b)||(q=d.position))}E(d,"unexpected end of the stream within a double quoted scalar")}function Gi(d,j){let F=!0,q,I,b,P=d.tag,L,W=d.anchor,z,G,M,Z,ue=Object.create(null),ye,ke,Ee,Pe=d.input.charCodeAt(d.position);if(Pe===91)z=93,Z=!1,L=[];else if(Pe===123)z=125,Z=!0,L={};else return!1;for(d.anchor!==null&&R(d,d.anchor,L),Pe=d.input.charCodeAt(++d.position);Pe!==0;){if(Te(d,!0,j),Pe=d.input.charCodeAt(d.position),Pe===z)return d.position++,d.tag=P,d.anchor=W,d.kind=Z?"mapping":"sequence",d.result=L,!0;if(F?Pe===44&&E(d,"expected the node content, but found ','"):E(d,"missed comma between flow collection entries"),ke=ye=Ee=null,G=M=!1,Pe===63){let Rr=d.input.charCodeAt(d.position+1);S(Rr)&&(G=M=!0,d.position++,Te(d,!0,j))}q=d.line,I=d.lineStart,b=d.position,Lr(d,j,s,!1,!0),ke=d.tag,ye=d.result,Te(d,!0,j),Pe=d.input.charCodeAt(d.position),(M||d.line===q)&&Pe===58&&(G=!0,Pe=d.input.charCodeAt(++d.position),Te(d,!0,j),Lr(d,j,s,!1,!0),Ee=d.result),Z?pt(d,L,ue,ke,ye,Ee,q,I,b):G?L.push(pt(d,null,ue,ke,ye,Ee,q,I,b)):L.push(ye),Te(d,!0,j),Pe=d.input.charCodeAt(d.position),Pe===44?(F=!0,Pe=d.input.charCodeAt(++d.position)):F=!1}E(d,"unexpected end of the stream within a flow collection")}function Or(d,j){let F,q=c,I=!1,b=!1,P=j,L=0,W=!1,z,G=d.input.charCodeAt(d.position);if(G===124)F=!1;else if(G===62)F=!0;else return!1;for(d.kind="scalar",d.result="";G!==0;)if(G=d.input.charCodeAt(++d.position),G===43||G===45)c===q?q=G===43?p:u:E(d,"repeat of a chomping mode identifier");else if((z=_(G))>=0)z===0?E(d,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?E(d,"repeat of an indentation width identifier"):(P=j+z-1,b=!0);else break;if(w(G)){do G=d.input.charCodeAt(++d.position);while(w(G));if(G===35)do G=d.input.charCodeAt(++d.position);while(!k(G)&&G!==0)}for(;G!==0;){for(yt(d),d.lineIndent=0,G=d.input.charCodeAt(d.position);(!b||d.lineIndent<P)&&G===32;)d.lineIndent++,G=d.input.charCodeAt(++d.position);if(!b&&d.lineIndent>P&&(P=d.lineIndent),k(G)){L++;continue}if(!b&&P===0&&E(d,"missing indentation for block scalar"),d.lineIndent<P){q===p?d.result+=t.repeat(`
|
|
151
|
+
`,I?1+L:L):q===c&&I&&(d.result+=`
|
|
152
152
|
`);break}F?w(G)?(W=!0,d.result+=t.repeat(`
|
|
153
153
|
`,I?1+L:L)):W?(W=!1,d.result+=t.repeat(`
|
|
154
154
|
`,L+1)):L===0?I&&(d.result+=" "):d.result+=t.repeat(`
|
|
155
155
|
`,L):d.result+=t.repeat(`
|
|
156
|
-
`,I?1+L:L),I=!0,b=!0,L=0;let M=d.position;for(;!k(G)&&G!==0;)G=d.input.charCodeAt(++d.position);Re(d,M,d.position,!1)}return!0}function Ji(d,j){let F=d.tag,
|
|
157
|
-
`),d.charCodeAt(0)===65279&&(d=d.slice(1)));let F=new H(d,j),
|
|
156
|
+
`,I?1+L:L),I=!0,b=!0,L=0;let M=d.position;for(;!k(G)&&G!==0;)G=d.input.charCodeAt(++d.position);Re(d,M,d.position,!1)}return!0}function Ji(d,j){let F=d.tag,q=d.anchor,I=[],b=!1;if(d.firstTabInLine!==-1)return!1;d.anchor!==null&&R(d,d.anchor,I);let P=d.input.charCodeAt(d.position);for(;P!==0&&(d.firstTabInLine!==-1&&(d.position=d.firstTabInLine,E(d,"tab characters must not be used in indentation")),P===45);){let L=d.input.charCodeAt(d.position+1);if(!S(L))break;if(b=!0,d.position++,Te(d,!0,-1)&&d.lineIndent<=j){I.push(null),P=d.input.charCodeAt(d.position);continue}let W=d.line;if(Lr(d,j,o,!1,!0),I.push(d.result),Te(d,!0,-1),P=d.input.charCodeAt(d.position),(d.line===W||d.lineIndent>j)&&P!==0)E(d,"bad indentation of a sequence entry");else if(d.lineIndent<j)break}return b?(d.tag=F,d.anchor=q,d.kind="sequence",d.result=I,!0):!1}function Xi(d,j,F){let q,I,b,P,L=d.tag,W=d.anchor,z={},G=Object.create(null),M=null,Z=null,ue=null,ye=!1,ke=!1;if(d.firstTabInLine!==-1)return!1;d.anchor!==null&&R(d,d.anchor,z);let Ee=d.input.charCodeAt(d.position);for(;Ee!==0;){!ye&&d.firstTabInLine!==-1&&(d.position=d.firstTabInLine,E(d,"tab characters must not be used in indentation"));let Pe=d.input.charCodeAt(d.position+1),Rr=d.line;if((Ee===63||Ee===58)&&S(Pe))Ee===63?(ye&&(pt(d,z,G,M,Z,null,I,b,P),M=Z=ue=null),ke=!0,ye=!0,q=!0):ye?(ye=!1,q=!0):E(d,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),d.position+=1,Ee=Pe;else{if(I=d.line,b=d.lineStart,P=d.position,!Lr(d,F,i,!1,!0))break;if(d.line===Rr){for(Ee=d.input.charCodeAt(d.position);w(Ee);)Ee=d.input.charCodeAt(++d.position);if(Ee===58)Ee=d.input.charCodeAt(++d.position),S(Ee)||E(d,"a whitespace character is expected after the key-value separator within a block mapping"),ye&&(pt(d,z,G,M,Z,null,I,b,P),M=Z=ue=null),ke=!0,ye=!1,q=!1,M=d.tag,Z=d.result;else if(ke)E(d,"can not read an implicit mapping pair; a colon is missed");else return d.tag=L,d.anchor=W,!0}else if(ke)E(d,"can not read a block mapping entry; a multiline key may not be an implicit key");else return d.tag=L,d.anchor=W,!0}if((d.line===Rr||d.lineIndent>j)&&(ye&&(I=d.line,b=d.lineStart,P=d.position),Lr(d,j,l,!0,q)&&(ye?Z=d.result:ue=d.result),ye||(pt(d,z,G,M,Z,ue,I,b,P),M=Z=ue=null),Te(d,!0,-1),Ee=d.input.charCodeAt(d.position)),(d.line===Rr||d.lineIndent>j)&&Ee!==0)E(d,"bad indentation of a mapping entry");else if(d.lineIndent<j)break}return ye&&pt(d,z,G,M,Z,null,I,b,P),ke&&(d.tag=L,d.anchor=W,d.kind="mapping",d.result=z),ke}function Qi(d){let j=!1,F=!1,q,I,b=d.input.charCodeAt(d.position);if(b!==33)return!1;d.tag!==null&&E(d,"duplication of a tag property"),b=d.input.charCodeAt(++d.position),b===60?(j=!0,b=d.input.charCodeAt(++d.position)):b===33?(F=!0,q="!!",b=d.input.charCodeAt(++d.position)):q="!";let P=d.position;if(j){do b=d.input.charCodeAt(++d.position);while(b!==0&&b!==62);d.position<d.length?(I=d.input.slice(P,d.position),b=d.input.charCodeAt(++d.position)):E(d,"unexpected end of the stream within a verbatim tag")}else{for(;b!==0&&!S(b);)b===33&&(F?E(d,"tag suffix cannot contain exclamation marks"):(q=d.input.slice(P-1,d.position+1),m.test(q)||E(d,"named tag handle cannot contain such characters"),F=!0,P=d.position+1)),b=d.input.charCodeAt(++d.position);I=d.input.slice(P,d.position),g.test(I)&&E(d,"tag suffix cannot contain flow indicator characters")}I&&!y.test(I)&&E(d,"tag name cannot contain such characters: "+I);try{I=decodeURIComponent(I)}catch{E(d,"tag name is malformed: "+I)}return j?d.tag=I:a.call(d.tagMap,q)?d.tag=d.tagMap[q]+I:q==="!"?d.tag="!"+I:q==="!!"?d.tag="tag:yaml.org,2002:"+I:E(d,'undeclared tag handle "'+q+'"'),!0}function Zi(d){let j=d.input.charCodeAt(d.position);if(j!==38)return!1;d.anchor!==null&&E(d,"duplication of an anchor property"),j=d.input.charCodeAt(++d.position);let F=d.position;for(;j!==0&&!S(j)&&!A(j);)j=d.input.charCodeAt(++d.position);return d.position===F&&E(d,"name of an anchor node must contain at least one character"),d.anchor=d.input.slice(F,d.position),!0}function Ec(d){let j=d.input.charCodeAt(d.position);if(j!==42)return!1;j=d.input.charCodeAt(++d.position);let F=d.position;for(;j!==0&&!S(j)&&!A(j);)j=d.input.charCodeAt(++d.position);d.position===F&&E(d,"name of an alias node must contain at least one character");let q=d.input.slice(F,d.position);return a.call(d.anchorMap,q)||E(d,'unidentified alias "'+q+'"'),d.result=d.anchorMap[q],Te(d,!0,-1),!0}function eo(d,j,F,q){let I=Ne(d);return ce(d),qe(d,j),d.tag=null,d.anchor=null,d.kind=null,d.result=null,Xi(d,F,q)&&d.kind==="mapping"?(ae(d),!0):(se(d),qe(d,I),!1)}function Lr(d,j,F,q,I){let b,P,L=1,W=!1,z=!1,G=null,M,Z,ue;d.depth>=d.maxDepth&&E(d,"nesting exceeded maxDepth ("+d.maxDepth+")"),d.depth+=1,d.listener!==null&&d.listener("open",d),d.tag=null,d.anchor=null,d.kind=null,d.result=null;let ye=b=P=l===F||o===F;if(q&&Te(d,!0,-1)&&(W=!0,d.lineIndent>j?L=1:d.lineIndent===j?L=0:d.lineIndent<j&&(L=-1)),L===1)for(;;){let ke=d.input.charCodeAt(d.position),Ee=Ne(d);if(W&&(ke===33&&d.tag!==null||ke===38&&d.anchor!==null)||!Qi(d)&&!Zi(d))break;G===null&&(G=Ee),Te(d,!0,-1)?(W=!0,P=ye,d.lineIndent>j?L=1:d.lineIndent===j?L=0:d.lineIndent<j&&(L=-1)):P=!1}if(P&&(P=W||I),L===1||l===F)if(s===F||i===F?Z=j:Z=j+1,ue=d.position-d.lineStart,L===1)if(P&&(Ji(d,ue)||Xi(d,ue,Z))||Gi(d,Z))z=!0;else{let ke=d.input.charCodeAt(d.position);G!==null&&ye&&!P&&ke!==124&&ke!==62&&eo(d,G,G.position-G.lineStart,Z)||b&&Or(d,Z)||$n(d,Z)||Yi(d,Z)?z=!0:Ec(d)?(z=!0,(d.tag!==null||d.anchor!==null)&&E(d,"alias node should not have any properties")):Yn(d,Z,s===F)&&(z=!0,d.tag===null&&(d.tag="?")),d.anchor!==null&&R(d,d.anchor,d.result)}else L===0&&(z=P&&Ji(d,ue));if(d.tag===null)d.anchor!==null&&R(d,d.anchor,d.result);else if(d.tag==="?"){d.result!==null&&d.kind!=="scalar"&&E(d,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+d.kind+'"');for(let ke=0,Ee=d.implicitTypes.length;ke<Ee;ke+=1)if(M=d.implicitTypes[ke],M.resolve(d.result)){d.result=M.construct(d.result),d.tag=M.tag,d.anchor!==null&&R(d,d.anchor,d.result);break}}else if(d.tag!=="!"){if(a.call(d.typeMap[d.kind||"fallback"],d.tag))M=d.typeMap[d.kind||"fallback"][d.tag];else{M=null;let ke=d.typeMap.multi[d.kind||"fallback"];for(let Ee=0,Pe=ke.length;Ee<Pe;Ee+=1)if(d.tag.slice(0,ke[Ee].tag.length)===ke[Ee].tag){M=ke[Ee];break}}M||E(d,"unknown tag !<"+d.tag+">"),d.result!==null&&M.kind!==d.kind&&E(d,"unacceptable node kind for !<"+d.tag+'> tag; it should be "'+M.kind+'", not "'+d.kind+'"'),M.resolve(d.result,d.tag)?(d.result=M.construct(d.result,d.tag),d.anchor!==null&&R(d,d.anchor,d.result)):E(d,"cannot resolve a node with !<"+d.tag+"> explicit tag")}return d.listener!==null&&d.listener("close",d),d.depth-=1,d.tag!==null||d.anchor!==null||z}function _c(d){let j=d.position,F=!1,q;for(d.version=null,d.checkLineBreaks=d.legacy,d.tagMap=Object.create(null),d.anchorMap=Object.create(null);(q=d.input.charCodeAt(d.position))!==0&&(Te(d,!0,-1),q=d.input.charCodeAt(d.position),!(d.lineIndent>0||q!==37));){F=!0,q=d.input.charCodeAt(++d.position);let I=d.position;for(;q!==0&&!S(q);)q=d.input.charCodeAt(++d.position);let b=d.input.slice(I,d.position),P=[];for(b.length<1&&E(d,"directive name must not be less than one character in length");q!==0;){for(;w(q);)q=d.input.charCodeAt(++d.position);if(q===35){do q=d.input.charCodeAt(++d.position);while(q!==0&&!k(q));break}if(k(q))break;for(I=d.position;q!==0&&!S(q);)q=d.input.charCodeAt(++d.position);P.push(d.input.slice(I,d.position))}q!==0&&yt(d),a.call(Le,b)?Le[b](d,b,P):U(d,'unknown document directive "'+b+'"')}if(Te(d,!0,-1),d.lineIndent===0&&d.input.charCodeAt(d.position)===45&&d.input.charCodeAt(d.position+1)===45&&d.input.charCodeAt(d.position+2)===45?(d.position+=3,Te(d,!0,-1)):F&&E(d,"directives end mark is expected"),Lr(d,d.lineIndent-1,l,!1,!0),Te(d,!0,-1),d.checkLineBreaks&&h.test(d.input.slice(j,d.position))&&U(d,"non-ASCII line breaks are interpreted as content"),d.documents.push(d.result),d.position===d.lineStart&&Ot(d)){d.input.charCodeAt(d.position)===46&&(d.position+=3,Te(d,!0,-1));return}d.position<d.length-1&&E(d,"end of the stream or a document separator is expected")}function xs(d,j){d=String(d),j=j||{},d.length!==0&&(d.charCodeAt(d.length-1)!==10&&d.charCodeAt(d.length-1)!==13&&(d+=`
|
|
157
|
+
`),d.charCodeAt(0)===65279&&(d=d.slice(1)));let F=new H(d,j),q=d.indexOf("\0");for(q!==-1&&(F.position=q,E(F,"null byte is not allowed in input")),F.input+="\0";F.input.charCodeAt(F.position)===32;)F.lineIndent+=1,F.position+=1;for(;F.position<F.length-1;)_c(F);return F.documents}function Cc(d,j,F){j!==null&&typeof j=="object"&&typeof F>"u"&&(F=j,j=null);let q=xs(d,F);if(typeof j!="function")return q;for(let I=0,b=q.length;I<b;I+=1)j(q[I])}function jc(d,j){let F=xs(d,j);if(F.length!==0){if(F.length===1)return F[0];throw new e("expected a single document in the stream, but found more")}}return ro.loadAll=Cc,ro.load=jc,ro}var tu={},im;function Ox(){if(im)return tu;im=1;let t=Cs(),e=js(),n=nu(),r=Object.prototype.toString,a=Object.prototype.hasOwnProperty,s=65279,i=9,o=10,l=13,c=32,u=33,p=34,f=35,h=37,g=38,m=39,y=42,v=44,k=45,w=58,S=61,A=62,C=63,N=64,_=91,B=93,X=96,pe=123,J=124,Q=125,H={};H[0]="\\0",H[7]="\\a",H[8]="\\b",H[9]="\\t",H[10]="\\n",H[11]="\\v",H[12]="\\f",H[13]="\\r",H[27]="\\e",H[34]='\\"',H[92]="\\\\",H[133]="\\N",H[160]="\\_",H[8232]="\\L",H[8233]="\\P";let K=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],E=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function U(b,P){if(P===null)return{};let L={},W=Object.keys(P);for(let z=0,G=W.length;z<G;z+=1){let M=W[z],Z=String(P[M]);M.slice(0,2)==="!!"&&(M="tag:yaml.org,2002:"+M.slice(2));let ue=b.compiledTypeMap.fallback[M];ue&&a.call(ue.styleAliases,Z)&&(Z=ue.styleAliases[Z]),L[M]=Z}return L}function R(b){let P,L,W=b.toString(16).toUpperCase();if(b<=255)P="x",L=2;else if(b<=65535)P="u",L=4;else if(b<=4294967295)P="U",L=8;else throw new e("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+P+t.repeat("0",L-W.length)+W}let ce=1,ae=2;function se(b){this.schema=b.schema||n,this.indent=Math.max(1,b.indent||2),this.noArrayIndent=b.noArrayIndent||!1,this.skipInvalid=b.skipInvalid||!1,this.flowLevel=t.isNothing(b.flowLevel)?-1:b.flowLevel,this.styleMap=U(this.schema,b.styles||null),this.sortKeys=b.sortKeys||!1,this.lineWidth=b.lineWidth||80,this.noRefs=b.noRefs||!1,this.noCompatMode=b.noCompatMode||!1,this.condenseFlow=b.condenseFlow||!1,this.quotingType=b.quotingType==='"'?ae:ce,this.forceQuotes=b.forceQuotes||!1,this.replacer=typeof b.replacer=="function"?b.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Ne(b,P){let L=t.repeat(" ",P),W=0,z="",G=b.length;for(;W<G;){let M,Z=b.indexOf(`
|
|
158
158
|
`,W);Z===-1?(M=b.slice(W),W=G):(M=b.slice(W,Z+1),W=Z+1),M.length&&M!==`
|
|
159
|
-
`&&(z+=L),z+=M}return z}function
|
|
160
|
-
`+t.repeat(" ",b.indent*P)}function Le(b,P){for(let L=0,W=b.implicitTypes.length;L<W;L+=1)if(b.implicitTypes[L].resolve(P))return!0;return!1}function Re(b){return b===c||b===i}function Ke(b){return b>=32&&b<=126||b>=161&&b<=55295&&b!==8232&&b!==8233||b>=57344&&b<=65533&&b!==s||b>=65536&&b<=1114111}function We(b){return Ke(b)&&b!==s&&b!==l&&b!==o}function pt(b,P,L){let W=We(b),z=W&&!Re(b);return(L?W:W&&b!==v&&b!==_&&b!==B&&b!==pe&&b!==Q)&&b!==f&&!(P===w&&!z)||We(P)&&!Re(P)&&b===f||P===w&&z}function yt(b){return Ke(b)&&b!==s&&!Re(b)&&b!==k&&b!==C&&b!==w&&b!==v&&b!==_&&b!==B&&b!==pe&&b!==Q&&b!==f&&b!==g&&b!==y&&b!==u&&b!==J&&b!==S&&b!==A&&b!==m&&b!==p&&b!==h&&b!==N&&b!==X}function Te(b){return!Re(b)&&b!==w}function Ot(b,P){let L=b.charCodeAt(P),W;return L>=55296&&L<=56319&&P+1<b.length&&(W=b.charCodeAt(P+1),W>=56320&&W<=57343)?(L-55296)*1024+W-56320+65536:L}function
|
|
159
|
+
`&&(z+=L),z+=M}return z}function qe(b,P){return`
|
|
160
|
+
`+t.repeat(" ",b.indent*P)}function Le(b,P){for(let L=0,W=b.implicitTypes.length;L<W;L+=1)if(b.implicitTypes[L].resolve(P))return!0;return!1}function Re(b){return b===c||b===i}function Ke(b){return b>=32&&b<=126||b>=161&&b<=55295&&b!==8232&&b!==8233||b>=57344&&b<=65533&&b!==s||b>=65536&&b<=1114111}function We(b){return Ke(b)&&b!==s&&b!==l&&b!==o}function pt(b,P,L){let W=We(b),z=W&&!Re(b);return(L?W:W&&b!==v&&b!==_&&b!==B&&b!==pe&&b!==Q)&&b!==f&&!(P===w&&!z)||We(P)&&!Re(P)&&b===f||P===w&&z}function yt(b){return Ke(b)&&b!==s&&!Re(b)&&b!==k&&b!==C&&b!==w&&b!==v&&b!==_&&b!==B&&b!==pe&&b!==Q&&b!==f&&b!==g&&b!==y&&b!==u&&b!==J&&b!==S&&b!==A&&b!==m&&b!==p&&b!==h&&b!==N&&b!==X}function Te(b){return!Re(b)&&b!==w}function Ot(b,P){let L=b.charCodeAt(P),W;return L>=55296&&L<=56319&&P+1<b.length&&(W=b.charCodeAt(P+1),W>=56320&&W<=57343)?(L-55296)*1024+W-56320+65536:L}function zt(b){return/^\n* /.test(b)}let Yn=1,$n=2,Yi=3,Gi=4,Or=5;function Ji(b,P,L,W,z,G,M,Z){let ue,ye=0,ke=null,Ee=!1,Pe=!1,Rr=W!==-1,Es=-1,_s=yt(Ot(b,0))&&Te(Ot(b,b.length-1));if(P||M)for(ue=0;ue<b.length;ye>=65536?ue+=2:ue++){if(ye=Ot(b,ue),!Ke(ye))return Or;_s=_s&&pt(ye,ke,Z),ke=ye}else{for(ue=0;ue<b.length;ye>=65536?ue+=2:ue++){if(ye=Ot(b,ue),ye===o)Ee=!0,Rr&&(Pe=Pe||ue-Es-1>W&&b[Es+1]!==" ",Es=ue);else if(!Ke(ye))return Or;_s=_s&&pt(ye,ke,Z),ke=ye}Pe=Pe||Rr&&ue-Es-1>W&&b[Es+1]!==" "}return!Ee&&!Pe?_s&&!M&&!z(b)?Yn:G===ae?Or:$n:L>9&&zt(b)?Or:M?G===ae?Or:$n:Pe?Gi:Yi}function Xi(b,P,L,W,z){b.dump=(function(){if(P.length===0)return b.quotingType===ae?'""':"''";if(!b.noCompatMode&&(K.indexOf(P)!==-1||E.test(P)))return b.quotingType===ae?'"'+P+'"':"'"+P+"'";let G=b.indent*Math.max(1,L),M=b.lineWidth===-1?-1:Math.max(Math.min(b.lineWidth,40),b.lineWidth-G),Z=W||b.flowLevel>-1&&L>=b.flowLevel;function ue(ye){return Le(b,ye)}switch(Ji(P,Z,b.indent,M,ue,b.quotingType,b.forceQuotes&&!W,z)){case Yn:return P;case $n:return"'"+P.replace(/'/g,"''")+"'";case Yi:return"|"+Qi(P,b.indent)+Zi(Ne(P,G));case Gi:return">"+Qi(P,b.indent)+Zi(Ne(Ec(P,M),G));case Or:return'"'+Lr(P)+'"';default:throw new e("impossible error: invalid scalar style")}})()}function Qi(b,P){let L=zt(b)?String(P):"",W=b[b.length-1]===`
|
|
161
161
|
`,G=W&&(b[b.length-2]===`
|
|
162
162
|
`||b===`
|
|
163
163
|
`)?"+":W?"":"-";return L+G+`
|
|
164
164
|
`}function Zi(b){return b[b.length-1]===`
|
|
165
|
-
`?b.slice(0,-1):b}function
|
|
165
|
+
`?b.slice(0,-1):b}function Ec(b,P){let L=/(\n+)([^\n]*)/g,W=(function(){let Z=b.indexOf(`
|
|
166
166
|
`);return Z=Z!==-1?Z:b.length,L.lastIndex=Z,eo(b.slice(0,Z),P)})(),z=b[0]===`
|
|
167
167
|
`||b[0]===" ",G,M;for(;M=L.exec(b);){let Z=M[1],ue=M[2];G=ue[0]===" ",W+=Z+(!z&&!G&&ue!==""?`
|
|
168
168
|
`:"")+eo(ue,P),z=G}return W}function eo(b,P){if(b===""||b[0]===" ")return b;let L=/ [^ ]/g,W,z=0,G,M=0,Z=0,ue="";for(;W=L.exec(b);)Z=W.index,Z-z>P&&(G=M>z?M:Z,ue+=`
|
|
169
169
|
`+b.slice(z,G),z=G+1),M=Z;return ue+=`
|
|
170
170
|
`,b.length-z>P&&M>z?ue+=b.slice(z,M)+`
|
|
171
|
-
`+b.slice(M+1):ue+=b.slice(z),ue.slice(1)}function
|
|
172
|
-
`:""}return Zc.dump=I,Zc}var am;function Tx(){if(am)return Yt;am=1;let t=Nx(),e=Px();function n(r,a){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+a+" instead, which is now safe by default.")}}return Yt.Type=tn(),Yt.Schema=sm(),Yt.FAILSAFE_SCHEMA=cm(),Yt.JSON_SCHEMA=hm(),Yt.CORE_SCHEMA=mm(),Yt.DEFAULT_SCHEMA=eu(),Yt.load=t.load,Yt.loadAll=t.loadAll,Yt.dump=e.dump,Yt.YAMLException=js(),Yt.types={binary:km(),float:dm(),map:lm(),null:um(),pairs:vm(),set:wm(),timestamp:gm(),bool:pm(),int:fm(),merge:ym(),omap:bm(),seq:om(),str:im()},Yt.safeLoad=n("safeLoad","load"),Yt.safeLoadAll=n("safeLoadAll","loadAll"),Yt.safeDump=n("safeDump","dump"),Yt}var Ox=Tx(),Ia=Cx(Ox),{Type:sU,Schema:iU,FAILSAFE_SCHEMA:$m,JSON_SCHEMA:oU,CORE_SCHEMA:lU,DEFAULT_SCHEMA:cU,load:Sm,loadAll:uU,dump:Ns,YAMLException:pU,types:fU,safeLoad:dU,safeLoadAll:hU,safeDump:mU}=Ia;var Lx=new Set(["Package","EphemeralPackage"]);function xm(t){return typeof t=="string"&&Lx.has(t)}var me=class{parse(t){let e=this.parseWithErrors(t);if(!e.isValid){let n=e.errors[0];throw new Error(`YAML parse error at line ${n.line}, column ${n.column}: ${n.message}`)}return e.document}parseWithErrors(t){let e=[],n;try{t=t.replace(/^\uFEFF/,"");let r=Sm(t,{schema:$m});if(!r||typeof r!="object")return n={metadata:this.createEmptyMetadata(),body:{},toString:()=>"KanonakDocument(empty)"},{document:n,errors:e,isValid:!0};let a=this.extractMetadata(r),s=this.extractBody(r,a);return n={metadata:a,body:s,toString:function(){return this.metadata.namespace_?`KanonakDocument(${this.metadata.namespace_.publisher}/${this.metadata.namespace_.package_})`:"KanonakDocument(no namespace)"}},{document:n,errors:e,isValid:!0}}catch(r){let a=r,s=a.mark?a.mark.line+1:0,i=a.mark?a.mark.column+1:0,o={message:a.message||"Unknown parse error",line:s,column:i,errorType:a.name==="YAMLException"?"SyntaxError":"Unknown",toString:()=>`${a.name==="YAMLException"?"SyntaxError":"Unknown"} at line ${s}: ${a.message||"Unknown parse error"}`};return e.push(o),{document:void 0,errors:e,isValid:!1}}}save(t){let e={};if(t.metadata.namespace_){let n=t.metadata.namespace_,r={type:"Package",publisher:n.publisher};n.version&&(r.version=`${n.version.major}.${n.version.minor}.${n.version.patch}`),t.metadata.imports&&(r.imports=this.serializeImports(t.metadata.imports)),e[n.package_]=r}for(let[n,r]of Object.entries(t.body)){let a=e[n];e[n]=a!==void 0&&r&&typeof r=="object"&&!Array.isArray(r)?{...a,...r}:r}return Ns(e,{indent:2,noRefs:!0,sortKeys:!1})}createEmptyMetadata(){return{get allImports(){return[]}}}addAllImportsGetter(t){let e=t.imports;return Object.defineProperty(t,"allImports",{get:function(){if(!e)return[];let n=[];for(let r of Object.values(e))n.push(...r);return n},enumerable:!0,configurable:!0}),t}createVersion(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}}extractMetadata(t){let e=this.createEmptyMetadata();for(let[n,r]of Object.entries(t))if(r&&typeof r=="object"&&xm(r.type)){e.type_=r.type;let a=n,s=r.publisher,i=r.version?zt(r.version,`Package ${s}/${n}'s version`):void 0;return s&&a&&(e.namespace_={publisher:s,package_:a,version:i,toString:function(){return this.version?`${this.publisher}/${this.package_}@${this.version.major}.${this.version.minor}.${this.version.patch}`:`${this.publisher}/${this.package_}`},equals:o=>!o||typeof o!="object"?!1:o.publisher===s&&o.package_===a&&(!i||!o.version||i.equals(o.version)),getHashCode:()=>{let o=0;for(let l=0;l<s.length;l++)o=(o<<5)-o+s.charCodeAt(l);for(let l=0;l<a.length;l++)o=(o<<5)-o+a.charCodeAt(l);return o|0}}),r.imports&&Array.isArray(r.imports)&&(e.imports=this.parseImportsV3(r.imports)),this.addAllImportsGetter(e)}return e}extractBody(t,e){let n={};for(let[r,a]of Object.entries(t))if(a&&typeof a=="object"&&xm(a.type)){let s={};for(let[i,o]of Object.entries(a))i==="publisher"||i==="version"||i==="imports"||(s[i]=o);n[r]=s}else n[r]=a;return n}parseImportsV3(t){let e={};for(let n of t)if(!(!n||typeof n!="object"))if(n.packages&&Array.isArray(n.packages)){let r=n.publisher;if(!r)throw new Error("PublisherImport requires 'publisher' property");e[r]||(e[r]=[]);for(let a of n.packages){if(!a||typeof a!="object")continue;let s=this.parseImportFromEmbeddedObject(a,r);e[r].push(s)}}else{let r=this.parseImportFromEmbeddedObject(n,n.publisher),a=r.publisher||"";e[a]||(e[a]=[]),e[a].push(r)}return e}parseImportFromEmbeddedObject(t,e){let n=t.package;if(!n)throw new Error("Import requires 'package' property");let r=t.match;if(!r)throw new Error("Import requires 'match' property");let a=t.version;if(!a)throw new Error("Import requires 'version' property");let s;if(t.mode!==void 0&&t.mode!==null){if(!Cc.includes(t.mode))throw new Error(`Import '${n}' has an unknown mode '${t.mode}'; expected one of: ${Cc.join(", ")}`);s=t.mode}return this.makeImport(n,r,a,e,t.alias,s)}makeImport(t,e,n,r,a,s){let i=`Import ${r?`${r}/`:""}${t}`,o=zt(n,`${i}'s version`),l=Pc(e,`${i}'s match`),c=this.calculateMaxVersion(e,o);return{package_:`${t} ${e} ${o.toString()}`,publisher:r,packageName:t,versionOperator:l,version:o,alias:a,...s?{mode:s}:{},minVersion:o,maxVersion:c,toEmbeddedObject:()=>{let u={package:t,match:e,version:o.toString()};return a&&(u.alias=a),s&&(u.mode=s),u},toString:()=>a?`${t} ${e} ${o.toString()} as ${a}`:`${t} ${e} ${o.toString()}`}}buildImport(t,e,n,r){return this.makeImport(t,e,n,r)}calculateMaxVersion(t,e){switch(t){case"~":return this.createVersion(e.major,e.minor+1,0);case"^":return e.major===0?this.createVersion(0,e.minor+1,0):this.createVersion(e.major+1,0,0);default:return this.createVersion(999,999,999)}}serializeImports(t){let e=[];for(let[n,r]of Object.entries(t)){let a={publisher:n,packages:r.map(s=>{let i=Dt(s.versionOperator),o={package:s.packageName,match:i,version:`${s.version.major}.${s.version.minor}.${s.version.patch}`};return s.alias&&(o.alias=s.alias),o})};e.push(a)}return e}};var ao=class{},kt=class extends ao{statement=[];unresolvedPredicates=[];sourceDoc="";sourceKey},q=class extends kt{namespace;name;icon},te=class extends kt{name;rangeType},D=class _m extends ao{subject;sourceKey;static parse(e){let n=new _m;return n.subject=rt.parse(e),n}},xt=class extends ao{value;carrier;lexical;rangeUnresolved;links;sourceKey},zn=class{predicate;object;sourceKey},Yn=class extends zn{carrier;lexical;rangeUnresolved},Ce=class Cm extends Yn{static parse(e,n){let r=new Cm;return r.predicate=D.parse(e),r.object=n,r}},et=class jm extends Yn{static parse(e,n){let r=new jm;return r.predicate=D.parse(e),r.object=n,r}},Ge=class extends Yn{},de=class Nm extends zn{static parse(e,n){let r=new Nm;return r.predicate=D.parse(e),r.object=D.parse(n),r}},Ae=class extends zn{},he=class extends zn{},Lt=class extends Ce{links=[]};function T(t){return`${t.publisher}/${t.package_}/${t.name}`}function $e(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Ir(t){let e=t.version;return e&&typeof e.major=="number"?`https://${t.publisher}/${t.package_}/${e.major}.${e.minor}.${e.patch}/${t.name}`:`https://${t.publisher}/${t.package_}/${t.name}`}function Gn(t){return Fe(t,Rx)}var Rx={publisher:"kanonak.org",package_:"core-rdf",name:"type"};function Fe(t,e){let n=[];for(let r of bt(t,e))r.item instanceof D&&n.push(r.item.subject);return n}function bt(t,e){return so(t,e).flat()}function so(t,e){if(!(t instanceof kt))return[];let n=[];for(let r of t.statement){let a=r.predicate;if(!(!a?.subject||!$e(a.subject,e)))if(r instanceof de)n.push([{item:r.object,fromList:!1}]);else if(r instanceof Ae)n.push([{item:r.object,fromList:!1}]);else if(r instanceof Lt)n.push([{item:{literal:!0,value:r.object,carrier:r.carrier,lexical:r.lexical,links:r.links},fromList:!1}]);else if(r instanceof Ce||r instanceof et||r instanceof Ge)n.push([{item:{literal:!0,value:r.object,carrier:r.carrier,lexical:r.lexical},fromList:!1}]);else if(r instanceof he){let s=[];for(let i of r.object??[])if(i instanceof D||i instanceof te)s.push({item:i,fromList:!0});else if(i instanceof xt)s.push({item:{literal:!0,value:i.value,carrier:i.carrier,lexical:i.lexical,links:i.links},fromList:!0});else throw new Error(`rawValuesOf: a list value of '${e.name}' is a ${i?.constructor?.name??typeof i}; list items are references, embedded values or literals.`);n.push(s)}else throw new Error(`rawValuesOf: '${e.name}' has a statement of unknown kind ${r?.constructor?.name??typeof r}.`)}return n}function Y(t,e){if(!(t instanceof kt))return!1;for(let n of t.statement)if(n.predicate?.subject?.name==="type"&&n instanceof de){let r=n.object;if($e(r.subject,e))return!0}return!1}function Jn(t,e){let n=[];for(let r of t)r instanceof q&&Y(r,e)&&n.push(r);return n}function ge(t,e){let n=e.version,r=n&&typeof n.major=="number"?`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`:void 0;for(let a of t){if(!(a instanceof q)||a.name!==e.name)continue;let s=a.namespace||"";if(r!==void 0){if(s===r)return a}else if(s.startsWith(`${e.publisher}/${e.package_}@`))return a}}function ze(t,e){let n=[];for(let r of t)!(r instanceof q)||r.name!==e.name||(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(r);return n.sort((r,a)=>{let s=At((r.namespace||"").split("@")[1]??""),i=At((a.namespace||"").split("@")[1]??"");return s?i?_e(i,s):-1:i?1:0}),n}function Mr(t,e){for(let n of t.statement){let r=n.predicate;if(r?.subject&&$e(r.subject,e))return n}}function ut(t,e){return Mr(t,e)!==void 0}function ft(t,e){let n=Mr(t,e);if(n&&(n instanceof Ce||n instanceof et||n instanceof Ge))return n.object}function vt(t,e){let n=ft(t,e);return typeof n=="string"?n:void 0}function be(t,e){let n=Mr(t,e);if(n instanceof de)return n.object.subject}function Ft(t,e){let n=Mr(t,e);if(n instanceof Ae)return n.object}function hn(t,e){let n=Mr(t,e);return n instanceof he?n.object??[]:[]}function Ln(t,e,n,r){let a=tu(t,e,r);if(a.length===0)return[];let s=Ix(n);return a.map(({value:i,address:o})=>{let l=i.fromList;if(i.item instanceof D){let u=s.resolve(i.item.subject);return u?{kind:"subject",node:u,uri:i.item.subject,address:o,fromList:l}:{kind:"unresolved",uri:i.item.subject,address:o,fromList:l}}if(i.item instanceof te)return{kind:"embedded",node:i.item,address:o,fromList:l};let c={kind:"literal",value:i.item.value,carrier:i.item.carrier,lexical:i.item.lexical,address:o,fromList:l};return i.item.links&&(c.links=i.item.links),c})}function pa(t){let e=An(`${t.namespace}/${t.name}`);if(e.kind!=="resource")throw new Error(`subjectAddress: '${t.namespace}/${t.name}' is not a resource address`);return T(e.uri)}function tu(t,e,n){let r=bt(t,e);if(r.length===0)return[];let a=n.includes("#")?`${n}.${e.name}`:`${n}#${e.name}`,s=r.length>1||r.some(i=>i.fromList);return r.map((i,o)=>({value:i,address:i.item instanceof te&&i.item.name?`${a}.${i.item.name}`:s?`${a}[${o}]`:a}))}var Em=new WeakMap;function Ix(t){let e=Em.get(t);if(e)return e;let n=new Map,r=new Map;for(let a of t){if(!(a instanceof q))continue;let s=a.namespace||"",i=`${s}\0${a.name}`;n.has(i)||n.set(i,a);let o=s.indexOf("@");if(o>=0){let l=`${s.slice(0,o)}\0${a.name}`;r.has(l)||r.set(l,a)}}return e={resolve(a){let s=a.version;return s&&typeof s.major=="number"?n.get(`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}\0${a.name}`):r.get(`${a.publisher}/${a.package_}\0${a.name}`)}},Em.set(t,e),e}var at=class{constructor(t,e){this.doc=t,this.broader=e}doc;broader;async getAllDocumentsAsync(){return[this.doc]}async getDocumentAsync(t){return this.broader.getDocumentAsync(t)}async getDocumentsByNamespaceAsync(t,e){return this.broader.getDocumentsByNamespaceAsync(t,e)}async getHighestCompatibleVersionAsync(t,e){return this.broader.getHighestCompatibleVersionAsync(t,e)}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(t){return this.broader.getDocumentContentAsync(t)}async getDocumentUriAsync(t){return this.broader.getDocumentUriAsync(t)}};function Pm(t){let e=t.split("/");if(e.length!==3)return;let[n,r,a]=e;if(!n||!r||!a)return;let s=r.indexOf("@"),i=s===-1?r:r.slice(0,s);if(i)return`${n}/${i}/${a}`}var oe;(function(t){t.Integer="integer",t.Decimal="decimal",t.Double="double",t.Float="float",t.Boolean="boolean",t.String="string",t.AnyUri="anyURI",t.LangString="langString",t.DateTime="dateTime",t.Date="date",t.Time="time",t.HexBinary="hexBinary",t.Base64Binary="base64Binary"})(oe||(oe={}));var Mx=[["integer",oe.Integer],["long",oe.Integer],["int",oe.Integer],["short",oe.Integer],["byte",oe.Integer],["unsignedLong",oe.Integer],["unsignedInt",oe.Integer],["unsignedShort",oe.Integer],["unsignedByte",oe.Integer],["nonNegativeInteger",oe.Integer],["positiveInteger",oe.Integer],["nonPositiveInteger",oe.Integer],["negativeInteger",oe.Integer],["decimal",oe.Decimal],["double",oe.Double],["float",oe.Float],["boolean",oe.Boolean],["string",oe.String],["normalizedString",oe.String],["token",oe.String],["anyURI",oe.AnyUri],["dateTime",oe.DateTime],["date",oe.Date],["time",oe.Time],["hexBinary",oe.HexBinary],["base64Binary",oe.Base64Binary]],Dx=new Map(Mx.map(([t,e])=>[`kanonak.org/core-xsd/${t}`,e])),Fx="kanonak.org/core-rdf/langString";function Ps(t){let e=Pm(t);if(e!==void 0)return e===Fx?oe.LangString:Dx.get(e)}function qx(t){let e=t.trim();if(!/^[+-]?\d+$/.test(e))throw new Error(`canonicalInteger: '${t}' is not a valid xsd:integer lexical`);return BigInt(e.replace(/^\+/,"")).toString()}function Vx(t){let e=t.trim(),n=/^([+-]?)(\d*)(?:\.(\d*))?$/.exec(e);if(!n||n[2]===""&&(n[3]??"")==="")throw new Error(`canonicalDecimal: '${t}' is not a valid xsd:decimal lexical`);let r=n[1]==="-"?"-":"",a=(n[2]??"").replace(/^0+/,"")||"0",s=(n[3]??"").replace(/0+$/,""),i=s.length>0?`${a}.${s}`:a;return i==="0"?"0":`${r}${i}`}function Tm(t,e,n){let r=t.trim();if(r==="NaN")return"NaN";if(r==="INF")return"INF";if(r==="-INF")return"-INF";if(!/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(r))throw new Error(`canonical${n}: '${t}' is not a valid xsd:${n.toLowerCase()} lexical`);let a=e(Number(r));if(!Number.isFinite(a))throw new Error(`canonical${n}: '${t}' is out of the finite range`);return Object.is(a,-0)?"0":String(a)}function Kx(t){return Tm(t,e=>e,"Double")}function Ux(t){return Tm(t,e=>Math.fround(e),"Float")}function Bx(t){let e=t.trim();if(e==="true"||e==="1")return"true";if(e==="false"||e==="0")return"false";throw new Error(`canonicalBoolean: '${t}' is not a valid xsd:boolean lexical`)}function Hx(t){return t.normalize("NFC")}function Wx(t){return t.normalize("NFC")}function zx(t){let e=t.trim();if(!/^([0-9A-Fa-f]{2})*$/.test(e))throw new Error(`canonicalHexBinary: '${t}' is not a valid xsd:hexBinary lexical`);return e.toUpperCase()}function Yx(t){let e=t.replace(/\s+/g,"");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(e)||e.length%4!==0)throw new Error(`canonicalBase64: '${t}' is not a valid xsd:base64Binary lexical`);return Jx(Gx(e))}var Xn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Gx(t){let e=t.replace(/=+$/,""),n=new Uint8Array(e.length*6>>3),r=0,a=0,s=0;for(let i=0;i<e.length;i++)r=r<<6|Xn.indexOf(e[i]),a+=6,a>=8&&(a-=8,n[s++]=r>>a&255);return n}function Jx(t){let e="",n=0;for(;n+3<=t.length;n+=3){let a=t[n]<<16|t[n+1]<<8|t[n+2];e+=Xn[a>>18&63]+Xn[a>>12&63]+Xn[a>>6&63]+Xn[a&63]}let r=t.length-n;if(r===1){let a=t[n]<<16;e+=Xn[a>>18&63]+Xn[a>>12&63]+"=="}else if(r===2){let a=t[n]<<16|t[n+1]<<8;e+=Xn[a>>18&63]+Xn[a>>12&63]+Xn[a>>6&63]+"="}return e}var io=t=>t<10?`0${t}`:`${t}`,Xx=[31,28,31,30,31,30,31,31,30,31,30,31];function Qx(t){let e=(t%BigInt(400)+BigInt(400))%BigInt(400);return e%BigInt(4)===BigInt(0)&&(e%BigInt(100)!==BigInt(0)||e===BigInt(0))}function nu(t,e){return e===2&&Qx(t)?29:Xx[e-1]}function ru(t){let e=(t<BigInt(0)?-t:t).toString().padStart(4,"0");return t<BigInt(0)?`-${e}`:e}function Om(t,e,n,r,a){let s=BigInt(t),i=Number(e),o=Number(n);if(i<1||i>12)throw new Error(`${r}: '${a}' has month ${e}; a month is 01 to 12`);if(o<1||o>nu(s,i))throw new Error(`${r}: '${a}' has day ${n}, which month ${e} of year ${ru(s)} doesn't have`);return{year:s,month:i,day:o}}function Zx(t){return t.day<nu(t.year,t.month)?{...t,day:t.day+1}:t.month<12?{year:t.year,month:t.month+1,day:1}:{year:t.year+BigInt(1),month:1,day:1}}function eE(t){return t.day>1?{...t,day:t.day-1}:t.month>1?{year:t.year,month:t.month-1,day:nu(t.year,t.month-1)}:{year:t.year-BigInt(1),month:12,day:31}}function au(t,e,n){if(!t)return;if(t==="Z")return 0;let r=Number(t.slice(1,3)),a=Number(t.slice(4,6));if(a>59||r>14||r===14&&a>0)throw new Error(`${e}: '${n}' has offset ${t}; an offset is at most 14:00 either way`);return(t[0]==="-"?-1:1)*(r*60+a)}function Lm(t,e,n,r,a,s){let i=Number(t),o=Number(e),l=Number(n),c=i===24&&o===0&&l===0&&r==="";if(o>59||l>59||i>23&&!c)throw new Error(`${a}: '${s}' has time ${t}:${e}:${n}${r}; XSD 1.1 allows 00:00:00 to 23:59:59, and 24:00:00 exactly`);return{hour:i,minute:o}}function Rm(t){if(!t)return"";let e=t.replace(/^\./,"").replace(/0+$/,"");return e.length>0?`.${e}`:""}function Im(t){return t?t==="Z"||t==="+00:00"||t==="-00:00"?"Z":t:""}var tE=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/,nE=/^(-?\d{4,})-(\d{2})-(\d{2})(Z|[+-]\d{2}:\d{2})?$/,rE=/^(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/;function aE(t){let e="canonicalDateTime",n=tE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:dateTime lexical`);let[,r,a,s,i,o,l,c,u]=n,p=Rm(c),f=Om(r,a,s,e,t),h=Lm(i,o,l,p,e,t),g=h.hour*60+h.minute-(au(u,e,t)??0);return g<0?(g+=1440,f=eE(f)):g>=1440&&(g-=1440,f=Zx(f)),`${`${ru(f.year)}-${io(f.month)}-${io(f.day)}`}T${io(Math.floor(g/60))}:${io(g%60)}:${l}${p}${u?"Z":""}`}function sE(t){let e="canonicalDate",n=nE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:date lexical`);let[,r,a,s,i]=n,o=Om(r,a,s,e,t);return au(i,e,t),`${ru(o.year)}-${a}-${s}${Im(i)}`}function iE(t){let e="canonicalTime",n=rE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:time lexical`);let[,r,a,s,i,o]=n,l=Rm(i),c=Lm(r,a,s,l,e,t);return au(o,e,t),`${c.hour===24?"00":r}:${a}:${s}${l}${Im(o)}`}function Mm(t,e){switch(t){case oe.Integer:return qx(e);case oe.Decimal:return Vx(e);case oe.Double:return Kx(e);case oe.Float:return Ux(e);case oe.Boolean:return Bx(e);case oe.String:return Hx(e);case oe.AnyUri:return Wx(e);case oe.LangString:throw new Error(`canonicalLangString: a language string is a structured value, an embedded { lexicalForm, language }, so its tag is hashed with it; the langString carrier has no slot for the tag and refuses the scalar '${e}'`);case oe.DateTime:return aE(e);case oe.Date:return sE(e);case oe.Time:return iE(e);case oe.HexBinary:return zx(e);case oe.Base64Binary:return Yx(e)}}var su=new TextEncoder;function iu(t,e){let n=su.encode(t),r=su.encode(e),a=Math.min(n.length,r.length);for(let s=0;s<a;s++)if(n[s]!==r[s])return n[s]-r[s];return n.length-r.length}function Dm(t){if("lit"in t){let e=Ps(t.datatype);return e?{type:"typed",carrier:e,value:Mm(e,t.lit)}:{type:"string",value:t.lit}}if("raw"in t)return{type:"string",value:t.raw};if("ref"in t)return{type:"ref",value:t.ref};if("embed"in t){let e=Fm(t.embed.statements??[]);return t.embed.name&&t.embed.name.length>0?{type:"embedded",name:t.embed.name,statements:e}:{type:"embedded",statements:e}}if("list"in t)return{type:"list",items:t.list.map(Dm)};throw new Error(`canonical input: unknown value shape ${JSON.stringify(t)}`)}function oE(t){let e=Dm(t.value);switch(e.type){case"string":return{predicate:t.predicate,type:"string",value:e.value};case"typed":return{predicate:t.predicate,type:"typed",carrier:e.carrier,value:e.value};case"ref":return{predicate:t.predicate,type:"ref",value:e.value};case"embedded":return e.name!==void 0?{predicate:t.predicate,type:"embedded",name:e.name,statements:e.statements}:{predicate:t.predicate,type:"embedded",statements:e.statements};case"list":return{predicate:t.predicate,type:"list",items:e.items}}}function Fm(t){return t.map(e=>{let n=oE(e);return{blob:n,json:JSON.stringify(n)}}).sort((e,n)=>iu(e.blob.predicate,n.blob.predicate)||iu(e.json,n.json)).map(e=>e.blob)}function oo(t){let e=t.subjects.map(n=>({uri:n.uri,statements:Fm(n.statements??[])}));return e.sort((n,r)=>iu(n.uri,r.uri)),JSON.stringify({subjects:e})}function ou(t){return`sha256:${cE(su.encode(oo(t)))}`}var lE=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function Qn(t,e){return t>>>e|t<<32-e}function cE(t){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),n=t.length,r=(n+8>>6)+1,a=new Uint8Array(r*64);a.set(t),a[n]=128;let s=new DataView(a.buffer),i=n*8;s.setUint32(a.length-8,Math.floor(i/4294967296)),s.setUint32(a.length-4,i>>>0);let o=new Uint32Array(64);for(let c=0;c<a.length;c+=64){for(let k=0;k<16;k++)o[k]=s.getUint32(c+k*4);for(let k=16;k<64;k++){let w=Qn(o[k-15],7)^Qn(o[k-15],18)^o[k-15]>>>3,S=Qn(o[k-2],17)^Qn(o[k-2],19)^o[k-2]>>>10;o[k]=o[k-16]+w+o[k-7]+S>>>0}let u=e[0],p=e[1],f=e[2],h=e[3],g=e[4],m=e[5],y=e[6],v=e[7];for(let k=0;k<64;k++){let w=Qn(g,6)^Qn(g,11)^Qn(g,25),S=g&m^~g&y,A=v+w+S+lE[k]+o[k]>>>0,C=Qn(u,2)^Qn(u,13)^Qn(u,22),N=u&p^u&f^p&f,_=C+N>>>0;v=y,y=m,m=g,g=h+A>>>0,h=f,f=p,p=u,u=A+_>>>0}e[0]=e[0]+u>>>0,e[1]=e[1]+p>>>0,e[2]=e[2]+f>>>0,e[3]=e[3]+h>>>0,e[4]=e[4]+g>>>0,e[5]=e[5]+m>>>0,e[6]=e[6]+y>>>0,e[7]=e[7]+v>>>0}let l="";for(let c=0;c<8;c++)l+=e[c].toString(16).padStart(8,"0");return l}async function uo(t,e){let n=new Map;for(let[r,a]of Object.entries(t.metadata?.imports??{}))for(let s of a){if(it(s))continue;let i={publisher:r,import_:s};try{let o=(await e.getHighestCompatibleVersionAsync(r,s))?.metadata?.namespace_?.version;o&&(i.read=o)}catch(o){i.failure=o}n.set(`${r}/${s.packageName}`,i)}return n}var lu=class{readsAtVersion(t,e,n){if(e.uri.publisher!==n.uri.publisher||e.uri.package_!==n.uri.package_)return!1;let r=e.uri.version,a=n.uri.version;if(!r||!a)return!1;let s=t.get(`${e.uri.publisher}/${e.uri.package_}`);return s?Sn(r,s)&&!Sn(a,s):_e(r,a)>0}async ownReadsOf(t,e){let n=new Map;for(let[r,{publisher:a,import_:s,read:i,failure:o}]of await uo(t,this.repository)){if(o!==void 0)throw new Error(`Failed to process import ${a}/${s.packageName} for namespace ${e}. See inner exception for details.`,{cause:o});i&&n.set(r,i)}return n}cache=new Map;repository;logger;constructor(t,e){this.repository=t,this.logger=e}async resolveEntityAsync(t,e){let n=e.metadata?.namespace_?.toString()??"unknown",r=this.cache.get(n);if(r){let s=r.get(t);if(s)return s}let a=await this.buildEntityIndexAsyncInternal(e,new Set,"",new Map);return this.cache.set(n,a),a.get(t)??null}async resolveAllEntitiesAsync(t,e){let n=await this.buildAllEntitiesIndexAsync(e,new Set,"");if(t.includes(".")){let r=t.split("."),a=r[0],s=r[1],i=await this.findDocumentForAlias(e,a);return i?await this.resolveAllEntitiesAsync(s,i):[]}return n.filter(r=>r.entityName===t)}async buildAllEntitiesIndexAsync(t,e,n){let r=[],a=t.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${a}`),e.has(a))return this.logger?.debug?.(`Skipping ${a} - already visited (circular import prevention)`),r;e.add(a);let s=n.length===0?a:`${n} \u2192 ${a}`;for(let[i,o]of Object.entries(t.body))if(!i.includes(".")&&o&&typeof o=="object"&&!Array.isArray(o)){if(!t.metadata.namespace_)continue;let l=t.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};r.push({entityName:i,uri:new rt(t.metadata.namespace_.publisher,t.metadata.namespace_.package_,i,l),entity:o,definedInNamespace:a,isImported:n.length>0,importPath:s})}if(this.logger?.debug?.(`Collected ${r.length} entities from ${a}`),t.metadata?.imports){let i=Object.values(t.metadata.imports).reduce((o,l)=>o+l.length,0);this.logger?.debug?.(`Processing ${i} import(s) for ${a}`);for(let[o,l]of Object.entries(t.metadata.imports))for(let c of l)if(!it(c))try{this.logger?.debug?.(`Resolving import: ${o}/${c.packageName}`);let u=await this.repository.getHighestCompatibleVersionAsync(o,c);if(u){this.logger?.debug?.(`Successfully loaded import: ${u.metadata?.namespace_?.toString()}`);let p=await this.buildAllEntitiesIndexAsync(u,e,s);r.push(...p),this.logger?.debug?.(`Added ${p.length} entities from import ${u.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${o}/${c.packageName}`)}catch(u){let p=u;throw this.logger?.error?.(`Failed to process import ${o}/${c.packageName} for namespace ${a}. Error: ${p.message}`,p),new Error(`Failed to process import ${o}/${c.packageName} for namespace ${a}. See inner exception for details.`,{cause:u})}}return r}async buildEntityIndexAsync(t){return await this.buildEntityIndexAsyncInternal(t,new Set,"",new Map)}async buildEntityIndexAsyncInternal(t,e,n,r){let a=new Map,s=t.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${s}`),e.has(s))return this.logger?.debug?.(`Skipping ${s} - circular import in progress`),a;let i=r.get(s);if(i)return i;e.add(s);let o=n.length===0?s:`${n} \u2192 ${s}`,l=0;for(let[c,u]of Object.entries(t.body))if(!c.includes(".")&&u&&typeof u=="object"&&!Array.isArray(u)){if(!t.metadata.namespace_)continue;if(!a.has(c)){let p=t.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};a.set(c,{entityName:c,uri:new rt(t.metadata.namespace_.publisher,t.metadata.namespace_.package_,c,p),entity:u,definedInNamespace:s,isImported:n.length>0,importPath:o}),l++}}if(this.logger?.debug?.(`Indexed ${l} entities from ${s}`),t.metadata?.imports){let c=Object.values(t.metadata.imports).reduce((p,f)=>p+f.length,0);this.logger?.debug?.(`Processing ${c} import(s) for ${s}`);let u=await this.ownReadsOf(t,s);for(let[p,f]of Object.entries(t.metadata.imports))for(let h of f)if(!it(h))try{this.logger?.debug?.(`Resolving import: ${p}/${h.packageName}`);let g=await this.repository.getHighestCompatibleVersionAsync(p,h);if(g){this.logger?.debug?.(`Successfully loaded import: ${g.metadata?.namespace_?.toString()}`);let m=await this.buildEntityIndexAsyncInternal(g,e,o,r),y=0;for(let[v,k]of m.entries()){if(v.includes("."))continue;let w=a.get(v);if(!w)a.set(v,k),y++;else if(w.isImported&&k.isImported&&(w.uri.publisher!==k.uri.publisher||w.uri.package_!==k.uri.package_)){let S=w.isAmbiguous?w:{...w,isAmbiguous:!0,ambiguousNamespaces:[w.definedInNamespace]};S.ambiguousNamespaces.includes(k.definedInNamespace)||S.ambiguousNamespaces.push(k.definedInNamespace),a.set(v,S),this.logger?.warn?.(`Ambiguous reference '${v}': defined in ${S.ambiguousNamespaces.join(", ")}`)}else w.isImported&&k.isImported&&w.definedInNamespace!==k.definedInNamespace&&this.readsAtVersion(u,k,w)&&a.set(v,k);if(h.alias){let S=`${h.alias}.${v}`;a.has(S)||(a.set(S,k),y++)}}this.logger?.debug?.(`Merged ${y} entities from import ${g.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${p}/${h.packageName}`)}catch(g){let m=g;throw this.logger?.error?.(`Failed to process import ${p}/${h.packageName} for namespace ${s}. Error: ${m.message}`,m),new Error(`Failed to process import ${p}/${h.packageName} for namespace ${s}. See inner exception for details.`,{cause:g})}}return e.delete(s),r.set(s,a),a}async findDocumentForAlias(t,e){if(!t.metadata?.imports)return null;for(let[n,r]of Object.entries(t.metadata.imports))for(let a of r)if(!it(a)){if(a.alias===e)return await this.repository.getHighestCompatibleVersionAsync(n,a);if(!a.alias&&a.packageName===e)return await this.repository.getHighestCompatibleVersionAsync(n,a)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(t){this.cache.delete(t)}},Os=class co{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"&&co.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 co.isSubstitutableDatatypeUri(e)}static isSubstitutableDatatypeUri(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 co.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 s=String(a);return s==="Class"||s==="rdfs.Class"||s.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 Rn(t){return`${t.publisher}/${t.package_}/${t.name}`}function qe(t,e,n){return`${t}/${e}/${n}`}function po(t){return`${t.s}|${t.p}|${cu(t.o)}`}function cu(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 qt(t,e,n){return{s:t,p:e,o:{kind:"uri",key:n}}}var Km="kanonak.org",Um="core-shacl",ie=t=>({publisher:Km,package_:Um,name:t}),uu=ie("Shape"),Da=ie("NodeShape"),Ls=ie("PropertyShape"),Bm=ie("targetClass"),Hm=ie("property"),Rs=ie("path"),Wm=ie("minCount"),zm=ie("maxCount"),Ym=ie("datatype"),Gm=ie("class"),pu=ie("in"),Jm=ie("pattern"),Xm=ie("flags"),Qm=ie("minLength"),Zm=ie("maxLength"),eg=ie("minInclusive"),tg=ie("maxInclusive"),ng=ie("minExclusive"),rg=ie("maxExclusive"),ag=ie("message"),sg=ie("targetNode"),ig=ie("targetSubjectsOf"),og=ie("targetObjectsOf"),lg=ie("closed"),cg=ie("ignoredProperties"),ug=ie("nodeKind"),pg=ie("IRI"),fg=ie("BlankNode"),dg=ie("Literal"),fu=ie("severity"),hg=ie("Violation"),mg=ie("Warning"),gg=ie("Info"),HU=ie("ValidationReport"),WU=ie("conforms"),zU=ie("result"),YU=ie("ValidationResult"),GU=ie("focusNode"),JU=ie("resultPath"),XU=ie("resultMessage"),QU=ie("resultSeverity"),ZU=ie("sourceShape"),eB=ie("value"),tB=ie("sourceConstraintComponent"),yg=ie("MinCountConstraintComponent"),kg=ie("MaxCountConstraintComponent"),bg=ie("DatatypeConstraintComponent"),vg=ie("ClassConstraintComponent"),wg=ie("InConstraintComponent"),$g=ie("PatternConstraintComponent"),Sg=ie("MinLengthConstraintComponent"),Ag=ie("MaxLengthConstraintComponent"),xg=ie("MinInclusiveConstraintComponent"),Eg=ie("MaxInclusiveConstraintComponent"),_g=ie("MinExclusiveConstraintComponent"),Cg=ie("MaxExclusiveConstraintComponent"),jg=ie("NodeKindConstraintComponent"),du=ie("ClosedConstraintComponent"),Fa=ie("hasValue"),xn=ie("qualifiedValueShape"),Is=ie("qualifiedMinCount"),Ms=ie("qualifiedMaxCount"),hu=ie("HasValueConstraintComponent"),fo=ie("QualifiedMinCountConstraintComponent"),ho=ie("QualifiedMaxCountConstraintComponent"),mu=ie("HasKeyConstraintComponent"),mo=ie("inversePath"),gu=ie("alternativePath"),Je="kanonak.org",Xe="core-rdf",nn="core-owl",Ng="core-kanonak",go={publisher:Je,package_:nn,name:"hasKey"},yo=new Map([["type",Xe],["subClassOf",Xe],["subPropertyOf",Xe],["domain",Xe],["range",Xe],["label",Xe],["comment",Xe],["seeAlso",Xe],["isDefinedBy",Xe],["member",Xe],["Resource",Xe],["Class",Xe],["Property",Xe],["Datatype",Xe],["Literal",Xe],["List",Xe],["ObjectProperty",nn],["DatatypeProperty",nn],["AnnotationProperty",nn],["Thing",nn],["Nothing",nn],["Package",Ng]]),pE=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function Ds(t){return yo.has(t)}function Zn(t){let e=yo.get(t);return e?{publisher:Je,package_:e}:void 0}function fa(){return[...new Set(yo.values())].map(t=>({publisher:Je,package_:t}))}function da(t,e,n){if(!t||!t.name)return;let r=yo.get(t.name);if(!r)return;let a=()=>{t.publisher=Je,t.package_=r,n&&(t.version=n.get(r))};if(pE.has(t.name)){let s=t.publisher===Je&&t.package_===r;t.publisher=Je,t.package_=r,!s&&n&&(t.version=n.get(r));return}t.publisher===Je&&t.package_===r||t.publisher&&t.publisher.length>0&&(!e||e(t))||a()}var ha=class{type=qe(Je,Xe,"type");subClassOf=qe(Je,Xe,"subClassOf");subPropertyOf=qe(Je,Xe,"subPropertyOf");domain=qe(Je,Xe,"domain");range=qe(Je,Xe,"range");label=qe(Je,Xe,"label");comment=qe(Je,Xe,"comment");resource=qe(Je,Xe,"Resource");class_=qe(Je,Xe,"Class");datatype=qe(Je,Xe,"Datatype");literal=qe(Je,Xe,"Literal");equivalentClass=qe(Je,nn,"equivalentClass");equivalentProperty=qe(Je,nn,"equivalentProperty");inverseOf=qe(Je,nn,"inverseOf");sameAs=qe(Je,nn,"sameAs");transitiveProperty=qe(Je,nn,"TransitiveProperty");symmetricProperty=qe(Je,nn,"SymmetricProperty");objectProperty=qe(Je,nn,"ObjectProperty");datatypeProperty=qe(Je,nn,"DatatypeProperty");annotationProperty=qe(Je,nn,"AnnotationProperty");hasKey=lo(go);package_=qe(Je,Ng,"Package");shape=lo(uu);nodeShape=lo(Da);propertyShape=lo(Ls)};function lo(t){return qe(t.publisher,t.package_,t.name)}var fE=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function Ma(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=e.entity.type;if(typeof n=="string"){let r={publisher:"",package_:"",name:n.includes(".")?n.substring(n.lastIndexOf(".")+1):n};return da(r),{publisher:r.publisher,package_:r.package_,name:r.name}}}return Pg(t)[0]??null}function Pg(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=Ma(t);return n?[n]:[]}return Array.isArray(e.statement)?Gn(t).map(n=>{let r={publisher:n.publisher??"",package_:n.package_??"",name:n.name};return da(r),{publisher:r.publisher,package_:r.package_,name:r.name}}):[]}var dE=[uu,Da,Ls];function Ts(t,e){return fE.has(`${t}/${e}`)}var hE=new Set(["Property","ObjectProperty","DatatypeProperty","AnnotationProperty"]);function qm(t){if(Ts(t.publisher,t.package_))return hE.has(t.name)?t.name:void 0}var tt=class hr{static getTypeUri(e){return Ma(e)}static isCoreOntologyType(e){return Ts(e.publisher,e.package_)}static hasCoreType(e,n){return Pg(e).some(r=>Ts(r.publisher,r.package_)&&r.name===n)}static isClassType(e){return hr.hasCoreType(e,"Class")}static isDatatypeType(e){return hr.hasCoreType(e,"Datatype")}static isDatatypePropertyType(e){return hr.hasCoreType(e,"DatatypeProperty")}static isObjectPropertyType(e){return hr.hasCoreType(e,"ObjectProperty")}static isAnnotationPropertyType(e){return hr.hasCoreType(e,"AnnotationProperty")}static isGenericPropertyType(e){return hr.hasCoreType(e,"Property")}static isAnyPropertyType(e){let n=Ma(e);return!n||!Ts(n.publisher,n.package_)?!1:n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"}static isShapeType(e){let n=Ma(e);return n?dE.some(r=>$e(n,r)):!1}static isSchemaDefinitionType(e){if(hr.isShapeType(e))return!0;let n=Ma(e);return!n||!Ts(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(hr.isSchemaDefinitionType(e))return!1;let r=Ma(e);return r?n.has(r.name):!1}},ma="kanonak.org",ga="core-rdf",mE={publisher:ma,package_:ga,name:"domain"},Tg={publisher:ma,package_:ga,name:"range"},gE={publisher:ma,package_:ga,name:"subClassOf"},yE={publisher:ma,package_:ga,name:"type"},kE={publisher:ma,package_:ga,name:"label"},bE={publisher:ma,package_:ga,name:"comment"},vE=new rt(ma,ga,"Resource");function xe(t){try{let e=An(`${t.namespace}/${t.name}`);return e.kind==="resource"?e.uri:void 0}catch{return}}function ot(t,e){let n=[],r=new Set,a="version"in e?e.version:void 0,s=[new rt(e.publisher,e.package_,e.name,a??void 0)];for(;s.length>0;){let i=s.shift(),o=T(i);if(r.has(o))continue;r.add(o),n.push(i);let l=wE(t,i);l&&s.push(...Fe(l,gE))}return n}function wE(t,e){return e.version&&typeof e.version.major=="number"?ge(t,e)??ze(t,e)[0]:ze(t,e)[0]}function wt(t,e){let n;for(let r of Et(e)){let a=$E(t,r);if(a){if(a!=="Property")return a;n??=a}}return n}function $E(t,e){let n=qm(e);if(n)return n;let r=Vm.get(t);r||(r=new Map,Vm.set(t,r));let a=e.version,s=a&&typeof a.major=="number"?`${T(e)}@${a.major}.${a.minor}.${a.patch}`:T(e),i=r.get(s);if(i!==void 0)return i??void 0;let o;for(let l of ot(t,e)){let c=qm(l);if(c){if(c!=="Property"){o=c;break}o??="Property"}}return r.set(s,o??null),o}var Vm=new WeakMap;function In(t,e){return wt(t,e)!==void 0}function Og(t,e){let n=new Set([T(vE)]);for(let r of ot(t,e))n.add(T(r));return n}function qa(t,e){let n=Og(t,e),r=[],a=new Set;for(let s of t){if(!(s instanceof q))continue;let i=wt(t,s);if(!i)continue;let o=Fe(s,mE);if(!o.some(u=>n.has(T(u))))continue;let l=xe(s);if(!l)continue;let c=T(l);a.has(c)||(a.add(c),r.push({uri:l,label:vt(s,kE),comment:vt(s,bE),kind:i==="ObjectProperty"?"object":i==="DatatypeProperty"?"datatype":"other",range:be(s,Tg),domains:o}))}return r}function er(t,e,n){let r=qa(t,e).find(a=>T(a.uri)===T(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 Lg(t,e,n){let r=Og(t,e),a=t.find(s=>{if(!(s instanceof q)||!In(t,s))return!1;let i=xe(s);return i!==void 0&&T(i)===T(n)});return a&&Fe(a,Tg).some(s=>r.has(T(s)))?{ok:!0}:{ok:!1,message:`Property ${n.publisher}/${n.package_}/${n.name}, followed backwards, never reaches ${e.publisher}/${e.package_}/${e.name}.`}}function Et(t){let e=Fe(t,yE);return e.length>0?e:t instanceof te&&t.rangeType?[t.rangeType]:[]}function ya(t){return Ps(`${t.publisher}/${t.package_}/${t.name}`)}function ln(t,e){for(let n of t)n instanceof q&&Ig(n,pa(n),n.name,e)}function Ig(t,e,n,r){let a=e.indexOf("#");r({kanonak:t,address:e,path:a<0?n:`${n}.${e.slice(a+1)}`});for(let s of SE(t))for(let{value:i,address:o}of tu(t,s,e))i.item instanceof te&&Ig(i.item,o,n,r)}function SE(t){let e=new Map;for(let n of t.statement){let r=n.predicate?.subject;if(!r)continue;let a=`${r.publisher}/${r.package_}/${r.name}`;e.has(a)||e.set(a,r)}return[...e.values()]}var vu="kanonak.org",Mg="transformations";var x=t=>({publisher:vu,package_:Mg,name:t}),Gt=t=>({publisher:vu,package_:"math",name:t}),Rt={Power:Gt("Power"),Modulo:Gt("Modulo"),Minimum:Gt("Minimum"),Maximum:Gt("Maximum"),Exp:Gt("Exp"),Ln:Gt("Ln"),Log10:Gt("Log10"),Sqrt:Gt("Sqrt"),Floor:Gt("Floor"),Ceil:Gt("Ceil"),Round:Gt("Round"),Sign:Gt("Sign"),Clip:Gt("Clip"),clipValue:Gt("clipValue"),clipLower:Gt("clipLower"),clipUpper:Gt("clipUpper")},$={Transformation:x("Transformation"),InstanceTransformation:x("InstanceTransformation"),SetTransformation:x("SetTransformation"),TransformationReference:x("TransformationReference"),publisher:x("publisher"),package:x("package"),version:x("version"),name:x("name"),inputPattern:x("inputPattern"),rule:x("rule"),artifactName:x("artifactName"),outputs:x("outputs"),formatOverrides:x("formatOverrides"),partitionBy:x("partitionBy"),InputPattern:x("InputPattern"),matchesClass:x("matchesClass"),requires:x("requires"),sortBy:x("sortBy"),SortKey:x("SortKey"),byProperty:x("byProperty"),order:x("order"),SortOrder:x("SortOrder"),ascending:x("ascending"),descending:x("descending"),OutputFormat:x("OutputFormat"),backendUri:x("backendUri"),FormatOverride:x("FormatOverride"),formatTarget:x("formatTarget"),metadataKeys:x("metadataKeys"),metadataRenames:x("metadataRenames"),trailingNewline:x("trailingNewline"),omitWrapper:x("omitWrapper"),RenameEntry:x("RenameEntry"),fromKey:x("fromKey"),toKey:x("toKey"),FMT_MARKDOWN_FRONTMATTER:x("markdown-with-frontmatter"),FMT_PLAIN_MARKDOWN:x("plain-markdown"),FMT_TOML:x("toml"),FMT_JSON:x("json"),FMT_HTML:x("html"),FMT_SVG:x("svg"),Expression:x("Expression"),ListSourcedExpression:x("ListSourcedExpression"),ListAggregate:x("ListAggregate"),IteratingExpression:x("IteratingExpression"),BuildAstNode:x("BuildAstNode"),astClass:x("astClass"),set:x("set"),AstFieldBinding:x("AstFieldBinding"),field:x("field"),bindValue:x("bindValue"),When:x("When"),condition:x("condition"),thenBuild:x("thenBuild"),elseBuild:x("elseBuild"),Concat:x("Concat"),parts:x("parts"),Fallback:x("Fallback"),primary:x("primary"),alternate:x("alternate"),StringLiteral:x("StringLiteral"),stringLiteral:x("stringLiteral"),IntegerLiteral:x("IntegerLiteral"),integerLiteral:x("integerLiteral"),DecimalLiteral:x("DecimalLiteral"),decimalLiteral:x("decimalLiteral"),BooleanLiteral:x("BooleanLiteral"),booleanLiteral:x("booleanLiteral"),VarRef:x("VarRef"),varName:x("varName"),PropertyRead:x("PropertyRead"),readSource:x("readSource"),readProp:x("readProp"),Traverse:x("Traverse"),traverseSource:x("traverseSource"),through:x("through"),step:x("step"),UriName:x("UriName"),uriNameOf:x("uriNameOf"),UriPublisher:x("UriPublisher"),uriPublisherOf:x("uriPublisherOf"),UriPackage:x("UriPackage"),uriPackageOf:x("uriPackageOf"),UriVersion:x("UriVersion"),uriVersionOf:x("uriVersionOf"),SubjectUri:x("SubjectUri"),subjectOf:x("subjectOf"),UriLiteral:x("UriLiteral"),refTo:x("refTo"),DisplayLabel:x("DisplayLabel"),labelTarget:x("labelTarget"),labelSource:x("labelSource"),ResolveRef:x("ResolveRef"),resolveSource:x("resolveSource"),Normalize:x("Normalize"),normSource:x("normSource"),normKind:x("normKind"),NormalizeKind:x("NormalizeKind"),NORM_TRIM_END:x("trim-end"),NORM_TO_UPPER:x("to-upper"),NORM_TO_LOWER:x("to-lower"),NORM_FIRST_CHAR:x("first-char"),UnescapedString:x("UnescapedString"),unescapedSource:x("unescapedSource"),IsSet:x("IsSet"),checkExpr:x("checkExpr"),ExpressionFragment:x("ExpressionFragment"),body:x("body"),CallFragment:x("CallFragment"),fragmentRef:x("fragmentRef"),source:x("source"),Join:x("Join"),separator:x("separator"),Count:x("Count"),Sum:x("Sum"),Min:x("Min"),Max:x("Max"),Average:x("Average"),loopVar:x("loopVar"),ForEach:x("ForEach"),emit:x("emit"),ListMap:x("ListMap"),mapBody:x("mapBody"),Filter:x("Filter"),predicate:x("predicate"),PartitionBy:x("PartitionBy"),partitionKey:x("partitionKey"),DistinctBy:x("DistinctBy"),distinctKey:x("distinctKey"),Partition:x("Partition"),key:x("key"),members:x("members"),AllStatements:x("AllStatements"),statementsOf:x("statementsOf"),StatementPredicate:x("StatementPredicate"),predicateOf:x("predicateOf"),StatementValue:x("StatementValue"),valueOf:x("valueOf"),DateFormat:x("DateFormat"),dateSource:x("dateSource"),dateFormat:x("dateFormat"),NumberFormat:x("NumberFormat"),numberSource:x("numberSource"),numberStyle:x("numberStyle"),fractionDigits:x("fractionDigits"),currencyCode:x("currencyCode"),BinaryArithmetic:x("BinaryArithmetic"),arithLeft:x("arithLeft"),arithRight:x("arithRight"),Add:x("Add"),Subtract:x("Subtract"),Multiply:x("Multiply"),Divide:x("Divide"),Reverse:x("Reverse"),WindowedMap:x("WindowedMap"),windowSize:x("windowSize"),windowVar:x("windowVar"),windowBody:x("windowBody"),PairwiseMap:x("PairwiseMap"),firstVar:x("firstVar"),secondVar:x("secondVar"),pairBody:x("pairBody"),Scan:x("Scan"),initialState:x("initialState"),stateVar:x("stateVar"),elementVar:x("elementVar"),accumulate:x("accumulate"),ListItemAt:x("ListItemAt"),itemIndex:x("itemIndex"),BinaryComparison:x("BinaryComparison"),compareLeft:x("compareLeft"),compareRight:x("compareRight"),Equals:x("Equals"),GreaterThan:x("GreaterThan"),LessThan:x("LessThan"),GreaterThanOrEqual:x("GreaterThanOrEqual"),LessThanOrEqual:x("LessThanOrEqual"),Not:x("Not"),operand:x("operand"),BooleanLogic:x("BooleanLogic"),operands:x("operands"),And:x("And"),Or:x("Or"),Contains:x("Contains"),haystack:x("haystack"),needle:x("needle"),Matches:x("Matches"),matchSource:x("matchSource"),pattern:x("pattern"),UnaryNumericOp:x("UnaryNumericOp"),value:x("value"),Abs:x("Abs"),Negate:x("Negate"),KindPredicate:x("KindPredicate"),IsReference:x("IsReference"),IsEmbedded:x("IsEmbedded"),IsList:x("IsList"),kindCheck:x("kindCheck"),IsString:x("IsString"),IsNumber:x("IsNumber"),IsBoolean:x("IsBoolean"),StatementObject:x("StatementObject"),statementSource:x("statementSource"),Let:x("Let"),letName:x("letName"),letValue:x("letValue"),letBody:x("letBody"),GetStatementByName:x("GetStatementByName"),inSubject:x("inSubject"),byName:x("byName"),RenderMarkdown:x("RenderMarkdown"),renderSource:x("renderSource"),renderProp:x("renderProp"),renderFormat:x("renderFormat"),RenderFormat:x("RenderFormat"),RENDER_HTML:x("render-html"),RENDER_MARKDOWN:x("render-markdown")},AE=/\[\[([^\[\]\n]+)\]\]/g,xE=/\[\[/g,Dg=/```[\s\S]*?```|`[^`\n]*`/g;function EE(t){let e=[];for(let n of t.matchAll(Dg))e.push([n.index,n.index+n[0].length]);return e}function wu(t){if(!t||!t.includes("[["))return[];let e=EE(t),n=s=>e.some(([i,o])=>s>=i&&s<o),r=new Set(Fs(t).map(s=>s.startOffset)),a=[];for(let s of t.matchAll(xE)){let i=s.index;if(n(i)||r.has(i))continue;let o=t.slice(i,i+48).replace(/\s+/g," ").trim();a.push({startOffset:i,snippet:o})}return a}function Fs(t){if(!t||!t.includes("[["))return[];let e=[];for(let a of t.matchAll(Dg))e.push([a.index,a.index+a[0].length]);let n=a=>e.some(([s,i])=>a>=s&&a<i),r=[];for(let a of t.matchAll(AE)){let s=a.index;if(n(s))continue;let i=a[1],o=i.indexOf("|"),l=(o===-1?i:i.slice(0,o)).trim();if(l.length===0)continue;let c=o===-1?"":i.slice(o+1).trim(),u={reference:l,startOffset:s,endOffset:s+a[0].length};c.length>0&&(u.displayText=c),r.push(u)}return r}function Fg(t){let e=t.metadata?.namespace_;return e?`${e.publisher}/${e.package_}`:void 0}function qg(t){let e=t.metadata?.namespace_;if(e)return e.version?`${e.publisher}/${e.package_}@${ee(e.version)}`:`${e.publisher}/${e.package_}`}async function tr(t,e,n={}){let r=new Set,a=new Set,s=[...t];for(;s.length>0;){let i=s.shift(),o=Fg(i),l=qg(i);if(!o||!l||a.has(l))continue;a.add(l),r.add(o),n.onDocument?.(i);let c=i.metadata?.imports;if(c)for(let[u,p]of Object.entries(c))for(let f of p){if(it(f))continue;let h=null,g="no-compatible-version";try{h=await e.getHighestCompatibleVersionAsync(u,f)}catch{g="resolution-error"}h?s.push(h):n.onUnresolvedEdge?.({fromNamespace:l,publisher:u,packageName:f.packageName,constraint:`${Dt(f.versionOperator)}${ee(f.version)}`,reason:g})}}return r}var ka=class{constructor(t,e){this.inner=t,this.scope=e}inner;scope;async getAllDocumentsAsync(){return(await this.inner.getAllDocumentsAsync()).filter(t=>{let e=Fg(t),n=qg(t);return e!==void 0&&(this.scope.has(e)||n!==void 0&&this.scope.has(n))})}getDocumentAsync(t){return this.inner.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){return this.inner.getDocumentsByNamespaceAsync(t,e)}getHighestCompatibleVersionAsync(t,e){return this.inner.getHighestCompatibleVersionAsync(t,e)}saveDocumentAsync(t,e){return this.inner.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.inner.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.inner.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.inner.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.inner.getDocumentUriAsync(t)}};function Rg(t,e){let n=ge(t,e);return n?wt(t,n):void 0}var _E={...Zn("range"),name:"range"};function CE(t){let e=t.lastIndexOf(".");return e===-1?t:t.slice(e+1)}var je=class{constructor(t){}async parseKanonaks(t,e){let n=await t.getAllDocumentsAsync(),r=new lu(t),a=new Os(r);this.knownPropertyClasses.clear();let s,i=()=>s??=this.importClosureCatalogAsync(n,r,a,t),o=await this.parseAllDocumentsAsync(n,r,a,t),l=await this.mergeAndCanonicalizeAsync(o,n,t,i);return await this.learnPropertyClassesAsync(l,n,r,i)&&(o=await this.parseAllDocumentsAsync(n,r,a,t),l=await this.mergeAndCanonicalizeAsync(o,n,t,i)),e&&(e.authored=o),l}knownPropertyClasses=new Map;async learnPropertyClassesAsync(t,e,n,r){let a=new Map;for(let l of e){let c=l.metadata.namespace_?.toString();c&&a.set(c,l)}let s=[],i=new Set;ln(t,({kanonak:l})=>{for(let c of l.unresolvedPredicates){let u=`${c.sourceDoc}::${c.key}`;i.has(u)||(i.add(u),s.push(c))}});let o=!1;for(let l of s){let c=a.get(l.sourceDoc);if(!c)continue;let u=await n.resolveEntityAsync(l.key,c);if(!u)continue;let p=T(u.uri);if(this.knownPropertyClasses.has(p))continue;let f=Rg(t,u.uri);if(!f){let h=await r();h&&(f=Rg(h,u.uri))}f&&(this.knownPropertyClasses.set(p,f),o=!0)}return o}async importClosureCatalogAsync(t,e,n,r){let a=new Set(t.map(o=>o.metadata.namespace_?.toString())),s=[];if(await tr(t,r,{onDocument:o=>s.push(o)}),s.every(o=>a.has(o.metadata.namespace_?.toString())))return;let i=await this.parseAllDocumentsAsync(s,e,n,r);return this.mergeAndCanonicalizeAsync(i,s,r)}async parseAllDocumentsAsync(t,e,n,r){let a=[];for(let s of t){let i=s.metadata.namespace_?.toString()??"";for(let[o,l]of Object.entries(s.body)){let c=new q,u=await this.resolveCanonicalEntity(o,s,i,e);c.namespace=u.namespace,c.name=u.name,c.sourceKey=o,c.statement=[];let p=await this.parseStatements(l,s,e,n,r);c.statement.push(...p.statements),c.unresolvedPredicates=p.unresolved,ku(c,i),a.push(c)}}return a}async mergeAndCanonicalizeAsync(t,e,n,r){let a=new Map,s=new Map,i=[];for(let g of t)if(g instanceof q){let m=`${g.namespace}/${g.name}`,y=a.get(m);if(y){let v=s.get(m);for(let k of g.statement){let w=bu(k);v.has(w)||(v.add(w),y.statement.push(k))}for(let k of g.unresolvedPredicates)y.unresolvedPredicates.some(w=>w.key===k.key&&w.sourceDoc===k.sourceDoc)||y.unresolvedPredicates.push(k)}else{let v=new q;v.namespace=g.namespace,v.name=g.name,v.sourceDoc=g.sourceDoc,g.sourceKey!==void 0&&(v.sourceKey=g.sourceKey);let k=new Set;for(let w of g.statement){let S=bu(w);k.has(S)||(k.add(S),v.statement.push(w))}v.unresolvedPredicates=[...g.unresolvedPredicates],s.set(m,k),a.set(m,v),i.push(v)}}else i.push(g);let o=new Set,l=g=>{for(let m of g)if(m instanceof q){let y=m.namespace||"",v=y.indexOf("/"),k=v>=0?y.slice(0,v):"",w=v>=0?y.slice(v+1):"",S=w.indexOf("@"),A=S>=0?w.slice(0,S):w;o.add(`${k}/${A}/${m.name}`)}};l(i);let c=g=>o.has(`${g.publisher}/${g.package_}/${g.name}`),u=new Map;for(let g of fa()){let m=await n.getDocumentsByNamespaceAsync(g.publisher,g.package_);u.set(g.package_,dr(m).chosen?.metadata.namespace_?.version??void 0)}let p=new Map;for(let g of e)p.set(g.metadata.namespace_?.toString()??"",await this.homeVersionsAsync(g,u,n));let f=g=>{let m=p.get(g.sourceDoc);if(!m)throw new Error(`Cannot stamp the built-in terms of ${g.namespace}/${g.name}: its document, '${g.sourceDoc}', isn't among the documents being parsed, so the versions of the built-in homes it imports or links are unknown.`);return m},h=[];for(let g of t)if(g instanceof q){let m=f(g),y=v=>(c(v)||h.push({uri:v,homeVersions:m}),!0);this.canonicalizeStatementBuiltins(g.statement,y,m)}if(h.length>0){l(await r?.()??[]);for(let{uri:g,homeVersions:m}of h)da(g,c,m)}return i}async homeVersionsAsync(t,e,n){let r=new Map(e),a=fa();for(let[s,i]of Object.entries(t.metadata?.imports??{}))for(let o of i){let l=a.find(c=>c.publisher===s&&c.package_===o.packageName);if(l)if(o.versionOperator===we.Exact||it(o))r.set(l.package_,o.version);else{let c=await n.getHighestCompatibleVersionAsync(s,o);r.set(l.package_,c?.metadata.namespace_?.version??void 0)}}return r}canonicalizeStatementBuiltins(t,e,n){for(let r of t){let a=r.predicate?.subject;if(da(a,e,n),r instanceof de)r.object instanceof D&&da(r.object.subject,e,n);else if(r instanceof Ae)r.object&&this.canonicalizeStatementBuiltins(r.object.statement,e,n);else if(r instanceof he)for(let s of r.object??[])s instanceof D?da(s.subject,e,n):s instanceof te&&this.canonicalizeStatementBuiltins(s.statement,e,n)}}async resolveCanonicalEntity(t,e,n,r){let a=t.indexOf("."),s=t.substring(0,a);if(!(a>0&&Object.values(e.metadata?.imports??{}).some(l=>l.some(c=>(c.alias??c.packageName)===s))))return{namespace:n,name:t};let{subject:i}=await this.resolveReference(t,e,r),o=i.version;return{namespace:o?`${i.publisher}/${i.package_}@${o.major}.${o.minor}.${o.patch}`:`${i.publisher}/${i.package_}`,name:i.name}}async parseStatements(t,e,n,r,a){let s=[],i=[];if(typeof t!="object"||t===null||Array.isArray(t))return{statements:s,unresolved:i};let o=e.metadata.namespace_?.toString()??"";for(let[l,c]of Object.entries(t))try{let u=await this.getPropertyMetadata(l,e,n,a,r);if(!u){let f=l.includes(".")?l.slice(l.lastIndexOf(".")+1):l;i.push(Ds(f)?{key:l,sourceDoc:o,builtin:!0}:{key:l,sourceDoc:o});continue}let p=await this.parsePropertyValue(l,c,u,e,n,r,a);p&&(p instanceof zn&&(p.sourceKey=l),s.push(p))}catch(u){throw new Error(`Failed to parse property '${l}': ${u.message}`,{cause:u})}return{statements:s,unresolved:i}}async getPropertyMetadata(t,e,n,r,a){let s=await n.resolveEntityAsync(t,e);if(!s)return;let i=s.entity,o=i.type?.toString()??"",l=o.includes(".")?o.substring(o.lastIndexOf(".")+1):o,c=new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]),u=this.knownPropertyClasses.get(T(s.uri));if(!c.has(l)&&!u)return;let p=u??a.getPropertyTypeClassification(o),f,h=async()=>{if(f)return f;if(!(s.isImported&&s.definedInNamespace))return f=e,e;if(typeof r.getDocumentAsync!="function")throw new Error(`Cannot resolve the range of imported property '${t}': the parse repository cannot fetch defining document '${s.definedInNamespace}'. Thread the real repository through to embedded-object parsing \u2014 no stub, no fallback.`);let S=await r.getDocumentAsync(s.definedInNamespace);if(!S)throw new Error(`Cannot resolve the range of imported property '${t}': defining document '${s.definedInNamespace}' was not found in the repository.`);return f=S,S},g=await this.readDefinitionSlot(i,_E,h,n),m=g.value===void 0||g.value===null?void 0:String(g.value),y;if(p==="ObjectProperty")y="ObjectProperty";else if(p==="DatatypeProperty")y="DatatypeProperty";else{let S=m&&m.includes(".")?m.substring(m.lastIndexOf(".")+1):m??"";m&&a.isKnownXsdDatatypeName(m)||S==="Literal"?y="DatatypeProperty":y="ObjectProperty"}let v;m&&(v=(await n.resolveEntityAsync(m,await h()))?.uri);let k=s.definedInNamespace,w=g.unresolvedKey!==void 0?`its key '${g.unresolvedKey}' names nothing the imports of ${k} hold`:m&&!v?`'${m}' names nothing the imports of ${k} hold`:void 0;return{propertyUri:s.uri.toString(),propertyType:y,range:m,rangeUri:v,...w!==void 0?{rangeUnresolved:w}:{},isImported:s.isImported,definedInNamespace:s.definedInNamespace}}async readDefinitionSlot(t,e,n,r){let a=Object.keys(t).filter(c=>CE(c)===e.name);if(a.length===0)return{};let s=await n(),i=Zn(e.name),o=i!==void 0&&i.publisher===e.publisher&&i.package_===e.package_,l;for(let c of a){let u=await r.resolveEntityAsync(c,s);if(u){if($e(u.uri,e))return{value:t[c]};continue}if(!c.includes(".")&&o)return{value:t[c]};l??=c}return l===void 0?{}:{unresolvedKey:l}}async parsePropertyValue(t,e,n,r,a,s,i){let o=n.propertyUri;if(e!=null){if(Array.isArray(e))return this.parseListValue(o,e,n,r,a,s,i);if(n.propertyType==="DatatypeProperty")return typeof e=="object"?this.structuredValue(o,e,n,r,a,s,i):this.parseDatatypeValue(o,e,n,r,a,s);if(n.propertyType==="ObjectProperty")return this.parseObjectValue(o,e,n,r,a,s,i)}}async structuredValue(t,e,n,r,a,s,i){let o=await this.parseStatements(e,r,a,s,i),l=new te;l.statement=o.statements,l.unresolvedPredicates=o.unresolved,n.rangeUri&&(l.rangeType=n.rangeUri);let c=new Ae;return c.predicate=D.parse(t),c.object=l,c}async parseDatatypeValue(t,e,n,r,a,s){let i;if(typeof e=="string"){if(s.isSubstitutableDatatype(n.rangeUri))return await this.parseSubstitutableValue(t,e,r,a);i=e}else if(typeof e=="number"||typeof e=="boolean")i=String(e);else return;return this.typedScalarStatement(t,i,n)}typedScalarStatement(t,e,n){let r=D.parse(t),a=n.rangeUri?ya(n.rangeUri):void 0;if(a===oe.Boolean){let i=new Ge;return i.predicate=r,i.object=e==="true"||e==="1",i.carrier=a,i.lexical=e,i}if(a===oe.Integer||a===oe.Decimal||a===oe.Double||a===oe.Float){let i=new et;return i.predicate=r,i.object=Number(e),i.carrier=a,i.lexical=e,i}let s=Ce.parse(t,e);return a?(s.carrier=a,s.lexical=e):n.rangeUnresolved!==void 0&&(s.rangeUnresolved=n.rangeUnresolved),s}typedListLiteral(t,e){let n=new xt,r=e.rangeUri?ya(e.rangeUri):void 0;return r===oe.Boolean?n.value=t==="true"||t==="1":r===oe.Integer||r===oe.Decimal||r===oe.Double||r===oe.Float?n.value=Number(t):n.value=t,r?(n.carrier=r,n.lexical=t):e.rangeUnresolved!==void 0&&(n.rangeUnresolved=e.rangeUnresolved),n}async parseSubstitutableValue(t,e,n,r){let a=new Lt;return a.predicate=D.parse(t),a.object=e,a.links=await this.resolveMarkdownLinks(e,n,r),a}async resolveMarkdownLinks(t,e,n){let r=[];for(let a of Fs(t)){let s=this.linkReference(a.reference,e);if(!s){let o=await n.resolveEntityAsync(a.reference,e);o&&(s=new D,s.subject=o.uri)}let i={reference:a.reference,startOffset:a.startOffset,endOffset:a.endOffset};a.displayText!==void 0&&(i.displayText=a.displayText),s!==void 0&&(i.target=s),r.push(i)}return r}async parseObjectValue(t,e,n,r,a,s,i){if(typeof e=="string"){if(n.rangeUri&&$e(n.rangeUri,$.Expression)){let c=await this.expressionValue(e,n.rangeUri,r,a);if(c instanceof te){let p=new Ae;return p.predicate=D.parse(t),p.object=c,p}let u=new de;return u.predicate=D.parse(t),u.object=c,u}let o=await this.resolveReference(e,r,a);if(!o)return;let l=new de;return l.predicate=D.parse(t),l.object=o,l}if(typeof e=="object"&&!Array.isArray(e)){let o=await this.parseStatements(e,r,a,s,i);if(o.statements.length>0){let u=new te;u.statement=o.statements,u.unresolvedPredicates=o.unresolved,n.rangeUri&&(u.rangeType=n.rangeUri);let p=new Ae;return p.predicate=D.parse(t),p.object=u,p}let l=[];for(let[u,p]of Object.entries(e))if(typeof p=="object"&&p!==null&&!Array.isArray(p)){let f=new te;f.name=u,f.sourceKey=u,n.rangeUri&&(f.rangeType=n.rangeUri);let h=await this.parseStatements(p,r,a,s,i);f.statement=h.statements,f.unresolvedPredicates=h.unresolved,l.push(f)}else if(typeof p=="string"){let f=await this.resolveReference(p,r,a);f&&(f.sourceKey=u,l.push(f))}if(l.length>0){let u=new he;return u.predicate=D.parse(t),u.object=l,u}let c=new Ae;return c.predicate=D.parse(t),c.object=new te,n.rangeUri&&(c.object.rangeType=n.rangeUri),c}}expressionLiteral(t,e){let n=new te,r=new de,a=new D;a.subject=new rt("kanonak.org","core-rdf","type"),r.predicate=a;let s=new D;s.subject=new rt(e.publisher,e.package_,$.StringLiteral.name,e.version),r.object=s;let i=new Ce,o=new D;return o.subject=new rt(e.publisher,e.package_,$.stringLiteral.name,e.version),i.predicate=o,i.object=t,n.statement=[r,i],n}async parseListValue(t,e,n,r,a,s,i){let o=[],l=n.propertyType==="DatatypeProperty",c=n.rangeUri?.publisher==="kanonak.org"&&n.rangeUri?.package_==="core-rdf"&&n.rangeUri?.name==="List"||!n.rangeUri&&(n.range?.includes(".")?n.range.substring(n.range.lastIndexOf(".")+1):n.range)==="List";for(let p=0;p<e.length;p++){let f=e[p],h=m=>{m.sourceKey=p,o.push(m)},g=typeof f=="string"||typeof f=="number"||typeof f=="boolean";if(l&&g){let m=typeof f=="string"?f:String(f),y=this.typedListLiteral(m,n);s.isSubstitutableDatatype(n.rangeUri)&&(y.links=await this.resolveMarkdownLinks(m,r,a)),h(y);continue}if(c&&g){if(typeof f=="string"){let m=await a.resolveEntityAsync(f,r);if(m){let y=new D;y.subject=m.uri,h(y)}else{let y=new xt;y.value=f,h(y)}}else{let m=new xt;m.value=f,h(m)}continue}if(typeof f=="string"){let m=await this.resolveReference(f,r,a);m&&h(m)}else if(typeof f=="object"&&f!==null&&!Array.isArray(f)){let m=new te;n.rangeUri&&(m.rangeType=n.rangeUri);let y=await this.parseStatements(f,r,a,s,i);m.statement=y.statements,m.unresolvedPredicates=y.unresolved,h(m)}}let u=new he;return u.predicate=D.parse(t),u.object=o,u}linkReference(t,e){let n=t.indexOf(".");if(n<=0||!e.metadata?.imports)return;let r=t.substring(0,n),a=t.substring(n+1);for(let[s,i]of Object.entries(e.metadata.imports))for(let o of i){if(!it(o)||(o.alias??o.packageName)!==r)continue;let l=new D,c=o.versionOperator===we.Exact?o.version:void 0;return l.subject=new rt(s,o.packageName,a,c),l}}importedReference(t,e){let n=t.indexOf(".");if(n<=0||!e.metadata?.imports)return;let r=t.substring(0,n),a=t.substring(n+1);for(let[s,i]of Object.entries(e.metadata.imports))for(let o of i){if((o.alias??o.packageName)!==r)continue;let l=new D;return l.subject=new rt(s,o.packageName,a,o.version),l}}async expressionValue(t,e,n,r){let a=this.linkReference(t,n);if(a)return a;let s=await r.resolveEntityAsync(t,n);if(s){let i=new D;return i.subject=s.uri,i}return this.importedReference(t,n)??this.expressionLiteral(t,e)}async resolveReference(t,e,n){let r=this.linkReference(t,e);if(r)return r;let a=await n.resolveEntityAsync(t,e);if(a){let i=new D;return i.subject=a.uri,i}let s=e.metadata?.namespace_;if(s){let i=this.importedReference(t,e);if(i)return i;let o=new D;return o.subject=new rt(s.publisher,s.package_,t,s.version??void 0),o}return null}async saveKanonaks(t,e){let n=new Map;for(let r of t)r instanceof q&&r.namespace&&(n.has(r.namespace)||n.set(r.namespace,[]),n.get(r.namespace).push(r));for(let[r,a]of n){let s=await this.convertKanonaksToDocument(r,a),i=`${r.split("@")[0]}.yml`;await e.saveDocumentAsync(s,i)}}async serializeToYaml(t,e){let n=t.filter(a=>a instanceof q&&a.namespace===e);if(n.length===0)throw new Error(`No kanonaks found with namespace '${e}'`);let r=await this.convertKanonaksToDocument(e,n);return new me().save(r)}async convertKanonaksToDocument(t,e){let n={metadata:{namespace_:t,get allImports(){if(!this.imports)return[];let a=[];for(let s of Object.values(this.imports))a.push(...s);return a}},body:{}},r=new Map;for(let a of e){let s={};for(let i of a.statement){let[o,l]=this.convertStatementToProperty(i);o&&l!==null&&l!==void 0&&(s[o]=l),this.collectImportsFromStatement(i,t,r)}n.body[a.name]=s}return n}convertStatementToProperty(t){if(t instanceof Ce)return[t.predicate.subject.name,t.object];if(t instanceof et)return[t.predicate.subject.name,t.object];if(t instanceof Ge)return[t.predicate.subject.name,t.object];if(t instanceof de)return[t.predicate.subject.name,t.object.subject.name];if(t instanceof he){let e=this.convertKanonakListToValue(t.object);return[t.predicate.subject.name,e]}else if(t instanceof Ae){let e=this.convertEmbeddedKanonakToValue(t.object);return[t.predicate.subject.name,e]}return[null,null]}convertKanonakListToValue(t){let e=[];for(let n of t)n instanceof D?e.push(n.subject.name):n instanceof te&&e.push(this.convertEmbeddedKanonakToValue(n));return e}convertEmbeddedKanonakToValue(t){let e={};for(let n of t.statement){let[r,a]=this.convertStatementToProperty(n);r&&a!==null&&a!==void 0&&(e[r]=a)}return e}collectImportsFromStatement(t,e,n){}};function ku(t,e){t.sourceDoc=e;for(let n of t.statement)if(n instanceof Ae)ku(n.object,e);else if(n instanceof he)for(let r of n.object)r instanceof te&&ku(r,e)}function bu(t){let e=t.predicate?.subject;return(e?`${e.publisher}/${e.package_}/${e.name}`:"?")+"="+jE(t)}function jE(t){return t instanceof Lt?"m:"+String(t.object):t instanceof Ce?"s:"+String(t.object):t instanceof et?"n:"+String(t.object):t instanceof Ge?"b:"+String(t.object):t instanceof de?"r:"+yu(t.object):t instanceof Ae?"e:"+yu(t.object):t instanceof he?"l:["+(t.object??[]).map(yu).join("|")+"]":"x"}function yu(t){if(!t)return"";if(t instanceof D){let e=t.subject;return"R("+(e?`${e.publisher}/${e.package_}/${e.name}`:"")+")"}return t instanceof te?"E("+(t.statement??[]).map(bu).join(";")+")":t instanceof xt?"L("+String(t.value)+")":"N"}var Vg=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(t){let e=po(t);return this.all.has(e)?!1:(this.all.add(e),this.tripleList.push(t),$u(this.byPIdx,t.p,t),$u(this.bySPIdx,`${t.s}|${t.p}`,t),t.o.kind==="uri"&&$u(this.byPOIdx,`${t.p}|${t.o.key}`,t),!0)}has(t){return this.all.has(po(t))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(t){let e=this.byPIdx.get(t);return e?e.slice():[]}bySubjectPredicate(t,e){let n=this.bySPIdx.get(`${t}|${e}`);return n?n.slice():[]}byPredicateObject(t,e){let n=this.byPOIdx.get(`${t}|${e}`);return n?n.slice():[]}subjectsWithPredicateObject(t,e){let n=this.byPOIdx.get(`${t}|${e}`);if(!n)return[];let r=new Set;for(let a of n)r.add(a.s);return Array.from(r)}uriObjectsOf(t,e){let n=this.bySPIdx.get(`${t}|${e}`);if(!n)return[];let r=new Set;for(let a of n)a.o.kind==="uri"&&r.add(a.o.key);return Array.from(r)}hasUri(t,e,n){return this.all.has(`${t}|${e}|u:${n}`)}hasTriple(t,e,n){return this.all.has(`${t}|${e}|${cu(n)}`)}};function $u(t,e,n){let r=t.get(e);r?r.push(n):t.set(e,[n])}var NE={name:"rdfs2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},PE={name:"rdfs3",apply(t,e){let n=!1;for(let r of t.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))i.o.kind==="uri"&&t.add(qt(i.o.key,e.type,s))&&(n=!0)}return n}},TE={name:"rdfs5",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.bySubjectPredicate(s,e.subPropertyOf))i.o.kind==="uri"&&t.add(qt(a,e.subPropertyOf,i.o.key))&&(n=!0)}return n}},OE={name:"rdfs7",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(a)){let o={s:i.s,p:s,o:i.o};t.add(o)&&(n=!0)}}return n}},LE={name:"rdfs9",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},RE={name:"rdfs11",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.bySubjectPredicate(s,e.subClassOf))i.o.kind==="uri"&&t.add(qt(a,e.subClassOf,i.o.key))&&(n=!0)}return n}},Kg=[NE,PE,TE,OE,LE,RE],IE={name:"prp-trp",apply(t,e){let n=!1,r=t.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let a of r){let s=t.byPredicate(a);for(let i of s){if(i.o.kind!=="uri")continue;let o=i.o.key;for(let l of t.bySubjectPredicate(o,a))l.o.kind==="uri"&&i.s!==l.o.key&&t.add(qt(i.s,a,l.o.key))&&(n=!0)}}return n}},ME={name:"prp-symp",apply(t,e){let n=!1,r=t.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let a of r)for(let s of t.byPredicate(a))s.o.kind==="uri"&&t.add(qt(s.o.key,a,s.s))&&(n=!0);return n}},DE={name:"prp-inv1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))i.o.kind==="uri"&&t.add(qt(i.o.key,s,i.s))&&(n=!0)}return n}},FE={name:"prp-inv2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(s))i.o.kind==="uri"&&t.add(qt(i.o.key,a,i.s))&&(n=!0)}return n}},qE={name:"prp-eqp1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(a))t.add({s:i.s,p:s,o:i.o})&&(n=!0)}return n}},VE={name:"prp-eqp2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(s))t.add({s:i.s,p:a,o:i.o})&&(n=!0)}return n}},KE={name:"cax-eqc1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},UE={name:"cax-eqc2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,s))t.add(qt(i.s,e.type,a))&&(n=!0)}return n}},BE={name:"eq-rep-s",apply(t,e){let n=!1;for(let r of t.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s){for(let i of t.snapshot())i.s===a&&t.add({s,p:i.p,o:i.o})&&(n=!0);for(let i of t.snapshot())i.s===s&&t.add({s:a,p:i.p,o:i.o})&&(n=!0)}}return n}},HE={name:"eq-rep-o",apply(t,e){let n=!1;for(let r of t.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.snapshot())i.o.kind==="uri"&&(i.o.key===a?t.add(qt(i.s,i.p,s))&&(n=!0):i.o.key===s&&t.add(qt(i.s,i.p,a))&&(n=!0))}return n}},Ug=[IE,ME,DE,FE,qE,VE,KE,UE,BE,HE],Bg=class{constructor(t,e){this.store=t,this.vocabulary=e}store;vocabulary;getInstancesOfClass(t){let e=Dr(t);return this.store.subjectsWithPredicateObject(this.vocabulary.type,e)}getSubclasses(t){let e=Dr(t);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,e).filter(n=>n!==e)}getSuperclasses(t){let e=Dr(t);return this.store.uriObjectsOf(e,this.vocabulary.subClassOf).filter(n=>n!==e)}getTypesOfIndividual(t){return this.store.uriObjectsOf(Dr(t),this.vocabulary.type)}isInstanceOf(t,e){return this.store.hasUri(Dr(t),this.vocabulary.type,Dr(e))}getPropertyClosure(t){let e=Dr(t),n={},r=new Map;for(let a of this.store.byPredicate(e)){if(a.o.kind!=="uri")continue;let s=r.get(a.s);s||(s=new Set,r.set(a.s,s),n[a.s]=[]),s.has(a.o.key)||(s.add(a.o.key),n[a.s].push(a.o.key))}return n}getPropertyClosures(t){let e={};for(let n of t)e[Dr(n)]=this.getPropertyClosure(n);return e}triples(){return this.store.snapshot()}size(){return this.store.size()}};function Dr(t){return typeof t=="string"?t:qe(t.publisher,t.package_,t.name)}var ba=class{vocabulary;profile;maxIterations;constructor(t={}){this.vocabulary=t.vocabulary??new ha,this.profile=t.profile??"owl-rl-classification",this.maxIterations=t.maxIterations??100}async reason(t){return this.reasonOver(await new je().parseKanonaks(t))}reasonOver(t){let e=new Vg,n=new WE;for(let s of t)if(s instanceof q){let i=zE(s);if(!i)continue;for(let o of s.statement)this.emitStatement(i,o,e,n)}let r=[...Kg];this.profile==="owl-rl-classification"&&r.push(...Ug);let a=0;for(;a<this.maxIterations;){let s=!1;for(let i of r)i.apply(e,this.vocabulary)&&(s=!0);if(!s)break;a++}return new Bg(e,this.vocabulary)}emitStatement(t,e,n,r){let a=YE(e);if(a){if(e instanceof Ce){n.add({s:t,p:a,o:{kind:"literal",lexical:e.object,datatype:"string"}});return}if(e instanceof et){n.add({s:t,p:a,o:{kind:"literal",lexical:String(e.object),datatype:"number"}});return}if(e instanceof Ge){n.add({s:t,p:a,o:{kind:"literal",lexical:String(e.object),datatype:"boolean"}});return}if(e instanceof de){let s=Rn(e.object.subject);n.add(qt(t,a,s));return}if(e instanceof Ae){let s=r.next();n.add({s:t,p:a,o:{kind:"blank",id:s}}),this.emitEmbedded(s,e.object,n,r);return}if(e instanceof he){for(let s of e.object??[])this.emitListItem(t,a,s,n,r);return}}}emitListItem(t,e,n,r,a){if(n instanceof D)r.add(qt(t,e,Rn(n.subject)));else if(n instanceof te){let s=a.next();r.add({s:t,p:e,o:{kind:"blank",id:s}}),this.emitEmbedded(s,n,r,a)}else if(n instanceof xt){let s=typeof n.value=="number"?"number":typeof n.value=="boolean"?"boolean":"string";r.add({s:t,p:e,o:{kind:"literal",lexical:String(n.value),datatype:s}})}}emitEmbedded(t,e,n,r){let a=`_:${t}`;for(let s of e.statement)this.emitStatement(a,s,n,r)}},WE=class{counter=0;next(){return`b${this.counter++}`}};function zE(t){let e=t.namespace??"",n=e.indexOf("@"),r=n===-1?e:e.substring(0,n),a=r.indexOf("/");if(a===-1)return null;let s=r.substring(0,a),i=r.substring(a+1);return!s||!i||!t.name?null:qe(s,i,t.name)}function YE(t){let e=t.predicate;return e?.subject?Rn(e.subject):null}function mr(t,e,n,r){let a=t.metadata?.namespace_,s=a?.version,i=s?`${s.major}.${s.minor}.${s.patch}`:void 0;if(!a||a.publisher!==e||a.package_!==n||i!==r){let o=a?`${a.publisher}/${a.package_}@${i??"?"}`:"(no namespace declared)";throw new Error(`Package identity mismatch: requested ${e}/${n}@${r} but the fetched document declares ${o}. Refusing to use it.`)}}var nr=class extends Error{constructor(t,e,n,r,a){super(t),this.url=e,this.status=n,this.problem=r,this.retryAfterSeconds=a,this.name="KanonakHttpError"}url;status;problem;retryAfterSeconds},Hg=300;async function mn(t,e,n){let r=await zg(n),a=qs(n.headers.get("retry-after")),s=`Failed to fetch ${t}: ${e} ${await ko(n)}`;return new nr(s,e,n.status,r,a)}async function ko(t){let e=await zg(t),n=qs(t.headers.get("retry-after")),r=e?GE(e):await JE(t),a=`(${t.status}${t.statusText?` ${t.statusText}`:""})`;return r&&(a+=`: ${r}`),n!==void 0&&(a+=` [the server asks to retry after ${n}s]`),a}function qs(t){if(!t)return;let e=t.trim();if(/^\d+$/.test(e))return Number(e);let n=Date.parse(e);if(!Number.isNaN(n))return Math.max(0,Math.ceil((n-Date.now())/1e3))}function Wg(t){return(t.headers.get("content-type")??"").split(";")[0].trim().toLowerCase()}async function zg(t){if(Wg(t)!=="application/problem+json")return;let e;try{e=await t.clone().json()}catch{return}if(!e||typeof e!="object")return;let n=e,r={};return typeof n.type=="string"&&(r.type=n.type),typeof n.title=="string"&&(r.title=n.title),typeof n.status=="number"&&(r.status=n.status),typeof n.detail=="string"&&(r.detail=n.detail),typeof n.instance=="string"&&(r.instance=n.instance),r}function GE(t){return[t.title,t.detail].filter(e=>!!e&&e.trim()!=="").join(" \u2014 ")}async function JE(t){let e=Wg(t);if(e!=="text/plain"&&e!=="application/json")return"";let n;try{n=await t.clone().text()}catch{return""}let r=n.replace(/\s+/g," ").trim();return r.length>Hg?`${r.slice(0,Hg)}\u2026`:r}var dt=class extends Error{constructor(t){super(t),this.name="CredentialError"}};var Jg="@kanonak-protocol/sdk (+https://kanonak.org)",XE=Jg;function Va(t){let e;try{e=typeof t=="string"?new URL(t):t}catch{throw new Error(`Kanonak requires an absolute https:// URL \u2014 got an unparseable or relative URL: ${String(t)}`)}if(e.protocol!=="https:")throw new Error(`Kanonak requires HTTPS \u2014 refusing to fetch ${e.href} (only https:// is supported).`)}var QE=new Set([429,502,503,504]),ZE=4,e1=500,Xg=2e4;function gr(t,e){Va(t);let n=new Headers(e?.headers);return n.has("User-Agent")||n.set("User-Agent",XE),t1(t,{...e,headers:n})}var Su=ZE;async function t1(t,e){let n;for(let r=0;r<=Su;r++){let a;try{a=await fetch(t,e)}catch(i){if(n=i,r>=Su)throw n1(t,i,r+1);await Gg(Yg(r,void 0));continue}if(!QE.has(a.status)||r>=Su)return a;let s=qs(a.headers.get("retry-after"));if(s!==void 0&&s*1e3>Xg)return a;await Gg(Yg(r,s))}throw n??new Error("kanonakFetch: exhausted retries")}function n1(t,e,n){let r=t instanceof URL?t.href:t,a=n>1?` in ${n} attempts`:"";return new TypeError(`Could not reach ${r}${a}: ${Qg(e)}. Check that this machine can reach it, as \`curl ${r}\` would.`,{cause:e})}function Qg(t){let e=t;for(;e instanceof Error&&e.cause!==void 0;)e=e.cause;return e instanceof AggregateError&&e.errors.length>0?e.errors.map(Qg).join("; "):e instanceof Error?e.message:String(e)}function Yg(t,e){let n=Math.min(Xg,e1*2**t),r=Math.floor(n/2+Math.random()*(n/2));return Math.max(r,(e??0)*1e3)}function Gg(t){return new Promise(e=>setTimeout(e,t))}var Fr="*",Au=["publisher","package","version"];function xu(t,e,n){let r=n?` in ${n}`:"";if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(`${e}${r} must be an object mapping a publisher, or "${Fr}", to a package URL template`);let a={};for(let[s,i]of Object.entries(t)){let o=s===Fr;if(!o&&!Zg(s))throw new Error(`${e}${r} names "${s}", which is not a publisher (a publisher is a bare domain, e.g. example.org)`);a[s]=Eu(i,`${e}["${s}"]${r}`,o)}return Object.freeze(a)}function Eu(t,e,n){if(typeof t!="string"||t.trim()==="")throw new Error(`${e} must be a package URL template string`);if(!t.startsWith("https://"))throw new Error(`${e} must be an absolute https:// URL template (got "${t}")`);let r=(t.match(/\{[^{}]*\}/g)??[]).filter(s=>!Au.includes(s.slice(1,-1)));if(r.length>0)throw new Error(`${e} has the unknown placeholder ${r[0]}; a package URL template takes {publisher}, {package} and {version}`);let a=(n?Au:Au.filter(s=>s!=="publisher")).filter(s=>!t.includes(`{${s}}`)).map(s=>`{${s}}`);if(a.length>0)throw new Error(`${e} must contain ${a.join(", ")}`+(n?", so that one template addresses every publisher's packages":"")+` (got "${t}")`);return t}function Vs(t,e){if(t)return Object.hasOwn(t,e)?t[e]:Object.hasOwn(t,Fr)?t[Fr]:void 0}function Ks(t,e,n,r){let a={publisher:e,package:n,version:r},s=t;for(let[o,l]of Object.entries(a))s=s.replaceAll(`{${o}}`,l);let i=s.match(/\{[a-z]+\}/);if(i)throw new Error(`Unresolved variable ${i[0]} in URL template: ${t}`);return Va(s),s}function _u(t,e,n){let r=n?` in ${n}`:"";if(!Array.isArray(t))throw new Error(`${e}${r} must be a list of publishers`);for(let a of t){if(a===Fr)throw new Error(`${e}${r} names "${Fr}": name each publisher whose template you trust for bytes`);if(typeof a!="string"||!Zg(a))throw new Error(`${e}${r} names ${JSON.stringify(a)}, which is not a publisher (a publisher is a bare domain, e.g. example.org)`)}return Object.freeze([...t])}function Zg(t){if(t.trim()!==t)return!1;try{let e=An(t);return e.kind==="publisher"&&e.publisher===t}catch{return!1}}var wo="https://{publisher}/{package}/{version}.kan.yml",vo="https://{publisher}/kanonak.lock",ey="https://{publisher}/{package}/kanonak.lock",ty="https://{publisher}/{package}/{version}/kanonak.lock",Us=1,r1={version:Us};var ny=class{constructor(t){this.fetchFn=t}fetchFn;cache=new Map;getConfig(t){let e=this.cache.get(t);return e||(e=this.fetchConfig(t),this.cache.set(t,e),e.catch(()=>{this.cache.get(t)===e&&this.cache.delete(t)})),e}async fetchConfig(t){let e=`https://${t}/.well-known/kanonak.json`,n;try{n=await(this.fetchFn?this.fetchFn(e,t):gr(e))}catch(a){throw a instanceof dt?a:new Error(`${e} could not be read: ${a.message}. Only a 404 means a publisher serves no discovery document (discovery-defaults-rule).`,{cause:a})}if(n.status===404)return r1;if(!n.ok)throw await mn("publisher config",e,n);let r;try{r=await n.json()}catch(a){throw new Error(`${e} is not JSON, so it isn't a discovery document: ${a.message}`,{cause:a})}return Cu(r,e)}resolvePackageUrl(t,e,n,r){let a=r.package_url_template??wo;return Ks(a,t,e,n)}};function Cu(t,e){if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(`Invalid publisher config at ${e}: a discovery document is a JSON object.`);let n=t;if(typeof n.version!="number")throw new Error(`Invalid publisher config at ${e}: missing or invalid "version" field`);if(n.version!==Us)throw new Error(`${e} is discovery document format ${n.version}, which this client doesn't know: it reads format ${Us} (discovery-version-rule).`);let r={version:n.version};return typeof n.package_url_template=="string"&&(Nu(e,"package_url_template",n.package_url_template),r.package_url_template=n.package_url_template),typeof n.versions_url_template=="string"&&(s1(e,n.versions_url_template),r.versions_url_template=n.versions_url_template),typeof n.release_lock_url_template=="string"&&(i1(e,n.release_lock_url_template),r.release_lock_url_template=n.release_lock_url_template),Array.isArray(n.featured_packages)&&n.featured_packages.every(a=>typeof a=="string")&&(r.featured_packages=n.featured_packages),r}function ju(t,e){let n=`${t}'s authored .well-known/kanonak.json`,r={version:Us};if(e!==void 0)try{r=JSON.parse(e)}catch(l){throw new Error(`${n} is not JSON: ${l.message}`,{cause:l})}let a=Cu(r,n),s=l=>l.replaceAll("{publisher}",t),i={version:a.version,package_url_template:a.package_url_template??s(wo),versions_url_template:a.versions_url_template??s(vo),release_lock_url_template:a.release_lock_url_template??s(ty),featured_packages:a.featured_packages??[]},o=Object.fromEntries(Object.entries(r).filter(([l])=>!(l in i)));return`${JSON.stringify({...i,...o},null,2)}
|
|
173
|
-
`}function bo(t,e,n){return t.replaceAll("{publisher}",e).replaceAll("{package}",n)}function
|
|
174
|
-
`,$o="sha256:";function So(t){let e=Ia.load(t);if(!e||typeof e!="object"||e.version!=="1")return null;let n=e.packages??{};for(let[r,a]of Object.entries(n)){zt(a.version,`The version kanonak.lock pins for ${r}`);for(let s of a.lines??[])zt(s.version,`A line kanonak.lock lists for ${r}`)}return{version:"1",lastUpdated:e.lastUpdated??"",packages:n}}function Hs(t){let e={};for(let r of Object.keys(t.packages).sort())e[r]=t.packages[r];let n=Ia.dump({...t,packages:e},{lineWidth:-1,sortKeys:!1,quotingType:'"'});return o1+n}async function Ao(t){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),n=Array.from(new Uint8Array(e),r=>r.toString(16).padStart(2,"0")).join("");return`${$o}${n}`}async function qr(t,e,n,r){let a=await Ao(e);if(a!==n)throw new Error(`Integrity mismatch for ${t}: the lock declares ${n||"(no integrity)"} but the bytes from ${r} hash to ${a}.`)}var It=class{configResolver;fetchFn;packageUrlTemplates;locks=new Map;constructor(t){this.configResolver=t?.configResolver??new ny(t?.fetchFn),this.fetchFn=t?.fetchFn,this.packageUrlTemplates=t?.packageUrlTemplates?xu(t.packageUrlTemplates,"packageUrlTemplates"):void 0}getConfig(t){return this.configResolver.getConfig(t)}async getPackageUrl(t,e,n){let r=Vs(this.packageUrlTemplates,t);if(r)return Ks(r,t,e,n);let a=await this.configResolver.getConfig(t);return this.configResolver.resolvePackageUrl(t,e,n,a)}lockedSourceUrl(t,e,n){let r=Vs(this.packageUrlTemplates,t);return r?Ks(r,t,e,n.version):n.resolved}async fetchLockedSource(t,e,n){let r=`${t}/${e}@${n.version}`,a=this.lockedSourceUrl(t,e,n),s=await this.fetchSource(r,a,t);return await qr(r,s,n.integrity,a),{url:a,content:s}}async fetchPackageSource(t,e,n){let r=await this.getPackageUrl(t,e,n);return{url:r,content:await this.fetchSource(`${t}/${e}@${n}`,r,t)}}async fetchSource(t,e,n){Va(e);let r=this.fetchFn?await this.fetchFn(e,n):await gr(e);if(!r.ok)throw await mn(t,e,r);return r.text()}async getLock(t){let e=(await this.configResolver.getConfig(t)).versions_url_template;if(e&&a1(e))throw new Error(`${t} serves a lock per package (its versions_url_template is ${e}), so no one lock lists every package it serves.`);return this.lockAt(bo(e??vo,t,""),t)}async getLockEntry(t,e){let n=`${t}/${e}`,r=(await this.configResolver.getConfig(t)).versions_url_template;return r?(await this.lockAt(bo(r,t,e),t))?.packages[n]??null:(await this.lockAt(bo(vo,t,e),t))?.packages[n]??await this.getPackageLockEntry(t,e)}async getPackageLockEntry(t,e){return(await this.lockAt(bo(ey,t,e),t))?.packages[`${t}/${e}`]??null}lockAt(t,e){let n=this.locks.get(t);return n||(n=this.fetchLock(t,e),this.locks.set(t,n),n.catch(()=>{this.locks.get(t)===n&&this.locks.delete(t)})),n}async fetchLock(t,e){Va(t);let n;try{n=this.fetchFn?await this.fetchFn(t,e):await gr(t)}catch(a){throw a instanceof dt?a:new Error(`${t} could not be read: ${a.message}. Only a 404 means a publisher serves no lock there (discovery-defaults-rule).`,{cause:a})}if(n.status===404)return null;if(!n.ok)throw await mn("publisher lock",t,n);let r;try{r=So(await n.text())}catch(a){throw new Error(`${t} is not a readable kanonak.lock: ${a.message}`,{cause:a})}if(!r)throw new Error(`${t} is not a kanonak.lock of format 1, so the versions it lists can't be read.`);return r}},Ka=class{parser=new me;publisherIndex;documents=new Map;exactReads=new Map;contentCache=new Map;fetchFn;onFetch;getFromCache;packageUrlTemplates;templateTrustedPublishers;onTemplateTrustedRead;constructor(t){this.onFetch=t?.onFetch,this.getFromCache=t?.getFromCache,this.fetchFn=t?.fetchFn,this.packageUrlTemplates=t?.packageUrlTemplates;for(let e of t?.templateTrustedPublishers??[])if(!Vs(this.packageUrlTemplates,e))throw new Error(`templateTrustedPublishers names ${e}, but no package URL template applies to it, so there is no template to trust: add one for ${e}, or "*" in packageUrlTemplates.`);this.templateTrustedPublishers=new Set(t?.templateTrustedPublishers??[]),this.onTemplateTrustedRead=t?.onTemplateTrustedRead,this.publisherIndex=new It({...t?.fetchFn?{fetchFn:t.fetchFn}:{},...t?.packageUrlTemplates?{packageUrlTemplates:t.packageUrlTemplates}:{}})}async getHighestCompatibleVersionAsync(t,e){if(e.versionOperator===we.Exact){let n=ee(e.version),r=await this.fromMemoOrCache(t,e.packageName,n);if(r)return r;let a=`${t}/${e.packageName}@${n}`,s=this.exactReads.get(a);return s||(s=this.readExact(t,e),this.exactReads.set(a,s)),s}return this.resolveThroughLock(t,e)}readExact(t,e){return this.templateTrustedPublishers.has(t)?this.readOnTemplateTrust(t,e):this.resolveThroughLock(t,e)}async resolveThroughLock(t,e){let n=e.versionOperator===we.Exact,r;try{r=await this.publisherIndex.getLockEntry(t,e.packageName)}catch(s){throw n&&Vs(this.packageUrlTemplates,t)?l1(s,t):s}let a=r&&Tu(t,e.packageName,r,[e]);return a?this.fetchPinned(t,e.packageName,a):r&&!n?null:this.resolveByDirectFetch(t,e)}async fetchPinned(t,e,n){let r=n.version,a=`${t}/${e}@${r}`,s=await this.fromMemoOrCache(t,e,r);if(s)return s;let{content:i}=await this.publisherIndex.fetchLockedSource(t,e,n),o=this.parser.parse(i);return mr(o,t,e,r),this.onFetch&&await this.onFetch(t,e,r,i),this.documents.set(a,o),this.contentCache.set(a,i),o}async fromMemoOrCache(t,e,n){let r=`${t}/${e}@${n}`,a=this.documents.get(r);if(a)return a;if(!this.getFromCache)return null;let s=await this.getFromCache(t,e,n);if(s==null)return null;let i;try{i=this.parser.parse(s),mr(i,t,e,n)}catch(o){throw new Error(`Cached content for ${r} is not a usable copy of that package \u2014 refusing to fall through to a fetch that would hide it. ${o.message}`,{cause:o})}return this.documents.set(r,i),this.contentCache.set(r,s),i}async readOnTemplateTrust(t,e){let n=await this.resolveByDirectFetch(t,e);if(n&&this.onTemplateTrustedRead){let r=ee(e.version),a=await this.publisherIndex.getPackageUrl(t,e.packageName,r);this.onTemplateTrustedRead({publisher:t,packageName:e.packageName,version:r,url:a})}return n}async resolveByDirectFetch(t,e){let n=e.packageName,r=e.versionOperator===we.Exact?await this.publisherIndex.getPackageUrl(t,n,ee(e.version)):`https://${t}/${n}.kan.yml`,a=await this.fetchFollowing(r,t);if(!a)return null;let s=this.parser.parse(a.content),i=s.metadata.namespace_;if(!i||!i.version)throw new Error(`Producer origin returned a package with no namespace/version for ${t}/${n}`);let o=ee(i.version);mr(s,t,n,o);let l=`${t}/${n}@${o}`;return this.onFetch&&await this.onFetch(t,n,o,a.content),this.documents.set(l,s),this.contentCache.set(l,a.content),s}async fetchFollowing(t,e,n=4){let r=t;for(let a=0;a<n;a++){Va(r);let s=this.fetchFn?await this.fetchFn(r,e):await gr(r,{redirect:"manual"});if(s.status===301||s.status===302){let i=s.headers.get("location");if(!i)throw new Error(`Redirect with no Location header from ${r}`);r=new URL(i,r).toString();continue}if(s.status===404)return null;if(!s.ok)throw await mn("Kanonak package",r,s);return{url:r,content:await s.text()}}throw new Error(`Too many redirects resolving ${t}`)}async getAllDocumentsAsync(){return Array.from(this.documents.values())}async getDocumentAsync(t){return this.documents.get(t)??null}async getDocumentsByNamespaceAsync(t,e){return Array.from(this.documents.values()).filter(n=>{let r=n.metadata.namespace_;return r&&r.publisher===t&&r.package_===e})}async saveDocumentAsync(t,e){throw new Error("HttpKanonakDocumentRepository is read-only")}async deleteDocumentAsync(t){throw new Error("HttpKanonakDocumentRepository is read-only")}async clearNamespaceAsync(t,e){throw new Error("HttpKanonakDocumentRepository is read-only")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(t){return this.contentCache.get(t)??null}async getDocumentUriAsync(t){let e=t.match(/^(.+?)\/(.+?)@(.+)$/);if(!e)return null;let[,n,r,a]=e;return this.publisherIndex.getPackageUrl(n,r,a)}};function l1(t,e){let n=` Your package URL template serves ${e}'s sources, but an exact version's sha256 still comes from ${e}. To read its exact versions from the template alone, trusting its bytes, name ${e} in templateTrustedPublishers.`;return t instanceof nr?new nr(t.message+n,t.url,t.status,t.problem,t.retryAfterSeconds):t instanceof dt?new dt(t.message+n):t instanceof Error?new Error(t.message+n,{cause:t}):t}import{readFileSync as c1,writeFileSync as u1,existsSync as p1}from"fs";import{createHash as f1}from"crypto";var ry="kanonak.lock";function yr(t=ry){return p1(t)?So(c1(t,"utf-8")):null}function Ws(t,e=ry){t.lastUpdated=new Date().toISOString(),u1(e,Hs(t),"utf-8")}function va(t){let e=f1("sha256").update(t).digest("hex");return`${$o}${e}`}var py=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Shape="Shape",t.Unknown="Unknown",t))(py||{}),fy=(t=>(t.InstanceOf="instanceOf",t.SubClassOf="subClassOf",t.Domain="domain",t.Range="range",t.ObjectRelationship="objectRelationship",t.SubPropertyOf="subPropertyOf",t.PropertyValue="propertyValue",t.EmbeddedLink="embeddedLink",t))(fy||{});function Ru(t){let e=t.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!e)throw new Error("Publisher host cannot be empty");return e}function zs(t){let e;try{e=new URL(t)}catch{throw new Error(`credential scope '${t}' is not an absolute URL`)}if(e.protocol!=="https:")throw new Error(`credential scope '${t}' is not https`);if(e.username||e.password)throw new Error(`credential scope '${t}' carries userinfo`);if(e.search||t.includes("?"))throw new Error(`credential scope '${t}' has a query`);if(e.hash||t.includes("#"))throw new Error(`credential scope '${t}' has a fragment`);let n=e.pathname;return{origin:e.origin,prefix:n.endsWith("/")?n:`${n}/`}}function Eo(t,e){let n=typeof t=="string"?zs(t):t,r;try{r=new URL(e)}catch{return!1}if(r.protocol!=="https:"||r.origin!==n.origin)return!1;let a=r.pathname;return a.startsWith(n.prefix)||`${a}/`===n.prefix}function dy(t,e){let n,r=-1;for(let a of t){let s=zs(a.scope);Eo(s,e)&&s.prefix.length>r&&(n=a,r=s.prefix.length)}return n}var Ys=class{cache=new Map;wellKnownCache=new Map;metadataUrlCache=new Map;async protectedResourceMetadata(t){let e=new URL(t).href,n=this.wellKnownCache.get(e);return n||(n=this.fetchWellKnown(e),this.wellKnownCache.set(e,n)),n}async protectedResourceMetadataAt(t,e){let n=new URL(t).href,r=this.metadataUrlCache.get(n);r||(r=this.fetchMetadataAt(n),this.metadataUrlCache.set(n,r));let a=await r,s;try{s=Eo(zs(a.resource),e)}catch(i){throw new Error(`Protected resource metadata at ${n} names an unusable resource '${a.resource}': ${i.message}`)}if(!s)throw new Error(`Protected resource metadata at ${n} names the resource '${a.resource}', which does not contain the requested ${e}. RFC 9728 \xA73.3 forbids using it.`);return a}async fetchWellKnown(t){let e=new URL(t),n=e.pathname==="/"?"":e.pathname,r=`${e.origin}/.well-known/oauth-protected-resource${n}`,a=await gr(r,{redirect:"manual"});if(a.status===404||a.status===410||a.status>=300&&a.status<400)return null;if(!a.ok)throw await mn("protected resource metadata",r,a);if(!ay(a.headers.get("content-type")))return null;let s=sy(r,await a.text());if(!URL.canParse(s.resource)||new URL(s.resource).href!==t)throw new Error(`Protected resource metadata at ${r} names the resource '${s.resource}', not '${t}'. RFC 9728 \xA73.3 forbids using it.`);return s}async fetchMetadataAt(t){let e=await gr(t,{redirect:"manual"});if(!e.ok)throw await mn("protected resource metadata",t,e);if(!ay(e.headers.get("content-type")))throw new Error(`Protected resource metadata at ${t} is not a JSON document (${e.headers.get("content-type")??"no content type"})`);return sy(t,await e.text())}async discover(t){let e=Ru(t);if(this.cache.has(e))return this.cache.get(e);let n=`https://${e}/.well-known/oauth-authorization-server`,r=await this.tryEndpoint(n);if(!r){let a=`https://${e}/.well-known/openid-configuration`;r=await this.tryEndpoint(a)}return this.cache.set(e,r),r}async supportsOAuth(t){return await this.discover(t)!==null}static supportsPkceS256(t){return t.codeChallengeMethodsSupported?.some(e=>e.toUpperCase()==="S256")??!1}static supportsDynamicRegistration(t){return!!t.registrationEndpoint}static supportsAuthorizationCode(t){return t.responseTypesSupported?.some(e=>e.toLowerCase()==="code")??!1}static supportsEnrollment(t){return!!t.enrollmentEndpoint}static supportsSession(t){return!!t.sessionEndpoint}async tryEndpoint(t){let e;try{e=await fetch(t)}catch(r){let a=r instanceof Error?r.message:String(r);return a.includes("ENOTFOUND")||a.includes("ECONNREFUSED")?(console.error(` OAuth discovery: ${t} \u2014 host unreachable (${a})`),console.error(" If the server is behind a VPN, ensure you are connected.")):a.includes("CERT")||a.includes("SSL")||a.includes("TLS")?(console.error(` OAuth discovery: ${t} \u2014 TLS error (${a})`),console.error(" If using a custom CA certificate, set NODE_EXTRA_CA_CERTS=/path/to/ca.pem")):console.error(` OAuth discovery: ${t} \u2014 network error: ${a}`),null}if(!e.ok)return e.status===404||(e.status===403?(console.error(` OAuth discovery: ${t} \u2014 HTTP 403 Forbidden`),console.error(" Access may be blocked by a firewall, proxy, or WAF.")):e.status>=500&&(console.error(` OAuth discovery: ${t} \u2014 HTTP ${e.status} server error`),console.error(" The authorization server returned an internal error. Contact your IDP administrator."))),null;let n;try{n=await e.json()}catch{return console.error(` OAuth discovery: ${t} \u2014 response is not valid JSON`),console.error(" The endpoint may be returning HTML instead of JSON. Check IDP configuration."),null}return{issuer:kr(n.issuer),authorizationEndpoint:kr(n.authorization_endpoint),tokenEndpoint:kr(n.token_endpoint),registrationEndpoint:kr(n.registration_endpoint),revocationEndpoint:kr(n.revocation_endpoint),scopesSupported:br(n.scopes_supported),responseTypesSupported:br(n.response_types_supported),grantTypesSupported:br(n.grant_types_supported),codeChallengeMethodsSupported:br(n.code_challenge_methods_supported),tokenEndpointAuthMethodsSupported:br(n.token_endpoint_auth_methods_supported),dpopSigningAlgValuesSupported:br(n.dpop_signing_alg_values_supported),enrollmentEndpoint:kr(n.enrollment_endpoint),enrollmentIssuanceProtocols:br(n.enrollment_issuance_protocols),enrollmentKeyTypes:br(n.enrollment_key_types),enrollmentScopesSupported:br(n.enrollment_scopes_supported),enrollmentConsentBindingParam:kr(n.enrollment_consent_binding_param),sessionEndpoint:kr(n.session_endpoint),sessionEndpointAuthMethod:kr(n.session_endpoint_auth_method)}}};function ay(t){let e=(t??"").split(";")[0].trim().toLowerCase();return e==="application/json"||e.endsWith("+json")}function sy(t,e){let n;try{n=JSON.parse(e)}catch{throw new Error(`Protected resource metadata at ${t} is not valid JSON`)}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`Protected resource metadata at ${t} is not a JSON object`);let r=n;if(typeof r.resource!="string")throw new Error(`Protected resource metadata at ${t} has no "resource"`);let a=r.authorization_servers;if(a!==void 0&&!(Array.isArray(a)&&a.every(s=>typeof s=="string")))throw new Error(`Protected resource metadata at ${t} has an "authorization_servers" that is not a list of strings`);return{resource:r.resource,authorizationServers:a??[]}}function kr(t){return typeof t=="string"?t:null}function br(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"):null}var Ua=1,d1=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,h1=/[\r\n\0]/;function Jt(t,e){return{ok:!1,problem:t,message:e}}function xo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Iu(t,e,n){if(!xo(e))return Jt("malformed","the answer is not a JSON object");if(e.status==="declined")return e.reason!==void 0&&typeof e.reason!="string"?Jt("reason",`a decline's "reason" must be a string`):{ok:!0,answer:e.reason===void 0?{status:"declined"}:{status:"declined",reason:e.reason}};if(e.status!=="credential")return Jt("status",`"status" must be "credential" or "declined", not ${JSON.stringify(e.status)}`);let r=e.headers;if(!xo(r)||Object.keys(r).length===0)return Jt("headers",'a credential needs "headers": an object with at least one header');let a={};for(let[l,c]of Object.entries(r)){if(!d1.test(l))return Jt("headers",`header name ${JSON.stringify(l)} is not a valid field name`);if(typeof c!="string"||h1.test(c))return Jt("headers",`header '${l}' must be a string without CR, LF or NUL`);a[l]=c}if(typeof e.scope!="string")return Jt("scope",'a credential needs a "scope" string');let s;try{s=zs(e.scope)}catch(l){return Jt("scope",l.message)}if(!Eo(s,t.resource))return Jt("scope-excludes-resource",`scope '${e.scope}' does not contain the requested resource ${t.resource}`);let i;if(e.expiresAt!==void 0){if(typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt))return Jt("expires-at",'"expiresAt" must be a number of Unix seconds');if(e.expiresAt<=n)return Jt("expired",`the credential expired at ${e.expiresAt} (now ${Math.floor(n)})`);i=e.expiresAt}let o={status:"credential",headers:a,scope:e.scope};return i!==void 0&&(o.expiresAt=i),{ok:!0,answer:o}}function hy(t,e,n){return xo(e)?e.version!==Ua?Jt("version",`"version" must be ${Ua}, not ${JSON.stringify(e.version)}`):Iu(t,e,n):Jt("malformed","the answer is not a JSON object")}function my(t){return xo(t)?t.version!==Ua?Jt("version",`"version" must be ${Ua}, not ${JSON.stringify(t.version)}`):t.status!=="erased"?Jt("status",`"status" must be "erased", not ${JSON.stringify(t.status)}`):{ok:!0,answer:{status:"erased"}}:Jt("malformed","the answer is not a JSON object")}function gy(t){let e=new y1(t),n=[];for(e.skipListSeparators();!e.atEnd();){let r=e.token();if(!r)throw e.error("expected an auth-scheme");let a={scheme:r,params:{}};n.push(a);let s=e.skipSpaces();if(e.atEnd()||e.peek()===","){e.skipListSeparators();continue}if(!s)throw e.error(`expected a space after the auth-scheme '${r}'`);let i=e.tryParam();if(i)for(iy(a,i,e);e.skipOws(),!e.atEnd();){if(e.peek()!==",")throw e.error('expected "," between auth-params');if(e.skipListSeparators(),e.atEnd())break;let o=e.pos,l=e.tryParam();if(!l){e.pos=o;break}iy(a,l,e)}else{let o=e.token68();if(!o)throw e.error(`expected a token68 or auth-params after '${r}'`);if(a.token68=o,e.skipOws(),!e.atEnd()&&e.peek()!==",")throw e.error("unexpected text after token68")}e.skipListSeparators()}return n}function iy(t,[e,n],r){if(Object.prototype.hasOwnProperty.call(t.params,e))throw r.error(`auth-param '${e}' appears twice in the '${t.scheme}' challenge`);t.params[e]=n}var m1=/[!#$%&'*+\-.^_`|~0-9A-Za-z]/,g1=/[A-Za-z0-9\-._~+/]/,y1=class{constructor(t){this.s=t}s;pos=0;atEnd(){return this.pos>=this.s.length}peek(){return this.s[this.pos]}error(t){return new Error(`Malformed WWW-Authenticate (${t} at offset ${this.pos}): ${this.s}`)}skipSpaces(){let t=this.pos;for(;!this.atEnd()&&(this.peek()===" "||this.peek()===" ");)this.pos++;return this.pos>t}skipOws(){this.skipSpaces()}skipListSeparators(){for(;;){if(this.skipOws(),this.peek()!==",")return;this.pos++}}token(){let t=this.pos;for(;!this.atEnd()&&m1.test(this.peek());)this.pos++;return this.s.slice(t,this.pos)}token68(){let t=this.pos;for(;!this.atEnd()&&g1.test(this.peek());)this.pos++;if(this.pos===t)return"";for(;!this.atEnd()&&this.peek()==="=";)this.pos++;return this.s.slice(t,this.pos)}tryParam(){let t=this.pos,e=this.token();if(!e)return null;if(this.skipOws(),this.peek()!=="=")return this.pos=t,null;this.pos++,this.skipOws();let n;if(this.peek()==='"')n=this.quotedString();else if(n=this.token(),!n)return this.pos=t,null;return[e.toLowerCase(),n]}quotedString(){this.pos++;let t="";for(;;){if(this.atEnd())throw this.error("unterminated quoted-string");let e=this.s[this.pos++];if(e==='"')return t;if(e==="\\"){if(this.atEnd())throw this.error("unterminated quoted-pair");t+=this.s[this.pos++]}else t+=e}}},yy=30;function Mu(t,e={}){let n=e.discovery??new Ys,r=e.nowSeconds??(()=>Date.now()/1e3),a=[],s=new WeakSet,i=new Map,o=new Map,l=h=>{let g=r();return a=a.filter(m=>m.expiresAt===void 0||m.expiresAt-yy>g),dy(a,h)},c=(h,g)=>{let m=(o.get(h)??Promise.resolve()).then(g);return o.set(h,m.then(()=>{},()=>{})),m},u=h=>{let g=i.get(h);return g||(g=n.protectedResourceMetadata(h).then(m=>m!==null,m=>{if(m instanceof nr&&(m.status===401||m.status===403))return!0;throw new dt(`Could not learn whether ${h} requires a credential: ${ky(m)}`)}),i.set(h,g)),g},p=async(h,g)=>{let m=Iu(g,await oy(()=>h.get(g),g.resource),r());if(!m.ok)throw new dt(`The credential provider answered for ${g.resource} outside the protocol (${m.problem}): ${m.message}`);let y=m.answer;if(y.status==="declined")return y.reason===void 0?{}:{declined:y.reason};let v={headers:y.headers,scope:y.scope};return y.expiresAt!==void 0&&(v.expiresAt=y.expiresAt),a=a.filter(k=>k.scope!==v.scope),a.push(v),v},f=(h,g,m)=>gr(h,{method:g,redirect:"manual",headers:m?.headers??{}});return async(h,g,m="GET")=>{let y=new URL(h).origin,v=l(h);if(!v&&t&&await u(y)){let _=await c(y,async()=>l(h)??p(t,{resource:h,method:m}));ly(_)&&(v=_)}let k=await f(h,m,v);if(k.status!==401&&k.status!==403)return k;let w=uy(k,h),S=k.status===401;if(!S&&!cy(w))return k;if(i.set(y,Promise.resolve(!0)),!t)throw await Ou(`${h} requires a credential, and no credential provider is configured`,k);let A={resource:h,method:m,challenges:w},C=await c(y,async()=>{let _=l(h);if(_&&_!==v)return _;if(S&&v&&!s.has(v)){s.add(v);let B=v;a=a.filter(X=>X!==B),await oy(()=>t.erase({...A,scope:B.scope}),h)}return p(t,A)});if(!ly(C)){let _=C.declined?`: ${C.declined}`:"";throw await Ou(`${h} requires a credential, and the credential provider declined${_}`,k)}let N=await f(h,m,C);if(N.status===401||N.status===403&&cy(uy(N,h)))throw await Ou(`${h} rejected the credential for ${C.scope} after asking the provider again`,N);return N}}async function oy(t,e){try{return await t()}catch(n){throw n instanceof dt?n:new dt(`The credential provider failed for ${e}: ${ky(n)}`)}}function ky(t){return t instanceof Error?t.message:String(t)}function ly(t){return"scope"in t}function cy(t){return t.some(e=>e.params.error==="insufficient_scope")}function uy(t,e){let n=t.headers.get("www-authenticate");if(!n)return[];try{return gy(n)}catch(r){throw new dt(`${e} answered ${t.status} with a challenge that cannot be read: ${r.message}`)}}async function Ou(t,e){return new dt(`${t}. The server answered ${await ko(e)}`)}var Ba="KANONAK_TOKEN";function k1(){return typeof process<"u"&&process.env?process.env:{}}function Lu(t){return`${Ba}_${Ru(t).toUpperCase().replace(/[^A-Z0-9]+/g,"_")}`}var by=class{tokens;env;discovery;constructor(t={}){this.tokens=t.tokens??{},this.env=t.env??k1(),this.discovery=t.discovery??new Ys}async get(t){let e=await this.metadataFor(t);if("declined"in e)return{status:"declined",reason:e.declined};let n=e.metadata;if(n.authorizationServers.length===0)return{status:"declined",reason:`the protected-resource metadata for ${n.resource} names no authorization server`};let r=n.authorizationServers.map(a=>new URL(a).host);for(let a of r){let s=this.tokens[a]??this.env[Lu(a)]??this.env[Ba];if(s)return{status:"credential",headers:{Authorization:`Bearer ${s}`},scope:n.resource}}return{status:"declined",reason:`no token is configured for ${r.join(" or ")}: set ${r.map(Lu).join(" or ")}, or ${Ba}`}}async erase(){}async metadataFor(t){let e=t.challenges?.find(a=>a.params.resource_metadata!==void 0)?.params.resource_metadata;if(e!==void 0)return{metadata:await this.discovery.protectedResourceMetadataAt(e,t.resource)};let n=new URL(t.resource).origin,r;try{r=await this.discovery.protectedResourceMetadata(n)}catch(a){if(a instanceof nr&&(a.status===401||a.status===403))return{declined:`${n} requires a credential even for its protected-resource metadata, and its challenge names no resource_metadata`};throw a}return r?{metadata:r}:{declined:`${n} publishes no RFC 9728 protected-resource metadata naming its authorization server, so no token is presented to it`}}};function wa(t,e,n,r){let a=Du(t);if(a.length>0){let l=Fu(a,e,n);return l?{transformation:l.transformation,source:"instance"}:void 0}let s=new Set,i=w1(t);for(;i.length>0;){let l=i.shift(),c=Sy(l.subject);if(s.has(c))continue;s.add(c);let u=vy(r,l.subject);if(u.length===0)continue;let p=u.flatMap(Du),f=Fu(p,e,n);if(f)return{transformation:f.transformation,source:{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}};for(let h of u)for(let g of $1(h))i.push(g)}let o={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!s.has(Sy(o))){let l=vy(r,o).flatMap(Du),c=Fu(l,e,n);if(c)return{transformation:c.transformation,source:o}}}function Du(t){let e=[];for(let n of t.statement)if(n instanceof he&&_o(n,"kanonak.org","derivation","derivations"))for(let r of n.object??[]){if(!(r instanceof te))continue;let a=b1(r);a&&e.push(a)}return e}function Fu(t,e,n){let r=t.filter(i=>$y(i.format,e)&&$y(i.variant,n));if(r.length<=1)return r[0];let a=r[0].transformation,s=r[0];for(let i of r){let o=i.transformation;if(o.publisher!==a.publisher||o.package_!==a.package_||o.name!==a.name)continue;let l=At(s.transformation.version),c=At(o.version);l&&c&&_e(c,l)>0&&(s=i)}return s}function b1(t){let e,n,r;for(let a of t.statement)a instanceof de?_o(a,"kanonak.org","derivation","format")?e=wy(a):_o(a,"kanonak.org","derivation","variant")&&(n=wy(a)):a instanceof Ae&&_o(a,"kanonak.org","derivation","transformation")&&(r=v1(a.object));if(!(!e||!r))return n||(n={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:e,variant:n,transformation:r}}function v1(t){let e,n,r,a;for(let s of t.statement){if(!(s instanceof Ce))continue;let i=s.predicate?.subject?.name;i==="publisher"?e=s.object:i==="package"?n=s.object:i==="version"?r=s.object:i==="name"&&(a=s.object)}if(!(!e||!n||!r||!a))return{publisher:e,package_:n,version:r,name:a}}function w1(t){let e=[];for(let n of t.statement)n instanceof de&&n.predicate?.subject?.name==="type"&&n.object instanceof D&&e.push(n.object);return e}function $1(t){let e=[];for(let n of t.statement)if(n instanceof de){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof D&&e.push(n.object)}else if(n instanceof he){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let r of n.object??[])r instanceof D&&e.push(r)}return e}function vy(t,e){let n=[];for(let r of t)!(r instanceof q)||r.name!==e.name||(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(r);return n.sort((r,a)=>{let s=At((r.namespace||"").split("@")[1]??""),i=At((a.namespace||"").split("@")[1]??"");return!s||!i?0:_e(i,s)}),n}function _o(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function wy(t){let e=t.object.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}function $y(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Sy(t){return`${t.publisher}/${t.package_}/${t.name}`}function _y(t){return typeof t=="object"&&t!==null&&Array.isArray(t.subjects)}function qu(t){return oo(_y(t)?t:Cy(t))}function Co(t){return ou(_y(t)?t:Cy(t))}function Cy(t){let e=[],n=[];for(let r of t)if(r instanceof q){let a=P1(r);n.push({uri:a,statements:Vu(r,a,e)})}if(e.length>0)throw S1(e);return{subjects:n}}function Vu(t,e,n){for(let r of t.unresolvedPredicates)n.push(`'${r.key}' on ${e}${r.builtin?" (a built-in term whose home did not resolve)":""}`);return A1(t.statement,e,n)}function jy(t,e,n){return new Error(`canonicalForm: the literal ${t?`of '${t}' on ${e}`:`at ${e}`} can't take its datatype, since its property's range didn't resolve: ${n}. Written untyped, it would hash otherwise than anything that types it from that range. Make the version each of those imports states available, then hash again`)}function S1(t){return new Error(`canonicalForm: ${t.length===1?"a property is":`${t.length} properties are`} not defined or imported, so ${t.length===1?"its statement":"their statements"} cannot enter the canonical form: ${t.join(", ")}. A hash covers every statement a document makes: define or import each property, and resolve each import, as 'kanonak validate' reports, then hash again`)}function A1(t,e,n){let r=[];for(let a of t){let s=N1(a);if(!s)throw new Error(`canonicalForm: a ${jo(a)} has no predicate, so it cannot enter the canonical form; give every statement the property it asserts before hashing`);if(a instanceof he&&x1(a.predicate.subject)){r.push(..._1(a,s));continue}r.push({predicate:s,value:C1(a,s,e,n)})}return r}function x1(t){let e=Zn("type");return e!==void 0&&t.name==="type"&&t.publisher===e.publisher&&t.package_===e.package_}var Ay=new TextEncoder;function E1(t,e){let n=Ay.encode(t),r=Ay.encode(e),a=Math.min(n.length,r.length);for(let s=0;s<a;s++)if(n[s]!==r[s])return n[s]-r[s];return n.length-r.length}function _1(t,e){let n=[];for(let r of t.object){if(!(r instanceof D))throw new Error(`canonicalForm: a multi-valued type statement must contain only entity references, got ${jo(r)}`);n.push(Ku(r))}n.sort(E1);for(let r=1;r<n.length;r++)if(n[r-1]===n[r])throw new Error(`canonicalForm: duplicate type ${n[r]} in a multi-valued type statement`);return n.map(r=>({predicate:e,value:{ref:r}}))}function C1(t,e,n,r){if(t instanceof Yn&&t.carrier)return{lit:t.lexical??String(t.object),datatype:Py(t.carrier)};if(t instanceof Yn&&t.rangeUnresolved!==void 0)throw jy(e,n,t.rangeUnresolved);if(t instanceof Ce)return{raw:t.object};if(t instanceof et)return{raw:t.lexical??String(t.object)};if(t instanceof Ge)return{raw:t.lexical??String(t.object)};if(t instanceof de)return{ref:Ku(t.object)};let a=`${n}.${e.slice(e.lastIndexOf("/")+1)}`;if(t instanceof Ae)return Ny(t.object,a,r);if(t instanceof he)return{list:t.object.map((s,i)=>j1(s,`${a}[${i}]`,r))};throw new Error(`canonicalForm: the statement of '${e}' is of an unrecognized kind (${jo(t)}); add canonicalization support before hashing data that contains it`)}function Ny(t,e,n){let r=Vu(t,t.name?`${e}.${t.name}`:e,n);return t.name&&t.name.length>0?{embed:{name:t.name,statements:r}}:{embed:{statements:r}}}function j1(t,e,n){if(t instanceof D)return{ref:Ku(t)};if(t instanceof te)return Ny(t,e,n);if(t instanceof xt){if(t.carrier)return{lit:t.lexical??String(t.value),datatype:Py(t.carrier)};if(t.rangeUnresolved!==void 0)throw jy(void 0,e,t.rangeUnresolved);let r=t.value;if(typeof r=="string")return{raw:r};if(typeof r=="number")return{raw:String(r)};if(typeof r=="boolean")return{raw:String(r)}}if(t instanceof kt)return{embed:{statements:Vu(t,e,n)}};throw new Error(`canonicalForm: list item of unrecognized kind (${jo(t)}); add canonicalization support before hashing data that contains it`)}function Py(t){return t===oe.LangString?"kanonak.org/core-rdf/langString":`kanonak.org/core-xsd/${t}`}function jo(t){return t.constructor?.name??typeof t}function N1(t){let e=t.predicate;if(e)return Ty(e.subject)}function P1(t){let e=t.namespace??"",n=t.name??"";return`${e}/${n}`}function Ku(t){return Ty(t.subject)}function Ty(t){let e=t.version;if(e&&typeof e.major=="number")return`${t.publisher}/${t.package_}@${e.major}.${e.minor}.${e.patch}/${t.name}`;if(T1(t))throw O1(t);return`${t.publisher}/${t.package_}/${t.name}`}function T1(t){let e=Zn(t.name);return e!==void 0&&e.publisher===t.publisher&&e.package_===t.package_}function O1(t){let e=`${t.publisher}/${t.package_}`;return new Error(`canonicalForm: the built-in term '${e}/${t.name}' names no version, so it cannot enter the canonical form, where every reference names one (canonical-scalar-representation-rule). Its home, ${e}, didn't resolve: the document imports it at a version the repository doesn't hold, or names the term with neither an import nor a link of ${e} while none is held. Make the version the import states available, or import ${e}, or link it with = where it depends on the document's package (home-link-rule), then hash again`)}var L1="0.0.0",Oy=class{constructor(t,e=new me,n){this.repository=t,this.parser=e,this.objectParser=n??new je(this.parser)}repository;parser;objectParser;imports(){return new Ry}serializeValue(t,e){return Iy(t,e)}async buildContentAddressed(t){let e=t.book.toImports(),n=await this.hashBody(t.publisher,e,t.body),r=Ly(n),a={type:"EphemeralPackage",publisher:t.publisher,imports:e};t.contentHashProperty&&(a[t.contentHashProperty]=n),Object.assign(a,t.header??{}),a.imports=e;let s={[r]:a,...t.body},i=this.dump(s);return{yaml:i,byteCount:Ey(i),contentHash:n,packageName:r,publisher:t.publisher,resourceCount:Object.keys(t.body).length}}async buildNamed(t){let e=t.book.toImports(),n={type:t.type??"Package",publisher:t.publisher,version:t.version,imports:e},r;t.contentHashProperty&&(r=await this.hashBody(t.publisher,e,t.body),n[t.contentHashProperty]=r),Object.assign(n,t.header??{}),n.imports=e;let a={[t.name]:n,...t.body},s=this.dump(a),i={yaml:s,byteCount:Ey(s),packageName:t.name,publisher:t.publisher,resourceCount:Object.keys(t.body).length};return r!==void 0&&(i.contentHash=r),i}dump(t){return Ns(t,{lineWidth:-1})}async hashBody(t,e,n){let r={[xy]:{type:"EphemeralPackage",publisher:t,imports:e},...n},a=this.parser.parse(Ns(r,{lineWidth:-1})),s=a.metadata.namespace_?.toString(),i=(await this.objectParser.parseKanonaks(new at(a,this.repository))).filter(o=>o instanceof q&&o.namespace===s&&o.name!==xy);for(let o of i)o.namespace="ephemeral";return Co(i)}},xy="__pkgbuilder_probe__";function Ey(t){return new TextEncoder().encode(t).length}function Ly(t){let e="sha256:",n=t.startsWith(e)?e.length:0;return`q-${t.slice(n,n+16)}`}var Ry=class{byKey=new Map;aliases=new Set;ensure(t,e,n,r,a=we.Major){let s=`${t}/${e}@${n}`,i=this.byKey.get(s);if(i)return i.alias;let o=this.uniqueAlias(r);return this.byKey.set(s,{publisher:t,package_:e,version:n,alias:o,match:a}),o}ref(t){if(!t.version||typeof t.version.major!="number")throw new Error(`Cannot serialize a reference to ${t.publisher}/${t.package_}/${t.name} without a version.`);return`${this.ensure(t.publisher,t.package_,ee(t.version),t.package_)}.${t.name}`}refLatest(t,e,n,r){return`${this.ensure(t,e,L1,r??e,we.Any)}.${n}`}toImports(){let t=new Map;for(let e of this.byKey.values()){let n=t.get(e.publisher)??[];n.push(e),t.set(e.publisher,n)}return[...t.keys()].sort().map(e=>({publisher:e,packages:t.get(e).sort((n,r)=>n.package_<r.package_?-1:1).map(n=>({package:n.package_,match:Dt(n.match),version:n.version,alias:n.alias}))}))}uniqueAlias(t){let e=Uu(t)||"pkg",n=e,r=2;for(;this.aliases.has(n);)n=`${e}${r++}`;return this.aliases.add(n),n}};function Iy(t,e){if(t!=null){if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(t instanceof D)return e.ref(t.subject);if(Array.isArray(t)){let n=t.map(r=>Iy(r,e)).filter(r=>r!==void 0);return n.length>0?n:void 0}if(t instanceof te)throw new Error("Embedded values are not yet supported by PackageBuilder. Produce a literal or a reference, or compose the embedded shape into the output class.");if(R1(t))throw new Error(`Value produced a bare URI without a version (${t.publisher}/${t.package_}/${t.name}); cannot serialize it as a reference.`)}}function Uu(t){return t.replace(/[^A-Za-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function R1(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}var Vr=class{documents=new Map;documentContents=new Map;parser;constructor(t){this.parser=t}async getAllDocumentsAsync(){return Array.from(this.documents.values())}async getDocumentAsync(t){return this.documents.get(t)??null}async getDocumentsByNamespaceAsync(t,e){let n=[];for(let r of this.documents.values())r.metadata?.namespace_?.publisher===t&&r.metadata?.namespace_?.package_===e&&n.push(r);return n}async getHighestCompatibleVersionAsync(t,e){let n=[];for(let a of this.documents.values())a.metadata?.namespace_?.publisher===t&&a.metadata?.namespace_?.package_===e.packageName&&a.metadata?.namespace_?.version!==void 0&&n.push(a);if(n.length===0)return null;let r=n.filter(a=>{let s=a.metadata.namespace_.version;return s?on(s,e):!1});return r.length===0?null:(r.sort((a,s)=>{let i=a.metadata.namespace_.version,o=s.metadata.namespace_.version;return!i&&!o?0:i?o?_e(o,i):-1:1}),r[0])}async saveDocumentAsync(t,e,n){this.documents.set(e,t),this.documentContents.set(e,n??this.parser.save(t))}async deleteDocumentAsync(t){this.documents.delete(t),this.documentContents.delete(t)}async clearNamespaceAsync(t,e){let n=[];for(let[r,a]of this.documents.entries())a.metadata?.namespace_?.publisher===t&&a.metadata?.namespace_?.package_===e&&n.push(r);for(let r of n)this.documents.delete(r),this.documentContents.delete(r)}async getAllDocumentReferencesAsync(){let t=[];for(let e of this.documents.values())e.metadata?.namespace_&&t.push({identifier:e.metadata.namespace_.toString(),uri:`kanonak://${e.metadata.namespace_}`,hasParseError:!1});return t}async getDocumentContentAsync(t){let e=this.documentContents.get(t);if(e!==void 0)return e;let n=this.documents.get(t);return n!==void 0?this.parser.save(n):null}async getDocumentUriAsync(t){let e=this.documents.get(t);return e?e.metadata?.namespace_?`kanonak://${e.metadata.namespace_}`:`kanonak://${t}`:null}};var Xy=Th(Jy(),1);import*as Mo from"fs";import*as yn from"path";var Js=class{basePath;matchers=new Map;constructor(t){this.basePath=yn.resolve(t)}shouldIgnore(t){return this.excluded(t,!1)}shouldIgnoreDirectory(t){return this.excluded(t,!0)}excluded(t,e){let n=yn.relative(this.basePath,yn.resolve(t));if(n==="")return!1;if(n===".."||n.startsWith(`..${yn.sep}`)||yn.isAbsolute(n))throw new Error(`GitIgnoreFilter: ${t} is not under ${this.basePath}`);let r=n.split(yn.sep);for(let a=1;a<r.length;a++)if(this.decides(r.slice(0,a),!0))return!0;return this.decides(r,e)}decides(t,e){for(let n=t.length-1;n>=0;n--){let r=this.matcherFor(yn.join(this.basePath,...t.slice(0,n)));if(!r)continue;let{ignored:a,unignored:s}=r.test(t.slice(n).join("/")+(e?"/":""));if(a)return!0;if(s)return!1}return!1}matcherFor(t){let e=this.matchers.get(t);if(e===void 0){let n=yn.join(t,".gitignore");if(Mo.existsSync(n))try{e=(0,Xy.default)().add(Mo.readFileSync(n,"utf8"))}catch(r){throw new Error(`GitIgnoreFilter: cannot read ${n}`,{cause:r})}else e=null;this.matchers.set(t,e)}return e}};import*as Ct from"fs/promises";import*as _t from"path";import{pathToFileURL as Qy}from"url";import{homedir as d_}from"os";import{join as h_}from"path";import{readFileSync as m_,readdirSync as g_}from"fs";import{join as tk}from"path";var Ya=class{rootPath;recursive;parser;documentCache;filePathsByIdentifier;cacheInitialized=!1;cacheInitPromise=null;parsingErrors=new Map;constructor(t,e=!0,n){if(!t||t.trim().length===0)throw new Error("Root path cannot be null or empty");this.rootPath=_t.resolve(t),this.recursive=e,this.parser=n??new me,this.documentCache=new Map,this.filePathsByIdentifier=new Map}async getAllDocumentsAsync(){await this.ensureCacheInitialized();let t=new Set(this.documentCache.values());return Array.from(t)}async getDocumentAsync(t){await this.ensureCacheInitialized();let e=this.documentCache.get(t);if(e)return e;let n=_t.join(this.rootPath,t);if(e=this.documentCache.get(n),e)return e;for(let r of[".kan.yml",".yml",".yaml"])if(!t.endsWith(r)){let a=t+r;if(e=this.documentCache.get(a),e)return e;let s=_t.join(this.rootPath,a);if(e=this.documentCache.get(s),e)return e}return null}async getDocumentsByNamespaceAsync(t,e){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values());return Array.from(n).filter(r=>r.metadata.namespace_?.publisher===t&&r.metadata.namespace_?.package_===e)}async getHighestCompatibleVersionAsync(t,e){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values()),r=Array.from(n).filter(s=>s.metadata?.namespace_?.publisher===t&&s.metadata?.namespace_?.package_===e.packageName&&s.metadata?.namespace_?.version!==void 0);if(r.length===0)return null;let a=r.filter(s=>{let i=s.metadata.namespace_.version;return on(i,e)});return a.length===0?null:(a.sort((s,i)=>{let o=s.metadata.namespace_.version,l=i.metadata.namespace_.version;return _e(l,o)}),a[0])}async saveDocumentAsync(t,e){let n,r=t.metadata.namespace_?.toString();if(r&&r.includes("@")&&r.includes("/")){let o=r.split("/"),l=o[0],c=o[1].replace("@","@")+".kan.yml";n=_t.join(this.rootPath,l,c)}else n=_t.join(this.rootPath,e),!n.endsWith(".yml")&&!n.endsWith(".yaml")&&!n.endsWith(".kan.yml")&&(n+=".kan.yml");let a=_t.dirname(n);await Ct.mkdir(a,{recursive:!0});let s=this.parser.save(t);await Ct.writeFile(n,s,"utf8"),r&&this.documentCache.set(r,t),this.documentCache.set(n,t);let i=_t.relative(this.rootPath,n);this.documentCache.set(i,t)}async deleteDocumentAsync(t){let e=await this.getDocumentAsync(t);if(!e)return;let n=this.filePathsByIdentifier.get(t);if(!n)return;try{await Ct.unlink(n)}catch{}let r=e.metadata.namespace_?.toString();r&&this.documentCache.delete(r),this.documentCache.delete(t),this.documentCache.delete(n);let a=_t.relative(this.rootPath,n);this.documentCache.delete(a)}async clearNamespaceAsync(t,e){await this.ensureCacheInitialized();let n=[];for(let[a,s]of this.documentCache.entries()){let i=s.metadata.namespace_?.toString()||"";i.includes(t)&&i.includes(e)&&n.push([a,s])}let r=_t.join(this.rootPath,t);try{let a=await Ct.readdir(r);for(let s of a)s.includes(e)&&s.endsWith(".kan.yml")&&await Ct.unlink(_t.join(r,s))}catch{}for(let[a]of n)this.documentCache.delete(a)}async getAllDocumentReferencesAsync(){await this.ensureCacheInitialized();let t=new Set(this.filePathsByIdentifier.values()),e=[];for(let n of t){let r=Qy(n).toString(),a;for(let[o,l]of this.documentCache.entries())if(this.filePathsByIdentifier.get(o)===n&&l.metadata.namespace_){a=l.metadata.namespace_.toString();break}let s=a??_t.relative(this.rootPath,n),i=this.parsingErrors.has(n);e.push({identifier:s,uri:r,hasParseError:i})}return e}async getDocumentContentAsync(t){await this.ensureCacheInitialized();let e=this.filePathsByIdentifier.get(t);if(!e)try{await Ct.access(t),e=t}catch{let n=_t.join(this.rootPath,t);try{await Ct.access(n),e=n}catch{return null}}try{return await Ct.readFile(e,"utf8")}catch{return null}}async getDocumentUriAsync(t){await this.ensureCacheInitialized();let e=this.filePathsByIdentifier.get(t);if(!e)try{await Ct.access(t),e=t}catch{let n=_t.join(this.rootPath,t);try{await Ct.access(n),e=n}catch{return null}}return Qy(e).toString()}async refreshAsync(){this.documentCache.clear(),this.filePathsByIdentifier.clear(),this.parsingErrors.clear(),this.cacheInitialized=!1,this.cacheInitPromise=null,await this.ensureCacheInitialized()}async ensureCacheInitialized(){if(!this.cacheInitialized){if(this.cacheInitPromise){await this.cacheInitPromise;return}this.cacheInitPromise=this.loadDocuments(),await this.cacheInitPromise,this.cacheInitialized=!0}}async loadDocuments(){try{await Ct.mkdir(this.rootPath,{recursive:!0})}catch{}let t=(await this.findYamlFiles(this.rootPath,this.recursive)).map(async n=>{try{let r=await Ct.readFile(n,"utf8"),a=this.parser.parse(r);return{filePath:n,document:a,error:null}}catch(r){return{filePath:n,document:null,error:r instanceof Error?r.message:String(r)}}}),e=await Promise.all(t);for(let{filePath:n,document:r,error:a}of e){let s=_t.relative(this.rootPath,n);if(r&&r.metadata.namespace_){let i=r.metadata.namespace_.toString();this.documentCache.set(i,r),this.documentCache.set(n,r),this.documentCache.set(s,r),this.filePathsByIdentifier.set(i,n),this.filePathsByIdentifier.set(n,n),this.filePathsByIdentifier.set(s,n)}else this.filePathsByIdentifier.set(n,n),this.filePathsByIdentifier.set(s,n);a&&this.parsingErrors.set(n,a)}}async findYamlFiles(t,e){let n=[];try{let r=await Ct.readdir(t,{withFileTypes:!0});for(let a of r){let s=_t.join(t,a.name);if(a.isDirectory()&&e){let i=await this.findYamlFiles(s,e);n.push(...i)}else a.isFile()&&a.name.endsWith(".kan.yml")&&n.push(s)}}catch{}return n}},ek=(t=>(t.NotFound="NotFound",t.Workspace="Workspace",t.Cache="Cache",t))(ek||{});function wr(){return process.env.KANONAK_PACKAGE_CACHE||h_(d_(),".kanonak","packages")}var za=class{repos;constructor(...t){this.repos=t}async firstAnswer(t,e,n){let r=[];for(let a of this.repos)try{let s=await t(a);if(e(s))return s}catch(s){r.push(s)}return Zy(r),n}async getHighestCompatibleVersionAsync(t,e){return this.firstAnswer(n=>n.getHighestCompatibleVersionAsync(t,e),n=>n!==null,null)}async getAllDocumentsAsync(){let t=[],e=new Set,n=[];for(let r of this.repos)try{for(let a of await r.getAllDocumentsAsync()){let s=a.metadata?.namespace_,i=s?s.version?`${s.publisher}/${s.package_}@${s.version.major}.${s.version.minor}.${s.version.patch}`:`${s.publisher}/${s.package_}`:void 0;if(i!==void 0){if(e.has(i))continue;e.add(i)}t.push(a)}}catch(a){n.push(a)}return Zy(n),t}async getDocumentAsync(t){return this.firstAnswer(e=>e.getDocumentAsync(t),e=>e!==null,null)}async getDocumentsByNamespaceAsync(t,e){return this.firstAnswer(n=>n.getDocumentsByNamespaceAsync(t,e),n=>n.length>0,[])}async saveDocumentAsync(t,e){await this.repos[0].saveDocumentAsync(t,e)}async deleteDocumentAsync(t){await this.repos[0].deleteDocumentAsync(t)}async clearNamespaceAsync(t,e){await this.repos[0].clearNamespaceAsync(t,e)}async getAllDocumentReferencesAsync(){return this.repos[0].getAllDocumentReferencesAsync()}async getDocumentContentAsync(t){return this.firstAnswer(e=>e.getDocumentContentAsync(t),e=>!!e,null)}async getDocumentUriAsync(t){return this.firstAnswer(e=>e.getDocumentUriAsync(t),e=>!!e,null)}};function Zy(t){if(t.length===1)throw t[0];if(t.length>1)throw new Error(t.map(e=>e instanceof Error?e.message:String(e)).join("; "))}var Ju=class{constructor(t,e){this.base=t,this.lock=e}base;lock;pinnedVersion(t,e){return Pu(this.lock,t,e)}async getHighestCompatibleVersionAsync(t,e){let n=this.pinnedVersion(t,e.packageName);if(n){let r=zt(n,`The version kanonak.lock pins for ${t}/${e.packageName}`),a={...e,versionOperator:we.Exact,version:r};return this.base.getHighestCompatibleVersionAsync(t,a)}return this.base.getHighestCompatibleVersionAsync(t,e)}async getDocumentsByNamespaceAsync(t,e){let n=await this.base.getDocumentsByNamespaceAsync(t,e),r=this.pinnedVersion(t,e);return r?n.filter(a=>{let s=a.metadata.namespace_?.version;return s?`${s.major}.${s.minor}.${s.patch}`===r:!1}):n}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},Xu=class{constructor(t,e,n={}){this.base=t,this.lock=e;let r=new Map;for(let a of n.own??[]){let s=a.metadata?.namespace_;s&&r.set(s.publisher,(r.get(s.publisher)??new Set).add(s.package_))}this.own=r}base;lock;own;checked=new Map;parser=new me;async getHighestCompatibleVersionAsync(t,e){if(it(e)||this.isOwn(t,e.packageName))return this.base.getHighestCompatibleVersionAsync(t,e);let n=`${t}/${e.packageName} ${Dt(e.versionOperator)} ${ee(e.version)}`,r=Bs(this.lock,t,e.packageName);if(!r)throw new Error(`An import of ${n} reads through kanonak.lock, which doesn't pin ${t}/${e.packageName}. Run \`kanonak install\` to pin it.`);let a=zt(r.version,`The version kanonak.lock pins for ${t}/${e.packageName}`);if(!on(a,e))throw new Error(`kanonak.lock pins ${t}/${e.packageName} at ${r.version}, which an import of ${n} doesn't admit. Run \`kanonak install\` to pin a version it admits.`);return this.readPinned(t,e.packageName,r)}async getDocumentsByNamespaceAsync(t,e){let n=this.isOwn(t,e)?void 0:Bs(this.lock,t,e);return n?(zt(n.version,`The version kanonak.lock pins for ${t}/${e}`),[await this.readPinned(t,e,n)]):this.base.getDocumentsByNamespaceAsync(t,e)}isOwn(t,e){return this.own.get(t)?.has(e)??!1}readPinned(t,e,n){let r=`${t}/${e}@${n.version}`,a=this.checked.get(r);return a||(a=(async()=>{let s=this.parser.buildImport(e,Dt(we.Exact),n.version,t),i=await this.base.getHighestCompatibleVersionAsync(t,s);if(!i)throw new Error(`kanonak.lock pins ${r}, but no source of it can be read.`);let o=i.metadata.namespace_.toString(),l=await this.base.getDocumentContentAsync(o);if(l===null)throw new Error(`kanonak.lock pins ${r}, but its bytes can't be read, so they can't be checked against the sha256 the lock records.`);return await qr(r,l,n.integrity,await this.base.getDocumentUriAsync(o)??"where it was read"),i})(),this.checked.set(r,a)),a}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},Qu=class{constructor(t){this.base=t}base;getHighestCompatibleVersionAsync(t,e){return this.base.getHighestCompatibleVersionAsync(t,{...e,versionOperator:we.Exact})}getDocumentsByNamespaceAsync(t,e){return this.base.getDocumentsByNamespaceAsync(t,e)}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},nk=new Set(["node_modules",".kanonak",".git","_site","build",".stage"]);function Vt(t,e=[],n={}){let r=n.ignore??new Js(t),a=s=>{for(let i of rk(s)){let o=tk(s,i.name);if(i.isDirectory()){if(nk.has(i.name))continue;if(!r.shouldIgnoreDirectory(o))a(o);else if(n.ignored){let l=ak(o);l>0&&n.ignored.push({path:o,isDirectory:!0,kanonakFiles:l})}}else i.name.endsWith(".kan.yml")&&(r.shouldIgnore(o)?n.ignored?.push({path:o,isDirectory:!1,kanonakFiles:1}):e.push(o))}};return a(t),e}function rk(t){try{return g_(t,{withFileTypes:!0})}catch(e){let n=e.code??String(e);throw new Error(`Cannot read ${t} (${n}), so the .kan.yml files under it can't be collected. Every folder under the workspace is read: make it readable, or keep it out of the workspace.`)}}function ak(t){let e=0;for(let n of rk(t))n.isDirectory()?nk.has(n.name)||(e+=ak(tk(t,n.name))):n.name.endsWith(".kan.yml")&&e++;return e}async function Zu(t,e=new me,n={}){let r=new Vr(e);for(let l of Vt(t))try{let c=m_(l,"utf-8"),u=e.parse(c),p=u.metadata?.namespace_;p?.version&&await r.saveDocumentAsync(u,p.toString(),c)}catch{}let a=new Ya(wr(),!0,e);if(n.offline)return new za(r,a);let s=new Map,i=n.httpCache??{getFromCache:(l,c,u)=>s.get(`${l}|${c}|${u}`)??null,onFetch:(l,c,u,p)=>{s.set(`${l}|${c}|${u}`,p)}},o=new Ka({getFromCache:i.getFromCache,onFetch:i.onFetch,...n.fetchFn?{fetchFn:n.fetchFn}:{},...n.packageUrlTemplates?{packageUrlTemplates:n.packageUrlTemplates}:{},...n.templateTrustedPublishers?{templateTrustedPublishers:n.templateTrustedPublishers}:{},...n.onTemplateTrustedRead?{onTemplateTrustedRead:n.onTemplateTrustedRead}:{}});return new za(r,a,o)}var Se=Th(zv(),1);var Df=class Zv{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let n=new Zv,r=new Se.LineCounter,a=(0,Se.parseDocument)(e,{lineCounter:r});if(a.errors.length>0||!(0,Se.isMap)(a.contents))return n;If(a.contents,[],r,n);for(let s of a.contents.items){if(!(0,Se.isPair)(s)||!(0,Se.isScalar)(s.key))continue;let i=String(s.key.value),o=s.key.range;if(!o)continue;n.entities.set(i,_n(o,r));let l=s.value,c=l&&typeof l=="object"&&"range"in l?l.range:void 0;if(c?n.entityBlocks.set(i,_n([o[0],o[1],c[2]],r)):n.entityBlocks.set(i,_n(o,r)),(0,Se.isMap)(s.value)){let u=new Map,p=new Map,f=new Map;for(let g of s.value.items){if(!(0,Se.isPair)(g)||!(0,Se.isScalar)(g.key))continue;let m=String(g.key.value),y=g.key.range;y&&u.set(m,_n(y,r));let v=g.value;if(v&&typeof v=="object"&&"range"in v&&Array.isArray(v.range)){let k=v.range;p.set(m,_n(k,r))}if((0,Se.isSeq)(v)){let k=[];for(let w of v.items)w&&typeof w=="object"&&"range"in w&&Array.isArray(w.range)&&k.push(_n(w.range,r));k.length>0&&f.set(m,k)}}u.size>0&&n.properties.set(i,u),p.size>0&&n.propertyValues.set(i,p),f.size>0&&n.valueListItems.set(i,f);let h=BP(s.value,r,i);h.length>0&&n.importPackages.set(i,h)}}return n}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,n){for(let[r,a]of this.entityBlocks)if(Rf(a,e,n))return r}findPropertyAtPosition(e,n){let r=this.findEntityAtPosition(e,n);if(!r)return;let a=this.properties.get(r),s=this.propertyValues.get(r);if(!a&&!s)return{entityName:r};let i,o;if(s)for(let[l,c]of s)Rf(c,e,n)&&(!o||Yv(c,o))&&(i=l,o=c);if(a)for(let[l,c]of a)Rf(c,e,n)&&(!o||Yv(c,o))&&(i=l,o=c);return i?{entityName:r,propertyName:i}:{entityName:r}}getPropertyPosition(e,n){return this.properties.get(e)?.get(n)}getPropertyValuePosition(e,n){return this.propertyValues.get(e)?.get(n)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[n,r]of this.importPackages)for(let a of r)e.push({entityName:n,entry:a});return e}findPropertySourceName(e,n){let r=this.properties.get(e);if(r){if(r.has(n))return n;for(let a of r.keys()){let s=a.lastIndexOf(".");if((s===-1?a:a.substring(s+1))===n)return a}}}getListItemPosition(e,n,r){let a=this.valueListItems.get(e)?.get(n);if(!(!a||r<0||r>=a.length))return a[r]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,n){this.nestedKeys.set(e,n)}setNestedValuePosition(e,n){this.nestedValues.set(e,n)}getMostSpecificPosition(e,n,r){if(e){if(n!==void 0){if(r!==void 0){let i=this.getListItemPosition(e,n,r);if(i)return i}let a=this.getPropertyValuePosition(e,n);if(a)return a;let s=this.getPropertyPosition(e,n);if(s)return s}return this.getEntityPosition(e)}}};function BP(t,e,n){let r=[];if(!(0,Se.isMap)(t))return r;let a=t.items.find(s=>(0,Se.isPair)(s)&&(0,Se.isScalar)(s.key)&&String(s.key.value)==="imports");if(!a||!(0,Se.isPair)(a)||!(0,Se.isSeq)(a.value))return r;for(let[s,i]of a.value.items.entries()){if(!(0,Se.isMap)(i))continue;let o=i.items.find(u=>(0,Se.isPair)(u)&&(0,Se.isScalar)(u.key)&&String(u.key.value)==="publisher");if(!o||!(0,Se.isPair)(o)||!(0,Se.isScalar)(o.value))continue;let l=String(o.value.value),c=i.items.find(u=>(0,Se.isPair)(u)&&(0,Se.isScalar)(u.key)&&String(u.key.value)==="packages");if(!(!c||!(0,Se.isPair)(c)||!(0,Se.isSeq)(c.value)))for(let[u,p]of c.value.items.entries()){if(!(0,Se.isMap)(p))continue;let f=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="package");if(!f||!(0,Se.isPair)(f)||!(0,Se.isScalar)(f.value)||!f.value.range)continue;let h=String(f.value.value),g=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="version"),m=g&&(0,Se.isPair)(g)&&(0,Se.isScalar)(g.value)?String(g.value.value):"",y=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="alias"),v=y&&(0,Se.isPair)(y)&&(0,Se.isScalar)(y.value)?String(y.value.value):void 0,k=v!==void 0?{publisher:l,package_:h,version:m,alias:v,position:_n(f.value.range,e)}:{publisher:l,package_:h,version:m,position:_n(f.value.range,e)};g&&(0,Se.isPair)(g)&&(0,Se.isScalar)(g.value)&&g.value.range&&(k.versionPosition=_n(g.value.range,e)),k.path=[n,"imports",s,"packages",u],r.push(k)}}return r}function Rf(t,e,n){return!(e<t.line||e>t.endLine||e===t.line&&n<t.column||e===t.endLine&&n>t.endColumn)}function Yv(t,e){let n=t.endLine-t.line,r=e.endLine-e.line;if(n!==r)return n<r;let a=t.endLine===t.line?t.endColumn-t.column:Number.MAX_SAFE_INTEGER,s=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return a<s}function If(t,e,n,r){if((0,Se.isMap)(t)){for(let a of t.items){if(!(0,Se.isPair)(a)||!(0,Se.isScalar)(a.key))continue;let s=String(a.key.value),i=[...e,s],o=JSON.stringify(i);a.key.range&&r.setNestedKeyPosition(o,_n(a.key.range,n));let l=a.value,c=Gv(l);c&&r.setNestedValuePosition(o,_n(c,n)),If(l,i,n,r)}return}if((0,Se.isSeq)(t)){for(let a=0;a<t.items.length;a++){let s=t.items[a],i=[...e,a],o=JSON.stringify(i),l=Gv(s);l&&r.setNestedValuePosition(o,_n(l,n)),If(s,i,n,r)}return}}function Gv(t){if(!t||typeof t!="object"||!("range"in t))return;let e=t.range;return Array.isArray(e)&&e.length>=3?e:void 0}function _n(t,e){let n=e.linePos(t[0]),r=e.linePos(t[2]);return{line:n.line-1,column:n.col-1,endLine:r.line-1,endColumn:r.col-1}}function HP(t,e){let n=Xv(e,t.line,t.column),r=Xv(e,t.endLine,t.endColumn);if(n<0||r<0)return;let a=e.substring(n,r);return Fs(a).map(s=>{let i=Jv(e,n+s.startOffset),o=Jv(e,n+s.endOffset);return{line:i.line,column:i.column,endLine:o.line,endColumn:o.column}})}function Jv(t,e){let n=0,r=0;for(let a=0;a<e&&a<t.length;a++)t[a]===`
|
|
175
|
-
`&&(n++,r=a+1);return{line:n,column:e-r}}function
|
|
176
|
-
`&&(r++,a=s+1)}return r===e?Math.min(a+n,t.length):-1}function ew(t,e,n){let r=[];for(let a of t){if(!(a instanceof q)||typeof a.sourceKey!="string")continue;let s=[a.sourceKey],i=xe(a);i&&r.push({role:"subject",uri:i,range:_i(e.getEntityPosition(a.sourceKey),s,"key"),path:s}),Mf(a.statement,s,e,n,r)}return r}function Mf(t,e,n,r,a){for(let s of t){if(!(s instanceof zn)||s.sourceKey===void 0)continue;let i=[...e,s.sourceKey],o=s.predicate?.subject;if(o&&a.push({role:"predicate",uri:o,range:_i(n.getNodeKeyPosition(i),i,"key"),path:i}),s instanceof de)a.push({role:"reference",uri:s.object.subject,range:_i(n.getNodeValuePosition(i),i,"value"),path:i});else if(s instanceof Lt)Qv(s.links,i,n,r,a);else if(s instanceof Ae)s.object&&Mf(s.object.statement,i,n,r,a);else if(s instanceof he)for(let l of s.object??[]){if(!(l instanceof D||l instanceof te||l instanceof xt)||l.sourceKey===void 0)continue;let c=[...i,l.sourceKey];l instanceof D?a.push({role:"reference",uri:l.subject,range:_i(n.getNodeValuePosition(c),c,"value"),path:c}):l instanceof te?Mf(l.statement,c,n,r,a):l.links&&Qv(l.links,c,n,r,a)}}}function Qv(t,e,n,r,a){if(r===void 0||t.length===0)return;let s=HP(_i(n.getNodeValuePosition(e),e,"value"),r);if(!s||s.length!==t.length)throw new Error(`sourceSymbols: the prose value at ${JSON.stringify(e)} has ${t.length} resolved [[reference]](s) but ${s?.length??0} in its source text \u2014 the source text is not the text this document was parsed from.`);t.forEach((i,o)=>{i.target&&a.push({role:"reference",uri:i.target.subject,range:s[o],path:e})})}function _i(t,e,n){if(!t)throw new Error(`sourceSymbols: no source ${n} position for ${JSON.stringify(e)}. The object model has a node the position index does not \u2014 the positions were not built from the text this document was parsed from.`);return t}var Ci=class rw{static parse(e,n){let r=e.trim();if(!r)return null;let a,s,i=r.match(/^https?:\/\/([^/]+)(\/.*)?$/);if(i)a=i[1],s=i[2]??"/";else if(r.startsWith("/")){if(!n)return null;a=n,s=r}else return r.includes("/")?null:{kind:"publisher",publisher:r};let o=s.split("/").filter(l=>l.length>0);if(o.length===0)return{kind:"publisher",publisher:a};if(o.length===1)return{kind:"package",publisher:a,package_:o[0],versionSpec:{kind:"any"}};if(o.length===2){let l=tw(o[1]);return l?{kind:"package",publisher:a,package_:o[0],versionSpec:l}:{kind:"resource",publisher:a,package_:o[0],versionSpec:{kind:"any"},name:o[1]}}if(o.length===3){let l=tw(o[1]);return l?{kind:"resource",publisher:a,package_:o[0],versionSpec:l,name:o[2]}:null}return null}static format(e,n){let r=zP(e);return n?.publisherFirst?`/${e.publisher}${r}`:n?.pathOnly?r:`${n?.scheme??"https"}://${e.publisher}${r}`}static formatResourceUrl(e,n,r){let a=YP(n,e.version),s={kind:"resource",publisher:e.publisher,package_:e.package_,versionSpec:a,name:e.name},i=r?.contextPublisher!==void 0&&r.contextPublisher===e.publisher;return rw.format(s,{...r?.scheme!==void 0?{scheme:r.scheme}:{},...r?.publisherFirst?{publisherFirst:!0}:i?{pathOnly:!0}:{}})}},WP=/^\d+(\.\d+){0,2}$/;function tw(t){if(!WP.test(t))return null;let e=t.split(".");return e.length===1?{kind:"major-pin",major:Number(e[0])}:e.length===2?{kind:"minor-pin",major:Number(e[0]),minor:Number(e[1])}:{kind:"exact",major:Number(e[0]),minor:Number(e[1]),patch:Number(e[2])}}function zP(t){switch(t.kind){case"publisher":return"/";case"package":return`/${t.package_}${nw(t.versionSpec)}`;case"resource":return`/${t.package_}${nw(t.versionSpec)}/${t.name}`}}function nw(t){switch(t.kind){case"any":return"";case"major-pin":return`/${t.major}`;case"minor-pin":return`/${t.major}.${t.minor}`;case"exact":return`/${t.major}.${t.minor}.${t.patch}`}}function YP(t,e){return t==="*"||!e?{kind:"any"}:t==="^"?{kind:"major-pin",major:e.major}:t==="~"?{kind:"minor-pin",major:e.major,minor:e.minor}:{kind:"exact",major:e.major,minor:e.minor,patch:e.patch}}var le="kanonak.org/transformations",st="kanonak.org/math";var Be=class extends Error{},GP=t=>({kind:"unary",operand:t}),iw=(t,e)=>({kind:"binary",left:t,right:e}),Zr=iw("arithLeft","arithRight"),ji=iw("compareLeft","compareRight"),sr=GP("value"),ow={[`${le}/Add`]:Zr,[`${le}/Subtract`]:Zr,[`${le}/Multiply`]:Zr,[`${le}/Divide`]:Zr,[`${st}/Power`]:Zr,[`${st}/Modulo`]:Zr,[`${st}/Minimum`]:Zr,[`${st}/Maximum`]:Zr,[`${le}/Abs`]:sr,[`${le}/Negate`]:sr,[`${st}/Exp`]:sr,[`${st}/Ln`]:sr,[`${st}/Log10`]:sr,[`${st}/Sqrt`]:sr,[`${st}/Floor`]:sr,[`${st}/Ceil`]:sr,[`${st}/Round`]:sr,[`${st}/Sign`]:sr,[`${le}/Equals`]:ji,[`${le}/GreaterThan`]:ji,[`${le}/LessThan`]:ji,[`${le}/GreaterThanOrEqual`]:ji,[`${le}/LessThanOrEqual`]:ji,[`${le}/And`]:{kind:"nary",operands:"operands"},[`${le}/Or`]:{kind:"nary",operands:"operands"},[`${st}/Clip`]:{kind:"ternary",a:"clipValue",b:"clipLower",c:"clipUpper"}},Vf=`${le}/Not`,Kf=`${le}/IsAtLeast`,lw=`${le}/Dominates`,Uf=`${le}/Contains`,Bf=`${le}/IsSet`,Hf=`${le}/ListItemAt`,Wf=`${le}/Matches`,cw=`${le}/IntegerLiteral`,uw=`${le}/DecimalLiteral`,pw=`${le}/BooleanLiteral`,fw=`${le}/StringLiteral`,zf=`${le}/UriLiteral`,dw={[`${le}/ForEach`]:"emit",[`${le}/ListMap`]:"mapBody",[`${le}/Filter`]:"predicate"},hw={[`${le}/IsString`]:t=>typeof t=="string",[`${le}/IsNumber`]:t=>typeof t=="number",[`${le}/IsReference`]:t=>typeof t=="object"&&!Array.isArray(t),[`${le}/IsList`]:t=>Array.isArray(t)};function JP(t,e){if(e===0)throw new Be("Modulo by zero");return t-e*Math.floor(t/e)}function XP(t){return t<0?-Math.round(-t):Math.round(t)}var Ff=t=>t!==0,pn=t=>t?1:0;function Il(t,e){if(!t)throw new Be(e)}function Cn(t,e){if(typeof t!="number")throw new Be(`${e} requires a numeric operand, got ${mw(t)}`);return t}function mw(t){return typeof t=="number"?"number":typeof t=="string"?"string":Array.isArray(t)?"list":"ref"}var QP={[`${le}/Abs`]:t=>Math.abs(t),[`${le}/Negate`]:t=>-t,[`${st}/Exp`]:t=>Math.exp(t),[`${st}/Ln`]:t=>(Il(t>0,"Ln of a non-positive number"),Math.log(t)),[`${st}/Log10`]:t=>(Il(t>0,"Log10 of a non-positive number"),Math.log10(t)),[`${st}/Sqrt`]:t=>(Il(t>=0,"Sqrt of a negative number"),Math.sqrt(t)),[`${st}/Floor`]:t=>Math.floor(t),[`${st}/Ceil`]:t=>Math.ceil(t),[`${st}/Round`]:XP,[`${st}/Sign`]:t=>Math.sign(t)},ZP={[`${le}/Add`]:(t,e)=>t+e,[`${le}/Subtract`]:(t,e)=>t-e,[`${le}/Multiply`]:(t,e)=>t*e,[`${le}/Divide`]:(t,e)=>(Il(e!==0,"Divide by zero"),t/e),[`${st}/Power`]:(t,e)=>Math.pow(t,e),[`${st}/Modulo`]:JP,[`${st}/Minimum`]:(t,e)=>Math.min(t,e),[`${st}/Maximum`]:(t,e)=>Math.max(t,e)},eT={[`${le}/GreaterThan`]:(t,e)=>pn(t>e),[`${le}/LessThan`]:(t,e)=>pn(t<e),[`${le}/GreaterThanOrEqual`]:(t,e)=>pn(t>=e),[`${le}/LessThanOrEqual`]:(t,e)=>pn(t<=e)};function aw(t,e){return typeof t=="number"&&typeof e=="number"||typeof t=="string"&&typeof e=="string"?t===e:typeof t=="object"&&typeof e=="object"&&!Array.isArray(t)&&!Array.isArray(e)?t.ref===e.ref:!1}function tT(t){switch(t.type){case cw:return Number(t.integerLiteral);case uw:return Number(t.decimalLiteral);case pw:return pn(t.booleanLiteral===!0||t.booleanLiteral==="true");case fw:{let e=t.stringLiteral;if(typeof e!="string")throw new Be("StringLiteral is missing stringLiteral");return e}case zf:{let e=t.refTo;if(typeof e!="string"||e.length===0)throw new Be("UriLiteral is missing refTo");return{ref:e}}default:return}}function nT(t){if(typeof t=="string")return t;if(typeof t=="number")return String(t);if(Array.isArray(t))throw new Be("Join cannot stringify a nested list");return t.ref.slice(t.ref.lastIndexOf("/")+1)}function rT(t){return typeof t=="string"||Array.isArray(t)?t.length>0:!0}var gw={[`${le}/Count`]:t=>t.length,[`${le}/Sum`]:t=>{let e=0;for(let n of t)e+=Cn(n,"Sum");return e},[`${le}/Min`]:t=>{if(t.length===0)throw new Be("Min on an empty list is undefined; guard with IsSet");let e=Cn(t[0],"Min");for(let n=1;n<t.length;n++){let r=Cn(t[n],"Min");r<e&&(e=r)}return e},[`${le}/Max`]:t=>{if(t.length===0)throw new Be("Max on an empty list is undefined; guard with IsSet");let e=Cn(t[0],"Max");for(let n=1;n<t.length;n++){let r=Cn(t[n],"Max");r>e&&(e=r)}return e},[`${le}/Average`]:t=>{if(t.length===0)throw new Be("Average on an empty list is undefined; guard with IsSet");let e=0;for(let n of t)e+=Cn(n,"Average");return e/t.length},[`${le}/Join`]:(t,e)=>{let n=typeof e.separator=="string"?e.separator:"";return t.map(nT).join(n)},[`${le}/Reverse`]:t=>[...t].reverse()};function yw(t){kw(t)}function kw(t){let e=o=>{throw new Be(`Matches pattern is outside the pinned regex subset (${o}): ${t}`)},n="",r=t,a=/^\(\?([ims]+)\)/.exec(t);a&&(n=a[1],new Set(n).size!==n.length&&e(`repeated flag in prefix (?${n})`),r=t.slice(a[0].length));let s=new Set(["d","D","w","W","s","S","b","B","n","r","t","f","v",".","*","+","?","(",")","[","]","{","}","|","^","$","\\","/"]),i=!1;for(let o=0;o<r.length;o++){let l=r[o];if(l==="\\"){let c=r[o+1];if(c===void 0&&e("trailing backslash"),c==="x"){let u=r.slice(o+2,o+4);/^[0-9a-fA-F]{2}$/.test(u)||e("\\x escape must be \\xHH"),r[o+2]==="{"&&e("\\x{\u2026} escape"),o+=3;continue}if(c>="0"&&c<="9"&&e(`backreference or octal escape \\${c}`),(c==="p"||c==="P")&&e(`unicode property class \\${c}{\u2026}`),c==="k"&&e("named backreference \\k"),c==="u"&&e("\\u escape"),c==="-"){i||e("\\- outside a character class"),o++;continue}(c==="b"||c==="B")&&i&&e(`\\${c} inside a character class`),(c==="D"||c==="W"||c==="S")&&i&&e(`\\${c} inside a character class`),s.has(c)||e(`escape \\${c}`),o++;continue}if(i){if(l==="]"){i=!1;continue}l==="&"&&r[o+1]==="&"&&e("character-class intersection &&"),l==="["&&r[o+1]===":"&&e("POSIX class [[:\u2026:]]");continue}if(l==="["){i=!0;continue}if(l==="("&&r[o+1]==="?"){r[o+2]!==":"&&e(`group construct (?${r[o+2]??""}`),o+=2;continue}l==="{"&&(/^\{\d+(,\d*)?\}/.test(r.slice(o))||e("bare '{' that is not a quantifier (write \\{)"))}return i&&e("unterminated character class"),{flags:n,body:r}}var aT={d:"[0-9]",D:"[^0-9]",w:"[0-9A-Za-z_]",W:"[^0-9A-Za-z_]",s:"[ \\t\\n\\r\\f\\x0B]",S:"[^ \\t\\n\\r\\f\\x0B]"},sT={d:"0-9",w:"0-9A-Za-z_",s:" \\t\\n\\r\\f\\x0B"};function iT(t,e){let n="",r=!1;for(let a=0;a<t.length;a++){let s=t[a];if(s==="\\"){let i=t[a+1],l=(r?sT:aT)[i];l!==void 0?n+=l:n+=s+i,a++;continue}if(!r&&s==="."&&!e){n+="[^\\n]";continue}!r&&s==="["?r=!0:r&&s==="]"&&(r=!1),n+=s}return n}function bw(t,e){let{flags:n,body:r}=kw(e),a;try{a=new RegExp(iT(r,n.includes("s")),n+"u")}catch{throw new Be(`Matches pattern does not compile: ${e}`)}return a.test(t)}function vw(t,e){return bw(t,e)}function sw(t,e,n){if(t.type===zf){let r=t.refTo;if(typeof r!="string"||r.length===0)throw new Be("UriLiteral is missing refTo");return r}if(!n?.resolveRef)throw new Be(`No resolveRef supplied for identity leaf '${t.type}'`);return n.resolveRef(t,e)}function oT(t,e,n){let r=t.viaProperty;if(typeof r!="string"||r.length===0)throw new Be(`${t.type} is missing viaProperty`);let a=sw(Ut(t,"compareLeft"),e,n),s=sw(Ut(t,"compareRight"),e,n),i=n?.closures?.[r];if(!i)throw new Be(`No closure supplied for ordering property '${r}'`);return{value:pn(a===s?t.type===Kf:(i[a]??[]).includes(s)),left:a,right:s}}var lT=new Set([...Object.keys(ow),...Object.keys(gw),...Object.keys(dw),...Object.keys(hw),Vf,Kf,lw,Uf,Bf,Hf,Wf,cw,uw,pw,fw,zf]);function ww(t){return lT.has(t)}function cT(t,e){for(let n=t.length-1;n>=0;n--)if(t[n].name===e)return t[n].value}function Ml(t,e,n,r){return qn(t,e,n,r,[])}function qf(t,e,n,r,a){let s=qn(Ut(t,"source"),e,n,r,a);return Array.isArray(s)?s:[s]}function qn(t,e,n,r,a){let s=(f,h)=>qn(f,h,n,r,a),i=(f,h,g)=>Cn(s(f,h),g),o=ow[t.type];if(o)switch(o.kind){case"unary":{let f=i(Ut(t,o.operand),e,t.type);return QP[t.type](f)}case"binary":{let f=s(Ut(t,o.left),e),h=s(Ut(t,o.right),e);if(t.type===`${le}/Equals`)return pn(aw(f,h));let g=eT[t.type];return g?typeof f!="number"||typeof h!="number"?0:g(f,h):ZP[t.type](Cn(f,t.type),Cn(h,t.type))}case"nary":{let f=t[o.operands];if(!Array.isArray(f))throw new Be(`${t.type} expects an '${o.operands}' list`);let h=t.type===`${le}/And`;for(let g of f){let m=Ff(Cn(s(g,e),t.type));if(h&&!m)return 0;if(!h&&m)return 1}return pn(h)}case"ternary":{let f=i(Ut(t,o.a),e,t.type),h=i(Ut(t,o.b),e,t.type),g=i(Ut(t,o.c),e,t.type);return Math.min(Math.max(f,h),g)}}if(t.type===Vf)return pn(!Ff(Cn(s(Ut(t,"operand"),e),t.type)));if(t.type===Kf||t.type===lw)return oT(t,e,r).value;let l=gw[t.type];if(l)return l(qf(t,e,n,r,a),t);let c=dw[t.type];if(c){let f=t.loopVar;if(typeof f!="string"||f.length===0)throw new Be(`${t.type} is missing loopVar`);let h=qf(t,e,n,r,a),g=Ut(t,c),m=[];for(let y of h){let v=[...a,{name:f,value:y}],k=qn(g,e,n,r,v);t.type===`${le}/Filter`?Ff(Cn(k,"Filter predicate"))&&m.push(y):t.type===`${le}/ForEach`&&Array.isArray(k)?m.push(...k):m.push(k)}return m}if(t.type===Uf){let f=qn(Ut(t,"haystack"),e,n,r,a),h=qn(Ut(t,"needle"),e,n,r,a),g=Array.isArray(f)?f:[f];return pn(g.some(m=>aw(m,h)))}if(t.type===Bf)return pn(rT(qn(Ut(t,"checkExpr"),e,n,r,a)));if(t.type===Hf){let f=qf(t,e,n,r,a),h=qn(Ut(t,"itemIndex"),e,n,r,a);if(typeof h!="number"||!Number.isInteger(h)||h<0)throw new Be("ListItemAt itemIndex must be a non-negative integer");return h<f.length?f[h]:[]}if(t.type===Wf){let f=qn(Ut(t,"matchSource"),e,n,r,a);if(typeof f!="string")throw new Be(`Matches requires a string matchSource, got ${mw(f)}`);let h=t.pattern;if(typeof h!="string")throw new Be("Matches is missing pattern");return pn(bw(f,h))}let u=hw[t.type];if(u)return pn(u(qn(Ut(t,"kindCheck"),e,n,r,a)));let p=tT(t);if(p!==void 0)return p;if(t.type===`${le}/VarRef`&&typeof t.varName=="string"){let f=cT(a,t.varName);if(f!==void 0)return f}return n(t,e,(f,h)=>qn(f,h,n,r,a))}function Ut(t,e){let n=t[e];if(n==null||typeof n!="object"||Array.isArray(n))throw new Be(`${t.type} is missing operand '${e}'`);return n}var c3={[Vf]:["operand"],[Hf]:["source","itemIndex"],[Uf]:["haystack","needle"],[Bf]:["checkExpr"],[Wf]:["matchSource"],[`${le}/Count`]:["source"],[`${le}/Sum`]:["source"],[`${le}/Min`]:["source"],[`${le}/Max`]:["source"],[`${le}/Average`]:["source"],[`${le}/Join`]:["source"],[`${le}/Reverse`]:["source"],[`${le}/IsString`]:["kindCheck"],[`${le}/IsNumber`]:["kindCheck"],[`${le}/IsReference`]:["kindCheck"],[`${le}/IsList`]:["kindCheck"]};var De=class extends Error{constructor(t,e){super(`${t} (at ${e})`),this.path=e}path};function us(t,e){let n=t.name,r=xT(e),a={catalog:e,depth:0};if(Y(t,$.InstanceTransformation))return uT(t,n,a,r);if(Y(t,$.SetTransformation))return pT(t,n,a,r);throw new De("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function uT(t,e,n,r){return{kind:"instance",name:t.name,inputPattern:d$(t,e),rule:Yl(t,$.rule,`${e}.rule`,n),artifactName:Yl(t,$.artifactName,`${e}.artifactName`,n),outputs:h$(t,`${e}.outputs`),overrides:m$(t,`${e}.formatOverrides`,n),fragments:r}}function pT(t,e,n,r){let a=Er(t,$.partitionBy);return{kind:"set",name:t.name,inputPattern:d$(t,e),rule:Yl(t,$.rule,`${e}.rule`,n),artifactName:Yl(t,$.artifactName,`${e}.artifactName`,n),outputs:h$(t,`${e}.outputs`),overrides:m$(t,`${e}.formatOverrides`,n),partitionBy:a,fragments:r}}function d$(t,e){let n=g$(t,$.inputPattern);if(!n)throw new De("inputPattern is required",e);return fT(n,`${e}.inputPattern`)}function fT(t,e){let n=Er(t,$.matchesClass);if(!n)throw new De("matchesClass is required",e);let r=[];for(let i of Bn(t,$.requires))if(i instanceof de)r.push(od(i.object.subject));else if(i instanceof he)for(let o of i.object)o instanceof D&&r.push(od(o.subject));let a=[],s=0;for(let i of Bn(t,$.sortBy))if(i instanceof he)for(let o of i.object)o instanceof te&&a.push($w(o,`${e}.sortBy[${s++}]`));else i instanceof Ae&&a.push($w(i.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:r,sortBy:a}}function $w(t,e){let n=Er(t,$.byProperty);if(!n)throw new De("SortKey.byProperty is required",e);let r=Er(t,$.order);if(!r)throw new De("SortKey.order is required",e);if($e(r,$.ascending))return{byProperty:n,order:"ascending"};if($e(r,$.descending))return{byProperty:n,order:"descending"};throw new De(`SortKey.order must reference tx.ascending or tx.descending; got ${r.publisher}/${r.package_}/${r.name}`,e)}function Yl(t,e,n,r){let a=hd(t,e,n,r);if(!a)throw new De("expression is required",n);return Nn(a,n,r)}function dd(t,e,n,r){return bt(t,e).map((a,s,i)=>{let o=i.length>1||a.fromList?`${n}[${s}]`:n;if(a.item instanceof te)return a.item;if(a.item instanceof D){let l=ge(r.catalog,a.item.subject);if(!l)throw new De(`references '${T(a.item.subject)}', which does not resolve in the catalog`,o);return l}throw new De(`expects a node, not the literal ${JSON.stringify(a.item.value)}`,o)})}function hd(t,e,n,r){let a=dd(t,e,n,r);if(a.length>1)throw new De(`expects one expression, has ${a.length}`,n);return a[0]}function Nn(t,e,n){if(t instanceof q){let r=xe(t),a=r?T(r):`${t.namespace}/${t.name}`,s=n.visiting??new Set;if(s.has(a))throw new De(`named expressions form a cycle: ${[...s,a].join(" -> ")}`,e);return Sw(t,a,{...n,visiting:new Set([...s,a])})}return Sw(t,e,n)}function Sw(t,e,n){if(Y(t,$.StringLiteral))return{kind:"string-literal",value:rn(t,$.stringLiteral,e)};if(Y(t,$.IntegerLiteral))return{kind:"integer-literal",value:_w(t,$.integerLiteral,e)};if(Y(t,$.DecimalLiteral))return{kind:"decimal-literal",value:_w(t,$.decimalLiteral,e)};if(Y(t,$.BooleanLiteral))return{kind:"boolean-literal",value:CT(t,$.booleanLiteral,e)};if(Y(t,$.VarRef))return{kind:"var-ref",varName:rn(t,$.varName,e)};if(Y(t,$.PropertyRead))return{kind:"property-read",source:ne(t,$.readSource,`${e}.readSource`,n),readProp:ta(t,$.readProp,e,"readProp")};if(Y(t,$.Traverse))return{kind:"traverse",source:ne(t,$.traverseSource,`${e}.traverseSource`,n),through:ta(t,$.through,e,"through"),step:ne(t,$.step,`${e}.step`,n)};if(Y(t,$.BuildAstNode))return{kind:"build-ast-node",astClass:ta(t,$.astClass,e,"astClass"),set:yT(t,`${e}.set`,n)};if(Y(t,$.When))return{kind:"when",condition:ne(t,$.condition,`${e}.condition`,n),thenBuild:ne(t,$.thenBuild,`${e}.thenBuild`,n),elseBuild:gT(t,$.elseBuild,`${e}.elseBuild`,n)};if(Y(t,$.Concat))return{kind:"concat",parts:Yf(t,$.parts,`${e}.parts`,n)};if(Y(t,$.Fallback))return{kind:"fallback",primary:ne(t,$.primary,`${e}.primary`,n),alternate:ne(t,$.alternate,`${e}.alternate`,n)};if(Y(t,$.UriName))return{kind:"uri-name",source:ne(t,$.uriNameOf,`${e}.uriNameOf`,n)};if(Y(t,$.UriPublisher))return{kind:"uri-publisher",source:ne(t,$.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(Y(t,$.UriPackage))return{kind:"uri-package",source:ne(t,$.uriPackageOf,`${e}.uriPackageOf`,n)};if(Y(t,$.UriVersion))return{kind:"uri-version",source:ne(t,$.uriVersionOf,`${e}.uriVersionOf`,n)};if(Y(t,$.SubjectUri))return{kind:"subject-uri",source:ne(t,$.subjectOf,`${e}.subjectOf`,n)};if(Y(t,$.UriLiteral))return{kind:"uri-literal",refTo:ta(t,$.refTo,e,"refTo")};if(Y(t,$.DisplayLabel))return{kind:"display-label",labelTarget:ta(t,$.labelTarget,e,"labelTarget"),labelSource:ta(t,$.labelSource,e,"labelSource")};if(Y(t,$.ResolveRef))return{kind:"resolve-ref",source:ne(t,$.resolveSource,`${e}.resolveSource`,n)};if(Y(t,$.Normalize))return{kind:"normalize",source:ne(t,$.normSource,`${e}.normSource`,n),normKind:bT(t,e)};if(Y(t,$.UnescapedString))return{kind:"unescaped-string",source:ne(t,$.unescapedSource,`${e}.unescapedSource`,n)};if(Y(t,$.RenderMarkdown))return{kind:"render-markdown",source:ne(t,$.renderSource,`${e}.renderSource`,n),readProp:ta(t,$.renderProp,e,"renderProp"),format:vT(t,e)};if(Y(t,$.IsSet))return{kind:"is-set",check:ne(t,$.checkExpr,`${e}.checkExpr`,n)};if(Y(t,$.CallFragment))return ST(t,e,n);if(Y(t,$.Join))return{kind:"join",source:ne(t,$.source,`${e}.source`,n),separator:rn(t,$.separator,e)};if(Y(t,$.Count))return{kind:"count",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Sum))return{kind:"sum",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Min))return{kind:"min",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Max))return{kind:"max",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Average))return{kind:"average",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.ForEach))return{kind:"for-each",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),emit:ne(t,$.emit,`${e}.emit`,n)};if(Y(t,$.ListMap))return{kind:"list-map",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),mapBody:ne(t,$.mapBody,`${e}.mapBody`,n)};if(Y(t,$.Filter))return{kind:"filter",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),predicate:ne(t,$.predicate,`${e}.predicate`,n)};if(Y(t,$.PartitionBy))return{kind:"partition-by",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),partitionKey:ne(t,$.partitionKey,`${e}.partitionKey`,n)};if(Y(t,$.DistinctBy))return{kind:"distinct-by",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),distinctKey:ne(t,$.distinctKey,`${e}.distinctKey`,n)};if(Y(t,$.AllStatements))return{kind:"all-statements",source:ne(t,$.statementsOf,`${e}.statementsOf`,n)};if(Y(t,$.StatementPredicate))return{kind:"statement-predicate",source:ne(t,$.predicateOf,`${e}.predicateOf`,n)};if(Y(t,$.StatementValue))return{kind:"statement-value",source:ne(t,$.valueOf,`${e}.valueOf`,n)};if(Y(t,$.DateFormat))return{kind:"date-format",source:ne(t,$.dateSource,`${e}.dateSource`,n),format:$T(t,e)};if(Y(t,$.NumberFormat)){let a=sd(t,$.fractionDigits);if(a!==void 0&&(!Number.isInteger(a)||a<0||a>20))throw new De(`fractionDigits must be an integer between 0 and 20; got ${a}`,e);let s=aa(t,$.currencyCode);return{kind:"number-format",source:ne(t,$.numberSource,`${e}.numberSource`,n),style:wT(t,e),...a!==void 0?{fractionDigits:a}:{},...s!==void 0?{currencyCode:s}:{}}}let r=mT.find(a=>Y(t,a.type));if(r){let a=T(r.type);if(!ww(a))throw new De(`${a} is a numeric operator the expression runtime does not evaluate`,e);return{kind:"numeric-op",type:a,name:r.type.name,operands:r.operands.map(s=>({name:s.name,expr:ne(t,s,`${e}.${s.name}`,n)}))}}if(Y(t,$.Reverse))return{kind:"reverse",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.WindowedMap)){let a=sd(t,$.windowSize);if(a===void 0||!Number.isInteger(a)||a<1)throw new De("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:ne(t,$.source,`${e}.source`,n),windowSize:a,windowVar:rn(t,$.windowVar,e),windowBody:ne(t,$.windowBody,`${e}.windowBody`,n)}}if(Y(t,$.PairwiseMap))return{kind:"pairwise-map",source:ne(t,$.source,`${e}.source`,n),firstVar:rn(t,$.firstVar,e),secondVar:rn(t,$.secondVar,e),pairBody:ne(t,$.pairBody,`${e}.pairBody`,n)};if(Y(t,$.Scan))return{kind:"scan",source:ne(t,$.source,`${e}.source`,n),initialState:ne(t,$.initialState,`${e}.initialState`,n),stateVar:rn(t,$.stateVar,e),elementVar:rn(t,$.elementVar,e),accumulate:ne(t,$.accumulate,`${e}.accumulate`,n)};if(Y(t,$.ListItemAt))return{kind:"list-item-at",source:ne(t,$.source,`${e}.source`,n),itemIndex:ne(t,$.itemIndex,`${e}.itemIndex`,n)};if(Y(t,$.Equals))return{kind:"equals",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.GreaterThan))return{kind:"greater-than",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.LessThan))return{kind:"less-than",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.LessThanOrEqual))return{kind:"less-than-or-equal",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.Not))return{kind:"not",operand:ne(t,$.operand,`${e}.operand`,n)};if(Y(t,$.And))return{kind:"and",operands:Yf(t,$.operands,`${e}.operands`,n)};if(Y(t,$.Or))return{kind:"or",operands:Yf(t,$.operands,`${e}.operands`,n)};if(Y(t,$.Contains))return{kind:"contains",haystack:ne(t,$.haystack,`${e}.haystack`,n),needle:ne(t,$.needle,`${e}.needle`,n)};if(Y(t,$.Matches)){let a=rn(t,$.pattern,e);try{yw(a)}catch(s){throw s instanceof Be?new De(s.message,`${e}.pattern`):s}return{kind:"matches",source:ne(t,$.matchSource,`${e}.matchSource`,n),pattern:a}}if(Y(t,$.IsReference))return{kind:"is-reference",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsEmbedded))return{kind:"is-embedded",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsList))return{kind:"is-list",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsString))return{kind:"is-string",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsNumber))return{kind:"is-number",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsBoolean))return{kind:"is-boolean",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.StatementObject))return{kind:"statement-object",source:ne(t,$.statementSource,`${e}.statementSource`,n)};if(Y(t,$.Let))return{kind:"let",bindName:rn(t,$.letName,e),bindValue:ne(t,$.letValue,`${e}.letValue`,n),body:ne(t,$.letBody,`${e}.letBody`,n)};if(Y(t,$.GetStatementByName))return{kind:"get-statement-by-name",inSubject:ne(t,$.inSubject,`${e}.inSubject`,n),byName:ne(t,$.byName,`${e}.byName`,n)};throw new De("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}var dT=[$.arithLeft,$.arithRight],hT=[$.value],mT=[...[$.Add,$.Subtract,$.Multiply,$.Divide,Rt.Power,Rt.Modulo,Rt.Minimum,Rt.Maximum].map(t=>({type:t,operands:dT})),...[$.Abs,$.Negate,Rt.Exp,Rt.Ln,Rt.Log10,Rt.Sqrt,Rt.Floor,Rt.Ceil,Rt.Round,Rt.Sign].map(t=>({type:t,operands:hT})),{type:Rt.Clip,operands:[Rt.clipValue,Rt.clipLower,Rt.clipUpper]}];function ne(t,e,n,r){let a=hd(t,e,n,r);if(!a)throw new De("child expression is required",n);return Nn(a,n,r)}function gT(t,e,n,r){let a=hd(t,e,n,r);if(a)return Nn(a,n,r)}function Yf(t,e,n,r){return dd(t,e,n,r).map((a,s)=>Nn(a,`${n}[${s}]`,r))}function yT(t,e,n){return dd(t,$.set,e,n).map((r,a)=>kT(r,`${e}[${a}]`,n))}function kT(t,e,n){return{field:ta(t,$.field,e,"field"),value:ne(t,$.bindValue,`${e}.bindValue`,n)}}function bT(t,e){let n=Er(t,$.normKind);if(!n)throw new De("normKind is required",e);if($e(n,$.NORM_TRIM_END))return"trim-end";if($e(n,$.NORM_TO_UPPER))return"to-upper";if($e(n,$.NORM_TO_LOWER))return"to-lower";if($e(n,$.NORM_FIRST_CHAR))return"first-char";throw new De(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function vT(t,e){let n=Er(t,$.renderFormat);if(!n)throw new De("renderFormat is required",e);if($e(n,$.RENDER_HTML))return"html";if($e(n,$.RENDER_MARKDOWN))return"markdown";throw new De(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var Aw=new Set(["decimal","percent","basis-points","currency","compact"]);function wT(t,e){let n=aa(t,$.numberStyle);if(n===void 0)throw new De("numberStyle is required",e);if(!Aw.has(n))throw new De(`Unknown numberStyle "${n}"; supported: ${[...Aw].join(", ")}`,e);return n}var xw=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function $T(t,e){let n=aa(t,$.dateFormat);if(!n)throw new De("dateFormat is required",e);if(!xw.has(n))throw new De(`Unknown dateFormat "${n}"; supported: ${[...xw].join(", ")}`,e);return n}function ST(t,e,n){let r=Er(t,$.fragmentRef);if(!r)throw new De("fragmentRef is required",e);if(!ET(n.catalog,r))throw new De(`ExpressionFragment not found: ${r.publisher}/${r.package_}/${r.name}`,e);return{kind:"call-fragment",fragmentKey:AT(r)}}function AT(t){return`${t.publisher}/${t.package_}/${t.name}`}function xT(t){let e=new Map,n=[];for(let r of t){if(!(r instanceof q)||!Y(r,$.ExpressionFragment))continue;let a=g$(r,$.body);if(!a)continue;let s=(r.namespace||"").split("@")[0]||"",i=s.indexOf("/");if(i<0)continue;let o=s.substring(0,i),l=s.substring(i+1),c=`${o}/${l}/${r.name}`;n.push({key:c,subject:r,bodyEmb:a,pubPkgName:`${s}/${r.name}`})}for(let r of n){let a=Nn(r.bodyEmb,`fragment(${r.pubPkgName})`,{catalog:t,depth:0});e.set(r.key,a)}return e}function ET(t,e){for(let n of t)if(!(!(n instanceof q)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&Y(n,$.ExpressionFragment))return n}function h$(t,e){let n=new Set;for(let r of Bn(t,$.outputs))if(r instanceof de)n.add(r.object.subject.name);else if(r instanceof he)for(let a of r.object)a instanceof D&&n.add(a.subject.name);if(n.size===0)throw new De("outputs is required (at least one OutputFormat)",e);return n}function m$(t,e,n){let r=new Map,a=0;for(let s of Bn(t,$.formatOverrides))if(s instanceof he){for(let i of s.object)if(i instanceof te){let[o,l]=Ew(i,`${e}[${a++}]`);r.set(o,l)}}else if(s instanceof Ae){let[i,o]=Ew(s.object,`${e}[${a++}]`);r.set(i,o)}return r}function Ew(t,e){let n=Er(t,$.formatTarget);if(!n)throw new De("formatTarget is required",e);let r=[];for(let o of Bn(t,$.metadataKeys))if(o instanceof Ce)r.push(o.object);else if(o instanceof he)for(let l of o.object){let c=l.value;typeof c=="string"&&r.push(c)}let a=new Map;for(let o of Bn(t,$.metadataRenames))if(o instanceof he){for(let l of o.object)if(l instanceof te){let c=aa(l,$.fromKey),u=aa(l,$.toKey);c&&u&&a.set(c,u)}}else if(o instanceof Ae){let l=o.object,c=aa(l,$.fromKey),u=aa(l,$.toKey);c&&u&&a.set(c,u)}let s=id(t,$.trailingNewline),i=id(t,$.omitWrapper);return[n.name,{metadataKeys:r.length>0?r:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:i}]}function _T(t){return t.predicate?.subject}function Bn(t,e){let n=[];for(let r of t.statement){let a=_T(r);a&&$e(a,e)&&n.push(r)}return n}function g$(t,e){for(let n of Bn(t,e))if(n instanceof Ae)return n.object}function Er(t,e){for(let n of Bn(t,e))if(n instanceof de)return od(n.object.subject)}function aa(t,e){for(let n of Bn(t,e))if(n instanceof Ce)return n.object}function sd(t,e){for(let n of Bn(t,e))if(n instanceof et)return n.object}function id(t,e){for(let n of Bn(t,e))if(n instanceof Ge)return n.object}function rn(t,e,n){let r=aa(t,e);if(r===void 0)throw new De(`${e.name} (string) is required`,n);return r}function _w(t,e,n){let r=sd(t,e);if(r===void 0)throw new De(`${e.name} (number) is required`,n);return r}function CT(t,e,n){let r=id(t,e);if(r===void 0)throw new De(`${e.name} (boolean) is required`,n);return r}function ta(t,e,n,r){let a=Er(t,e);if(!a)throw new De(`${r} (URI reference) is required`,n);return a}function od(t){return{publisher:t.publisher,package_:t.package_,name:t.name}}var Na="kanonak.org",y$="look",Oi="core-rdf",k$={publisher:Na,package_:y$,name:"displayLabel"},b$={publisher:Na,package_:y$,name:"displaySummary"},jT={publisher:Na,package_:Oi,name:"subClassOf"},NT={publisher:Na,package_:Oi,name:"label"},PT={publisher:Na,package_:Oi,name:"comment"},Cw=new rt(Na,Oi,"Resource"),TT=8;function Oe(t,e){return v$(t,e,new Set)}function v$(t,e,n){let r=Pw(t,e,k$)??NT,a=Pw(t,e,b$)??PT,s=jw(t,e,r,n)??e.name,i=jw(t,e,a,n);return{label:s,summary:i}}function jw(t,e,n,r){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!$e(s.subject,n))){if(a instanceof Ce)return a.object;if(a instanceof et||a instanceof Ge)return String(a.object);if(a instanceof de)return Nw(t,a.object.subject,r);if(a instanceof he){let i=[];for(let o of a.object??[])if(o instanceof D){let l=Nw(t,o.subject,r);l&&i.push(l)}if(i.length>0)return i.join(", ")}return}}}function Nw(t,e,n){let r=T(e);if(n.has(r)||n.size>=TT)return e.name;let[a]=ze(t,e);if(!a)return e.name;let s=new Set(n);return s.add(r),v$(t,a,s).label}function Pw(t,e,n){let r=be(e,n);if(r)return r;let a=new Set,s=Fe(e,OT);for(;s.length>0;){let i=s.shift(),o=T(i);if(a.has(o))continue;a.add(o);let l=ze(t,i);for(let c of l){let u=be(c,n);if(u)return u}for(let c of l)s.push(...Fe(c,jT))}if(!a.has(T(Cw)))for(let i of ze(t,Cw)){let o=be(i,n);if(o)return o}}var OT={publisher:Na,package_:Oi,name:"type"},LT="kanonak.org",Pa=(t,e)=>({publisher:LT,package_:t,name:e}),RT=Pa("look","source"),Tw=Pa("look","connectors"),IT=Pa("look","relation"),MT=Pa("look","lineStyle"),DT=Pa("look","participants"),FT=Pa("core-owl","SymmetricProperty"),qT=Pa("core-owl","inverseOf"),Jl=new Set(["solid","dotted","open","thick"]);function Xl(t){return be(t,RT)}function Li(t,e){let n=Ft(e,Tw),r=n?[n]:hn(e,Tw),a=[];for(let s of r){if(!(s instanceof te))continue;let i=be(s,IT);if(!i)continue;let o=vt(s,MT),l=o!==void 0&&Jl.has(o);a.push({relation:i,subject:ze(t,i)[0],declaredStyle:l?o:void 0,invalidStyle:o!==void 0&&!l?o:void 0})}return a}function VT(t,e){let n=[];for(let r of hn(e,DT)){if(!(r instanceof D))continue;let a=ze(t,r.subject)[0];a&&n.push(a)}return n}function ld(t,e,n){for(let r of Gn(e))if($e(r,n)||ot(t,r).some(a=>$e(a,n)))return!0;return!1}function KT(t,e,n){let r=!!e.subject&&ld(t,e.subject,FT);return e.declaredStyle?{style:e.declaredStyle,undirected:r}:e.subject&&Fe(e.subject,qT).some(a=>n.some(s=>$e(a,s.relation)))?{style:"dotted",undirected:r}:{style:"solid",undirected:r}}function Ql(t,e,n){let r=Xl(n);if(!r)return Dl("the band declares no look.source");let a=Li(t,n);if(a.length===0)return Dl("the band declares no look.connectors \u2014 nothing can be a message");let s=Mr(e,r);if(!s)return{...Dl(),sourceAbsent:!0};if(!(s instanceof Lt))return Dl(`look.source ${T(r)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let i=[],o=[],l=0;for(let g of s.links){if(!g.target)continue;let m=g.target.subject,y=ze(t,m)[0];y&&(wt(t,y)!==void 0?a.some(v=>$e(m,v.relation))?i.push({kind:"selector",relation:m}):o.push(m):(i.push({kind:"participant",subject:y}),l++))}let c=[],u=[],p,f;for(let g of i){if(g.kind==="selector"){f=g.relation;continue}let m=g.subject;if(p){let y=f?a.filter(C=>$e(f,C.relation)):a,v=xe(m),k=xe(p),w=[],S=[];for(let C of y){let{style:N,undirected:_}=KT(t,C,a);v&&Fe(p,C.relation).some(B=>T(B)===T(v))?w.push({from:p,to:m,relation:C.relation,style:N,undirected:_}):k&&Fe(m,C.relation).some(B=>T(B)===T(k))&&S.push({from:m,to:p,relation:C.relation,style:N,undirected:_})}let A=w.length>0?w:S;c.push(...A),A.length===0&&na(p)!==na(m)&&u.push({prev:p,next:m,selected:f}),f=void 0}p=m}let h=new Map;for(let g of VT(t,n))h.set(na(g),g);for(let g of c)h.has(na(g.from))||h.set(na(g.from),g.from),h.has(na(g.to))||h.set(na(g.to),g.to);return{messages:c,gaps:u,lifelines:[...h.values()],mentions:l,strayPropertyRefs:o,sourceAbsent:!1}}function na(t){return`${t.namespace}/${t.name}`}function Dl(t){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...t?{problem:t}:{}}}var UT=new Set(["decimal","integer","int","long","short","byte","float","double","nonNegativeInteger","positiveInteger","negativeInteger","nonPositiveInteger","unsignedInt","unsignedLong","unsignedShort","unsignedByte"]),md=/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;function Zl(t,e){return ot(t,e).some(n=>n.publisher==="kanonak.org"&&n.package_==="core-xsd"&&UT.has(n.name))}function bn(t,e=n=>n.name){switch(t.kind){case"predicate":return e(t.property);case"inverse":return`^${bn(t.path,e)}`;case"alternative":return`(${t.paths.map(n=>bn(n,e)).join(" | ")})`}}function ec(t){let e=be(t,Rs);if(e)return{kind:"predicate",property:e};let n=Ft(t,Rs);return n?cd(n):ut(t,Rs)?{problem:"sh:path is neither a property nor a path expression; a list of paths is a sequence path, which core-shacl does not declare"}:void 0}function cd(t){let e=ut(t,mo),n=ut(t,gu);if(e&&n)return{problem:"a path expression is an sh:inversePath or an sh:alternativePath, not both"};if(e){let r=be(t,mo);if(r)return{kind:"inverse",path:{kind:"predicate",property:r}};let a=Ft(t,mo);if(!a)return{problem:"sh:inversePath takes one path, a property or a path expression"};let s=cd(a);return"problem"in s?s:{kind:"inverse",path:s}}if(n){let r=hn(t,gu);if(r.length<2)return{problem:"sh:alternativePath lists at least two paths"};let a=[];for(let s of r){let i=s instanceof D?{kind:"predicate",property:s.subject}:s instanceof te?cd(s):{problem:"each path sh:alternativePath lists is a property or a path expression"};if("problem"in i)return i;a.push(i)}return{kind:"alternative",paths:a}}return{problem:"a path written inline is an sh:inversePath or an sh:alternativePath; sequence and repetition paths are out of core-shacl's scope"}}function is(t){return typeof t=="number"?t:void 0}function kn(t,e){let n=ft(t,e);return typeof n=="number"?n:typeof n=="string"&&md.test(n)?Number(n):n===void 0?void 0:String(n)}function BT(t){if(!t)return;let e=T(t);if(e===T(pg))return"IRI";if(e===T(fg))return"BlankNode";if(e===T(dg))return"Literal"}function w$(t){if(!t)return;let e=T(t);if(e===T(hg))return"Violation";if(e===T(mg))return"Warning";if(e===T(gg))return"Info"}function $$(t,e,n,r){let a=ec(e);if(!a||"problem"in a)return;let s=HT(t,e,n,r);return a.kind==="predicate"?{kind:"predicate",constraint:{path:a.property,...s}}:{kind:"expression",constraint:{path:a,...s}}}function HT(t,e,n,r){let a={},s=is(ft(e,Wm)),i=is(ft(e,zm));s!==void 0&&(a.minCount=s),i!==void 0&&(a.maxCount=i);let o=is(ft(e,Qm)),l=is(ft(e,Zm));o!==void 0&&(a.minLength=o),l!==void 0&&(a.maxLength=l);let c=kn(e,eg),u=kn(e,tg);typeof c=="number"&&(a.minInclusive=c),typeof u=="number"&&(a.maxInclusive=u);let p=kn(e,ng),f=kn(e,rg);typeof p=="number"&&(a.minExclusive=p),typeof f=="number"&&(a.maxExclusive=f);let h=vt(e,Jm);if(h!==void 0){let S=vt(e,Xm);a.pattern=S!==void 0?{regex:h,flags:S}:{regex:h}}if(ut(e,pu)){let S=[],A=[];for(let{item:C}of bt(e,pu))"literal"in C?S.push(C.value):C instanceof D&&A.push(C.subject);S.length>0&&(a.inValues=S),A.length>0&&(a.inRefs=A)}let g=be(e,Ym);g&&(a.datatype=g);let m=be(e,Gm);m&&(a.classRef=m);let y=BT(be(e,ug));y&&(a.nodeKind=y);let v=be(e,Fa);if(v&&(a.hasValue=v),ut(e,xn)||ut(e,Is)||ut(e,Ms)){let S={},A=is(ft(e,Is)),C=is(ft(e,Ms));A!==void 0&&(S.minCount=A),C!==void 0&&(S.maxCount=C);let N=WT(t,e,r);"problem"in N?S.problem=N.problem:S.shape=N.shape,a.qualified=S}let k=vt(e,ag);k!==void 0&&(a.message=k);let w=w$(be(e,fu))??n;return w&&(a.severity=w),a}function WT(t,e,n){let r=Ft(e,xn);if(r)return Ow(t,r,void 0,n);let a=be(e,xn);if(!a)return{problem:"sh:qualifiedValueShape is missing"};let s=T(a);if(n.has(s))return{problem:`sh:qualifiedValueShape '${a.name}' leads back to itself (a cycle through named shapes)`};let i=ge(t,a);return i?Ow(t,i,s,n):{problem:`sh:qualifiedValueShape '${a.name}' does not resolve`}}function Ow(t,e,n,r){let a=n?new Set([...r,n]):r,s=Y(e,Da);if((Y(e,Ls)||ut(e,Rs))&&!s){let i=$$(t,e,void 0,a);return i?i.kind==="predicate"?{shape:{kind:"property",constraint:i.constraint}}:{problem:`the qualified property shape's sh:path is a path expression, ${bn(i.constraint.path)}; a qualified property shape's path is a property`}:{problem:"the qualified property shape has no sh:path"}}return e instanceof q&&!s?{problem:`sh:qualifiedValueShape '${e.name}' is not a shape`}:{shape:{kind:"node",shape:S$(t,e,a)}}}function S$(t,e,n){let r=w$(be(e,fu)),a=[],s={name:e instanceof q?e.name:"(inline shape)",uri:e instanceof q?xe(e):void 0,targetClass:be(e,Bm),targetNodes:Fe(e,sg),targetSubjectsOf:Fe(e,ig),targetObjectsOf:Fe(e,og),closed:ft(e,lg)===!0,ignoredProperties:[],severity:r,properties:[],pathExpressionProperties:a};s.ignoredProperties.push(...Fe(e,cg));for(let{item:i}of bt(e,Hm)){let o;if(i instanceof te?o=i:i instanceof D&&(o=ge(t,i.subject)),!o)continue;let l=$$(t,o,r,n);l?.kind==="predicate"?s.properties.push(l.constraint):l&&a.push(l.constraint)}return s}function gd(t){let e=[];for(let n of t){if(!(n instanceof q)||!Y(n,Da))continue;let r=xe(n);e.push(S$(t,n,new Set(r?[T(r)]:[])))}return e}function A$(t){let e=new Map;for(let n of t)if(n instanceof q)for(let r of so(n,go)){let a=xe(n);if(!a)throw new Error(`owl.hasKey on '${n.namespace}/${n.name}': the class has no resolvable URI.`);if(r.length===0)throw new Error(`owl.hasKey on '${n.name}' lists no properties; a key needs at least one.`);let s=r.map(({item:i})=>{let o=i instanceof D?ge(t,i.subject):void 0;if(!o||!In(t,o)){let l=i instanceof D?`'${T(i.subject)}'`:"a value that is not a reference";throw new Error(`owl.hasKey on '${n.name}' lists ${l}, which is not a property defined in scope; a key lists properties.`)}return i.subject});e.set(`${T(a)}|${s.map(T).join(",")}`,{classUri:a,className:n.name,properties:s})}return[...e.values()]}var zT="kanonak.org",YT="core-shacl",Qt=t=>({publisher:zT,package_:YT,name:t}),GT=Qt("NodeShape"),JT=Qt("targetClass"),XT=Qt("property"),QT=Qt("path"),ZT=Qt("minCount"),eO=Qt("maxCount"),tO=Qt("in"),nO=Qt("pattern"),rO=Qt("flags"),aO=Qt("minLength"),sO=Qt("maxLength"),iO=Qt("minInclusive"),oO=Qt("maxInclusive"),lO=Qt("minExclusive"),cO=Qt("maxExclusive"),uO=Qt("message");function Fl(t){return typeof t=="number"?t:void 0}function pO(t){let e={},n=Fl(ft(t,ZT)),r=Fl(ft(t,eO));n!==void 0&&(e.minCount=n),r!==void 0&&(e.maxCount=r);let a=Fl(ft(t,aO)),s=Fl(ft(t,sO));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let i=kn(t,iO),o=kn(t,oO);typeof i=="number"&&(e.minInclusive=i),typeof o=="number"&&(e.maxInclusive=o);let l=kn(t,lO),c=kn(t,cO);typeof l=="number"&&(e.minExclusive=l),typeof c=="number"&&(e.maxExclusive=c);let u=vt(t,nO);if(u!==void 0){let h=vt(t,rO);e.pattern=h!==void 0?{regex:u,flags:h}:{regex:u}}let p=bt(t,tO).map(h=>h.item).filter(h=>"literal"in h).map(h=>h.value);p.length>0&&(e.enumValues=p);let f=vt(t,uO);return f!==void 0&&(e.message=f),e}function fO(t,e){let n=[];for(let{item:r}of bt(e,XT))if(r instanceof te)n.push(r);else if(r instanceof D){let a=ge(t,r.subject);a&&n.push(a)}return n}function dO(t){let e=new Map;for(let n of t){if(!(n instanceof q)||!Y(n,GT))continue;let r=be(n,JT);if(!r)continue;let a=T(r);for(let s of fO(t,n)){let i=be(s,QT);if(!i)continue;let o=pO(s);if(hO(s,o))continue;let l={pathKey:T(i),constraints:o},c=e.get(a);c?c.push(l):e.set(a,[l])}}return e}var Lw=new WeakMap;function Gl(t){let e=Lw.get(t);return e||(e=dO(t),Lw.set(t,e)),e}function hO(t,e){return ut(t,Fa)||ut(t,xn)?Object.keys(e).every(n=>n==="message"):!1}function mO(t,e){e.minCount!==void 0&&(t.minCount=e.minCount),e.maxCount!==void 0&&(t.maxCount=e.maxCount),e.minLength!==void 0&&(t.minLength=e.minLength),e.maxLength!==void 0&&(t.maxLength=e.maxLength),e.minInclusive!==void 0&&(t.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(t.maxInclusive=e.maxInclusive),e.minExclusive!==void 0&&(t.minExclusive=e.minExclusive),e.maxExclusive!==void 0&&(t.maxExclusive=e.maxExclusive),e.pattern!==void 0&&(t.pattern=e.pattern),e.enumValues!==void 0&&(t.enumValues=e.enumValues),e.message!==void 0&&(t.message=e.message)}function yd(t,e,n){let r=T(n),a=!1,s={};for(let i=e.length-1;i>=0;i--){let o=t.get(T(e[i]));if(o)for(let l of o)l.pathKey===r&&(a=!0,mO(s,l.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Rw="kanonak.org",gO="core-rdf",yO="core-xsd";var kO=t=>t;function bO(t,e,n){if(e.publisher===Rw&&e.package_===gO&&e.name==="Literal")return{kind:"datatype",uri:e};let r=ge(t,e);if(r){let a=kO(r);if(tt.isDatatypeType(a))return{kind:"datatype",uri:e};if(tt.isClassType(a))return{kind:"class",uri:xe(r)??e,localName:r.name}}return e.publisher===Rw&&e.package_===yO?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}var vO={cardinality:"list",required:!1};function wO(t,e,n){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let r=bO(t,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":r.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:r,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??vO}}function Iw(t,e,n,r){let a=ot(t,e),s=T(e);return qa(t,e).filter(i=>n?!0:i.domains.some(o=>T(o)===s)).map(i=>wO(t,i,yd(r,a,i.uri)))}function Ti(t,e={}){let n=t.replace(/\r\n/g,`
|
|
171
|
+
`+b.slice(M+1):ue+=b.slice(z),ue.slice(1)}function Lr(b){let P="",L=0;for(let W=0;W<b.length;L>=65536?W+=2:W++){L=Ot(b,W);let z=H[L];!z&&Ke(L)?(P+=b[W],L>=65536&&(P+=b[W+1])):P+=z||R(L)}return P}function _c(b,P,L){let W="",z=b.tag;for(let G=0,M=L.length;G<M;G+=1){let Z=L[G];b.replacer&&(Z=b.replacer.call(L,String(G),Z)),(j(b,P,Z,!1,!1)||typeof Z>"u"&&j(b,P,null,!1,!1))&&(W!==""&&(W+=","+(b.condenseFlow?"":" ")),W+=b.dump)}b.tag=z,b.dump="["+W+"]"}function xs(b,P,L,W){let z="",G=b.tag;for(let M=0,Z=L.length;M<Z;M+=1){let ue=L[M];b.replacer&&(ue=b.replacer.call(L,String(M),ue)),(j(b,P+1,ue,!0,!0,!1,!0)||typeof ue>"u"&&j(b,P+1,null,!0,!0,!1,!0))&&((!W||z!=="")&&(z+=qe(b,P)),b.dump&&o===b.dump.charCodeAt(0)?z+="-":z+="- ",z+=b.dump)}b.tag=G,b.dump=z||"[]"}function Cc(b,P,L){let W="",z=b.tag,G=Object.keys(L);for(let M=0,Z=G.length;M<Z;M+=1){let ue="";W!==""&&(ue+=", "),b.condenseFlow&&(ue+='"');let ye=G[M],ke=L[ye];b.replacer&&(ke=b.replacer.call(L,ye,ke)),j(b,P,ye,!1,!1)&&(b.dump.length>1024&&(ue+="? "),ue+=b.dump+(b.condenseFlow?'"':"")+":"+(b.condenseFlow?"":" "),j(b,P,ke,!1,!1)&&(ue+=b.dump,W+=ue))}b.tag=z,b.dump="{"+W+"}"}function jc(b,P,L,W){let z="",G=b.tag,M=Object.keys(L);if(b.sortKeys===!0)M.sort();else if(typeof b.sortKeys=="function")M.sort(b.sortKeys);else if(b.sortKeys)throw new e("sortKeys must be a boolean or a function");for(let Z=0,ue=M.length;Z<ue;Z+=1){let ye="";(!W||z!=="")&&(ye+=qe(b,P));let ke=M[Z],Ee=L[ke];if(b.replacer&&(Ee=b.replacer.call(L,ke,Ee)),!j(b,P+1,ke,!0,!0,!0))continue;let Pe=b.tag!==null&&b.tag!=="?"||b.dump&&b.dump.length>1024;Pe&&(b.dump&&o===b.dump.charCodeAt(0)?ye+="?":ye+="? "),ye+=b.dump,Pe&&(ye+=qe(b,P)),j(b,P+1,Ee,!0,Pe)&&(b.dump&&o===b.dump.charCodeAt(0)?ye+=":":ye+=": ",ye+=b.dump,z+=ye)}b.tag=G,b.dump=z||"{}"}function d(b,P,L){let W=L?b.explicitTypes:b.implicitTypes;for(let z=0,G=W.length;z<G;z+=1){let M=W[z];if((M.instanceOf||M.predicate)&&(!M.instanceOf||typeof P=="object"&&P instanceof M.instanceOf)&&(!M.predicate||M.predicate(P))){if(L?M.multi&&M.representName?b.tag=M.representName(P):b.tag=M.tag:b.tag="?",M.represent){let Z=b.styleMap[M.tag]||M.defaultStyle,ue;if(r.call(M.represent)==="[object Function]")ue=M.represent(P,Z);else if(a.call(M.represent,Z))ue=M.represent[Z](P,Z);else throw new e("!<"+M.tag+'> tag resolver accepts not "'+Z+'" style');b.dump=ue}return!0}}return!1}function j(b,P,L,W,z,G,M){b.tag=null,b.dump=L,d(b,L,!1)||d(b,L,!0);let Z=r.call(b.dump),ue=W;W&&(W=b.flowLevel<0||b.flowLevel>P);let ye=Z==="[object Object]"||Z==="[object Array]",ke,Ee;if(ye&&(ke=b.duplicates.indexOf(L),Ee=ke!==-1),(b.tag!==null&&b.tag!=="?"||Ee||b.indent!==2&&P>0)&&(z=!1),Ee&&b.usedDuplicates[ke])b.dump="*ref_"+ke;else{if(ye&&Ee&&!b.usedDuplicates[ke]&&(b.usedDuplicates[ke]=!0),Z==="[object Object]")W&&Object.keys(b.dump).length!==0?(jc(b,P,b.dump,z),Ee&&(b.dump="&ref_"+ke+b.dump)):(Cc(b,P,b.dump),Ee&&(b.dump="&ref_"+ke+" "+b.dump));else if(Z==="[object Array]")W&&b.dump.length!==0?(b.noArrayIndent&&!M&&P>0?xs(b,P-1,b.dump,z):xs(b,P,b.dump,z),Ee&&(b.dump="&ref_"+ke+b.dump)):(_c(b,P,b.dump),Ee&&(b.dump="&ref_"+ke+" "+b.dump));else if(Z==="[object String]")b.tag!=="?"&&Xi(b,b.dump,P,G,ue);else{if(Z==="[object Undefined]")return!1;if(b.skipInvalid)return!1;throw new e("unacceptable kind of an object to dump "+Z)}if(b.tag!==null&&b.tag!=="?"){let Pe=encodeURI(b.tag[0]==="!"?b.tag.slice(1):b.tag).replace(/!/g,"%21");b.tag[0]==="!"?Pe="!"+Pe:Pe.slice(0,18)==="tag:yaml.org,2002:"?Pe="!!"+Pe.slice(18):Pe="!<"+Pe+">",b.dump=Pe+" "+b.dump}}return!0}function F(b,P){let L=[],W=[];q(b,L,W);let z=W.length;for(let G=0;G<z;G+=1)P.duplicates.push(L[W[G]]);P.usedDuplicates=new Array(z)}function q(b,P,L){if(b!==null&&typeof b=="object"){let W=P.indexOf(b);if(W!==-1)L.indexOf(W)===-1&&L.push(W);else if(P.push(b),Array.isArray(b))for(let z=0,G=b.length;z<G;z+=1)q(b[z],P,L);else{let z=Object.keys(b);for(let G=0,M=z.length;G<M;G+=1)q(b[z[G]],P,L)}}}function I(b,P){P=P||{};let L=new se(P);L.noRefs||F(b,L);let W=b;return L.replacer&&(W=L.replacer.call({"":W},"",W)),j(L,0,W,!0,!0)?L.dump+`
|
|
172
|
+
`:""}return tu.dump=I,tu}var om;function Lx(){if(om)return Yt;om=1;let t=Tx(),e=Ox();function n(r,a){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+a+" instead, which is now safe by default.")}}return Yt.Type=tn(),Yt.Schema=lm(),Yt.FAILSAFE_SCHEMA=fm(),Yt.JSON_SCHEMA=ym(),Yt.CORE_SCHEMA=km(),Yt.DEFAULT_SCHEMA=nu(),Yt.load=t.load,Yt.loadAll=t.loadAll,Yt.dump=e.dump,Yt.YAMLException=js(),Yt.types={binary:wm(),float:gm(),map:pm(),null:dm(),pairs:Sm(),set:Am(),timestamp:bm(),bool:hm(),int:mm(),merge:vm(),omap:$m(),seq:um(),str:cm()},Yt.safeLoad=n("safeLoad","load"),Yt.safeLoadAll=n("safeLoadAll","loadAll"),Yt.safeDump=n("safeDump","dump"),Yt}var Rx=Lx(),Ia=Nx(Rx),{Type:oU,Schema:lU,FAILSAFE_SCHEMA:xm,JSON_SCHEMA:cU,CORE_SCHEMA:uU,DEFAULT_SCHEMA:pU,load:Em,loadAll:fU,dump:Ns,YAMLException:dU,types:hU,safeLoad:mU,safeLoadAll:gU,safeDump:yU}=Ia;var Ix=new Set(["Package","EphemeralPackage"]);function Cm(t){return typeof t=="string"&&Ix.has(t)}var me=class{parse(t){let e=this.parseWithErrors(t);if(!e.isValid){let n=e.errors[0];throw new Error(`YAML parse error at line ${n.line}, column ${n.column}: ${n.message}`)}return e.document}parseWithErrors(t){let e=[],n;try{t=t.replace(/^\uFEFF/,"");let r=Em(t,{schema:xm});if(!r||typeof r!="object")return n={metadata:this.createEmptyMetadata(),body:{},toString:()=>"KanonakDocument(empty)"},{document:n,errors:e,isValid:!0};let a=this.extractMetadata(r),s=this.extractBody(r,a);return n={metadata:a,body:s,toString:function(){return this.metadata.namespace_?`KanonakDocument(${this.metadata.namespace_.publisher}/${this.metadata.namespace_.package_})`:"KanonakDocument(no namespace)"}},{document:n,errors:e,isValid:!0}}catch(r){let a=r,s=a.mark?a.mark.line+1:0,i=a.mark?a.mark.column+1:0,o={message:a.message||"Unknown parse error",line:s,column:i,errorType:a.name==="YAMLException"?"SyntaxError":"Unknown",toString:()=>`${a.name==="YAMLException"?"SyntaxError":"Unknown"} at line ${s}: ${a.message||"Unknown parse error"}`};return e.push(o),{document:void 0,errors:e,isValid:!1}}}save(t){let e={};if(t.metadata.namespace_){let n=t.metadata.namespace_,r={type:"Package",publisher:n.publisher};n.version&&(r.version=`${n.version.major}.${n.version.minor}.${n.version.patch}`),t.metadata.imports&&(r.imports=this.serializeImports(t.metadata.imports)),e[n.package_]=r}for(let[n,r]of Object.entries(t.body)){let a=e[n];e[n]=a!==void 0&&r&&typeof r=="object"&&!Array.isArray(r)?{...a,...r}:r}return Ns(e,{indent:2,noRefs:!0,sortKeys:!1})}createEmptyMetadata(){return{get allImports(){return[]}}}addAllImportsGetter(t){let e=t.imports;return Object.defineProperty(t,"allImports",{get:function(){if(!e)return[];let n=[];for(let r of Object.values(e))n.push(...r);return n},enumerable:!0,configurable:!0}),t}createVersion(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}}extractMetadata(t){let e=this.createEmptyMetadata();for(let[n,r]of Object.entries(t))if(r&&typeof r=="object"&&Cm(r.type)){e.type_=r.type;let a=n,s=r.publisher,i=r.version?Lt(r.version,`Package ${s}/${n}'s version`):void 0;return s&&a&&(e.namespace_={publisher:s,package_:a,version:i,toString:function(){return this.version?`${this.publisher}/${this.package_}@${this.version.major}.${this.version.minor}.${this.version.patch}`:`${this.publisher}/${this.package_}`},equals:o=>!o||typeof o!="object"?!1:o.publisher===s&&o.package_===a&&(!i||!o.version||i.equals(o.version)),getHashCode:()=>{let o=0;for(let l=0;l<s.length;l++)o=(o<<5)-o+s.charCodeAt(l);for(let l=0;l<a.length;l++)o=(o<<5)-o+a.charCodeAt(l);return o|0}}),r.imports&&Array.isArray(r.imports)&&(e.imports=this.parseImportsV3(r.imports)),this.addAllImportsGetter(e)}return e}extractBody(t,e){let n={};for(let[r,a]of Object.entries(t))if(a&&typeof a=="object"&&Cm(a.type)){let s={};for(let[i,o]of Object.entries(a))i==="publisher"||i==="version"||i==="imports"||(s[i]=o);n[r]=s}else n[r]=a;return n}parseImportsV3(t){let e={};for(let n of t)if(!(!n||typeof n!="object"))if(n.packages&&Array.isArray(n.packages)){let r=n.publisher;if(!r)throw new Error("PublisherImport requires 'publisher' property");e[r]||(e[r]=[]);for(let a of n.packages){if(!a||typeof a!="object")continue;let s=this.parseImportFromEmbeddedObject(a,r);e[r].push(s)}}else{let r=this.parseImportFromEmbeddedObject(n,n.publisher),a=r.publisher||"";e[a]||(e[a]=[]),e[a].push(r)}return e}parseImportFromEmbeddedObject(t,e){let n=t.package;if(!n)throw new Error("Import requires 'package' property");let r=t.match;if(!r)throw new Error("Import requires 'match' property");let a=t.version;if(!a)throw new Error("Import requires 'version' property");let s;if(t.mode!==void 0&&t.mode!==null){if(!Nc.includes(t.mode))throw new Error(`Import '${n}' has an unknown mode '${t.mode}'; expected one of: ${Nc.join(", ")}`);s=t.mode}return this.makeImport(n,r,a,e,t.alias,s)}makeImport(t,e,n,r,a,s){let i=`Import ${r?`${r}/`:""}${t}`,o=Lt(n,`${i}'s version`),l=Oc(e,`${i}'s match`),c=this.calculateMaxVersion(e,o);return{package_:`${t} ${e} ${o.toString()}`,publisher:r,packageName:t,versionOperator:l,version:o,alias:a,...s?{mode:s}:{},minVersion:o,maxVersion:c,toEmbeddedObject:()=>{let u={package:t,match:e,version:o.toString()};return a&&(u.alias=a),s&&(u.mode=s),u},toString:()=>a?`${t} ${e} ${o.toString()} as ${a}`:`${t} ${e} ${o.toString()}`}}buildImport(t,e,n,r){return this.makeImport(t,e,n,r)}calculateMaxVersion(t,e){switch(t){case"~":return this.createVersion(e.major,e.minor+1,0);case"^":return e.major===0?this.createVersion(0,e.minor+1,0):this.createVersion(e.major+1,0,0);default:return this.createVersion(999,999,999)}}serializeImports(t){let e=[];for(let[n,r]of Object.entries(t)){let a={publisher:n,packages:r.map(s=>{let i=Ft(s.versionOperator),o={package:s.packageName,match:i,version:`${s.version.major}.${s.version.minor}.${s.version.patch}`};return s.alias&&(o.alias=s.alias),o})};e.push(a)}return e}};var ao=class{},kt=class extends ao{statement=[];unresolvedPredicates=[];sourceDoc="";sourceKey},V=class extends kt{namespace;name;icon},te=class extends kt{name;rangeType},D=class Nm extends ao{subject;sourceKey;static parse(e){let n=new Nm;return n.subject=rt.parse(e),n}},xt=class extends ao{value;carrier;lexical;rangeUnresolved;links;sourceKey},Gn=class{predicate;object;sourceKey},Jn=class extends Gn{carrier;lexical;rangeUnresolved},Ce=class Pm extends Jn{static parse(e,n){let r=new Pm;return r.predicate=D.parse(e),r.object=n,r}},et=class Tm extends Jn{static parse(e,n){let r=new Tm;return r.predicate=D.parse(e),r.object=n,r}},Ge=class extends Jn{},de=class Om extends Gn{static parse(e,n){let r=new Om;return r.predicate=D.parse(e),r.object=D.parse(n),r}},Ae=class extends Gn{},he=class extends Gn{},Rt=class extends Ce{links=[]};function T(t){return`${t.publisher}/${t.package_}/${t.name}`}function $e(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Mr(t){let e=t.version;return e&&typeof e.major=="number"?`https://${t.publisher}/${t.package_}/${e.major}.${e.minor}.${e.patch}/${t.name}`:`https://${t.publisher}/${t.package_}/${t.name}`}function Xn(t){return Fe(t,Mx)}var Mx={publisher:"kanonak.org",package_:"core-rdf",name:"type"};function Fe(t,e){let n=[];for(let r of bt(t,e))r.item instanceof D&&n.push(r.item.subject);return n}function bt(t,e){return so(t,e).flat()}function so(t,e){if(!(t instanceof kt))return[];let n=[];for(let r of t.statement){let a=r.predicate;if(!(!a?.subject||!$e(a.subject,e)))if(r instanceof de)n.push([{item:r.object,fromList:!1}]);else if(r instanceof Ae)n.push([{item:r.object,fromList:!1}]);else if(r instanceof Rt)n.push([{item:{literal:!0,value:r.object,carrier:r.carrier,lexical:r.lexical,links:r.links},fromList:!1}]);else if(r instanceof Ce||r instanceof et||r instanceof Ge)n.push([{item:{literal:!0,value:r.object,carrier:r.carrier,lexical:r.lexical},fromList:!1}]);else if(r instanceof he){let s=[];for(let i of r.object??[])if(i instanceof D||i instanceof te)s.push({item:i,fromList:!0});else if(i instanceof xt)s.push({item:{literal:!0,value:i.value,carrier:i.carrier,lexical:i.lexical,links:i.links},fromList:!0});else throw new Error(`rawValuesOf: a list value of '${e.name}' is a ${i?.constructor?.name??typeof i}; list items are references, embedded values or literals.`);n.push(s)}else throw new Error(`rawValuesOf: '${e.name}' has a statement of unknown kind ${r?.constructor?.name??typeof r}.`)}return n}function Y(t,e){if(!(t instanceof kt))return!1;for(let n of t.statement)if(n.predicate?.subject?.name==="type"&&n instanceof de){let r=n.object;if($e(r.subject,e))return!0}return!1}function Qn(t,e){let n=[];for(let r of t)r instanceof V&&Y(r,e)&&n.push(r);return n}function ge(t,e){let n=e.version,r=n&&typeof n.major=="number"?`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`:void 0;for(let a of t){if(!(a instanceof V)||a.name!==e.name)continue;let s=a.namespace||"";if(r!==void 0){if(s===r)return a}else if(s.startsWith(`${e.publisher}/${e.package_}@`))return a}}function ze(t,e){let n=[];for(let r of t)!(r instanceof V)||r.name!==e.name||(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(r);return n.sort((r,a)=>{let s=At((r.namespace||"").split("@")[1]??""),i=At((a.namespace||"").split("@")[1]??"");return s?i?_e(i,s):-1:i?1:0}),n}function Dr(t,e){for(let n of t.statement){let r=n.predicate;if(r?.subject&&$e(r.subject,e))return n}}function ut(t,e){return Dr(t,e)!==void 0}function ft(t,e){let n=Dr(t,e);if(n&&(n instanceof Ce||n instanceof et||n instanceof Ge))return n.object}function vt(t,e){let n=ft(t,e);return typeof n=="string"?n:void 0}function be(t,e){let n=Dr(t,e);if(n instanceof de)return n.object.subject}function Vt(t,e){let n=Dr(t,e);if(n instanceof Ae)return n.object}function hn(t,e){let n=Dr(t,e);return n instanceof he?n.object??[]:[]}function Rn(t,e,n,r){let a=ru(t,e,r);if(a.length===0)return[];let s=Dx(n);return a.map(({value:i,address:o})=>{let l=i.fromList;if(i.item instanceof D){let u=s.resolve(i.item.subject);return u?{kind:"subject",node:u,uri:i.item.subject,address:o,fromList:l}:{kind:"unresolved",uri:i.item.subject,address:o,fromList:l}}if(i.item instanceof te)return{kind:"embedded",node:i.item,address:o,fromList:l};let c={kind:"literal",value:i.item.value,carrier:i.item.carrier,lexical:i.item.lexical,address:o,fromList:l};return i.item.links&&(c.links=i.item.links),c})}function fa(t){let e=An(`${t.namespace}/${t.name}`);if(e.kind!=="resource")throw new Error(`subjectAddress: '${t.namespace}/${t.name}' is not a resource address`);return T(e.uri)}function ru(t,e,n){let r=bt(t,e);if(r.length===0)return[];let a=n.includes("#")?`${n}.${e.name}`:`${n}#${e.name}`,s=r.length>1||r.some(i=>i.fromList);return r.map((i,o)=>({value:i,address:i.item instanceof te&&i.item.name?`${a}.${i.item.name}`:s?`${a}[${o}]`:a}))}var jm=new WeakMap;function Dx(t){let e=jm.get(t);if(e)return e;let n=new Map,r=new Map;for(let a of t){if(!(a instanceof V))continue;let s=a.namespace||"",i=`${s}\0${a.name}`;n.has(i)||n.set(i,a);let o=s.indexOf("@");if(o>=0){let l=`${s.slice(0,o)}\0${a.name}`;r.has(l)||r.set(l,a)}}return e={resolve(a){let s=a.version;return s&&typeof s.major=="number"?n.get(`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}\0${a.name}`):r.get(`${a.publisher}/${a.package_}\0${a.name}`)}},jm.set(t,e),e}var at=class{constructor(t,e){this.doc=t,this.broader=e}doc;broader;async getAllDocumentsAsync(){return[this.doc]}async getDocumentAsync(t){return this.broader.getDocumentAsync(t)}async getDocumentsByNamespaceAsync(t,e){return this.broader.getDocumentsByNamespaceAsync(t,e)}async getHighestCompatibleVersionAsync(t,e){return this.broader.getHighestCompatibleVersionAsync(t,e)}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(t){return this.broader.getDocumentContentAsync(t)}async getDocumentUriAsync(t){return this.broader.getDocumentUriAsync(t)}};function Lm(t){let e=t.split("/");if(e.length!==3)return;let[n,r,a]=e;if(!n||!r||!a)return;let s=r.indexOf("@"),i=s===-1?r:r.slice(0,s);if(i)return`${n}/${i}/${a}`}var oe;(function(t){t.Integer="integer",t.Decimal="decimal",t.Double="double",t.Float="float",t.Boolean="boolean",t.String="string",t.AnyUri="anyURI",t.LangString="langString",t.DateTime="dateTime",t.Date="date",t.Time="time",t.HexBinary="hexBinary",t.Base64Binary="base64Binary"})(oe||(oe={}));var Fx=[["integer",oe.Integer],["long",oe.Integer],["int",oe.Integer],["short",oe.Integer],["byte",oe.Integer],["unsignedLong",oe.Integer],["unsignedInt",oe.Integer],["unsignedShort",oe.Integer],["unsignedByte",oe.Integer],["nonNegativeInteger",oe.Integer],["positiveInteger",oe.Integer],["nonPositiveInteger",oe.Integer],["negativeInteger",oe.Integer],["decimal",oe.Decimal],["double",oe.Double],["float",oe.Float],["boolean",oe.Boolean],["string",oe.String],["normalizedString",oe.String],["token",oe.String],["anyURI",oe.AnyUri],["dateTime",oe.DateTime],["date",oe.Date],["time",oe.Time],["hexBinary",oe.HexBinary],["base64Binary",oe.Base64Binary]],Vx=new Map(Fx.map(([t,e])=>[`kanonak.org/core-xsd/${t}`,e])),qx="kanonak.org/core-rdf/langString";function Ps(t){let e=Lm(t);if(e!==void 0)return e===qx?oe.LangString:Vx.get(e)}function Kx(t){let e=t.trim();if(!/^[+-]?\d+$/.test(e))throw new Error(`canonicalInteger: '${t}' is not a valid xsd:integer lexical`);return BigInt(e.replace(/^\+/,"")).toString()}function Ux(t){let e=t.trim(),n=/^([+-]?)(\d*)(?:\.(\d*))?$/.exec(e);if(!n||n[2]===""&&(n[3]??"")==="")throw new Error(`canonicalDecimal: '${t}' is not a valid xsd:decimal lexical`);let r=n[1]==="-"?"-":"",a=(n[2]??"").replace(/^0+/,"")||"0",s=(n[3]??"").replace(/0+$/,""),i=s.length>0?`${a}.${s}`:a;return i==="0"?"0":`${r}${i}`}function Rm(t,e,n){let r=t.trim();if(r==="NaN")return"NaN";if(r==="INF")return"INF";if(r==="-INF")return"-INF";if(!/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(r))throw new Error(`canonical${n}: '${t}' is not a valid xsd:${n.toLowerCase()} lexical`);let a=e(Number(r));if(!Number.isFinite(a))throw new Error(`canonical${n}: '${t}' is out of the finite range`);return Object.is(a,-0)?"0":String(a)}function Bx(t){return Rm(t,e=>e,"Double")}function Hx(t){return Rm(t,e=>Math.fround(e),"Float")}function Wx(t){let e=t.trim();if(e==="true"||e==="1")return"true";if(e==="false"||e==="0")return"false";throw new Error(`canonicalBoolean: '${t}' is not a valid xsd:boolean lexical`)}function zx(t){return t.normalize("NFC")}function Yx(t){return t.normalize("NFC")}function Gx(t){let e=t.trim();if(!/^([0-9A-Fa-f]{2})*$/.test(e))throw new Error(`canonicalHexBinary: '${t}' is not a valid xsd:hexBinary lexical`);return e.toUpperCase()}function Jx(t){let e=t.replace(/\s+/g,"");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(e)||e.length%4!==0)throw new Error(`canonicalBase64: '${t}' is not a valid xsd:base64Binary lexical`);return Qx(Xx(e))}var Zn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Xx(t){let e=t.replace(/=+$/,""),n=new Uint8Array(e.length*6>>3),r=0,a=0,s=0;for(let i=0;i<e.length;i++)r=r<<6|Zn.indexOf(e[i]),a+=6,a>=8&&(a-=8,n[s++]=r>>a&255);return n}function Qx(t){let e="",n=0;for(;n+3<=t.length;n+=3){let a=t[n]<<16|t[n+1]<<8|t[n+2];e+=Zn[a>>18&63]+Zn[a>>12&63]+Zn[a>>6&63]+Zn[a&63]}let r=t.length-n;if(r===1){let a=t[n]<<16;e+=Zn[a>>18&63]+Zn[a>>12&63]+"=="}else if(r===2){let a=t[n]<<16|t[n+1]<<8;e+=Zn[a>>18&63]+Zn[a>>12&63]+Zn[a>>6&63]+"="}return e}var io=t=>t<10?`0${t}`:`${t}`,Zx=[31,28,31,30,31,30,31,31,30,31,30,31];function eE(t){let e=(t%BigInt(400)+BigInt(400))%BigInt(400);return e%BigInt(4)===BigInt(0)&&(e%BigInt(100)!==BigInt(0)||e===BigInt(0))}function au(t,e){return e===2&&eE(t)?29:Zx[e-1]}function su(t){let e=(t<BigInt(0)?-t:t).toString().padStart(4,"0");return t<BigInt(0)?`-${e}`:e}function Im(t,e,n,r,a){let s=BigInt(t),i=Number(e),o=Number(n);if(i<1||i>12)throw new Error(`${r}: '${a}' has month ${e}; a month is 01 to 12`);if(o<1||o>au(s,i))throw new Error(`${r}: '${a}' has day ${n}, which month ${e} of year ${su(s)} doesn't have`);return{year:s,month:i,day:o}}function tE(t){return t.day<au(t.year,t.month)?{...t,day:t.day+1}:t.month<12?{year:t.year,month:t.month+1,day:1}:{year:t.year+BigInt(1),month:1,day:1}}function nE(t){return t.day>1?{...t,day:t.day-1}:t.month>1?{year:t.year,month:t.month-1,day:au(t.year,t.month-1)}:{year:t.year-BigInt(1),month:12,day:31}}function iu(t,e,n){if(!t)return;if(t==="Z")return 0;let r=Number(t.slice(1,3)),a=Number(t.slice(4,6));if(a>59||r>14||r===14&&a>0)throw new Error(`${e}: '${n}' has offset ${t}; an offset is at most 14:00 either way`);return(t[0]==="-"?-1:1)*(r*60+a)}function Mm(t,e,n,r,a,s){let i=Number(t),o=Number(e),l=Number(n),c=i===24&&o===0&&l===0&&r==="";if(o>59||l>59||i>23&&!c)throw new Error(`${a}: '${s}' has time ${t}:${e}:${n}${r}; XSD 1.1 allows 00:00:00 to 23:59:59, and 24:00:00 exactly`);return{hour:i,minute:o}}function Dm(t){if(!t)return"";let e=t.replace(/^\./,"").replace(/0+$/,"");return e.length>0?`.${e}`:""}function Fm(t){return t?t==="Z"||t==="+00:00"||t==="-00:00"?"Z":t:""}var rE=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/,aE=/^(-?\d{4,})-(\d{2})-(\d{2})(Z|[+-]\d{2}:\d{2})?$/,sE=/^(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/;function iE(t){let e="canonicalDateTime",n=rE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:dateTime lexical`);let[,r,a,s,i,o,l,c,u]=n,p=Dm(c),f=Im(r,a,s,e,t),h=Mm(i,o,l,p,e,t),g=h.hour*60+h.minute-(iu(u,e,t)??0);return g<0?(g+=1440,f=nE(f)):g>=1440&&(g-=1440,f=tE(f)),`${`${su(f.year)}-${io(f.month)}-${io(f.day)}`}T${io(Math.floor(g/60))}:${io(g%60)}:${l}${p}${u?"Z":""}`}function oE(t){let e="canonicalDate",n=aE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:date lexical`);let[,r,a,s,i]=n,o=Im(r,a,s,e,t);return iu(i,e,t),`${su(o.year)}-${a}-${s}${Fm(i)}`}function lE(t){let e="canonicalTime",n=sE.exec(t.trim());if(!n)throw new Error(`${e}: '${t}' is not a valid xsd:time lexical`);let[,r,a,s,i,o]=n,l=Dm(i),c=Mm(r,a,s,l,e,t);return iu(o,e,t),`${c.hour===24?"00":r}:${a}:${s}${l}${Fm(o)}`}function Vm(t,e){switch(t){case oe.Integer:return Kx(e);case oe.Decimal:return Ux(e);case oe.Double:return Bx(e);case oe.Float:return Hx(e);case oe.Boolean:return Wx(e);case oe.String:return zx(e);case oe.AnyUri:return Yx(e);case oe.LangString:throw new Error(`canonicalLangString: a language string is a structured value, an embedded { lexicalForm, language }, so its tag is hashed with it; the langString carrier has no slot for the tag and refuses the scalar '${e}'`);case oe.DateTime:return iE(e);case oe.Date:return oE(e);case oe.Time:return lE(e);case oe.HexBinary:return Gx(e);case oe.Base64Binary:return Jx(e)}}var ou=new TextEncoder;function lu(t,e){let n=ou.encode(t),r=ou.encode(e),a=Math.min(n.length,r.length);for(let s=0;s<a;s++)if(n[s]!==r[s])return n[s]-r[s];return n.length-r.length}function qm(t){if("lit"in t){let e=Ps(t.datatype);return e?{type:"typed",carrier:e,value:Vm(e,t.lit)}:{type:"string",value:t.lit}}if("raw"in t)return{type:"string",value:t.raw};if("ref"in t)return{type:"ref",value:t.ref};if("embed"in t){let e=Km(t.embed.statements??[]);return t.embed.name&&t.embed.name.length>0?{type:"embedded",name:t.embed.name,statements:e}:{type:"embedded",statements:e}}if("list"in t)return{type:"list",items:t.list.map(qm)};throw new Error(`canonical input: unknown value shape ${JSON.stringify(t)}`)}function cE(t){let e=qm(t.value);switch(e.type){case"string":return{predicate:t.predicate,type:"string",value:e.value};case"typed":return{predicate:t.predicate,type:"typed",carrier:e.carrier,value:e.value};case"ref":return{predicate:t.predicate,type:"ref",value:e.value};case"embedded":return e.name!==void 0?{predicate:t.predicate,type:"embedded",name:e.name,statements:e.statements}:{predicate:t.predicate,type:"embedded",statements:e.statements};case"list":return{predicate:t.predicate,type:"list",items:e.items}}}function Km(t){return t.map(e=>{let n=cE(e);return{blob:n,json:JSON.stringify(n)}}).sort((e,n)=>lu(e.blob.predicate,n.blob.predicate)||lu(e.json,n.json)).map(e=>e.blob)}function oo(t){let e=t.subjects.map(n=>({uri:n.uri,statements:Km(n.statements??[])}));return e.sort((n,r)=>lu(n.uri,r.uri)),JSON.stringify({subjects:e})}function cu(t){return`sha256:${pE(ou.encode(oo(t)))}`}var uE=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function er(t,e){return t>>>e|t<<32-e}function pE(t){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),n=t.length,r=(n+8>>6)+1,a=new Uint8Array(r*64);a.set(t),a[n]=128;let s=new DataView(a.buffer),i=n*8;s.setUint32(a.length-8,Math.floor(i/4294967296)),s.setUint32(a.length-4,i>>>0);let o=new Uint32Array(64);for(let c=0;c<a.length;c+=64){for(let k=0;k<16;k++)o[k]=s.getUint32(c+k*4);for(let k=16;k<64;k++){let w=er(o[k-15],7)^er(o[k-15],18)^o[k-15]>>>3,S=er(o[k-2],17)^er(o[k-2],19)^o[k-2]>>>10;o[k]=o[k-16]+w+o[k-7]+S>>>0}let u=e[0],p=e[1],f=e[2],h=e[3],g=e[4],m=e[5],y=e[6],v=e[7];for(let k=0;k<64;k++){let w=er(g,6)^er(g,11)^er(g,25),S=g&m^~g&y,A=v+w+S+uE[k]+o[k]>>>0,C=er(u,2)^er(u,13)^er(u,22),N=u&p^u&f^p&f,_=C+N>>>0;v=y,y=m,m=g,g=h+A>>>0,h=f,f=p,p=u,u=A+_>>>0}e[0]=e[0]+u>>>0,e[1]=e[1]+p>>>0,e[2]=e[2]+f>>>0,e[3]=e[3]+h>>>0,e[4]=e[4]+g>>>0,e[5]=e[5]+m>>>0,e[6]=e[6]+y>>>0,e[7]=e[7]+v>>>0}let l="";for(let c=0;c<8;c++)l+=e[c].toString(16).padStart(8,"0");return l}async function uo(t,e){let n=new Map;for(let[r,a]of Object.entries(t.metadata?.imports??{}))for(let s of a){if(it(s))continue;let i={publisher:r,import_:s};try{let o=(await e.getHighestCompatibleVersionAsync(r,s))?.metadata?.namespace_?.version;o&&(i.read=o)}catch(o){i.failure=o}n.set(`${r}/${s.packageName}`,i)}return n}var uu=class{readsAtVersion(t,e,n){if(e.uri.publisher!==n.uri.publisher||e.uri.package_!==n.uri.package_)return!1;let r=e.uri.version,a=n.uri.version;if(!r||!a)return!1;let s=t.get(`${e.uri.publisher}/${e.uri.package_}`);return s?Sn(r,s)&&!Sn(a,s):_e(r,a)>0}async ownReadsOf(t,e){let n=new Map;for(let[r,{publisher:a,import_:s,read:i,failure:o}]of await uo(t,this.repository)){if(o!==void 0)throw new Error(`Failed to process import ${a}/${s.packageName} for namespace ${e}. See inner exception for details.`,{cause:o});i&&n.set(r,i)}return n}cache=new Map;repository;logger;constructor(t,e){this.repository=t,this.logger=e}async resolveEntityAsync(t,e){let n=e.metadata?.namespace_?.toString()??"unknown",r=this.cache.get(n);if(r){let s=r.get(t);if(s)return s}let a=await this.buildEntityIndexAsyncInternal(e,new Set,"",new Map);return this.cache.set(n,a),a.get(t)??null}async resolveAllEntitiesAsync(t,e){let n=await this.buildAllEntitiesIndexAsync(e,new Set,"");if(t.includes(".")){let r=t.split("."),a=r[0],s=r[1],i=await this.findDocumentForAlias(e,a);return i?await this.resolveAllEntitiesAsync(s,i):[]}return n.filter(r=>r.entityName===t)}async buildAllEntitiesIndexAsync(t,e,n){let r=[],a=t.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${a}`),e.has(a))return this.logger?.debug?.(`Skipping ${a} - already visited (circular import prevention)`),r;e.add(a);let s=n.length===0?a:`${n} \u2192 ${a}`;for(let[i,o]of Object.entries(t.body))if(!i.includes(".")&&o&&typeof o=="object"&&!Array.isArray(o)){if(!t.metadata.namespace_)continue;let l=t.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};r.push({entityName:i,uri:new rt(t.metadata.namespace_.publisher,t.metadata.namespace_.package_,i,l),entity:o,definedInNamespace:a,isImported:n.length>0,importPath:s})}if(this.logger?.debug?.(`Collected ${r.length} entities from ${a}`),t.metadata?.imports){let i=Object.values(t.metadata.imports).reduce((o,l)=>o+l.length,0);this.logger?.debug?.(`Processing ${i} import(s) for ${a}`);for(let[o,l]of Object.entries(t.metadata.imports))for(let c of l)if(!it(c))try{this.logger?.debug?.(`Resolving import: ${o}/${c.packageName}`);let u=await this.repository.getHighestCompatibleVersionAsync(o,c);if(u){this.logger?.debug?.(`Successfully loaded import: ${u.metadata?.namespace_?.toString()}`);let p=await this.buildAllEntitiesIndexAsync(u,e,s);r.push(...p),this.logger?.debug?.(`Added ${p.length} entities from import ${u.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${o}/${c.packageName}`)}catch(u){let p=u;throw this.logger?.error?.(`Failed to process import ${o}/${c.packageName} for namespace ${a}. Error: ${p.message}`,p),new Error(`Failed to process import ${o}/${c.packageName} for namespace ${a}. See inner exception for details.`,{cause:u})}}return r}async buildEntityIndexAsync(t){return await this.buildEntityIndexAsyncInternal(t,new Set,"",new Map)}async buildEntityIndexAsyncInternal(t,e,n,r){let a=new Map,s=t.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${s}`),e.has(s))return this.logger?.debug?.(`Skipping ${s} - circular import in progress`),a;let i=r.get(s);if(i)return i;e.add(s);let o=n.length===0?s:`${n} \u2192 ${s}`,l=0;for(let[c,u]of Object.entries(t.body))if(!c.includes(".")&&u&&typeof u=="object"&&!Array.isArray(u)){if(!t.metadata.namespace_)continue;if(!a.has(c)){let p=t.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};a.set(c,{entityName:c,uri:new rt(t.metadata.namespace_.publisher,t.metadata.namespace_.package_,c,p),entity:u,definedInNamespace:s,isImported:n.length>0,importPath:o}),l++}}if(this.logger?.debug?.(`Indexed ${l} entities from ${s}`),t.metadata?.imports){let c=Object.values(t.metadata.imports).reduce((p,f)=>p+f.length,0);this.logger?.debug?.(`Processing ${c} import(s) for ${s}`);let u=await this.ownReadsOf(t,s);for(let[p,f]of Object.entries(t.metadata.imports))for(let h of f)if(!it(h))try{this.logger?.debug?.(`Resolving import: ${p}/${h.packageName}`);let g=await this.repository.getHighestCompatibleVersionAsync(p,h);if(g){this.logger?.debug?.(`Successfully loaded import: ${g.metadata?.namespace_?.toString()}`);let m=await this.buildEntityIndexAsyncInternal(g,e,o,r),y=0;for(let[v,k]of m.entries()){if(v.includes("."))continue;let w=a.get(v);if(!w)a.set(v,k),y++;else if(w.isImported&&k.isImported&&(w.uri.publisher!==k.uri.publisher||w.uri.package_!==k.uri.package_)){let S=w.isAmbiguous?w:{...w,isAmbiguous:!0,ambiguousNamespaces:[w.definedInNamespace]};S.ambiguousNamespaces.includes(k.definedInNamespace)||S.ambiguousNamespaces.push(k.definedInNamespace),a.set(v,S),this.logger?.warn?.(`Ambiguous reference '${v}': defined in ${S.ambiguousNamespaces.join(", ")}`)}else w.isImported&&k.isImported&&w.definedInNamespace!==k.definedInNamespace&&this.readsAtVersion(u,k,w)&&a.set(v,k);if(h.alias){let S=`${h.alias}.${v}`;a.has(S)||(a.set(S,k),y++)}}this.logger?.debug?.(`Merged ${y} entities from import ${g.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${p}/${h.packageName}`)}catch(g){let m=g;throw this.logger?.error?.(`Failed to process import ${p}/${h.packageName} for namespace ${s}. Error: ${m.message}`,m),new Error(`Failed to process import ${p}/${h.packageName} for namespace ${s}. See inner exception for details.`,{cause:g})}}return e.delete(s),r.set(s,a),a}async findDocumentForAlias(t,e){if(!t.metadata?.imports)return null;for(let[n,r]of Object.entries(t.metadata.imports))for(let a of r)if(!it(a)){if(a.alias===e)return await this.repository.getHighestCompatibleVersionAsync(n,a);if(!a.alias&&a.packageName===e)return await this.repository.getHighestCompatibleVersionAsync(n,a)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(t){this.cache.delete(t)}},Os=class co{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"&&co.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 co.isSubstitutableDatatypeUri(e)}static isSubstitutableDatatypeUri(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 co.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 s=String(a);return s==="Class"||s==="rdfs.Class"||s.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 In(t){return`${t.publisher}/${t.package_}/${t.name}`}function Ve(t,e,n){return`${t}/${e}/${n}`}function po(t){return`${t.s}|${t.p}|${pu(t.o)}`}function pu(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 qt(t,e,n){return{s:t,p:e,o:{kind:"uri",key:n}}}var Hm="kanonak.org",Wm="core-shacl",ie=t=>({publisher:Hm,package_:Wm,name:t}),fu=ie("Shape"),Da=ie("NodeShape"),Ls=ie("PropertyShape"),zm=ie("targetClass"),Ym=ie("property"),Rs=ie("path"),Gm=ie("minCount"),Jm=ie("maxCount"),Xm=ie("datatype"),Qm=ie("class"),du=ie("in"),Zm=ie("pattern"),eg=ie("flags"),tg=ie("minLength"),ng=ie("maxLength"),rg=ie("minInclusive"),ag=ie("maxInclusive"),sg=ie("minExclusive"),ig=ie("maxExclusive"),og=ie("message"),lg=ie("targetNode"),cg=ie("targetSubjectsOf"),ug=ie("targetObjectsOf"),pg=ie("closed"),fg=ie("ignoredProperties"),dg=ie("nodeKind"),hg=ie("IRI"),mg=ie("BlankNode"),gg=ie("Literal"),hu=ie("severity"),yg=ie("Violation"),kg=ie("Warning"),bg=ie("Info"),zU=ie("ValidationReport"),YU=ie("conforms"),GU=ie("result"),JU=ie("ValidationResult"),XU=ie("focusNode"),QU=ie("resultPath"),ZU=ie("resultMessage"),eB=ie("resultSeverity"),tB=ie("sourceShape"),nB=ie("value"),rB=ie("sourceConstraintComponent"),vg=ie("MinCountConstraintComponent"),wg=ie("MaxCountConstraintComponent"),$g=ie("DatatypeConstraintComponent"),Sg=ie("ClassConstraintComponent"),Ag=ie("InConstraintComponent"),xg=ie("PatternConstraintComponent"),Eg=ie("MinLengthConstraintComponent"),_g=ie("MaxLengthConstraintComponent"),Cg=ie("MinInclusiveConstraintComponent"),jg=ie("MaxInclusiveConstraintComponent"),Ng=ie("MinExclusiveConstraintComponent"),Pg=ie("MaxExclusiveConstraintComponent"),Tg=ie("NodeKindConstraintComponent"),mu=ie("ClosedConstraintComponent"),Fa=ie("hasValue"),xn=ie("qualifiedValueShape"),Is=ie("qualifiedMinCount"),Ms=ie("qualifiedMaxCount"),gu=ie("HasValueConstraintComponent"),fo=ie("QualifiedMinCountConstraintComponent"),ho=ie("QualifiedMaxCountConstraintComponent"),yu=ie("HasKeyConstraintComponent"),mo=ie("inversePath"),ku=ie("alternativePath"),Je="kanonak.org",Xe="core-rdf",nn="core-owl",Og="core-kanonak",go={publisher:Je,package_:nn,name:"hasKey"},yo=new Map([["type",Xe],["subClassOf",Xe],["subPropertyOf",Xe],["domain",Xe],["range",Xe],["label",Xe],["comment",Xe],["seeAlso",Xe],["isDefinedBy",Xe],["member",Xe],["Resource",Xe],["Class",Xe],["Property",Xe],["Datatype",Xe],["Literal",Xe],["List",Xe],["ObjectProperty",nn],["DatatypeProperty",nn],["AnnotationProperty",nn],["Thing",nn],["Nothing",nn],["Package",Og]]),dE=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function Ds(t){return yo.has(t)}function tr(t){let e=yo.get(t);return e?{publisher:Je,package_:e}:void 0}function da(){return[...new Set(yo.values())].map(t=>({publisher:Je,package_:t}))}function ha(t,e,n){if(!t||!t.name)return;let r=yo.get(t.name);if(!r)return;let a=()=>{t.publisher=Je,t.package_=r,n&&(t.version=n.get(r))};if(dE.has(t.name)){let s=t.publisher===Je&&t.package_===r;t.publisher=Je,t.package_=r,!s&&n&&(t.version=n.get(r));return}t.publisher===Je&&t.package_===r||t.publisher&&t.publisher.length>0&&(!e||e(t))||a()}var ma=class{type=Ve(Je,Xe,"type");subClassOf=Ve(Je,Xe,"subClassOf");subPropertyOf=Ve(Je,Xe,"subPropertyOf");domain=Ve(Je,Xe,"domain");range=Ve(Je,Xe,"range");label=Ve(Je,Xe,"label");comment=Ve(Je,Xe,"comment");resource=Ve(Je,Xe,"Resource");class_=Ve(Je,Xe,"Class");datatype=Ve(Je,Xe,"Datatype");literal=Ve(Je,Xe,"Literal");equivalentClass=Ve(Je,nn,"equivalentClass");equivalentProperty=Ve(Je,nn,"equivalentProperty");inverseOf=Ve(Je,nn,"inverseOf");sameAs=Ve(Je,nn,"sameAs");transitiveProperty=Ve(Je,nn,"TransitiveProperty");symmetricProperty=Ve(Je,nn,"SymmetricProperty");objectProperty=Ve(Je,nn,"ObjectProperty");datatypeProperty=Ve(Je,nn,"DatatypeProperty");annotationProperty=Ve(Je,nn,"AnnotationProperty");hasKey=lo(go);package_=Ve(Je,Og,"Package");shape=lo(fu);nodeShape=lo(Da);propertyShape=lo(Ls)};function lo(t){return Ve(t.publisher,t.package_,t.name)}var hE=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function Ma(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=e.entity.type;if(typeof n=="string"){let r={publisher:"",package_:"",name:n.includes(".")?n.substring(n.lastIndexOf(".")+1):n};return ha(r),{publisher:r.publisher,package_:r.package_,name:r.name}}}return Lg(t)[0]??null}function Lg(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=Ma(t);return n?[n]:[]}return Array.isArray(e.statement)?Xn(t).map(n=>{let r={publisher:n.publisher??"",package_:n.package_??"",name:n.name};return ha(r),{publisher:r.publisher,package_:r.package_,name:r.name}}):[]}var mE=[fu,Da,Ls];function Ts(t,e){return hE.has(`${t}/${e}`)}var gE=new Set(["Property","ObjectProperty","DatatypeProperty","AnnotationProperty"]);function Um(t){if(Ts(t.publisher,t.package_))return gE.has(t.name)?t.name:void 0}var tt=class mr{static getTypeUri(e){return Ma(e)}static isCoreOntologyType(e){return Ts(e.publisher,e.package_)}static hasCoreType(e,n){return Lg(e).some(r=>Ts(r.publisher,r.package_)&&r.name===n)}static isClassType(e){return mr.hasCoreType(e,"Class")}static isDatatypeType(e){return mr.hasCoreType(e,"Datatype")}static isDatatypePropertyType(e){return mr.hasCoreType(e,"DatatypeProperty")}static isObjectPropertyType(e){return mr.hasCoreType(e,"ObjectProperty")}static isAnnotationPropertyType(e){return mr.hasCoreType(e,"AnnotationProperty")}static isGenericPropertyType(e){return mr.hasCoreType(e,"Property")}static isAnyPropertyType(e){let n=Ma(e);return!n||!Ts(n.publisher,n.package_)?!1:n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"}static isShapeType(e){let n=Ma(e);return n?mE.some(r=>$e(n,r)):!1}static isSchemaDefinitionType(e){if(mr.isShapeType(e))return!0;let n=Ma(e);return!n||!Ts(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(mr.isSchemaDefinitionType(e))return!1;let r=Ma(e);return r?n.has(r.name):!1}},ga="kanonak.org",ya="core-rdf",yE={publisher:ga,package_:ya,name:"domain"},Rg={publisher:ga,package_:ya,name:"range"},kE={publisher:ga,package_:ya,name:"subClassOf"},bE={publisher:ga,package_:ya,name:"type"},vE={publisher:ga,package_:ya,name:"label"},wE={publisher:ga,package_:ya,name:"comment"},$E=new rt(ga,ya,"Resource");function xe(t){try{let e=An(`${t.namespace}/${t.name}`);return e.kind==="resource"?e.uri:void 0}catch{return}}function ot(t,e){let n=[],r=new Set,a="version"in e?e.version:void 0,s=[new rt(e.publisher,e.package_,e.name,a??void 0)];for(;s.length>0;){let i=s.shift(),o=T(i);if(r.has(o))continue;r.add(o),n.push(i);let l=SE(t,i);l&&s.push(...Fe(l,kE))}return n}function SE(t,e){return e.version&&typeof e.version.major=="number"?ge(t,e)??ze(t,e)[0]:ze(t,e)[0]}function wt(t,e){let n;for(let r of Et(e)){let a=AE(t,r);if(a){if(a!=="Property")return a;n??=a}}return n}function AE(t,e){let n=Um(e);if(n)return n;let r=Bm.get(t);r||(r=new Map,Bm.set(t,r));let a=e.version,s=a&&typeof a.major=="number"?`${T(e)}@${a.major}.${a.minor}.${a.patch}`:T(e),i=r.get(s);if(i!==void 0)return i??void 0;let o;for(let l of ot(t,e)){let c=Um(l);if(c){if(c!=="Property"){o=c;break}o??="Property"}}return r.set(s,o??null),o}var Bm=new WeakMap;function Mn(t,e){return wt(t,e)!==void 0}function Ig(t,e){let n=new Set([T($E)]);for(let r of ot(t,e))n.add(T(r));return n}function Va(t,e){let n=Ig(t,e),r=[],a=new Set;for(let s of t){if(!(s instanceof V))continue;let i=wt(t,s);if(!i)continue;let o=Fe(s,yE);if(!o.some(u=>n.has(T(u))))continue;let l=xe(s);if(!l)continue;let c=T(l);a.has(c)||(a.add(c),r.push({uri:l,label:vt(s,vE),comment:vt(s,wE),kind:i==="ObjectProperty"?"object":i==="DatatypeProperty"?"datatype":"other",range:be(s,Rg),domains:o}))}return r}function nr(t,e,n){let r=Va(t,e).find(a=>T(a.uri)===T(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 Mg(t,e,n){let r=Ig(t,e),a=t.find(s=>{if(!(s instanceof V)||!Mn(t,s))return!1;let i=xe(s);return i!==void 0&&T(i)===T(n)});return a&&Fe(a,Rg).some(s=>r.has(T(s)))?{ok:!0}:{ok:!1,message:`Property ${n.publisher}/${n.package_}/${n.name}, followed backwards, never reaches ${e.publisher}/${e.package_}/${e.name}.`}}function Et(t){let e=Fe(t,bE);return e.length>0?e:t instanceof te&&t.rangeType?[t.rangeType]:[]}function ka(t){return Ps(`${t.publisher}/${t.package_}/${t.name}`)}function ln(t,e){for(let n of t)n instanceof V&&Fg(n,fa(n),n.name,e)}function Fg(t,e,n,r){let a=e.indexOf("#");r({kanonak:t,address:e,path:a<0?n:`${n}.${e.slice(a+1)}`});for(let s of xE(t))for(let{value:i,address:o}of ru(t,s,e))i.item instanceof te&&Fg(i.item,o,n,r)}function xE(t){let e=new Map;for(let n of t.statement){let r=n.predicate?.subject;if(!r)continue;let a=`${r.publisher}/${r.package_}/${r.name}`;e.has(a)||e.set(a,r)}return[...e.values()]}var $u="kanonak.org",Vg="transformations";var x=t=>({publisher:$u,package_:Vg,name:t}),Gt=t=>({publisher:$u,package_:"math",name:t}),It={Power:Gt("Power"),Modulo:Gt("Modulo"),Minimum:Gt("Minimum"),Maximum:Gt("Maximum"),Exp:Gt("Exp"),Ln:Gt("Ln"),Log10:Gt("Log10"),Sqrt:Gt("Sqrt"),Floor:Gt("Floor"),Ceil:Gt("Ceil"),Round:Gt("Round"),Sign:Gt("Sign"),Clip:Gt("Clip"),clipValue:Gt("clipValue"),clipLower:Gt("clipLower"),clipUpper:Gt("clipUpper")},$={Transformation:x("Transformation"),InstanceTransformation:x("InstanceTransformation"),SetTransformation:x("SetTransformation"),TransformationReference:x("TransformationReference"),publisher:x("publisher"),package:x("package"),version:x("version"),name:x("name"),inputPattern:x("inputPattern"),rule:x("rule"),artifactName:x("artifactName"),outputs:x("outputs"),formatOverrides:x("formatOverrides"),partitionBy:x("partitionBy"),InputPattern:x("InputPattern"),matchesClass:x("matchesClass"),requires:x("requires"),sortBy:x("sortBy"),SortKey:x("SortKey"),byProperty:x("byProperty"),order:x("order"),SortOrder:x("SortOrder"),ascending:x("ascending"),descending:x("descending"),OutputFormat:x("OutputFormat"),backendUri:x("backendUri"),FormatOverride:x("FormatOverride"),formatTarget:x("formatTarget"),metadataKeys:x("metadataKeys"),metadataRenames:x("metadataRenames"),trailingNewline:x("trailingNewline"),omitWrapper:x("omitWrapper"),RenameEntry:x("RenameEntry"),fromKey:x("fromKey"),toKey:x("toKey"),FMT_MARKDOWN_FRONTMATTER:x("markdown-with-frontmatter"),FMT_PLAIN_MARKDOWN:x("plain-markdown"),FMT_TOML:x("toml"),FMT_JSON:x("json"),FMT_HTML:x("html"),FMT_SVG:x("svg"),Expression:x("Expression"),ListSourcedExpression:x("ListSourcedExpression"),ListAggregate:x("ListAggregate"),IteratingExpression:x("IteratingExpression"),BuildAstNode:x("BuildAstNode"),astClass:x("astClass"),set:x("set"),AstFieldBinding:x("AstFieldBinding"),field:x("field"),bindValue:x("bindValue"),When:x("When"),condition:x("condition"),thenBuild:x("thenBuild"),elseBuild:x("elseBuild"),Concat:x("Concat"),parts:x("parts"),Fallback:x("Fallback"),primary:x("primary"),alternate:x("alternate"),StringLiteral:x("StringLiteral"),stringLiteral:x("stringLiteral"),IntegerLiteral:x("IntegerLiteral"),integerLiteral:x("integerLiteral"),DecimalLiteral:x("DecimalLiteral"),decimalLiteral:x("decimalLiteral"),BooleanLiteral:x("BooleanLiteral"),booleanLiteral:x("booleanLiteral"),VarRef:x("VarRef"),varName:x("varName"),PropertyRead:x("PropertyRead"),readSource:x("readSource"),readProp:x("readProp"),Traverse:x("Traverse"),traverseSource:x("traverseSource"),through:x("through"),step:x("step"),UriName:x("UriName"),uriNameOf:x("uriNameOf"),UriPublisher:x("UriPublisher"),uriPublisherOf:x("uriPublisherOf"),UriPackage:x("UriPackage"),uriPackageOf:x("uriPackageOf"),UriVersion:x("UriVersion"),uriVersionOf:x("uriVersionOf"),SubjectUri:x("SubjectUri"),subjectOf:x("subjectOf"),UriLiteral:x("UriLiteral"),refTo:x("refTo"),DisplayLabel:x("DisplayLabel"),labelTarget:x("labelTarget"),labelSource:x("labelSource"),ResolveRef:x("ResolveRef"),resolveSource:x("resolveSource"),Normalize:x("Normalize"),normSource:x("normSource"),normKind:x("normKind"),NormalizeKind:x("NormalizeKind"),NORM_TRIM_END:x("trim-end"),NORM_TO_UPPER:x("to-upper"),NORM_TO_LOWER:x("to-lower"),NORM_FIRST_CHAR:x("first-char"),UnescapedString:x("UnescapedString"),unescapedSource:x("unescapedSource"),IsSet:x("IsSet"),checkExpr:x("checkExpr"),ExpressionFragment:x("ExpressionFragment"),body:x("body"),CallFragment:x("CallFragment"),fragmentRef:x("fragmentRef"),source:x("source"),Join:x("Join"),separator:x("separator"),Count:x("Count"),Sum:x("Sum"),Min:x("Min"),Max:x("Max"),Average:x("Average"),loopVar:x("loopVar"),ForEach:x("ForEach"),emit:x("emit"),ListMap:x("ListMap"),mapBody:x("mapBody"),Filter:x("Filter"),predicate:x("predicate"),PartitionBy:x("PartitionBy"),partitionKey:x("partitionKey"),DistinctBy:x("DistinctBy"),distinctKey:x("distinctKey"),Partition:x("Partition"),key:x("key"),members:x("members"),AllStatements:x("AllStatements"),statementsOf:x("statementsOf"),StatementPredicate:x("StatementPredicate"),predicateOf:x("predicateOf"),StatementValue:x("StatementValue"),valueOf:x("valueOf"),DateFormat:x("DateFormat"),dateSource:x("dateSource"),dateFormat:x("dateFormat"),NumberFormat:x("NumberFormat"),numberSource:x("numberSource"),numberStyle:x("numberStyle"),fractionDigits:x("fractionDigits"),currencyCode:x("currencyCode"),BinaryArithmetic:x("BinaryArithmetic"),arithLeft:x("arithLeft"),arithRight:x("arithRight"),Add:x("Add"),Subtract:x("Subtract"),Multiply:x("Multiply"),Divide:x("Divide"),Reverse:x("Reverse"),WindowedMap:x("WindowedMap"),windowSize:x("windowSize"),windowVar:x("windowVar"),windowBody:x("windowBody"),PairwiseMap:x("PairwiseMap"),firstVar:x("firstVar"),secondVar:x("secondVar"),pairBody:x("pairBody"),Scan:x("Scan"),initialState:x("initialState"),stateVar:x("stateVar"),elementVar:x("elementVar"),accumulate:x("accumulate"),ListItemAt:x("ListItemAt"),itemIndex:x("itemIndex"),BinaryComparison:x("BinaryComparison"),compareLeft:x("compareLeft"),compareRight:x("compareRight"),Equals:x("Equals"),GreaterThan:x("GreaterThan"),LessThan:x("LessThan"),GreaterThanOrEqual:x("GreaterThanOrEqual"),LessThanOrEqual:x("LessThanOrEqual"),Not:x("Not"),operand:x("operand"),BooleanLogic:x("BooleanLogic"),operands:x("operands"),And:x("And"),Or:x("Or"),Contains:x("Contains"),haystack:x("haystack"),needle:x("needle"),Matches:x("Matches"),matchSource:x("matchSource"),pattern:x("pattern"),UnaryNumericOp:x("UnaryNumericOp"),value:x("value"),Abs:x("Abs"),Negate:x("Negate"),KindPredicate:x("KindPredicate"),IsReference:x("IsReference"),IsEmbedded:x("IsEmbedded"),IsList:x("IsList"),kindCheck:x("kindCheck"),IsString:x("IsString"),IsNumber:x("IsNumber"),IsBoolean:x("IsBoolean"),StatementObject:x("StatementObject"),statementSource:x("statementSource"),Let:x("Let"),letName:x("letName"),letValue:x("letValue"),letBody:x("letBody"),GetStatementByName:x("GetStatementByName"),inSubject:x("inSubject"),byName:x("byName"),RenderMarkdown:x("RenderMarkdown"),renderSource:x("renderSource"),renderProp:x("renderProp"),renderFormat:x("renderFormat"),RenderFormat:x("RenderFormat"),RENDER_HTML:x("render-html"),RENDER_MARKDOWN:x("render-markdown")},EE=/\[\[([^\[\]\n]+)\]\]/g,_E=/\[\[/g,qg=/```[\s\S]*?```|`[^`\n]*`/g;function CE(t){let e=[];for(let n of t.matchAll(qg))e.push([n.index,n.index+n[0].length]);return e}function Su(t){if(!t||!t.includes("[["))return[];let e=CE(t),n=s=>e.some(([i,o])=>s>=i&&s<o),r=new Set(Fs(t).map(s=>s.startOffset)),a=[];for(let s of t.matchAll(_E)){let i=s.index;if(n(i)||r.has(i))continue;let o=t.slice(i,i+48).replace(/\s+/g," ").trim();a.push({startOffset:i,snippet:o})}return a}function Fs(t){if(!t||!t.includes("[["))return[];let e=[];for(let a of t.matchAll(qg))e.push([a.index,a.index+a[0].length]);let n=a=>e.some(([s,i])=>a>=s&&a<i),r=[];for(let a of t.matchAll(EE)){let s=a.index;if(n(s))continue;let i=a[1],o=i.indexOf("|"),l=(o===-1?i:i.slice(0,o)).trim();if(l.length===0)continue;let c=o===-1?"":i.slice(o+1).trim(),u={reference:l,startOffset:s,endOffset:s+a[0].length};c.length>0&&(u.displayText=c),r.push(u)}return r}function Kg(t){let e=t.metadata?.namespace_;return e?`${e.publisher}/${e.package_}`:void 0}function Ug(t){let e=t.metadata?.namespace_;if(e)return e.version?`${e.publisher}/${e.package_}@${ee(e.version)}`:`${e.publisher}/${e.package_}`}async function rr(t,e,n={}){let r=new Set,a=new Set,s=[...t];for(;s.length>0;){let i=s.shift(),o=Kg(i),l=Ug(i);if(!o||!l||a.has(l))continue;a.add(l),r.add(o),n.onDocument?.(i);let c=i.metadata?.imports;if(c)for(let[u,p]of Object.entries(c))for(let f of p){if(it(f))continue;let h=null,g="no-compatible-version";try{h=await e.getHighestCompatibleVersionAsync(u,f)}catch{g="resolution-error"}h?s.push(h):n.onUnresolvedEdge?.({fromNamespace:l,publisher:u,packageName:f.packageName,constraint:`${Ft(f.versionOperator)}${ee(f.version)}`,reason:g})}}return r}var ba=class{constructor(t,e){this.inner=t,this.scope=e}inner;scope;async getAllDocumentsAsync(){return(await this.inner.getAllDocumentsAsync()).filter(t=>{let e=Kg(t),n=Ug(t);return e!==void 0&&(this.scope.has(e)||n!==void 0&&this.scope.has(n))})}getDocumentAsync(t){return this.inner.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){return this.inner.getDocumentsByNamespaceAsync(t,e)}getHighestCompatibleVersionAsync(t,e){return this.inner.getHighestCompatibleVersionAsync(t,e)}saveDocumentAsync(t,e){return this.inner.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.inner.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.inner.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.inner.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.inner.getDocumentUriAsync(t)}};function Dg(t,e){let n=ge(t,e);return n?wt(t,n):void 0}var jE={...tr("range"),name:"range"};function NE(t){let e=t.lastIndexOf(".");return e===-1?t:t.slice(e+1)}var je=class{constructor(t){}async parseKanonaks(t,e){let n=await t.getAllDocumentsAsync(),r=new uu(t),a=new Os(r);this.knownPropertyClasses.clear();let s,i=()=>s??=this.importClosureCatalogAsync(n,r,a,t),o=await this.parseAllDocumentsAsync(n,r,a,t),l=await this.mergeAndCanonicalizeAsync(o,n,t,i);return await this.learnPropertyClassesAsync(l,n,r,i)&&(o=await this.parseAllDocumentsAsync(n,r,a,t),l=await this.mergeAndCanonicalizeAsync(o,n,t,i)),e&&(e.authored=o),l}knownPropertyClasses=new Map;async learnPropertyClassesAsync(t,e,n,r){let a=new Map;for(let l of e){let c=l.metadata.namespace_?.toString();c&&a.set(c,l)}let s=[],i=new Set;ln(t,({kanonak:l})=>{for(let c of l.unresolvedPredicates){let u=`${c.sourceDoc}::${c.key}`;i.has(u)||(i.add(u),s.push(c))}});let o=!1;for(let l of s){let c=a.get(l.sourceDoc);if(!c)continue;let u=await n.resolveEntityAsync(l.key,c);if(!u)continue;let p=T(u.uri);if(this.knownPropertyClasses.has(p))continue;let f=Dg(t,u.uri);if(!f){let h=await r();h&&(f=Dg(h,u.uri))}f&&(this.knownPropertyClasses.set(p,f),o=!0)}return o}async importClosureCatalogAsync(t,e,n,r){let a=new Set(t.map(o=>o.metadata.namespace_?.toString())),s=[];if(await rr(t,r,{onDocument:o=>s.push(o)}),s.every(o=>a.has(o.metadata.namespace_?.toString())))return;let i=await this.parseAllDocumentsAsync(s,e,n,r);return this.mergeAndCanonicalizeAsync(i,s,r)}async parseAllDocumentsAsync(t,e,n,r){let a=[];for(let s of t){let i=s.metadata.namespace_?.toString()??"";for(let[o,l]of Object.entries(s.body)){let c=new V,u=await this.resolveCanonicalEntity(o,s,i,e);c.namespace=u.namespace,c.name=u.name,c.sourceKey=o,c.statement=[];let p=await this.parseStatements(l,s,e,n,r);c.statement.push(...p.statements),c.unresolvedPredicates=p.unresolved,vu(c,i),a.push(c)}}return a}async mergeAndCanonicalizeAsync(t,e,n,r){let a=new Map,s=new Map,i=[];for(let g of t)if(g instanceof V){let m=`${g.namespace}/${g.name}`,y=a.get(m);if(y){let v=s.get(m);for(let k of g.statement){let w=wu(k);v.has(w)||(v.add(w),y.statement.push(k))}for(let k of g.unresolvedPredicates)y.unresolvedPredicates.some(w=>w.key===k.key&&w.sourceDoc===k.sourceDoc)||y.unresolvedPredicates.push(k)}else{let v=new V;v.namespace=g.namespace,v.name=g.name,v.sourceDoc=g.sourceDoc,g.sourceKey!==void 0&&(v.sourceKey=g.sourceKey);let k=new Set;for(let w of g.statement){let S=wu(w);k.has(S)||(k.add(S),v.statement.push(w))}v.unresolvedPredicates=[...g.unresolvedPredicates],s.set(m,k),a.set(m,v),i.push(v)}}else i.push(g);let o=new Set,l=g=>{for(let m of g)if(m instanceof V){let y=m.namespace||"",v=y.indexOf("/"),k=v>=0?y.slice(0,v):"",w=v>=0?y.slice(v+1):"",S=w.indexOf("@"),A=S>=0?w.slice(0,S):w;o.add(`${k}/${A}/${m.name}`)}};l(i);let c=g=>o.has(`${g.publisher}/${g.package_}/${g.name}`),u=new Map;for(let g of da()){let m=await n.getDocumentsByNamespaceAsync(g.publisher,g.package_);u.set(g.package_,hr(m).chosen?.metadata.namespace_?.version??void 0)}let p=new Map;for(let g of e)p.set(g.metadata.namespace_?.toString()??"",await this.homeVersionsAsync(g,u,n));let f=g=>{let m=p.get(g.sourceDoc);if(!m)throw new Error(`Cannot stamp the built-in terms of ${g.namespace}/${g.name}: its document, '${g.sourceDoc}', isn't among the documents being parsed, so the versions of the built-in homes it imports or links are unknown.`);return m},h=[];for(let g of t)if(g instanceof V){let m=f(g),y=v=>(c(v)||h.push({uri:v,homeVersions:m}),!0);this.canonicalizeStatementBuiltins(g.statement,y,m)}if(h.length>0){l(await r?.()??[]);for(let{uri:g,homeVersions:m}of h)ha(g,c,m)}return i}async homeVersionsAsync(t,e,n){let r=new Map(e),a=da();for(let[s,i]of Object.entries(t.metadata?.imports??{}))for(let o of i){let l=a.find(c=>c.publisher===s&&c.package_===o.packageName);if(l)if(o.versionOperator===we.Exact||it(o))r.set(l.package_,o.version);else{let c=await n.getHighestCompatibleVersionAsync(s,o);r.set(l.package_,c?.metadata.namespace_?.version??void 0)}}return r}canonicalizeStatementBuiltins(t,e,n){for(let r of t){let a=r.predicate?.subject;if(ha(a,e,n),r instanceof de)r.object instanceof D&&ha(r.object.subject,e,n);else if(r instanceof Ae)r.object&&this.canonicalizeStatementBuiltins(r.object.statement,e,n);else if(r instanceof he)for(let s of r.object??[])s instanceof D?ha(s.subject,e,n):s instanceof te&&this.canonicalizeStatementBuiltins(s.statement,e,n)}}async resolveCanonicalEntity(t,e,n,r){let a=t.indexOf("."),s=t.substring(0,a);if(!(a>0&&Object.values(e.metadata?.imports??{}).some(l=>l.some(c=>(c.alias??c.packageName)===s))))return{namespace:n,name:t};let{subject:i}=await this.resolveReference(t,e,r),o=i.version;return{namespace:o?`${i.publisher}/${i.package_}@${o.major}.${o.minor}.${o.patch}`:`${i.publisher}/${i.package_}`,name:i.name}}async parseStatements(t,e,n,r,a){let s=[],i=[];if(typeof t!="object"||t===null||Array.isArray(t))return{statements:s,unresolved:i};let o=e.metadata.namespace_?.toString()??"";for(let[l,c]of Object.entries(t))try{let u=await this.getPropertyMetadata(l,e,n,a,r);if(!u){let f=l.includes(".")?l.slice(l.lastIndexOf(".")+1):l;i.push(Ds(f)?{key:l,sourceDoc:o,builtin:!0}:{key:l,sourceDoc:o});continue}let p=await this.parsePropertyValue(l,c,u,e,n,r,a);p&&(p instanceof Gn&&(p.sourceKey=l),s.push(p))}catch(u){throw new Error(`Failed to parse property '${l}': ${u.message}`,{cause:u})}return{statements:s,unresolved:i}}async getPropertyMetadata(t,e,n,r,a){let s=await n.resolveEntityAsync(t,e);if(!s)return;let i=s.entity,o=i.type?.toString()??"",l=o.includes(".")?o.substring(o.lastIndexOf(".")+1):o,c=new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]),u=this.knownPropertyClasses.get(T(s.uri));if(!c.has(l)&&!u)return;let p=u??a.getPropertyTypeClassification(o),f,h=async()=>{if(f)return f;if(!(s.isImported&&s.definedInNamespace))return f=e,e;if(typeof r.getDocumentAsync!="function")throw new Error(`Cannot resolve the range of imported property '${t}': the parse repository cannot fetch defining document '${s.definedInNamespace}'. Thread the real repository through to embedded-object parsing \u2014 no stub, no fallback.`);let S=await r.getDocumentAsync(s.definedInNamespace);if(!S)throw new Error(`Cannot resolve the range of imported property '${t}': defining document '${s.definedInNamespace}' was not found in the repository.`);return f=S,S},g=await this.readDefinitionSlot(i,jE,h,n),m=g.value===void 0||g.value===null?void 0:String(g.value),y;if(p==="ObjectProperty")y="ObjectProperty";else if(p==="DatatypeProperty")y="DatatypeProperty";else{let S=m&&m.includes(".")?m.substring(m.lastIndexOf(".")+1):m??"";m&&a.isKnownXsdDatatypeName(m)||S==="Literal"?y="DatatypeProperty":y="ObjectProperty"}let v;m&&(v=(await n.resolveEntityAsync(m,await h()))?.uri);let k=s.definedInNamespace,w=g.unresolvedKey!==void 0?`its key '${g.unresolvedKey}' names nothing the imports of ${k} hold`:m&&!v?`'${m}' names nothing the imports of ${k} hold`:void 0;return{propertyUri:s.uri.toString(),propertyType:y,range:m,rangeUri:v,...w!==void 0?{rangeUnresolved:w}:{},isImported:s.isImported,definedInNamespace:s.definedInNamespace}}async readDefinitionSlot(t,e,n,r){let a=Object.keys(t).filter(c=>NE(c)===e.name);if(a.length===0)return{};let s=await n(),i=tr(e.name),o=i!==void 0&&i.publisher===e.publisher&&i.package_===e.package_,l;for(let c of a){let u=await r.resolveEntityAsync(c,s);if(u){if($e(u.uri,e))return{value:t[c]};continue}if(!c.includes(".")&&o)return{value:t[c]};l??=c}return l===void 0?{}:{unresolvedKey:l}}async parsePropertyValue(t,e,n,r,a,s,i){let o=n.propertyUri;if(e!=null){if(Array.isArray(e))return this.parseListValue(o,e,n,r,a,s,i);if(n.propertyType==="DatatypeProperty")return typeof e=="object"?this.structuredValue(o,e,n,r,a,s,i):this.parseDatatypeValue(o,e,n,r,a,s);if(n.propertyType==="ObjectProperty")return this.parseObjectValue(o,e,n,r,a,s,i)}}async structuredValue(t,e,n,r,a,s,i){let o=await this.parseStatements(e,r,a,s,i),l=new te;l.statement=o.statements,l.unresolvedPredicates=o.unresolved,n.rangeUri&&(l.rangeType=n.rangeUri);let c=new Ae;return c.predicate=D.parse(t),c.object=l,c}async parseDatatypeValue(t,e,n,r,a,s){let i;if(typeof e=="string"){if(s.isSubstitutableDatatype(n.rangeUri))return await this.parseSubstitutableValue(t,e,r,a);i=e}else if(typeof e=="number"||typeof e=="boolean")i=String(e);else return;return this.typedScalarStatement(t,i,n)}typedScalarStatement(t,e,n){let r=D.parse(t),a=n.rangeUri?ka(n.rangeUri):void 0;if(a===oe.Boolean){let i=new Ge;return i.predicate=r,i.object=e==="true"||e==="1",i.carrier=a,i.lexical=e,i}if(a===oe.Integer||a===oe.Decimal||a===oe.Double||a===oe.Float){let i=new et;return i.predicate=r,i.object=Number(e),i.carrier=a,i.lexical=e,i}let s=Ce.parse(t,e);return a?(s.carrier=a,s.lexical=e):n.rangeUnresolved!==void 0&&(s.rangeUnresolved=n.rangeUnresolved),s}typedListLiteral(t,e){let n=new xt,r=e.rangeUri?ka(e.rangeUri):void 0;return r===oe.Boolean?n.value=t==="true"||t==="1":r===oe.Integer||r===oe.Decimal||r===oe.Double||r===oe.Float?n.value=Number(t):n.value=t,r?(n.carrier=r,n.lexical=t):e.rangeUnresolved!==void 0&&(n.rangeUnresolved=e.rangeUnresolved),n}async parseSubstitutableValue(t,e,n,r){let a=new Rt;return a.predicate=D.parse(t),a.object=e,a.links=await this.resolveMarkdownLinks(e,n,r),a}async resolveMarkdownLinks(t,e,n){let r=[];for(let a of Fs(t)){let s=this.linkReference(a.reference,e);if(!s){let o=await n.resolveEntityAsync(a.reference,e);o&&(s=new D,s.subject=o.uri)}let i={reference:a.reference,startOffset:a.startOffset,endOffset:a.endOffset};a.displayText!==void 0&&(i.displayText=a.displayText),s!==void 0&&(i.target=s),r.push(i)}return r}async parseObjectValue(t,e,n,r,a,s,i){if(typeof e=="string"){if(n.rangeUri&&$e(n.rangeUri,$.Expression)){let c=await this.expressionValue(e,n.rangeUri,r,a);if(c instanceof te){let p=new Ae;return p.predicate=D.parse(t),p.object=c,p}let u=new de;return u.predicate=D.parse(t),u.object=c,u}let o=await this.resolveReference(e,r,a);if(!o)return;let l=new de;return l.predicate=D.parse(t),l.object=o,l}if(typeof e=="object"&&!Array.isArray(e)){let o=await this.parseStatements(e,r,a,s,i);if(o.statements.length>0){let u=new te;u.statement=o.statements,u.unresolvedPredicates=o.unresolved,n.rangeUri&&(u.rangeType=n.rangeUri);let p=new Ae;return p.predicate=D.parse(t),p.object=u,p}let l=[];for(let[u,p]of Object.entries(e))if(typeof p=="object"&&p!==null&&!Array.isArray(p)){let f=new te;f.name=u,f.sourceKey=u,n.rangeUri&&(f.rangeType=n.rangeUri);let h=await this.parseStatements(p,r,a,s,i);f.statement=h.statements,f.unresolvedPredicates=h.unresolved,l.push(f)}else if(typeof p=="string"){let f=await this.resolveReference(p,r,a);f&&(f.sourceKey=u,l.push(f))}if(l.length>0){let u=new he;return u.predicate=D.parse(t),u.object=l,u}let c=new Ae;return c.predicate=D.parse(t),c.object=new te,n.rangeUri&&(c.object.rangeType=n.rangeUri),c}}expressionLiteral(t,e){let n=new te,r=new de,a=new D;a.subject=new rt("kanonak.org","core-rdf","type"),r.predicate=a;let s=new D;s.subject=new rt(e.publisher,e.package_,$.StringLiteral.name,e.version),r.object=s;let i=new Ce,o=new D;return o.subject=new rt(e.publisher,e.package_,$.stringLiteral.name,e.version),i.predicate=o,i.object=t,n.statement=[r,i],n}async parseListValue(t,e,n,r,a,s,i){let o=[],l=n.propertyType==="DatatypeProperty",c=n.rangeUri?.publisher==="kanonak.org"&&n.rangeUri?.package_==="core-rdf"&&n.rangeUri?.name==="List"||!n.rangeUri&&(n.range?.includes(".")?n.range.substring(n.range.lastIndexOf(".")+1):n.range)==="List";for(let p=0;p<e.length;p++){let f=e[p],h=m=>{m.sourceKey=p,o.push(m)},g=typeof f=="string"||typeof f=="number"||typeof f=="boolean";if(l&&g){let m=typeof f=="string"?f:String(f),y=this.typedListLiteral(m,n);s.isSubstitutableDatatype(n.rangeUri)&&(y.links=await this.resolveMarkdownLinks(m,r,a)),h(y);continue}if(c&&g){if(typeof f=="string"){let m=await a.resolveEntityAsync(f,r);if(m){let y=new D;y.subject=m.uri,h(y)}else{let y=new xt;y.value=f,h(y)}}else{let m=new xt;m.value=f,h(m)}continue}if(typeof f=="string"){let m=await this.resolveReference(f,r,a);m&&h(m)}else if(typeof f=="object"&&f!==null&&!Array.isArray(f)){let m=new te;n.rangeUri&&(m.rangeType=n.rangeUri);let y=await this.parseStatements(f,r,a,s,i);m.statement=y.statements,m.unresolvedPredicates=y.unresolved,h(m)}}let u=new he;return u.predicate=D.parse(t),u.object=o,u}linkReference(t,e){let n=t.indexOf(".");if(n<=0||!e.metadata?.imports)return;let r=t.substring(0,n),a=t.substring(n+1);for(let[s,i]of Object.entries(e.metadata.imports))for(let o of i){if(!it(o)||(o.alias??o.packageName)!==r)continue;let l=new D,c=o.versionOperator===we.Exact?o.version:void 0;return l.subject=new rt(s,o.packageName,a,c),l}}importedReference(t,e){let n=t.indexOf(".");if(n<=0||!e.metadata?.imports)return;let r=t.substring(0,n),a=t.substring(n+1);for(let[s,i]of Object.entries(e.metadata.imports))for(let o of i){if((o.alias??o.packageName)!==r)continue;let l=new D;return l.subject=new rt(s,o.packageName,a,o.version),l}}async expressionValue(t,e,n,r){let a=this.linkReference(t,n);if(a)return a;let s=await r.resolveEntityAsync(t,n);if(s){let i=new D;return i.subject=s.uri,i}return this.importedReference(t,n)??this.expressionLiteral(t,e)}async resolveReference(t,e,n){let r=this.linkReference(t,e);if(r)return r;let a=await n.resolveEntityAsync(t,e);if(a){let i=new D;return i.subject=a.uri,i}let s=e.metadata?.namespace_;if(s){let i=this.importedReference(t,e);if(i)return i;let o=new D;return o.subject=new rt(s.publisher,s.package_,t,s.version??void 0),o}return null}async saveKanonaks(t,e){let n=new Map;for(let r of t)r instanceof V&&r.namespace&&(n.has(r.namespace)||n.set(r.namespace,[]),n.get(r.namespace).push(r));for(let[r,a]of n){let s=await this.convertKanonaksToDocument(r,a),i=`${r.split("@")[0]}.yml`;await e.saveDocumentAsync(s,i)}}async serializeToYaml(t,e){let n=t.filter(a=>a instanceof V&&a.namespace===e);if(n.length===0)throw new Error(`No kanonaks found with namespace '${e}'`);let r=await this.convertKanonaksToDocument(e,n);return new me().save(r)}async convertKanonaksToDocument(t,e){let n={metadata:{namespace_:t,get allImports(){if(!this.imports)return[];let a=[];for(let s of Object.values(this.imports))a.push(...s);return a}},body:{}},r=new Map;for(let a of e){let s={};for(let i of a.statement){let[o,l]=this.convertStatementToProperty(i);o&&l!==null&&l!==void 0&&(s[o]=l),this.collectImportsFromStatement(i,t,r)}n.body[a.name]=s}return n}convertStatementToProperty(t){if(t instanceof Ce)return[t.predicate.subject.name,t.object];if(t instanceof et)return[t.predicate.subject.name,t.object];if(t instanceof Ge)return[t.predicate.subject.name,t.object];if(t instanceof de)return[t.predicate.subject.name,t.object.subject.name];if(t instanceof he){let e=this.convertKanonakListToValue(t.object);return[t.predicate.subject.name,e]}else if(t instanceof Ae){let e=this.convertEmbeddedKanonakToValue(t.object);return[t.predicate.subject.name,e]}return[null,null]}convertKanonakListToValue(t){let e=[];for(let n of t)n instanceof D?e.push(n.subject.name):n instanceof te&&e.push(this.convertEmbeddedKanonakToValue(n));return e}convertEmbeddedKanonakToValue(t){let e={};for(let n of t.statement){let[r,a]=this.convertStatementToProperty(n);r&&a!==null&&a!==void 0&&(e[r]=a)}return e}collectImportsFromStatement(t,e,n){}};function vu(t,e){t.sourceDoc=e;for(let n of t.statement)if(n instanceof Ae)vu(n.object,e);else if(n instanceof he)for(let r of n.object)r instanceof te&&vu(r,e)}function wu(t){let e=t.predicate?.subject;return(e?`${e.publisher}/${e.package_}/${e.name}`:"?")+"="+PE(t)}function PE(t){return t instanceof Rt?"m:"+String(t.object):t instanceof Ce?"s:"+String(t.object):t instanceof et?"n:"+String(t.object):t instanceof Ge?"b:"+String(t.object):t instanceof de?"r:"+bu(t.object):t instanceof Ae?"e:"+bu(t.object):t instanceof he?"l:["+(t.object??[]).map(bu).join("|")+"]":"x"}function bu(t){if(!t)return"";if(t instanceof D){let e=t.subject;return"R("+(e?`${e.publisher}/${e.package_}/${e.name}`:"")+")"}return t instanceof te?"E("+(t.statement??[]).map(wu).join(";")+")":t instanceof xt?"L("+String(t.value)+")":"N"}var Bg=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(t){let e=po(t);return this.all.has(e)?!1:(this.all.add(e),this.tripleList.push(t),Au(this.byPIdx,t.p,t),Au(this.bySPIdx,`${t.s}|${t.p}`,t),t.o.kind==="uri"&&Au(this.byPOIdx,`${t.p}|${t.o.key}`,t),!0)}has(t){return this.all.has(po(t))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(t){let e=this.byPIdx.get(t);return e?e.slice():[]}bySubjectPredicate(t,e){let n=this.bySPIdx.get(`${t}|${e}`);return n?n.slice():[]}byPredicateObject(t,e){let n=this.byPOIdx.get(`${t}|${e}`);return n?n.slice():[]}subjectsWithPredicateObject(t,e){let n=this.byPOIdx.get(`${t}|${e}`);if(!n)return[];let r=new Set;for(let a of n)r.add(a.s);return Array.from(r)}uriObjectsOf(t,e){let n=this.bySPIdx.get(`${t}|${e}`);if(!n)return[];let r=new Set;for(let a of n)a.o.kind==="uri"&&r.add(a.o.key);return Array.from(r)}hasUri(t,e,n){return this.all.has(`${t}|${e}|u:${n}`)}hasTriple(t,e,n){return this.all.has(`${t}|${e}|${pu(n)}`)}};function Au(t,e,n){let r=t.get(e);r?r.push(n):t.set(e,[n])}var TE={name:"rdfs2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},OE={name:"rdfs3",apply(t,e){let n=!1;for(let r of t.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))i.o.kind==="uri"&&t.add(qt(i.o.key,e.type,s))&&(n=!0)}return n}},LE={name:"rdfs5",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.bySubjectPredicate(s,e.subPropertyOf))i.o.kind==="uri"&&t.add(qt(a,e.subPropertyOf,i.o.key))&&(n=!0)}return n}},RE={name:"rdfs7",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(a)){let o={s:i.s,p:s,o:i.o};t.add(o)&&(n=!0)}}return n}},IE={name:"rdfs9",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},ME={name:"rdfs11",apply(t,e){let n=!1;for(let r of t.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.bySubjectPredicate(s,e.subClassOf))i.o.kind==="uri"&&t.add(qt(a,e.subClassOf,i.o.key))&&(n=!0)}return n}},Hg=[TE,OE,LE,RE,IE,ME],DE={name:"prp-trp",apply(t,e){let n=!1,r=t.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let a of r){let s=t.byPredicate(a);for(let i of s){if(i.o.kind!=="uri")continue;let o=i.o.key;for(let l of t.bySubjectPredicate(o,a))l.o.kind==="uri"&&i.s!==l.o.key&&t.add(qt(i.s,a,l.o.key))&&(n=!0)}}return n}},FE={name:"prp-symp",apply(t,e){let n=!1,r=t.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let a of r)for(let s of t.byPredicate(a))s.o.kind==="uri"&&t.add(qt(s.o.key,a,s.s))&&(n=!0);return n}},VE={name:"prp-inv1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(a))i.o.kind==="uri"&&t.add(qt(i.o.key,s,i.s))&&(n=!0)}return n}},qE={name:"prp-inv2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;for(let i of t.byPredicate(s))i.o.kind==="uri"&&t.add(qt(i.o.key,a,i.s))&&(n=!0)}return n}},KE={name:"prp-eqp1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(a))t.add({s:i.s,p:s,o:i.o})&&(n=!0)}return n}},UE={name:"prp-eqp2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicate(s))t.add({s:i.s,p:a,o:i.o})&&(n=!0)}return n}},BE={name:"cax-eqc1",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,a))t.add(qt(i.s,e.type,s))&&(n=!0)}return n}},HE={name:"cax-eqc2",apply(t,e){let n=!1;for(let r of t.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.byPredicateObject(e.type,s))t.add(qt(i.s,e.type,a))&&(n=!0)}return n}},WE={name:"eq-rep-s",apply(t,e){let n=!1;for(let r of t.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s){for(let i of t.snapshot())i.s===a&&t.add({s,p:i.p,o:i.o})&&(n=!0);for(let i of t.snapshot())i.s===s&&t.add({s:a,p:i.p,o:i.o})&&(n=!0)}}return n}},zE={name:"eq-rep-o",apply(t,e){let n=!1;for(let r of t.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let a=r.s,s=r.o.key;if(a!==s)for(let i of t.snapshot())i.o.kind==="uri"&&(i.o.key===a?t.add(qt(i.s,i.p,s))&&(n=!0):i.o.key===s&&t.add(qt(i.s,i.p,a))&&(n=!0))}return n}},Wg=[DE,FE,VE,qE,KE,UE,BE,HE,WE,zE],zg=class{constructor(t,e){this.store=t,this.vocabulary=e}store;vocabulary;getInstancesOfClass(t){let e=Fr(t);return this.store.subjectsWithPredicateObject(this.vocabulary.type,e)}getSubclasses(t){let e=Fr(t);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,e).filter(n=>n!==e)}getSuperclasses(t){let e=Fr(t);return this.store.uriObjectsOf(e,this.vocabulary.subClassOf).filter(n=>n!==e)}getTypesOfIndividual(t){return this.store.uriObjectsOf(Fr(t),this.vocabulary.type)}isInstanceOf(t,e){return this.store.hasUri(Fr(t),this.vocabulary.type,Fr(e))}getPropertyClosure(t){let e=Fr(t),n={},r=new Map;for(let a of this.store.byPredicate(e)){if(a.o.kind!=="uri")continue;let s=r.get(a.s);s||(s=new Set,r.set(a.s,s),n[a.s]=[]),s.has(a.o.key)||(s.add(a.o.key),n[a.s].push(a.o.key))}return n}getPropertyClosures(t){let e={};for(let n of t)e[Fr(n)]=this.getPropertyClosure(n);return e}triples(){return this.store.snapshot()}size(){return this.store.size()}};function Fr(t){return typeof t=="string"?t:Ve(t.publisher,t.package_,t.name)}var va=class{vocabulary;profile;maxIterations;constructor(t={}){this.vocabulary=t.vocabulary??new ma,this.profile=t.profile??"owl-rl-classification",this.maxIterations=t.maxIterations??100}async reason(t){return this.reasonOver(await new je().parseKanonaks(t))}reasonOver(t){let e=new Bg,n=new YE;for(let s of t)if(s instanceof V){let i=GE(s);if(!i)continue;for(let o of s.statement)this.emitStatement(i,o,e,n)}let r=[...Hg];this.profile==="owl-rl-classification"&&r.push(...Wg);let a=0;for(;a<this.maxIterations;){let s=!1;for(let i of r)i.apply(e,this.vocabulary)&&(s=!0);if(!s)break;a++}return new zg(e,this.vocabulary)}emitStatement(t,e,n,r){let a=JE(e);if(a){if(e instanceof Ce){n.add({s:t,p:a,o:{kind:"literal",lexical:e.object,datatype:"string"}});return}if(e instanceof et){n.add({s:t,p:a,o:{kind:"literal",lexical:String(e.object),datatype:"number"}});return}if(e instanceof Ge){n.add({s:t,p:a,o:{kind:"literal",lexical:String(e.object),datatype:"boolean"}});return}if(e instanceof de){let s=In(e.object.subject);n.add(qt(t,a,s));return}if(e instanceof Ae){let s=r.next();n.add({s:t,p:a,o:{kind:"blank",id:s}}),this.emitEmbedded(s,e.object,n,r);return}if(e instanceof he){for(let s of e.object??[])this.emitListItem(t,a,s,n,r);return}}}emitListItem(t,e,n,r,a){if(n instanceof D)r.add(qt(t,e,In(n.subject)));else if(n instanceof te){let s=a.next();r.add({s:t,p:e,o:{kind:"blank",id:s}}),this.emitEmbedded(s,n,r,a)}else if(n instanceof xt){let s=typeof n.value=="number"?"number":typeof n.value=="boolean"?"boolean":"string";r.add({s:t,p:e,o:{kind:"literal",lexical:String(n.value),datatype:s}})}}emitEmbedded(t,e,n,r){let a=`_:${t}`;for(let s of e.statement)this.emitStatement(a,s,n,r)}},YE=class{counter=0;next(){return`b${this.counter++}`}};function GE(t){let e=t.namespace??"",n=e.indexOf("@"),r=n===-1?e:e.substring(0,n),a=r.indexOf("/");if(a===-1)return null;let s=r.substring(0,a),i=r.substring(a+1);return!s||!i||!t.name?null:Ve(s,i,t.name)}function JE(t){let e=t.predicate;return e?.subject?In(e.subject):null}function gr(t,e,n,r){let a=t.metadata?.namespace_,s=a?.version,i=s?`${s.major}.${s.minor}.${s.patch}`:void 0;if(!a||a.publisher!==e||a.package_!==n||i!==r){let o=a?`${a.publisher}/${a.package_}@${i??"?"}`:"(no namespace declared)";throw new Error(`Package identity mismatch: requested ${e}/${n}@${r} but the fetched document declares ${o}. Refusing to use it.`)}}var ar=class extends Error{constructor(t,e,n,r,a){super(t),this.url=e,this.status=n,this.problem=r,this.retryAfterSeconds=a,this.name="KanonakHttpError"}url;status;problem;retryAfterSeconds},Yg=300;async function mn(t,e,n){let r=await Jg(n),a=Vs(n.headers.get("retry-after")),s=`Failed to fetch ${t}: ${e} ${await ko(n)}`;return new ar(s,e,n.status,r,a)}async function ko(t){let e=await Jg(t),n=Vs(t.headers.get("retry-after")),r=e?XE(e):await QE(t),a=`(${t.status}${t.statusText?` ${t.statusText}`:""})`;return r&&(a+=`: ${r}`),n!==void 0&&(a+=` [the server asks to retry after ${n}s]`),a}function Vs(t){if(!t)return;let e=t.trim();if(/^\d+$/.test(e))return Number(e);let n=Date.parse(e);if(!Number.isNaN(n))return Math.max(0,Math.ceil((n-Date.now())/1e3))}function Gg(t){return(t.headers.get("content-type")??"").split(";")[0].trim().toLowerCase()}async function Jg(t){if(Gg(t)!=="application/problem+json")return;let e;try{e=await t.clone().json()}catch{return}if(!e||typeof e!="object")return;let n=e,r={};return typeof n.type=="string"&&(r.type=n.type),typeof n.title=="string"&&(r.title=n.title),typeof n.status=="number"&&(r.status=n.status),typeof n.detail=="string"&&(r.detail=n.detail),typeof n.instance=="string"&&(r.instance=n.instance),r}function XE(t){return[t.title,t.detail].filter(e=>!!e&&e.trim()!=="").join(" \u2014 ")}async function QE(t){let e=Gg(t);if(e!=="text/plain"&&e!=="application/json")return"";let n;try{n=await t.clone().text()}catch{return""}let r=n.replace(/\s+/g," ").trim();return r.length>Yg?`${r.slice(0,Yg)}\u2026`:r}var dt=class extends Error{constructor(t){super(t),this.name="CredentialError"}};var Zg="@kanonak-protocol/sdk (+https://kanonak.org)",ZE=Zg;function qa(t){let e;try{e=typeof t=="string"?new URL(t):t}catch{throw new Error(`Kanonak requires an absolute https:// URL \u2014 got an unparseable or relative URL: ${String(t)}`)}if(e.protocol!=="https:")throw new Error(`Kanonak requires HTTPS \u2014 refusing to fetch ${e.href} (only https:// is supported).`)}var e1=new Set([429,502,503,504]),t1=4,n1=500,ey=2e4;function yr(t,e){qa(t);let n=new Headers(e?.headers);return n.has("User-Agent")||n.set("User-Agent",ZE),r1(t,{...e,headers:n})}var xu=t1;async function r1(t,e){let n;for(let r=0;r<=xu;r++){let a;try{a=await fetch(t,e)}catch(i){if(n=i,r>=xu)throw a1(t,i,r+1);await Qg(Xg(r,void 0));continue}if(!e1.has(a.status)||r>=xu)return a;let s=Vs(a.headers.get("retry-after"));if(s!==void 0&&s*1e3>ey)return a;await Qg(Xg(r,s))}throw n??new Error("kanonakFetch: exhausted retries")}function a1(t,e,n){let r=t instanceof URL?t.href:t,a=n>1?` in ${n} attempts`:"";return new TypeError(`Could not reach ${r}${a}: ${ty(e)}. Check that this machine can reach it, as \`curl ${r}\` would.`,{cause:e})}function ty(t){let e=t;for(;e instanceof Error&&e.cause!==void 0;)e=e.cause;return e instanceof AggregateError&&e.errors.length>0?e.errors.map(ty).join("; "):e instanceof Error?e.message:String(e)}function Xg(t,e){let n=Math.min(ey,n1*2**t),r=Math.floor(n/2+Math.random()*(n/2));return Math.max(r,(e??0)*1e3)}function Qg(t){return new Promise(e=>setTimeout(e,t))}var Vr="*",Eu=["publisher","package","version"];function _u(t,e,n){let r=n?` in ${n}`:"";if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(`${e}${r} must be an object mapping a publisher, or "${Vr}", to a package URL template`);let a={};for(let[s,i]of Object.entries(t)){let o=s===Vr;if(!o&&!ny(s))throw new Error(`${e}${r} names "${s}", which is not a publisher (a publisher is a bare domain, e.g. example.org)`);a[s]=Cu(i,`${e}["${s}"]${r}`,o)}return Object.freeze(a)}function Cu(t,e,n){if(typeof t!="string"||t.trim()==="")throw new Error(`${e} must be a package URL template string`);if(!t.startsWith("https://"))throw new Error(`${e} must be an absolute https:// URL template (got "${t}")`);let r=(t.match(/\{[^{}]*\}/g)??[]).filter(s=>!Eu.includes(s.slice(1,-1)));if(r.length>0)throw new Error(`${e} has the unknown placeholder ${r[0]}; a package URL template takes {publisher}, {package} and {version}`);let a=(n?Eu:Eu.filter(s=>s!=="publisher")).filter(s=>!t.includes(`{${s}}`)).map(s=>`{${s}}`);if(a.length>0)throw new Error(`${e} must contain ${a.join(", ")}`+(n?", so that one template addresses every publisher's packages":"")+` (got "${t}")`);return t}function qs(t,e){if(t)return Object.hasOwn(t,e)?t[e]:Object.hasOwn(t,Vr)?t[Vr]:void 0}function Ks(t,e,n,r){let a={publisher:e,package:n,version:r},s=t;for(let[o,l]of Object.entries(a))s=s.replaceAll(`{${o}}`,l);let i=s.match(/\{[a-z]+\}/);if(i)throw new Error(`Unresolved variable ${i[0]} in URL template: ${t}`);return qa(s),s}function ju(t,e,n){let r=n?` in ${n}`:"";if(!Array.isArray(t))throw new Error(`${e}${r} must be a list of publishers`);for(let a of t){if(a===Vr)throw new Error(`${e}${r} names "${Vr}": name each publisher whose template you trust for bytes`);if(typeof a!="string"||!ny(a))throw new Error(`${e}${r} names ${JSON.stringify(a)}, which is not a publisher (a publisher is a bare domain, e.g. example.org)`)}return Object.freeze([...t])}function ny(t){if(t.trim()!==t)return!1;try{let e=An(t);return e.kind==="publisher"&&e.publisher===t}catch{return!1}}var wo="https://{publisher}/{package}/{version}.kan.yml",vo="https://{publisher}/kanonak.lock",ry="https://{publisher}/{package}/kanonak.lock",ay="https://{publisher}/{package}/{version}/kanonak.lock",Us=1,s1={version:Us};var sy=class{constructor(t){this.fetchFn=t}fetchFn;cache=new Map;getConfig(t){let e=this.cache.get(t);return e||(e=this.fetchConfig(t),this.cache.set(t,e),e.catch(()=>{this.cache.get(t)===e&&this.cache.delete(t)})),e}async fetchConfig(t){let e=`https://${t}/.well-known/kanonak.json`,n;try{n=await(this.fetchFn?this.fetchFn(e,t):yr(e))}catch(a){throw a instanceof dt?a:new Error(`${e} could not be read: ${a.message}. Only a 404 means a publisher serves no discovery document (discovery-defaults-rule).`,{cause:a})}if(n.status===404)return s1;if(!n.ok)throw await mn("publisher config",e,n);let r;try{r=await n.json()}catch(a){throw new Error(`${e} is not JSON, so it isn't a discovery document: ${a.message}`,{cause:a})}return Nu(r,e)}resolvePackageUrl(t,e,n,r){let a=r.package_url_template??wo;return Ks(a,t,e,n)}};function Nu(t,e){if(typeof t!="object"||t===null||Array.isArray(t))throw new Error(`Invalid publisher config at ${e}: a discovery document is a JSON object.`);let n=t;if(typeof n.version!="number")throw new Error(`Invalid publisher config at ${e}: missing or invalid "version" field`);if(n.version!==Us)throw new Error(`${e} is discovery document format ${n.version}, which this client doesn't know: it reads format ${Us} (discovery-version-rule).`);let r={version:n.version};return typeof n.package_url_template=="string"&&(Tu(e,"package_url_template",n.package_url_template),r.package_url_template=n.package_url_template),typeof n.versions_url_template=="string"&&(i1(e,n.versions_url_template),r.versions_url_template=n.versions_url_template),typeof n.release_lock_url_template=="string"&&(o1(e,n.release_lock_url_template),r.release_lock_url_template=n.release_lock_url_template),Array.isArray(n.featured_packages)&&n.featured_packages.every(a=>typeof a=="string")&&(r.featured_packages=n.featured_packages),r}function Pu(t,e){let n=`${t}'s authored .well-known/kanonak.json`,r={version:Us};if(e!==void 0)try{r=JSON.parse(e)}catch(l){throw new Error(`${n} is not JSON: ${l.message}`,{cause:l})}let a=Nu(r,n),s=l=>l.replaceAll("{publisher}",t),i={version:a.version,package_url_template:a.package_url_template??s(wo),versions_url_template:a.versions_url_template??s(vo),release_lock_url_template:a.release_lock_url_template??s(ay),featured_packages:a.featured_packages??[]},o=Object.fromEntries(Object.entries(r).filter(([l])=>!(l in i)));return`${JSON.stringify({...i,...o},null,2)}
|
|
173
|
+
`}function bo(t,e,n){return t.replaceAll("{publisher}",e).replaceAll("{package}",n)}function $o(t){return t.includes("{package}")}function Tu(t,e,n){if(!n.startsWith("https://"))throw new Error(`Invalid publisher config at ${t}: ${e} must be an absolute https:// URL template (got "${n}").`)}function i1(t,e){Tu(t,"versions_url_template",e);let n=(e.match(/\{[^{}]*\}/g)??[]).filter(r=>r!=="{publisher}"&&r!=="{package}");if(n.length>0)throw new Error(`Invalid publisher config at ${t}: versions_url_template takes only {publisher} and {package}, and has ${n.join(", ")} (got "${e}").`)}function o1(t,e){Tu(t,"release_lock_url_template",e);let n=(e.match(/\{[^{}]*\}/g)??[]).filter(r=>r!=="{publisher}"&&r!=="{package}"&&r!=="{version}");if(n.length>0)throw new Error(`Invalid publisher config at ${t}: release_lock_url_template takes only {publisher}, {package} and {version}, and has ${n.join(", ")} (got "${e}").`)}function Bs(t,e,n){return t.packages[`${e}/${n}`]}function Ou(t,e,n){return Bs(t,e,n)?.version}function Lu(t,e,n,r){let a=Lt(n.version,`The version ${t}'s kanonak.lock pins for ${t}/${e}`);return r.every(s=>on(a,s))?n:Ra(n.lines??[],s=>Lt(s.version,`A line ${t}'s kanonak.lock lists for ${t}/${e}`),r)}var l1=`# This file is generated by Kanonak CLI. Do not edit manually.
|
|
174
|
+
`,So="sha256:";function Ao(t){let e=Ia.load(t);if(!e||typeof e!="object"||e.version!=="1")return null;let n=e.packages??{};for(let[r,a]of Object.entries(n)){Lt(a.version,`The version kanonak.lock pins for ${r}`);for(let s of a.lines??[])Lt(s.version,`A line kanonak.lock lists for ${r}`)}return{version:"1",lastUpdated:e.lastUpdated??"",packages:n}}function Hs(t){let e={};for(let r of Object.keys(t.packages).sort())e[r]=t.packages[r];let n=Ia.dump({...t,packages:e},{lineWidth:-1,sortKeys:!1,quotingType:'"'});return l1+n}async function xo(t){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),n=Array.from(new Uint8Array(e),r=>r.toString(16).padStart(2,"0")).join("");return`${So}${n}`}async function qr(t,e,n,r){let a=await xo(e);if(a!==n)throw new Error(`Integrity mismatch for ${t}: the lock declares ${n||"(no integrity)"} but the bytes from ${r} hash to ${a}.`)}var Mt=class{configResolver;fetchFn;packageUrlTemplates;locks=new Map;constructor(t){this.configResolver=t?.configResolver??new sy(t?.fetchFn),this.fetchFn=t?.fetchFn,this.packageUrlTemplates=t?.packageUrlTemplates?_u(t.packageUrlTemplates,"packageUrlTemplates"):void 0}getConfig(t){return this.configResolver.getConfig(t)}async getPackageUrl(t,e,n){let r=qs(this.packageUrlTemplates,t);if(r)return Ks(r,t,e,n);let a=await this.configResolver.getConfig(t);return this.configResolver.resolvePackageUrl(t,e,n,a)}lockedSourceUrl(t,e,n){let r=qs(this.packageUrlTemplates,t);return r?Ks(r,t,e,n.version):n.resolved}async fetchLockedSource(t,e,n){let r=`${t}/${e}@${n.version}`,a=this.lockedSourceUrl(t,e,n),s=await this.fetchSource(r,a,t);return await qr(r,s,n.integrity,a),{url:a,content:s}}async fetchPackageSource(t,e,n){let r=await this.getPackageUrl(t,e,n);return{url:r,content:await this.fetchSource(`${t}/${e}@${n}`,r,t)}}async fetchSource(t,e,n){qa(e);let r=this.fetchFn?await this.fetchFn(e,n):await yr(e);if(!r.ok)throw await mn(t,e,r);return r.text()}async getLock(t){let e=(await this.configResolver.getConfig(t)).versions_url_template;if(e&&$o(e))throw new Error(`${t} serves a lock per package (its versions_url_template is ${e}), so no one lock lists every package it serves.`);return this.lockAt(bo(e??vo,t,""),t)}async getLockEntry(t,e){let n=`${t}/${e}`,r=(await this.configResolver.getConfig(t)).versions_url_template;return r?(await this.lockAt(bo(r,t,e),t))?.packages[n]??null:(await this.lockAt(bo(vo,t,e),t))?.packages[n]??await this.getPackageLockEntry(t,e)}async getPackageLockEntry(t,e){return(await this.lockAt(bo(ry,t,e),t))?.packages[`${t}/${e}`]??null}lockAt(t,e){let n=this.locks.get(t);return n||(n=this.fetchLock(t,e),this.locks.set(t,n),n.catch(()=>{this.locks.get(t)===n&&this.locks.delete(t)})),n}async fetchLock(t,e){qa(t);let n;try{n=this.fetchFn?await this.fetchFn(t,e):await yr(t)}catch(a){throw a instanceof dt?a:new Error(`${t} could not be read: ${a.message}. Only a 404 means a publisher serves no lock there (discovery-defaults-rule).`,{cause:a})}if(n.status===404)return null;if(!n.ok)throw await mn("publisher lock",t,n);let r;try{r=Ao(await n.text())}catch(a){throw new Error(`${t} is not a readable kanonak.lock: ${a.message}`,{cause:a})}if(!r)throw new Error(`${t} is not a kanonak.lock of format 1, so the versions it lists can't be read.`);return r}},Ka=class{parser=new me;publisherIndex;documents=new Map;exactReads=new Map;contentCache=new Map;fetchFn;onFetch;getFromCache;packageUrlTemplates;templateTrustedPublishers;onTemplateTrustedRead;constructor(t){this.onFetch=t?.onFetch,this.getFromCache=t?.getFromCache,this.fetchFn=t?.fetchFn,this.packageUrlTemplates=t?.packageUrlTemplates;for(let e of t?.templateTrustedPublishers??[])if(!qs(this.packageUrlTemplates,e))throw new Error(`templateTrustedPublishers names ${e}, but no package URL template applies to it, so there is no template to trust: add one for ${e}, or "*" in packageUrlTemplates.`);this.templateTrustedPublishers=new Set(t?.templateTrustedPublishers??[]),this.onTemplateTrustedRead=t?.onTemplateTrustedRead,this.publisherIndex=new Mt({...t?.fetchFn?{fetchFn:t.fetchFn}:{},...t?.packageUrlTemplates?{packageUrlTemplates:t.packageUrlTemplates}:{}})}async getHighestCompatibleVersionAsync(t,e){if(e.versionOperator===we.Exact){let n=ee(e.version),r=await this.fromMemoOrCache(t,e.packageName,n);if(r)return r;let a=`${t}/${e.packageName}@${n}`,s=this.exactReads.get(a);return s||(s=this.readExact(t,e),this.exactReads.set(a,s)),s}return this.resolveThroughLock(t,e)}readExact(t,e){return this.templateTrustedPublishers.has(t)?this.readOnTemplateTrust(t,e):this.resolveThroughLock(t,e)}async resolveThroughLock(t,e){let n=e.versionOperator===we.Exact,r;try{r=await this.publisherIndex.getLockEntry(t,e.packageName)}catch(s){throw n&&qs(this.packageUrlTemplates,t)?c1(s,t):s}let a=r&&Lu(t,e.packageName,r,[e]);return a?this.fetchPinned(t,e.packageName,a):r&&!n?null:this.resolveByDirectFetch(t,e)}async fetchPinned(t,e,n){let r=n.version,a=`${t}/${e}@${r}`,s=await this.fromMemoOrCache(t,e,r);if(s)return s;let{content:i}=await this.publisherIndex.fetchLockedSource(t,e,n),o=this.parser.parse(i);return gr(o,t,e,r),this.onFetch&&await this.onFetch(t,e,r,i),this.documents.set(a,o),this.contentCache.set(a,i),o}async fromMemoOrCache(t,e,n){let r=`${t}/${e}@${n}`,a=this.documents.get(r);if(a)return a;if(!this.getFromCache)return null;let s=await this.getFromCache(t,e,n);if(s==null)return null;let i;try{i=this.parser.parse(s),gr(i,t,e,n)}catch(o){throw new Error(`Cached content for ${r} is not a usable copy of that package \u2014 refusing to fall through to a fetch that would hide it. ${o.message}`,{cause:o})}return this.documents.set(r,i),this.contentCache.set(r,s),i}async readOnTemplateTrust(t,e){let n=await this.resolveByDirectFetch(t,e);if(n&&this.onTemplateTrustedRead){let r=ee(e.version),a=await this.publisherIndex.getPackageUrl(t,e.packageName,r);this.onTemplateTrustedRead({publisher:t,packageName:e.packageName,version:r,url:a})}return n}async resolveByDirectFetch(t,e){let n=e.packageName,r=e.versionOperator===we.Exact?await this.publisherIndex.getPackageUrl(t,n,ee(e.version)):`https://${t}/${n}.kan.yml`,a=await this.fetchFollowing(r,t);if(!a)return null;let s=this.parser.parse(a.content),i=s.metadata.namespace_;if(!i||!i.version)throw new Error(`Producer origin returned a package with no namespace/version for ${t}/${n}`);let o=ee(i.version);gr(s,t,n,o);let l=`${t}/${n}@${o}`;return this.onFetch&&await this.onFetch(t,n,o,a.content),this.documents.set(l,s),this.contentCache.set(l,a.content),s}async fetchFollowing(t,e,n=4){let r=t;for(let a=0;a<n;a++){qa(r);let s=this.fetchFn?await this.fetchFn(r,e):await yr(r,{redirect:"manual"});if(s.status===301||s.status===302){let i=s.headers.get("location");if(!i)throw new Error(`Redirect with no Location header from ${r}`);r=new URL(i,r).toString();continue}if(s.status===404)return null;if(!s.ok)throw await mn("Kanonak package",r,s);return{url:r,content:await s.text()}}throw new Error(`Too many redirects resolving ${t}`)}async getAllDocumentsAsync(){return Array.from(this.documents.values())}async getDocumentAsync(t){return this.documents.get(t)??null}async getDocumentsByNamespaceAsync(t,e){return Array.from(this.documents.values()).filter(n=>{let r=n.metadata.namespace_;return r&&r.publisher===t&&r.package_===e})}async saveDocumentAsync(t,e){throw new Error("HttpKanonakDocumentRepository is read-only")}async deleteDocumentAsync(t){throw new Error("HttpKanonakDocumentRepository is read-only")}async clearNamespaceAsync(t,e){throw new Error("HttpKanonakDocumentRepository is read-only")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(t){return this.contentCache.get(t)??null}async getDocumentUriAsync(t){let e=t.match(/^(.+?)\/(.+?)@(.+)$/);if(!e)return null;let[,n,r,a]=e;return this.publisherIndex.getPackageUrl(n,r,a)}};function c1(t,e){let n=` Your package URL template serves ${e}'s sources, but an exact version's sha256 still comes from ${e}. To read its exact versions from the template alone, trusting its bytes, name ${e} in templateTrustedPublishers.`;return t instanceof ar?new ar(t.message+n,t.url,t.status,t.problem,t.retryAfterSeconds):t instanceof dt?new dt(t.message+n):t instanceof Error?new Error(t.message+n,{cause:t}):t}import{readFileSync as u1,writeFileSync as p1,existsSync as f1}from"fs";import{createHash as d1}from"crypto";var iy="kanonak.lock";function kr(t=iy){return f1(t)?Ao(u1(t,"utf-8")):null}function Ws(t,e=iy){t.lastUpdated=new Date().toISOString(),p1(e,Hs(t),"utf-8")}function Dn(t){let e=d1("sha256").update(t).digest("hex");return`${So}${e}`}var hy=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Shape="Shape",t.Unknown="Unknown",t))(hy||{}),my=(t=>(t.InstanceOf="instanceOf",t.SubClassOf="subClassOf",t.Domain="domain",t.Range="range",t.ObjectRelationship="objectRelationship",t.SubPropertyOf="subPropertyOf",t.PropertyValue="propertyValue",t.EmbeddedLink="embeddedLink",t))(my||{});function Mu(t){let e=t.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!e)throw new Error("Publisher host cannot be empty");return e}function zs(t){let e;try{e=new URL(t)}catch{throw new Error(`credential scope '${t}' is not an absolute URL`)}if(e.protocol!=="https:")throw new Error(`credential scope '${t}' is not https`);if(e.username||e.password)throw new Error(`credential scope '${t}' carries userinfo`);if(e.search||t.includes("?"))throw new Error(`credential scope '${t}' has a query`);if(e.hash||t.includes("#"))throw new Error(`credential scope '${t}' has a fragment`);let n=e.pathname;return{origin:e.origin,prefix:n.endsWith("/")?n:`${n}/`}}function _o(t,e){let n=typeof t=="string"?zs(t):t,r;try{r=new URL(e)}catch{return!1}if(r.protocol!=="https:"||r.origin!==n.origin)return!1;let a=r.pathname;return a.startsWith(n.prefix)||`${a}/`===n.prefix}function gy(t,e){let n,r=-1;for(let a of t){let s=zs(a.scope);_o(s,e)&&s.prefix.length>r&&(n=a,r=s.prefix.length)}return n}var Ys=class{cache=new Map;wellKnownCache=new Map;metadataUrlCache=new Map;async protectedResourceMetadata(t){let e=new URL(t).href,n=this.wellKnownCache.get(e);return n||(n=this.fetchWellKnown(e),this.wellKnownCache.set(e,n)),n}async protectedResourceMetadataAt(t,e){let n=new URL(t).href,r=this.metadataUrlCache.get(n);r||(r=this.fetchMetadataAt(n),this.metadataUrlCache.set(n,r));let a=await r,s;try{s=_o(zs(a.resource),e)}catch(i){throw new Error(`Protected resource metadata at ${n} names an unusable resource '${a.resource}': ${i.message}`)}if(!s)throw new Error(`Protected resource metadata at ${n} names the resource '${a.resource}', which does not contain the requested ${e}. RFC 9728 \xA73.3 forbids using it.`);return a}async fetchWellKnown(t){let e=new URL(t),n=e.pathname==="/"?"":e.pathname,r=`${e.origin}/.well-known/oauth-protected-resource${n}`,a=await yr(r,{redirect:"manual"});if(a.status===404||a.status===410||a.status>=300&&a.status<400)return null;if(!a.ok)throw await mn("protected resource metadata",r,a);if(!oy(a.headers.get("content-type")))return null;let s=ly(r,await a.text());if(!URL.canParse(s.resource)||new URL(s.resource).href!==t)throw new Error(`Protected resource metadata at ${r} names the resource '${s.resource}', not '${t}'. RFC 9728 \xA73.3 forbids using it.`);return s}async fetchMetadataAt(t){let e=await yr(t,{redirect:"manual"});if(!e.ok)throw await mn("protected resource metadata",t,e);if(!oy(e.headers.get("content-type")))throw new Error(`Protected resource metadata at ${t} is not a JSON document (${e.headers.get("content-type")??"no content type"})`);return ly(t,await e.text())}async discover(t){let e=Mu(t);if(this.cache.has(e))return this.cache.get(e);let n=`https://${e}/.well-known/oauth-authorization-server`,r=await this.tryEndpoint(n);if(!r){let a=`https://${e}/.well-known/openid-configuration`;r=await this.tryEndpoint(a)}return this.cache.set(e,r),r}async supportsOAuth(t){return await this.discover(t)!==null}static supportsPkceS256(t){return t.codeChallengeMethodsSupported?.some(e=>e.toUpperCase()==="S256")??!1}static supportsDynamicRegistration(t){return!!t.registrationEndpoint}static supportsAuthorizationCode(t){return t.responseTypesSupported?.some(e=>e.toLowerCase()==="code")??!1}static supportsEnrollment(t){return!!t.enrollmentEndpoint}static supportsSession(t){return!!t.sessionEndpoint}async tryEndpoint(t){let e;try{e=await fetch(t)}catch(r){let a=r instanceof Error?r.message:String(r);return a.includes("ENOTFOUND")||a.includes("ECONNREFUSED")?(console.error(` OAuth discovery: ${t} \u2014 host unreachable (${a})`),console.error(" If the server is behind a VPN, ensure you are connected.")):a.includes("CERT")||a.includes("SSL")||a.includes("TLS")?(console.error(` OAuth discovery: ${t} \u2014 TLS error (${a})`),console.error(" If using a custom CA certificate, set NODE_EXTRA_CA_CERTS=/path/to/ca.pem")):console.error(` OAuth discovery: ${t} \u2014 network error: ${a}`),null}if(!e.ok)return e.status===404||(e.status===403?(console.error(` OAuth discovery: ${t} \u2014 HTTP 403 Forbidden`),console.error(" Access may be blocked by a firewall, proxy, or WAF.")):e.status>=500&&(console.error(` OAuth discovery: ${t} \u2014 HTTP ${e.status} server error`),console.error(" The authorization server returned an internal error. Contact your IDP administrator."))),null;let n;try{n=await e.json()}catch{return console.error(` OAuth discovery: ${t} \u2014 response is not valid JSON`),console.error(" The endpoint may be returning HTML instead of JSON. Check IDP configuration."),null}return{issuer:br(n.issuer),authorizationEndpoint:br(n.authorization_endpoint),tokenEndpoint:br(n.token_endpoint),registrationEndpoint:br(n.registration_endpoint),revocationEndpoint:br(n.revocation_endpoint),scopesSupported:vr(n.scopes_supported),responseTypesSupported:vr(n.response_types_supported),grantTypesSupported:vr(n.grant_types_supported),codeChallengeMethodsSupported:vr(n.code_challenge_methods_supported),tokenEndpointAuthMethodsSupported:vr(n.token_endpoint_auth_methods_supported),dpopSigningAlgValuesSupported:vr(n.dpop_signing_alg_values_supported),enrollmentEndpoint:br(n.enrollment_endpoint),enrollmentIssuanceProtocols:vr(n.enrollment_issuance_protocols),enrollmentKeyTypes:vr(n.enrollment_key_types),enrollmentScopesSupported:vr(n.enrollment_scopes_supported),enrollmentConsentBindingParam:br(n.enrollment_consent_binding_param),sessionEndpoint:br(n.session_endpoint),sessionEndpointAuthMethod:br(n.session_endpoint_auth_method)}}};function oy(t){let e=(t??"").split(";")[0].trim().toLowerCase();return e==="application/json"||e.endsWith("+json")}function ly(t,e){let n;try{n=JSON.parse(e)}catch{throw new Error(`Protected resource metadata at ${t} is not valid JSON`)}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`Protected resource metadata at ${t} is not a JSON object`);let r=n;if(typeof r.resource!="string")throw new Error(`Protected resource metadata at ${t} has no "resource"`);let a=r.authorization_servers;if(a!==void 0&&!(Array.isArray(a)&&a.every(s=>typeof s=="string")))throw new Error(`Protected resource metadata at ${t} has an "authorization_servers" that is not a list of strings`);return{resource:r.resource,authorizationServers:a??[]}}function br(t){return typeof t=="string"?t:null}function vr(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"):null}var Ua=1,h1=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,m1=/[\r\n\0]/;function Jt(t,e){return{ok:!1,problem:t,message:e}}function Eo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Du(t,e,n){if(!Eo(e))return Jt("malformed","the answer is not a JSON object");if(e.status==="declined")return e.reason!==void 0&&typeof e.reason!="string"?Jt("reason",`a decline's "reason" must be a string`):{ok:!0,answer:e.reason===void 0?{status:"declined"}:{status:"declined",reason:e.reason}};if(e.status!=="credential")return Jt("status",`"status" must be "credential" or "declined", not ${JSON.stringify(e.status)}`);let r=e.headers;if(!Eo(r)||Object.keys(r).length===0)return Jt("headers",'a credential needs "headers": an object with at least one header');let a={};for(let[l,c]of Object.entries(r)){if(!h1.test(l))return Jt("headers",`header name ${JSON.stringify(l)} is not a valid field name`);if(typeof c!="string"||m1.test(c))return Jt("headers",`header '${l}' must be a string without CR, LF or NUL`);a[l]=c}if(typeof e.scope!="string")return Jt("scope",'a credential needs a "scope" string');let s;try{s=zs(e.scope)}catch(l){return Jt("scope",l.message)}if(!_o(s,t.resource))return Jt("scope-excludes-resource",`scope '${e.scope}' does not contain the requested resource ${t.resource}`);let i;if(e.expiresAt!==void 0){if(typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt))return Jt("expires-at",'"expiresAt" must be a number of Unix seconds');if(e.expiresAt<=n)return Jt("expired",`the credential expired at ${e.expiresAt} (now ${Math.floor(n)})`);i=e.expiresAt}let o={status:"credential",headers:a,scope:e.scope};return i!==void 0&&(o.expiresAt=i),{ok:!0,answer:o}}function yy(t,e,n){return Eo(e)?e.version!==Ua?Jt("version",`"version" must be ${Ua}, not ${JSON.stringify(e.version)}`):Du(t,e,n):Jt("malformed","the answer is not a JSON object")}function ky(t){return Eo(t)?t.version!==Ua?Jt("version",`"version" must be ${Ua}, not ${JSON.stringify(t.version)}`):t.status!=="erased"?Jt("status",`"status" must be "erased", not ${JSON.stringify(t.status)}`):{ok:!0,answer:{status:"erased"}}:Jt("malformed","the answer is not a JSON object")}function by(t){let e=new k1(t),n=[];for(e.skipListSeparators();!e.atEnd();){let r=e.token();if(!r)throw e.error("expected an auth-scheme");let a={scheme:r,params:{}};n.push(a);let s=e.skipSpaces();if(e.atEnd()||e.peek()===","){e.skipListSeparators();continue}if(!s)throw e.error(`expected a space after the auth-scheme '${r}'`);let i=e.tryParam();if(i)for(cy(a,i,e);e.skipOws(),!e.atEnd();){if(e.peek()!==",")throw e.error('expected "," between auth-params');if(e.skipListSeparators(),e.atEnd())break;let o=e.pos,l=e.tryParam();if(!l){e.pos=o;break}cy(a,l,e)}else{let o=e.token68();if(!o)throw e.error(`expected a token68 or auth-params after '${r}'`);if(a.token68=o,e.skipOws(),!e.atEnd()&&e.peek()!==",")throw e.error("unexpected text after token68")}e.skipListSeparators()}return n}function cy(t,[e,n],r){if(Object.prototype.hasOwnProperty.call(t.params,e))throw r.error(`auth-param '${e}' appears twice in the '${t.scheme}' challenge`);t.params[e]=n}var g1=/[!#$%&'*+\-.^_`|~0-9A-Za-z]/,y1=/[A-Za-z0-9\-._~+/]/,k1=class{constructor(t){this.s=t}s;pos=0;atEnd(){return this.pos>=this.s.length}peek(){return this.s[this.pos]}error(t){return new Error(`Malformed WWW-Authenticate (${t} at offset ${this.pos}): ${this.s}`)}skipSpaces(){let t=this.pos;for(;!this.atEnd()&&(this.peek()===" "||this.peek()===" ");)this.pos++;return this.pos>t}skipOws(){this.skipSpaces()}skipListSeparators(){for(;;){if(this.skipOws(),this.peek()!==",")return;this.pos++}}token(){let t=this.pos;for(;!this.atEnd()&&g1.test(this.peek());)this.pos++;return this.s.slice(t,this.pos)}token68(){let t=this.pos;for(;!this.atEnd()&&y1.test(this.peek());)this.pos++;if(this.pos===t)return"";for(;!this.atEnd()&&this.peek()==="=";)this.pos++;return this.s.slice(t,this.pos)}tryParam(){let t=this.pos,e=this.token();if(!e)return null;if(this.skipOws(),this.peek()!=="=")return this.pos=t,null;this.pos++,this.skipOws();let n;if(this.peek()==='"')n=this.quotedString();else if(n=this.token(),!n)return this.pos=t,null;return[e.toLowerCase(),n]}quotedString(){this.pos++;let t="";for(;;){if(this.atEnd())throw this.error("unterminated quoted-string");let e=this.s[this.pos++];if(e==='"')return t;if(e==="\\"){if(this.atEnd())throw this.error("unterminated quoted-pair");t+=this.s[this.pos++]}else t+=e}}},vy=30;function Fu(t,e={}){let n=e.discovery??new Ys,r=e.nowSeconds??(()=>Date.now()/1e3),a=[],s=new WeakSet,i=new Map,o=new Map,l=h=>{let g=r();return a=a.filter(m=>m.expiresAt===void 0||m.expiresAt-vy>g),gy(a,h)},c=(h,g)=>{let m=(o.get(h)??Promise.resolve()).then(g);return o.set(h,m.then(()=>{},()=>{})),m},u=h=>{let g=i.get(h);return g||(g=n.protectedResourceMetadata(h).then(m=>m!==null,m=>{if(m instanceof ar&&(m.status===401||m.status===403))return!0;throw new dt(`Could not learn whether ${h} requires a credential: ${wy(m)}`)}),i.set(h,g)),g},p=async(h,g)=>{let m=Du(g,await uy(()=>h.get(g),g.resource),r());if(!m.ok)throw new dt(`The credential provider answered for ${g.resource} outside the protocol (${m.problem}): ${m.message}`);let y=m.answer;if(y.status==="declined")return y.reason===void 0?{}:{declined:y.reason};let v={headers:y.headers,scope:y.scope};return y.expiresAt!==void 0&&(v.expiresAt=y.expiresAt),a=a.filter(k=>k.scope!==v.scope),a.push(v),v},f=(h,g,m)=>yr(h,{method:g,redirect:"manual",headers:m?.headers??{}});return async(h,g,m="GET")=>{let y=new URL(h).origin,v=l(h);if(!v&&t&&await u(y)){let _=await c(y,async()=>l(h)??p(t,{resource:h,method:m}));py(_)&&(v=_)}let k=await f(h,m,v);if(k.status!==401&&k.status!==403)return k;let w=dy(k,h),S=k.status===401;if(!S&&!fy(w))return k;if(i.set(y,Promise.resolve(!0)),!t)throw await Ru(`${h} requires a credential, and no credential provider is configured`,k);let A={resource:h,method:m,challenges:w},C=await c(y,async()=>{let _=l(h);if(_&&_!==v)return _;if(S&&v&&!s.has(v)){s.add(v);let B=v;a=a.filter(X=>X!==B),await uy(()=>t.erase({...A,scope:B.scope}),h)}return p(t,A)});if(!py(C)){let _=C.declined?`: ${C.declined}`:"";throw await Ru(`${h} requires a credential, and the credential provider declined${_}`,k)}let N=await f(h,m,C);if(N.status===401||N.status===403&&fy(dy(N,h)))throw await Ru(`${h} rejected the credential for ${C.scope} after asking the provider again`,N);return N}}async function uy(t,e){try{return await t()}catch(n){throw n instanceof dt?n:new dt(`The credential provider failed for ${e}: ${wy(n)}`)}}function wy(t){return t instanceof Error?t.message:String(t)}function py(t){return"scope"in t}function fy(t){return t.some(e=>e.params.error==="insufficient_scope")}function dy(t,e){let n=t.headers.get("www-authenticate");if(!n)return[];try{return by(n)}catch(r){throw new dt(`${e} answered ${t.status} with a challenge that cannot be read: ${r.message}`)}}async function Ru(t,e){return new dt(`${t}. The server answered ${await ko(e)}`)}var Ba="KANONAK_TOKEN";function b1(){return typeof process<"u"&&process.env?process.env:{}}function Iu(t){return`${Ba}_${Mu(t).toUpperCase().replace(/[^A-Z0-9]+/g,"_")}`}var $y=class{tokens;env;discovery;constructor(t={}){this.tokens=t.tokens??{},this.env=t.env??b1(),this.discovery=t.discovery??new Ys}async get(t){let e=await this.metadataFor(t);if("declined"in e)return{status:"declined",reason:e.declined};let n=e.metadata;if(n.authorizationServers.length===0)return{status:"declined",reason:`the protected-resource metadata for ${n.resource} names no authorization server`};let r=n.authorizationServers.map(a=>new URL(a).host);for(let a of r){let s=this.tokens[a]??this.env[Iu(a)]??this.env[Ba];if(s)return{status:"credential",headers:{Authorization:`Bearer ${s}`},scope:n.resource}}return{status:"declined",reason:`no token is configured for ${r.join(" or ")}: set ${r.map(Iu).join(" or ")}, or ${Ba}`}}async erase(){}async metadataFor(t){let e=t.challenges?.find(a=>a.params.resource_metadata!==void 0)?.params.resource_metadata;if(e!==void 0)return{metadata:await this.discovery.protectedResourceMetadataAt(e,t.resource)};let n=new URL(t.resource).origin,r;try{r=await this.discovery.protectedResourceMetadata(n)}catch(a){if(a instanceof ar&&(a.status===401||a.status===403))return{declined:`${n} requires a credential even for its protected-resource metadata, and its challenge names no resource_metadata`};throw a}return r?{metadata:r}:{declined:`${n} publishes no RFC 9728 protected-resource metadata naming its authorization server, so no token is presented to it`}}};function wa(t,e,n,r){let a=Vu(t);if(a.length>0){let l=qu(a,e,n);return l?{transformation:l.transformation,source:"instance"}:void 0}let s=new Set,i=$1(t);for(;i.length>0;){let l=i.shift(),c=Ey(l.subject);if(s.has(c))continue;s.add(c);let u=Sy(r,l.subject);if(u.length===0)continue;let p=u.flatMap(Vu),f=qu(p,e,n);if(f)return{transformation:f.transformation,source:{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}};for(let h of u)for(let g of S1(h))i.push(g)}let o={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};if(!s.has(Ey(o))){let l=Sy(r,o).flatMap(Vu),c=qu(l,e,n);if(c)return{transformation:c.transformation,source:o}}}function Vu(t){let e=[];for(let n of t.statement)if(n instanceof he&&Co(n,"kanonak.org","derivation","derivations"))for(let r of n.object??[]){if(!(r instanceof te))continue;let a=v1(r);a&&e.push(a)}return e}function qu(t,e,n){let r=t.filter(i=>xy(i.format,e)&&xy(i.variant,n));if(r.length<=1)return r[0];let a=r[0].transformation,s=r[0];for(let i of r){let o=i.transformation;if(o.publisher!==a.publisher||o.package_!==a.package_||o.name!==a.name)continue;let l=At(s.transformation.version),c=At(o.version);l&&c&&_e(c,l)>0&&(s=i)}return s}function v1(t){let e,n,r;for(let a of t.statement)a instanceof de?Co(a,"kanonak.org","derivation","format")?e=Ay(a):Co(a,"kanonak.org","derivation","variant")&&(n=Ay(a)):a instanceof Ae&&Co(a,"kanonak.org","derivation","transformation")&&(r=w1(a.object));if(!(!e||!r))return n||(n={publisher:"kanonak.org",package_:"derivation",name:"default"}),{format:e,variant:n,transformation:r}}function w1(t){let e,n,r,a;for(let s of t.statement){if(!(s instanceof Ce))continue;let i=s.predicate?.subject?.name;i==="publisher"?e=s.object:i==="package"?n=s.object:i==="version"?r=s.object:i==="name"&&(a=s.object)}if(!(!e||!n||!r||!a))return{publisher:e,package_:n,version:r,name:a}}function $1(t){let e=[];for(let n of t.statement)n instanceof de&&n.predicate?.subject?.name==="type"&&n.object instanceof D&&e.push(n.object);return e}function S1(t){let e=[];for(let n of t.statement)if(n instanceof de){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof D&&e.push(n.object)}else if(n instanceof he){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let r of n.object??[])r instanceof D&&e.push(r)}return e}function Sy(t,e){let n=[];for(let r of t)!(r instanceof V)||r.name!==e.name||(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(r);return n.sort((r,a)=>{let s=At((r.namespace||"").split("@")[1]??""),i=At((a.namespace||"").split("@")[1]??"");return!s||!i?0:_e(i,s)}),n}function Co(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function Ay(t){let e=t.object.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}function xy(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Ey(t){return`${t.publisher}/${t.package_}/${t.name}`}function Ny(t){return typeof t=="object"&&t!==null&&Array.isArray(t.subjects)}function Ku(t){return oo(Ny(t)?t:Py(t))}function jo(t){return cu(Ny(t)?t:Py(t))}function Py(t){let e=[],n=[];for(let r of t)if(r instanceof V){let a=T1(r);n.push({uri:a,statements:Uu(r,a,e)})}if(e.length>0)throw A1(e);return{subjects:n}}function Uu(t,e,n){for(let r of t.unresolvedPredicates)n.push(`'${r.key}' on ${e}${r.builtin?" (a built-in term whose home did not resolve)":""}`);return x1(t.statement,e,n)}function Ty(t,e,n){return new Error(`canonicalForm: the literal ${t?`of '${t}' on ${e}`:`at ${e}`} can't take its datatype, since its property's range didn't resolve: ${n}. Written untyped, it would hash otherwise than anything that types it from that range. Make the version each of those imports states available, then hash again`)}function A1(t){return new Error(`canonicalForm: ${t.length===1?"a property is":`${t.length} properties are`} not defined or imported, so ${t.length===1?"its statement":"their statements"} cannot enter the canonical form: ${t.join(", ")}. A hash covers every statement a document makes: define or import each property, and resolve each import, as 'kanonak validate' reports, then hash again`)}function x1(t,e,n){let r=[];for(let a of t){let s=P1(a);if(!s)throw new Error(`canonicalForm: a ${No(a)} has no predicate, so it cannot enter the canonical form; give every statement the property it asserts before hashing`);if(a instanceof he&&E1(a.predicate.subject)){r.push(...C1(a,s));continue}r.push({predicate:s,value:j1(a,s,e,n)})}return r}function E1(t){let e=tr("type");return e!==void 0&&t.name==="type"&&t.publisher===e.publisher&&t.package_===e.package_}var _y=new TextEncoder;function _1(t,e){let n=_y.encode(t),r=_y.encode(e),a=Math.min(n.length,r.length);for(let s=0;s<a;s++)if(n[s]!==r[s])return n[s]-r[s];return n.length-r.length}function C1(t,e){let n=[];for(let r of t.object){if(!(r instanceof D))throw new Error(`canonicalForm: a multi-valued type statement must contain only entity references, got ${No(r)}`);n.push(Bu(r))}n.sort(_1);for(let r=1;r<n.length;r++)if(n[r-1]===n[r])throw new Error(`canonicalForm: duplicate type ${n[r]} in a multi-valued type statement`);return n.map(r=>({predicate:e,value:{ref:r}}))}function j1(t,e,n,r){if(t instanceof Jn&&t.carrier)return{lit:t.lexical??String(t.object),datatype:Ly(t.carrier)};if(t instanceof Jn&&t.rangeUnresolved!==void 0)throw Ty(e,n,t.rangeUnresolved);if(t instanceof Ce)return{raw:t.object};if(t instanceof et)return{raw:t.lexical??String(t.object)};if(t instanceof Ge)return{raw:t.lexical??String(t.object)};if(t instanceof de)return{ref:Bu(t.object)};let a=`${n}.${e.slice(e.lastIndexOf("/")+1)}`;if(t instanceof Ae)return Oy(t.object,a,r);if(t instanceof he)return{list:t.object.map((s,i)=>N1(s,`${a}[${i}]`,r))};throw new Error(`canonicalForm: the statement of '${e}' is of an unrecognized kind (${No(t)}); add canonicalization support before hashing data that contains it`)}function Oy(t,e,n){let r=Uu(t,t.name?`${e}.${t.name}`:e,n);return t.name&&t.name.length>0?{embed:{name:t.name,statements:r}}:{embed:{statements:r}}}function N1(t,e,n){if(t instanceof D)return{ref:Bu(t)};if(t instanceof te)return Oy(t,e,n);if(t instanceof xt){if(t.carrier)return{lit:t.lexical??String(t.value),datatype:Ly(t.carrier)};if(t.rangeUnresolved!==void 0)throw Ty(void 0,e,t.rangeUnresolved);let r=t.value;if(typeof r=="string")return{raw:r};if(typeof r=="number")return{raw:String(r)};if(typeof r=="boolean")return{raw:String(r)}}if(t instanceof kt)return{embed:{statements:Uu(t,e,n)}};throw new Error(`canonicalForm: list item of unrecognized kind (${No(t)}); add canonicalization support before hashing data that contains it`)}function Ly(t){return t===oe.LangString?"kanonak.org/core-rdf/langString":`kanonak.org/core-xsd/${t}`}function No(t){return t.constructor?.name??typeof t}function P1(t){let e=t.predicate;if(e)return Ry(e.subject)}function T1(t){let e=t.namespace??"",n=t.name??"";return`${e}/${n}`}function Bu(t){return Ry(t.subject)}function Ry(t){let e=t.version;if(e&&typeof e.major=="number")return`${t.publisher}/${t.package_}@${e.major}.${e.minor}.${e.patch}/${t.name}`;if(O1(t))throw L1(t);return`${t.publisher}/${t.package_}/${t.name}`}function O1(t){let e=tr(t.name);return e!==void 0&&e.publisher===t.publisher&&e.package_===t.package_}function L1(t){let e=`${t.publisher}/${t.package_}`;return new Error(`canonicalForm: the built-in term '${e}/${t.name}' names no version, so it cannot enter the canonical form, where every reference names one (canonical-scalar-representation-rule). Its home, ${e}, didn't resolve: the document imports it at a version the repository doesn't hold, or names the term with neither an import nor a link of ${e} while none is held. Make the version the import states available, or import ${e}, or link it with = where it depends on the document's package (home-link-rule), then hash again`)}var R1="0.0.0",Iy=class{constructor(t,e=new me,n){this.repository=t,this.parser=e,this.objectParser=n??new je(this.parser)}repository;parser;objectParser;imports(){return new Dy}serializeValue(t,e){return Fy(t,e)}async buildContentAddressed(t){let e=t.book.toImports(),n=await this.hashBody(t.publisher,e,t.body),r=My(n),a={type:"EphemeralPackage",publisher:t.publisher,imports:e};t.contentHashProperty&&(a[t.contentHashProperty]=n),Object.assign(a,t.header??{}),a.imports=e;let s={[r]:a,...t.body},i=this.dump(s);return{yaml:i,byteCount:jy(i),contentHash:n,packageName:r,publisher:t.publisher,resourceCount:Object.keys(t.body).length}}async buildNamed(t){let e=t.book.toImports(),n={type:t.type??"Package",publisher:t.publisher,version:t.version,imports:e},r;t.contentHashProperty&&(r=await this.hashBody(t.publisher,e,t.body),n[t.contentHashProperty]=r),Object.assign(n,t.header??{}),n.imports=e;let a={[t.name]:n,...t.body},s=this.dump(a),i={yaml:s,byteCount:jy(s),packageName:t.name,publisher:t.publisher,resourceCount:Object.keys(t.body).length};return r!==void 0&&(i.contentHash=r),i}dump(t){return Ns(t,{lineWidth:-1})}async hashBody(t,e,n){let r={[Cy]:{type:"EphemeralPackage",publisher:t,imports:e},...n},a=this.parser.parse(Ns(r,{lineWidth:-1})),s=a.metadata.namespace_?.toString(),i=(await this.objectParser.parseKanonaks(new at(a,this.repository))).filter(o=>o instanceof V&&o.namespace===s&&o.name!==Cy);for(let o of i)o.namespace="ephemeral";return jo(i)}},Cy="__pkgbuilder_probe__";function jy(t){return new TextEncoder().encode(t).length}function My(t){let e="sha256:",n=t.startsWith(e)?e.length:0;return`q-${t.slice(n,n+16)}`}var Dy=class{byKey=new Map;aliases=new Set;ensure(t,e,n,r,a=we.Major){let s=`${t}/${e}@${n}`,i=this.byKey.get(s);if(i)return i.alias;let o=this.uniqueAlias(r);return this.byKey.set(s,{publisher:t,package_:e,version:n,alias:o,match:a}),o}ref(t){if(!t.version||typeof t.version.major!="number")throw new Error(`Cannot serialize a reference to ${t.publisher}/${t.package_}/${t.name} without a version.`);return`${this.ensure(t.publisher,t.package_,ee(t.version),t.package_)}.${t.name}`}refLatest(t,e,n,r){return`${this.ensure(t,e,R1,r??e,we.Any)}.${n}`}toImports(){let t=new Map;for(let e of this.byKey.values()){let n=t.get(e.publisher)??[];n.push(e),t.set(e.publisher,n)}return[...t.keys()].sort().map(e=>({publisher:e,packages:t.get(e).sort((n,r)=>n.package_<r.package_?-1:1).map(n=>({package:n.package_,match:Ft(n.match),version:n.version,alias:n.alias}))}))}uniqueAlias(t){let e=Hu(t)||"pkg",n=e,r=2;for(;this.aliases.has(n);)n=`${e}${r++}`;return this.aliases.add(n),n}};function Fy(t,e){if(t!=null){if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(t instanceof D)return e.ref(t.subject);if(Array.isArray(t)){let n=t.map(r=>Fy(r,e)).filter(r=>r!==void 0);return n.length>0?n:void 0}if(t instanceof te)throw new Error("Embedded values are not yet supported by PackageBuilder. Produce a literal or a reference, or compose the embedded shape into the output class.");if(I1(t))throw new Error(`Value produced a bare URI without a version (${t.publisher}/${t.package_}/${t.name}); cannot serialize it as a reference.`)}}function Hu(t){return t.replace(/[^A-Za-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function I1(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}var Kr=class{documents=new Map;documentContents=new Map;parser;constructor(t){this.parser=t}async getAllDocumentsAsync(){return Array.from(this.documents.values())}async getDocumentAsync(t){return this.documents.get(t)??null}async getDocumentsByNamespaceAsync(t,e){let n=[];for(let r of this.documents.values())r.metadata?.namespace_?.publisher===t&&r.metadata?.namespace_?.package_===e&&n.push(r);return n}async getHighestCompatibleVersionAsync(t,e){let n=[];for(let a of this.documents.values())a.metadata?.namespace_?.publisher===t&&a.metadata?.namespace_?.package_===e.packageName&&a.metadata?.namespace_?.version!==void 0&&n.push(a);if(n.length===0)return null;let r=n.filter(a=>{let s=a.metadata.namespace_.version;return s?on(s,e):!1});return r.length===0?null:(r.sort((a,s)=>{let i=a.metadata.namespace_.version,o=s.metadata.namespace_.version;return!i&&!o?0:i?o?_e(o,i):-1:1}),r[0])}async saveDocumentAsync(t,e,n){this.documents.set(e,t),this.documentContents.set(e,n??this.parser.save(t))}async deleteDocumentAsync(t){this.documents.delete(t),this.documentContents.delete(t)}async clearNamespaceAsync(t,e){let n=[];for(let[r,a]of this.documents.entries())a.metadata?.namespace_?.publisher===t&&a.metadata?.namespace_?.package_===e&&n.push(r);for(let r of n)this.documents.delete(r),this.documentContents.delete(r)}async getAllDocumentReferencesAsync(){let t=[];for(let e of this.documents.values())e.metadata?.namespace_&&t.push({identifier:e.metadata.namespace_.toString(),uri:`kanonak://${e.metadata.namespace_}`,hasParseError:!1});return t}async getDocumentContentAsync(t){let e=this.documentContents.get(t);if(e!==void 0)return e;let n=this.documents.get(t);return n!==void 0?this.parser.save(n):null}async getDocumentUriAsync(t){let e=this.documents.get(t);return e?e.metadata?.namespace_?`kanonak://${e.metadata.namespace_}`:`kanonak://${t}`:null}};var ek=Rh(Zy(),1);import*as Do from"fs";import*as yn from"path";var Js=class{basePath;matchers=new Map;constructor(t){this.basePath=yn.resolve(t)}shouldIgnore(t){return this.excluded(t,!1)}shouldIgnoreDirectory(t){return this.excluded(t,!0)}excluded(t,e){let n=yn.relative(this.basePath,yn.resolve(t));if(n==="")return!1;if(n===".."||n.startsWith(`..${yn.sep}`)||yn.isAbsolute(n))throw new Error(`GitIgnoreFilter: ${t} is not under ${this.basePath}`);let r=n.split(yn.sep);for(let a=1;a<r.length;a++)if(this.decides(r.slice(0,a),!0))return!0;return this.decides(r,e)}decides(t,e){for(let n=t.length-1;n>=0;n--){let r=this.matcherFor(yn.join(this.basePath,...t.slice(0,n)));if(!r)continue;let{ignored:a,unignored:s}=r.test(t.slice(n).join("/")+(e?"/":""));if(a)return!0;if(s)return!1}return!1}matcherFor(t){let e=this.matchers.get(t);if(e===void 0){let n=yn.join(t,".gitignore");if(Do.existsSync(n))try{e=(0,ek.default)().add(Do.readFileSync(n,"utf8"))}catch(r){throw new Error(`GitIgnoreFilter: cannot read ${n}`,{cause:r})}else e=null;this.matchers.set(t,e)}return e}};import*as Ct from"fs/promises";import*as _t from"path";import{pathToFileURL as tk}from"url";import{homedir as h_}from"os";import{join as m_}from"path";import{readFileSync as g_,readdirSync as y_}from"fs";import{join as ak}from"path";var Ya=class{rootPath;recursive;parser;documentCache;filePathsByIdentifier;cacheInitialized=!1;cacheInitPromise=null;parsingErrors=new Map;constructor(t,e=!0,n){if(!t||t.trim().length===0)throw new Error("Root path cannot be null or empty");this.rootPath=_t.resolve(t),this.recursive=e,this.parser=n??new me,this.documentCache=new Map,this.filePathsByIdentifier=new Map}async getAllDocumentsAsync(){await this.ensureCacheInitialized();let t=new Set(this.documentCache.values());return Array.from(t)}async getDocumentAsync(t){await this.ensureCacheInitialized();let e=this.documentCache.get(t);if(e)return e;let n=_t.join(this.rootPath,t);if(e=this.documentCache.get(n),e)return e;for(let r of[".kan.yml",".yml",".yaml"])if(!t.endsWith(r)){let a=t+r;if(e=this.documentCache.get(a),e)return e;let s=_t.join(this.rootPath,a);if(e=this.documentCache.get(s),e)return e}return null}async getDocumentsByNamespaceAsync(t,e){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values());return Array.from(n).filter(r=>r.metadata.namespace_?.publisher===t&&r.metadata.namespace_?.package_===e)}async getHighestCompatibleVersionAsync(t,e){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values()),r=Array.from(n).filter(s=>s.metadata?.namespace_?.publisher===t&&s.metadata?.namespace_?.package_===e.packageName&&s.metadata?.namespace_?.version!==void 0);if(r.length===0)return null;let a=r.filter(s=>{let i=s.metadata.namespace_.version;return on(i,e)});return a.length===0?null:(a.sort((s,i)=>{let o=s.metadata.namespace_.version,l=i.metadata.namespace_.version;return _e(l,o)}),a[0])}async saveDocumentAsync(t,e){let n,r=t.metadata.namespace_?.toString();if(r&&r.includes("@")&&r.includes("/")){let o=r.split("/"),l=o[0],c=o[1].replace("@","@")+".kan.yml";n=_t.join(this.rootPath,l,c)}else n=_t.join(this.rootPath,e),!n.endsWith(".yml")&&!n.endsWith(".yaml")&&!n.endsWith(".kan.yml")&&(n+=".kan.yml");let a=_t.dirname(n);await Ct.mkdir(a,{recursive:!0});let s=this.parser.save(t);await Ct.writeFile(n,s,"utf8"),r&&this.documentCache.set(r,t),this.documentCache.set(n,t);let i=_t.relative(this.rootPath,n);this.documentCache.set(i,t)}async deleteDocumentAsync(t){let e=await this.getDocumentAsync(t);if(!e)return;let n=this.filePathsByIdentifier.get(t);if(!n)return;try{await Ct.unlink(n)}catch{}let r=e.metadata.namespace_?.toString();r&&this.documentCache.delete(r),this.documentCache.delete(t),this.documentCache.delete(n);let a=_t.relative(this.rootPath,n);this.documentCache.delete(a)}async clearNamespaceAsync(t,e){await this.ensureCacheInitialized();let n=[];for(let[a,s]of this.documentCache.entries()){let i=s.metadata.namespace_?.toString()||"";i.includes(t)&&i.includes(e)&&n.push([a,s])}let r=_t.join(this.rootPath,t);try{let a=await Ct.readdir(r);for(let s of a)s.includes(e)&&s.endsWith(".kan.yml")&&await Ct.unlink(_t.join(r,s))}catch{}for(let[a]of n)this.documentCache.delete(a)}async getAllDocumentReferencesAsync(){await this.ensureCacheInitialized();let t=new Set(this.filePathsByIdentifier.values()),e=[];for(let n of t){let r=tk(n).toString(),a;for(let[o,l]of this.documentCache.entries())if(this.filePathsByIdentifier.get(o)===n&&l.metadata.namespace_){a=l.metadata.namespace_.toString();break}let s=a??_t.relative(this.rootPath,n),i=this.parsingErrors.has(n);e.push({identifier:s,uri:r,hasParseError:i})}return e}async getDocumentContentAsync(t){await this.ensureCacheInitialized();let e=this.filePathsByIdentifier.get(t);if(!e)try{await Ct.access(t),e=t}catch{let n=_t.join(this.rootPath,t);try{await Ct.access(n),e=n}catch{return null}}try{return await Ct.readFile(e,"utf8")}catch{return null}}async getDocumentUriAsync(t){await this.ensureCacheInitialized();let e=this.filePathsByIdentifier.get(t);if(!e)try{await Ct.access(t),e=t}catch{let n=_t.join(this.rootPath,t);try{await Ct.access(n),e=n}catch{return null}}return tk(e).toString()}async refreshAsync(){this.documentCache.clear(),this.filePathsByIdentifier.clear(),this.parsingErrors.clear(),this.cacheInitialized=!1,this.cacheInitPromise=null,await this.ensureCacheInitialized()}async ensureCacheInitialized(){if(!this.cacheInitialized){if(this.cacheInitPromise){await this.cacheInitPromise;return}this.cacheInitPromise=this.loadDocuments(),await this.cacheInitPromise,this.cacheInitialized=!0}}async loadDocuments(){try{await Ct.mkdir(this.rootPath,{recursive:!0})}catch{}let t=(await this.findYamlFiles(this.rootPath,this.recursive)).map(async n=>{try{let r=await Ct.readFile(n,"utf8"),a=this.parser.parse(r);return{filePath:n,document:a,error:null}}catch(r){return{filePath:n,document:null,error:r instanceof Error?r.message:String(r)}}}),e=await Promise.all(t);for(let{filePath:n,document:r,error:a}of e){let s=_t.relative(this.rootPath,n);if(r&&r.metadata.namespace_){let i=r.metadata.namespace_.toString();this.documentCache.set(i,r),this.documentCache.set(n,r),this.documentCache.set(s,r),this.filePathsByIdentifier.set(i,n),this.filePathsByIdentifier.set(n,n),this.filePathsByIdentifier.set(s,n)}else this.filePathsByIdentifier.set(n,n),this.filePathsByIdentifier.set(s,n);a&&this.parsingErrors.set(n,a)}}async findYamlFiles(t,e){let n=[];try{let r=await Ct.readdir(t,{withFileTypes:!0});for(let a of r){let s=_t.join(t,a.name);if(a.isDirectory()&&e){let i=await this.findYamlFiles(s,e);n.push(...i)}else a.isFile()&&a.name.endsWith(".kan.yml")&&n.push(s)}}catch{}return n}},rk=(t=>(t.NotFound="NotFound",t.Workspace="Workspace",t.Cache="Cache",t))(rk||{});function $r(){return process.env.KANONAK_PACKAGE_CACHE||m_(h_(),".kanonak","packages")}var za=class{repos;constructor(...t){this.repos=t}async firstAnswer(t,e,n){let r=[];for(let a of this.repos)try{let s=await t(a);if(e(s))return s}catch(s){r.push(s)}return nk(r),n}async getHighestCompatibleVersionAsync(t,e){return this.firstAnswer(n=>n.getHighestCompatibleVersionAsync(t,e),n=>n!==null,null)}async getAllDocumentsAsync(){let t=[],e=new Set,n=[];for(let r of this.repos)try{for(let a of await r.getAllDocumentsAsync()){let s=a.metadata?.namespace_,i=s?s.version?`${s.publisher}/${s.package_}@${s.version.major}.${s.version.minor}.${s.version.patch}`:`${s.publisher}/${s.package_}`:void 0;if(i!==void 0){if(e.has(i))continue;e.add(i)}t.push(a)}}catch(a){n.push(a)}return nk(n),t}async getDocumentAsync(t){return this.firstAnswer(e=>e.getDocumentAsync(t),e=>e!==null,null)}async getDocumentsByNamespaceAsync(t,e){return this.firstAnswer(n=>n.getDocumentsByNamespaceAsync(t,e),n=>n.length>0,[])}async saveDocumentAsync(t,e){await this.repos[0].saveDocumentAsync(t,e)}async deleteDocumentAsync(t){await this.repos[0].deleteDocumentAsync(t)}async clearNamespaceAsync(t,e){await this.repos[0].clearNamespaceAsync(t,e)}async getAllDocumentReferencesAsync(){return this.repos[0].getAllDocumentReferencesAsync()}async getDocumentContentAsync(t){return this.firstAnswer(e=>e.getDocumentContentAsync(t),e=>!!e,null)}async getDocumentUriAsync(t){return this.firstAnswer(e=>e.getDocumentUriAsync(t),e=>!!e,null)}};function nk(t){if(t.length===1)throw t[0];if(t.length>1)throw new Error(t.map(e=>e instanceof Error?e.message:String(e)).join("; "))}var Qu=class{constructor(t,e){this.base=t,this.lock=e}base;lock;pinnedVersion(t,e){return Ou(this.lock,t,e)}async getHighestCompatibleVersionAsync(t,e){let n=this.pinnedVersion(t,e.packageName);if(n){let r=Lt(n,`The version kanonak.lock pins for ${t}/${e.packageName}`),a={...e,versionOperator:we.Exact,version:r};return this.base.getHighestCompatibleVersionAsync(t,a)}return this.base.getHighestCompatibleVersionAsync(t,e)}async getDocumentsByNamespaceAsync(t,e){let n=await this.base.getDocumentsByNamespaceAsync(t,e),r=this.pinnedVersion(t,e);return r?n.filter(a=>{let s=a.metadata.namespace_?.version;return s?`${s.major}.${s.minor}.${s.patch}`===r:!1}):n}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},Zu=class{constructor(t,e,n={}){this.base=t,this.lock=e;let r=new Map;for(let a of n.own??[]){let s=a.metadata?.namespace_;s&&r.set(s.publisher,(r.get(s.publisher)??new Set).add(s.package_))}this.own=r}base;lock;own;checked=new Map;parser=new me;async getHighestCompatibleVersionAsync(t,e){if(it(e)||this.isOwn(t,e.packageName))return this.base.getHighestCompatibleVersionAsync(t,e);let n=`${t}/${e.packageName} ${Ft(e.versionOperator)} ${ee(e.version)}`,r=Bs(this.lock,t,e.packageName);if(!r)throw new Error(`An import of ${n} reads through kanonak.lock, which doesn't pin ${t}/${e.packageName}. Run \`kanonak install\` to pin it.`);let a=Lt(r.version,`The version kanonak.lock pins for ${t}/${e.packageName}`);if(!on(a,e))throw new Error(`kanonak.lock pins ${t}/${e.packageName} at ${r.version}, which an import of ${n} doesn't admit. Run \`kanonak install\` to pin a version it admits.`);return this.readPinned(t,e.packageName,r)}async getDocumentsByNamespaceAsync(t,e){let n=this.isOwn(t,e)?void 0:Bs(this.lock,t,e);return n?(Lt(n.version,`The version kanonak.lock pins for ${t}/${e}`),[await this.readPinned(t,e,n)]):this.base.getDocumentsByNamespaceAsync(t,e)}isOwn(t,e){return this.own.get(t)?.has(e)??!1}readPinned(t,e,n){let r=`${t}/${e}@${n.version}`,a=this.checked.get(r);return a||(a=(async()=>{let s=this.parser.buildImport(e,Ft(we.Exact),n.version,t),i=await this.base.getHighestCompatibleVersionAsync(t,s);if(!i)throw new Error(`kanonak.lock pins ${r}, but no source of it can be read.`);let o=i.metadata.namespace_.toString(),l=await this.base.getDocumentContentAsync(o);if(l===null)throw new Error(`kanonak.lock pins ${r}, but its bytes can't be read, so they can't be checked against the sha256 the lock records.`);return await qr(r,l,n.integrity,await this.base.getDocumentUriAsync(o)??"where it was read"),i})(),this.checked.set(r,a)),a}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},ep=class{constructor(t){this.base=t}base;getHighestCompatibleVersionAsync(t,e){return this.base.getHighestCompatibleVersionAsync(t,{...e,versionOperator:we.Exact})}getDocumentsByNamespaceAsync(t,e){return this.base.getDocumentsByNamespaceAsync(t,e)}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(t){return this.base.getDocumentAsync(t)}saveDocumentAsync(t,e){return this.base.saveDocumentAsync(t,e)}deleteDocumentAsync(t){return this.base.deleteDocumentAsync(t)}clearNamespaceAsync(t,e){return this.base.clearNamespaceAsync(t,e)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.base.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.base.getDocumentUriAsync(t)}},sk=new Set(["node_modules",".kanonak",".git","_site","build",".stage"]);function Kt(t,e=[],n={}){let r=n.ignore??new Js(t),a=s=>{for(let i of ik(s)){let o=ak(s,i.name);if(i.isDirectory()){if(sk.has(i.name))continue;if(!r.shouldIgnoreDirectory(o))a(o);else if(n.ignored){let l=ok(o);l>0&&n.ignored.push({path:o,isDirectory:!0,kanonakFiles:l})}}else i.name.endsWith(".kan.yml")&&(r.shouldIgnore(o)?n.ignored?.push({path:o,isDirectory:!1,kanonakFiles:1}):e.push(o))}};return a(t),e}function ik(t){try{return y_(t,{withFileTypes:!0})}catch(e){let n=e.code??String(e);throw new Error(`Cannot read ${t} (${n}), so the .kan.yml files under it can't be collected. Every folder under the workspace is read: make it readable, or keep it out of the workspace.`)}}function ok(t){let e=0;for(let n of ik(t))n.isDirectory()?sk.has(n.name)||(e+=ok(ak(t,n.name))):n.name.endsWith(".kan.yml")&&e++;return e}async function tp(t,e=new me,n={}){let r=new Kr(e);for(let l of Kt(t))try{let c=g_(l,"utf-8"),u=e.parse(c),p=u.metadata?.namespace_;p?.version&&await r.saveDocumentAsync(u,p.toString(),c)}catch{}let a=new Ya($r(),!0,e);if(n.offline)return new za(r,a);let s=new Map,i=n.httpCache??{getFromCache:(l,c,u)=>s.get(`${l}|${c}|${u}`)??null,onFetch:(l,c,u,p)=>{s.set(`${l}|${c}|${u}`,p)}},o=new Ka({getFromCache:i.getFromCache,onFetch:i.onFetch,...n.fetchFn?{fetchFn:n.fetchFn}:{},...n.packageUrlTemplates?{packageUrlTemplates:n.packageUrlTemplates}:{},...n.templateTrustedPublishers?{templateTrustedPublishers:n.templateTrustedPublishers}:{},...n.onTemplateTrustedRead?{onTemplateTrustedRead:n.onTemplateTrustedRead}:{}});return new za(r,a,o)}var Se=Rh(Jv(),1);var Vf=class nw{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let n=new nw,r=new Se.LineCounter,a=(0,Se.parseDocument)(e,{lineCounter:r});if(a.errors.length>0||!(0,Se.isMap)(a.contents))return n;Df(a.contents,[],r,n);for(let s of a.contents.items){if(!(0,Se.isPair)(s)||!(0,Se.isScalar)(s.key))continue;let i=String(s.key.value),o=s.key.range;if(!o)continue;n.entities.set(i,_n(o,r));let l=s.value,c=l&&typeof l=="object"&&"range"in l?l.range:void 0;if(c?n.entityBlocks.set(i,_n([o[0],o[1],c[2]],r)):n.entityBlocks.set(i,_n(o,r)),(0,Se.isMap)(s.value)){let u=new Map,p=new Map,f=new Map;for(let g of s.value.items){if(!(0,Se.isPair)(g)||!(0,Se.isScalar)(g.key))continue;let m=String(g.key.value),y=g.key.range;y&&u.set(m,_n(y,r));let v=g.value;if(v&&typeof v=="object"&&"range"in v&&Array.isArray(v.range)){let k=v.range;p.set(m,_n(k,r))}if((0,Se.isSeq)(v)){let k=[];for(let w of v.items)w&&typeof w=="object"&&"range"in w&&Array.isArray(w.range)&&k.push(_n(w.range,r));k.length>0&&f.set(m,k)}}u.size>0&&n.properties.set(i,u),p.size>0&&n.propertyValues.set(i,p),f.size>0&&n.valueListItems.set(i,f);let h=HP(s.value,r,i);h.length>0&&n.importPackages.set(i,h)}}return n}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,n){for(let[r,a]of this.entityBlocks)if(Mf(a,e,n))return r}findPropertyAtPosition(e,n){let r=this.findEntityAtPosition(e,n);if(!r)return;let a=this.properties.get(r),s=this.propertyValues.get(r);if(!a&&!s)return{entityName:r};let i,o;if(s)for(let[l,c]of s)Mf(c,e,n)&&(!o||Xv(c,o))&&(i=l,o=c);if(a)for(let[l,c]of a)Mf(c,e,n)&&(!o||Xv(c,o))&&(i=l,o=c);return i?{entityName:r,propertyName:i}:{entityName:r}}getPropertyPosition(e,n){return this.properties.get(e)?.get(n)}getPropertyValuePosition(e,n){return this.propertyValues.get(e)?.get(n)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[n,r]of this.importPackages)for(let a of r)e.push({entityName:n,entry:a});return e}findPropertySourceName(e,n){let r=this.properties.get(e);if(r){if(r.has(n))return n;for(let a of r.keys()){let s=a.lastIndexOf(".");if((s===-1?a:a.substring(s+1))===n)return a}}}getListItemPosition(e,n,r){let a=this.valueListItems.get(e)?.get(n);if(!(!a||r<0||r>=a.length))return a[r]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,n){this.nestedKeys.set(e,n)}setNestedValuePosition(e,n){this.nestedValues.set(e,n)}getMostSpecificPosition(e,n,r){if(e){if(n!==void 0){if(r!==void 0){let i=this.getListItemPosition(e,n,r);if(i)return i}let a=this.getPropertyValuePosition(e,n);if(a)return a;let s=this.getPropertyPosition(e,n);if(s)return s}return this.getEntityPosition(e)}}};function HP(t,e,n){let r=[];if(!(0,Se.isMap)(t))return r;let a=t.items.find(s=>(0,Se.isPair)(s)&&(0,Se.isScalar)(s.key)&&String(s.key.value)==="imports");if(!a||!(0,Se.isPair)(a)||!(0,Se.isSeq)(a.value))return r;for(let[s,i]of a.value.items.entries()){if(!(0,Se.isMap)(i))continue;let o=i.items.find(u=>(0,Se.isPair)(u)&&(0,Se.isScalar)(u.key)&&String(u.key.value)==="publisher");if(!o||!(0,Se.isPair)(o)||!(0,Se.isScalar)(o.value))continue;let l=String(o.value.value),c=i.items.find(u=>(0,Se.isPair)(u)&&(0,Se.isScalar)(u.key)&&String(u.key.value)==="packages");if(!(!c||!(0,Se.isPair)(c)||!(0,Se.isSeq)(c.value)))for(let[u,p]of c.value.items.entries()){if(!(0,Se.isMap)(p))continue;let f=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="package");if(!f||!(0,Se.isPair)(f)||!(0,Se.isScalar)(f.value)||!f.value.range)continue;let h=String(f.value.value),g=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="version"),m=g&&(0,Se.isPair)(g)&&(0,Se.isScalar)(g.value)?String(g.value.value):"",y=p.items.find(w=>(0,Se.isPair)(w)&&(0,Se.isScalar)(w.key)&&String(w.key.value)==="alias"),v=y&&(0,Se.isPair)(y)&&(0,Se.isScalar)(y.value)?String(y.value.value):void 0,k=v!==void 0?{publisher:l,package_:h,version:m,alias:v,position:_n(f.value.range,e)}:{publisher:l,package_:h,version:m,position:_n(f.value.range,e)};g&&(0,Se.isPair)(g)&&(0,Se.isScalar)(g.value)&&g.value.range&&(k.versionPosition=_n(g.value.range,e)),k.path=[n,"imports",s,"packages",u],r.push(k)}}return r}function Mf(t,e,n){return!(e<t.line||e>t.endLine||e===t.line&&n<t.column||e===t.endLine&&n>t.endColumn)}function Xv(t,e){let n=t.endLine-t.line,r=e.endLine-e.line;if(n!==r)return n<r;let a=t.endLine===t.line?t.endColumn-t.column:Number.MAX_SAFE_INTEGER,s=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return a<s}function Df(t,e,n,r){if((0,Se.isMap)(t)){for(let a of t.items){if(!(0,Se.isPair)(a)||!(0,Se.isScalar)(a.key))continue;let s=String(a.key.value),i=[...e,s],o=JSON.stringify(i);a.key.range&&r.setNestedKeyPosition(o,_n(a.key.range,n));let l=a.value,c=Qv(l);c&&r.setNestedValuePosition(o,_n(c,n)),Df(l,i,n,r)}return}if((0,Se.isSeq)(t)){for(let a=0;a<t.items.length;a++){let s=t.items[a],i=[...e,a],o=JSON.stringify(i),l=Qv(s);l&&r.setNestedValuePosition(o,_n(l,n)),Df(s,i,n,r)}return}}function Qv(t){if(!t||typeof t!="object"||!("range"in t))return;let e=t.range;return Array.isArray(e)&&e.length>=3?e:void 0}function _n(t,e){let n=e.linePos(t[0]),r=e.linePos(t[2]);return{line:n.line-1,column:n.col-1,endLine:r.line-1,endColumn:r.col-1}}function WP(t,e){let n=ew(e,t.line,t.column),r=ew(e,t.endLine,t.endColumn);if(n<0||r<0)return;let a=e.substring(n,r);return Fs(a).map(s=>{let i=Zv(e,n+s.startOffset),o=Zv(e,n+s.endOffset);return{line:i.line,column:i.column,endLine:o.line,endColumn:o.column}})}function Zv(t,e){let n=0,r=0;for(let a=0;a<e&&a<t.length;a++)t[a]===`
|
|
175
|
+
`&&(n++,r=a+1);return{line:n,column:e-r}}function ew(t,e,n){let r=0,a=0;for(let s=0;s<t.length;s++){if(r===e)return Math.min(a+n,t.length);t[s]===`
|
|
176
|
+
`&&(r++,a=s+1)}return r===e?Math.min(a+n,t.length):-1}function rw(t,e,n){let r=[];for(let a of t){if(!(a instanceof V)||typeof a.sourceKey!="string")continue;let s=[a.sourceKey],i=xe(a);i&&r.push({role:"subject",uri:i,range:_i(e.getEntityPosition(a.sourceKey),s,"key"),path:s}),Ff(a.statement,s,e,n,r)}return r}function Ff(t,e,n,r,a){for(let s of t){if(!(s instanceof Gn)||s.sourceKey===void 0)continue;let i=[...e,s.sourceKey],o=s.predicate?.subject;if(o&&a.push({role:"predicate",uri:o,range:_i(n.getNodeKeyPosition(i),i,"key"),path:i}),s instanceof de)a.push({role:"reference",uri:s.object.subject,range:_i(n.getNodeValuePosition(i),i,"value"),path:i});else if(s instanceof Rt)tw(s.links,i,n,r,a);else if(s instanceof Ae)s.object&&Ff(s.object.statement,i,n,r,a);else if(s instanceof he)for(let l of s.object??[]){if(!(l instanceof D||l instanceof te||l instanceof xt)||l.sourceKey===void 0)continue;let c=[...i,l.sourceKey];l instanceof D?a.push({role:"reference",uri:l.subject,range:_i(n.getNodeValuePosition(c),c,"value"),path:c}):l instanceof te?Ff(l.statement,c,n,r,a):l.links&&tw(l.links,c,n,r,a)}}}function tw(t,e,n,r,a){if(r===void 0||t.length===0)return;let s=WP(_i(n.getNodeValuePosition(e),e,"value"),r);if(!s||s.length!==t.length)throw new Error(`sourceSymbols: the prose value at ${JSON.stringify(e)} has ${t.length} resolved [[reference]](s) but ${s?.length??0} in its source text \u2014 the source text is not the text this document was parsed from.`);t.forEach((i,o)=>{i.target&&a.push({role:"reference",uri:i.target.subject,range:s[o],path:e})})}function _i(t,e,n){if(!t)throw new Error(`sourceSymbols: no source ${n} position for ${JSON.stringify(e)}. The object model has a node the position index does not \u2014 the positions were not built from the text this document was parsed from.`);return t}var Ci=class iw{static parse(e,n){let r=e.trim();if(!r)return null;let a,s,i=r.match(/^https?:\/\/([^/]+)(\/.*)?$/);if(i)a=i[1],s=i[2]??"/";else if(r.startsWith("/")){if(!n)return null;a=n,s=r}else return r.includes("/")?null:{kind:"publisher",publisher:r};let o=s.split("/").filter(l=>l.length>0);if(o.length===0)return{kind:"publisher",publisher:a};if(o.length===1)return{kind:"package",publisher:a,package_:o[0],versionSpec:{kind:"any"}};if(o.length===2){let l=aw(o[1]);return l?{kind:"package",publisher:a,package_:o[0],versionSpec:l}:{kind:"resource",publisher:a,package_:o[0],versionSpec:{kind:"any"},name:o[1]}}if(o.length===3){let l=aw(o[1]);return l?{kind:"resource",publisher:a,package_:o[0],versionSpec:l,name:o[2]}:null}return null}static format(e,n){let r=YP(e);return n?.publisherFirst?`/${e.publisher}${r}`:n?.pathOnly?r:`${n?.scheme??"https"}://${e.publisher}${r}`}static formatResourceUrl(e,n,r){let a=GP(n,e.version),s={kind:"resource",publisher:e.publisher,package_:e.package_,versionSpec:a,name:e.name},i=r?.contextPublisher!==void 0&&r.contextPublisher===e.publisher;return iw.format(s,{...r?.scheme!==void 0?{scheme:r.scheme}:{},...r?.publisherFirst?{publisherFirst:!0}:i?{pathOnly:!0}:{}})}},zP=/^\d+(\.\d+){0,2}$/;function aw(t){if(!zP.test(t))return null;let e=t.split(".");return e.length===1?{kind:"major-pin",major:Number(e[0])}:e.length===2?{kind:"minor-pin",major:Number(e[0]),minor:Number(e[1])}:{kind:"exact",major:Number(e[0]),minor:Number(e[1]),patch:Number(e[2])}}function YP(t){switch(t.kind){case"publisher":return"/";case"package":return`/${t.package_}${sw(t.versionSpec)}`;case"resource":return`/${t.package_}${sw(t.versionSpec)}/${t.name}`}}function sw(t){switch(t.kind){case"any":return"";case"major-pin":return`/${t.major}`;case"minor-pin":return`/${t.major}.${t.minor}`;case"exact":return`/${t.major}.${t.minor}.${t.patch}`}}function GP(t,e){return t==="*"||!e?{kind:"any"}:t==="^"?{kind:"major-pin",major:e.major}:t==="~"?{kind:"minor-pin",major:e.major,minor:e.minor}:{kind:"exact",major:e.major,minor:e.minor,patch:e.patch}}var le="kanonak.org/transformations",st="kanonak.org/math";var Be=class extends Error{},JP=t=>({kind:"unary",operand:t}),cw=(t,e)=>({kind:"binary",left:t,right:e}),ea=cw("arithLeft","arithRight"),ji=cw("compareLeft","compareRight"),or=JP("value"),uw={[`${le}/Add`]:ea,[`${le}/Subtract`]:ea,[`${le}/Multiply`]:ea,[`${le}/Divide`]:ea,[`${st}/Power`]:ea,[`${st}/Modulo`]:ea,[`${st}/Minimum`]:ea,[`${st}/Maximum`]:ea,[`${le}/Abs`]:or,[`${le}/Negate`]:or,[`${st}/Exp`]:or,[`${st}/Ln`]:or,[`${st}/Log10`]:or,[`${st}/Sqrt`]:or,[`${st}/Floor`]:or,[`${st}/Ceil`]:or,[`${st}/Round`]:or,[`${st}/Sign`]:or,[`${le}/Equals`]:ji,[`${le}/GreaterThan`]:ji,[`${le}/LessThan`]:ji,[`${le}/GreaterThanOrEqual`]:ji,[`${le}/LessThanOrEqual`]:ji,[`${le}/And`]:{kind:"nary",operands:"operands"},[`${le}/Or`]:{kind:"nary",operands:"operands"},[`${st}/Clip`]:{kind:"ternary",a:"clipValue",b:"clipLower",c:"clipUpper"}},Uf=`${le}/Not`,Bf=`${le}/IsAtLeast`,pw=`${le}/Dominates`,Hf=`${le}/Contains`,Wf=`${le}/IsSet`,zf=`${le}/ListItemAt`,Yf=`${le}/Matches`,fw=`${le}/IntegerLiteral`,dw=`${le}/DecimalLiteral`,hw=`${le}/BooleanLiteral`,mw=`${le}/StringLiteral`,Gf=`${le}/UriLiteral`,gw={[`${le}/ForEach`]:"emit",[`${le}/ListMap`]:"mapBody",[`${le}/Filter`]:"predicate"},yw={[`${le}/IsString`]:t=>typeof t=="string",[`${le}/IsNumber`]:t=>typeof t=="number",[`${le}/IsReference`]:t=>typeof t=="object"&&!Array.isArray(t),[`${le}/IsList`]:t=>Array.isArray(t)};function XP(t,e){if(e===0)throw new Be("Modulo by zero");return t-e*Math.floor(t/e)}function QP(t){return t<0?-Math.round(-t):Math.round(t)}var qf=t=>t!==0,pn=t=>t?1:0;function Ml(t,e){if(!t)throw new Be(e)}function Cn(t,e){if(typeof t!="number")throw new Be(`${e} requires a numeric operand, got ${kw(t)}`);return t}function kw(t){return typeof t=="number"?"number":typeof t=="string"?"string":Array.isArray(t)?"list":"ref"}var ZP={[`${le}/Abs`]:t=>Math.abs(t),[`${le}/Negate`]:t=>-t,[`${st}/Exp`]:t=>Math.exp(t),[`${st}/Ln`]:t=>(Ml(t>0,"Ln of a non-positive number"),Math.log(t)),[`${st}/Log10`]:t=>(Ml(t>0,"Log10 of a non-positive number"),Math.log10(t)),[`${st}/Sqrt`]:t=>(Ml(t>=0,"Sqrt of a negative number"),Math.sqrt(t)),[`${st}/Floor`]:t=>Math.floor(t),[`${st}/Ceil`]:t=>Math.ceil(t),[`${st}/Round`]:QP,[`${st}/Sign`]:t=>Math.sign(t)},eT={[`${le}/Add`]:(t,e)=>t+e,[`${le}/Subtract`]:(t,e)=>t-e,[`${le}/Multiply`]:(t,e)=>t*e,[`${le}/Divide`]:(t,e)=>(Ml(e!==0,"Divide by zero"),t/e),[`${st}/Power`]:(t,e)=>Math.pow(t,e),[`${st}/Modulo`]:XP,[`${st}/Minimum`]:(t,e)=>Math.min(t,e),[`${st}/Maximum`]:(t,e)=>Math.max(t,e)},tT={[`${le}/GreaterThan`]:(t,e)=>pn(t>e),[`${le}/LessThan`]:(t,e)=>pn(t<e),[`${le}/GreaterThanOrEqual`]:(t,e)=>pn(t>=e),[`${le}/LessThanOrEqual`]:(t,e)=>pn(t<=e)};function ow(t,e){return typeof t=="number"&&typeof e=="number"||typeof t=="string"&&typeof e=="string"?t===e:typeof t=="object"&&typeof e=="object"&&!Array.isArray(t)&&!Array.isArray(e)?t.ref===e.ref:!1}function nT(t){switch(t.type){case fw:return Number(t.integerLiteral);case dw:return Number(t.decimalLiteral);case hw:return pn(t.booleanLiteral===!0||t.booleanLiteral==="true");case mw:{let e=t.stringLiteral;if(typeof e!="string")throw new Be("StringLiteral is missing stringLiteral");return e}case Gf:{let e=t.refTo;if(typeof e!="string"||e.length===0)throw new Be("UriLiteral is missing refTo");return{ref:e}}default:return}}function rT(t){if(typeof t=="string")return t;if(typeof t=="number")return String(t);if(Array.isArray(t))throw new Be("Join cannot stringify a nested list");return t.ref.slice(t.ref.lastIndexOf("/")+1)}function aT(t){return typeof t=="string"||Array.isArray(t)?t.length>0:!0}var bw={[`${le}/Count`]:t=>t.length,[`${le}/Sum`]:t=>{let e=0;for(let n of t)e+=Cn(n,"Sum");return e},[`${le}/Min`]:t=>{if(t.length===0)throw new Be("Min on an empty list is undefined; guard with IsSet");let e=Cn(t[0],"Min");for(let n=1;n<t.length;n++){let r=Cn(t[n],"Min");r<e&&(e=r)}return e},[`${le}/Max`]:t=>{if(t.length===0)throw new Be("Max on an empty list is undefined; guard with IsSet");let e=Cn(t[0],"Max");for(let n=1;n<t.length;n++){let r=Cn(t[n],"Max");r>e&&(e=r)}return e},[`${le}/Average`]:t=>{if(t.length===0)throw new Be("Average on an empty list is undefined; guard with IsSet");let e=0;for(let n of t)e+=Cn(n,"Average");return e/t.length},[`${le}/Join`]:(t,e)=>{let n=typeof e.separator=="string"?e.separator:"";return t.map(rT).join(n)},[`${le}/Reverse`]:t=>[...t].reverse()};function vw(t){ww(t)}function ww(t){let e=o=>{throw new Be(`Matches pattern is outside the pinned regex subset (${o}): ${t}`)},n="",r=t,a=/^\(\?([ims]+)\)/.exec(t);a&&(n=a[1],new Set(n).size!==n.length&&e(`repeated flag in prefix (?${n})`),r=t.slice(a[0].length));let s=new Set(["d","D","w","W","s","S","b","B","n","r","t","f","v",".","*","+","?","(",")","[","]","{","}","|","^","$","\\","/"]),i=!1;for(let o=0;o<r.length;o++){let l=r[o];if(l==="\\"){let c=r[o+1];if(c===void 0&&e("trailing backslash"),c==="x"){let u=r.slice(o+2,o+4);/^[0-9a-fA-F]{2}$/.test(u)||e("\\x escape must be \\xHH"),r[o+2]==="{"&&e("\\x{\u2026} escape"),o+=3;continue}if(c>="0"&&c<="9"&&e(`backreference or octal escape \\${c}`),(c==="p"||c==="P")&&e(`unicode property class \\${c}{\u2026}`),c==="k"&&e("named backreference \\k"),c==="u"&&e("\\u escape"),c==="-"){i||e("\\- outside a character class"),o++;continue}(c==="b"||c==="B")&&i&&e(`\\${c} inside a character class`),(c==="D"||c==="W"||c==="S")&&i&&e(`\\${c} inside a character class`),s.has(c)||e(`escape \\${c}`),o++;continue}if(i){if(l==="]"){i=!1;continue}l==="&"&&r[o+1]==="&"&&e("character-class intersection &&"),l==="["&&r[o+1]===":"&&e("POSIX class [[:\u2026:]]");continue}if(l==="["){i=!0;continue}if(l==="("&&r[o+1]==="?"){r[o+2]!==":"&&e(`group construct (?${r[o+2]??""}`),o+=2;continue}l==="{"&&(/^\{\d+(,\d*)?\}/.test(r.slice(o))||e("bare '{' that is not a quantifier (write \\{)"))}return i&&e("unterminated character class"),{flags:n,body:r}}var sT={d:"[0-9]",D:"[^0-9]",w:"[0-9A-Za-z_]",W:"[^0-9A-Za-z_]",s:"[ \\t\\n\\r\\f\\x0B]",S:"[^ \\t\\n\\r\\f\\x0B]"},iT={d:"0-9",w:"0-9A-Za-z_",s:" \\t\\n\\r\\f\\x0B"};function oT(t,e){let n="",r=!1;for(let a=0;a<t.length;a++){let s=t[a];if(s==="\\"){let i=t[a+1],l=(r?iT:sT)[i];l!==void 0?n+=l:n+=s+i,a++;continue}if(!r&&s==="."&&!e){n+="[^\\n]";continue}!r&&s==="["?r=!0:r&&s==="]"&&(r=!1),n+=s}return n}function $w(t,e){let{flags:n,body:r}=ww(e),a;try{a=new RegExp(oT(r,n.includes("s")),n+"u")}catch{throw new Be(`Matches pattern does not compile: ${e}`)}return a.test(t)}function Sw(t,e){return $w(t,e)}function lw(t,e,n){if(t.type===Gf){let r=t.refTo;if(typeof r!="string"||r.length===0)throw new Be("UriLiteral is missing refTo");return r}if(!n?.resolveRef)throw new Be(`No resolveRef supplied for identity leaf '${t.type}'`);return n.resolveRef(t,e)}function lT(t,e,n){let r=t.viaProperty;if(typeof r!="string"||r.length===0)throw new Be(`${t.type} is missing viaProperty`);let a=lw(Bt(t,"compareLeft"),e,n),s=lw(Bt(t,"compareRight"),e,n),i=n?.closures?.[r];if(!i)throw new Be(`No closure supplied for ordering property '${r}'`);return{value:pn(a===s?t.type===Bf:(i[a]??[]).includes(s)),left:a,right:s}}var cT=new Set([...Object.keys(uw),...Object.keys(bw),...Object.keys(gw),...Object.keys(yw),Uf,Bf,pw,Hf,Wf,zf,Yf,fw,dw,hw,mw,Gf]);function Aw(t){return cT.has(t)}function uT(t,e){for(let n=t.length-1;n>=0;n--)if(t[n].name===e)return t[n].value}function Dl(t,e,n,r){return Kn(t,e,n,r,[])}function Kf(t,e,n,r,a){let s=Kn(Bt(t,"source"),e,n,r,a);return Array.isArray(s)?s:[s]}function Kn(t,e,n,r,a){let s=(f,h)=>Kn(f,h,n,r,a),i=(f,h,g)=>Cn(s(f,h),g),o=uw[t.type];if(o)switch(o.kind){case"unary":{let f=i(Bt(t,o.operand),e,t.type);return ZP[t.type](f)}case"binary":{let f=s(Bt(t,o.left),e),h=s(Bt(t,o.right),e);if(t.type===`${le}/Equals`)return pn(ow(f,h));let g=tT[t.type];return g?typeof f!="number"||typeof h!="number"?0:g(f,h):eT[t.type](Cn(f,t.type),Cn(h,t.type))}case"nary":{let f=t[o.operands];if(!Array.isArray(f))throw new Be(`${t.type} expects an '${o.operands}' list`);let h=t.type===`${le}/And`;for(let g of f){let m=qf(Cn(s(g,e),t.type));if(h&&!m)return 0;if(!h&&m)return 1}return pn(h)}case"ternary":{let f=i(Bt(t,o.a),e,t.type),h=i(Bt(t,o.b),e,t.type),g=i(Bt(t,o.c),e,t.type);return Math.min(Math.max(f,h),g)}}if(t.type===Uf)return pn(!qf(Cn(s(Bt(t,"operand"),e),t.type)));if(t.type===Bf||t.type===pw)return lT(t,e,r).value;let l=bw[t.type];if(l)return l(Kf(t,e,n,r,a),t);let c=gw[t.type];if(c){let f=t.loopVar;if(typeof f!="string"||f.length===0)throw new Be(`${t.type} is missing loopVar`);let h=Kf(t,e,n,r,a),g=Bt(t,c),m=[];for(let y of h){let v=[...a,{name:f,value:y}],k=Kn(g,e,n,r,v);t.type===`${le}/Filter`?qf(Cn(k,"Filter predicate"))&&m.push(y):t.type===`${le}/ForEach`&&Array.isArray(k)?m.push(...k):m.push(k)}return m}if(t.type===Hf){let f=Kn(Bt(t,"haystack"),e,n,r,a),h=Kn(Bt(t,"needle"),e,n,r,a),g=Array.isArray(f)?f:[f];return pn(g.some(m=>ow(m,h)))}if(t.type===Wf)return pn(aT(Kn(Bt(t,"checkExpr"),e,n,r,a)));if(t.type===zf){let f=Kf(t,e,n,r,a),h=Kn(Bt(t,"itemIndex"),e,n,r,a);if(typeof h!="number"||!Number.isInteger(h)||h<0)throw new Be("ListItemAt itemIndex must be a non-negative integer");return h<f.length?f[h]:[]}if(t.type===Yf){let f=Kn(Bt(t,"matchSource"),e,n,r,a);if(typeof f!="string")throw new Be(`Matches requires a string matchSource, got ${kw(f)}`);let h=t.pattern;if(typeof h!="string")throw new Be("Matches is missing pattern");return pn($w(f,h))}let u=yw[t.type];if(u)return pn(u(Kn(Bt(t,"kindCheck"),e,n,r,a)));let p=nT(t);if(p!==void 0)return p;if(t.type===`${le}/VarRef`&&typeof t.varName=="string"){let f=uT(a,t.varName);if(f!==void 0)return f}return n(t,e,(f,h)=>Kn(f,h,n,r,a))}function Bt(t,e){let n=t[e];if(n==null||typeof n!="object"||Array.isArray(n))throw new Be(`${t.type} is missing operand '${e}'`);return n}var p3={[Uf]:["operand"],[zf]:["source","itemIndex"],[Hf]:["haystack","needle"],[Wf]:["checkExpr"],[Yf]:["matchSource"],[`${le}/Count`]:["source"],[`${le}/Sum`]:["source"],[`${le}/Min`]:["source"],[`${le}/Max`]:["source"],[`${le}/Average`]:["source"],[`${le}/Join`]:["source"],[`${le}/Reverse`]:["source"],[`${le}/IsString`]:["kindCheck"],[`${le}/IsNumber`]:["kindCheck"],[`${le}/IsReference`]:["kindCheck"],[`${le}/IsList`]:["kindCheck"]};var De=class extends Error{constructor(t,e){super(`${t} (at ${e})`),this.path=e}path};function us(t,e){let n=t.name,r=ET(e),a={catalog:e,depth:0};if(Y(t,$.InstanceTransformation))return pT(t,n,a,r);if(Y(t,$.SetTransformation))return fT(t,n,a,r);throw new De("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function pT(t,e,n,r){return{kind:"instance",name:t.name,inputPattern:g$(t,e),rule:Gl(t,$.rule,`${e}.rule`,n),artifactName:Gl(t,$.artifactName,`${e}.artifactName`,n),outputs:y$(t,`${e}.outputs`),overrides:k$(t,`${e}.formatOverrides`,n),fragments:r}}function fT(t,e,n,r){let a=_r(t,$.partitionBy);return{kind:"set",name:t.name,inputPattern:g$(t,e),rule:Gl(t,$.rule,`${e}.rule`,n),artifactName:Gl(t,$.artifactName,`${e}.artifactName`,n),outputs:y$(t,`${e}.outputs`),overrides:k$(t,`${e}.formatOverrides`,n),partitionBy:a,fragments:r}}function g$(t,e){let n=b$(t,$.inputPattern);if(!n)throw new De("inputPattern is required",e);return dT(n,`${e}.inputPattern`)}function dT(t,e){let n=_r(t,$.matchesClass);if(!n)throw new De("matchesClass is required",e);let r=[];for(let i of Wn(t,$.requires))if(i instanceof de)r.push(cd(i.object.subject));else if(i instanceof he)for(let o of i.object)o instanceof D&&r.push(cd(o.subject));let a=[],s=0;for(let i of Wn(t,$.sortBy))if(i instanceof he)for(let o of i.object)o instanceof te&&a.push(xw(o,`${e}.sortBy[${s++}]`));else i instanceof Ae&&a.push(xw(i.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:r,sortBy:a}}function xw(t,e){let n=_r(t,$.byProperty);if(!n)throw new De("SortKey.byProperty is required",e);let r=_r(t,$.order);if(!r)throw new De("SortKey.order is required",e);if($e(r,$.ascending))return{byProperty:n,order:"ascending"};if($e(r,$.descending))return{byProperty:n,order:"descending"};throw new De(`SortKey.order must reference tx.ascending or tx.descending; got ${r.publisher}/${r.package_}/${r.name}`,e)}function Gl(t,e,n,r){let a=gd(t,e,n,r);if(!a)throw new De("expression is required",n);return Nn(a,n,r)}function md(t,e,n,r){return bt(t,e).map((a,s,i)=>{let o=i.length>1||a.fromList?`${n}[${s}]`:n;if(a.item instanceof te)return a.item;if(a.item instanceof D){let l=ge(r.catalog,a.item.subject);if(!l)throw new De(`references '${T(a.item.subject)}', which does not resolve in the catalog`,o);return l}throw new De(`expects a node, not the literal ${JSON.stringify(a.item.value)}`,o)})}function gd(t,e,n,r){let a=md(t,e,n,r);if(a.length>1)throw new De(`expects one expression, has ${a.length}`,n);return a[0]}function Nn(t,e,n){if(t instanceof V){let r=xe(t),a=r?T(r):`${t.namespace}/${t.name}`,s=n.visiting??new Set;if(s.has(a))throw new De(`named expressions form a cycle: ${[...s,a].join(" -> ")}`,e);return Ew(t,a,{...n,visiting:new Set([...s,a])})}return Ew(t,e,n)}function Ew(t,e,n){if(Y(t,$.StringLiteral))return{kind:"string-literal",value:rn(t,$.stringLiteral,e)};if(Y(t,$.IntegerLiteral))return{kind:"integer-literal",value:Nw(t,$.integerLiteral,e)};if(Y(t,$.DecimalLiteral))return{kind:"decimal-literal",value:Nw(t,$.decimalLiteral,e)};if(Y(t,$.BooleanLiteral))return{kind:"boolean-literal",value:jT(t,$.booleanLiteral,e)};if(Y(t,$.VarRef))return{kind:"var-ref",varName:rn(t,$.varName,e)};if(Y(t,$.PropertyRead))return{kind:"property-read",source:ne(t,$.readSource,`${e}.readSource`,n),readProp:na(t,$.readProp,e,"readProp")};if(Y(t,$.Traverse))return{kind:"traverse",source:ne(t,$.traverseSource,`${e}.traverseSource`,n),through:na(t,$.through,e,"through"),step:ne(t,$.step,`${e}.step`,n)};if(Y(t,$.BuildAstNode))return{kind:"build-ast-node",astClass:na(t,$.astClass,e,"astClass"),set:kT(t,`${e}.set`,n)};if(Y(t,$.When))return{kind:"when",condition:ne(t,$.condition,`${e}.condition`,n),thenBuild:ne(t,$.thenBuild,`${e}.thenBuild`,n),elseBuild:yT(t,$.elseBuild,`${e}.elseBuild`,n)};if(Y(t,$.Concat))return{kind:"concat",parts:Jf(t,$.parts,`${e}.parts`,n)};if(Y(t,$.Fallback))return{kind:"fallback",primary:ne(t,$.primary,`${e}.primary`,n),alternate:ne(t,$.alternate,`${e}.alternate`,n)};if(Y(t,$.UriName))return{kind:"uri-name",source:ne(t,$.uriNameOf,`${e}.uriNameOf`,n)};if(Y(t,$.UriPublisher))return{kind:"uri-publisher",source:ne(t,$.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(Y(t,$.UriPackage))return{kind:"uri-package",source:ne(t,$.uriPackageOf,`${e}.uriPackageOf`,n)};if(Y(t,$.UriVersion))return{kind:"uri-version",source:ne(t,$.uriVersionOf,`${e}.uriVersionOf`,n)};if(Y(t,$.SubjectUri))return{kind:"subject-uri",source:ne(t,$.subjectOf,`${e}.subjectOf`,n)};if(Y(t,$.UriLiteral))return{kind:"uri-literal",refTo:na(t,$.refTo,e,"refTo")};if(Y(t,$.DisplayLabel))return{kind:"display-label",labelTarget:na(t,$.labelTarget,e,"labelTarget"),labelSource:na(t,$.labelSource,e,"labelSource")};if(Y(t,$.ResolveRef))return{kind:"resolve-ref",source:ne(t,$.resolveSource,`${e}.resolveSource`,n)};if(Y(t,$.Normalize))return{kind:"normalize",source:ne(t,$.normSource,`${e}.normSource`,n),normKind:vT(t,e)};if(Y(t,$.UnescapedString))return{kind:"unescaped-string",source:ne(t,$.unescapedSource,`${e}.unescapedSource`,n)};if(Y(t,$.RenderMarkdown))return{kind:"render-markdown",source:ne(t,$.renderSource,`${e}.renderSource`,n),readProp:na(t,$.renderProp,e,"renderProp"),format:wT(t,e)};if(Y(t,$.IsSet))return{kind:"is-set",check:ne(t,$.checkExpr,`${e}.checkExpr`,n)};if(Y(t,$.CallFragment))return AT(t,e,n);if(Y(t,$.Join))return{kind:"join",source:ne(t,$.source,`${e}.source`,n),separator:rn(t,$.separator,e)};if(Y(t,$.Count))return{kind:"count",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Sum))return{kind:"sum",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Min))return{kind:"min",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Max))return{kind:"max",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.Average))return{kind:"average",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.ForEach))return{kind:"for-each",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),emit:ne(t,$.emit,`${e}.emit`,n)};if(Y(t,$.ListMap))return{kind:"list-map",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),mapBody:ne(t,$.mapBody,`${e}.mapBody`,n)};if(Y(t,$.Filter))return{kind:"filter",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),predicate:ne(t,$.predicate,`${e}.predicate`,n)};if(Y(t,$.PartitionBy))return{kind:"partition-by",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),partitionKey:ne(t,$.partitionKey,`${e}.partitionKey`,n)};if(Y(t,$.DistinctBy))return{kind:"distinct-by",source:ne(t,$.source,`${e}.source`,n),loopVar:rn(t,$.loopVar,e),distinctKey:ne(t,$.distinctKey,`${e}.distinctKey`,n)};if(Y(t,$.AllStatements))return{kind:"all-statements",source:ne(t,$.statementsOf,`${e}.statementsOf`,n)};if(Y(t,$.StatementPredicate))return{kind:"statement-predicate",source:ne(t,$.predicateOf,`${e}.predicateOf`,n)};if(Y(t,$.StatementValue))return{kind:"statement-value",source:ne(t,$.valueOf,`${e}.valueOf`,n)};if(Y(t,$.DateFormat))return{kind:"date-format",source:ne(t,$.dateSource,`${e}.dateSource`,n),format:ST(t,e)};if(Y(t,$.NumberFormat)){let a=od(t,$.fractionDigits);if(a!==void 0&&(!Number.isInteger(a)||a<0||a>20))throw new De(`fractionDigits must be an integer between 0 and 20; got ${a}`,e);let s=sa(t,$.currencyCode);return{kind:"number-format",source:ne(t,$.numberSource,`${e}.numberSource`,n),style:$T(t,e),...a!==void 0?{fractionDigits:a}:{},...s!==void 0?{currencyCode:s}:{}}}let r=gT.find(a=>Y(t,a.type));if(r){let a=T(r.type);if(!Aw(a))throw new De(`${a} is a numeric operator the expression runtime does not evaluate`,e);return{kind:"numeric-op",type:a,name:r.type.name,operands:r.operands.map(s=>({name:s.name,expr:ne(t,s,`${e}.${s.name}`,n)}))}}if(Y(t,$.Reverse))return{kind:"reverse",source:ne(t,$.source,`${e}.source`,n)};if(Y(t,$.WindowedMap)){let a=od(t,$.windowSize);if(a===void 0||!Number.isInteger(a)||a<1)throw new De("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:ne(t,$.source,`${e}.source`,n),windowSize:a,windowVar:rn(t,$.windowVar,e),windowBody:ne(t,$.windowBody,`${e}.windowBody`,n)}}if(Y(t,$.PairwiseMap))return{kind:"pairwise-map",source:ne(t,$.source,`${e}.source`,n),firstVar:rn(t,$.firstVar,e),secondVar:rn(t,$.secondVar,e),pairBody:ne(t,$.pairBody,`${e}.pairBody`,n)};if(Y(t,$.Scan))return{kind:"scan",source:ne(t,$.source,`${e}.source`,n),initialState:ne(t,$.initialState,`${e}.initialState`,n),stateVar:rn(t,$.stateVar,e),elementVar:rn(t,$.elementVar,e),accumulate:ne(t,$.accumulate,`${e}.accumulate`,n)};if(Y(t,$.ListItemAt))return{kind:"list-item-at",source:ne(t,$.source,`${e}.source`,n),itemIndex:ne(t,$.itemIndex,`${e}.itemIndex`,n)};if(Y(t,$.Equals))return{kind:"equals",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.GreaterThan))return{kind:"greater-than",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.LessThan))return{kind:"less-than",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.LessThanOrEqual))return{kind:"less-than-or-equal",left:ne(t,$.compareLeft,`${e}.compareLeft`,n),right:ne(t,$.compareRight,`${e}.compareRight`,n)};if(Y(t,$.Not))return{kind:"not",operand:ne(t,$.operand,`${e}.operand`,n)};if(Y(t,$.And))return{kind:"and",operands:Jf(t,$.operands,`${e}.operands`,n)};if(Y(t,$.Or))return{kind:"or",operands:Jf(t,$.operands,`${e}.operands`,n)};if(Y(t,$.Contains))return{kind:"contains",haystack:ne(t,$.haystack,`${e}.haystack`,n),needle:ne(t,$.needle,`${e}.needle`,n)};if(Y(t,$.Matches)){let a=rn(t,$.pattern,e);try{vw(a)}catch(s){throw s instanceof Be?new De(s.message,`${e}.pattern`):s}return{kind:"matches",source:ne(t,$.matchSource,`${e}.matchSource`,n),pattern:a}}if(Y(t,$.IsReference))return{kind:"is-reference",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsEmbedded))return{kind:"is-embedded",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsList))return{kind:"is-list",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsString))return{kind:"is-string",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsNumber))return{kind:"is-number",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.IsBoolean))return{kind:"is-boolean",check:ne(t,$.kindCheck,`${e}.kindCheck`,n)};if(Y(t,$.StatementObject))return{kind:"statement-object",source:ne(t,$.statementSource,`${e}.statementSource`,n)};if(Y(t,$.Let))return{kind:"let",bindName:rn(t,$.letName,e),bindValue:ne(t,$.letValue,`${e}.letValue`,n),body:ne(t,$.letBody,`${e}.letBody`,n)};if(Y(t,$.GetStatementByName))return{kind:"get-statement-by-name",inSubject:ne(t,$.inSubject,`${e}.inSubject`,n),byName:ne(t,$.byName,`${e}.byName`,n)};throw new De("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}var hT=[$.arithLeft,$.arithRight],mT=[$.value],gT=[...[$.Add,$.Subtract,$.Multiply,$.Divide,It.Power,It.Modulo,It.Minimum,It.Maximum].map(t=>({type:t,operands:hT})),...[$.Abs,$.Negate,It.Exp,It.Ln,It.Log10,It.Sqrt,It.Floor,It.Ceil,It.Round,It.Sign].map(t=>({type:t,operands:mT})),{type:It.Clip,operands:[It.clipValue,It.clipLower,It.clipUpper]}];function ne(t,e,n,r){let a=gd(t,e,n,r);if(!a)throw new De("child expression is required",n);return Nn(a,n,r)}function yT(t,e,n,r){let a=gd(t,e,n,r);if(a)return Nn(a,n,r)}function Jf(t,e,n,r){return md(t,e,n,r).map((a,s)=>Nn(a,`${n}[${s}]`,r))}function kT(t,e,n){return md(t,$.set,e,n).map((r,a)=>bT(r,`${e}[${a}]`,n))}function bT(t,e,n){return{field:na(t,$.field,e,"field"),value:ne(t,$.bindValue,`${e}.bindValue`,n)}}function vT(t,e){let n=_r(t,$.normKind);if(!n)throw new De("normKind is required",e);if($e(n,$.NORM_TRIM_END))return"trim-end";if($e(n,$.NORM_TO_UPPER))return"to-upper";if($e(n,$.NORM_TO_LOWER))return"to-lower";if($e(n,$.NORM_FIRST_CHAR))return"first-char";throw new De(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function wT(t,e){let n=_r(t,$.renderFormat);if(!n)throw new De("renderFormat is required",e);if($e(n,$.RENDER_HTML))return"html";if($e(n,$.RENDER_MARKDOWN))return"markdown";throw new De(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var _w=new Set(["decimal","percent","basis-points","currency","compact"]);function $T(t,e){let n=sa(t,$.numberStyle);if(n===void 0)throw new De("numberStyle is required",e);if(!_w.has(n))throw new De(`Unknown numberStyle "${n}"; supported: ${[..._w].join(", ")}`,e);return n}var Cw=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function ST(t,e){let n=sa(t,$.dateFormat);if(!n)throw new De("dateFormat is required",e);if(!Cw.has(n))throw new De(`Unknown dateFormat "${n}"; supported: ${[...Cw].join(", ")}`,e);return n}function AT(t,e,n){let r=_r(t,$.fragmentRef);if(!r)throw new De("fragmentRef is required",e);if(!_T(n.catalog,r))throw new De(`ExpressionFragment not found: ${r.publisher}/${r.package_}/${r.name}`,e);return{kind:"call-fragment",fragmentKey:xT(r)}}function xT(t){return`${t.publisher}/${t.package_}/${t.name}`}function ET(t){let e=new Map,n=[];for(let r of t){if(!(r instanceof V)||!Y(r,$.ExpressionFragment))continue;let a=b$(r,$.body);if(!a)continue;let s=(r.namespace||"").split("@")[0]||"",i=s.indexOf("/");if(i<0)continue;let o=s.substring(0,i),l=s.substring(i+1),c=`${o}/${l}/${r.name}`;n.push({key:c,subject:r,bodyEmb:a,pubPkgName:`${s}/${r.name}`})}for(let r of n){let a=Nn(r.bodyEmb,`fragment(${r.pubPkgName})`,{catalog:t,depth:0});e.set(r.key,a)}return e}function _T(t,e){for(let n of t)if(!(!(n instanceof V)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&Y(n,$.ExpressionFragment))return n}function y$(t,e){let n=new Set;for(let r of Wn(t,$.outputs))if(r instanceof de)n.add(r.object.subject.name);else if(r instanceof he)for(let a of r.object)a instanceof D&&n.add(a.subject.name);if(n.size===0)throw new De("outputs is required (at least one OutputFormat)",e);return n}function k$(t,e,n){let r=new Map,a=0;for(let s of Wn(t,$.formatOverrides))if(s instanceof he){for(let i of s.object)if(i instanceof te){let[o,l]=jw(i,`${e}[${a++}]`);r.set(o,l)}}else if(s instanceof Ae){let[i,o]=jw(s.object,`${e}[${a++}]`);r.set(i,o)}return r}function jw(t,e){let n=_r(t,$.formatTarget);if(!n)throw new De("formatTarget is required",e);let r=[];for(let o of Wn(t,$.metadataKeys))if(o instanceof Ce)r.push(o.object);else if(o instanceof he)for(let l of o.object){let c=l.value;typeof c=="string"&&r.push(c)}let a=new Map;for(let o of Wn(t,$.metadataRenames))if(o instanceof he){for(let l of o.object)if(l instanceof te){let c=sa(l,$.fromKey),u=sa(l,$.toKey);c&&u&&a.set(c,u)}}else if(o instanceof Ae){let l=o.object,c=sa(l,$.fromKey),u=sa(l,$.toKey);c&&u&&a.set(c,u)}let s=ld(t,$.trailingNewline),i=ld(t,$.omitWrapper);return[n.name,{metadataKeys:r.length>0?r:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:i}]}function CT(t){return t.predicate?.subject}function Wn(t,e){let n=[];for(let r of t.statement){let a=CT(r);a&&$e(a,e)&&n.push(r)}return n}function b$(t,e){for(let n of Wn(t,e))if(n instanceof Ae)return n.object}function _r(t,e){for(let n of Wn(t,e))if(n instanceof de)return cd(n.object.subject)}function sa(t,e){for(let n of Wn(t,e))if(n instanceof Ce)return n.object}function od(t,e){for(let n of Wn(t,e))if(n instanceof et)return n.object}function ld(t,e){for(let n of Wn(t,e))if(n instanceof Ge)return n.object}function rn(t,e,n){let r=sa(t,e);if(r===void 0)throw new De(`${e.name} (string) is required`,n);return r}function Nw(t,e,n){let r=od(t,e);if(r===void 0)throw new De(`${e.name} (number) is required`,n);return r}function jT(t,e,n){let r=ld(t,e);if(r===void 0)throw new De(`${e.name} (boolean) is required`,n);return r}function na(t,e,n,r){let a=_r(t,e);if(!a)throw new De(`${r} (URI reference) is required`,n);return a}function cd(t){return{publisher:t.publisher,package_:t.package_,name:t.name}}var Na="kanonak.org",v$="look",Oi="core-rdf",w$={publisher:Na,package_:v$,name:"displayLabel"},$$={publisher:Na,package_:v$,name:"displaySummary"},NT={publisher:Na,package_:Oi,name:"subClassOf"},PT={publisher:Na,package_:Oi,name:"label"},TT={publisher:Na,package_:Oi,name:"comment"},Pw=new rt(Na,Oi,"Resource"),OT=8;function Oe(t,e){return S$(t,e,new Set)}function S$(t,e,n){let r=Lw(t,e,w$)??PT,a=Lw(t,e,$$)??TT,s=Tw(t,e,r,n)??e.name,i=Tw(t,e,a,n);return{label:s,summary:i}}function Tw(t,e,n,r){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!$e(s.subject,n))){if(a instanceof Ce)return a.object;if(a instanceof et||a instanceof Ge)return String(a.object);if(a instanceof de)return Ow(t,a.object.subject,r);if(a instanceof he){let i=[];for(let o of a.object??[])if(o instanceof D){let l=Ow(t,o.subject,r);l&&i.push(l)}if(i.length>0)return i.join(", ")}return}}}function Ow(t,e,n){let r=T(e);if(n.has(r)||n.size>=OT)return e.name;let[a]=ze(t,e);if(!a)return e.name;let s=new Set(n);return s.add(r),S$(t,a,s).label}function Lw(t,e,n){let r=be(e,n);if(r)return r;let a=new Set,s=Fe(e,LT);for(;s.length>0;){let i=s.shift(),o=T(i);if(a.has(o))continue;a.add(o);let l=ze(t,i);for(let c of l){let u=be(c,n);if(u)return u}for(let c of l)s.push(...Fe(c,NT))}if(!a.has(T(Pw)))for(let i of ze(t,Pw)){let o=be(i,n);if(o)return o}}var LT={publisher:Na,package_:Oi,name:"type"},RT="kanonak.org",Pa=(t,e)=>({publisher:RT,package_:t,name:e}),IT=Pa("look","source"),Rw=Pa("look","connectors"),MT=Pa("look","relation"),DT=Pa("look","lineStyle"),FT=Pa("look","participants"),VT=Pa("core-owl","SymmetricProperty"),qT=Pa("core-owl","inverseOf"),Xl=new Set(["solid","dotted","open","thick"]);function Ql(t){return be(t,IT)}function Li(t,e){let n=Vt(e,Rw),r=n?[n]:hn(e,Rw),a=[];for(let s of r){if(!(s instanceof te))continue;let i=be(s,MT);if(!i)continue;let o=vt(s,DT),l=o!==void 0&&Xl.has(o);a.push({relation:i,subject:ze(t,i)[0],declaredStyle:l?o:void 0,invalidStyle:o!==void 0&&!l?o:void 0})}return a}function KT(t,e){let n=[];for(let r of hn(e,FT)){if(!(r instanceof D))continue;let a=ze(t,r.subject)[0];a&&n.push(a)}return n}function ud(t,e,n){for(let r of Xn(e))if($e(r,n)||ot(t,r).some(a=>$e(a,n)))return!0;return!1}function UT(t,e,n){let r=!!e.subject&&ud(t,e.subject,VT);return e.declaredStyle?{style:e.declaredStyle,undirected:r}:e.subject&&Fe(e.subject,qT).some(a=>n.some(s=>$e(a,s.relation)))?{style:"dotted",undirected:r}:{style:"solid",undirected:r}}function Zl(t,e,n){let r=Ql(n);if(!r)return Fl("the band declares no look.source");let a=Li(t,n);if(a.length===0)return Fl("the band declares no look.connectors \u2014 nothing can be a message");let s=Dr(e,r);if(!s)return{...Fl(),sourceAbsent:!0};if(!(s instanceof Rt))return Fl(`look.source ${T(r)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let i=[],o=[],l=0;for(let g of s.links){if(!g.target)continue;let m=g.target.subject,y=ze(t,m)[0];y&&(wt(t,y)!==void 0?a.some(v=>$e(m,v.relation))?i.push({kind:"selector",relation:m}):o.push(m):(i.push({kind:"participant",subject:y}),l++))}let c=[],u=[],p,f;for(let g of i){if(g.kind==="selector"){f=g.relation;continue}let m=g.subject;if(p){let y=f?a.filter(C=>$e(f,C.relation)):a,v=xe(m),k=xe(p),w=[],S=[];for(let C of y){let{style:N,undirected:_}=UT(t,C,a);v&&Fe(p,C.relation).some(B=>T(B)===T(v))?w.push({from:p,to:m,relation:C.relation,style:N,undirected:_}):k&&Fe(m,C.relation).some(B=>T(B)===T(k))&&S.push({from:m,to:p,relation:C.relation,style:N,undirected:_})}let A=w.length>0?w:S;c.push(...A),A.length===0&&ra(p)!==ra(m)&&u.push({prev:p,next:m,selected:f}),f=void 0}p=m}let h=new Map;for(let g of KT(t,n))h.set(ra(g),g);for(let g of c)h.has(ra(g.from))||h.set(ra(g.from),g.from),h.has(ra(g.to))||h.set(ra(g.to),g.to);return{messages:c,gaps:u,lifelines:[...h.values()],mentions:l,strayPropertyRefs:o,sourceAbsent:!1}}function ra(t){return`${t.namespace}/${t.name}`}function Fl(t){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...t?{problem:t}:{}}}var BT=new Set(["decimal","integer","int","long","short","byte","float","double","nonNegativeInteger","positiveInteger","negativeInteger","nonPositiveInteger","unsignedInt","unsignedLong","unsignedShort","unsignedByte"]),yd=/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;function ec(t,e){return ot(t,e).some(n=>n.publisher==="kanonak.org"&&n.package_==="core-xsd"&&BT.has(n.name))}function bn(t,e=n=>n.name){switch(t.kind){case"predicate":return e(t.property);case"inverse":return`^${bn(t.path,e)}`;case"alternative":return`(${t.paths.map(n=>bn(n,e)).join(" | ")})`}}function tc(t){let e=be(t,Rs);if(e)return{kind:"predicate",property:e};let n=Vt(t,Rs);return n?pd(n):ut(t,Rs)?{problem:"sh:path is neither a property nor a path expression; a list of paths is a sequence path, which core-shacl does not declare"}:void 0}function pd(t){let e=ut(t,mo),n=ut(t,ku);if(e&&n)return{problem:"a path expression is an sh:inversePath or an sh:alternativePath, not both"};if(e){let r=be(t,mo);if(r)return{kind:"inverse",path:{kind:"predicate",property:r}};let a=Vt(t,mo);if(!a)return{problem:"sh:inversePath takes one path, a property or a path expression"};let s=pd(a);return"problem"in s?s:{kind:"inverse",path:s}}if(n){let r=hn(t,ku);if(r.length<2)return{problem:"sh:alternativePath lists at least two paths"};let a=[];for(let s of r){let i=s instanceof D?{kind:"predicate",property:s.subject}:s instanceof te?pd(s):{problem:"each path sh:alternativePath lists is a property or a path expression"};if("problem"in i)return i;a.push(i)}return{kind:"alternative",paths:a}}return{problem:"a path written inline is an sh:inversePath or an sh:alternativePath; sequence and repetition paths are out of core-shacl's scope"}}function is(t){return typeof t=="number"?t:void 0}function kn(t,e){let n=ft(t,e);return typeof n=="number"?n:typeof n=="string"&&yd.test(n)?Number(n):n===void 0?void 0:String(n)}function HT(t){if(!t)return;let e=T(t);if(e===T(hg))return"IRI";if(e===T(mg))return"BlankNode";if(e===T(gg))return"Literal"}function A$(t){if(!t)return;let e=T(t);if(e===T(yg))return"Violation";if(e===T(kg))return"Warning";if(e===T(bg))return"Info"}function x$(t,e,n,r){let a=tc(e);if(!a||"problem"in a)return;let s=WT(t,e,n,r);return a.kind==="predicate"?{kind:"predicate",constraint:{path:a.property,...s}}:{kind:"expression",constraint:{path:a,...s}}}function WT(t,e,n,r){let a={},s=is(ft(e,Gm)),i=is(ft(e,Jm));s!==void 0&&(a.minCount=s),i!==void 0&&(a.maxCount=i);let o=is(ft(e,tg)),l=is(ft(e,ng));o!==void 0&&(a.minLength=o),l!==void 0&&(a.maxLength=l);let c=kn(e,rg),u=kn(e,ag);typeof c=="number"&&(a.minInclusive=c),typeof u=="number"&&(a.maxInclusive=u);let p=kn(e,sg),f=kn(e,ig);typeof p=="number"&&(a.minExclusive=p),typeof f=="number"&&(a.maxExclusive=f);let h=vt(e,Zm);if(h!==void 0){let S=vt(e,eg);a.pattern=S!==void 0?{regex:h,flags:S}:{regex:h}}if(ut(e,du)){let S=[],A=[];for(let{item:C}of bt(e,du))"literal"in C?S.push(C.value):C instanceof D&&A.push(C.subject);S.length>0&&(a.inValues=S),A.length>0&&(a.inRefs=A)}let g=be(e,Xm);g&&(a.datatype=g);let m=be(e,Qm);m&&(a.classRef=m);let y=HT(be(e,dg));y&&(a.nodeKind=y);let v=be(e,Fa);if(v&&(a.hasValue=v),ut(e,xn)||ut(e,Is)||ut(e,Ms)){let S={},A=is(ft(e,Is)),C=is(ft(e,Ms));A!==void 0&&(S.minCount=A),C!==void 0&&(S.maxCount=C);let N=zT(t,e,r);"problem"in N?S.problem=N.problem:S.shape=N.shape,a.qualified=S}let k=vt(e,og);k!==void 0&&(a.message=k);let w=A$(be(e,hu))??n;return w&&(a.severity=w),a}function zT(t,e,n){let r=Vt(e,xn);if(r)return Iw(t,r,void 0,n);let a=be(e,xn);if(!a)return{problem:"sh:qualifiedValueShape is missing"};let s=T(a);if(n.has(s))return{problem:`sh:qualifiedValueShape '${a.name}' leads back to itself (a cycle through named shapes)`};let i=ge(t,a);return i?Iw(t,i,s,n):{problem:`sh:qualifiedValueShape '${a.name}' does not resolve`}}function Iw(t,e,n,r){let a=n?new Set([...r,n]):r,s=Y(e,Da);if((Y(e,Ls)||ut(e,Rs))&&!s){let i=x$(t,e,void 0,a);return i?i.kind==="predicate"?{shape:{kind:"property",constraint:i.constraint}}:{problem:`the qualified property shape's sh:path is a path expression, ${bn(i.constraint.path)}; a qualified property shape's path is a property`}:{problem:"the qualified property shape has no sh:path"}}return e instanceof V&&!s?{problem:`sh:qualifiedValueShape '${e.name}' is not a shape`}:{shape:{kind:"node",shape:E$(t,e,a)}}}function E$(t,e,n){let r=A$(be(e,hu)),a=[],s={name:e instanceof V?e.name:"(inline shape)",uri:e instanceof V?xe(e):void 0,targetClass:be(e,zm),targetNodes:Fe(e,lg),targetSubjectsOf:Fe(e,cg),targetObjectsOf:Fe(e,ug),closed:ft(e,pg)===!0,ignoredProperties:[],severity:r,properties:[],pathExpressionProperties:a};s.ignoredProperties.push(...Fe(e,fg));for(let{item:i}of bt(e,Ym)){let o;if(i instanceof te?o=i:i instanceof D&&(o=ge(t,i.subject)),!o)continue;let l=x$(t,o,r,n);l?.kind==="predicate"?s.properties.push(l.constraint):l&&a.push(l.constraint)}return s}function kd(t){let e=[];for(let n of t){if(!(n instanceof V)||!Y(n,Da))continue;let r=xe(n);e.push(E$(t,n,new Set(r?[T(r)]:[])))}return e}function _$(t){let e=new Map;for(let n of t)if(n instanceof V)for(let r of so(n,go)){let a=xe(n);if(!a)throw new Error(`owl.hasKey on '${n.namespace}/${n.name}': the class has no resolvable URI.`);if(r.length===0)throw new Error(`owl.hasKey on '${n.name}' lists no properties; a key needs at least one.`);let s=r.map(({item:i})=>{let o=i instanceof D?ge(t,i.subject):void 0;if(!o||!Mn(t,o)){let l=i instanceof D?`'${T(i.subject)}'`:"a value that is not a reference";throw new Error(`owl.hasKey on '${n.name}' lists ${l}, which is not a property defined in scope; a key lists properties.`)}return i.subject});e.set(`${T(a)}|${s.map(T).join(",")}`,{classUri:a,className:n.name,properties:s})}return[...e.values()]}var YT="kanonak.org",GT="core-shacl",Qt=t=>({publisher:YT,package_:GT,name:t}),JT=Qt("NodeShape"),XT=Qt("targetClass"),QT=Qt("property"),ZT=Qt("path"),eO=Qt("minCount"),tO=Qt("maxCount"),nO=Qt("in"),rO=Qt("pattern"),aO=Qt("flags"),sO=Qt("minLength"),iO=Qt("maxLength"),oO=Qt("minInclusive"),lO=Qt("maxInclusive"),cO=Qt("minExclusive"),uO=Qt("maxExclusive"),pO=Qt("message");function Vl(t){return typeof t=="number"?t:void 0}function fO(t){let e={},n=Vl(ft(t,eO)),r=Vl(ft(t,tO));n!==void 0&&(e.minCount=n),r!==void 0&&(e.maxCount=r);let a=Vl(ft(t,sO)),s=Vl(ft(t,iO));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let i=kn(t,oO),o=kn(t,lO);typeof i=="number"&&(e.minInclusive=i),typeof o=="number"&&(e.maxInclusive=o);let l=kn(t,cO),c=kn(t,uO);typeof l=="number"&&(e.minExclusive=l),typeof c=="number"&&(e.maxExclusive=c);let u=vt(t,rO);if(u!==void 0){let h=vt(t,aO);e.pattern=h!==void 0?{regex:u,flags:h}:{regex:u}}let p=bt(t,nO).map(h=>h.item).filter(h=>"literal"in h).map(h=>h.value);p.length>0&&(e.enumValues=p);let f=vt(t,pO);return f!==void 0&&(e.message=f),e}function dO(t,e){let n=[];for(let{item:r}of bt(e,QT))if(r instanceof te)n.push(r);else if(r instanceof D){let a=ge(t,r.subject);a&&n.push(a)}return n}function hO(t){let e=new Map;for(let n of t){if(!(n instanceof V)||!Y(n,JT))continue;let r=be(n,XT);if(!r)continue;let a=T(r);for(let s of dO(t,n)){let i=be(s,ZT);if(!i)continue;let o=fO(s);if(mO(s,o))continue;let l={pathKey:T(i),constraints:o},c=e.get(a);c?c.push(l):e.set(a,[l])}}return e}var Mw=new WeakMap;function Jl(t){let e=Mw.get(t);return e||(e=hO(t),Mw.set(t,e)),e}function mO(t,e){return ut(t,Fa)||ut(t,xn)?Object.keys(e).every(n=>n==="message"):!1}function gO(t,e){e.minCount!==void 0&&(t.minCount=e.minCount),e.maxCount!==void 0&&(t.maxCount=e.maxCount),e.minLength!==void 0&&(t.minLength=e.minLength),e.maxLength!==void 0&&(t.maxLength=e.maxLength),e.minInclusive!==void 0&&(t.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(t.maxInclusive=e.maxInclusive),e.minExclusive!==void 0&&(t.minExclusive=e.minExclusive),e.maxExclusive!==void 0&&(t.maxExclusive=e.maxExclusive),e.pattern!==void 0&&(t.pattern=e.pattern),e.enumValues!==void 0&&(t.enumValues=e.enumValues),e.message!==void 0&&(t.message=e.message)}function bd(t,e,n){let r=T(n),a=!1,s={};for(let i=e.length-1;i>=0;i--){let o=t.get(T(e[i]));if(o)for(let l of o)l.pathKey===r&&(a=!0,gO(s,l.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Dw="kanonak.org",yO="core-rdf",kO="core-xsd";var bO=t=>t;function vO(t,e,n){if(e.publisher===Dw&&e.package_===yO&&e.name==="Literal")return{kind:"datatype",uri:e};let r=ge(t,e);if(r){let a=bO(r);if(tt.isDatatypeType(a))return{kind:"datatype",uri:e};if(tt.isClassType(a))return{kind:"class",uri:xe(r)??e,localName:r.name}}return e.publisher===Dw&&e.package_===kO?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}var wO={cardinality:"list",required:!1};function $O(t,e,n){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let r=vO(t,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":r.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:r,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??wO}}function Fw(t,e,n,r){let a=ot(t,e),s=T(e);return Va(t,e).filter(i=>n?!0:i.domains.some(o=>T(o)===s)).map(i=>$O(t,i,bd(r,a,i.uri)))}function Ti(t,e={}){let n=t.replace(/\r\n/g,`
|
|
177
177
|
`).split(`
|
|
178
178
|
`),r=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let i=/^(\s*)```(\S*)\s*$/.exec(s);if(i){let c=i[2],u=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)u.push(n[a]),a++;a++;let p=u.join(`
|
|
179
|
-
`),f=c&&e.highlight?e.highlight(c,p):Pi(p),h=c?` class="language-${
|
|
179
|
+
`),f=c&&e.highlight?e.highlight(c,p):Pi(p),h=c?` class="language-${C$(c)}"`:"";r.push(`<pre class="kan-code"><code${h}>${f}</code></pre>`);continue}let o=/^(#{1,6})\s+(.*)$/.exec(s);if(o){let c=o[1].length,u=ls(o[2].trim());r.push(`<h${c}>${u}</h${c}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Vw(n[a+1])){let c=fd(s),u=SO(n[a+1]);a+=2;let p=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)p.push(fd(n[a])),a++;r.push(AO(c,u,p));continue}if(/^\s*[-*]\s+/.test(s)){let c=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let u=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)u.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,c.push(`<li>${ls(u.join(" ").trim())}</li>`)}r.push(`<ul>
|
|
180
180
|
${c.join(`
|
|
181
181
|
`)}
|
|
182
182
|
</ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let c=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let u=[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]);)u.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,c.push(`<li>${ls(u.join(" ").trim())}</li>`)}r.push(`<ol>
|
|
183
183
|
${c.join(`
|
|
184
184
|
`)}
|
|
185
|
-
</ol>`);continue}let l=[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&&
|
|
186
|
-
`)}function
|
|
185
|
+
</ol>`);continue}let l=[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&&Vw(n[a+1]));)l.push(n[a]),a++;r.push(`<p>${ls(l.join(" "))}</p>`)}return r.join(`
|
|
186
|
+
`)}function Vw(t){return t.includes("-")?/^[\s|:-]+$/.test(t):!1}function fd(t){let e=t.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function SO(t){return fd(t).map(e=>{let n=e.startsWith(":"),r=e.endsWith(":");return n&&r?"center":r?"right":n?"left":null})}function AO(t,e,n){let r=i=>{let o=e[i];return o?` style="text-align:${o}"`:""},a=t.map((i,o)=>`<th${r(o)}>${ls(i)}</th>`).join(""),s=n.map(i=>`<tr>${i.map((o,l)=>`<td${r(l)}>${ls(o)}</td>`).join("")}</tr>`).join(`
|
|
187
187
|
`);return`<table>
|
|
188
188
|
<thead><tr>${a}</tr></thead>
|
|
189
189
|
<tbody>
|
|
190
190
|
${s}
|
|
191
191
|
</tbody>
|
|
192
|
-
</table>`}function ls(t){let e=Pi(t);return e=e.replace(/`([^`\n]+)`/g,(n,r)=>`<code>${r}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,r,a)=>`<a href="${x$(a)}">${r}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,r)=>`<strong>${r}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,r,a)=>`${r}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,r,a)=>`${r}<em>${a}</em>`),e}function Pi(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function x$(t){return t.replace(/"/g,""").replace(/&/g,"&")}var AO={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Pn(t){return typeof t=="object"&&t!==null&&t.kind==="raw-string"}var Pt=class extends Error{},xO=T($.DecimalLiteral);function EO(t){throw new Pt(`The expression runtime asked to resolve '${t.type}' inside a numeric operator`)}var cs=class{constructor(t,e,n=new Map){this.resolver=t,this.catalog=e,this.fragments=n}resolver;catalog;fragments;async evaluate(t,e){switch(t.kind){case"string-literal":return t.value;case"integer-literal":return t.value;case"decimal-literal":return t.value;case"boolean-literal":return t.value;case"uri-literal":return{...t.refTo};case"var-ref":{if(!e.has(t.varName))throw new Pt(`Unbound variable "${t.varName}"`);return e.get(t.varName)}case"concat":{let n=[];for(let[r,a]of t.parts.entries()){let s=await this.evaluate(a,e);if(s==null)throw bd(r,a);if(Array.isArray(s))for(let i of s)n.push(i);else n.push(s)}return n}case"fallback":{let n=await this.evaluate(t.primary,e);return Dw(n)?n:this.evaluate(t.alternate,e)}case"when":return await this.evaluate(t.condition,e)===!0?this.evaluate(t.thenBuild,e):t.elseBuild?this.evaluate(t.elseBuild,e):[];case"is-set":{let n=await this.evaluate(t.check,e);return Dw(n)}case"property-read":{let n=await this.evaluate(t.source,e);return n==null?void 0:ql(await this.propertyReadSource(n,t.readProp),t.readProp)}case"traverse":{let n=await this.evaluate(t.source,e);if(!(n instanceof kt))return;let r=CO(n,t.through),a=[];for(let s of r){let i=ze(this.catalog,s),o=i.length>0?i:[await this.resolver.resolveSubject(s,this.catalog)];for(let l of o){if(!l)continue;let c=new Map(e);c.set("input",l);let u=await this.evaluate(t.step,c);if(u!=null&&ea(u)!==""){a.push(ea(u));break}}}return a.join("")}case"uri-name":{let n=await this.evaluate(t.source,e);return sa(n)?n.name:n instanceof D?n.subject.name:n instanceof q?n.name:n instanceof te?n.name??"":void 0}case"uri-publisher":{let n=await this.evaluate(t.source,e);return Gf(n)?.publisher}case"uri-package":{let n=await this.evaluate(t.source,e);return Gf(n)?.package_}case"uri-version":{let n=await this.evaluate(t.source,e);return Gf(n)?.version}case"subject-uri":{let n=await this.evaluate(t.source,e);if(n instanceof q){let r=n.namespace??"",a=n.name??"";return!r||!a?void 0:`${r}/${a}`}if(n instanceof D){let r=n.subject,a=r.version;return a&&typeof a.major=="number"?`${r.publisher}/${r.package_}@${a.major}.${a.minor}.${a.patch}/${r.name}`:`${r.publisher}/${r.package_}/${r.name}`}return}case"display-label":{let n=await this.resolver.resolveSubject({...t.labelTarget},this.catalog);return n?ql(n,t.labelSource):void 0}case"resolve-ref":{let n=await this.evaluate(t.source,e);return n instanceof q?n:n instanceof D?await this.resolver.resolveSubject(n.subject,this.catalog):sa(n)?await this.resolver.resolveSubject(n,this.catalog):void 0}case"normalize":{let n=await this.evaluate(t.source,e),r=n==null?"":ea(n);return t.normKind==="trim-end"?r.replace(/[\s\r\n]+$/u,""):t.normKind==="to-upper"?r.toUpperCase():t.normKind==="to-lower"?r.toLowerCase():t.normKind==="first-char"?r.length===0?"":r.charAt(0):r}case"unescaped-string":{let n=await this.evaluate(t.source,e);return{kind:"raw-string",value:n==null?"":ea(n)}}case"render-markdown":{let n=await this.evaluate(t.source,e);if(!(n instanceof kt))return;let r;for(let s of n.statement){let i=kd(s);if(i&&$e(i,t.readProp)){r=s;break}}if(!(r instanceof Lt)){let s=ql(n,t.readProp);return s==null?void 0:ea(s)}let a=await this.renderMarkdownLinks(r);return t.format==="html"?Ti(a):a}case"build-ast-node":{let n={kind:t.astClass.name};for(let r of t.set){let a=await this.evaluate(r.value,e);if(a==null||Array.isArray(a)&&a.length===0)continue;let s=r.field.name;NO.has(s)&&(Array.isArray(a)&&a.every(i=>Fw(i))?a=a.map(i=>qw(i)).join(""):Fw(a)&&(a=qw(a))),n[s]=a}return n}case"call-fragment":{let n=this.fragments.get(t.fragmentKey);if(!n)throw new Pt(`ExpressionFragment ${t.fragmentKey} not found in registry`);return this.evaluate(n,e)}case"join":{let n=await this.evaluate(t.source,e);if(n==null)throw new Pt(`Join: its source (${pd(t.source)}) has no value.`);return(Array.isArray(n)?n:[n]).map((r,a)=>{if(r==null||Array.isArray(r)&&r.length===0)throw new Pt(`Join: element ${a} of its source (${pd(t.source)}) has no value. Filter the list first if it may have gaps.`);if(Array.isArray(r))throw new Pt("Join cannot stringify a nested list");return ea(r)}).join(t.separator)}case"count":return(await this.evaluateList(t.source,e)).length;case"sum":{let n=await this.evaluateList(t.source,e),r=0;for(let a of n)r+=ja(a,"Sum");return r}case"min":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Min on an empty list is undefined; guard with IsSet");let r=ja(n[0],"Min");for(let a=1;a<n.length;a++){let s=ja(n[a],"Min");s<r&&(r=s)}return r}case"max":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Max on an empty list is undefined; guard with IsSet");let r=ja(n[0],"Max");for(let a=1;a<n.length;a++){let s=ja(n[a],"Max");s>r&&(r=s)}return r}case"average":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Average on an empty list is undefined; guard with IsSet");let r=0;for(let a of n)r+=ja(a,"Average");return r/n.length}case"for-each":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a));let i=await this.evaluate(t.emit,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}case"list-map":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a)),r.push(await this.evaluate(t.mapBody,s))}return r}case"filter":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a)),await this.evaluate(t.predicate,s)===!0&&r.push(a)}return r}case"partition-by":{let n=await this.evaluateList(t.source,e),r=new Map,a=[];for(let s of n){let i=new Map(e);i.set(t.loopVar,an(s));let o=await this.evaluate(t.partitionKey,i),l=Uw(o),c=r.get(l);c||(c={kind:"Partition",key:o,members:[]},r.set(l,c),a.push(l)),c.members.push(s)}return a.map(s=>r.get(s))}case"distinct-by":{let n=await this.evaluateList(t.source,e),r=new Set,a=[];for(let s of n){let i=new Map(e);i.set(t.loopVar,an(s));let o=await this.evaluate(t.distinctKey,i),l=Uw(o);r.has(l)||(r.add(l),a.push(s))}return a}case"all-statements":{let n=await this.evaluate(t.source,e);return n instanceof kt?n.statement:[]}case"statement-predicate":{let n=await this.evaluate(t.source,e);if(Jf(n)){let r=n.predicate;if(r instanceof D)return r}return}case"statement-value":{let n=await this.evaluate(t.source,e);return Jf(n)?MO(n):void 0}case"date-format":{let n=await this.evaluate(t.source,e),r=n==null?"":ea(n);return r?PO(r,t.format):""}case"number-format":{let n=await this.evaluate(t.source,e),r=n==null?"":ea(n);return r.trim()?IO(r,t.style,t.fractionDigits,t.currencyCode):""}case"numeric-op":{let n={type:t.type};for(let r of t.operands){let a=ja(an(await this.evaluate(r.expr,e)),t.name);n[r.name]={type:xO,decimalLiteral:a}}try{return Ml(n,void 0,EO)}catch(r){throw r instanceof Be?new Pt(r.message):r}}case"reverse":{if(t.source.kind==="reverse")return this.evaluate(t.source.source,e);let n=await this.evaluateReverseIterator(t.source,e);return n!==void 0?n:[...await this.evaluateList(t.source,e)].reverse()}case"windowed-map":{let n=await this.evaluateList(t.source,e);if(n.length<t.windowSize)return[];let r=[];for(let a=0;a+t.windowSize<=n.length;a++){let s=n.slice(a,a+t.windowSize),i=new Map(e);i.set(t.windowVar,s);let o=await this.evaluate(t.windowBody,i);if(o!=null)if(Array.isArray(o))for(let l of o)r.push(l);else r.push(o)}return r}case"pairwise-map":{let n=await this.evaluateList(t.source,e);if(n.length<2)return[];let r=[];for(let a=0;a+1<n.length;a++){let s=new Map(e);s.set(t.firstVar,an(n[a])),s.set(t.secondVar,an(n[a+1]));let i=await this.evaluate(t.pairBody,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}case"scan":{let n=await this.evaluateList(t.source,e);if(n.length===0)return[];let r=await this.evaluate(t.initialState,e),a=[];for(let s of n){let i=new Map(e);i.set(t.stateVar,r),i.set(t.elementVar,an(s));let o=await this.evaluate(t.accumulate,i);a.push(o),r=o}return a}case"list-item-at":{let n=await this.evaluateList(t.source,e),r=an(await this.evaluate(t.itemIndex,e));if(typeof r!="number"||!Number.isInteger(r)||r<0)throw new Pt("ListItemAt itemIndex must be a non-negative integer");return r>=n.length?void 0:n[r]}case"equals":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return Vw(n,r)}case"greater-than":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n>r}case"less-than":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n<r}case"greater-than-or-equal":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n>=r}case"less-than-or-equal":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n<=r}case"not":{let n=await this.evaluate(t.operand,e);return n===!0?!1:n===!1?!0:void 0}case"and":{for(let n of t.operands)if(await this.evaluate(n,e)!==!0)return!1;return!0}case"or":{for(let n of t.operands)if(await this.evaluate(n,e)===!0)return!0;return!1}case"contains":{let n=await this.evaluateList(t.haystack,e),r=await this.evaluate(t.needle,e);for(let a of n)if(Vw(a,r))return!0;return!1}case"matches":{let n=an(await this.evaluate(t.source,e)),r=Pn(n)?n.value:n;if(typeof r!="string")throw new Pt(`Matches requires a string matchSource; got ${_$(r)}`);try{return vw(r,t.pattern)}catch(a){throw a instanceof Be?new Pt(a.message):a}}case"is-reference":{let n=await this.evaluate(t.check,e);return n instanceof D||n instanceof q||sa(n)}case"is-embedded":return await this.evaluate(t.check,e)instanceof te;case"is-list":{let n=await this.evaluate(t.check,e);return Array.isArray(n)}case"is-string":return typeof await this.evaluate(t.check,e)=="string";case"is-number":return typeof await this.evaluate(t.check,e)=="number";case"is-boolean":return typeof await this.evaluate(t.check,e)=="boolean";case"statement-object":{let n=await this.evaluate(t.source,e);if(!Jf(n))return;let r=n;return r instanceof Ce||r instanceof et||r instanceof Ge||r instanceof de||r instanceof Ae||r instanceof he?r.object:void 0}case"let":{let n=await this.evaluate(t.bindValue,e),r=new Map(e);return r.set(t.bindName,n),this.evaluate(t.body,r)}case"get-statement-by-name":{let n=await this.evaluate(t.inSubject,e),r=await this.evaluate(t.byName,e);if(!(n instanceof kt)||typeof r!="string")return;for(let a of n.statement)if(a.predicate?.subject?.name===r)return a;return}default:{let n=t;throw new Pt("Unknown expression kind")}}}async renderMarkdownLinks(t){let e=t.object,n="",r=0;for(let a of t.links){if(n+=e.slice(r,a.startOffset),a.target){let s=a.target.subject,i=a.displayText??await this.resolveLabel(s)??s.name;n+=`[${i}](${Ir(s)})`}else n+=a.displayText??a.reference;r=a.endOffset}return n+=e.slice(r),n}async resolveLabel(t){let e=await this.resolver.resolveSubject(t,this.catalog);if(!e)return;let n=ql(e,AO);return typeof n=="string"?n:void 0}async propertyReadSource(t,e){if(t instanceof kt||E$(t))return t;let n=t instanceof D?t.subject:sa(t)?t:void 0;if(n){let r=await this.resolver.resolveSubject(n,this.catalog);if(!r)throw new Pt(`PropertyRead of ${e.name}: its source is a reference to ${T(n)}, which does not resolve.`);return r}throw new Pt(`PropertyRead of ${e.name}: its source is ${jO(t)}, not a resource. Read a list's items with ListMap or ForEach.`)}async evaluateList(t,e){let n=await this.evaluate(t,e);return n==null?[]:Array.isArray(n)?n:[n]}async evaluateReverseIterator(t,e){if(t.kind==="pairwise-map"){let n=await this.evaluateList(t.source,e);if(n.length<2)return[];let r=[];for(let a=n.length-1;a>=1;a--){let s=new Map(e);s.set(t.firstVar,an(n[a-1])),s.set(t.secondVar,an(n[a]));let i=await this.evaluate(t.pairBody,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}if(t.kind==="for-each"){let n=await this.evaluateList(t.source,e),r=[];for(let a=n.length-1;a>=0;a--){let s=new Map(e);s.set(t.loopVar,an(n[a]));let i=await this.evaluate(t.emit,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}if(t.kind==="list-map"){let n=await this.evaluateList(t.source,e),r=[];for(let a=n.length-1;a>=0;a--){let s=new Map(e);s.set(t.loopVar,an(n[a])),r.push(await this.evaluate(t.mapBody,s))}return r}if(t.kind==="windowed-map"){let n=await this.evaluateList(t.source,e);if(n.length<t.windowSize)return[];let r=[];for(let a=n.length-t.windowSize;a>=0;a--){let s=n.slice(a,a+t.windowSize),i=new Map(e);i.set(t.windowVar,s);let o=await this.evaluate(t.windowBody,i);if(o!=null)if(Array.isArray(o))for(let l of o)r.push(l);else r.push(o)}return r}}};function ql(t,e){if(t instanceof kt)return _O(t,e);if(E$(t))return $e(e,$.key)?t.key:$e(e,$.members)?t.members:void 0}function _O(t,e){for(let n of t.statement){let r=kd(n);if(!(!r||!$e(r,e))&&(n instanceof Ce||n instanceof et||n instanceof Ge||n instanceof de||n instanceof Ae||n instanceof he))return n.object}}function CO(t,e){let n=[];for(let r of t.statement){let a=kd(r);if(!(!a||!$e(a,e))){if(r instanceof de)n.push(r.object.subject);else if(r instanceof he)for(let s of r.object)s instanceof D&&n.push(s.subject)}}return n}function kd(t){return t.predicate?.subject}function ea(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(Pn(t))return t.value;if(t instanceof kt)return t.name??"";if(t instanceof D)return t.subject.name;if(sa(t))return t.name;let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function an(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof kt)&&!(t instanceof D)&&!(t instanceof te)&&"value"in t?t.value:t}function Dw(t){return t==null?!1:typeof t=="string"||Array.isArray(t)?t.length>0:typeof t=="boolean"?t===!0:!0}function sa(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}function bd(t,e){return new Pt(`Concat: part ${t} (${pd(e)}) has no value. A part that may be absent must say so: wrap it in a When, or give it a Fallback.`)}function pd(t){switch(t.kind){case"property-read":return`PropertyRead of ${t.readProp.name}`;case"var-ref":return`VarRef ${t.varName}`;case"traverse":return`Traverse through ${t.through.name}`;default:return t.kind}}function jO(t){return Array.isArray(t)?`a list of ${t.length}`:Pn(t)?"a string":typeof t=="object"&&t!==null?"a literal":`a ${typeof t}`}function E$(t){return typeof t=="object"&&t!==null&&t.kind==="Partition"&&Array.isArray(t.members)}function ja(t,e){if(typeof t=="number"&&Number.isFinite(t))return t;throw new Pt(`${e} requires numeric elements; got ${_$(t)}`)}function Gf(t){if(t instanceof q){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);return n<0||r<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,r),version:e.substring(r+1),name:t.name??""}}if(t instanceof D){let e=t.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(sa(t))return{publisher:t.publisher,package_:t.package_,version:"",name:t.name}}var NO=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Fw(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||Pn(t)}function qw(t){return Pn(t)?t.value:String(t)}function _$(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?`array(${t.length})`:typeof t}function PO(t,e){let n=new Date(t);if(isNaN(n.getTime()))return"";let r=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],i=n.getUTCDate(),o=(l,c=2)=>String(l).padStart(c,"0");switch(e){case"iso-date":return`${r}-${o(n.getUTCMonth()+1)}-${o(i)}`;case"iso-datetime":return`${r}-${o(n.getUTCMonth()+1)}-${o(i)}T${o(n.getUTCHours())}:${o(n.getUTCMinutes())}:${o(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${i}`;case"long-date":return`${a} ${i}, ${r}`;case"year":return String(r);case"month-year":return`${a} ${r}`}}var TO={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},OO={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function LO(t,e){if(e===0)return t;let n=t.startsWith("-"),r=n?t.slice(1):t,a=r.indexOf("."),s=a===-1?r:r.slice(0,a),i=a===-1?"":r.slice(a+1),o=s+i,l=s.length+e,c;return l<=0?c=`0.${"0".repeat(-l)}${o}`:l>=o.length?c=o+"0".repeat(l-o.length):c=`${o.slice(0,l)}.${o.slice(l)}`,c=c.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(c)?`-${c}`:c}function RO(t){let e=t.startsWith("-"),n=e?t.slice(1):t,r=n.indexOf("."),a=r===-1?n:n.slice(0,r),s=r===-1?"":n.slice(r);return`${e?"-":""}${a.replace(/\B(?=(\d{3})+(?!\d))/g,",")}${s}`}function IO(t,e,n,r){let a=Number(t.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(t.trim())?a.toFixed(20).replace(/0+$/,""):t.trim();if(e==="compact"){let o=Math.abs(a),l=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[c,u]of l)if(o>=c){let p=a/c;return`${n===void 0?String(Number(p.toFixed(1))):p.toFixed(n)}${u}`}return n===void 0?String(a):a.toFixed(n)}let i=LO(s,OO[e]??0);switch(n!==void 0&&(i=Number(i).toFixed(n)),e){case"percent":return`${i}%`;case"basis-points":return`${i} bp`;case"currency":{let o=(r??"USD").toUpperCase(),l=TO[o]??`${o} `,c=i.startsWith("-");return`${c?"-":""}${l}${RO(c?i.slice(1):i)}`}default:return i}}function Vw(t,e){if(t==null||e===void 0||e===null)return!1;if(t===e)return!0;let n=typeof t=="object"&&"value"in t?t.value:void 0,r=typeof e=="object"&&"value"in e?e.value:void 0,a=n??t,s=r??e,i=Kw(t),o=Kw(e);return i&&o?i.publisher===o.publisher&&i.package_===o.package_&&i.name===o.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function Kw(t){if(t instanceof D){let e=t.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(t instanceof q){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=r>=0?e.substring(n+1,r):e.substring(n+1);return{publisher:a,package_:s,name:t.name??""}}if(sa(t))return{publisher:t.publisher,package_:t.package_,name:t.name}}function Jf(t){return t instanceof Ce||t instanceof et||t instanceof Ge||t instanceof de||t instanceof Ae||t instanceof he}function MO(t){return t instanceof Ce||t instanceof et||t instanceof Ge?String(t.object??""):t instanceof de?t.object?.subject?.name??"":t instanceof Ae?"[embedded]":t instanceof he?(t.object??[]).map(e=>{if(e instanceof D)return e.subject.name;let n=e.name;if(n&&n.length>0)return n;let r=e.value;return typeof r=="string"||typeof r=="number"||typeof r=="boolean"?String(r):"[embedded]"}).join(", "):""}function Uw(t){if(t===void 0)return"\0undef";if(t===null)return"\0null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof D){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof kt){let e=t.name??"";return`k:${t.namespace??""}/${e}`}return sa(t)?`u:${t.publisher}/${t.package_}/${t.name}`:`o:${JSON.stringify(t,(e,n)=>e==="sourceKey"?void 0:n)}`}var Ri=class{constructor(t,e,n){this.repository=t,this.parser=e,this.objectParser=n}repository;parser;objectParser;cache=new Map;async resolveSubject(t,e){let n=ge(e,t);if(n)return n;let r=t.version,a=r&&typeof r.major=="number"?`@${r.major}.${r.minor}.${r.patch}`:"",s=`${t.publisher}/${t.package_}${a}`,i=this.cache.get(s);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(t.publisher,t.package_);if(l.length===0)return;let c=r&&typeof r.major=="number"?l.find(p=>{let f=p.metadata?.namespace_?.version;return f&&f.major===r.major&&f.minor===r.minor&&f.patch===r.patch})??l[0]:l[0],u=new at(c,this.repository);i=await this.objectParser.parseKanonaks(u),this.cache.set(s,i)}let o=ge(i,t);if(o)return o;for(let l of i)if(l instanceof q&&l.name===t.name)return l}},DO=class{byLang=new Map;constructor(t){for(let e of t){if(!e.language)continue;let n=[];for(let r of e.rules){if(!r.tokenClass||!r.pattern)continue;let a;try{a=new RegExp(r.pattern,"y")}catch{continue}n.push({tokenClass:r.tokenClass,re:a})}this.byLang.set(e.language,n)}}has(t){return this.byLang.has(t)}highlight(t,e){let n=this.byLang.get(t);return!n||n.length===0?Pi(e):e.split(`
|
|
192
|
+
</table>`}function ls(t){let e=Pi(t);return e=e.replace(/`([^`\n]+)`/g,(n,r)=>`<code>${r}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,r,a)=>`<a href="${C$(a)}">${r}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,r)=>`<strong>${r}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,r,a)=>`${r}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,r,a)=>`${r}<em>${a}</em>`),e}function Pi(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function C$(t){return t.replace(/"/g,""").replace(/&/g,"&")}var xO={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Pn(t){return typeof t=="object"&&t!==null&&t.kind==="raw-string"}var Pt=class extends Error{},EO=T($.DecimalLiteral);function _O(t){throw new Pt(`The expression runtime asked to resolve '${t.type}' inside a numeric operator`)}var cs=class{constructor(t,e,n=new Map){this.resolver=t,this.catalog=e,this.fragments=n}resolver;catalog;fragments;async evaluate(t,e){switch(t.kind){case"string-literal":return t.value;case"integer-literal":return t.value;case"decimal-literal":return t.value;case"boolean-literal":return t.value;case"uri-literal":return{...t.refTo};case"var-ref":{if(!e.has(t.varName))throw new Pt(`Unbound variable "${t.varName}"`);return e.get(t.varName)}case"concat":{let n=[];for(let[r,a]of t.parts.entries()){let s=await this.evaluate(a,e);if(s==null)throw wd(r,a);if(Array.isArray(s))for(let i of s)n.push(i);else n.push(s)}return n}case"fallback":{let n=await this.evaluate(t.primary,e);return qw(n)?n:this.evaluate(t.alternate,e)}case"when":return await this.evaluate(t.condition,e)===!0?this.evaluate(t.thenBuild,e):t.elseBuild?this.evaluate(t.elseBuild,e):[];case"is-set":{let n=await this.evaluate(t.check,e);return qw(n)}case"property-read":{let n=await this.evaluate(t.source,e);return n==null?void 0:ql(await this.propertyReadSource(n,t.readProp),t.readProp)}case"traverse":{let n=await this.evaluate(t.source,e);if(!(n instanceof kt))return;let r=jO(n,t.through),a=[];for(let s of r){let i=ze(this.catalog,s),o=i.length>0?i:[await this.resolver.resolveSubject(s,this.catalog)];for(let l of o){if(!l)continue;let c=new Map(e);c.set("input",l);let u=await this.evaluate(t.step,c);if(u!=null&&ta(u)!==""){a.push(ta(u));break}}}return a.join("")}case"uri-name":{let n=await this.evaluate(t.source,e);return ia(n)?n.name:n instanceof D?n.subject.name:n instanceof V?n.name:n instanceof te?n.name??"":void 0}case"uri-publisher":{let n=await this.evaluate(t.source,e);return Xf(n)?.publisher}case"uri-package":{let n=await this.evaluate(t.source,e);return Xf(n)?.package_}case"uri-version":{let n=await this.evaluate(t.source,e);return Xf(n)?.version}case"subject-uri":{let n=await this.evaluate(t.source,e);if(n instanceof V){let r=n.namespace??"",a=n.name??"";return!r||!a?void 0:`${r}/${a}`}if(n instanceof D){let r=n.subject,a=r.version;return a&&typeof a.major=="number"?`${r.publisher}/${r.package_}@${a.major}.${a.minor}.${a.patch}/${r.name}`:`${r.publisher}/${r.package_}/${r.name}`}return}case"display-label":{let n=await this.resolver.resolveSubject({...t.labelTarget},this.catalog);return n?ql(n,t.labelSource):void 0}case"resolve-ref":{let n=await this.evaluate(t.source,e);return n instanceof V?n:n instanceof D?await this.resolver.resolveSubject(n.subject,this.catalog):ia(n)?await this.resolver.resolveSubject(n,this.catalog):void 0}case"normalize":{let n=await this.evaluate(t.source,e),r=n==null?"":ta(n);return t.normKind==="trim-end"?r.replace(/[\s\r\n]+$/u,""):t.normKind==="to-upper"?r.toUpperCase():t.normKind==="to-lower"?r.toLowerCase():t.normKind==="first-char"?r.length===0?"":r.charAt(0):r}case"unescaped-string":{let n=await this.evaluate(t.source,e);return{kind:"raw-string",value:n==null?"":ta(n)}}case"render-markdown":{let n=await this.evaluate(t.source,e);if(!(n instanceof kt))return;let r;for(let s of n.statement){let i=vd(s);if(i&&$e(i,t.readProp)){r=s;break}}if(!(r instanceof Rt)){let s=ql(n,t.readProp);return s==null?void 0:ta(s)}let a=await this.renderMarkdownLinks(r);return t.format==="html"?Ti(a):a}case"build-ast-node":{let n={kind:t.astClass.name};for(let r of t.set){let a=await this.evaluate(r.value,e);if(a==null||Array.isArray(a)&&a.length===0)continue;let s=r.field.name;PO.has(s)&&(Array.isArray(a)&&a.every(i=>Kw(i))?a=a.map(i=>Uw(i)).join(""):Kw(a)&&(a=Uw(a))),n[s]=a}return n}case"call-fragment":{let n=this.fragments.get(t.fragmentKey);if(!n)throw new Pt(`ExpressionFragment ${t.fragmentKey} not found in registry`);return this.evaluate(n,e)}case"join":{let n=await this.evaluate(t.source,e);if(n==null)throw new Pt(`Join: its source (${dd(t.source)}) has no value.`);return(Array.isArray(n)?n:[n]).map((r,a)=>{if(r==null||Array.isArray(r)&&r.length===0)throw new Pt(`Join: element ${a} of its source (${dd(t.source)}) has no value. Filter the list first if it may have gaps.`);if(Array.isArray(r))throw new Pt("Join cannot stringify a nested list");return ta(r)}).join(t.separator)}case"count":return(await this.evaluateList(t.source,e)).length;case"sum":{let n=await this.evaluateList(t.source,e),r=0;for(let a of n)r+=ja(a,"Sum");return r}case"min":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Min on an empty list is undefined; guard with IsSet");let r=ja(n[0],"Min");for(let a=1;a<n.length;a++){let s=ja(n[a],"Min");s<r&&(r=s)}return r}case"max":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Max on an empty list is undefined; guard with IsSet");let r=ja(n[0],"Max");for(let a=1;a<n.length;a++){let s=ja(n[a],"Max");s>r&&(r=s)}return r}case"average":{let n=await this.evaluateList(t.source,e);if(n.length===0)throw new Pt("Average on an empty list is undefined; guard with IsSet");let r=0;for(let a of n)r+=ja(a,"Average");return r/n.length}case"for-each":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a));let i=await this.evaluate(t.emit,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}case"list-map":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a)),r.push(await this.evaluate(t.mapBody,s))}return r}case"filter":{let n=await this.evaluateList(t.source,e),r=[];for(let a of n){let s=new Map(e);s.set(t.loopVar,an(a)),await this.evaluate(t.predicate,s)===!0&&r.push(a)}return r}case"partition-by":{let n=await this.evaluateList(t.source,e),r=new Map,a=[];for(let s of n){let i=new Map(e);i.set(t.loopVar,an(s));let o=await this.evaluate(t.partitionKey,i),l=Ww(o),c=r.get(l);c||(c={kind:"Partition",key:o,members:[]},r.set(l,c),a.push(l)),c.members.push(s)}return a.map(s=>r.get(s))}case"distinct-by":{let n=await this.evaluateList(t.source,e),r=new Set,a=[];for(let s of n){let i=new Map(e);i.set(t.loopVar,an(s));let o=await this.evaluate(t.distinctKey,i),l=Ww(o);r.has(l)||(r.add(l),a.push(s))}return a}case"all-statements":{let n=await this.evaluate(t.source,e);return n instanceof kt?n.statement:[]}case"statement-predicate":{let n=await this.evaluate(t.source,e);if(Qf(n)){let r=n.predicate;if(r instanceof D)return r}return}case"statement-value":{let n=await this.evaluate(t.source,e);return Qf(n)?DO(n):void 0}case"date-format":{let n=await this.evaluate(t.source,e),r=n==null?"":ta(n);return r?TO(r,t.format):""}case"number-format":{let n=await this.evaluate(t.source,e),r=n==null?"":ta(n);return r.trim()?MO(r,t.style,t.fractionDigits,t.currencyCode):""}case"numeric-op":{let n={type:t.type};for(let r of t.operands){let a=ja(an(await this.evaluate(r.expr,e)),t.name);n[r.name]={type:EO,decimalLiteral:a}}try{return Dl(n,void 0,_O)}catch(r){throw r instanceof Be?new Pt(r.message):r}}case"reverse":{if(t.source.kind==="reverse")return this.evaluate(t.source.source,e);let n=await this.evaluateReverseIterator(t.source,e);return n!==void 0?n:[...await this.evaluateList(t.source,e)].reverse()}case"windowed-map":{let n=await this.evaluateList(t.source,e);if(n.length<t.windowSize)return[];let r=[];for(let a=0;a+t.windowSize<=n.length;a++){let s=n.slice(a,a+t.windowSize),i=new Map(e);i.set(t.windowVar,s);let o=await this.evaluate(t.windowBody,i);if(o!=null)if(Array.isArray(o))for(let l of o)r.push(l);else r.push(o)}return r}case"pairwise-map":{let n=await this.evaluateList(t.source,e);if(n.length<2)return[];let r=[];for(let a=0;a+1<n.length;a++){let s=new Map(e);s.set(t.firstVar,an(n[a])),s.set(t.secondVar,an(n[a+1]));let i=await this.evaluate(t.pairBody,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}case"scan":{let n=await this.evaluateList(t.source,e);if(n.length===0)return[];let r=await this.evaluate(t.initialState,e),a=[];for(let s of n){let i=new Map(e);i.set(t.stateVar,r),i.set(t.elementVar,an(s));let o=await this.evaluate(t.accumulate,i);a.push(o),r=o}return a}case"list-item-at":{let n=await this.evaluateList(t.source,e),r=an(await this.evaluate(t.itemIndex,e));if(typeof r!="number"||!Number.isInteger(r)||r<0)throw new Pt("ListItemAt itemIndex must be a non-negative integer");return r>=n.length?void 0:n[r]}case"equals":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return Bw(n,r)}case"greater-than":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n>r}case"less-than":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n<r}case"greater-than-or-equal":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n>=r}case"less-than-or-equal":{let n=await this.evaluate(t.left,e),r=await this.evaluate(t.right,e);return typeof n!="number"||typeof r!="number"?!1:n<=r}case"not":{let n=await this.evaluate(t.operand,e);return n===!0?!1:n===!1?!0:void 0}case"and":{for(let n of t.operands)if(await this.evaluate(n,e)!==!0)return!1;return!0}case"or":{for(let n of t.operands)if(await this.evaluate(n,e)===!0)return!0;return!1}case"contains":{let n=await this.evaluateList(t.haystack,e),r=await this.evaluate(t.needle,e);for(let a of n)if(Bw(a,r))return!0;return!1}case"matches":{let n=an(await this.evaluate(t.source,e)),r=Pn(n)?n.value:n;if(typeof r!="string")throw new Pt(`Matches requires a string matchSource; got ${N$(r)}`);try{return Sw(r,t.pattern)}catch(a){throw a instanceof Be?new Pt(a.message):a}}case"is-reference":{let n=await this.evaluate(t.check,e);return n instanceof D||n instanceof V||ia(n)}case"is-embedded":return await this.evaluate(t.check,e)instanceof te;case"is-list":{let n=await this.evaluate(t.check,e);return Array.isArray(n)}case"is-string":return typeof await this.evaluate(t.check,e)=="string";case"is-number":return typeof await this.evaluate(t.check,e)=="number";case"is-boolean":return typeof await this.evaluate(t.check,e)=="boolean";case"statement-object":{let n=await this.evaluate(t.source,e);if(!Qf(n))return;let r=n;return r instanceof Ce||r instanceof et||r instanceof Ge||r instanceof de||r instanceof Ae||r instanceof he?r.object:void 0}case"let":{let n=await this.evaluate(t.bindValue,e),r=new Map(e);return r.set(t.bindName,n),this.evaluate(t.body,r)}case"get-statement-by-name":{let n=await this.evaluate(t.inSubject,e),r=await this.evaluate(t.byName,e);if(!(n instanceof kt)||typeof r!="string")return;for(let a of n.statement)if(a.predicate?.subject?.name===r)return a;return}default:{let n=t;throw new Pt("Unknown expression kind")}}}async renderMarkdownLinks(t){let e=t.object,n="",r=0;for(let a of t.links){if(n+=e.slice(r,a.startOffset),a.target){let s=a.target.subject,i=a.displayText??await this.resolveLabel(s)??s.name;n+=`[${i}](${Mr(s)})`}else n+=a.displayText??a.reference;r=a.endOffset}return n+=e.slice(r),n}async resolveLabel(t){let e=await this.resolver.resolveSubject(t,this.catalog);if(!e)return;let n=ql(e,xO);return typeof n=="string"?n:void 0}async propertyReadSource(t,e){if(t instanceof kt||j$(t))return t;let n=t instanceof D?t.subject:ia(t)?t:void 0;if(n){let r=await this.resolver.resolveSubject(n,this.catalog);if(!r)throw new Pt(`PropertyRead of ${e.name}: its source is a reference to ${T(n)}, which does not resolve.`);return r}throw new Pt(`PropertyRead of ${e.name}: its source is ${NO(t)}, not a resource. Read a list's items with ListMap or ForEach.`)}async evaluateList(t,e){let n=await this.evaluate(t,e);return n==null?[]:Array.isArray(n)?n:[n]}async evaluateReverseIterator(t,e){if(t.kind==="pairwise-map"){let n=await this.evaluateList(t.source,e);if(n.length<2)return[];let r=[];for(let a=n.length-1;a>=1;a--){let s=new Map(e);s.set(t.firstVar,an(n[a-1])),s.set(t.secondVar,an(n[a]));let i=await this.evaluate(t.pairBody,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}if(t.kind==="for-each"){let n=await this.evaluateList(t.source,e),r=[];for(let a=n.length-1;a>=0;a--){let s=new Map(e);s.set(t.loopVar,an(n[a]));let i=await this.evaluate(t.emit,s);if(i!=null)if(Array.isArray(i))for(let o of i)r.push(o);else r.push(i)}return r}if(t.kind==="list-map"){let n=await this.evaluateList(t.source,e),r=[];for(let a=n.length-1;a>=0;a--){let s=new Map(e);s.set(t.loopVar,an(n[a])),r.push(await this.evaluate(t.mapBody,s))}return r}if(t.kind==="windowed-map"){let n=await this.evaluateList(t.source,e);if(n.length<t.windowSize)return[];let r=[];for(let a=n.length-t.windowSize;a>=0;a--){let s=n.slice(a,a+t.windowSize),i=new Map(e);i.set(t.windowVar,s);let o=await this.evaluate(t.windowBody,i);if(o!=null)if(Array.isArray(o))for(let l of o)r.push(l);else r.push(o)}return r}}};function ql(t,e){if(t instanceof kt)return CO(t,e);if(j$(t))return $e(e,$.key)?t.key:$e(e,$.members)?t.members:void 0}function CO(t,e){for(let n of t.statement){let r=vd(n);if(!(!r||!$e(r,e))&&(n instanceof Ce||n instanceof et||n instanceof Ge||n instanceof de||n instanceof Ae||n instanceof he))return n.object}}function jO(t,e){let n=[];for(let r of t.statement){let a=vd(r);if(!(!a||!$e(a,e))){if(r instanceof de)n.push(r.object.subject);else if(r instanceof he)for(let s of r.object)s instanceof D&&n.push(s.subject)}}return n}function vd(t){return t.predicate?.subject}function ta(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(Pn(t))return t.value;if(t instanceof kt)return t.name??"";if(t instanceof D)return t.subject.name;if(ia(t))return t.name;let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function an(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof kt)&&!(t instanceof D)&&!(t instanceof te)&&"value"in t?t.value:t}function qw(t){return t==null?!1:typeof t=="string"||Array.isArray(t)?t.length>0:typeof t=="boolean"?t===!0:!0}function ia(t){return typeof t=="object"&&t!==null&&typeof t.publisher=="string"&&typeof t.package_=="string"&&typeof t.name=="string"}function wd(t,e){return new Pt(`Concat: part ${t} (${dd(e)}) has no value. A part that may be absent must say so: wrap it in a When, or give it a Fallback.`)}function dd(t){switch(t.kind){case"property-read":return`PropertyRead of ${t.readProp.name}`;case"var-ref":return`VarRef ${t.varName}`;case"traverse":return`Traverse through ${t.through.name}`;default:return t.kind}}function NO(t){return Array.isArray(t)?`a list of ${t.length}`:Pn(t)?"a string":typeof t=="object"&&t!==null?"a literal":`a ${typeof t}`}function j$(t){return typeof t=="object"&&t!==null&&t.kind==="Partition"&&Array.isArray(t.members)}function ja(t,e){if(typeof t=="number"&&Number.isFinite(t))return t;throw new Pt(`${e} requires numeric elements; got ${N$(t)}`)}function Xf(t){if(t instanceof V){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);return n<0||r<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,r),version:e.substring(r+1),name:t.name??""}}if(t instanceof D){let e=t.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(ia(t))return{publisher:t.publisher,package_:t.package_,version:"",name:t.name}}var PO=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Kw(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||Pn(t)}function Uw(t){return Pn(t)?t.value:String(t)}function N$(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?`array(${t.length})`:typeof t}function TO(t,e){let n=new Date(t);if(isNaN(n.getTime()))return"";let r=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],i=n.getUTCDate(),o=(l,c=2)=>String(l).padStart(c,"0");switch(e){case"iso-date":return`${r}-${o(n.getUTCMonth()+1)}-${o(i)}`;case"iso-datetime":return`${r}-${o(n.getUTCMonth()+1)}-${o(i)}T${o(n.getUTCHours())}:${o(n.getUTCMinutes())}:${o(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${i}`;case"long-date":return`${a} ${i}, ${r}`;case"year":return String(r);case"month-year":return`${a} ${r}`}}var OO={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},LO={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function RO(t,e){if(e===0)return t;let n=t.startsWith("-"),r=n?t.slice(1):t,a=r.indexOf("."),s=a===-1?r:r.slice(0,a),i=a===-1?"":r.slice(a+1),o=s+i,l=s.length+e,c;return l<=0?c=`0.${"0".repeat(-l)}${o}`:l>=o.length?c=o+"0".repeat(l-o.length):c=`${o.slice(0,l)}.${o.slice(l)}`,c=c.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(c)?`-${c}`:c}function IO(t){let e=t.startsWith("-"),n=e?t.slice(1):t,r=n.indexOf("."),a=r===-1?n:n.slice(0,r),s=r===-1?"":n.slice(r);return`${e?"-":""}${a.replace(/\B(?=(\d{3})+(?!\d))/g,",")}${s}`}function MO(t,e,n,r){let a=Number(t.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(t.trim())?a.toFixed(20).replace(/0+$/,""):t.trim();if(e==="compact"){let o=Math.abs(a),l=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[c,u]of l)if(o>=c){let p=a/c;return`${n===void 0?String(Number(p.toFixed(1))):p.toFixed(n)}${u}`}return n===void 0?String(a):a.toFixed(n)}let i=RO(s,LO[e]??0);switch(n!==void 0&&(i=Number(i).toFixed(n)),e){case"percent":return`${i}%`;case"basis-points":return`${i} bp`;case"currency":{let o=(r??"USD").toUpperCase(),l=OO[o]??`${o} `,c=i.startsWith("-");return`${c?"-":""}${l}${IO(c?i.slice(1):i)}`}default:return i}}function Bw(t,e){if(t==null||e===void 0||e===null)return!1;if(t===e)return!0;let n=typeof t=="object"&&"value"in t?t.value:void 0,r=typeof e=="object"&&"value"in e?e.value:void 0,a=n??t,s=r??e,i=Hw(t),o=Hw(e);return i&&o?i.publisher===o.publisher&&i.package_===o.package_&&i.name===o.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function Hw(t){if(t instanceof D){let e=t.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(t instanceof V){let e=t.namespace??"",n=e.indexOf("/"),r=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=r>=0?e.substring(n+1,r):e.substring(n+1);return{publisher:a,package_:s,name:t.name??""}}if(ia(t))return{publisher:t.publisher,package_:t.package_,name:t.name}}function Qf(t){return t instanceof Ce||t instanceof et||t instanceof Ge||t instanceof de||t instanceof Ae||t instanceof he}function DO(t){return t instanceof Ce||t instanceof et||t instanceof Ge?String(t.object??""):t instanceof de?t.object?.subject?.name??"":t instanceof Ae?"[embedded]":t instanceof he?(t.object??[]).map(e=>{if(e instanceof D)return e.subject.name;let n=e.name;if(n&&n.length>0)return n;let r=e.value;return typeof r=="string"||typeof r=="number"||typeof r=="boolean"?String(r):"[embedded]"}).join(", "):""}function Ww(t){if(t===void 0)return"\0undef";if(t===null)return"\0null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof D){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof kt){let e=t.name??"";return`k:${t.namespace??""}/${e}`}return ia(t)?`u:${t.publisher}/${t.package_}/${t.name}`:`o:${JSON.stringify(t,(e,n)=>e==="sourceKey"?void 0:n)}`}var Ri=class{constructor(t,e,n){this.repository=t,this.parser=e,this.objectParser=n}repository;parser;objectParser;cache=new Map;async resolveSubject(t,e){let n=ge(e,t);if(n)return n;let r=t.version,a=r&&typeof r.major=="number"?`@${r.major}.${r.minor}.${r.patch}`:"",s=`${t.publisher}/${t.package_}${a}`,i=this.cache.get(s);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(t.publisher,t.package_);if(l.length===0)return;let c=r&&typeof r.major=="number"?l.find(p=>{let f=p.metadata?.namespace_?.version;return f&&f.major===r.major&&f.minor===r.minor&&f.patch===r.patch})??l[0]:l[0],u=new at(c,this.repository);i=await this.objectParser.parseKanonaks(u),this.cache.set(s,i)}let o=ge(i,t);if(o)return o;for(let l of i)if(l instanceof V&&l.name===t.name)return l}},FO=class{byLang=new Map;constructor(t){for(let e of t){if(!e.language)continue;let n=[];for(let r of e.rules){if(!r.tokenClass||!r.pattern)continue;let a;try{a=new RegExp(r.pattern,"y")}catch{continue}n.push({tokenClass:r.tokenClass,re:a})}this.byLang.set(e.language,n)}}has(t){return this.byLang.has(t)}highlight(t,e){let n=this.byLang.get(t);return!n||n.length===0?Pi(e):e.split(`
|
|
193
193
|
`).map(r=>this.highlightLine(r,n)).join(`
|
|
194
|
-
`)}highlightLine(t,e){let n="",r=0;for(;r<t.length;){let a=!1;for(let s of e){s.re.lastIndex=r;let i=s.re.exec(t);if(i&&i[0].length>0){n+=`<span class="kan-tok-${s.tokenClass}">${Pi(i[0])}</span>`,r+=i[0].length,a=!0;break}}a||(n+=Pi(t[r]),r++)}return n}},
|
|
194
|
+
`)}highlightLine(t,e){let n="",r=0;for(;r<t.length;){let a=!1;for(let s of e){s.re.lastIndex=r;let i=s.re.exec(t);if(i&&i[0].length>0){n+=`<span class="kan-tok-${s.tokenClass}">${Pi(i[0])}</span>`,r+=i[0].length,a=!0;break}}a||(n+=Pi(t[r]),r++)}return n}},Wl={publisher:"kanonak.org",package_:"derivation",name:"look"},zl={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Un={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Zf={publisher:"kanonak.org",package_:"core-rdf",name:"label"},zw={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},VO={publisher:"kanonak.org",package_:"core-rdf",name:"range"},qO={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},KO={publisher:"kanonak.org",package_:"core-owl",name:"Class"},UO={publisher:"kanonak.org",package_:"look",name:"Hero"},BO={publisher:"kanonak.org",package_:"look",name:"PropertyList"},HO={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},WO={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},zO={publisher:"kanonak.org",package_:"look",name:"ChipRow"},YO={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},GO={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},JO={publisher:"kanonak.org",package_:"look",name:"Instances"},Yw={publisher:"kanonak.org",package_:"look",name:"Markdown"},XO={publisher:"kanonak.org",package_:"look",name:"NavGroup"},QO={publisher:"kanonak.org",package_:"look",name:"nav"},ed={publisher:"kanonak.org",package_:"look",name:"NavLink"},ZO={publisher:"kanonak.org",package_:"look",name:"footer"},eL={publisher:"kanonak.org",package_:"look",name:"text"},tL={publisher:"kanonak.org",package_:"look",name:"links"},Gw={publisher:"kanonak.org",package_:"look",name:"target"},nL={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},rL={publisher:"kanonak.org",package_:"look",name:"Timeline"},aL={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},sL={publisher:"kanonak.org",package_:"look",name:"Figure"},iL={publisher:"kanonak.org",package_:"look",name:"Diagram"},oL={publisher:"kanonak.org",package_:"look",name:"facets"},lL={publisher:"kanonak.org",package_:"look",name:"relation"},cL={publisher:"kanonak.org",package_:"look",name:"encode"},uL={publisher:"kanonak.org",package_:"look",name:"cluster"},pL={publisher:"kanonak.org",package_:"look",name:"connector"},fL={publisher:"kanonak.org",package_:"look",name:"channels"},dL={publisher:"kanonak.org",package_:"look",name:"mapPath"},hL={publisher:"kanonak.org",package_:"look",name:"to"},mL={publisher:"kanonak.org",package_:"look",name:"mark"},gL={publisher:"kanonak.org",package_:"look",name:"expand"},yL={publisher:"kanonak.org",package_:"look",name:"edges"},Jw={publisher:"kanonak.org",package_:"look",name:"nodeTier"},kL={publisher:"kanonak.org",package_:"look",name:"diagramTier"},bL={publisher:"kanonak.org",package_:"look",name:"nodeNote"},vL={publisher:"kanonak.org",package_:"look",name:"Sequence"},wL={publisher:"kanonak.org",package_:"look",name:"numbered"},$L={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},SL={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},AL={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},xL={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},EL={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},_L={publisher:"kanonak.org",package_:"look",name:"labelEdges"},CL={publisher:"kanonak.org",package_:"look",name:"edgeValue"},jL={publisher:"kanonak.org",package_:"look",name:"figureTitle"},NL={publisher:"kanonak.org",package_:"look",name:"titlePosition"},PL=`(function(){
|
|
195
195
|
if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
|
|
196
196
|
var TIERS=['chip','icon','card','full'];
|
|
197
197
|
var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
|
|
@@ -237,7 +237,7 @@ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn'
|
|
|
237
237
|
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';
|
|
238
238
|
b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
|
|
239
239
|
if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
|
|
240
|
-
})();`,jn={chip:56,icon:120,card:240,full:420},
|
|
240
|
+
})();`,jn={chip:56,icon:120,card:240,full:420},TL=["chip","icon","card","full"],OL={56:"chip",120:"icon",240:"card",420:"full"},ht=11,LL={publisher:"kanonak.org",package_:"look",name:"placement"},RL={publisher:"kanonak.org",package_:"look",name:"width"},IL=4,ML={publisher:"kanonak.org",package_:"look",name:"StatRow"},DL={publisher:"kanonak.org",package_:"look",name:"Horizon"},FL={publisher:"kanonak.org",package_:"look",name:"PackageContents"},td={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},VL={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},qL={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},KL={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},UL={publisher:"kanonak.org",package_:"look",name:"packages"},BL={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},HL={publisher:"kanonak.org",package_:"code-grammars",name:"language"},WL={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},zL={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},YL={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},GL={publisher:"kanonak.org",package_:"look",name:"Links"},JL={publisher:"kanonak.org",package_:"link",name:"url"},XL={publisher:"kanonak.org",package_:"link",name:"links"},QL={publisher:"kanonak.org",package_:"look",name:"Distribution"},ZL={publisher:"kanonak.org",package_:"look",name:"alphaPath"},eR={publisher:"kanonak.org",package_:"look",name:"betaPath"},nd={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},tR={publisher:"kanonak.org",package_:"look",name:"SectionNav"},Xw={publisher:"kanonak.org",package_:"look",name:"heading"},nR={publisher:"kanonak.org",package_:"look",name:"note"},rR={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},aR={publisher:"kanonak.org",package_:"look",name:"TimePlot"},sR={publisher:"kanonak.org",package_:"look",name:"Details"},iR={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},oR={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},lR={publisher:"kanonak.org",package_:"look",name:"counts"},cR={publisher:"kanonak.org",package_:"look",name:"skip"},Qw={publisher:"kanonak.org",package_:"derivation",name:"derivations"},uR={publisher:"kanonak.org",package_:"look",name:"laneBy"},pR={publisher:"kanonak.org",package_:"look",name:"stats"},fR={publisher:"kanonak.org",package_:"look",name:"statPath"},dR={publisher:"kanonak.org",package_:"look",name:"statLabel"},Zw={publisher:"kanonak.org",package_:"look",name:"labelPath"},hR={publisher:"kanonak.org",package_:"look",name:"badgePath"},e$={publisher:"kanonak.org",package_:"look",name:"BarMeter"},mR={publisher:"kanonak.org",package_:"look",name:"cellAs"},t$={publisher:"kanonak.org",package_:"look",name:"variants"},gR={publisher:"kanonak.org",package_:"look",name:"when"},yR={publisher:"kanonak.org",package_:"look",name:"property"},n$={publisher:"kanonak.org",package_:"look",name:"equals"},kR={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},bR={publisher:"kanonak.org",package_:"look",name:"ofClass"},vR={publisher:"kanonak.org",package_:"look",name:"direction"},wR={publisher:"kanonak.org",package_:"look",name:"limit"},Kl={publisher:"kanonak.org",package_:"look",name:"orderBy"},r$={publisher:"kanonak.org",package_:"look",name:"track"},Ni={publisher:"kanonak.org",package_:"look",name:"metricPath"},rd={publisher:"kanonak.org",package_:"look",name:"hueBy"},a$={publisher:"kanonak.org",package_:"look",name:"lowerPath"},s$={publisher:"kanonak.org",package_:"look",name:"upperPath"},$R={publisher:"kanonak.org",package_:"look",name:"axisMin"},SR={publisher:"kanonak.org",package_:"look",name:"axisMax"},AR={publisher:"kanonak.org",package_:"look",name:"valueLabel"},i$={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},xR={publisher:"kanonak.org",package_:"look",name:"tierChip"},ER={publisher:"kanonak.org",package_:"look",name:"tierIcon"},_R={publisher:"kanonak.org",package_:"look",name:"tierCard"},CR={publisher:"kanonak.org",package_:"look",name:"tierFull"},jR=[["tierChip",xR],["tierIcon",ER],["tierCard",_R],["tierFull",CR]],aa={publisher:"kanonak.org",package_:"core-rdf",name:"type"},hd={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},o$=6,ad={publisher:"kanonak.org",package_:"look",name:"bands"},NR={publisher:"kanonak.org",package_:"look",name:"title"},PR={publisher:"kanonak.org",package_:"look",name:"eyebrow"},TR={publisher:"kanonak.org",package_:"look",name:"subtitle"},l$={publisher:"kanonak.org",package_:"look",name:"badges"},Nt={publisher:"kanonak.org",package_:"look",name:"source"},OR={publisher:"kanonak.org",package_:"look",name:"via"},LR={publisher:"kanonak.org",package_:"look",name:"size"},RR={publisher:"kanonak.org",package_:"look",name:"icon"},IR={publisher:"kanonak.org",package_:"look",name:"avatar"},MR={publisher:"kanonak.org",package_:"look",name:"contents"},DR={publisher:"kanonak.org",package_:"look",name:"transitive"},FR={publisher:"kanonak.org",package_:"look",name:"chips"},c$={publisher:"kanonak.org",package_:"look",name:"entries"},VR={publisher:"kanonak.org",package_:"look",name:"urlForm"},oa=class Hn{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n,r){let a=r instanceof Error?r.message:String(r),s=`${e}\0${n}\0${a}`;this.expressionFailureSeen.has(s)||(this.expressionFailureSeen.add(s),this.expressionFailureList.push({carrier:e,stage:n,reason:a}));let i=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${i(e)}" ${n==="compile"?"did not compile":"failed to evaluate"}: ${i(a)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,r="="){return Ci.formatResourceUrl(e,r,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,r){return`${this.linkBase(e)}/${n}${r?`/${r}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=UR(e)?void 0:Ul(e);return n?{declaration:n,sourceClass:{publisher:lt(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(sn(e))}lookFromTypeRefs(e){let n=new Set,r=[...e];for(;r.length>0;){let a=r.shift().subject,s=Ze(a);if(n.has(s))continue;n.add(s);let i=ze(this.catalog,a);for(let o of i){let l=Ul(o);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let o of i)for(let l of Bl(o))r.push(l)}if(!n.has(Ze(Un)))for(let a of ze(this.catalog,Un)){let s=Ul(a);if(s)return{declaration:s,sourceClass:{...Un}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let{parts:r}=this.readLookParts(n.declaration,t$);if(r.length===0)return[];let a=Qe(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},i=[];for(let o of r){let l=this.readEmbeddedCarrier(o,gR);if(!l)continue;let c=Ie(l,yR);if(!c)continue;let u=Ie(l,n$);if(u){this.valueItems(e,c).filter(f=>f instanceof D).some(f=>Ze(f.subject)===Ze(u))&&i.push({variant:o,declaredBy:s});continue}let p=nt(l,n$);p!==void 0&&this.readPropertyValueText(e,c)===p&&i.push({variant:o,declaredBy:s})}return i}findCascadedTokens(e){let n=this.explainCascadedTokens(e),r=new Map;for(let[a,s]of n)r.set(a,s.value);return r}explainCascadedTokens(e){let n=new Map,r=(o,l,c)=>{for(let[u,p]of qR(o))n.has(u)||n.set(u,{value:p,sourceNamespace:c?.namespace??o.namespace??"",sourceName:c?.name??o.name,level:l})};r(e,"instance");for(let{variant:o,declaredBy:l}of this.matchingVariants(e))r(o,"variant",l);let a=new Set,s=sn(e);for(;s.length>0;){let o=s.shift(),l=Ze(o.subject);if(a.has(l))continue;a.add(l);let c=l===Ze(Un)?"resource-floor":"class",u=ze(this.catalog,o.subject);if(u.length!==0)for(let p of u){r(p,c);for(let f of Bl(p))s.push(f)}}let i=lt(e);if(i){let o=this.publisherSubject(i);o!==e&&r(o,"publisher")}if(!a.has(Ze(Un))){let o=ze(this.catalog,Un);for(let l of o)r(l,"resource-floor")}return n}async renderSvg(e){let n=Oe(this.catalog,e).label,r=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),i=new Map([["input",e],["label",n],["firstLetter",r],["uri",a],["resourceKey",e.name]]),o=await this.evaluateTier(s.tierChip,i),l=await this.evaluateTier(s.tierIcon,i),c=await this.evaluateTier(s.tierCard,i),u=await this.evaluateTier(s.tierFull,i),p=[...s.unresolved].map(h=>xr("semanticSvg",h,"its tiers are not drawn")).join(""),f=[...this.findCascadedTokens(e)].map(([h,g])=>`--kan-${h}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Er(f)}">
|
|
241
241
|
<style>
|
|
242
242
|
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
243
243
|
.tier-full{display:block}
|
|
@@ -249,14 +249,14 @@ if(document.readyState!=='loading')enhance();else document.addEventListener('DOM
|
|
|
249
249
|
<g class="tier-icon">${l}</g>
|
|
250
250
|
<g class="tier-card">${c}</g>
|
|
251
251
|
<g class="tier-full">${u}</g>
|
|
252
|
-
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new me,n=new
|
|
252
|
+
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new me,n=new Kr(e);this.resolverInstance=new Ri(n,e,new je(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";if("unresolved"in e)return xr("semanticSvg tier",e.unresolved);let r=e.expression,a;try{a=Nn(r,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(i){return this.noteExpressionFailure("look.semanticSvg tier","compile",i)}let s=new cs(this.expressionResolver(),this.catalog);try{if(a.kind==="concat"){let o=[];for(let[l,c]of a.parts.entries()){let u=await s.evaluate(c,n);if(u==null)throw wd(l,c);o.push(f$(c.kind,u))}return o.join("")}let i=await s.evaluate(a,n);return f$(a.kind,i)}catch(i){return this.noteExpressionFailure("look.semanticSvg tier","evaluate",i)}}async evaluateCarrier(e,n){if(!e)return;let r;try{r=Nn(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(l){this.noteExpressionFailure("look band path carrier","compile",l);return}let a=new cs(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),i;try{i=await a.evaluate(r,s)}catch(l){this.noteExpressionFailure("look band path carrier","evaluate",l);return}let o=P$(i);return o===""?void 0:o}async evaluateCarrierNum(e,n){let r=await this.evaluateCarrier(e,n);return r===void 0?NaN:parseFloat(r)}readEmbeddedCarrier(e,n){let r=Bn(e,n);if(r instanceof Ae&&r.object instanceof te)return r.object;if(r instanceof de&&r.object instanceof D){let a=Qe(this.catalog,r.object.subject);if(a)return a;this.noteExpressionFailure(`look ${n.name}`,"compile",new Error(`it names ${T(r.object.subject)}, which resolves to nothing`))}}readLookParts(e,n){let r=[],a=[];for(let{item:s}of bt(e,n))if(s instanceof te)r.push(s);else if(s instanceof D){let i=Qe(this.catalog,s.subject);i?r.push(i):a.push(T(s.subject))}return{parts:r,unresolved:a}}referenceLabel(e){let n=e.subject,r=ze(this.catalog,n);if(r.length===0){let a=Qe(this.catalog,n);a&&r.push(a)}for(let a of r){let s=Oe(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={unresolved:new Set},r=l=>{let{parts:[c],unresolved:u}=this.readLookParts(l,i$);for(let p of u)n.unresolved.add(p);if(c)for(let[p,f]of jR){if(n[p]!==void 0)continue;let{parts:[h],unresolved:[g]}=this.readLookParts(c,f);h?n[p]={expression:h}:g!==void 0&&(n[p]={unresolved:g})}};r(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let l=a.indexOf("@"),c={publisher:a.slice(0,s),package_:a.slice(s+1,l>=0?l:a.length),name:e.name};for(let u of ze(this.catalog,c))r(u)}let i=new Set,o=sn(e);for(;o.length>0;){let l=o.shift(),c=Ze(l.subject);if(i.has(c))continue;i.add(c);let u=ze(this.catalog,l.subject);for(let p of u){r(p);for(let f of Bl(p))o.push(f)}}if(!i.has(Ze(Un)))for(let l of ze(this.catalog,Un))r(l);return n}renderStylesheet(e){let n=this.explainStylesheet(e),r=[];for(let[i,o]of n.tokens)r.push(` --kan-${i}: ${o.value};`);let a=r.length>0?`:root {
|
|
253
253
|
${r.join(`
|
|
254
254
|
`)}
|
|
255
|
-
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${
|
|
255
|
+
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${BR(n)}
|
|
256
256
|
${a}
|
|
257
|
-
${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),r=this.explainBaseStylesheet(lt(e)),a=this.findCascadedLook(e),s=[];return r.css||(r.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${r.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:r,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",r=p=>this.uriOf(p).version??null,a=[],s,i,o,l;for(let p of this.catalog){if(!(p instanceof
|
|
258
|
-
`).join("");if(r.length===0){let c=n.declaration.unresolvedPredicates;if(c.length>0){let u=c.map(p=>`${p.key} (authored by ${p.sourceDoc})`).join(", ");return`${s}<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${u}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`}return`${s}<!-- LookRenderer: look declaration has no bands -->`}let i=lt(e),o=this.collectSectionHeadings(r);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let l=[];for(let c of r){let u=os(c);u&&Ye(u,
|
|
259
|
-
`)}applyBandPlacement(e,n){let r=nt(e,
|
|
257
|
+
${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),r=this.explainBaseStylesheet(lt(e)),a=this.findCascadedLook(e),s=[];return r.css||(r.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${r.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:r,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",r=p=>this.uriOf(p).version??null,a=[],s,i,o,l;for(let p of this.catalog){if(!(p instanceof V)||p.name!=="base-stylesheet")continue;let f=p.namespace||"";if(f.startsWith(`${e}/look-styles@`)){a.push(f);let h=r(p);h&&(!i||_e(h,i)>0)&&(s=p,i=h)}else if(f.startsWith("kanonak.org/look-styles@")){a.push(f);let h=r(p);h&&(!l||_e(h,l)>0)&&(o=p,l=h)}}let c=s??o;if(!c)return{problem:"no-look-styles-in-catalog",candidates:a};let u=c===s?"publisher-override":"universal-default";for(let p of c.statement){let f=p.predicate?.subject;if(f&&`${f.publisher}/${f.package_}/${f.name}`===n&&p instanceof Ce)return{css:p.object,sourceNamespace:c.namespace||"",scope:u,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:c.namespace||"",scope:u,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let{parts:r,unresolved:a}=this.readLookParts(n.declaration,ad),s=[...a.map(c=>xr("band",c)),...this.readLookParts(n.declaration,t$).unresolved.map(c=>xr("variant",c,"its tokens are not applied"))].map(c=>`${c}
|
|
258
|
+
`).join("");if(r.length===0){let c=n.declaration.unresolvedPredicates;if(c.length>0){let u=c.map(p=>`${p.key} (authored by ${p.sourceDoc})`).join(", ");return`${s}<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${u}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`}return`${s}<!-- LookRenderer: look declaration has no bands -->`}let i=lt(e),o=this.collectSectionHeadings(r);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let l=[];for(let c of r){let u=os(c);u&&Ye(u,nd)&&l.push('<div style="clear:both"></div>'),l.push(this.applyBandPlacement(c,await this.renderBand(c,e,i,o)))}return l.push('<div style="clear:both"></div>'),s+l.join(`
|
|
259
|
+
`)}applyBandPlacement(e,n){let r=nt(e,LL);if(r!=="floatLeft"&&r!=="floatRight")return n;let a=r==="floatLeft"?"left":"right",s=nt(e,RL),i=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${i};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let r of e){let a=os(r);if(!a||!Ye(a,nd))continue;let s=nt(r,Xw);s&&n.push({slug:d$(s),label:s})}return n}publisherSubject(e){for(let r of this.catalog)if(!(!(r instanceof V)||lt(r)!==e||!sn(r).some(a=>Ye(a.subject,VL))))return ze(this.catalog,{publisher:e,package_:this.uriOf(r).package_,name:r.name})[0]??r;let n=new V;return n.namespace=e,n.name=e,n.statement=[de.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Ce.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(r=>r.publisher===Un.publisher&&r.package_===Un.package_&&r.name===Un.name||r.publisher===td.publisher&&r.package_===td.package_&&r.name===td.name)(n.sourceClass):!1}renderPackageVersionList(e,n,r){let a=lt(r),s=this.renderNavGroup(r,a),i=this.renderBreadcrumb(r,a,{bareOverview:!0}),o=n.map(c=>`<a class="kan-resource-card" href="${O(this.packageHref(a,e,c))}/"><h3 class="kan-resource-card-title">${O(c)}</h3></a>`).join(`
|
|
260
260
|
`),l=`<header class="kan-hero">
|
|
261
261
|
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
262
262
|
<h1 class="kan-hero-title">${O(e)}</h1>
|
|
@@ -297,60 +297,60 @@ ${i}${r}
|
|
|
297
297
|
${c}
|
|
298
298
|
</body>
|
|
299
299
|
</html>
|
|
300
|
-
`}hasSvgDerivation(e){let n=new Set,r=sn(e);for(;r.length>0;){let a=r.shift(),s=Ze(a.subject);if(n.has(s))continue;n.add(s);let i=Qe(this.catalog,a.subject);if(i){for(let o of this.valueItems(i,Gw))if(o instanceof te)for(let l of o.statement){if(!(l instanceof de)||!oa(l,"kanonak.org","derivation","format")||!(l.object instanceof D))continue;let c=l.object.subject;if(c.publisher==="kanonak.org"&&c.package_==="formats"&&c.name==="svg")return!0}for(let o of Ul(i))r.push(o)}}return!1}static BAND_DISPATCH=[[eR,(e,n)=>e.renderSectionNav(n.sections)],[KO,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[UO,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[BO,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[HO,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[WO,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[zO,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[YO,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[GO,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[Hw,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[YL,(e,n)=>e.renderLinks(n.band,n.instance)],[JO,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[tL,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[nL,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[rL,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[aL,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[sL,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[bL,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[wL,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[IL,(e,n)=>e.renderStatRow(n.band,n.instance)],[ML,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[DL,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[qL,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[VL,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[XL,(e,n)=>e.renderDistribution(n.band,n.instance)],[ed,(e,n)=>e.renderSectionHeading(n.band)],[nR,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[rR,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[aR,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[sR,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[iR,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[Xw,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return Un.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=xe(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:lt(e),package_:"",name:e.name}}async renderBand(e,n,r,a=[],s=""){let i=os(e);if(!i)return"<!-- LookRenderer: band has no rdf:type -->";let o={band:e,instance:n,contextPublisher:r,sections:a,pathPrefix:s};for(let[l,c]of Un.BAND_DISPATCH)if(Ye(i,l))return c(this,o);return`<!-- LookRenderer: unsupported band ${i.publisher}/${i.package_}/${i.name} -->`}async collectTrackedSeries(e,n,r,a){let{hueBy:s,lowerPath:i,upperPath:o}=a??{},l=new Map,c=e.length;for(let u=0;u<e.length;u++){let p=e[u],f=this.readPropertyValueReferences(p,n);for(let h of f){let g=Qe(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!g)continue;let m=h.subject.name,y=l.get(m);y||(y={key:m,label:Oe(this.catalog,g).label,points:new Array(c).fill(null),...i?{lower:new Array(c).fill(null)}:{},...o?{upper:new Array(c).fill(null)}:{}},l.set(m,y));let v=await this.evaluateCarrierNum(r,g);if(Number.isFinite(v)&&(y.points[u]=v),i&&y.lower){let k=await this.evaluateCarrierNum(i,g);Number.isFinite(k)&&(y.lower[u]=k)}if(o&&y.upper){let k=await this.evaluateCarrierNum(o,g);Number.isFinite(k)&&(y.upper[u]=k)}if(s){let k=await this.evaluateCarrierNum(s,g);Number.isFinite(k)&&(y.hue=k)}y.lastSubject=g}}return[...l.values()]}hrefForSubject(e,n,r="="){let a=this.uriOf(e),s=a.package_,i=a.version;return this.resourceHref({publisher:lt(e),package_:s,name:e.name,...i?{version:i}:{}},n,r)}async renderVersionDiff(e,n){let r=Ie(e,Nt);if(!r)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,Ni),s=Ie(e,e$);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let i=Ie(e,Vl),o=this.readEmbeddedCarrier(e,td),l=this.findInstancesOfClass(r,this.readTransitive(e));if(l.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=f=>i?this.readPropertyValueText(f,i)??"":"",u=l.slice().sort((f,h)=>c(f).localeCompare(c(h))),p=await this.collectTrackedSeries(u,s,a,{hueBy:o});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((f,h)=>{let g=f.hue!==void 0?f.hue:Math.round(h*360/p.length),m=f.points.filter(A=>A!==null);if(m.length===0)return"";let y=m[0],v=m[m.length-1],k=v-y,w;if(Math.abs(k)>=.005){let A=k>0?"up":"down",C=k>0?"\u25B2":"\u25BC";w=`<span class="kan-vdiff-delta ${A}">${k>0?"+":""}${k.toFixed(2)} ${C}</span>`}else w='<span class="kan-vdiff-delta flat">\u2014</span>';let S=f.lastSubject&&this.isLinkable(lt(f.lastSubject),n)?`<a href="${O(this.hrefForSubject(f.lastSubject,n))}">${O(f.label)}</a>`:O(f.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${S}</span><span class="kan-vdiff-start">${y.toFixed(2)}</span>`+this.sparkline(f.points,g)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+w+"</div>"}).join("")}</section>`}sparkline(e,n){let r=`hsl(${n},65%,60%)`,a=e.filter(f=>f!==null);if(a.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let s=Math.min(...a),i=Math.max(...a)-s,o=e.length,l=f=>o<=1?132/2:4+f/(o-1)*124,c=f=>i<1e-9?30/2:26-(f-s)/i*22,u=[],p=[];return e.forEach((f,h)=>{if(f===null)return;let g=l(h),m=c(f);u.push(`${g.toFixed(1)},${m.toFixed(1)}`),p.push(`<circle cx="${g.toFixed(1)}" cy="${m.toFixed(1)}" r="2" fill="${r}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${u.join(" ")}" fill="none" stroke="${r}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+p.join("")+"</svg>"}svgUrlForSubject(e,n,r="="){return`${this.hrefForSubject(e,n,r)}.svg`}renderFigure(e,n,r){let a=n,s=Ie(e,Nt);if(s){let c=Qe(this.catalog,s);c&&(a=c)}let i=this.svgUrlForSubject(a,r),o=Oe(this.catalog,a).label,l=nt(e,OR);return`<figure class="kan-figure${l==="small"||l==="medium"||l==="large"?` kan-figure-${l}`:""}"><img class="kan-figure-img" src="${O(i)}" alt="${O(o)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,r,a=0,s=new Set){let{parts:i,unresolved:o}=this.readLookParts(e,iL);if(i.length===0&&o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let l=o.map(m=>Ar("facet",m));for(let m of i){let y=Ie(m,oL);if(!y){l.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let v=Ie(m,lL),k=this.resolveFacetNodes(n,y);if(k.length===0){l.push(`<!-- LookRenderer.Diagram: relation ${y.publisher}/${y.package_}/${y.name} resolved to 0 instances -->`);continue}let{channels:w,unresolved:S}=await this.resolveFacetChannels(m,k);l.push(...S.map(H=>Ar("channel",H)));let A=Kn(m,hL),C=A instanceof Ae&&A.object instanceof te?A.object:void 0,N=nt(m,zw),_=N&&jn[N]!==void 0?jn[N]:void 0,B=_??this.classTierSize(k),X=TL[B??jn.icon]??"icon",pe=this.readEmbeddedCarrier(m,kL),J=Ie(m,mL),Q=J?Qe(this.catalog,J):void 0;if(Q){l.push(await this.renderDiagramExpand(k,Q,r,a,s,pe,_));continue}if(v&&Ye(v,uL)){let H=Ie(m,gL),K=this.facetEdgeLabel(m,H??y),E=this.readEmbeddedCarrier(m,_L);l.push(await this.embedTiers(X,U=>H?this.renderDiagramDag(k,H,w,r,U,K,E):this.renderDiagramConnector(n,k,w,r,U,K,E)));continue}if(v&&!Ye(v,cL)){l.push(`<!-- LookRenderer.Diagram: unknown encode role ${v.publisher}/${v.package_}/${v.name} -->`);continue}l.push(C?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(k,w,C,r,B)}</div></div>`:await this.embedTiers(X,H=>this.renderDiagramCluster(k,w,void 0,r,H)))}let c=nt(e,CL),u=nt(e,jL),p=m=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${m}">${O(c)}</div>`,f=c&&u!=="bottom"?p("margin:0 0 .5rem"):"",h=c&&u==="bottom"?p("margin:.5rem 0 0"):"",g="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,g=`<script>${NL}</script>`),`<section class="kan-diagram">${f}${l.join("")}${h}${g}</section>`}async embedTiers(e,n){let r=[];for(let a of PL){let s=await n(jn[a]);r.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${r.join("")}</div>`}async renderDiagramExpand(e,n,r,a,s,i,o){let l=[];for(let c of e){let u=`${c.namespace??""}/${c.name}`,p=await this.diagramNodeRow(c,r,o??56,i),f=a<RL&&!s.has(u)?await this.renderDiagram(n,c,r,a+1,new Set([...s,u])):"",h=f?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${f}</div>`:"";l.push(`<div class="kan-diagram-node" style="margin:6px 0">${p}${h}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${l.join("")}</div></figure>`}async diagramNodeRow(e,n,r=56,a){let s=this.hrefForSubject(e,n),i=this.svgUrlForSubject(e,n),o=Oe(this.catalog,e).label,l=a?await this.evaluateCarrier(a,e):void 0,c=l!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${O(l)}</span>`:"";return`<a href="${O(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${O(i)}" width="${r}" height="${r}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${O(o)}</span>${c}</span></a>`}classTierSize(e){let n;for(let r of e)for(let a of sn(r)){let s=Qe(this.catalog,a.subject);if(!s)continue;let i=nt(s,yL),o=i?jn[i]:void 0;o!==void 0&&(n=n===void 0?o:Math.max(n,o))}return n}resolveFacetNodes(e,n){let r=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,i=Qe(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});i&&r.push(i)}return r}async resolveFacetChannels(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,pL),s=[];for(let i of r){let o=this.readEmbeddedCarrier(i,fL),l=nt(i,dL);if(!o||!l)continue;let c=[];for(let g of n){let m=await this.evaluateCarrierNum(o,g);c.push(Number.isFinite(m)?m:NaN)}let u=c.filter(g=>Number.isFinite(g)),p=u.length?Math.min(...u):0,f=(u.length?Math.max(...u):0)-p,h=c.map(g=>Number.isFinite(g)&&f>0?(g-p)/f:.5);s.push({to:l,norm:h})}return{channels:s,unresolved:a}}facetEdgeLabel(e,n){let r=nt(e,xL);if(r)return r;if(VR(e,EL)&&n){let a=Qe(this.catalog,n);if(a)return Oe(this.catalog,a).label}}async edgeText(e,n,r){let a=r&&n?await this.evaluateCarrier(r,n):void 0,s=[e,a].filter(i=>!!i);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,r){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)">${O(r)}</text>`}async renderDiagramCluster(e,n,r,a,s){let i=s??132,o=18,l=18,c=n.find(m=>m.to==="opacity");if(r){let m=[];for(let y=0;y<e.length;y++){let v=e[y],k=await this.renderBand(r,v,a),w=this.hrefForSubject(v,a),S=Oe(this.catalog,v).label,A=c?`opacity:${(.4+c.norm[y]*.6).toFixed(2)};`:"";m.push(`<a class="kan-diagram-mark" href="${O(w)}" style="display:block;text-decoration:none;${A}">${k}<span class="kan-diagram-mark-label">${O(S)}</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">${m.join("")}</div></figure>`}let u=Math.min(e.length,4),p=Math.ceil(e.length/u),f=l*2+u*i+(u-1)*o,h=l*2+p*i+(p-1)*o,g=e.map((m,y)=>{let v=y%u,k=Math.floor(y/u),w=l+v*(i+o),S=l+k*(i+o),A=c?.4+c.norm[y]*.6:1;return this.diagramTile(m,w,S,i,a,A)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${f} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${g}</svg></figure>`}async renderDiagramConnector(e,n,r,a,s,i,o){let l=s??120,c=24,u=130,p=18,f=r.find(X=>X.to==="thickness"),h=r.find(X=>X.to==="opacity"),g=n.length,m=g*l+(g-1)*c,y=p*2+m,v=p*2+l+u+l,k=p,w=p+(m-l)/2,S=p+l+u,A=`kan-arrow-${this.diagramArrowSeq++}`,C=[],N=[],_=[];for(let X=0;X<n.length;X++){let pe=n[X],J=p+X*(l+c),Q=k+l,H=w+l/2,K=S-ht,E=J+l/2,U=(Q+S)/2,R=f?1.5+f.norm[X]*5.5:2,ce=h?.4+h.norm[X]*.6:1,ae=h?` stroke-opacity="${ce.toFixed(2)}"`:"";C.push(`<path d="M${Q.toFixed(1)},${H.toFixed(1)} C${U.toFixed(1)},${H.toFixed(1)} ${U.toFixed(1)},${E.toFixed(1)} ${K.toFixed(1)},${E.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${R.toFixed(1)}"${ae} marker-end="url(#${A})"/>`);let se=await this.edgeText(i,pe,o);se&&N.push(this.edgeLabelEl((Q+S)/2,(H+E)/2-5,se)),_.push(this.diagramTile(pe,S,J,l,a,h?ce:1))}let B=this.diagramTile(e,k,w,l,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${y.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(A,"var(--kan-border)")}${C.join("")}${N.join("")}${B}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${ht} ${ht}" refX="0" refY="${(ht/2).toFixed(1)}" markerWidth="${ht}" markerHeight="${ht}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${ht},${(ht/2).toFixed(1)} L0,${ht-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,r,a,s,i,o){let l=s??110,c=110,u=22,p=18,f=new Map(e.map((R,ce)=>[R.name,ce])),h=new Set(e.map(R=>R.name)),g=new Map(e.map(R=>[R.name,[]])),m=new Map(e.map(R=>[R.name,[]]));for(let R of e)for(let ce of this.readPropertyValueReferences(R,n)){let ae=ce.subject.name;ae!==R.name&&h.has(ae)&&(g.get(R.name).push(ae),m.get(ae).push(R.name))}let y=new Map,v=new Set,k=R=>{let ce=y.get(R);if(ce!==void 0)return ce;if(v.has(R))return 0;v.add(R);let ae=0;for(let se of m.get(R)??[])ae=Math.max(ae,k(se)+1);return v.delete(R),y.set(R,ae),ae};for(let R of e)k(R.name);let w=Math.min(...y.values());if(w>0)for(let R of[...y.keys()])y.set(R,y.get(R)-w);let S=Math.max(0,...y.values()),A=Array.from({length:S+1},()=>[]);for(let R of e)A[y.get(R.name)].push(R);let C=Math.max(1,...A.map(R=>R.length)),N=!1;for(let[R,ce]of g)for(let ae of ce)y.get(ae)<=y.get(R)&&(N=!0);let _=N?84:0,B=C*l+(C-1)*u,X=p*2+(S+1)*l+S*c,pe=p*2+_+B,J=new Map;A.forEach((R,ce)=>{let ae=R.length*l+(R.length-1)*u,se=p+_+(B-ae)/2;R.forEach((Ne,Ve)=>J.set(Ne.name,{x:p+ce*(l+c),y:se+Ve*(l+u)}))});let Q=r.find(R=>R.to==="thickness"),H=`kan-arrow-${this.diagramArrowSeq++}`,K=[],E=[];for(let[R,ce]of g){let ae=J.get(R);for(let se of ce){let Ne=J.get(se),Ve=Ne.x>=ae.x,Le=Q?1.5+Q.norm[f.get(R)]*4.5:2,Re,Ke,We;if(Ve){let Te=ae.x+l,Ot=ae.y+l/2,Wt=Ne.x-ht,Wn=Ne.y+l/2,$n=(Te+Wt)/2;Re=`M${Te.toFixed(1)},${Ot.toFixed(1)} C${$n.toFixed(1)},${Ot.toFixed(1)} ${$n.toFixed(1)},${Wn.toFixed(1)} ${Wt.toFixed(1)},${Wn.toFixed(1)}`,Ke=(Te+Wt)/2,We=(Ot+Wn)/2-5}else{let Te=ae.x+l/2,Ot=ae.y,Wt=Ne.x+l/2,Wn=Ne.y-ht,$n=p+_*.2;Re=`M${Te.toFixed(1)},${Ot.toFixed(1)} C${Te.toFixed(1)},${$n.toFixed(1)} ${Wt.toFixed(1)},${$n.toFixed(1)} ${Wt.toFixed(1)},${Wn.toFixed(1)}`,Ke=(Te+Wt)/2,We=$n+4}let pt=Ve?"":' stroke-dasharray="6 4"';K.push(`<path d="${Re}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${Le.toFixed(1)}" stroke-opacity="0.75"${pt} marker-end="url(#${H})"/>`);let yt=await this.edgeText(i,e[f.get(R)],o);yt&&E.push(this.edgeLabelEl(Ke,We,yt))}}let U=e.map(R=>{let ce=J.get(R.name);return this.diagramTile(R,ce.x,ce.y,l,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${X.toFixed(0)} ${pe.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(H,"var(--kan-accent)")}${K.join("")}${E.join("")}${U}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return ze(this.catalog,e)[0]}async renderSequence(e,n,r){let a=Ql(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let N of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${N.publisher}/${N.package_}/${N.name}, which is not a declared connector; ignored -->`);for(let N of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${N.prev.name} then ${N.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:i,lifelines:o}=a,l=na;if(o.length===0)return`${s.join(`
|
|
300
|
+
`}hasSvgDerivation(e){let n=new Set,r=sn(e);for(;r.length>0;){let a=r.shift(),s=Ze(a.subject);if(n.has(s))continue;n.add(s);let i=Qe(this.catalog,a.subject);if(i){for(let o of this.valueItems(i,Qw))if(o instanceof te)for(let l of o.statement){if(!(l instanceof de)||!la(l,"kanonak.org","derivation","format")||!(l.object instanceof D))continue;let c=l.object.subject;if(c.publisher==="kanonak.org"&&c.package_==="formats"&&c.name==="svg")return!0}for(let o of Bl(i))r.push(o)}}return!1}static BAND_DISPATCH=[[tR,(e,n)=>e.renderSectionNav(n.sections)],[UO,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[BO,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[HO,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[WO,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[zO,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[YO,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[GO,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[JO,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[Yw,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[GL,(e,n)=>e.renderLinks(n.band,n.instance)],[XO,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[nL,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[rL,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[aL,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[sL,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[iL,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[vL,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[$L,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[ML,(e,n)=>e.renderStatRow(n.band,n.instance)],[DL,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[FL,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[qL,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[KL,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[QL,(e,n)=>e.renderDistribution(n.band,n.instance)],[nd,(e,n)=>e.renderSectionHeading(n.band)],[rR,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[aR,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[sR,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[iR,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[oR,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[e$,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return Hn.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=xe(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:lt(e),package_:"",name:e.name}}async renderBand(e,n,r,a=[],s=""){let i=os(e);if(!i)return"<!-- LookRenderer: band has no rdf:type -->";let o={band:e,instance:n,contextPublisher:r,sections:a,pathPrefix:s};for(let[l,c]of Hn.BAND_DISPATCH)if(Ye(i,l))return c(this,o);return`<!-- LookRenderer: unsupported band ${i.publisher}/${i.package_}/${i.name} -->`}async collectTrackedSeries(e,n,r,a){let{hueBy:s,lowerPath:i,upperPath:o}=a??{},l=new Map,c=e.length;for(let u=0;u<e.length;u++){let p=e[u],f=this.readPropertyValueReferences(p,n);for(let h of f){let g=Qe(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!g)continue;let m=h.subject.name,y=l.get(m);y||(y={key:m,label:Oe(this.catalog,g).label,points:new Array(c).fill(null),...i?{lower:new Array(c).fill(null)}:{},...o?{upper:new Array(c).fill(null)}:{}},l.set(m,y));let v=await this.evaluateCarrierNum(r,g);if(Number.isFinite(v)&&(y.points[u]=v),i&&y.lower){let k=await this.evaluateCarrierNum(i,g);Number.isFinite(k)&&(y.lower[u]=k)}if(o&&y.upper){let k=await this.evaluateCarrierNum(o,g);Number.isFinite(k)&&(y.upper[u]=k)}if(s){let k=await this.evaluateCarrierNum(s,g);Number.isFinite(k)&&(y.hue=k)}y.lastSubject=g}}return[...l.values()]}hrefForSubject(e,n,r="="){let a=this.uriOf(e),s=a.package_,i=a.version;return this.resourceHref({publisher:lt(e),package_:s,name:e.name,...i?{version:i}:{}},n,r)}async renderVersionDiff(e,n){let r=Ie(e,Nt);if(!r)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,Ni),s=Ie(e,r$);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let i=Ie(e,Kl),o=this.readEmbeddedCarrier(e,rd),l=this.findInstancesOfClass(r,this.readTransitive(e));if(l.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=f=>i?this.readPropertyValueText(f,i)??"":"",u=l.slice().sort((f,h)=>c(f).localeCompare(c(h))),p=await this.collectTrackedSeries(u,s,a,{hueBy:o});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((f,h)=>{let g=f.hue!==void 0?f.hue:Math.round(h*360/p.length),m=f.points.filter(A=>A!==null);if(m.length===0)return"";let y=m[0],v=m[m.length-1],k=v-y,w;if(Math.abs(k)>=.005){let A=k>0?"up":"down",C=k>0?"\u25B2":"\u25BC";w=`<span class="kan-vdiff-delta ${A}">${k>0?"+":""}${k.toFixed(2)} ${C}</span>`}else w='<span class="kan-vdiff-delta flat">\u2014</span>';let S=f.lastSubject&&this.isLinkable(lt(f.lastSubject),n)?`<a href="${O(this.hrefForSubject(f.lastSubject,n))}">${O(f.label)}</a>`:O(f.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${S}</span><span class="kan-vdiff-start">${y.toFixed(2)}</span>`+this.sparkline(f.points,g)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+w+"</div>"}).join("")}</section>`}sparkline(e,n){let r=`hsl(${n},65%,60%)`,a=e.filter(f=>f!==null);if(a.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let s=Math.min(...a),i=Math.max(...a)-s,o=e.length,l=f=>o<=1?132/2:4+f/(o-1)*124,c=f=>i<1e-9?30/2:26-(f-s)/i*22,u=[],p=[];return e.forEach((f,h)=>{if(f===null)return;let g=l(h),m=c(f);u.push(`${g.toFixed(1)},${m.toFixed(1)}`),p.push(`<circle cx="${g.toFixed(1)}" cy="${m.toFixed(1)}" r="2" fill="${r}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${u.join(" ")}" fill="none" stroke="${r}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+p.join("")+"</svg>"}svgUrlForSubject(e,n,r="="){return`${this.hrefForSubject(e,n,r)}.svg`}renderFigure(e,n,r){let a=n,s=Ie(e,Nt);if(s){let c=Qe(this.catalog,s);c&&(a=c)}let i=this.svgUrlForSubject(a,r),o=Oe(this.catalog,a).label,l=nt(e,LR);return`<figure class="kan-figure${l==="small"||l==="medium"||l==="large"?` kan-figure-${l}`:""}"><img class="kan-figure-img" src="${O(i)}" alt="${O(o)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,r,a=0,s=new Set){let{parts:i,unresolved:o}=this.readLookParts(e,oL);if(i.length===0&&o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let l=o.map(m=>xr("facet",m));for(let m of i){let y=Ie(m,lL);if(!y){l.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let v=Ie(m,cL),k=this.resolveFacetNodes(n,y);if(k.length===0){l.push(`<!-- LookRenderer.Diagram: relation ${y.publisher}/${y.package_}/${y.name} resolved to 0 instances -->`);continue}let{channels:w,unresolved:S}=await this.resolveFacetChannels(m,k);l.push(...S.map(H=>xr("channel",H)));let A=Bn(m,mL),C=A instanceof Ae&&A.object instanceof te?A.object:void 0,N=nt(m,Jw),_=N&&jn[N]!==void 0?jn[N]:void 0,B=_??this.classTierSize(k),X=OL[B??jn.icon]??"icon",pe=this.readEmbeddedCarrier(m,bL),J=Ie(m,gL),Q=J?Qe(this.catalog,J):void 0;if(Q){l.push(await this.renderDiagramExpand(k,Q,r,a,s,pe,_));continue}if(v&&Ye(v,pL)){let H=Ie(m,yL),K=this.facetEdgeLabel(m,H??y),E=this.readEmbeddedCarrier(m,CL);l.push(await this.embedTiers(X,U=>H?this.renderDiagramDag(k,H,w,r,U,K,E):this.renderDiagramConnector(n,k,w,r,U,K,E)));continue}if(v&&!Ye(v,uL)){l.push(`<!-- LookRenderer.Diagram: unknown encode role ${v.publisher}/${v.package_}/${v.name} -->`);continue}l.push(C?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(k,w,C,r,B)}</div></div>`:await this.embedTiers(X,H=>this.renderDiagramCluster(k,w,void 0,r,H)))}let c=nt(e,jL),u=nt(e,NL),p=m=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${m}">${O(c)}</div>`,f=c&&u!=="bottom"?p("margin:0 0 .5rem"):"",h=c&&u==="bottom"?p("margin:.5rem 0 0"):"",g="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,g=`<script>${PL}</script>`),`<section class="kan-diagram">${f}${l.join("")}${h}${g}</section>`}async embedTiers(e,n){let r=[];for(let a of TL){let s=await n(jn[a]);r.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${r.join("")}</div>`}async renderDiagramExpand(e,n,r,a,s,i,o){let l=[];for(let c of e){let u=`${c.namespace??""}/${c.name}`,p=await this.diagramNodeRow(c,r,o??56,i),f=a<IL&&!s.has(u)?await this.renderDiagram(n,c,r,a+1,new Set([...s,u])):"",h=f?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${f}</div>`:"";l.push(`<div class="kan-diagram-node" style="margin:6px 0">${p}${h}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${l.join("")}</div></figure>`}async diagramNodeRow(e,n,r=56,a){let s=this.hrefForSubject(e,n),i=this.svgUrlForSubject(e,n),o=Oe(this.catalog,e).label,l=a?await this.evaluateCarrier(a,e):void 0,c=l!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${O(l)}</span>`:"";return`<a href="${O(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${O(i)}" width="${r}" height="${r}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${O(o)}</span>${c}</span></a>`}classTierSize(e){let n;for(let r of e)for(let a of sn(r)){let s=Qe(this.catalog,a.subject);if(!s)continue;let i=nt(s,kL),o=i?jn[i]:void 0;o!==void 0&&(n=n===void 0?o:Math.max(n,o))}return n}resolveFacetNodes(e,n){let r=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,i=Qe(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});i&&r.push(i)}return r}async resolveFacetChannels(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,fL),s=[];for(let i of r){let o=this.readEmbeddedCarrier(i,dL),l=nt(i,hL);if(!o||!l)continue;let c=[];for(let g of n){let m=await this.evaluateCarrierNum(o,g);c.push(Number.isFinite(m)?m:NaN)}let u=c.filter(g=>Number.isFinite(g)),p=u.length?Math.min(...u):0,f=(u.length?Math.max(...u):0)-p,h=c.map(g=>Number.isFinite(g)&&f>0?(g-p)/f:.5);s.push({to:l,norm:h})}return{channels:s,unresolved:a}}facetEdgeLabel(e,n){let r=nt(e,EL);if(r)return r;if(KR(e,_L)&&n){let a=Qe(this.catalog,n);if(a)return Oe(this.catalog,a).label}}async edgeText(e,n,r){let a=r&&n?await this.evaluateCarrier(r,n):void 0,s=[e,a].filter(i=>!!i);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,r){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)">${O(r)}</text>`}async renderDiagramCluster(e,n,r,a,s){let i=s??132,o=18,l=18,c=n.find(m=>m.to==="opacity");if(r){let m=[];for(let y=0;y<e.length;y++){let v=e[y],k=await this.renderBand(r,v,a),w=this.hrefForSubject(v,a),S=Oe(this.catalog,v).label,A=c?`opacity:${(.4+c.norm[y]*.6).toFixed(2)};`:"";m.push(`<a class="kan-diagram-mark" href="${O(w)}" style="display:block;text-decoration:none;${A}">${k}<span class="kan-diagram-mark-label">${O(S)}</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">${m.join("")}</div></figure>`}let u=Math.min(e.length,4),p=Math.ceil(e.length/u),f=l*2+u*i+(u-1)*o,h=l*2+p*i+(p-1)*o,g=e.map((m,y)=>{let v=y%u,k=Math.floor(y/u),w=l+v*(i+o),S=l+k*(i+o),A=c?.4+c.norm[y]*.6:1;return this.diagramTile(m,w,S,i,a,A)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${f} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${g}</svg></figure>`}async renderDiagramConnector(e,n,r,a,s,i,o){let l=s??120,c=24,u=130,p=18,f=r.find(X=>X.to==="thickness"),h=r.find(X=>X.to==="opacity"),g=n.length,m=g*l+(g-1)*c,y=p*2+m,v=p*2+l+u+l,k=p,w=p+(m-l)/2,S=p+l+u,A=`kan-arrow-${this.diagramArrowSeq++}`,C=[],N=[],_=[];for(let X=0;X<n.length;X++){let pe=n[X],J=p+X*(l+c),Q=k+l,H=w+l/2,K=S-ht,E=J+l/2,U=(Q+S)/2,R=f?1.5+f.norm[X]*5.5:2,ce=h?.4+h.norm[X]*.6:1,ae=h?` stroke-opacity="${ce.toFixed(2)}"`:"";C.push(`<path d="M${Q.toFixed(1)},${H.toFixed(1)} C${U.toFixed(1)},${H.toFixed(1)} ${U.toFixed(1)},${E.toFixed(1)} ${K.toFixed(1)},${E.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${R.toFixed(1)}"${ae} marker-end="url(#${A})"/>`);let se=await this.edgeText(i,pe,o);se&&N.push(this.edgeLabelEl((Q+S)/2,(H+E)/2-5,se)),_.push(this.diagramTile(pe,S,J,l,a,h?ce:1))}let B=this.diagramTile(e,k,w,l,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${y.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(A,"var(--kan-border)")}${C.join("")}${N.join("")}${B}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${ht} ${ht}" refX="0" refY="${(ht/2).toFixed(1)}" markerWidth="${ht}" markerHeight="${ht}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${ht},${(ht/2).toFixed(1)} L0,${ht-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,r,a,s,i,o){let l=s??110,c=110,u=22,p=18,f=new Map(e.map((R,ce)=>[R.name,ce])),h=new Set(e.map(R=>R.name)),g=new Map(e.map(R=>[R.name,[]])),m=new Map(e.map(R=>[R.name,[]]));for(let R of e)for(let ce of this.readPropertyValueReferences(R,n)){let ae=ce.subject.name;ae!==R.name&&h.has(ae)&&(g.get(R.name).push(ae),m.get(ae).push(R.name))}let y=new Map,v=new Set,k=R=>{let ce=y.get(R);if(ce!==void 0)return ce;if(v.has(R))return 0;v.add(R);let ae=0;for(let se of m.get(R)??[])ae=Math.max(ae,k(se)+1);return v.delete(R),y.set(R,ae),ae};for(let R of e)k(R.name);let w=Math.min(...y.values());if(w>0)for(let R of[...y.keys()])y.set(R,y.get(R)-w);let S=Math.max(0,...y.values()),A=Array.from({length:S+1},()=>[]);for(let R of e)A[y.get(R.name)].push(R);let C=Math.max(1,...A.map(R=>R.length)),N=!1;for(let[R,ce]of g)for(let ae of ce)y.get(ae)<=y.get(R)&&(N=!0);let _=N?84:0,B=C*l+(C-1)*u,X=p*2+(S+1)*l+S*c,pe=p*2+_+B,J=new Map;A.forEach((R,ce)=>{let ae=R.length*l+(R.length-1)*u,se=p+_+(B-ae)/2;R.forEach((Ne,qe)=>J.set(Ne.name,{x:p+ce*(l+c),y:se+qe*(l+u)}))});let Q=r.find(R=>R.to==="thickness"),H=`kan-arrow-${this.diagramArrowSeq++}`,K=[],E=[];for(let[R,ce]of g){let ae=J.get(R);for(let se of ce){let Ne=J.get(se),qe=Ne.x>=ae.x,Le=Q?1.5+Q.norm[f.get(R)]*4.5:2,Re,Ke,We;if(qe){let Te=ae.x+l,Ot=ae.y+l/2,zt=Ne.x-ht,Yn=Ne.y+l/2,$n=(Te+zt)/2;Re=`M${Te.toFixed(1)},${Ot.toFixed(1)} C${$n.toFixed(1)},${Ot.toFixed(1)} ${$n.toFixed(1)},${Yn.toFixed(1)} ${zt.toFixed(1)},${Yn.toFixed(1)}`,Ke=(Te+zt)/2,We=(Ot+Yn)/2-5}else{let Te=ae.x+l/2,Ot=ae.y,zt=Ne.x+l/2,Yn=Ne.y-ht,$n=p+_*.2;Re=`M${Te.toFixed(1)},${Ot.toFixed(1)} C${Te.toFixed(1)},${$n.toFixed(1)} ${zt.toFixed(1)},${$n.toFixed(1)} ${zt.toFixed(1)},${Yn.toFixed(1)}`,Ke=(Te+zt)/2,We=$n+4}let pt=qe?"":' stroke-dasharray="6 4"';K.push(`<path d="${Re}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${Le.toFixed(1)}" stroke-opacity="0.75"${pt} marker-end="url(#${H})"/>`);let yt=await this.edgeText(i,e[f.get(R)],o);yt&&E.push(this.edgeLabelEl(Ke,We,yt))}}let U=e.map(R=>{let ce=J.get(R.name);return this.diagramTile(R,ce.x,ce.y,l,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${X.toFixed(0)} ${pe.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(H,"var(--kan-accent)")}${K.join("")}${E.join("")}${U}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return ze(this.catalog,e)[0]}async renderSequence(e,n,r){let a=Zl(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let N of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${N.publisher}/${N.package_}/${N.name}, which is not a declared connector; ignored -->`);for(let N of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${N.prev.name} then ${N.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:i,lifelines:o}=a,l=ra;if(o.length===0)return`${s.join(`
|
|
301
301
|
`)}
|
|
302
|
-
<!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let c=nt(e,
|
|
303
|
-
`)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${w} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${C.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=r=>tt.isClassType(r);if(Y(e,AL))return{classes:this.catalog.filter(r=>r instanceof q&&r.namespace===e.namespace&&n(r))};if(n(e)){let r=xe(e);if(!r)return{classes:[],reason:"the page class has no canonical URI"};let a=Gl(this.catalog),s=new Map([[T(r),e]]);for(let i of Iw(this.catalog,r,!1,a)){if(i.kind!=="object"||i.range.kind!=="class")continue;let o=this.subjectFor(i.range.uri);o&&!s.has(T(i.range.uri))&&s.set(T(i.range.uri),o)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,r,a,s){let i=[];return s===1?i.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):i.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?i.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):i.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${r.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${i.join("")}</g>`}erBorderPoint(e,n,r,a,s,i){let o=s-e,l=i-n;if(o===0&&l===0)return{x:e,y:n};let c=o===0?1/0:Math.abs(r/2/o),u=l===0?1/0:Math.abs(a/2/l),p=Math.min(c,u);return{x:e+o*p,y:n+l*p}}renderEntityRelationship(e,n,r){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let i=Gl(this.catalog),o=J=>`${J.namespace}/${J.name}`,l=new Map;for(let J of a){let Q=xe(J);Q&&l.set(T(Q),J)}let c=a.map(J=>{let Q=xe(J),H=Q?Iw(this.catalog,Q,!1,i):[];return{subject:J,label:Oe(this.catalog,J).label,attrs:H.filter(K=>K.kind==="datatype"),rels:H.filter(K=>K.kind==="object"&&K.range.kind==="class"&&l.has(T(K.range.uri))),supers:Fe(J,fd).filter(K=>l.has(T(K)))}}),u=Un.ER_BOX_W,p=Un.ER_HEAD_H,f=Un.ER_ROW_H,h=Un.ER_GAP,g=Un.ER_PAD,m=Math.max(1,Math.ceil(Math.sqrt(c.length))),y=J=>p+Math.max(1,J.attrs.length)*f+8,v=[];c.forEach((J,Q)=>{let H=Math.floor(Q/m);v[H]=Math.max(v[H]??0,y(J))});let k=[],w=g;v.forEach((J,Q)=>{k[Q]=w,w+=J+h});let S=new Map;c.forEach((J,Q)=>{let H=Math.floor(Q/m),K=Q%m,E=g+K*(u+h),U=k[H],R=y(J);S.set(o(J.subject),{x:E,y:U,w:u,h:R,cx:E+u/2,cy:U+R/2})});let A=g*2+m*u+(m-1)*h,C=w-h+g,N=[],_=[],B=[],X=`kan-er-tri-${this.diagramArrowSeq++}`,pe=`<defs><marker id="${X}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let J of c){let Q=S.get(o(J.subject));for(let H of J.rels){let K=l.get(T(H.range.uri)),E=S.get(o(K)),U=o(K)===o(J.subject),R=this.subjectFor(H.uri),ce=!!R&&ld(this.catalog,R,$L),ae=!!R&&ld(this.catalog,R,SL),se=H.minCount??0,Ne=H.maxCount??(ae?1:void 0),Ve=R?Oe(this.catalog,R).label:H.localName;if(U){let We=Q.x+Q.w,pt=Q.y+12,yt=Q.y+Q.h-12;N.push(`<path class="kan-er-relationship" d="M${We},${pt} h28 V${yt} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),ce||N.push(this.erCardinalityGlyph(We,yt,180,se,Ne)),_.push(`<text class="kan-er-relationship-label" x="${We+32}" y="${Q.cy+4}" font-size="11" fill="var(--kan-text)">${O(Ve)}</text>`);continue}let Le=this.erBorderPoint(Q.cx,Q.cy,Q.w,Q.h,E.cx,E.cy),Re=this.erBorderPoint(E.cx,E.cy,E.w,E.h,Q.cx,Q.cy);N.push(`<line class="kan-er-relationship" x1="${Le.x.toFixed(1)}" y1="${Le.y.toFixed(1)}" x2="${Re.x.toFixed(1)}" y2="${Re.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let Ke=Math.atan2(Re.y-Le.y,Re.x-Le.x)*180/Math.PI;ce||N.push(this.erCardinalityGlyph(Re.x,Re.y,Ke,se,Ne)),_.push(`<text class="kan-er-relationship-label" x="${((Le.x+Re.x)/2).toFixed(1)}" y="${((Le.y+Re.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${O(Ve)}</text>`)}for(let H of J.supers){let K=l.get(T(H)),E=S.get(o(K)),U=this.erBorderPoint(Q.cx,Q.cy,Q.w,Q.h,E.cx,E.cy),R=this.erBorderPoint(E.cx,E.cy,E.w,E.h,Q.cx,Q.cy);N.push(`<line class="kan-er-inherits" x1="${U.x.toFixed(1)}" y1="${U.y.toFixed(1)}" x2="${R.x.toFixed(1)}" y2="${R.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${X})"/>`)}}for(let J of c){let Q=S.get(o(J.subject)),H=this.hrefForSubject(J.subject,r),K=J.attrs.length===0?`<text x="${Q.x+10}" y="${Q.y+p+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:J.attrs.map((E,U)=>{let R=this.subjectFor(E.uri),ce=R?Oe(this.catalog,R).label:E.localName,ae=E.required||(E.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${Q.x+10}" y="${Q.y+p+14+U*f}" font-size="11" fill="var(--kan-text)">${O(ce)}${ae}<tspan fill="var(--kan-text-dim)"> : ${O(E.range.uri.name)}</tspan></text>`}).join("");B.push(`<a href="${O(H)}"><g class="kan-er-entity"><rect x="${Q.x}" y="${Q.y}" width="${Q.w}" height="${Q.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${Q.x}" y="${Q.y}" width="${Q.w}" height="${p}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${Q.cx}" y="${Q.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${O(J.label)}</text><line x1="${Q.x}" y1="${Q.y+p}" x2="${Q.x+Q.w}" y2="${Q.y+p}" stroke="var(--kan-border)"/>`+K+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${A} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${pe}${N.join("")}${B.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,r,a,s,i=1){let o=this.hrefForSubject(e,s),l=this.svgUrlForSubject(e,s),c=Oe(this.catalog,e).label,u=i<1?` opacity="${i.toFixed(2)}"`:"";return`<a href="${O(o)}"><image href="${O(l)}" x="${n}" y="${r}" width="${a}" height="${a}"${u}><title>${O(c)}</title></image></a>`}async renderStatRow(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,uR);if(r.length===0&&a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=a.map(o=>Ar("stat",o)).join(""),i=[];for(let o of r){let l=this.readEmbeddedCarrier(o,pR);if(!l)continue;let c=await this.evaluateCarrier(l,n);if(c===void 0)continue;let u=nt(o,fR)??"";i.push('<div class="kan-stat">'+(u?`<span class="kan-stat-label">${O(u)}</span>`:"")+`<span class="kan-stat-val">${O(c)}</span></div>`)}return i.length===0?s:`${s}<div class="kan-stat-row">${i.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return O(e);let r=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${O(e)}"><span class="kan-bar-fill" style="width:${r.toFixed(1)}%"></span></span><span class="kan-bar-value">${O(e)}</span>`}async renderBarMeter(e,n){let r=this.readEmbeddedCarrier(e,Ni);if(!r)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(r,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,oR);if(r.length===0&&a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=a.map(l=>Ar("count",l)).join(""),i=this.readTransitive(e),o=[];for(let l of r){let c=Ie(l,Nt);if(!c)continue;let u=Qe(this.catalog,c);if(!u)continue;let p=Oe(this.catalog,u).label,f=this.findInstancesOfClass(c,i).length,h=this.hrefForSubject(u,n);o.push(`<a class="kan-count" href="${O(h)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${O(p)}</span></a>`)}return o.length===0?s:`${s}<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,r){let a=Ie(e,Nt);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.valueItems(n,a).filter(i=>i instanceof te);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,r,0)).join("")}</section>`}renderConditionNode(e,n,r){let a=os(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",i=[],o=[];for(let f of e.statement){let h=f.predicate?.subject;if(!h||Ye(h,ra))continue;let g=this.readLabelForUri({publisher:h.publisher,package_:h.package_,name:h.name})??h.name;if(f instanceof Ce||f instanceof et||f instanceof Ge)i.push(`<div class="kan-cond-field"><span class="kan-cond-key">${O(g)}</span><span class="kan-cond-v">${O(String(f.object))}</span></div>`);else if(f instanceof de&&f.object instanceof D){let m=f.object.subject,y=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;i.push(`<div class="kan-cond-field"><span class="kan-cond-key">${O(g)}</span><span class="kan-cond-v">${O(y)}</span></div>`)}else if(f instanceof Ae)o.push(this.renderConditionNode(f.object,n,r+1));else if(f instanceof he)for(let m of f.object??[])m instanceof te&&o.push(this.renderConditionNode(m,n,r+1))}let l=i.length?`<div class="kan-cond-fields">${i.join("")}</div>`:"",c=o.length?`<div class="kan-cond-children">${o.join("")}</div>`:"",u=o.length>0,p=u?`<span class="kan-cond-op">${O(s)}</span>`:`<div class="kan-cond-type">${O(s)}</div>`;return`<div class="kan-cond ${u?"kan-cond-branch":"kan-cond-leaf"}">${p}${l}${c}</div>`}renderSectionHeading(e){let n=e,r=nt(n,Yw);if(!r)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=nt(n,tR);return`<div class="kan-section" id="${u$(r)}"><h2 class="kan-section-title">${O(r)}</h2>`+(a?`<p class="kan-section-note">${O(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(n=>`<a class="kan-section-nav-link" href="#${O(n.slug)}">${O(n.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let r=this.readEmbeddedCarrier(e,Ni);if(!r)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async X=>{let pe=await this.evaluateCarrierNum(r,X);return Number.isFinite(pe)?pe:void 0},s=await a(n);if(s===void 0)return"";let i=X=>this.uriOf(X).version??{major:0,minor:0,patch:0},o=(X,pe)=>X.major-pe.major||X.minor-pe.minor||X.patch-pe.patch,l={publisher:lt(n),package_:this.uriOf(n).package_,name:n.name},c=i(n),u,p;for(let X of ze(this.catalog,l)){let pe=i(X);o(pe,c)<0&&(!p||o(pe,p)>0)&&(u=X,p=pe)}if(!u||!p)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let f=await a(u);if(f===void 0)return"";let h=s-f,g=Math.abs(h)<.005?"flat":h>0?"up":"down",m=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",y=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",v=`${p.major}.${p.minor}.${p.patch}`,k=320,w=46,S=14,A=30,C=X=>S+Math.min(1,Math.max(0,X))*(k-2*S),N=C(f),_=C(s),B=`<svg class="kan-delta-track" viewBox="0 0 ${k} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${S}" y1="${A}" x2="${k-S}" y2="${A}" class="kan-delta-base"/><line x1="${N.toFixed(1)}" y1="${A}" x2="${_.toFixed(1)}" y2="${A}" stroke="${y}" stroke-width="3"/><circle cx="${N.toFixed(1)}" cy="${A}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${A}" r="5.5" fill="${y}"/><text x="${N.toFixed(1)}" y="${A-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${f.toFixed(2)}</text><text x="${_.toFixed(1)}" y="${A+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 ${O(v)}</span><span class="kan-delta-badge ${g}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+B+"</div>"}async renderTimePlot(e,n,r){let a=Ie(e,Nt),s=Ie(e,Vl);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let i=this.readEmbeddedCarrier(e,cR),o=this.readEmbeddedCarrier(e,Jw),l=[];for(let H of this.readPropertyValueReferences(n,a)){let K=Qe(this.catalog,{publisher:H.subject.publisher,package_:H.subject.package_,name:H.subject.name,...H.subject.version?{version:H.subject.version}:{}});if(!K)continue;let E=this.readPropertyValueText(K,s)??"",U=Date.parse(E);if(!Number.isFinite(U))continue;let R=i?await this.evaluateCarrier(i,K)??"":"",ce=(o?await this.evaluateCarrier(o,K):void 0)??Oe(this.catalog,K).label;l.push({t:U,dateStr:E,lane:R,label:ce,href:this.hrefForSubject(K,r),linkable:this.isLinkable(lt(K),r)})}if(l.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let c=[];for(let H of l)c.includes(H.lane)||c.push(H.lane);let u=Math.min(...l.map(H=>H.t)),p=Math.max(...l.map(H=>H.t));p===u&&(p=u+1);let f=c.some(H=>H),h=720,g=f?96:16,m=18,y=12,v=24,k=36,w=y+c.length*k+v,S=g,A=h-m,C=A-S,N=H=>S+(H-u)/(p-u)*C,_=H=>y+H*k+k/2,B=H=>Math.round(H*360/Math.max(1,c.length)),X=[];c.forEach((H,K)=>{let E=_(K);X.push(`<line x1="${S}" y1="${E.toFixed(1)}" x2="${A}" y2="${E.toFixed(1)}" class="kan-plot-guide"/>`),H&&X.push(`<text x="${(g-8).toFixed(1)}" y="${(E+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${xr(H)}</text>`)});let pe={},J=[];for(let H of l){let K=c.indexOf(H.lane),E=((pe[H.lane]=(pe[H.lane]??0)+1)%3-1)*7,U=N(H.t),R=_(K)+E,ce=`${Bl(H.dateStr)} \xB7 ${H.label}`,ae=`<circle cx="${U.toFixed(1)}" cy="${R.toFixed(1)}" r="5" fill="hsl(${B(K)},65%,60%)" class="kan-plot-pt"><title>${xr(ce)}</title></circle>`;J.push(H.linkable?`<a href="${O(H.href)}" class="kan-plot-link">${ae}</a>`:ae)}let Q=`<text x="${S}" y="${(w-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${xr(Bl(new Date(u).toISOString()))}</text><text x="${A}" y="${(w-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${xr(Bl(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+X.join("")+J.join("")+Q+"</svg>"}</section>`}renderDetails(e,n,r){let a=rd(e,lR),s=this.detailRows(n,r,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,r){let a=[];for(let s of o$(e)){if(this.isMetaPredicate(s)||r.some(l=>Ye(l,s)))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,o=this.detailValue(e,s,n,r);o&&a.push(`<dt class="kan-details-key">${O(i)}</dt><dd class="kan-details-val">${o}</dd>`)}return a.join("")}detailValue(e,n,r,a){let s=bt(e,n),i=s.map(o=>"literal"in o.item?o.item.value:o.item);if(s.length===1&&!s[0].fromList){let o=i[0];return typeof o=="string"?f$(o):typeof o=="number"||typeof o=="boolean"?O(String(o)):o instanceof D?this.detailReferenceLink(o,r):this.detailEmbedded(o,r,a)}return i.length>0&&i.every(o=>o instanceof te)?i.map(o=>this.detailEmbedded(o,r,a)).join(""):i.map(o=>o instanceof D?this.detailReferenceLink(o,r):o instanceof te?this.detailEmbedded(o,r,a):O(String(o))).filter(o=>o).join(", ")}detailReferenceLink(e,n){let r=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">${O(r)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${O(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${O(a)}">${O(r)}</a>`}detailEmbedded(e,n,r){let a=os(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",i=this.detailRows(e,n,r);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${O(s)}</span>`:"")+(i?`<dl class="kan-details">${i}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Qe(this.catalog,e);if(!n)return[];let r=Kn(n,FO);return r instanceof de&&r.object instanceof D?[r.object]:[]}async renderEmbeddedViews(e,n,r,a=""){let s=Ie(e,Nt);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let i=Ln(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(i.length===0)return"";let o=Kn(e,IR),l=o instanceof Ge?o.object===!0:o instanceof Ce&&o.object==="true",c=[],u=[];for(let p of i){let f=p.node,h=f,g=p.address.slice(1),m=f.name?g:"";if(l&&m){let C=Oe(this.catalog,h).label||f.name||m;c.push(`<a class="kan-section-nav-link" href="#${O(m)}">${O(C)}</a>`)}let y=sn(h),v=y.length>0?y:this.rangeTypeRefs(s),k=Kl(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),w="";if(k){let{parts:C,unresolved:N}=this.readLookParts(k.declaration,nd),_=N.map(B=>Ar("band",B));for(let B of C)_.push(await this.renderBand(B,h,r,[],g));w=_.join(`
|
|
302
|
+
<!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let c=nt(e,Jw);c!==void 0&&jn[c]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${O(c)}' is not a tier (${Object.keys(jn).join(", ")}); using the class/default size -->`);let u=(c!==void 0?jn[c]:void 0)??this.classTierSize(o)??jn.icon,p=u+Hn.SEQ_COL_GAP,f=Hn.SEQ_ROW,h=Hn.SEQ_PAD,g=nt(e,wL)==="true",m=new Map;o.forEach((N,_)=>m.set(l(N),h+_*p+u/2));let y=h+u,v=y+f,k=v+i.length*f+h,w=h*2+(o.length-1)*p+u,S=`kan-arrow-${this.diagramArrowSeq++}`,A=`kan-arrow-open-${this.diagramArrowSeq++}`,C=[this.arrowMarkerDef(S,"var(--kan-text-dim)")+`<defs><marker id="${A}" viewBox="0 0 ${ht} ${ht}" refX="0" refY="${(ht/2).toFixed(1)}" markerWidth="${ht}" markerHeight="${ht}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${ht},${(ht/2).toFixed(1)} L0,${ht-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let N of o){let _=m.get(l(N));C.push(`<line class="kan-seq-lifeline" x1="${_}" y1="${y}" x2="${_}" y2="${k-h}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),C.push(this.diagramTile(N,_-u/2,h,u,r))}return i.forEach((N,_)=>{let B=v+_*f,X=m.get(l(N.from)),pe=m.get(l(N.to)),J=this.subjectFor(N.relation),Q=(g?`${_+1}. `:"")+(J?Oe(this.catalog,J).label:N.relation.name),H=N.style==="dotted"?' stroke-dasharray="4 4"':"",K=N.style==="thick"?3:1.5,E=N.undirected?"":` marker-end="url(#${N.style==="open"?A:S})"`,U=`kan-seq-message kan-seq-message-${N.style}${N.undirected?" kan-seq-message-undirected":""}`;if(X===pe){let ae=f*.55,se=X+(N.undirected?0:ht);C.push(`<path class="${U}" d="M${X},${B-ae/2} H${X+34} V${B+ae/2} H${se}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${K}"${H}${E}/>`),C.push(`<text class="kan-seq-message-label" x="${X+34+6}" y="${B+4}" font-size="12" fill="var(--kan-text)">${O(Q)}</text>`);return}let R=pe>X?1:-1,ce=N.undirected?pe:pe-R*ht;C.push(`<line class="${U}" x1="${X}" y1="${B}" x2="${ce}" y2="${B}" stroke="var(--kan-text-dim)" stroke-width="${K}"${H}${E}/>`),C.push(`<text class="kan-seq-message-label" x="${((X+pe)/2).toFixed(1)}" y="${B-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${O(Q)}</text>`)}),`${s.join(`
|
|
303
|
+
`)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${w} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${C.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=r=>tt.isClassType(r);if(Y(e,xL))return{classes:this.catalog.filter(r=>r instanceof V&&r.namespace===e.namespace&&n(r))};if(n(e)){let r=xe(e);if(!r)return{classes:[],reason:"the page class has no canonical URI"};let a=Jl(this.catalog),s=new Map([[T(r),e]]);for(let i of Fw(this.catalog,r,!1,a)){if(i.kind!=="object"||i.range.kind!=="class")continue;let o=this.subjectFor(i.range.uri);o&&!s.has(T(i.range.uri))&&s.set(T(i.range.uri),o)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,r,a,s){let i=[];return s===1?i.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):i.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?i.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):i.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${r.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${i.join("")}</g>`}erBorderPoint(e,n,r,a,s,i){let o=s-e,l=i-n;if(o===0&&l===0)return{x:e,y:n};let c=o===0?1/0:Math.abs(r/2/o),u=l===0?1/0:Math.abs(a/2/l),p=Math.min(c,u);return{x:e+o*p,y:n+l*p}}renderEntityRelationship(e,n,r){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let i=Jl(this.catalog),o=J=>`${J.namespace}/${J.name}`,l=new Map;for(let J of a){let Q=xe(J);Q&&l.set(T(Q),J)}let c=a.map(J=>{let Q=xe(J),H=Q?Fw(this.catalog,Q,!1,i):[];return{subject:J,label:Oe(this.catalog,J).label,attrs:H.filter(K=>K.kind==="datatype"),rels:H.filter(K=>K.kind==="object"&&K.range.kind==="class"&&l.has(T(K.range.uri))),supers:Fe(J,hd).filter(K=>l.has(T(K)))}}),u=Hn.ER_BOX_W,p=Hn.ER_HEAD_H,f=Hn.ER_ROW_H,h=Hn.ER_GAP,g=Hn.ER_PAD,m=Math.max(1,Math.ceil(Math.sqrt(c.length))),y=J=>p+Math.max(1,J.attrs.length)*f+8,v=[];c.forEach((J,Q)=>{let H=Math.floor(Q/m);v[H]=Math.max(v[H]??0,y(J))});let k=[],w=g;v.forEach((J,Q)=>{k[Q]=w,w+=J+h});let S=new Map;c.forEach((J,Q)=>{let H=Math.floor(Q/m),K=Q%m,E=g+K*(u+h),U=k[H],R=y(J);S.set(o(J.subject),{x:E,y:U,w:u,h:R,cx:E+u/2,cy:U+R/2})});let A=g*2+m*u+(m-1)*h,C=w-h+g,N=[],_=[],B=[],X=`kan-er-tri-${this.diagramArrowSeq++}`,pe=`<defs><marker id="${X}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let J of c){let Q=S.get(o(J.subject));for(let H of J.rels){let K=l.get(T(H.range.uri)),E=S.get(o(K)),U=o(K)===o(J.subject),R=this.subjectFor(H.uri),ce=!!R&&ud(this.catalog,R,SL),ae=!!R&&ud(this.catalog,R,AL),se=H.minCount??0,Ne=H.maxCount??(ae?1:void 0),qe=R?Oe(this.catalog,R).label:H.localName;if(U){let We=Q.x+Q.w,pt=Q.y+12,yt=Q.y+Q.h-12;N.push(`<path class="kan-er-relationship" d="M${We},${pt} h28 V${yt} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),ce||N.push(this.erCardinalityGlyph(We,yt,180,se,Ne)),_.push(`<text class="kan-er-relationship-label" x="${We+32}" y="${Q.cy+4}" font-size="11" fill="var(--kan-text)">${O(qe)}</text>`);continue}let Le=this.erBorderPoint(Q.cx,Q.cy,Q.w,Q.h,E.cx,E.cy),Re=this.erBorderPoint(E.cx,E.cy,E.w,E.h,Q.cx,Q.cy);N.push(`<line class="kan-er-relationship" x1="${Le.x.toFixed(1)}" y1="${Le.y.toFixed(1)}" x2="${Re.x.toFixed(1)}" y2="${Re.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let Ke=Math.atan2(Re.y-Le.y,Re.x-Le.x)*180/Math.PI;ce||N.push(this.erCardinalityGlyph(Re.x,Re.y,Ke,se,Ne)),_.push(`<text class="kan-er-relationship-label" x="${((Le.x+Re.x)/2).toFixed(1)}" y="${((Le.y+Re.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${O(qe)}</text>`)}for(let H of J.supers){let K=l.get(T(H)),E=S.get(o(K)),U=this.erBorderPoint(Q.cx,Q.cy,Q.w,Q.h,E.cx,E.cy),R=this.erBorderPoint(E.cx,E.cy,E.w,E.h,Q.cx,Q.cy);N.push(`<line class="kan-er-inherits" x1="${U.x.toFixed(1)}" y1="${U.y.toFixed(1)}" x2="${R.x.toFixed(1)}" y2="${R.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${X})"/>`)}}for(let J of c){let Q=S.get(o(J.subject)),H=this.hrefForSubject(J.subject,r),K=J.attrs.length===0?`<text x="${Q.x+10}" y="${Q.y+p+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:J.attrs.map((E,U)=>{let R=this.subjectFor(E.uri),ce=R?Oe(this.catalog,R).label:E.localName,ae=E.required||(E.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${Q.x+10}" y="${Q.y+p+14+U*f}" font-size="11" fill="var(--kan-text)">${O(ce)}${ae}<tspan fill="var(--kan-text-dim)"> : ${O(E.range.uri.name)}</tspan></text>`}).join("");B.push(`<a href="${O(H)}"><g class="kan-er-entity"><rect x="${Q.x}" y="${Q.y}" width="${Q.w}" height="${Q.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${Q.x}" y="${Q.y}" width="${Q.w}" height="${p}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${Q.cx}" y="${Q.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${O(J.label)}</text><line x1="${Q.x}" y1="${Q.y+p}" x2="${Q.x+Q.w}" y2="${Q.y+p}" stroke="var(--kan-border)"/>`+K+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${A} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${pe}${N.join("")}${B.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,r,a,s,i=1){let o=this.hrefForSubject(e,s),l=this.svgUrlForSubject(e,s),c=Oe(this.catalog,e).label,u=i<1?` opacity="${i.toFixed(2)}"`:"";return`<a href="${O(o)}"><image href="${O(l)}" x="${n}" y="${r}" width="${a}" height="${a}"${u}><title>${O(c)}</title></image></a>`}async renderStatRow(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,pR);if(r.length===0&&a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=a.map(o=>xr("stat",o)).join(""),i=[];for(let o of r){let l=this.readEmbeddedCarrier(o,fR);if(!l)continue;let c=await this.evaluateCarrier(l,n);if(c===void 0)continue;let u=nt(o,dR)??"";i.push('<div class="kan-stat">'+(u?`<span class="kan-stat-label">${O(u)}</span>`:"")+`<span class="kan-stat-val">${O(c)}</span></div>`)}return i.length===0?s:`${s}<div class="kan-stat-row">${i.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return O(e);let r=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${O(e)}"><span class="kan-bar-fill" style="width:${r.toFixed(1)}%"></span></span><span class="kan-bar-value">${O(e)}</span>`}async renderBarMeter(e,n){let r=this.readEmbeddedCarrier(e,Ni);if(!r)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(r,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let{parts:r,unresolved:a}=this.readLookParts(e,lR);if(r.length===0&&a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=a.map(l=>xr("count",l)).join(""),i=this.readTransitive(e),o=[];for(let l of r){let c=Ie(l,Nt);if(!c)continue;let u=Qe(this.catalog,c);if(!u)continue;let p=Oe(this.catalog,u).label,f=this.findInstancesOfClass(c,i).length,h=this.hrefForSubject(u,n);o.push(`<a class="kan-count" href="${O(h)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${O(p)}</span></a>`)}return o.length===0?s:`${s}<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,r){let a=Ie(e,Nt);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.valueItems(n,a).filter(i=>i instanceof te);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,r,0)).join("")}</section>`}renderConditionNode(e,n,r){let a=os(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",i=[],o=[];for(let f of e.statement){let h=f.predicate?.subject;if(!h||Ye(h,aa))continue;let g=this.readLabelForUri({publisher:h.publisher,package_:h.package_,name:h.name})??h.name;if(f instanceof Ce||f instanceof et||f instanceof Ge)i.push(`<div class="kan-cond-field"><span class="kan-cond-key">${O(g)}</span><span class="kan-cond-v">${O(String(f.object))}</span></div>`);else if(f instanceof de&&f.object instanceof D){let m=f.object.subject,y=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;i.push(`<div class="kan-cond-field"><span class="kan-cond-key">${O(g)}</span><span class="kan-cond-v">${O(y)}</span></div>`)}else if(f instanceof Ae)o.push(this.renderConditionNode(f.object,n,r+1));else if(f instanceof he)for(let m of f.object??[])m instanceof te&&o.push(this.renderConditionNode(m,n,r+1))}let l=i.length?`<div class="kan-cond-fields">${i.join("")}</div>`:"",c=o.length?`<div class="kan-cond-children">${o.join("")}</div>`:"",u=o.length>0,p=u?`<span class="kan-cond-op">${O(s)}</span>`:`<div class="kan-cond-type">${O(s)}</div>`;return`<div class="kan-cond ${u?"kan-cond-branch":"kan-cond-leaf"}">${p}${l}${c}</div>`}renderSectionHeading(e){let n=e,r=nt(n,Xw);if(!r)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=nt(n,nR);return`<div class="kan-section" id="${d$(r)}"><h2 class="kan-section-title">${O(r)}</h2>`+(a?`<p class="kan-section-note">${O(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(n=>`<a class="kan-section-nav-link" href="#${O(n.slug)}">${O(n.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let r=this.readEmbeddedCarrier(e,Ni);if(!r)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async X=>{let pe=await this.evaluateCarrierNum(r,X);return Number.isFinite(pe)?pe:void 0},s=await a(n);if(s===void 0)return"";let i=X=>this.uriOf(X).version??{major:0,minor:0,patch:0},o=(X,pe)=>X.major-pe.major||X.minor-pe.minor||X.patch-pe.patch,l={publisher:lt(n),package_:this.uriOf(n).package_,name:n.name},c=i(n),u,p;for(let X of ze(this.catalog,l)){let pe=i(X);o(pe,c)<0&&(!p||o(pe,p)>0)&&(u=X,p=pe)}if(!u||!p)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let f=await a(u);if(f===void 0)return"";let h=s-f,g=Math.abs(h)<.005?"flat":h>0?"up":"down",m=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",y=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",v=`${p.major}.${p.minor}.${p.patch}`,k=320,w=46,S=14,A=30,C=X=>S+Math.min(1,Math.max(0,X))*(k-2*S),N=C(f),_=C(s),B=`<svg class="kan-delta-track" viewBox="0 0 ${k} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${S}" y1="${A}" x2="${k-S}" y2="${A}" class="kan-delta-base"/><line x1="${N.toFixed(1)}" y1="${A}" x2="${_.toFixed(1)}" y2="${A}" stroke="${y}" stroke-width="3"/><circle cx="${N.toFixed(1)}" cy="${A}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${A}" r="5.5" fill="${y}"/><text x="${N.toFixed(1)}" y="${A-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${f.toFixed(2)}</text><text x="${_.toFixed(1)}" y="${A+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 ${O(v)}</span><span class="kan-delta-badge ${g}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+B+"</div>"}async renderTimePlot(e,n,r){let a=Ie(e,Nt),s=Ie(e,Kl);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let i=this.readEmbeddedCarrier(e,uR),o=this.readEmbeddedCarrier(e,Zw),l=[];for(let H of this.readPropertyValueReferences(n,a)){let K=Qe(this.catalog,{publisher:H.subject.publisher,package_:H.subject.package_,name:H.subject.name,...H.subject.version?{version:H.subject.version}:{}});if(!K)continue;let E=this.readPropertyValueText(K,s)??"",U=Date.parse(E);if(!Number.isFinite(U))continue;let R=i?await this.evaluateCarrier(i,K)??"":"",ce=(o?await this.evaluateCarrier(o,K):void 0)??Oe(this.catalog,K).label;l.push({t:U,dateStr:E,lane:R,label:ce,href:this.hrefForSubject(K,r),linkable:this.isLinkable(lt(K),r)})}if(l.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let c=[];for(let H of l)c.includes(H.lane)||c.push(H.lane);let u=Math.min(...l.map(H=>H.t)),p=Math.max(...l.map(H=>H.t));p===u&&(p=u+1);let f=c.some(H=>H),h=720,g=f?96:16,m=18,y=12,v=24,k=36,w=y+c.length*k+v,S=g,A=h-m,C=A-S,N=H=>S+(H-u)/(p-u)*C,_=H=>y+H*k+k/2,B=H=>Math.round(H*360/Math.max(1,c.length)),X=[];c.forEach((H,K)=>{let E=_(K);X.push(`<line x1="${S}" y1="${E.toFixed(1)}" x2="${A}" y2="${E.toFixed(1)}" class="kan-plot-guide"/>`),H&&X.push(`<text x="${(g-8).toFixed(1)}" y="${(E+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Er(H)}</text>`)});let pe={},J=[];for(let H of l){let K=c.indexOf(H.lane),E=((pe[H.lane]=(pe[H.lane]??0)+1)%3-1)*7,U=N(H.t),R=_(K)+E,ce=`${Hl(H.dateStr)} \xB7 ${H.label}`,ae=`<circle cx="${U.toFixed(1)}" cy="${R.toFixed(1)}" r="5" fill="hsl(${B(K)},65%,60%)" class="kan-plot-pt"><title>${Er(ce)}</title></circle>`;J.push(H.linkable?`<a href="${O(H.href)}" class="kan-plot-link">${ae}</a>`:ae)}let Q=`<text x="${S}" y="${(w-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Er(Hl(new Date(u).toISOString()))}</text><text x="${A}" y="${(w-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Er(Hl(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+X.join("")+J.join("")+Q+"</svg>"}</section>`}renderDetails(e,n,r){let a=sd(e,cR),s=this.detailRows(n,r,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,r){let a=[];for(let s of u$(e)){if(this.isMetaPredicate(s)||r.some(l=>Ye(l,s)))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,o=this.detailValue(e,s,n,r);o&&a.push(`<dt class="kan-details-key">${O(i)}</dt><dd class="kan-details-val">${o}</dd>`)}return a.join("")}detailValue(e,n,r,a){let s=bt(e,n),i=s.map(o=>"literal"in o.item?o.item.value:o.item);if(s.length===1&&!s[0].fromList){let o=i[0];return typeof o=="string"?m$(o):typeof o=="number"||typeof o=="boolean"?O(String(o)):o instanceof D?this.detailReferenceLink(o,r):this.detailEmbedded(o,r,a)}return i.length>0&&i.every(o=>o instanceof te)?i.map(o=>this.detailEmbedded(o,r,a)).join(""):i.map(o=>o instanceof D?this.detailReferenceLink(o,r):o instanceof te?this.detailEmbedded(o,r,a):O(String(o))).filter(o=>o).join(", ")}detailReferenceLink(e,n){let r=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">${O(r)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${O(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${O(a)}">${O(r)}</a>`}detailEmbedded(e,n,r){let a=os(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",i=this.detailRows(e,n,r);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${O(s)}</span>`:"")+(i?`<dl class="kan-details">${i}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Qe(this.catalog,e);if(!n)return[];let r=Bn(n,VO);return r instanceof de&&r.object instanceof D?[r.object]:[]}async renderEmbeddedViews(e,n,r,a=""){let s=Ie(e,Nt);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let i=Rn(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(i.length===0)return"";let o=Bn(e,MR),l=o instanceof Ge?o.object===!0:o instanceof Ce&&o.object==="true",c=[],u=[];for(let p of i){let f=p.node,h=f,g=p.address.slice(1),m=f.name?g:"";if(l&&m){let C=Oe(this.catalog,h).label||f.name||m;c.push(`<a class="kan-section-nav-link" href="#${O(m)}">${O(C)}</a>`)}let y=sn(h),v=y.length>0?y:this.rangeTypeRefs(s),k=Ul(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),w="";if(k){let{parts:C,unresolved:N}=this.readLookParts(k.declaration,ad),_=N.map(B=>xr("band",B));for(let B of C)_.push(await this.renderBand(B,h,r,[],g));w=_.join(`
|
|
304
304
|
`)}else{let C=this.detailRows(f,r,[]);w=C?`<dl class="kan-details">${C}</dl>`:""}let S=m?` id="${O(m)}"`:"",A=m?this.anchorLink(m):"";u.push(`<section class="kan-embedded-view"${S}>${A}${w}</section>`)}return`<div class="kan-embedded-views">${c.length>0?`<nav class="kan-section-nav" aria-label="On this page">${c.join("")}</nav>
|
|
305
305
|
`:""}${u.join(`
|
|
306
|
-
`)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${O(e)}" title="${O(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return Ye(e,
|
|
306
|
+
`)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${O(e)}" title="${O(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return Ye(e,aa)||Ye(e,Zf)||Ye(e,zw)||Ye(e,Wl)||Ye(e,zl)||Ye(e,Qw)||Ye(e,i$)||Ye(e,XL)}renderPackageContents(e,n){let r=e.namespace||"";if(!r)return"";let a=this.catalog.filter(s=>s instanceof V&&s.namespace===r&&s.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${r} -->`:(a.sort((s,i)=>{let o=Oe(this.catalog,s).label,l=Oe(this.catalog,i).label;return o.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(s=>{let i=Oe(this.catalog,s),o=i.label,l=i.summary,c=l?id(l,160):"",u=this.hrefForSubject(s,n),p=this.svgUrlForSubject(s,n);return`<a class="kan-pkg-card" href="${O(u)}"><img class="kan-pkg-card-svg" src="${O(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${O(o)}</span>`+(c?`<span class="kan-pkg-card-comment">${O(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,r){let a=Ie(e,OR),s={publisher:lt(n),package_:this.uriOf(n).package_,name:n.name},i=Ze(s),o=u=>this.uriOf(u).version??{major:0,minor:0,patch:0},l=(u,p)=>u.major-p.major||u.minor-p.minor||u.patch-p.patch,c=new Map;for(let u of this.catalog){if(!(u instanceof V))continue;let p=Ze({publisher:lt(u),package_:this.uriOf(u).package_,name:u.name});if(p!==i)for(let f of u.statement){let h=f.predicate?.subject;if(!h||Ye(h,aa)||a&&Ze(h)!==Ze(a))continue;let g=[];if(f instanceof de&&f.object instanceof D)g.push(f.object);else if(f instanceof he)for(let k of f.object??[])k instanceof D&&g.push(k);if(!g.some(k=>Ze(k.subject)===i))continue;let m=Ze(h),y=c.get(m);y||(y={label:this.readLabelForUri(h)??h.name,best:new Map},c.set(m,y));let v=y.best.get(p);(!v||l(o(u),o(v))>0)&&y.best.set(p,u)}}return c.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...c.values()].sort((u,p)=>u.label.localeCompare(p.label)).map(u=>{let p=[...u.best.values()].sort((f,h)=>Oe(this.catalog,f).label.localeCompare(Oe(this.catalog,h).label)).map(f=>this.resourceCard(f,r,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> ${O(u.label)}</h3><section class="kan-pkg-grid">${p}</section></div>`}).join("")}`}resourceCard(e,n,r){let a=Oe(this.catalog,e),s=a.summary?id(a.summary,160):"",i=sn(e).map(y=>this.readLabelForUri({publisher:y.subject.publisher,package_:y.subject.package_,name:y.subject.name})??y.subject.name),o='<span class="kan-pkg-card-body">'+(i.length>0?`<span class="kan-card-types">${i.map(y=>`<span class="kan-card-type">${O(y)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${O(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${O(s)}</span>`:"")+"</span>",l=this.isLinkable(lt(e),n),c=l?`<a class="kan-pkg-card-link" href="${O(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${O(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+o+"</a>":`<span class="kan-pkg-card-link">${o}</span>`,u=e.namespace||"",p=this.uriOf(e),f=p.publisher,h=p.package_,g=p.version?ee(p.version):"",m="";if(h&&u!==r){let y=g?`<span class="kan-card-at">@</span><span class="kan-card-ver">${O(g)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${O(h)}</span>${y}`;m=`<a class="kan-pkg-card-foot" href="${O(this.packageHref(f,h,g||void 0))}" title="${O(g?`${h}@${g}`:h)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${O(f)}/</span><span class="kan-card-pkg">${O(h)}</span>${y}`;m=`<span class="kan-pkg-card-foot" title="${O(g?`${f}/${h}@${g}`:`${f}/${h}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${c}${m}</div>`}renderInstances(e,n,r){let a={publisher:lt(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),i=s?this.descendantTypeKeys(a):new Set([Ze(a)]),o=m=>this.uriOf(m).version??{major:0,minor:0,patch:0},l=(m,y)=>m.major-y.major||m.minor-y.minor||m.patch-y.patch,c=new Map;for(let m of this.catalog){if(!(m instanceof V)||!sn(m).some(k=>i.has(Ze(k.subject))))continue;let y=Ze({publisher:lt(m),package_:this.uriOf(m).package_,name:m.name}),v=c.get(y);(!v||l(o(m),o(v))>0)&&c.set(y,m)}let u=[...c.values()];if(u.length===0)return"<!-- LookRenderer.Instances: none -->";u.sort((m,y)=>Oe(this.catalog,m).label.localeCompare(Oe(this.catalog,y).label));let p=48,f=u.slice(0,p),h=f.map(m=>this.resourceCard(m,r,n.namespace??void 0)),g=u.length>p?` <span class="kan-count">${f.length} of ${u.length}</span>`:` <span class="kan-count">${u.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${g}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}descendantTypeKeys(e){let n=Ze(e),r=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof V)for(let i of sn(s)){let o=i.subject,l=Ze(o);a.has(l)||(a.add(l),ot(this.catalog,o).some(c=>Ze(c)===n)&&r.add(l))}return r}referencesTarget(e,n,r){for(let a of e.statement){let s=a.predicate?.subject;if(s&&Ye(s,aa)||r&&!(s&&Ze(s)===Ze(r)))continue;let i=[];if(a instanceof de&&a.object instanceof D)i.push(a.object);else if(a instanceof he)for(let o of a.object??[])o instanceof D&&i.push(o);for(let o of i)if(Ze(o.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let r=Ie(e,Nt);if(!r)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=ze(this.catalog,r),s=c=>this.uriOf(c).version??{major:0,minor:0,patch:0},i=a.length>0?a.slice().sort((c,u)=>{let p=s(c),f=s(u);return f.major-p.major||f.minor-p.minor||f.patch-p.patch})[0]:Qe(this.catalog,r);if(!i)return`<!-- LookRenderer.FeaturedResource: ${r.publisher}/${r.package_}/${r.name} not found -->`;let o=await this.renderHtml(i),l=this.hrefForSubject(i,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${O(l)}">View full resource \u2192</a>`+o+"</section>"}async renderDistribution(e,n){let r=async U=>{let R=this.readEmbeddedCarrier(e,U);if(!R)return;let ce=await this.evaluateCarrierNum(R,n);return Number.isFinite(ce)?ce:void 0},a=await r(ZL),s=await r(eR);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let i=await r(Ni)??a/(a+s),o=await r(a$),l=await r(s$),c=await r(rd),u=c!==void 0?`hsl(${c},65%,60%)`:"var(--kan-accent)",p=U=>Number.isInteger(U)?String(U):U.toFixed(1),f=280,h=168,g={top:14,right:14,bottom:24,left:14},m=f-g.left-g.right,y=h-g.top-g.bottom,v=120,k=1e-4,w=[],S=[],A=0;for(let U=0;U<=v;U++){let R=U/v;R<k?R=k:R>1-k&&(R=1-k);let ce=Math.exp((a-1)*Math.log(R)+(s-1)*Math.log(1-R));w.push(R),S.push(ce),ce>A&&(A=ce)}let C=U=>g.left+Math.min(1,Math.max(0,U))*m,N=U=>g.top+(1-(A>0?U/A:0))*y,_=g.top+y,B=w.map((U,R)=>`${C(U).toFixed(1)},${N(S[R]).toFixed(1)}`),X=`M${C(0).toFixed(1)},${_.toFixed(1)} L${B.join(" L")} L${C(1).toFixed(1)},${_.toFixed(1)} Z`,pe="";if(o!==void 0&&l!==void 0&&l>o){let U=[`${C(o).toFixed(1)},${_.toFixed(1)}`];for(let R=0;R<=v;R++)w[R]>=o&&w[R]<=l&&U.push(`${C(w[R]).toFixed(1)},${N(S[R]).toFixed(1)}`);U.push(`${C(l).toFixed(1)},${_.toFixed(1)}`),pe=`<path d="M${U.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let J=C(i),Q=`<line x1="${J.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${J.toFixed(1)}" y2="${_.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${J.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${i.toFixed(2)}</text>`,H=`<text x="${C(0).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,K=`<svg class="kan-dist-svg" viewBox="0 0 ${f} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${_.toFixed(1)}" x2="${(f-g.right).toFixed(1)}" y2="${_.toFixed(1)}" class="kan-dist-base"/><path d="${X}" fill="${u}" fill-opacity="0.12"/>`+pe+`<polyline points="${B.join(" ")}" fill="none" stroke="${u}" stroke-width="2"/>`+Q+H+"</svg>",E=o!==void 0&&l!==void 0?` \xB7 95% CI [${o.toFixed(2)}\u2013${l.toFixed(2)}]`:"";return`<figure class="kan-dist">${K}<figcaption class="kan-dist-caption">Beta(${p(a)}, ${p(s)})${E}</figcaption></figure>`}renderPublisherPackages(e,n){let r=new Map;for(let i of this.catalog){if(!(i instanceof V)||lt(i)!==n)continue;let o=this.uriOf(i).package_;if(!o||i.name!==o)continue;let l=r.get(o),c=this.uriOf(i).version,u=l?this.uriOf(l).version:void 0;(!l||c&&(!u||_e(c,u)>0))&&r.set(o,i)}let a,s=this.valueItems(e,UL);if(s.length>0){a=[];for(let i of s){if(!(i instanceof D))continue;let o=i.subject.package_,l=r.get(o);l&&a.push([o,l])}}else a=[...r.entries()].sort((i,o)=>i[0].localeCompare(o[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([i,o])=>{let l=Oe(this.catalog,o),c=l.label,u=l.summary,p=u?id(u,160):"",f=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${O(this.packageHref(n,i))}"><img class="kan-pkg-card-svg" src="${O(f)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${O(c)}</span>`+(p?`<span class="kan-pkg-card-comment">${O(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let r=Ie(e,Nt);if(!r)return"<!-- LookRenderer.Timeline: no look.source -->";let a=Ie(e,Kl),s=this.findInstancesOfClass(r,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let i=u=>a?this.readPropertyValueText(u,a)??"":"",o=s.slice().sort((u,p)=>i(u).localeCompare(i(p))),l=Ie(e,r$),c=this.readEmbeddedCarrier(e,Ni);return l&&c?this.renderTrajectoryChart(o,l,c,e,n,i):`<section class="kan-timeline"><ol>
|
|
307
307
|
${o.map(u=>{let p=this.uriOf(u),f=p.package_,h=p.version,g=this.resourceHref({publisher:lt(u),package_:f,name:u.name,...h?{version:h}:{}},n),m=i(u),y=m?`<span class="kan-timeline-date">${O(m)}</span>`:"",v=h?ee(h):u.name;return`<li class="kan-timeline-node"><a href="${O(g)}"><span class="kan-timeline-key">${O(v)}</span>${y}</a></li>`}).join(`
|
|
308
308
|
`)}
|
|
309
|
-
</ol></section>`}async renderTrajectoryChart(e,n,r,a,s,i){let o=a,l=this.readEmbeddedCarrier(a,
|
|
309
|
+
</ol></section>`}async renderTrajectoryChart(e,n,r,a,s,i){let o=a,l=this.readEmbeddedCarrier(a,rd),c=this.readEmbeddedCarrier(a,a$),u=this.readEmbeddedCarrier(a,s$),p=nt(o,AR),f=p$(o,$R),h=p$(o,SR),g=e.length,m=await this.collectTrackedSeries(e,n,r,{hueBy:l,lowerPath:c,upperPath:u});if(m.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let y=[];for(let se of m){for(let Ne of se.points)Ne!==null&&y.push(Ne);for(let Ne of se.lower??[])Ne!==null&&y.push(Ne);for(let Ne of se.upper??[])Ne!==null&&y.push(Ne)}if(y.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...y),k=Math.max(...y);k-v<1e-9&&(v-=.5,k+=.5);let w=(k-v)*.08,S=f!==void 0?f:v-w,A=h!==void 0?h:k+w;A-S<1e-9&&(A=S+1);let C=1e3,N=440,_={top:28,right:24,bottom:56,left:52},B=C-_.left-_.right,X=N-_.top-_.bottom,pe=se=>g<=1?_.left+B/2:_.left+se/(g-1)*B,J=se=>_.top+(1-(se-S)/(A-S))*X,Q=(se,Ne)=>se.hue!==void 0?se.hue:Math.round(Ne*360/m.length),H=[];for(let se=0;se<5;se++){let Ne=S+se*(A-S)/4,qe=J(Ne);H.push(`<line x1="${_.left}" y1="${qe.toFixed(1)}" x2="${(C-_.right).toFixed(1)}" y2="${qe.toFixed(1)}" class="kan-fan-grid"/>`),H.push(`<text x="${(_.left-8).toFixed(1)}" y="${(qe+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${Ne.toFixed(2)}</text>`)}let K=[];e.forEach((se,Ne)=>{let qe=this.hrefForSubject(se,s),Le=this.uriOf(se).version,Re=Le?ee(Le):"",Ke=pe(Ne),We=Hl(i(se));K.push(`<a href="${O(qe)}" class="kan-fan-xtick"><line x1="${Ke.toFixed(1)}" y1="${_.top}" x2="${Ke.toFixed(1)}" y2="${(N-_.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${Ke.toFixed(1)}" y="${(N-_.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Er(Re||se.name)}</text>`+(We?`<text x="${Ke.toFixed(1)}" y="${(N-_.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Er(We)}</text>`:"")+"</a>")});let E=[];m.forEach((se,Ne)=>{if(!se.lower||!se.upper)return;let qe=Q(se,Ne),Le=[],Re=[];for(let We=0;We<g;We++){let pt=se.upper[We],yt=se.lower[We];pt==null||yt===null||yt===void 0||(Le.push(`${pe(We).toFixed(1)},${J(pt).toFixed(1)}`),Re.unshift(`${pe(We).toFixed(1)},${J(yt).toFixed(1)}`))}let Ke=Le.concat(Re);Ke.length<3||E.push(`<polygon class="kan-fan-band" points="${Ke.join(" ")}" fill="hsl(${qe},65%,60%)"/>`)});let U=[];m.forEach((se,Ne)=>{let qe=`hsl(${Q(se,Ne)},65%,60%)`,Le=[],Re=[];se.points.forEach((Ke,We)=>{if(Ke===null)return;let pt=pe(We),yt=J(Ke);Le.push(`${pt.toFixed(1)},${yt.toFixed(1)}`),Re.push(`<circle cx="${pt.toFixed(1)}" cy="${yt.toFixed(1)}" r="3.5" fill="${qe}"/>`)}),Le.length!==0&&U.push(`<g class="kan-fan-series" data-series="${O(se.key)}"><polyline points="${Le.join(" ")}" fill="none" stroke="${qe}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+Re.join("")+"</g>")});let R=`<svg class="kan-fan-svg" viewBox="0 0 ${C} ${N}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+H.join("")+K.join("")+E.join("")+U.join("")+"</svg>",ce=p?`${O(p)}=`:"",ae=m.map((se,Ne)=>{let qe=Q(se,Ne),Le=se.points.filter(Te=>Te!==null),Re=Le.length?Le[0]:void 0,Ke=Le.length?Le[Le.length-1]:void 0,We="";if(Ke!==void 0&&Re!==void 0){let Te=Ke-Re;if(Math.abs(Te)>=.005){let Ot=Te>0?"up":"down",zt=Te>0?"\u25B2":"\u25BC";We=` <span class="kan-fan-delta ${Ot}">${Te>0?"+":""}${Te.toFixed(2)} ${zt}</span>`}else We=' <span class="kan-fan-delta flat">\u2014</span>'}let pt=Ke!==void 0?`${ce}${Ke.toFixed(2)}`:"\u2014",yt=se.lastSubject&&this.isLinkable(lt(se.lastSubject),s)?`<a href="${O(this.hrefForSubject(se.lastSubject,s))}">${O(se.label)}</a>`:O(se.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${qe}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${yt}</span><span class="kan-fan-legend-cur">${pt}${We}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${R}</div><div class="kan-fan-legend">${ae.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let o=Ie(i,bR);if(!o)return;let l=Ie(i,Kl),c=nt(i,vR),u=this.readPropertyValueText(i,wR),p=u!==void 0?Number(u):NaN;return{ofClass:o,...l?{orderBy:l}:{},descending:c==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},r=this.readEmbeddedCarrier(e,Nt);if(r)return n(r);let a=Ie(e,Nt);if(!a)return;let s=Qe(this.catalog,a);return s&&sn(s).some(i=>Ye(i.subject,kR))&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let r=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";r=r.slice().sort((s,i)=>a(s).localeCompare(a(i))),n.descending&&r.reverse()}return n.limit!==void 0&&(r=r.slice(0,n.limit)),r}renderResourceGrid(e,n,r){let a=this.resolveResourceQuery(e),s=Ie(e,Nt)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let i=Qe(this.catalog,s),o=i?wt(this.catalog,i)!==void 0:!1,l=[];if(o&&r){let u=this.readPropertyValueReferences(r,s);for(let p of u){let f=Qe(this.catalog,{publisher:p.subject.publisher,package_:p.subject.package_,name:p.subject.name,...p.subject.version?{version:p.subject.version}:{}});f&&l.push(f)}}else a?l=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):l=this.findInstancesOfClass(s,this.readTransitive(e));if(l.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let c=[];for(let u of l){let p=Oe(this.catalog,u),f=p.label,h=p.summary,g=this.uriOf(u),m=g.package_,y=g.version,v=this.resourceHref({publisher:lt(u),package_:m,name:u.name,...y?{version:y}:{}},n),k=h?`<p class="kan-resource-card-subtitle">${O(h)}</p>`:"",w=`<h3 class="kan-resource-card-title">${O(f)}</h3>${k}`;c.push(this.isLinkable(lt(u),n)?`<a class="kan-resource-card" href="${O(v)}">${w}</a>`:`<span class="kan-resource-card">${w}</span>`)}return`<section class="kan-resource-grid">
|
|
310
310
|
${c.join(`
|
|
311
311
|
`)}
|
|
312
|
-
</section>`}readTransitive(e){let n=
|
|
312
|
+
</section>`}readTransitive(e){let n=Bn(e,DR);return n instanceof Ge?n.object===!0:n instanceof Ce&&n.object==="true"}findInstancesOfClass(e,n=!1){let r=n?this.descendantTypeKeys(e):new Set([Ze(e)]),a=[];for(let s of this.catalog)s instanceof V&&sn(s).some(i=>r.has(Ze(i.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,r){let a=(e.namespace||"").split("/");if(a.length<2)return"";let s=a[0],i=a[1]??"",o=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!s||!o)return"";if(r?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
313
313
|
<li><a href="${O(this.publisherHref(s))}">${O(s)}</a></li>
|
|
314
314
|
<li aria-current="page">${O(o)}</li>
|
|
315
315
|
</ol></nav>`;let c=e.name,u=!!Qe(this.catalog,{publisher:s,package_:o,name:o}),p=l?`${o}@${l}`:o,f=this.resourceHref({publisher:s,package_:o,name:o,...l?{version:At(l)}:{}},s),h=e.name===o,g=[];return g.push(`<li><a href="${O(this.publisherHref(s))}">${O(s)}</a></li>`),h?g.push(`<li aria-current="page">${O(p)}</li>`):(g.push(u?`<li><a href="${O(f)}">${O(p)}</a></li>`:`<li>${O(p)}</li>`),g.push(`<li aria-current="page">${O(c)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
316
316
|
${g.join(`
|
|
317
317
|
`)}
|
|
318
|
-
</ol></nav>`}renderNavGroup(e,n){let r=this.valueItems(this.publisherSubject(n),
|
|
318
|
+
</ol></nav>`}renderNavGroup(e,n){let r=this.valueItems(this.publisherSubject(n),QO);if(r.length===0)return"";let a=[];for(let s of r){if(!(s instanceof D))continue;let i=Qe(this.catalog,{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}),{href:o,label:l}=this.resolveNavEntry(s,i,n),c=this.hrefForSubject(e,n),u=o===c?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${O(o)}"${u}>${O(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
319
319
|
${a.join(`
|
|
320
320
|
`)}
|
|
321
|
-
</ul></nav>`}renderSiteFooter(e){let n=
|
|
322
|
-
`)}</footer>`}resolveNavEntry(e,n,r){if(n&&sn(n).map(i=>i.subject).some(i=>i.publisher===
|
|
321
|
+
</ul></nav>`}renderSiteFooter(e){let n=Bn(this.publisherSubject(e),ZO),r;if(n instanceof Ae?r=n.object:n instanceof de&&n.object instanceof D&&(r=Qe(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!r)return"";let a=nt(r,eL),s=this.valueItems(r,tL),i=[];for(let l of s){if(!(l instanceof D))continue;let c=Qe(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:u,label:p}=this.resolveNavEntry(l,c,e);i.push(`<a class="kan-footer-link" href="${O(u)}">${O(p)}</a>`)}if(!a&&i.length===0)return"";let o=[];return i.length>0&&o.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&o.push(`<p class="kan-footer-text">${O(a)}</p>`),`<footer class="kan-site-footer">${o.join(`
|
|
322
|
+
`)}</footer>`}resolveNavEntry(e,n,r){if(n&&sn(n).map(i=>i.subject).some(i=>i.publisher===ed.publisher&&i.package_===ed.package_&&i.name===ed.name)){let i=nt(n,Zf),o=Bn(n,Gw);if(o instanceof de&&o.object instanceof D){let l=o.object,c=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Gw,r),label:i??c??l.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},r,"*"),s=n?Oe(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new FO(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof V)||!sn(n).some(i=>Ye(i.subject,BL)))continue;let r=nt(n,HL);if(!r)continue;let a=this.valueItems(n,WL),s=[];for(let i of a){if(!(i instanceof te))continue;let o=Ie(i,zL),l=nt(i,YL);!o||!l||s.push({tokenClass:o.name,pattern:l})}e.push({language:r,rules:s})}return e}renderLinks(e,n){let r=Ie(e,Nt);if(!r)return"";let a=this.valueItems(n,r),s=[];for(let i of a){let o;if(i instanceof te?o=i:i instanceof D&&(o=Qe(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!o)continue;let l=nt(o,JL);if(!l)continue;let c=nt(o,Zf)??l,u=nt(o,zw),p=u?` title="${O(u)}"`:"";s.push(`<a class="kan-extlink" href="${O(l)}"${p} target="_blank" rel="noopener noreferrer">${O(c)}</a>`)}return s.length===0?"":`<section class="kan-extlink-row">${s.join("")}</section>`}renderMarkdown(e,n,r){let a=Ie(e,Nt);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=Bn(n,a),i=new Map,o;if(s instanceof Rt?o=this.resolveMarkdownLinks(s,r,i):s instanceof Ce?o=s.object:o=this.readPropertyValueText(n,a),!o)return"";let l=this.codeHighlighter(),c=Ti(o,{highlight:(u,p)=>l.highlight(u,p)});for(let[u,p]of i){let f=new RegExp('(<a href="'+h$(u)+'">)([^<]*)(</a>)',"g");c=c.replace(f,`$1<img class="kan-md-chip" src="${O(p)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
|
|
323
323
|
${c}
|
|
324
|
-
</section>`}resolveMarkdownLinks(e,n,r){let a=e.object,s=[...e.links].sort((i,o)=>o.startOffset-i.startOffset);for(let i of s){let o;if(i.target&&this.isLinkable(i.target.subject.publisher,n)){let l=i.target.subject,c=(i.displayText??this.readLabelForUri({publisher:l.publisher,package_:l.package_,name:l.name})??i.reference).replace(/[[\]]/g,""),u=this.resourceHref({publisher:l.publisher,package_:l.package_,name:l.name,...l.version?{version:l.version}:{}},n);r&&r.set(u,`${u}.svg`),o=`[${c}](${u})`}else if(i.target){let l=i.target.subject;o=(i.displayText??this.readLabelForUri({publisher:l.publisher,package_:l.package_,name:l.name})??i.reference).replace(/[[\]]/g,"")}else o=i.displayText??i.reference;a=a.slice(0,i.startOffset)+o+a.slice(i.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let{parts:r}=this.readLookParts(n.declaration,
|
|
324
|
+
</section>`}resolveMarkdownLinks(e,n,r){let a=e.object,s=[...e.links].sort((i,o)=>o.startOffset-i.startOffset);for(let i of s){let o;if(i.target&&this.isLinkable(i.target.subject.publisher,n)){let l=i.target.subject,c=(i.displayText??this.readLabelForUri({publisher:l.publisher,package_:l.package_,name:l.name})??i.reference).replace(/[[\]]/g,""),u=this.resourceHref({publisher:l.publisher,package_:l.package_,name:l.name,...l.version?{version:l.version}:{}},n);r&&r.set(u,`${u}.svg`),o=`[${c}](${u})`}else if(i.target){let l=i.target.subject;o=(i.displayText??this.readLabelForUri({publisher:l.publisher,package_:l.package_,name:l.name})??i.reference).replace(/[[\]]/g,"")}else o=i.displayText??i.reference;a=a.slice(0,i.startOffset)+o+a.slice(i.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let{parts:r}=this.readLookParts(n.declaration,ad),a=[];for(let s of r){let i=os(s);if(!i||!Ye(i,Yw))continue;let o=Ie(s,Nt);if(!o)continue;let l=this.readPropertyValueText(e,o);l&&a.push(l)}return a.length>0?a.join(`
|
|
325
325
|
|
|
326
|
-
`):void 0}renderHero(e,n,r){let a=g=>{let m=
|
|
326
|
+
`):void 0}renderHero(e,n,r){let a=g=>{let m=Bn(e,g);return m instanceof Ge?m.object===!0:m instanceof Ce&&m.object==="true"},s=a(IR),i=!s&&a(RR),o=s||i,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":i?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(o){let g=this.svgUrlForSubject(n,r),m=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${m}" src="${O(g)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let c=Ie(e,PR);if(c){let g=this.readPropertyValueText(n,c);g&&l.push(`<span class="kan-hero-eyebrow">${O(Yl(g)??g)}</span>`)}let u=Ie(e,NR),p="";u&&(p=this.readPropertyValueText(n,u)??""),p||(p=Oe(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${O(Yl(p)??p)}</h1>`);let f=Ie(e,TR);if(f){let g=this.readPropertyValueText(n,f);g&&l.push(`<p class="kan-hero-subtitle">${O(Yl(g)??g)}</p>`)}let h=Ie(e,l$);if(h){let g=this.readPropertyValueReferences(n,h);if(g.length>0){let m=g.map(y=>this.renderBadge(y,l$,r)).join("");l.push(`<div class="kan-hero-badges">${m}</div>`)}}return o&&l.push("</div>"),l.push("</header>"),l.join(`
|
|
327
327
|
`)}renderPropertyList(e,n,r){let a=Ie(e,Nt);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,i=this.valueItems(n,a),o=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,Nt,r)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${O(s)}</h3>`,`<ul class="kan-property-list-items">${o}</ul>`,"</section>"].join(`
|
|
328
|
-
`)}renderPropertyTable(e,n,r,a=""){let s=Ie(e,Nt);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let i=this.valueItems(n,s).filter(u=>u instanceof te);if(i.length===0)return"";let o=this.readLabelForUri(s)??s.name,l=a?`${a}.${s.name}`:s.name,c=Ie(e,hR);return this.renderEmbeddedTable(i,r,o,l,c)}renderEmbeddedTable(e,n,r,a,s){let i=[],o=new Set;for(let y of e)for(let v of y.statement){let k=v.predicate?.subject;if(!k||this.isMetaPredicate(k))continue;let w=`${k.publisher}/${k.package_}/${k.name}`;o.has(w)||(o.add(w),i.push({uri:{publisher:k.publisher,package_:k.package_,name:k.name},label:this.readLabelForUri(k)??k.name}))}if(i.length===0)return"";let l=e.map(y=>Oe(this.catalog,y).label),c=e.some((y,v)=>l[v]!==""&&l[v]!==y.name),u=!!a,p=(u?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+i.map(y=>`<th>${O(y.label)}</th>`).join(""),f=e.map((y,v)=>{let k=u&&y.name?`${a}.${y.name}`:"",w=k?` id="${O(k)}"`:"",S=u?`<td class="kan-anchor-col">${k?this.anchorLink(k):""}</td>`:"",A=c?`<th scope="row">${O(l[v]??"")}</th>`:"",C=i.map(N=>{let _=Kn(y,N.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${w}>${S}${A}${C}</tr>`}).join(""),h=u&&a?` id="${O(a)}"`:"",g=u&&a?this.anchorLink(a):"",m=r?`<caption>${O(r)}${g}</caption>`:"";return`<table class="kan-property-table"${h}>${m}<thead><tr>${p}</tr></thead><tbody>${f}</tbody></table>`}tableCellValue(e,n,r){if(r&&Ye(r,Xw)){if(e instanceof et)return this.barMarkup(String(e.object));if(e instanceof Ce&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Lt)return this.statementToMarkdownHtml(e,n);if(e instanceof Ce)return f$(e.object);if(e instanceof et||e instanceof Ge)return O(String(e.object));if(e instanceof de&&e.object instanceof D)return this.detailReferenceLink(e.object,n);if(e instanceof Ae)return this.renderEmbeddedTable([e.object],n);if(e instanceof he){let a=e.object??[],s=a.filter(i=>i instanceof te);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(i=>i instanceof D?this.detailReferenceLink(i,n):i instanceof te?this.renderEmbeddedTable([i],n):O(String(i))).filter(i=>i).join(", ")}return""}statementToMarkdownHtml(e,n){let r=new Map,a;if(e instanceof Lt?a=this.resolveMarkdownLinks(e,n,r):e instanceof Ce&&(a=e.object),!a)return"";let s=this.codeHighlighter(),i=Ti(a,{highlight:(o,l)=>s.highlight(o,l)});for(let[o,l]of r){let c=new RegExp('(<a href="'+p$(o)+'">)([^<]*)(</a>)',"g");i=i.replace(c,`$1<img class="kan-md-chip" src="${O(l)}" alt="" loading="lazy">$2$3`)}return i}renderBadgeRow(e,n,r){let a=Ie(e,Nt);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,Nt,r)).join("")}</div>`}renderChipRow(e,n,r){let a=rd(e,DR);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let i of a){let o=this.readLabelForUri(i)??i.name,l=this.renderValuesInline(n,i,i,r);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${O(o)}</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,r){let a=rd(e,i$);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,Jw),i=this.readEmbeddedCarrier(e,dR),o=[];for(let l of a){let c=this.readPropertyValueReferences(n,l);if(c.length===0)continue;let u=this.readLabelForUri(l)??l.name;if(s){let p=[];for(let h of c)p.push(await this.renderDetailRow(h,s,i,r));let f=p.filter(h=>h).join("");f&&o.push(`<dt>${O(u)}</dt><dd><ul class="kan-ref-rows">${f}</ul></dd>`)}else{let p=c.map(f=>this.renderReferenceLink(f,i$,r)).join(", ");o.push(`<dt>${O(u)}</dt><dd>${p}</dd>`)}}return o.length===0?"":`<dl class="kan-reference-list">${o.join("")}</dl>`}async renderDetailRow(e,n,r,a){let s=Qe(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 i=await this.evaluateCarrier(n,s)??Oe(this.catalog,s).label,o="";if(r){let p=await this.evaluateCarrier(r,s);p&&(o=`<span class="kan-ref-badge">${O(p)}</span>`)}let l=`<span class="kan-ref-text">${O(i)}</span>${o}`;if(!this.isLinkable(lt(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${l}</span></li>`;let c=this.hrefForSubject(s,a),u=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${O(c)}"><img class="kan-ref-icon" src="${O(u)}" alt="" loading="lazy"/>`+l+"</a></li>"}readPropertyValueText(e,n){let r=bt(e,n);if(r.length===0)return Kn(e,n)?"":void 0;let a=i=>i instanceof D?this.readLabelForUri({publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})??i.subject.name:i instanceof te?this.readEmbeddedText(i,0):String(i),s=r.map(i=>"literal"in i.item?i.item.value:i.item);if(r.length===1&&!r[0].fromList){let i=s[0];return i instanceof te?this.readEmbeddedText(i,0)||void 0:a(i)}return s.map(a).filter(i=>i).join(", ")}readEmbeddedText(e,n){if(n>=a$)return"\u2026";let r=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&Ye(s,ra)))if(a instanceof Ce)r.push(a.object);else if(a instanceof et||a instanceof Ge)r.push(String(a.object));else if(a instanceof de){let i=a.object;r.push(this.readLabelForUri({publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})??i.subject.name)}else a instanceof Ae&&r.push(this.readEmbeddedText(a.object,n+1))}return r.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){return this.valueItems(e,n).filter(r=>r instanceof D)}valueItems(e,n){return bt(e,n).map(r=>"literal"in r.item?r.item.value:r.item)}renderInlineValue(e,n,r,a=0){return e instanceof D?this.renderReferenceLink(e,n,r):e instanceof te?this.renderEmbeddedInline(e,r,a):typeof e=="string"?O(e):typeof e=="number"||typeof e=="boolean"?O(String(e)):""}renderValuesInline(e,n,r,a,s=0){return this.valueItems(e,n).map(i=>this.renderInlineValue(i,r,a,s)).filter(i=>i).join(", ")}renderEmbeddedInline(e,n,r=0){if(r>=a$)return"\u2026";let a=[];for(let s of o$(e)){if(Ye(s,ra))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,o=this.renderValuesInline(e,s,s,n,r+1);o&&a.push(`<dt>${O(i)}</dt><dd>${o}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,r){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,r))return`<span class="kan-link-plain">${O(a)}</span>`;let s=this.urlForReference(e,n,r);return`<a class="kan-link" href="${O(s)}">${O(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,r){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}),i=s?` title="${O(s)}"`:"";if(!this.isLinkable(e.subject.publisher,r))return`<span class="kan-badge"${i}>${O(a)}</span>`;let o=this.urlForReference(e,n,r);return`<a class="kan-badge" href="${O(o)}"${i}>${O(a)}</a>`}urlForReference(e,n,r){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},r,a)}getUrlFormForProperty(e){let n=Qe(this.catalog,e);if(!n)return"=";let r=nt(n,FR);return r==="*"||r==="^"||r==="~"||r==="="?r:"="}readLabelForUri(e){let n=Qe(this.catalog,e);if(n)return Oe(this.catalog,n).label}readCommentForUri(e){let n=Qe(this.catalog,e);if(n)return Oe(this.catalog,n).summary}};function qR(t){let e=new Map;for(let n of t.statement){if(!(n instanceof Ae)||!oa(n,Wl.publisher,Wl.package_,Wl.name))continue;let r=n.object;for(let a of r.statement){if(!(a instanceof Ce))continue;let s=a.predicate?.subject?.name;if(!s)continue;let i=a.object;e.has(s)||e.set(s,i)}}return e}function Kl(t){for(let e of t.statement)if(e instanceof Ae&&oa(e,Hl.publisher,Hl.package_,Hl.name))return e.object}function os(t){for(let e of t.statement)if(e instanceof de&&!(!e.predicate?.subject||!Ye(e.predicate.subject,ra))&&e.object instanceof D){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Ie(t,e){for(let n of t.statement)if(n instanceof de&&oa(n,e.publisher,e.package_,e.name)&&n.object instanceof D){let r=n.object.subject;return{publisher:r.publisher,package_:r.package_,name:r.name}}}function rd(t,e){return Fe(t,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function o$(t){let e=new Map;for(let n of t.statement){let r=n.predicate?.subject;if(!r)continue;let a=`${r.publisher}/${r.package_}/${r.name}`;e.has(a)||e.set(a,{publisher:r.publisher,package_:r.package_,name:r.name})}return[...e.values()]}function Kn(t,e){for(let n of t.statement)if(oa(n,e.publisher,e.package_,e.name))return n}function nt(t,e){for(let n of t.statement)if(n instanceof Ce&&oa(n,e.publisher,e.package_,e.name))return n.object}function l$(t,e){for(let n of t.statement)if(n instanceof et&&oa(n,e.publisher,e.package_,e.name))return n.object}function VR(t,e){for(let n of t.statement)if(n instanceof Ge&&oa(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function KR(t){for(let e of sn(t))if(Ye(e.subject,qO)||Ye(e.subject,VO))return!0;return!1}function sn(t){return bt(t,ra).map(e=>e.item).filter(e=>e instanceof D)}function Ul(t){let e=[];for(let n of t.statement)if(n instanceof de){if(!n.predicate?.subject||!Ye(n.predicate.subject,fd))continue;n.object instanceof D&&e.push(n.object)}else if(n instanceof he){if(!n.predicate?.subject||!Ye(n.predicate.subject,fd))continue;for(let r of n.object??[])r instanceof D&&e.push(r)}return e}function Qe(t,e){let n="version"in e?e.version:void 0;if(n){let r=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of t)if(a instanceof q&&a.name===e.name&&a.namespace===r)return a}for(let r of t)if(!(!(r instanceof q)||r.name!==e.name)&&(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return r}function oa(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function Ye(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Ze(t){return`${t.publisher}/${t.package_}/${t.name}`}function UR(t){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(t.resource.namespace)}/${e(t.resource.name)}`),n.push(" *");let r=new Map;for(let s of t.tokens.values()){let i=`${s.sourceNamespace} ${s.sourceName}`,o=r.get(i)??{count:0,level:s.level};o.count+=1,r.set(i,o)}if(r.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${t.tokens.size}):`);for(let[s,{count:i,level:o}]of r)n.push(` * ${i} from ${e(s)} (${o})`)}let a=t.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 t.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(t.look){let s=t.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
328
|
+
`)}renderPropertyTable(e,n,r,a=""){let s=Ie(e,Nt);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let i=this.valueItems(n,s).filter(u=>u instanceof te);if(i.length===0)return"";let o=this.readLabelForUri(s)??s.name,l=a?`${a}.${s.name}`:s.name,c=Ie(e,mR);return this.renderEmbeddedTable(i,r,o,l,c)}renderEmbeddedTable(e,n,r,a,s){let i=[],o=new Set;for(let y of e)for(let v of y.statement){let k=v.predicate?.subject;if(!k||this.isMetaPredicate(k))continue;let w=`${k.publisher}/${k.package_}/${k.name}`;o.has(w)||(o.add(w),i.push({uri:{publisher:k.publisher,package_:k.package_,name:k.name},label:this.readLabelForUri(k)??k.name}))}if(i.length===0)return"";let l=e.map(y=>Oe(this.catalog,y).label),c=e.some((y,v)=>l[v]!==""&&l[v]!==y.name),u=!!a,p=(u?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+i.map(y=>`<th>${O(y.label)}</th>`).join(""),f=e.map((y,v)=>{let k=u&&y.name?`${a}.${y.name}`:"",w=k?` id="${O(k)}"`:"",S=u?`<td class="kan-anchor-col">${k?this.anchorLink(k):""}</td>`:"",A=c?`<th scope="row">${O(l[v]??"")}</th>`:"",C=i.map(N=>{let _=Bn(y,N.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${w}>${S}${A}${C}</tr>`}).join(""),h=u&&a?` id="${O(a)}"`:"",g=u&&a?this.anchorLink(a):"",m=r?`<caption>${O(r)}${g}</caption>`:"";return`<table class="kan-property-table"${h}>${m}<thead><tr>${p}</tr></thead><tbody>${f}</tbody></table>`}tableCellValue(e,n,r){if(r&&Ye(r,e$)){if(e instanceof et)return this.barMarkup(String(e.object));if(e instanceof Ce&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Rt)return this.statementToMarkdownHtml(e,n);if(e instanceof Ce)return m$(e.object);if(e instanceof et||e instanceof Ge)return O(String(e.object));if(e instanceof de&&e.object instanceof D)return this.detailReferenceLink(e.object,n);if(e instanceof Ae)return this.renderEmbeddedTable([e.object],n);if(e instanceof he){let a=e.object??[],s=a.filter(i=>i instanceof te);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(i=>i instanceof D?this.detailReferenceLink(i,n):i instanceof te?this.renderEmbeddedTable([i],n):O(String(i))).filter(i=>i).join(", ")}return""}statementToMarkdownHtml(e,n){let r=new Map,a;if(e instanceof Rt?a=this.resolveMarkdownLinks(e,n,r):e instanceof Ce&&(a=e.object),!a)return"";let s=this.codeHighlighter(),i=Ti(a,{highlight:(o,l)=>s.highlight(o,l)});for(let[o,l]of r){let c=new RegExp('(<a href="'+h$(o)+'">)([^<]*)(</a>)',"g");i=i.replace(c,`$1<img class="kan-md-chip" src="${O(l)}" alt="" loading="lazy">$2$3`)}return i}renderBadgeRow(e,n,r){let a=Ie(e,Nt);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,Nt,r)).join("")}</div>`}renderChipRow(e,n,r){let a=sd(e,FR);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let i of a){let o=this.readLabelForUri(i)??i.name,l=this.renderValuesInline(n,i,i,r);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${O(o)}</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,r){let a=sd(e,c$);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,Zw),i=this.readEmbeddedCarrier(e,hR),o=[];for(let l of a){let c=this.readPropertyValueReferences(n,l);if(c.length===0)continue;let u=this.readLabelForUri(l)??l.name;if(s){let p=[];for(let h of c)p.push(await this.renderDetailRow(h,s,i,r));let f=p.filter(h=>h).join("");f&&o.push(`<dt>${O(u)}</dt><dd><ul class="kan-ref-rows">${f}</ul></dd>`)}else{let p=c.map(f=>this.renderReferenceLink(f,c$,r)).join(", ");o.push(`<dt>${O(u)}</dt><dd>${p}</dd>`)}}return o.length===0?"":`<dl class="kan-reference-list">${o.join("")}</dl>`}async renderDetailRow(e,n,r,a){let s=Qe(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 i=await this.evaluateCarrier(n,s)??Oe(this.catalog,s).label,o="";if(r){let p=await this.evaluateCarrier(r,s);p&&(o=`<span class="kan-ref-badge">${O(p)}</span>`)}let l=`<span class="kan-ref-text">${O(i)}</span>${o}`;if(!this.isLinkable(lt(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${l}</span></li>`;let c=this.hrefForSubject(s,a),u=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${O(c)}"><img class="kan-ref-icon" src="${O(u)}" alt="" loading="lazy"/>`+l+"</a></li>"}readPropertyValueText(e,n){let r=bt(e,n);if(r.length===0)return Bn(e,n)?"":void 0;let a=i=>i instanceof D?this.readLabelForUri({publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})??i.subject.name:i instanceof te?this.readEmbeddedText(i,0):String(i),s=r.map(i=>"literal"in i.item?i.item.value:i.item);if(r.length===1&&!r[0].fromList){let i=s[0];return i instanceof te?this.readEmbeddedText(i,0)||void 0:a(i)}return s.map(a).filter(i=>i).join(", ")}readEmbeddedText(e,n){if(n>=o$)return"\u2026";let r=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&Ye(s,aa)))if(a instanceof Ce)r.push(a.object);else if(a instanceof et||a instanceof Ge)r.push(String(a.object));else if(a instanceof de){let i=a.object;r.push(this.readLabelForUri({publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})??i.subject.name)}else a instanceof Ae&&r.push(this.readEmbeddedText(a.object,n+1))}return r.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){return this.valueItems(e,n).filter(r=>r instanceof D)}valueItems(e,n){return bt(e,n).map(r=>"literal"in r.item?r.item.value:r.item)}renderInlineValue(e,n,r,a=0){return e instanceof D?this.renderReferenceLink(e,n,r):e instanceof te?this.renderEmbeddedInline(e,r,a):typeof e=="string"?O(e):typeof e=="number"||typeof e=="boolean"?O(String(e)):""}renderValuesInline(e,n,r,a,s=0){return this.valueItems(e,n).map(i=>this.renderInlineValue(i,r,a,s)).filter(i=>i).join(", ")}renderEmbeddedInline(e,n,r=0){if(r>=o$)return"\u2026";let a=[];for(let s of u$(e)){if(Ye(s,aa))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,o=this.renderValuesInline(e,s,s,n,r+1);o&&a.push(`<dt>${O(i)}</dt><dd>${o}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,r){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,r))return`<span class="kan-link-plain">${O(a)}</span>`;let s=this.urlForReference(e,n,r);return`<a class="kan-link" href="${O(s)}">${O(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,r){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}),i=s?` title="${O(s)}"`:"";if(!this.isLinkable(e.subject.publisher,r))return`<span class="kan-badge"${i}>${O(a)}</span>`;let o=this.urlForReference(e,n,r);return`<a class="kan-badge" href="${O(o)}"${i}>${O(a)}</a>`}urlForReference(e,n,r){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},r,a)}getUrlFormForProperty(e){let n=Qe(this.catalog,e);if(!n)return"=";let r=nt(n,VR);return r==="*"||r==="^"||r==="~"||r==="="?r:"="}readLabelForUri(e){let n=Qe(this.catalog,e);if(n)return Oe(this.catalog,n).label}readCommentForUri(e){let n=Qe(this.catalog,e);if(n)return Oe(this.catalog,n).summary}};function qR(t){let e=new Map;for(let n of t.statement){if(!(n instanceof Ae)||!la(n,zl.publisher,zl.package_,zl.name))continue;let r=n.object;for(let a of r.statement){if(!(a instanceof Ce))continue;let s=a.predicate?.subject?.name;if(!s)continue;let i=a.object;e.has(s)||e.set(s,i)}}return e}function Ul(t){for(let e of t.statement)if(e instanceof Ae&&la(e,Wl.publisher,Wl.package_,Wl.name))return e.object}function os(t){for(let e of t.statement)if(e instanceof de&&!(!e.predicate?.subject||!Ye(e.predicate.subject,aa))&&e.object instanceof D){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function Ie(t,e){for(let n of t.statement)if(n instanceof de&&la(n,e.publisher,e.package_,e.name)&&n.object instanceof D){let r=n.object.subject;return{publisher:r.publisher,package_:r.package_,name:r.name}}}function sd(t,e){return Fe(t,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function u$(t){let e=new Map;for(let n of t.statement){let r=n.predicate?.subject;if(!r)continue;let a=`${r.publisher}/${r.package_}/${r.name}`;e.has(a)||e.set(a,{publisher:r.publisher,package_:r.package_,name:r.name})}return[...e.values()]}function Bn(t,e){for(let n of t.statement)if(la(n,e.publisher,e.package_,e.name))return n}function nt(t,e){for(let n of t.statement)if(n instanceof Ce&&la(n,e.publisher,e.package_,e.name))return n.object}function p$(t,e){for(let n of t.statement)if(n instanceof et&&la(n,e.publisher,e.package_,e.name))return n.object}function KR(t,e){for(let n of t.statement)if(n instanceof Ge&&la(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function UR(t){for(let e of sn(t))if(Ye(e.subject,qO)||Ye(e.subject,KO))return!0;return!1}function sn(t){return bt(t,aa).map(e=>e.item).filter(e=>e instanceof D)}function Bl(t){let e=[];for(let n of t.statement)if(n instanceof de){if(!n.predicate?.subject||!Ye(n.predicate.subject,hd))continue;n.object instanceof D&&e.push(n.object)}else if(n instanceof he){if(!n.predicate?.subject||!Ye(n.predicate.subject,hd))continue;for(let r of n.object??[])r instanceof D&&e.push(r)}return e}function Qe(t,e){let n="version"in e?e.version:void 0;if(n){let r=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of t)if(a instanceof V&&a.name===e.name&&a.namespace===r)return a}for(let r of t)if(!(!(r instanceof V)||r.name!==e.name)&&(r.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return r}function la(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function Ye(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}function Ze(t){return`${t.publisher}/${t.package_}/${t.name}`}function BR(t){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(t.resource.namespace)}/${e(t.resource.name)}`),n.push(" *");let r=new Map;for(let s of t.tokens.values()){let i=`${s.sourceNamespace} ${s.sourceName}`,o=r.get(i)??{count:0,level:s.level};o.count+=1,r.set(i,o)}if(r.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${t.tokens.size}):`);for(let[s,{count:i,level:o}]of r)n.push(` * ${i} from ${e(s)} (${o})`)}let a=t.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 t.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(t.look){let s=t.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
329
329
|
${n.join(`
|
|
330
330
|
`)}
|
|
331
|
-
*/`}function lt(t){let e=t.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function Ar(t,e,n="it is not rendered"){return`<!-- LookRenderer: a ${t} given by reference names ${e}, which resolves to nothing; ${n}. -->`}function O(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function xr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function c$(t,e){return e==null?"":Pn(e)?e.value:t==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Pn(n)?n.value:xr(typeof n=="string"?n:String(n))).join(""):xr(typeof e=="string"?e:String(e))}function C$(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(Pn(t))return t.value;if(Array.isArray(t))return t.map(C$).filter(n=>n!=="").join(", ");if(t instanceof D)return t.subject.name;if(t instanceof q||t instanceof te)return t.name??"";let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ad(t,e){return t.length<=e?t:t.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function u$(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function p$(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f$(t){let e=zl(t);return O(e||t)}function zl(t){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(t.trim());if(!e)return;let n=Date.parse(t);if(!Number.isFinite(n))return;let r=new Date(n),a=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()]} ${r.getUTCDate()}, ${r.getUTCFullYear()}`;if(!e[4])return a;let s=r.getUTCHours(),i=(s+11)%12+1,o=s>=12?"PM":"AM";return`${a} \xB7 ${i}:${String(r.getUTCMinutes()).padStart(2,"0")} ${o} UTC`}function Bl(t){if(!t)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(t);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)}`:t}function vd(){return new Set(ia.bandDispatchUris().map(t=>`${t.publisher}/${t.package_}/${t.name}`))}var BR={publisher:"kanonak.org",package_:"core-rdf",name:"domain"},j$={publisher:"kanonak.org",package_:"core-rdf",name:"Literal"};function _r(t,e){for(let n of ot(t,e)){if($e(n,j$))return!0;let r=ge(t,n);if(r&&tt.isDatatypeType(r))return!0}return!1}var wd=class N${constructor(e,n){this.catalog=e,this.fieldsByDomain=n}catalog;fieldsByDomain;static of(e){let n=new Map;for(let r of e){if(!(r instanceof q)||!wt(e,r))continue;let a=xe(r);if(a)for(let s of Fe(r,BR)){if($e(s,j$)||!_r(e,s))continue;let i=T(s);n.set(i,[...n.get(i)??[],a])}}return new N$(e,n)}fieldsOf(e){return ot(this.catalog,e).flatMap(n=>this.fieldsByDomain.get(T(n))??[])}isStructured(e){return ya(e)===oe.LangString||this.fieldsOf(e).length>0}all(){let e=new Map;for(let n of this.catalog){let r=n instanceof q?xe(n):void 0;r&&_r(this.catalog,r)&&this.isStructured(r)&&e.set(T(r),r)}return[...e.values()]}};var jd=class{isValid=!1;errors=[];warnings=[];infos=[];get totalIssues(){return this.errors.length+this.warnings.length+this.infos.length}get allDiagnostics(){return[...this.errors,...this.warnings,...this.infos]}},hs=(t=>(t.Info="Info",t.Warning="Warning",t.Error="Error",t))(hs||{}),ve=class{ruleType="";severity="Error";lineNumber;column;entityName;propertyName;propertyPath;message="";suggestion;actualValue;expectedValue;toString(){let t="";return this.lineNumber!==void 0&&(t+=`Line ${this.lineNumber}: `),this.entityName&&(t+=`[${this.entityName}] `),t+=this.message,t}};var ds=class{constructor(t,e={}){this.underlying=t,this.options=e,this.repository=new HR(t)}underlying;options;repository;parsePromise=null;getKanonaks(){return this.parseOnce().then(t=>t.merged)}getAuthoredKanonaks(){return this.parseOnce().then(t=>t.authored)}parseOnce(){return this.parsePromise||(this.parsePromise=(async()=>{let t=this.options.closureOf,e=t?[...t]:await this.underlying.getAllDocumentsAsync(),n=new Set;await tr(e,this.repository,{onDocument:s=>n.add(s.metadata.namespace_.toString())});let r=t?new ka(this.underlying,n):this.underlying,a={};return{merged:await new je().parseKanonaks(r,a),authored:a.authored??[]}})()),this.parsePromise}},HR=class{constructor(t){this.inner=t}inner;highestVersionCache=new Map;byNamespaceCache=new Map;getAllDocumentsAsync(){return this.inner.getAllDocumentsAsync()}getDocumentAsync(t){return this.inner.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){let n=`${t}/${e}`,r=this.byNamespaceCache.get(n);return r||(r=this.inner.getDocumentsByNamespaceAsync(t,e),this.byNamespaceCache.set(n,r),r)}getHighestCompatibleVersionAsync(t,e){let n=e.version,r=n?`${n.major}.${n.minor}.${n.patch}`:"",a=`${t}/${e.packageName}@${e.versionOperator}:${r}`,s=this.highestVersionCache.get(a);return s||(s=this.inner.getHighestCompatibleVersionAsync(t,e),this.highestVersionCache.set(a,s),s)}saveDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}deleteDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}clearNamespaceAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.inner.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.inner.getDocumentUriAsync(t)}};async function Zt(t,e,n){return n?n.getKanonaks():new je().parseKanonaks(new Td(t,e))}async function Tn(t,e,n){let r=await Zt(t,e,n),a=Pd(t);return a?r.filter(s=>s instanceof q&&s.namespace===a):[]}async function ca(t,e,n){let r=Pd(t);if(!r)return[];let a;if(n)a=await n.getAuthoredKanonaks();else{let s={};await new je().parseKanonaks(new Td(t,e),s),a=s.authored??[]}return a.filter(s=>s instanceof q&&s.sourceDoc===r)}function X$(t){let e=[];for(let n of t.statement){let r=n.predicate?.subject;if(r&&e.push(r),n instanceof de&&n.object instanceof D&&e.push(n.object.subject),n instanceof he)for(let a of n.object??[])a instanceof D&&e.push(a.subject)}return e}function Pd(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var Td=class{constructor(t,e){this.document=t,this.broader=e}document;broader;async getAllDocumentsAsync(){let t=this.document.metadata.namespace_?.toString(),e=(await this.broader.getAllDocumentsAsync()).filter(n=>n.metadata.namespace_?.toString()!==t);return[this.document,...e]}getDocumentAsync(t){return this.broader.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){return this.broader.getDocumentsByNamespaceAsync(t,e)}getHighestCompatibleVersionAsync(t,e){return this.broader.getHighestCompatibleVersionAsync(t,e)}getAllDocumentReferencesAsync(){return this.broader.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.broader.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.broader.getDocumentUriAsync(t)}saveDocumentAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}deleteDocumentAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}clearNamespaceAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}};async function Od(t,e,n){let r=new Map;for(let[i,o]of Object.entries(t.metadata?.imports??{}))for(let l of o){if(!it(l))continue;let c=`${i}/${l.packageName}`;r.set(c,{key:c,publisher:i,import_:l,references:[],target:null})}if(r.size===0)return[];let a=(i,o,l)=>{r.get(`${i.publisher}/${i.package_}`)?.references.push({uri:i,where:o,predicate:l})};ln(e,({kanonak:i,path:o})=>{for(let l of i.statement){let c=l.predicate?.subject?.name??"(unknown)";if(l instanceof de)a(l.object.subject,o,c);else if(l instanceof he)for(let u of l.object)u instanceof D&&a(u.subject,o,c);else if(l instanceof Lt)for(let u of l.links)u.target&&a(u.target.subject,o,c)}});let s=[...r.values()].filter(i=>i.references.length>0);for(let i of s)try{i.target=await n.getHighestCompatibleVersionAsync(i.publisher,i.import_)}catch(o){i.failure=o instanceof Error?o.message:String(o)}return s}function Ld(t,e){return Object.prototype.hasOwnProperty.call(t.body,e)}var Q$=class{constructor(t={}){this.options=t}options;ruleName="LinkTarget";async validateAsync(t,e,n){let r=[];if(jc(t).size===0)return r;let a=await Tn(t,e,n);for(let{key:s,references:i,target:o,failure:l}of await Od(t,a,e)){if(!o){let c=i[0],u=`${i.length} reference${i.length===1?"":"s"}, first at '${c.where}.${c.predicate}'`;this.options.offline?r.push(this.finding("Warning",c.where,c.predicate,s,`Link target package '${s}' could not be resolved offline (${u}); the link is UNVERIFIED, not known to be broken.`,"Run without --offline to verify the link over HTTP, or add the package to the workspace or cache.")):r.push(this.finding("Error",c.where,c.predicate,s,`Link target package '${s}' could not be resolved${l?` (${l})`:""} \u2014 ${u}.`,"Check the publisher and package name of the link import; a link must dereference even though it is not a dependency. Use --offline to validate without the network (the link is then reported as unverified)."));continue}for(let{uri:c,where:u,predicate:p}of i)Ld(o,c.name)||r.push(this.finding("Error",u,p,`${s}/${c.name}`,`Link to '${c.name}' in '${p}' at '${u}' does not dereference: package '${s}' (resolved to ${o.metadata.namespace_?.toString()??s}) defines no resource named '${c.name}'.`,`Check for a typo, or a resource renamed or removed in '${s}'; a link addresses a resource by name in its package's current version unless the import is pinned with '='.`))}return r}finding(t,e,n,r,a,s){let i=new ve;return i.ruleType=this.ruleName,i.severity=t,i.entityName=e,i.propertyName=n,i.actualValue=r,i.expectedValue="A link that dereferences to a resource its target package defines",i.message=a,i.suggestion=s,i}},P$=[$.publisher,$.package,$.version,$.name],WR=class{ruleName="TransformationReference";async validateAsync(t,e,n){if(!t.metadata?.namespace_?.version)return[];let r=await Zt(t,e,n),a=[];return ln(await ca(t,e,n),({kanonak:s,path:i})=>{Z$(r,s,$.TransformationReference)&&a.push({node:s,path:i})}),a.flatMap(({node:s,path:i})=>{let o=zR(t,r,s);return o?[this.finding(i,o)]:[]})}finding(t,e){let n=new ve;return n.ruleType=this.ruleName,n.severity="Warning",n.entityName=t,n.actualValue=e.actual,n.expectedValue="A transformation this document defines at its own version, or one in a package it imports, at a version the import admits",n.message=e.message,n.suggestion=e.suggestion,n}};function zR(t,e,n){let[r,a,s,i]=P$.map(p=>vt(n,p));if(!r||!a||!s||!i){let p=P$.filter(f=>!vt(n,f)).map(f=>`tx.${f.name}`).join(", ");return{message:`The transformation reference states no ${p}, so it names no transformation.`,suggestion:"State all four of tx.publisher, tx.package, tx.version and tx.name.",actual:p}}let o=At(s);if(!o)return{message:`The transformation reference names ${i} in ${r}/${a} at '${s}', which isn't a MAJOR.MINOR.PATCH version.`,suggestion:"Set tx.version to the version of the package that defines the transformation, such as 1.2.0.",actual:s};let l=new rt(r,a,i,o),c=t.metadata.namespace_;if(c.publisher===r&&c.package_===a)return Sn(o,c.version)?Z$(e,ge(e,l),$.Transformation)?void 0:{message:`The transformation reference names ${l}, but this document defines no transformation named '${i}'.`,suggestion:`Name one of the transformations this document defines, or define '${i}' as a tx.InstanceTransformation or tx.SetTransformation.`,actual:l.toString()}:{message:`The transformation reference names ${l}, but this document is ${c}, so it names another version's transformation.`,suggestion:`Set tx.version to ${ee(c.version)}, this document's own version.`,actual:l.toString()};let u=(t.metadata.imports?.[r]??[]).filter(p=>p.packageName===a);if(u.length===0)return{message:`The transformation reference names ${l}, but this document imports no ${r}/${a}.`,suggestion:`Import ${r}/${a} at a range that admits ${s}, or name a transformation this document reaches.`,actual:l.toString()};if(!u.some(p=>on(o,p))){let p=u.map(f=>`${Dt(f.versionOperator)}${ee(f.version)}`).join(", ");return{message:`The transformation reference names ${l}, but this document imports ${r}/${a} at ${p}, which doesn't admit ${s}.`,suggestion:`Name a version the import admits, or change the import's range to admit ${s}.`,actual:l.toString()}}}function Z$(t,e,n){return e!==void 0&&Et(e).some(r=>ot(t,r).some(a=>$e(a,n)))}var e0=class t0{static NAMESPACE_PREFIX_PATTERN=/^(rdfs|xsd|owl|rdf|dc|foaf|skos|dct|dcterms|geo|time|prov|schema|og|dbo):[A-Za-z_][A-Za-z0-9_.-]*$/i;ruleName="NamespacePrefix";validate(e){let n=[];for(let[r,a]of Object.entries(e.body))a&&typeof a=="object"&&!Array.isArray(a)&&this.validateEntity(r,a,n);return n}validateEntity(e,n,r){for(let[a,s]of Object.entries(n)){let i=s?.toString()??"";if(i&&t0.NAMESPACE_PREFIX_PATTERN.test(i)){let o=this.getSuggestionForPrefixedValue(i),l=e.split(".")[0],c=new ve;c.ruleType=this.ruleName,c.severity="Error",c.entityName=l,c.propertyName=e,c.actualValue=a,c.expectedValue=o,c.message=`Invalid namespace prefix '${i}'. Use '${o}' without prefix.`,c.suggestion="Kanonak YAML uses simple type names. Namespace resolution is handled through imports.",r.push(c)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validateEntity(`${e}.${a}`,s,r)}}getSuggestionForPrefixedValue(e){let n=e.toLowerCase();if(n==="rdfs:class"||n==="owl:class")return"Class";if(n==="rdfs:property"||n==="rdf:property")return"DatatypeProperty or ObjectProperty";if(n.startsWith("xsd:"))return e.substring(4);let r=e.indexOf(":");return r>=0?e.substring(r+1):e}},n0=class fs{static RESERVED_WORDS=new Set(["imports","namespace","type","label","comment","subclassof","domain","range","required","functional"]);static VALID_PROPERTIES=new Set(["type","label","comment","subClassOf","subPropertyOf","domain","range","required","functional","inverseOf","transitive","symmetric","inverseFunctional"]);static VALID_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_AUGMENTATION_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*\.[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_PROPERTY_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_.]*$/;ruleName="ResourceNaming";validate(e){let n=[],r=e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-");for(let[a,s]of Object.entries(e.body)){let i=fs.VALID_AUGMENTATION_PATTERN.test(a);if(!i&&!r&&fs.RESERVED_WORDS.has(a.toLowerCase())){let o=new ve;o.ruleType=this.ruleName,o.severity="Error",o.entityName=a,o.message=`Entity name '${a}' is a reserved word and cannot be used.`,o.suggestion="Choose a different name that doesn't conflict with Kanonak reserved words.",n.push(o);continue}if(!i&&!fs.VALID_NAME_PATTERN.test(a)){let o;/^\d/.test(a)?o="Entity names must start with a letter, not a number.":a.includes(" ")?o="Entity names cannot contain spaces. Use camelCase or underscores instead.":o="Entity names must start with a letter and contain only letters, numbers, and underscores.";let l=new ve;l.ruleType=this.ruleName,l.severity="Error",l.entityName=a,l.message=`Invalid entity name '${a}'. ${o}`,l.suggestion=o,n.push(l)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validatePropertyNames(a,s,n)}return n}validatePropertyNames(e,n,r){for(let a of Object.keys(n))if(!fs.VALID_PROPERTIES.has(a)&&!fs.VALID_PROPERTY_NAME_PATTERN.test(a)){let s=new ve;s.ruleType=this.ruleName,s.severity="Warning",s.entityName=e,s.propertyName=a,s.message=`Property name '${a}' in entity '${e}' doesn't follow naming conventions.`,s.suggestion="Property names should start with a letter and contain only letters, numbers, and underscores.",r.push(s)}}},r0=class a0{static XSD_TYPES=new Set(["string","integer","int","long","short","byte","decimal","float","double","boolean","bool","datetime","date","time","duration","anyuri","anysimpletype","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte","base64binary","hexbinary"]);ruleName="PropertyTypeSpecificity";validate(e){let n=[];if(e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-"))return n;let r=this.isPropertyDefinedAsClass(e);for(let[a,s]of Object.entries(e.body))if(s&&typeof s=="object"&&!Array.isArray(s)){let i=s,o=i.type;if(o){let l=[];if(Array.isArray(o))for(let c of o){let u=c?.toString();u&&u==="Property"&&!r&&l.push(u)}else{let c=o?.toString();c&&c==="Property"&&!r&&l.push(c)}for(let c of l){let u=this.getPropertyValue(i,"range"),p=this.determinePropertyType(u),f=new ve;f.ruleType=this.ruleName,f.severity="Error",f.entityName=a,f.propertyName="type",f.actualValue=c,f.expectedValue=p,f.message=`Invalid property type '${c}'. Use '${p}' instead.`,f.suggestion="Properties should specify their type: DatatypeProperty for data values, ObjectProperty for relationships.",n.push(f)}}}return n}determinePropertyType(e){return!e||e.trim().length===0?"DatatypeProperty or ObjectProperty":a0.XSD_TYPES.has(e.toLowerCase())?"DatatypeProperty":/^[A-Z]/.test(e)?"ObjectProperty":"DatatypeProperty or ObjectProperty"}getPropertyValue(e,n){let r=e[n];return r?r.toString():null}isPropertyDefinedAsClass(e){let n=e.body.Property;if(n&&typeof n=="object"&&!Array.isArray(n)){let r=n.type;if(r){let a=r.toString();return a==="Class"||a.endsWith(".Class")}}return!1}},s0=class{get ruleName(){return"SubjectKanonakTypeRequired"}validate(t){let e=[];for(let[n,r]of Object.entries(t.body)){if(typeof r!="object"||r===null||Array.isArray(r)||n.includes("."))continue;let a=r,s="type"in a,i=a.type?.toString().trim();if(!s||!i){let o=new ve;o.ruleType=this.ruleName,o.severity="Error",o.entityName=n,o.propertyName="type",o.message=`Subject Kanonak '${n}' must have a 'type' property.`,o.suggestion=`Add a type statement like:
|
|
331
|
+
*/`}function lt(t){let e=t.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function xr(t,e,n="it is not rendered"){return`<!-- LookRenderer: a ${t} given by reference names ${e}, which resolves to nothing; ${n}. -->`}function O(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Er(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function f$(t,e){return e==null?"":Pn(e)?e.value:t==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Pn(n)?n.value:Er(typeof n=="string"?n:String(n))).join(""):Er(typeof e=="string"?e:String(e))}function P$(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(Pn(t))return t.value;if(Array.isArray(t))return t.map(P$).filter(n=>n!=="").join(", ");if(t instanceof D)return t.subject.name;if(t instanceof V||t instanceof te)return t.name??"";let e=t.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function id(t,e){return t.length<=e?t:t.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function d$(t){return t.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function h$(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function m$(t){let e=Yl(t);return O(e||t)}function Yl(t){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(t.trim());if(!e)return;let n=Date.parse(t);if(!Number.isFinite(n))return;let r=new Date(n),a=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r.getUTCMonth()]} ${r.getUTCDate()}, ${r.getUTCFullYear()}`;if(!e[4])return a;let s=r.getUTCHours(),i=(s+11)%12+1,o=s>=12?"PM":"AM";return`${a} \xB7 ${i}:${String(r.getUTCMinutes()).padStart(2,"0")} ${o} UTC`}function Hl(t){if(!t)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(t);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)}`:t}function $d(){return new Set(oa.bandDispatchUris().map(t=>`${t.publisher}/${t.package_}/${t.name}`))}var HR={publisher:"kanonak.org",package_:"core-rdf",name:"domain"},T$={publisher:"kanonak.org",package_:"core-rdf",name:"Literal"};function Cr(t,e){for(let n of ot(t,e)){if($e(n,T$))return!0;let r=ge(t,n);if(r&&tt.isDatatypeType(r))return!0}return!1}var Sd=class O${constructor(e,n){this.catalog=e,this.fieldsByDomain=n}catalog;fieldsByDomain;static of(e){let n=new Map;for(let r of e){if(!(r instanceof V)||!wt(e,r))continue;let a=xe(r);if(a)for(let s of Fe(r,HR)){if($e(s,T$)||!Cr(e,s))continue;let i=T(s);n.set(i,[...n.get(i)??[],a])}}return new O$(e,n)}fieldsOf(e){return ot(this.catalog,e).flatMap(n=>this.fieldsByDomain.get(T(n))??[])}isStructured(e){return ka(e)===oe.LangString||this.fieldsOf(e).length>0}all(){let e=new Map;for(let n of this.catalog){let r=n instanceof V?xe(n):void 0;r&&Cr(this.catalog,r)&&this.isStructured(r)&&e.set(T(r),r)}return[...e.values()]}};var Pd=class{isValid=!1;errors=[];warnings=[];infos=[];get totalIssues(){return this.errors.length+this.warnings.length+this.infos.length}get allDiagnostics(){return[...this.errors,...this.warnings,...this.infos]}},hs=(t=>(t.Info="Info",t.Warning="Warning",t.Error="Error",t))(hs||{}),ve=class{ruleType="";severity="Error";lineNumber;column;entityName;propertyName;propertyPath;message="";suggestion;actualValue;expectedValue;toString(){let t="";return this.lineNumber!==void 0&&(t+=`Line ${this.lineNumber}: `),this.entityName&&(t+=`[${this.entityName}] `),t+=this.message,t}};var ds=class{constructor(t,e={}){this.underlying=t,this.options=e,this.repository=new WR(t)}underlying;options;repository;parsePromise=null;getKanonaks(){return this.parseOnce().then(t=>t.merged)}getAuthoredKanonaks(){return this.parseOnce().then(t=>t.authored)}parseOnce(){return this.parsePromise||(this.parsePromise=(async()=>{let t=this.options.closureOf,e=t?[...t]:await this.underlying.getAllDocumentsAsync(),n=new Set;await rr(e,this.repository,{onDocument:s=>n.add(s.metadata.namespace_.toString())});let r=t?new ba(this.underlying,n):this.underlying,a={};return{merged:await new je().parseKanonaks(r,a),authored:a.authored??[]}})()),this.parsePromise}},WR=class{constructor(t){this.inner=t}inner;highestVersionCache=new Map;byNamespaceCache=new Map;getAllDocumentsAsync(){return this.inner.getAllDocumentsAsync()}getDocumentAsync(t){return this.inner.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){let n=`${t}/${e}`,r=this.byNamespaceCache.get(n);return r||(r=this.inner.getDocumentsByNamespaceAsync(t,e),this.byNamespaceCache.set(n,r),r)}getHighestCompatibleVersionAsync(t,e){let n=e.version,r=n?`${n.major}.${n.minor}.${n.patch}`:"",a=`${t}/${e.packageName}@${e.versionOperator}:${r}`,s=this.highestVersionCache.get(a);return s||(s=this.inner.getHighestCompatibleVersionAsync(t,e),this.highestVersionCache.set(a,s),s)}saveDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}deleteDocumentAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}clearNamespaceAsync(){throw new Error("CachingRepository is read-only during a validation pass.")}getAllDocumentReferencesAsync(){return this.inner.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.inner.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.inner.getDocumentUriAsync(t)}};async function Zt(t,e,n){return n?n.getKanonaks():new je().parseKanonaks(new Ld(t,e))}async function Tn(t,e,n){let r=await Zt(t,e,n),a=Od(t);return a?r.filter(s=>s instanceof V&&s.namespace===a):[]}async function ua(t,e,n){let r=Od(t);if(!r)return[];let a;if(n)a=await n.getAuthoredKanonaks();else{let s={};await new je().parseKanonaks(new Ld(t,e),s),a=s.authored??[]}return a.filter(s=>s instanceof V&&s.sourceDoc===r)}function e0(t){let e=[];for(let n of t.statement){let r=n.predicate?.subject;if(r&&e.push(r),n instanceof de&&n.object instanceof D&&e.push(n.object.subject),n instanceof he)for(let a of n.object??[])a instanceof D&&e.push(a.subject)}return e}function Od(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var Ld=class{constructor(t,e){this.document=t,this.broader=e}document;broader;async getAllDocumentsAsync(){let t=this.document.metadata.namespace_?.toString(),e=(await this.broader.getAllDocumentsAsync()).filter(n=>n.metadata.namespace_?.toString()!==t);return[this.document,...e]}getDocumentAsync(t){return this.broader.getDocumentAsync(t)}getDocumentsByNamespaceAsync(t,e){return this.broader.getDocumentsByNamespaceAsync(t,e)}getHighestCompatibleVersionAsync(t,e){return this.broader.getHighestCompatibleVersionAsync(t,e)}getAllDocumentReferencesAsync(){return this.broader.getAllDocumentReferencesAsync()}getDocumentContentAsync(t){return this.broader.getDocumentContentAsync(t)}getDocumentUriAsync(t){return this.broader.getDocumentUriAsync(t)}saveDocumentAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}deleteDocumentAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}clearNamespaceAsync(){throw new Error("DocumentWithRepositoryCatalog is read-only")}};async function Rd(t,e,n){let r=new Map;for(let[i,o]of Object.entries(t.metadata?.imports??{}))for(let l of o){if(!it(l))continue;let c=`${i}/${l.packageName}`;r.set(c,{key:c,publisher:i,import_:l,references:[],target:null})}if(r.size===0)return[];let a=(i,o,l)=>{r.get(`${i.publisher}/${i.package_}`)?.references.push({uri:i,where:o,predicate:l})};ln(e,({kanonak:i,path:o})=>{for(let l of i.statement){let c=l.predicate?.subject?.name??"(unknown)";if(l instanceof de)a(l.object.subject,o,c);else if(l instanceof he)for(let u of l.object)u instanceof D&&a(u.subject,o,c);else if(l instanceof Rt)for(let u of l.links)u.target&&a(u.target.subject,o,c)}});let s=[...r.values()].filter(i=>i.references.length>0);for(let i of s)try{i.target=await n.getHighestCompatibleVersionAsync(i.publisher,i.import_)}catch(o){i.failure=o instanceof Error?o.message:String(o)}return s}function Id(t,e){return Object.prototype.hasOwnProperty.call(t.body,e)}var t0=class{constructor(t={}){this.options=t}options;ruleName="LinkTarget";async validateAsync(t,e,n){let r=[];if(Pc(t).size===0)return r;let a=await Tn(t,e,n);for(let{key:s,references:i,target:o,failure:l}of await Rd(t,a,e)){if(!o){let c=i[0],u=`${i.length} reference${i.length===1?"":"s"}, first at '${c.where}.${c.predicate}'`;this.options.offline?r.push(this.finding("Warning",c.where,c.predicate,s,`Link target package '${s}' could not be resolved offline (${u}); the link is UNVERIFIED, not known to be broken.`,"Run without --offline to verify the link over HTTP, or add the package to the workspace or cache.")):r.push(this.finding("Error",c.where,c.predicate,s,`Link target package '${s}' could not be resolved${l?` (${l})`:""} \u2014 ${u}.`,"Check the publisher and package name of the link import; a link must dereference even though it is not a dependency. Use --offline to validate without the network (the link is then reported as unverified)."));continue}for(let{uri:c,where:u,predicate:p}of i)Id(o,c.name)||r.push(this.finding("Error",u,p,`${s}/${c.name}`,`Link to '${c.name}' in '${p}' at '${u}' does not dereference: package '${s}' (resolved to ${o.metadata.namespace_?.toString()??s}) defines no resource named '${c.name}'.`,`Check for a typo, or a resource renamed or removed in '${s}'; a link addresses a resource by name in its package's current version unless the import is pinned with '='.`))}return r}finding(t,e,n,r,a,s){let i=new ve;return i.ruleType=this.ruleName,i.severity=t,i.entityName=e,i.propertyName=n,i.actualValue=r,i.expectedValue="A link that dereferences to a resource its target package defines",i.message=a,i.suggestion=s,i}},L$=[$.publisher,$.package,$.version,$.name],zR=class{ruleName="TransformationReference";async validateAsync(t,e,n){if(!t.metadata?.namespace_?.version)return[];let r=await Zt(t,e,n),a=[];return ln(await ua(t,e,n),({kanonak:s,path:i})=>{n0(r,s,$.TransformationReference)&&a.push({node:s,path:i})}),a.flatMap(({node:s,path:i})=>{let o=YR(t,r,s);return o?[this.finding(i,o)]:[]})}finding(t,e){let n=new ve;return n.ruleType=this.ruleName,n.severity="Warning",n.entityName=t,n.actualValue=e.actual,n.expectedValue="A transformation this document defines at its own version, or one in a package it imports, at a version the import admits",n.message=e.message,n.suggestion=e.suggestion,n}};function YR(t,e,n){let[r,a,s,i]=L$.map(p=>vt(n,p));if(!r||!a||!s||!i){let p=L$.filter(f=>!vt(n,f)).map(f=>`tx.${f.name}`).join(", ");return{message:`The transformation reference states no ${p}, so it names no transformation.`,suggestion:"State all four of tx.publisher, tx.package, tx.version and tx.name.",actual:p}}let o=At(s);if(!o)return{message:`The transformation reference names ${i} in ${r}/${a} at '${s}', which isn't a MAJOR.MINOR.PATCH version.`,suggestion:"Set tx.version to the version of the package that defines the transformation, such as 1.2.0.",actual:s};let l=new rt(r,a,i,o),c=t.metadata.namespace_;if(c.publisher===r&&c.package_===a)return Sn(o,c.version)?n0(e,ge(e,l),$.Transformation)?void 0:{message:`The transformation reference names ${l}, but this document defines no transformation named '${i}'.`,suggestion:`Name one of the transformations this document defines, or define '${i}' as a tx.InstanceTransformation or tx.SetTransformation.`,actual:l.toString()}:{message:`The transformation reference names ${l}, but this document is ${c}, so it names another version's transformation.`,suggestion:`Set tx.version to ${ee(c.version)}, this document's own version.`,actual:l.toString()};let u=(t.metadata.imports?.[r]??[]).filter(p=>p.packageName===a);if(u.length===0)return{message:`The transformation reference names ${l}, but this document imports no ${r}/${a}.`,suggestion:`Import ${r}/${a} at a range that admits ${s}, or name a transformation this document reaches.`,actual:l.toString()};if(!u.some(p=>on(o,p))){let p=u.map(f=>`${Ft(f.versionOperator)}${ee(f.version)}`).join(", ");return{message:`The transformation reference names ${l}, but this document imports ${r}/${a} at ${p}, which doesn't admit ${s}.`,suggestion:`Name a version the import admits, or change the import's range to admit ${s}.`,actual:l.toString()}}}function n0(t,e,n){return e!==void 0&&Et(e).some(r=>ot(t,r).some(a=>$e(a,n)))}var r0=class a0{static NAMESPACE_PREFIX_PATTERN=/^(rdfs|xsd|owl|rdf|dc|foaf|skos|dct|dcterms|geo|time|prov|schema|og|dbo):[A-Za-z_][A-Za-z0-9_.-]*$/i;ruleName="NamespacePrefix";validate(e){let n=[];for(let[r,a]of Object.entries(e.body))a&&typeof a=="object"&&!Array.isArray(a)&&this.validateEntity(r,a,n);return n}validateEntity(e,n,r){for(let[a,s]of Object.entries(n)){let i=s?.toString()??"";if(i&&a0.NAMESPACE_PREFIX_PATTERN.test(i)){let o=this.getSuggestionForPrefixedValue(i),l=e.split(".")[0],c=new ve;c.ruleType=this.ruleName,c.severity="Error",c.entityName=l,c.propertyName=e,c.actualValue=a,c.expectedValue=o,c.message=`Invalid namespace prefix '${i}'. Use '${o}' without prefix.`,c.suggestion="Kanonak YAML uses simple type names. Namespace resolution is handled through imports.",r.push(c)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validateEntity(`${e}.${a}`,s,r)}}getSuggestionForPrefixedValue(e){let n=e.toLowerCase();if(n==="rdfs:class"||n==="owl:class")return"Class";if(n==="rdfs:property"||n==="rdf:property")return"DatatypeProperty or ObjectProperty";if(n.startsWith("xsd:"))return e.substring(4);let r=e.indexOf(":");return r>=0?e.substring(r+1):e}},s0=class fs{static RESERVED_WORDS=new Set(["imports","namespace","type","label","comment","subclassof","domain","range","required","functional"]);static VALID_PROPERTIES=new Set(["type","label","comment","subClassOf","subPropertyOf","domain","range","required","functional","inverseOf","transitive","symmetric","inverseFunctional"]);static VALID_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_AUGMENTATION_PATTERN=/^[a-zA-Z][a-zA-Z0-9_-]*\.[a-zA-Z][a-zA-Z0-9_-]*$/;static VALID_PROPERTY_NAME_PATTERN=/^[a-zA-Z][a-zA-Z0-9_.]*$/;ruleName="ResourceNaming";validate(e){let n=[],r=e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-");for(let[a,s]of Object.entries(e.body)){let i=fs.VALID_AUGMENTATION_PATTERN.test(a);if(!i&&!r&&fs.RESERVED_WORDS.has(a.toLowerCase())){let o=new ve;o.ruleType=this.ruleName,o.severity="Error",o.entityName=a,o.message=`Entity name '${a}' is a reserved word and cannot be used.`,o.suggestion="Choose a different name that doesn't conflict with Kanonak reserved words.",n.push(o);continue}if(!i&&!fs.VALID_NAME_PATTERN.test(a)){let o;/^\d/.test(a)?o="Entity names must start with a letter, not a number.":a.includes(" ")?o="Entity names cannot contain spaces. Use camelCase or underscores instead.":o="Entity names must start with a letter and contain only letters, numbers, and underscores.";let l=new ve;l.ruleType=this.ruleName,l.severity="Error",l.entityName=a,l.message=`Invalid entity name '${a}'. ${o}`,l.suggestion=o,n.push(l)}s&&typeof s=="object"&&!Array.isArray(s)&&this.validatePropertyNames(a,s,n)}return n}validatePropertyNames(e,n,r){for(let a of Object.keys(n))if(!fs.VALID_PROPERTIES.has(a)&&!fs.VALID_PROPERTY_NAME_PATTERN.test(a)){let s=new ve;s.ruleType=this.ruleName,s.severity="Warning",s.entityName=e,s.propertyName=a,s.message=`Property name '${a}' in entity '${e}' doesn't follow naming conventions.`,s.suggestion="Property names should start with a letter and contain only letters, numbers, and underscores.",r.push(s)}}},i0=class o0{static XSD_TYPES=new Set(["string","integer","int","long","short","byte","decimal","float","double","boolean","bool","datetime","date","time","duration","anyuri","anysimpletype","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte","base64binary","hexbinary"]);ruleName="PropertyTypeSpecificity";validate(e){let n=[];if(e.metadata?.namespace_?.publisher==="kanonak.org"&&e.metadata?.namespace_?.package_?.startsWith("core-"))return n;let r=this.isPropertyDefinedAsClass(e);for(let[a,s]of Object.entries(e.body))if(s&&typeof s=="object"&&!Array.isArray(s)){let i=s,o=i.type;if(o){let l=[];if(Array.isArray(o))for(let c of o){let u=c?.toString();u&&u==="Property"&&!r&&l.push(u)}else{let c=o?.toString();c&&c==="Property"&&!r&&l.push(c)}for(let c of l){let u=this.getPropertyValue(i,"range"),p=this.determinePropertyType(u),f=new ve;f.ruleType=this.ruleName,f.severity="Error",f.entityName=a,f.propertyName="type",f.actualValue=c,f.expectedValue=p,f.message=`Invalid property type '${c}'. Use '${p}' instead.`,f.suggestion="Properties should specify their type: DatatypeProperty for data values, ObjectProperty for relationships.",n.push(f)}}}return n}determinePropertyType(e){return!e||e.trim().length===0?"DatatypeProperty or ObjectProperty":o0.XSD_TYPES.has(e.toLowerCase())?"DatatypeProperty":/^[A-Z]/.test(e)?"ObjectProperty":"DatatypeProperty or ObjectProperty"}getPropertyValue(e,n){let r=e[n];return r?r.toString():null}isPropertyDefinedAsClass(e){let n=e.body.Property;if(n&&typeof n=="object"&&!Array.isArray(n)){let r=n.type;if(r){let a=r.toString();return a==="Class"||a.endsWith(".Class")}}return!1}},l0=class{get ruleName(){return"SubjectKanonakTypeRequired"}validate(t){let e=[];for(let[n,r]of Object.entries(t.body)){if(typeof r!="object"||r===null||Array.isArray(r)||n.includes("."))continue;let a=r,s="type"in a,i=a.type?.toString().trim();if(!s||!i){let o=new ve;o.ruleType=this.ruleName,o.severity="Error",o.entityName=n,o.propertyName="type",o.message=`Subject Kanonak '${n}' must have a 'type' property.`,o.suggestion=`Add a type statement like:
|
|
332
332
|
type: Scene
|
|
333
333
|
|
|
334
|
-
Only embedded objects can infer type from their parent property's range. Subject Kanonaks (top-level entities) must explicitly declare their type.`,o.expectedValue="A valid class name (Scene, Character, Story, etc.)",e.push(o)}}return e}},
|
|
334
|
+
Only embedded objects can infer type from their parent property's range. Subject Kanonaks (top-level entities) must explicitly declare their type.`,o.expectedValue="A valid class name (Scene, Character, Story, etc.)",e.push(o)}}return e}},GR=new Set(["EphemeralPackage"]),c0=class{get ruleName(){return"PackageHeader"}validate(t){let e=t.metadata;if(!e.type_)return[];let n=[],r=this.packageKey(t,e.type_);return e.namespace_?(!GR.has(e.type_)&&!e.namespace_.version&&n.push(this.error(r,"version",`Package resource '${r}' requires a 'version' property \u2014 packages are addressed by name@version.`,`Add a version, e.g.:
|
|
335
335
|
version: 1.0.0`)),n):(n.push(this.error(r,"publisher",`Package resource '${r}' requires a 'publisher' property.`,`Add a publisher, e.g.:
|
|
336
|
-
publisher: example.org`)),n)}packageKey(t,e){for(let[n,r]of Object.entries(t.body))if(r&&typeof r=="object"&&!Array.isArray(r)&&r.type===e)return n;return e}error(t,e,n,r){let a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName=e,a.message=n,a.suggestion=r,a}},
|
|
336
|
+
publisher: example.org`)),n)}packageKey(t,e){for(let[n,r]of Object.entries(t.body))if(r&&typeof r=="object"&&!Array.isArray(r)&&r.type===e)return n;return e}error(t,e,n,r){let a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName=e,a.message=n,a.suggestion=r,a}},JR={publisher:"kanonak.org",package_:"core-rdf",name:"type"},XR={publisher:"kanonak.org",package_:"core-rdf",name:"range"},QR={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},ZR={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},eI={publisher:"kanonak.org",package_:"core-rdf",name:"Literal"},u0=class{ruleName="EmbeddedKanonakType";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await ua(t,e,n);for(let i of s)i instanceof V&&this.walk(a,i,i.name,r);return r}walk(t,e,n,r){for(let a of e.statement)if(a instanceof Ae){let s=a.predicate?.subject,i=`${n}.${s?.name??"<embedded>"}`;this.check(t,s,a.object,n,i,r),this.walk(t,a.object,i,r)}else if(a instanceof he){let s=a.predicate?.subject,i=0;for(let o of a.object){if(o instanceof te){let l=`${n}.${s?.name??"<embedded>"}[${i}]`;this.check(t,s,o,n,l,r),this.walk(t,o,l,r)}i++}}}check(t,e,n,r,a,s){if(!e)return;let i=be(n,JR);if(!i)return;let o=ge(t,e);if(!o)return;let l=be(o,XR);if(l&&!($e(l,QR)||$e(l,ZR))){if(T(i)===T(l)){s.push(this.redundant(r,a,i,l));return}ot(t,i).some(c=>T(c)===T(l))||$e(l,eI)&&Cr(t,i)||s.push(this.notSubclass(r,a,i,l))}}redundant(t,e,n,r){let a=new ve;return a.ruleType=this.ruleName,a.severity="Warning",a.entityName=t,a.propertyName=e,a.actualValue=n.name,a.expectedValue=r.name,a.message=`Embedded object at '${e}' declares 'type: ${n.name}', which equals the parent property's range '${r.name}'. The declaration is redundant \u2014 the type is already inferred from the property's range. It still canonicalizes as a type statement, so adding or removing it changes the package's hash.`,a.suggestion=`Remove the 'type: ${n.name}' line, or keep it if explicitness is preferred over concision.`,a}notSubclass(t,e,n,r){let a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName=e,a.actualValue=n.name,a.expectedValue=r.name,a.message=`Embedded object at '${e}' has 'type: ${n.name}', which is not a subclass of the parent property's range '${r.name}'.`,a.suggestion=`Either remove the 'type: ${n.name}' line (so the type is inferred from the property's range '${r.name}'), or add 'subClassOf: ${r.name}' to the '${n.name}' class definition so the relationship holds.`,a}},p0=class{ruleName="ImportExistence";async validateAsync(t,e){let n=[];if(!t.metadata?.imports)return n;for(let[r,a]of Object.entries(t.metadata.imports))for(let s of a){if(it(s))continue;let i;try{i=await e.getHighestCompatibleVersionAsync(r,s)}catch(o){n.push(this.unresolvable(r,s,o));continue}if(!i){let o=await this.determineImportErrorAsync(e,r,s),l=new ve;l.ruleType=this.ruleName,l.severity="Error",l.message=o.message,l.suggestion=o.suggestion,l.entityName=`Import: ${r}/${s.packageName}`,l.actualValue=s.toString(),l.expectedValue=o.expectedValue,n.push(l)}}return n}unresolvable(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.message=`Import '${t}/${e.toString()}' could not be resolved: ${n instanceof Error?n.message:String(n)}`,r.suggestion=this.suggestionFor(n),r.entityName=`Import: ${t}/${e.packageName}`,r.actualValue=e.toString(),r.expectedValue="A resolvable package",r}suggestionFor(t){return t instanceof dt?"The publisher requires a credential. Configure a credential helper or a token for it; the message says what the provider or the server answered.":t instanceof ar?t.status===429||t.retryAfterSeconds!==void 0?`The publisher is limiting requests${t.retryAfterSeconds!==void 0?`; retry after ${t.retryAfterSeconds}s`:""}.`:`The publisher answered HTTP ${t.status}; the message carries its explanation.`:"Check the network and the publisher name, or validate with --offline to use only the workspace and cache."}async determineImportErrorAsync(t,e,n){let r=await t.getDocumentsByNamespaceAsync(e,n.packageName);if(r.length===0){let s=(await t.getAllDocumentsAsync()).filter(c=>c.metadata.namespace_?.publisher===e).map(c=>c.metadata.namespace_.package_).filter((c,u,p)=>p.indexOf(c)===u),i=this.findSimilarPackages(n.packageName,s),o=`Import '${e}/${n.package_}' not found - package does not exist`,l=i.length>0?`Did you mean: ${i.slice(0,3).join(", ")}?`:s.length>0?`Packages from ${e} known to this validation (workspace, cache, fetched): ${s.slice(0,5).join(", ")}`:`No packages from '${e}' are known to this validation. Verify the publisher name is correct.`;return{message:o,suggestion:l,expectedValue:"Existing package"}}let a=r.filter(s=>s.metadata.namespace_?.version).map(s=>s.metadata.namespace_.version.toString()).sort().join(", ");return{message:`Import '${e}/${n.toString()}' version mismatch - no available version is one its range admits`,suggestion:`Available versions: ${a}. Required: a version ${n.toString()} admits. State a range that admits an available version, or make one available.`,expectedValue:`a version ${n.toString()} admits`}}findSimilarPackages(t,e){if(e.length===0)return[];let n=e.filter(s=>s.toLowerCase().includes(t.toLowerCase())||t.toLowerCase().includes(s.toLowerCase()));if(n.length>0)return n.sort((s,i)=>s.length-i.length);let r=e.map(s=>({package:s,distance:this.levenshteinDistance(t.toLowerCase(),s.toLowerCase())})).sort((s,i)=>s.distance-i.distance),a=Math.max(3,Math.floor(t.length*.4));return r.filter(s=>s.distance<=a).map(s=>s.package)}levenshteinDistance(t,e){if(!t||t.length===0)return e?.length??0;if(!e||e.length===0)return t.length;let n=t.length,r=e.length,a=Array(n+1).fill(null).map(()=>Array(r+1).fill(0));for(let s=0;s<=n;s++)a[s][0]=s;for(let s=0;s<=r;s++)a[0][s]=s;for(let s=1;s<=n;s++)for(let i=1;i<=r;i++){let o=t[s-1]===e[i-1]?0:1;a[s][i]=Math.min(Math.min(a[s-1][i]+1,a[s][i-1]+1),a[s-1][i-1]+o)}return a[n][r]}},tI="kanonak.org",nI="core-rdf",rI=new Set(["type","subClassOf","subPropertyOf","domain","range"].map(t=>T({publisher:tI,package_:nI,name:t}))),f0=class{ruleName="UnresolvedReference";async validateAsync(t,e,n){let r=[],a=await uo(t,e),s=await Zt(t,e,n),i=await Tn(t,e,n),o=Pc(t),l=c=>o.has(`${c.subject.publisher}/${c.subject.package_}`);return ln(i,({kanonak:c,path:u})=>{for(let p of c.statement){let f=sI(p);if(!(!f||rI.has(T(f)))){if(p instanceof de)l(p.object)||this.check(s,a,u,f,p.object,r);else if(p instanceof he)for(let h of p.object)h instanceof D&&!l(h)&&this.check(s,a,u,f,h,r)}}}),r}check(t,e,n,r,a,s){ge(t,a.subject)||s.push(this.unresolvedError(n,r.name,a.subject,e))}unresolvedError(t,e,n,r){let a=`${n.publisher}/${n.package_}/${n.name}`,s=new ve;return s.ruleType=this.ruleName,s.severity="Error",s.entityName=t,s.propertyName=e,s.actualValue=a,s.expectedValue="A reference that resolves to a defined or imported resource",s.message=`Reference to '${n.name}' in '${e}' could not be resolved`,s.suggestion=`The entity '${a}' is not defined in this namespace or any imported namespace.
|
|
337
337
|
\u2022 Import the package that defines it, or check for a typo in '${n.name}'
|
|
338
338
|
\u2022 If it lives in an imported namespace, alias-qualify the reference
|
|
339
|
-
`+
|
|
339
|
+
`+aI(n,r),s}};function aI(t,e){let n=e.get(`${t.publisher}/${t.package_}`),r=(a,s)=>{let i=`${a.publisher}/${a.import_.packageName}`;return a.failure!==void 0?`${i} couldn't be read: ${a.failure instanceof Error?a.failure.message:String(a.failure)}`:a.read?`${i} was read at ${ee(a.read)}${s?`, the newest ${a.import_.toString()} admits`:""}`:`${i}: no available version is one ${a.import_.toString()} admits`};return n?` \u2022 ${r(n,!0)}`:e.size===0?" \u2022 The document imports nothing":` \u2022 Its imports were read at: ${[...e.values()].map(a=>r(a,!1)).join("; ")}`}function sI(t){return t.predicate?.subject}var iI={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},oI={publisher:"kanonak.org",package_:"core-rdf",name:"subPropertyOf"};function d0(t,e,n){let r=[],a=new Set,s=new Set,i=o=>{let l=ge(t,o),c=l?`${l.namespace}/${l.name}`:T(o);if(a.has(c)){let u=r.findIndex(f=>f.key===c),p=r.slice(u);return p.length<=1?null:[...p.map(f=>f.uri),o]}if(s.has(c))return null;if(a.add(c),r.push({key:c,uri:o}),l)for(let u of Fe(l,n)){let p=i(u);if(p)return p}return r.pop(),a.delete(c),s.add(c),null};return i(e)}var R$=t=>t,h0=class{ruleName="ClassHierarchyCycle";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V)||!(tt.isClassType(R$(i))||tt.isDatatypeType(R$(i))))continue;let o=xe(i);if(!o)continue;let l=d0(a,o,iI);if(l){let c=l.map(p=>p.name).join(" \u2192 "),u=new ve;u.ruleType=this.ruleName,u.severity="Error",u.message=`Circular class hierarchy detected: ${c}`,u.suggestion="Remove the circular dependency by breaking one of the subClassOf relationships",u.entityName=i.name,u.propertyName="subClassOf",u.actualValue=c,r.push(u);break}}return r}},m0=class{ruleName="PropertyHierarchyCycle";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V)||!Mn(a,i))continue;let o=xe(i);if(!o)continue;let l=d0(a,o,oI);if(l){let c=l.map(p=>p.name).join(" \u2192 "),u=new ve;u.ruleType=this.ruleName,u.severity="Error",u.message=`Circular property hierarchy detected: ${c}`,u.suggestion="Remove the circular dependency by breaking one of the subPropertyOf relationships",u.entityName=i.name,u.propertyName="subPropertyOf",u.actualValue=c,r.push(u);break}}return r}},lI={publisher:"kanonak.org",package_:"core-rdf",name:"range"},g0=class{ruleName="PropertyRangeRequired";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V))continue;let o=wt(a,i);if(o!=="ObjectProperty"&&o!=="DatatypeProperty")continue;let l=o==="ObjectProperty";ut(i,lI)||r.push(this.error(i.name,l))}return r}error(t,e){let n=new ve;return n.ruleType=this.ruleName,n.severity="Error",n.entityName=t,n.propertyName="range",n.message=`Property '${t}' must have a 'range' defined.`,n.suggestion=e?"Add a range like: range: ClassName (the class this property expects)":"Add a range like: range: string (or integer, boolean, etc.)",n.expectedValue=e?"A class name (Character, Scene, Story, etc.)":"A datatype (string, integer, boolean, decimal, etc.)",n}},cI={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},I$=t=>t,y0=class{ruleName="SubClassOfReference";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V)||!M$(I$(i)))continue;let o=Fe(i,cI);for(let l=0;l<o.length;l++)this.resolvesToClassLike(a,o[l])||r.push(this.error(i.name,o[l],o.length>1?`[${l}]`:""))}return r}resolvesToClassLike(t,e){let n=ge(t,e);return n?M$(I$(n)):!1}error(t,e,n){let r=`${e.publisher}/${e.package_}/${e.name}`,a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName="subClassOf",a.actualValue=r,a.expectedValue="Defined or imported class",a.message=`Class '${e.name}' referenced in subClassOf${n} is not defined or imported`,a.suggestion=`Define '${e.name}' as a Class, or import a namespace that contains it`,a}};function M$(t){return tt.isClassType(t)||tt.isDatatypeType(t)}var uI={publisher:"kanonak.org",package_:"core-rdf",name:"subPropertyOf"},k0=class{ruleName="SubPropertyOfReference";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V)||!Mn(a,i))continue;let o=Fe(i,uI);for(let l=0;l<o.length;l++)this.resolvesToProperty(a,o[l])||r.push(this.error(i.name,o[l],o.length>1?`[${l}]`:""))}return r}resolvesToProperty(t,e){let n=ge(t,e);return n?Mn(t,n):!1}error(t,e,n){let r=`${e.publisher}/${e.package_}/${e.name}`,a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName="subPropertyOf",a.actualValue=r,a.expectedValue="Defined or imported property",a.message=`Property '${e.name}' referenced in subPropertyOf${n} is not defined or imported`,a.suggestion=`Define '${e.name}' as a property, or import a namespace that contains it`,a}},b0=class{get ruleName(){return"NamespaceImportCycle"}async validateAsync(t,e){let n=[],r=t.metadata.namespace_?.toString();if(!r)return n;let a=new Map,s=new Set;await this.buildImportGraph(t,e,a,s);let i=this.detectCycle(r,a);if(i){let o=i.join(" \u2192 "),l=new ve;l.ruleType=this.ruleName,l.severity="Error",l.message=`Circular namespace import detected: ${o}`,l.suggestion="Remove one of the imports to break the circular dependency, or \u2014 if one direction is a DATA reference rather than a schema dependency (an object-property value naming a resource in the other package) \u2014 mark that import `mode: link`: links are dereferenced on demand, are not in the closure, and are exempt from this rule. Circular dependencies prevent proper package resolution.",l.entityName="imports",l.propertyName="imports",l.actualValue=o,n.push(l)}return n}async buildImportGraph(t,e,n,r){let a=t.metadata.namespace_?.toString()??"";if(!(!a||r.has(a))&&(r.add(a),t.metadata.imports)){let s=[];for(let[i,o]of Object.entries(t.metadata.imports))for(let l of o){if(it(l))continue;let c=`${i}/${l.packageName}@${l.version}`;s.push(c);let u=await e.getHighestCompatibleVersionAsync(i,l);u&&await this.buildImportGraph(u,e,n,r)}s.length>0&&n.set(a,s)}}detectCycle(t,e){let n=[],r=new Set;return this.detectCycleRecursive(t,e,n,r)}detectCycleRecursive(t,e,n,r){let a=n.indexOf(t);if(a>=0){let i=n.slice(a);return i.push(t),i}if(r.has(t))return null;n.push(t),r.add(t);let s=e.get(t);if(s)for(let i of s){let o=this.detectCycleRecursive(i,e,n,r);if(o)return o}return n.pop(),null}},v0=class{ruleName="UnresolvedPredicate";async validateAsync(t,e,n){let r=[],a=Od(t);if(!a)return r;let s=await Zt(t,e,n);return ln(s,({kanonak:i,path:o})=>{for(let l of i.unresolvedPredicates)l.sourceDoc!==a||l.builtin||r.push(this.unresolvedPredicateError(o,l.key))}),r}unresolvedPredicateError(t,e){let n=e.lastIndexOf("."),r=n>0?e.slice(0,n):null,a=n>0?e.slice(n+1):e,s=new ve;return s.ruleType=this.ruleName,s.severity="Error",s.entityName=t,s.propertyName=e,s.actualValue=e,s.expectedValue="A defined or imported property",s.message=`Property '${e}' is not defined or imported`,s.suggestion=r?`The property '${a}' was not found in the namespace imported as '${r}'.
|
|
340
340
|
1. Check '${a}' is spelled correctly
|
|
341
341
|
2. Verify '${r}' is imported with the right alias and version
|
|
342
342
|
3. Ensure that namespace version actually defines '${a}'`:`The property '${e}' is not defined in this namespace or any imported namespace.
|
|
343
343
|
1. Define '${e}' as an ObjectProperty or DatatypeProperty here, OR
|
|
344
344
|
2. Import the namespace that defines it, OR
|
|
345
|
-
3. Alias-qualify it if it lives in an imported namespace ('alias.${e}')`,s}},
|
|
345
|
+
3. Alias-qualify it if it lives in an imported namespace ('alias.${e}')`,s}},w0=class{get ruleName(){return"AmbiguousReference"}async validateAsync(t,e,n){let r=[],{entitySources:a,importPaths:s}=await this.buildEntitySourceMapAsync(t,e),i=await this.buildLiteralPropertyNamesAsync(t,e,n);for(let[o,l]of Object.entries(t.body))typeof l=="object"&&l!==null&&!Array.isArray(l)&&this.validateEntityReferences(o,l,a,s,i,t,r);return r}async buildEntitySourceMapAsync(t,e){let n=new Map,r=new Map,a=new Set,s=new Map;for(let i of Object.keys(t.body)){let o=t.metadata.namespace_?.toString()??"";n.has(i)||n.set(i,[]),n.get(i).push(`(local:${o})`)}if(t.metadata.imports)for(let[i,o]of Object.entries(t.metadata.imports))for(let l of o){if(it(l))continue;let c=await e.getHighestCompatibleVersionAsync(i,l);if(c){let u=c.metadata.namespace_?.toString()??"";await this.collectEntitiesRecursivelyAsync(c,n,r,a,s,[u],e)}}return{entitySources:n,importPaths:s}}async collectEntitiesRecursivelyAsync(t,e,n,r,a,s,i){let o=t.metadata.namespace_?.toString()??"",l=t.metadata.namespace_,c=l?`${l.publisher}/${l.package_}`:o;if(!r.has(o)){r.add(o),a.has(o)||a.set(o,s);for(let u of Object.keys(t.body)){e.has(u)||e.set(u,[]);let p=n.get(u)??new Set;n.set(u,p),p.has(c)||(p.add(c),e.get(u).push(o))}if(t.metadata.imports)for(let[u,p]of Object.entries(t.metadata.imports))for(let f of p){if(it(f))continue;let h=await i.getHighestCompatibleVersionAsync(u,f);if(h){let g=h.metadata.namespace_?.toString()??"";await this.collectEntitiesRecursivelyAsync(h,e,n,r,a,[...s,g],i)}}}}async buildLiteralPropertyNamesAsync(t,e,n){let r=await this.buildDatatypePropertyNamesAsync(t,e);return ln(await ua(t,e,n),({kanonak:a})=>{for(let s of a.statement){let i=s.predicate?.subject;i&&pI(s)&&r.add(i.name)}}),r}async buildDatatypePropertyNamesAsync(t,e){let n=new Set,r=new Set;if(await this.collectDatatypePropertiesAsync(t,n,r,e),t.metadata.imports)for(let[a,s]of Object.entries(t.metadata.imports))for(let i of s){if(it(i))continue;let o=await e.getHighestCompatibleVersionAsync(a,i);o&&await this.collectDatatypePropertiesAsync(o,n,r,e)}return n}async collectDatatypePropertiesAsync(t,e,n,r){let a=t.metadata.namespace_?.toString()??"";if(!n.has(a)){n.add(a);for(let[s,i]of Object.entries(t.body)){if(typeof i!="object"||i===null||Array.isArray(i))continue;let o=i.type;typeof o=="string"&&(o.includes(".")?o.substring(o.lastIndexOf(".")+1):o)==="DatatypeProperty"&&e.add(s)}if(t.metadata.imports)for(let[s,i]of Object.entries(t.metadata.imports))for(let o of i){if(it(o))continue;let l=await r.getHighestCompatibleVersionAsync(s,o);l&&await this.collectDatatypePropertiesAsync(l,e,n,r)}}}validateEntityReferences(t,e,n,r,a,s,i){for(let[o,l]of Object.entries(e)){let c=o;if(c&&!c.includes(".")){let u=n.get(c);if(u&&u.length>1&&!u.some(p=>p.startsWith("(local:"))){let p=u.filter(f=>!f.startsWith("(local:"));p.length>1&&i.push(this.createAmbiguityError(t,c,`Property '${c}'`,p,r,s,!0,c))}}this.validatePropertyValue(t,c,l,n,r,a,s,i)}}validatePropertyValue(t,e,n,r,a,s,i,o){if(n==null)return;let l=e&&e.includes(".")?e.substring(e.lastIndexOf(".")+1):e,c=!!l&&s.has(l);if(typeof n=="string"&&!n.includes(".")&&!c){let u=r.get(n);if(u&&u.length>1&&!u.some(p=>p.startsWith("(local:"))){let p=u.filter(f=>!f.startsWith("(local:"));p.length>1&&o.push(this.createAmbiguityError(t,e,`Reference '${n}'`,p,a,i,!1,n))}}else if(Array.isArray(n))for(let u=0;u<n.length;u++){let p=`${t}.${e}[${u}]`;this.validatePropertyValue(p,e,n[u],r,a,s,i,o)}else if(typeof n=="object"&&!Array.isArray(n)){let u=e?`${t}.${e}`:t;this.validateEntityReferences(u,n,r,a,s,i,o)}}createAmbiguityError(t,e,n,r,a,s,i,o){let l=[];for(let m of r){let y=this.findAliasForNamespace(s,m);if(y){let v=e?.split(".").pop()??e;l.push(`${y}.${v}`)}}let c=l.length>0?`Use one of: ${l.map(m=>`'${m}'`).join(", ")}`:`Add aliases to imports and use qualified names (e.g., 'alias.${e}')`,u=r.map(m=>{let y=a.get(m);return!y||y.length===0?` \u2022 ${m}`:y.length===1?` \u2022 ${m} (direct import)`:` \u2022 ${m}
|
|
346
346
|
imported via: ${y.join(" \u2192 ")}`}).join(`
|
|
347
347
|
`),p=t.split(".")[0],f=t.includes(".")?t:e,h=new ve;h.ruleType=this.ruleName,h.severity="Error",h.entityName=p,f&&(h.propertyName=f);let g=o??e;return g&&(h.actualValue=g),h.message=`${n} is ambiguous - defined in multiple imported namespaces`,h.suggestion=`${c}
|
|
348
348
|
|
|
349
349
|
Defined in:
|
|
350
|
-
${u}`,h.expectedValue="Unambiguous reference (use namespace alias to disambiguate)",h}findAliasForNamespace(t,e){if(!t.metadata.imports)return null;for(let[n,r]of Object.entries(t.metadata.imports))for(let a of r)if(`${n}/${a.packageName}@${a.version}`===e&&a.alias)return a.alias;return null}};function
|
|
350
|
+
${u}`,h.expectedValue="Unambiguous reference (use namespace alias to disambiguate)",h}findAliasForNamespace(t,e){if(!t.metadata.imports)return null;for(let[n,r]of Object.entries(t.metadata.imports))for(let a of r)if(`${n}/${a.packageName}@${a.version}`===e&&a.alias)return a.alias;return null}};function pI(t){return t instanceof Jn||t instanceof he&&t.object.length>0&&t.object.every(e=>e instanceof xt)}var fI={publisher:"kanonak.org",package_:"core-rdf",name:"range"},D$=t=>t,$0=class{ruleName="PropertyRangeReference";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V))continue;let o=wt(a,i);if(o!=="ObjectProperty"&&o!=="DatatypeProperty")continue;let l=o==="ObjectProperty";for(let c of Fe(i,fI))this.resolvesToClassLike(a,c)||r.push(this.error(i.name,c,l))}return r}resolvesToClassLike(t,e){let n=ge(t,e);return n?tt.isClassType(D$(n))||tt.isDatatypeType(D$(n)):!1}error(t,e,n){let r=`${e.publisher}/${e.package_}/${e.name}`,a=new ve;return a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName="range",a.actualValue=r,a.expectedValue=n?"A defined or imported class":"A datatype or defined class",a.message=`Property '${t}' has range '${e.name}' which is not defined or imported`,a.suggestion=n?`Define '${e.name}' as a Class here, or import the namespace that contains it (alias-qualify it if imported under an alias).`:`Use a datatype (xsd type, rdfs.Literal, or a datatype-derived type), or \u2014 if '${e.name}' is a class \u2014 make this an ObjectProperty.`,a}},dI={publisher:"kanonak.org",package_:"core-rdf",name:"range"},ps="kanonak.org",Ad="core-rdf",xd="core-owl",Ed=t=>t,hI=[{uri:{publisher:ps,package_:Ad,name:"Class"},ok:(t,e)=>tt.isClassType(Ed(e))||tt.isDatatypeType(Ed(e))},{uri:{publisher:ps,package_:Ad,name:"Datatype"},ok:(t,e)=>tt.isDatatypeType(Ed(e))},{uri:{publisher:ps,package_:Ad,name:"Property"},ok:(t,e)=>Mn(t,e)},{uri:{publisher:ps,package_:xd,name:"ObjectProperty"},ok:(t,e)=>wt(t,e)==="ObjectProperty"},{uri:{publisher:ps,package_:xd,name:"DatatypeProperty"},ok:(t,e)=>wt(t,e)==="DatatypeProperty"},{uri:{publisher:ps,package_:xd,name:"AnnotationProperty"},ok:(t,e)=>wt(t,e)==="AnnotationProperty"}],S0=class{ruleName="ObjectPropertyValue";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await ua(t,e,n);for(let i of s)i instanceof V&&this.walk(a,i,i.name,r);return r}walk(t,e,n,r){for(let a of e.statement)if(a instanceof de)this.check(t,a.predicate?.subject,a.object.subject,n,r);else if(a instanceof Ae)this.walk(t,a.object,F$(n,a.predicate?.subject),r);else if(a instanceof he){let s=a.predicate?.subject;for(let i of a.object)i instanceof D?this.check(t,s,i.subject,n,r):i instanceof te&&this.walk(t,i,F$(n,s),r)}}check(t,e,n,r,a){if(!e)return;let s=ge(t,e);if(!s)return;let i=be(s,dI);if(!i)return;let o=hI.find(c=>$e(i,c.uri));if(!o)return;let l=ge(t,n);l&&(o.ok(t,l)||a.push(this.warn(r,e,i,n)))}warn(t,e,n,r){let a=new ve;return a.ruleType=this.ruleName,a.severity="Warning",a.entityName=t.split(".")[0],a.propertyName=t,a.actualValue=r.name,a.expectedValue=n.name,a.message=`Property '${e.name}' expects a ${n.name}, but '${r.name}' is not a ${n.name}`,a.suggestion=`Reference a resource that is a ${n.name}, or correct the type of '${r.name}'.`,a}};function F$(t,e){return`${t}.${e?.name??"<embedded>"}`}var mI={publisher:"kanonak.org",package_:"core-rdf",name:"domain"},gI={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},A0=class{ruleName="PropertyDomain";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await ua(t,e,n);for(let i of s)i instanceof V&&this.walk(a,i,i.name,r);return r}walk(t,e,n,r){this.checkNode(t,e,n,r);for(let a of e.statement)if(a instanceof Ae)this.walk(t,a.object,V$(n,a.predicate?.subject),r);else if(a instanceof he)for(let s of a.object)s instanceof te&&this.walk(t,s,V$(n,a.predicate?.subject),r)}checkNode(t,e,n,r){let a=Et(e);if(a.length===0)return;let s,i=()=>{if(!s){s=new Set([T(gI)]);for(let l of a)for(let c of ot(t,l))s.add(T(c))}return s},o=new Set;for(let l of e.statement){let c=yI(l);if(!c||Ds(c.name)||o.has(T(c)))continue;o.add(T(c));let u=ge(t,c);if(!u)continue;let p=Fe(u,mI);p.length!==0&&(p.some(f=>i().has(T(f)))||r.push(this.error(n,c,p,a[0])))}}error(t,e,n,r){let a=n.map(i=>i.name).join(" | "),s=new ve;return s.ruleType=this.ruleName,s.severity="Error",s.entityName=t.split(".")[0],s.propertyName=t,s.actualValue=e.name,s.expectedValue=`Property used on ${a} or its subclasses`,s.message=`Property '${e.name}' has domain '${a}' but is used on '${r.name}' at '${t}'`,s.suggestion=`Either:
|
|
351
351
|
1. Use '${e.name}' only on '${a}' (or a subclass) instances
|
|
352
352
|
2. Widen the property's domain to include '${r.name}'
|
|
353
|
-
3. Use a different property for '${r.name}'`,s}};function
|
|
353
|
+
3. Use a different property for '${r.name}'`,s}};function yI(t){return t.predicate?.subject}function V$(t,e){return`${t}.${e?.name??"<embedded>"}`}var kI={publisher:"kanonak.org",package_:"core-rdf",name:"range"},x0=class{ruleName="PropertyKindRangeConsistency";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);for(let i of s){if(!(i instanceof V))continue;let o=wt(a,i);if(o!=="ObjectProperty"&&o!=="DatatypeProperty")continue;let l=o==="ObjectProperty",c=o==="DatatypeProperty",u=be(i,kI);if(!u||!ge(a,u))continue;let p=Cr(a,u);c&&!p?r.push(this.error(i.name,u,"datatype")):l&&p&&r.push(this.error(i.name,u,"object"))}return r}error(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.entityName=t,r.propertyName="range",r.actualValue=e.name,n==="datatype"?(r.expectedValue="A datatype (xsd type, rdfs.Literal, or a datatype-derived class)",r.message=`DatatypeProperty '${t}' has range '${e.name}', which is a class, not a datatype. A datatype property's values are literals.`,r.suggestion=`Use a datatype range (e.g. xsd.string, rdfs.Literal, or a datatype-derived class), or \u2014 if '${e.name}' is the intended target \u2014 declare '${t}' an ObjectProperty.`):(r.expectedValue="A plain class (not datatype-derived)",r.message=`ObjectProperty '${t}' has range '${e.name}', which is a datatype, not a class. An object property's values are references to resources.`,r.suggestion=`Declare '${t}' a DatatypeProperty (its values are literals of '${e.name}'), or change the range to a plain class.`),r}},bI={publisher:"kanonak.org",package_:"core-rdf",name:"range"},vI={publisher:"kanonak.org",package_:"core-rdf",name:"Literal"},E0=class{ruleName="StructuredValue";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=Sd.of(a);for(let i of await ua(t,e,n))i instanceof V&&this.walk(a,s,i,i.name,r);return r}walk(t,e,n,r,a){for(let s of n.statement){let i=s.predicate?.subject;if(!i)continue;let o=`${r}.${i.name}`,l=s instanceof he?s.object.map((c,u)=>[c,`${o}[${u}]`]):[[s instanceof Ae?s.object:s,o]];for(let[c,u]of l)c instanceof te?(this.checkEmbedded(t,e,c,i,u,a),this.walk(t,e,c,u,a)):(c instanceof Jn||c instanceof xt)&&this.checkScalar(t,e,i,u,a)}}checkScalar(t,e,n,r,a){let s=ge(t,n),i=s?be(s,bI):void 0;if(!i||!e.isStructured(i))return;let o=e.fieldsOf(i).map(l=>l.name);a.push(this.error(r,`'${n.name}' takes ${i.name} values, which are structured, but '${r}' is a scalar.`,o.length>0?`Write the value as a map of its fields: { ${o.map(l=>`${l}: \u2026`).join(", ")} }.`:`Import the package that declares ${i.name}'s fields, and write the value as a map of them.`))}checkEmbedded(t,e,n,r,a,s){for(let i of Et(n)){if(!Cr(t,i)||e.isStructured(i))continue;let o=e.all().filter(l=>$e(i,vI)||ot(t,l).some(c=>T(c)===T(i))).map(l=>l.name);s.push(this.error(a,`'${a}' is a map, but ${i.name} values are scalars, so a value of '${r.name}' is written as a single value.`,o.length>0?`Write a single value, or declare the map's type as a structured datatype that narrows ${i.name}: ${o.join(", ")}.`:"Write a single value."))}}error(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.entityName=t.split(".")[0],r.propertyName=t,r.message=e,r.suggestion=n,r}},_0=class{ruleName="ReservedNameShadow";async validateAsync(t,e,n){let r=[],a=await Tn(t,e,n);for(let s of a){if(!(s instanceof V))continue;let i=tr(s.name);if(!i)continue;let o=xe(s);o&&(i.publisher===o.publisher&&i.package_===o.package_||r.push(this.info(s.name,o,i)))}return r}info(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Info",r.entityName=t,r.propertyName=t,r.actualValue=`${e.publisher}/${e.package_}/${t}`,r.expectedValue=`${n.publisher}/${n.package_}/${t}`,r.message=`'${t}' is also the reserved built-in '${n.publisher}/${n.package_}/${t}'. This local definition shadows it \u2014 a bare '${t}' reference in this package resolves to the local entity, not the built-in.`,r.suggestion=`If this is intentional, qualify bare references to '${t}' explicitly (this local one vs. the built-in '${n.publisher}/${n.package_}/${t}') so the choice is unambiguous to readers and tools \u2014 e.g. a self-referential 'subClassOf: ${t}' silently resolves to this local entity.`,r}},C0=class{ruleName="BuiltinImport";async validateAsync(t,e,n){let r=t.metadata?.namespace_,a=new Set(Object.entries(t.metadata?.imports??{}).flatMap(([o,l])=>l.map(c=>`${o}/${c.packageName}`))),s=da().filter(o=>!a.has(`${o.publisher}/${o.package_}`)&&!(r&&r.publisher===o.publisher&&r.package_===o.package_));if(s.length===0)return[];let i=new Map;return ln(await ua(t,e,n),o=>{for(let l of e0(o.kanonak)){let c=s.find(p=>p.publisher===l.publisher&&p.package_===l.package_);if(!c)continue;let u=i.get(c.package_)??{terms:new Set,version:void 0};u.terms.add(l.name),u.version??=l.version?ee(l.version):void 0,i.set(c.package_,u)}}),s.filter(o=>i.has(o.package_)).map(o=>this.warning(o,i.get(o.package_)))}warning(t,e){let n=[...e.terms].sort(),r=n.map(i=>`'${i}'`).join(", "),a=`{ package: ${t.package_}, match: ^, version: ${e.version??"{version}"} }`,s=new ve;return s.ruleType=this.ruleName,s.severity="Warning",s.entityName=n[0],s.expectedValue=`an import or a link of ${t.publisher}/${t.package_}`,s.message=`This package names ${r} of ${t.publisher}/${t.package_} without importing or linking it, so ${n.length===1?"its":"their"} version comes from its closure or the client, not from its text (builtin-import-rule).`,s.suggestion=`Import it among the package's ${t.publisher} imports, ${a}, as \`kanonak upgrade\` does, or link it with = where ${t.package_} imports this package (home-link-rule).`,s}},j0=class{ruleName="TermNewerThanFloor";async validateAsync(t,e,n){let r=[...(await uo(t,e)).values()].filter(i=>i.read&&i.import_.versionOperator!==we.Exact&&i.import_.versionOperator!==we.Any&&!Sn(i.read,i.import_.version));if(r.length===0)return[];let a=new Map;ln(await ua(t,e,n),i=>{for(let o of e0(i.kanonak)){let l=`${o.publisher}/${o.package_}`;a.has(l)||a.set(l,new Set),a.get(l).add(o.name)}});let s=[];for(let i of r){let o=await e.getHighestCompatibleVersionAsync(i.publisher,{...i.import_,versionOperator:we.Exact});if(!o){s.push(this.missingFloor(i));continue}let l=new Set(Object.keys(o.body??{})),c=[...a.get(`${i.publisher}/${i.import_.packageName}`)??[]].filter(u=>!l.has(u)).sort();c.length>0&&s.push(this.newerTerms(i,c))}return s}newerTerms(t,e){let n=`${t.publisher}/${t.import_.packageName}`,r=ee(t.import_.version),a=ee(t.read),s=new ve;return s.ruleType=this.ruleName,s.severity="Warning",s.entityName=e[0],s.actualValue=`${n} ${t.import_.toString()}`,s.expectedValue=`a floor that defines ${e.length===1?"it":"them"}`,s.message=`This package names ${e.map(i=>`'${i}'`).join(", ")} of ${n}, which its stated floor, ${r}, doesn't define. It validates against ${a}, the newest its range admits (term-newer-than-floor).`,s.suggestion=`Raise the floor to a version that defines ${e.length===1?"it":"them"}, such as ${a}, in the package's next version, as \`kanonak upgrade\` does.`,s}missingFloor(t){let e=`${t.publisher}/${t.import_.packageName}`,n=ee(t.import_.version),r=new ve;return r.ruleType=this.ruleName,r.severity="Warning",r.entityName=`Import: ${e}`,r.actualValue=`${e} ${t.import_.toString()}`,r.expectedValue=`${e} ${n} available`,r.message=`The import of ${e} states ${n}, which isn't available. It validates against ${ee(t.read)}, the newest its range admits, but the package's hash reads ${n} (term-newer-than-floor).`,r.suggestion=`Make ${e} ${n} available again, since a published version is never deleted, or raise the floor in the package's next version, as \`kanonak upgrade\` does.`,r}},wI={publisher:"kanonak.org",package_:"core-rdf",name:"type"},q$=t=>t,N0=class{ruleName="ClassDefinition";async validateAsync(t,e,n){let r=[],a=await Zt(t,e,n),s=await Tn(t,e,n);return ln(s,({kanonak:i,path:o})=>{for(let l of Fe(i,wI))this.resolvesToClassLike(a,l)||r.push(this.error(o,l))}),r}resolvesToClassLike(t,e){if(Ds(e.name))return!0;let n=ge(t,e);return n?tt.isClassType(q$(n))||tt.isDatatypeType(q$(n)):!1}error(t,e){let n=`${e.publisher}/${e.package_}/${e.name}`,r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.entityName=t,r.propertyName="type",r.actualValue=n,r.expectedValue="Defined or imported class",r.message=`Class '${e.name}' is not defined or imported`,r.suggestion=`Define '${e.name}' as a Class in this document, or import a namespace that contains it`,r}},P0=class{ruleName="MarkdownLink";async validateAsync(t,e,n){let r=[],a=await Tn(t,e,n);return ln(a,({kanonak:s,path:i})=>{this.checkNode(s,i,r)}),r}checkNode(t,e,n){for(let r of t.statement)if(r instanceof Rt)this.checkProse(r.object,r.links,e,r.predicate.subject?.name??"(unknown)",n);else if(r instanceof he){let a=r.predicate.subject?.name??"(unknown)";(r.object??[]).forEach((s,i)=>{s instanceof xt&&s.links&&this.checkProse(String(s.value),s.links,e,`${a}[${i}]`,n)})}}checkProse(t,e,n,r,a){for(let s of e)s.target||a.push(this.unresolvedLinkError(n,r,s.reference));for(let s of Su(t))a.push(this.malformedLinkError(n,r,s.snippet))}unresolvedLinkError(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.entityName=t,r.propertyName=e,r.actualValue=n,r.message=`Embedded link [[${n}]] in '${e}' could not be resolved`,r.expectedValue="A reference resolvable through the document's import closure",r.suggestion=`The reference '${n}' inside a markdown value cannot be found in the current document or any imported namespace.
|
|
354
354
|
|
|
355
355
|
Possible solutions:
|
|
356
356
|
\u2022 Import the package that defines '${n}' so the link can resolve
|
|
@@ -362,27 +362,27 @@ long reference across two lines in a block scalar, e.g.:
|
|
|
362
362
|
... read for [[persistent-energy-
|
|
363
363
|
shock]] held ...
|
|
364
364
|
which is parsed as literal text, not a link. Keep each [[reference]] on one
|
|
365
|
-
line (let the line run long), or check for an unterminated [[.`,r}},
|
|
365
|
+
line (let the line run long), or check for an unterminated [[.`,r}},T0="kanonak.org",O0="look",$I={publisher:T0,package_:O0,name:"displayLabel"},SI={publisher:T0,package_:O0,name:"displaySummary"},L0=class{ruleName="DisplayLensScope";async validateAsync(t,e,n){let r=[],a;n?a=await n.getKanonaks():a=await new je().parseKanonaks(new at(t,e));let s=AI(t);if(!s)return r;for(let i of a)i instanceof V&&i.namespace===s&&(this.checkLens(a,i,$I,"displayLabel",r),this.checkLens(a,i,SI,"displaySummary",r));return r}checkLens(t,e,n,r,a){let s=be(e,n);if(!s)return;let i=[],o=xe(e);o&&i.push(o),i.push(...Et(e)),i.length!==0&&(i.some(l=>nr(t,l,s).ok)||a.push(this.scopeError(e.name,r,s.name)))}scopeError(t,e,n){let r=new ve;return r.ruleType=this.ruleName,r.severity="Error",r.entityName=t,r.propertyName=e,r.actualValue=n,r.message=`${e} points at '${n}', which is not a property in scope for '${t}'`,r.expectedValue="A property whose domain is this resource's class, an ancestor, or rdfs.Resource",r.suggestion=`'${n}' resolves, but its domain does not cover '${t}', so the lens would silently fall back to the resource's name at render time.
|
|
366
366
|
|
|
367
367
|
Possible solutions:
|
|
368
368
|
\u2022 Point ${e} at a property declared on this class (or an ancestor / rdfs.Resource)
|
|
369
369
|
\u2022 Set the property's domain to this class if it should apply here
|
|
370
|
-
\u2022 Use rdfs.label / rdfs.comment for the universal default`,r}};function
|
|
370
|
+
\u2022 Use rdfs.label / rdfs.comment for the universal default`,r}};function AI(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}function lr(t,e,n){return Rn(e,n,t,"").flatMap(r=>r.kind==="embedded"||r.kind==="subject"?[r.node]:[])}function rc(t,e,n){let r=[];return Mi(t,n,{input:e},r,new Set),r}function Mi(t,e,n,r,a){if(e instanceof V&&a.has(e))return;let s=e instanceof V?new Set(a).add(e):a;if(Y(e,$.VarRef)){let l=vt(e,$.varName);return l?n[l]:void 0}if(Y(e,$.PropertyRead)){let[l]=nc(t,e,$.readSource),c=l?Mi(t,l,n,r,s):void 0,u=be(e,$.readProp);if(!c||!u)return;let p=nr(t,c,u);if(!p.ok){r.push({contextClass:c,propertyUri:u,via:"PropertyRead"});return}return p.descriptor?.range}if(Y(e,$.Traverse)){let[l]=nc(t,e,$.traverseSource),c=l?Mi(t,l,n,r,s):void 0,u=be(e,$.through),p;if(c&&u){let h=nr(t,c,u);h.ok?p=h.descriptor?.range:r.push({contextClass:c,propertyUri:u,via:"Traverse"})}let[f]=nc(t,e,$.step);return f?Mi(t,f,{...n,input:p},r,s):void 0}let i=vt(e,$.loopVar),o=i?{...n,[i]:void 0}:n;for(let l of xI(t,e))Mi(t,l,o,r,s)}function xI(t,e){let n=new Map;for(let r of e.statement){let a=r.predicate?.subject;a&&n.set(T(a),a)}return[...n.values()].flatMap(r=>nc(t,e,r))}function nc(t,e,n){return lr(t,e,n).filter(r=>!(r instanceof V)||EI(t,r))}function EI(t,e){return Et(e).some(n=>ot(t,n).some(r=>$e(r,$.Expression)||$e(r,$.AstFieldBinding)))}var Di="kanonak.org",Fi="look",_I={publisher:Di,package_:Fi,name:"semanticSvg"},CI={publisher:Di,package_:Fi,name:"tierChip"},jI={publisher:Di,package_:Fi,name:"tierIcon"},NI={publisher:Di,package_:Fi,name:"tierCard"},PI={publisher:Di,package_:Fi,name:"tierFull"},TI=[CI,jI,NI,PI],R0=class{ruleName="LookSemanticSvgPath";async validateAsync(t,e,n){let r=[],a;n?a=await n.getKanonaks():a=await new je().parseKanonaks(new at(t,e));let s=OI(t);if(!s)return r;for(let i of a)i instanceof V&&i.namespace===s&&this.checkSemanticSvg(a,i,r);return r}checkSemanticSvg(t,e,n){let r=xe(e);if(r)for(let a of lr(t,e,_I))for(let s of TI)for(let i of lr(t,a,s))for(let o of rc(t,r,i))n.push(this.toError(e.name,s.name,o))}toError(t,e,n){let r=`${n.propertyUri.publisher}/${n.propertyUri.package_}/${n.propertyUri.name}`,a=n.contextClass.name,s=a===t?`'${t}' (the class this SemanticSvg is declared on)`:`'${a}', reached by traversal from '${t}' (the class this SemanticSvg is declared on)`,i=new ve;return i.ruleType=this.ruleName,i.severity="Error",i.entityName=t,i.propertyName=`look.semanticSvg.${e}`,i.actualValue=r,i.message=`tx.${n.via} reads property '${n.propertyUri.name}' off the rendered instance, but its domain is not in scope for ${s}. The read would silently return undefined at render time.`,i.expectedValue=`A property whose domain is '${a}', an ancestor, or rdfs.Resource`,i.suggestion=`Property '${r}' is not in scope for '${a}'.
|
|
371
371
|
|
|
372
372
|
Possible solutions:
|
|
373
373
|
\u2022 Read a property declared on '${a}' (or an ancestor / rdfs.Resource)
|
|
374
374
|
\u2022 If the property should apply to '${a}', adjust its domain
|
|
375
|
-
\u2022 If the value comes from a pre-computed env binding, use tx.VarRef instead of PropertyRead`,i}};function
|
|
375
|
+
\u2022 If the value comes from a pre-computed env binding, use tx.VarRef instead of PropertyRead`,i}};function OI(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var K$={publisher:"kanonak.org",package_:"transformations",name:"Expression"},LI=new Map([["look","the look renderer"],["view","the view materializer"],["transformations","the transformation runner"]]);function U$(t){if(!(!t||t.publisher!=="kanonak.org"))return LI.get(t.package_)}var I0=class{ruleName="TxExpressionCompiles";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(new at(t,e)),s=MI(t);if(!s)return r;let i=a.filter(g=>g instanceof V&&g.namespace===s);if(i.length===0)return r;let o=new Map,l=g=>{for(let m of Xn(g)){let y=T(m),v=o.get(y);if(v===void 0&&(v=$e(m,K$)||ot(a,m).some(k=>$e(k,K$)),o.set(y,v)),v)return!0}return!1},c=[],u=new Map,p=new Map,f=new Set;for(let g of i)ln([g],({kanonak:m,path:y})=>{let v=m instanceof te&&l(m);v&&c.push({node:m,path:y,subject:g.name});for(let{child:k,predicate:w}of II(m))l(k)&&(w&&u.set(k,w),v&&f.add(k));if(!v){for(let k of RI(m))if(U$(k))for(let w of bt(m,k)){if(!(w.item instanceof D))continue;let S=ge(a,w.item.subject);S&&l(S)&&(c.push({node:S,path:`${y}.${k.name}`,subject:g.name}),p.set(S,k))}}});let h=new Set;for(let{node:g,path:m,subject:y}of c){if(g instanceof te&&f.has(g))continue;let v=U$(g instanceof te?u.get(g):p.get(g));if(v)try{Nn(g,m,{catalog:a,depth:0})}catch(k){let w=k instanceof Error?k.message:String(k),S=`${y} ${m} ${w}`;if(h.has(S))continue;h.add(S),r.push(this.toError(y,m,w,v))}}return r}toError(t,e,n,r){let a=new ve;a.ruleType=this.ruleName,a.severity="Error",a.entityName=t,a.propertyName=e,a.actualValue=n;let s=/[.!?]$/.test(n)?n:`${n}.`;return a.message=`A tx.Expression at '${e}' is in a slot ${r} evaluates, but it cannot be compiled: ${s} The value would be silently absent wherever this slot is used.`,a.expectedValue=`A tx.Expression built from node classes ${r} implements`,a.suggestion=`This slot is evaluated by ${r}, which is part of this SDK, so its node classes are the ones available here. (An Expression subclass meant for a DIFFERENT runner is fine in that runner's own slots \u2014 this rule does not look at those.)
|
|
376
376
|
|
|
377
377
|
Possible solutions:
|
|
378
378
|
\u2022 Rebuild the expression from tx primitives this SDK supports
|
|
379
379
|
\u2022 For numeric presentation (rounding, percentages, fixed precision), use tx.NumberFormat \u2014 it scales internally, so no arithmetic is needed
|
|
380
|
-
\u2022 If the node class should be supported, implement it in the runner first`,a}};function
|
|
380
|
+
\u2022 If the node class should be supported, implement it in the runner first`,a}};function RI(t){let e=new Map;for(let n of t.statement){let r=n.predicate?.subject;r&&!e.has(T(r))&&e.set(T(r),r)}return[...e.values()]}function II(t){let e=[];for(let n of t.statement){let r=n.predicate?.subject;if(n instanceof Ae)e.push({child:n.object,predicate:r});else if(n instanceof he)for(let a of n.object)a instanceof te&&e.push({child:a,predicate:r})}return e}function MI(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var DI="kanonak.org",Vi=(t,e)=>({publisher:DI,package_:t,name:e}),FI=Vi("derivation","look"),B$=Vi("look","bands"),H$=Vi("look","Sequence"),VI=Vi("core-rdf","range"),qI=Vi("look","nodeTier"),M0=class{ruleName="SequenceNarrative";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(new at(t,e)),s=KI(t);if(!s)return r;let i=a.filter(l=>l instanceof V&&l.namespace===s);if(i.length===0)return r;for(let l of i){let c=Vt(l,FI);c&&Rn(c,B$,a,"").forEach((u,p)=>{u.kind!=="embedded"&&u.kind!=="subject"||!Y(u.node,H$)||r.push(...this.checkBand(a,l,u.node,`${l.name}.look.bands[${p}]`))})}let o=new oa(a);for(let l of i){let c=o.findCascadedLook(l);if(c)for(let u of lr(a,c.declaration,B$))Y(u,H$)&&(this.checkBand(a,l,u,"").length>0||r.push(...this.checkInstance(a,l,u,Zl(a,l,u))))}return r}checkBand(t,e,n,r){let a=[],s=(c,u,p)=>a.push(this.toError("Error",e.name,r,c,u,p)),i=Ql(n);if(!i)s("A look.Sequence band declares no look.source. The order of a sequence comes from the [[references]] in a prose property, so without one nothing can be sequenced.","Set look.source to a property of this class whose rdfs.range is prose.Markdown (or prose.SubstitutableString), and render the same property with a look.Markdown band so the narrative and the diagram cannot drift.");else{let c=ze(t,i)[0],u=c?Fe(c,VI):[];c&&!u.some(p=>Os.isSubstitutableDatatypeUri(p))&&s(`look.source names '${i.name}', whose rdfs.range is ${u.map(p=>T(p)).join(", ")||"undeclared"} \u2014 not prose.Markdown. A Sequence orders its participants by the [[references]] in prose, so a value of this property carries no order.`,"Point look.source at a prose.Markdown-ranged property, or give this property that range if its values are narrative.",T(i))}let o=Li(t,n);o.length===0&&s("A look.Sequence band declares no look.connectors, so no property counts as a message and every narrative renders empty.","List the object properties that constitute messages: look.connectors: [{ look.relation: calls }, ...]. The domain ontology declares nothing about sequences; the look layer says which of its relations are interactions.");for(let c of o)(!c.subject||wt(t,c.subject)===void 0)&&s(`look.connectors names '${c.relation.name}' as a relation, but it is not a property${c.subject?"":" in the closure"}. A message is a triple, so its relation must be an object property whose values are the participants.`,"Use an owl.ObjectProperty (or a subclass such as owl.SymmetricProperty) for look.relation.",T(c.relation)),c.invalidStyle!==void 0&&s(`look.lineStyle '${c.invalidStyle}' on connector '${c.relation.name}' is not a supported value. Supported: ${[...Xl].join(", ")}.`,"Use one of the supported values, or omit look.lineStyle: a reply is derived from owl.inverseOf and an undirected edge from owl.SymmetricProperty, so the overlay is only needed for what the ontology cannot say.",c.invalidStyle);let l=vt(n,qI);return l!==void 0&&jn[l]===void 0&&s(`look.nodeTier '${l}' is not a tier. Supported: ${Object.keys(jn).join(", ")}.`,"Use one of the semantic-zoom tiers \u2014 chip (56), icon (120, the default), card (240), full (420) \u2014 or omit look.nodeTier to take the participants' class-level look.diagramTier.",l),a}checkInstance(t,e,n,r){let a=[],s=Ql(n),i=`${e.name}.${s.name}`,o=Li(t,n).map(l=>l.relation.name).join(", ");if(r.problem)return a.push(this.toError("Error",e.name,i,`The look.Sequence band cannot walk this instance: ${r.problem}.`,"Check the value authored for the source property.")),a;if(r.sourceAbsent)return a.push(this.toError("Warning",e.name,i,`'${e.name}' carries no value for '${s.name}', so its look.Sequence band renders nothing.`,`Author the narrative in '${s.name}' with [[references]] to the participants, or leave it if the band is meant to be empty here.`)),a;for(let l of r.strayPropertyRefs)a.push(this.toError("Error",e.name,i,`The narrative references property '${l.name}', which is not a declared connector of the look.Sequence band (declared: ${o}). A property reference between two participants selects the edge for that pair; one the band does not declare selects nothing, and the sentence draws no message.`,`Add { look.relation: ${l.name} } to look.connectors on the band, or reference one of the declared connectors instead.`,T(l)));if(r.mentions>=2&&r.messages.length===0)return a.push(this.toError("Error",e.name,i,`The narrative mentions ${r.mentions} participant references but joins nothing: no declared connector (${o}) holds between any consecutive pair, so the look.Sequence band renders no message.`,"Either the graph is missing the triples the prose describes (declare them on the participants), the band is missing the relation the prose relies on (add it to look.connectors), or the prose orders participants no relation joins (reorder it).")),a;for(let l of r.gaps){let c=l.selected?`'${l.selected.name}' does not hold`:`no declared connector (${o}) holds`;a.push(this.toError("Warning",e.name,i,`The narrative orders '${l.prev.name}' then '${l.next.name}', but ${c} between them in the graph, so no message is drawn for that pair.`,`If the prose is right, declare the relation on '${l.prev.name}' or '${l.next.name}' (or add it to look.connectors); if the graph is right, reorder the prose so consecutive references are joined. A mention that is meant to connect to nothing is fine \u2014 it simply gets no lifeline.`,`${l.prev.name} \u2192 ${l.next.name}`))}return a}toError(t,e,n,r,a,s){let i=new ve;return i.ruleType=this.ruleName,i.severity=t,i.entityName=e,i.propertyName=n,i.message=r,i.suggestion=a,s!==void 0&&(i.actualValue=s),i}};function KI(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var UI="kanonak.org",He=(t,e)=>({publisher:UI,package_:t,name:e}),BI=He("derivation","look"),HI=He("look","bands"),WI=He("look","Distribution"),zI=He("look","StatRow"),YI=He("look","VersionDelta"),GI=He("look","Timeline"),JI=He("look","VersionDiff"),XI=He("look","TimePlot"),QI=He("look","ReferenceList"),ZI=He("look","Diagram"),eM=He("look","alphaPath"),tM=He("look","betaPath"),_d=He("look","metricPath"),W$=He("look","lowerPath"),z$=He("look","upperPath"),Y$=He("look","hueBy"),nM=He("look","statPath"),rM=He("look","laneBy"),G$=He("look","labelPath"),aM=He("look","badgePath"),sM=He("look","mapPath"),iM=He("look","nodeNote"),oM=He("look","edgeValue"),lM=He("look","stats"),cM=He("look","facets"),uM=He("look","channels"),pM=He("look","track"),fM=He("look","source"),dM=He("look","relation"),hM=He("look","entries"),D0=class{ruleName="LookBandPath";async validateAsync(t,e,n){let r=[],a;n?a=await n.getKanonaks():a=await new je().parseKanonaks(new at(t,e));let s=gM(t);if(!s)return r;for(let i of a)i instanceof V&&i.namespace===s&&this.checkDeclaration(a,i,r);return r}checkDeclaration(t,e,n){let r=Vt(e,BI);if(!r)return;let a=xe(e);if(a)for(let s of lr(t,r,HI))for(let i of this.carriersOf(t,s,a))for(let o of rc(t,i.context,i.expr))n.push(this.toError(e.name,i.slot,o))}carriersOf(t,e,n){let r=[],a=(i,o,l,c)=>{for(let u of lr(t,i,o))r.push({slot:l,context:c,expr:u})},s=(i,o)=>a(e,i,`look.${i.name}`,o);if(Y(e,WI))for(let i of[eM,tM,_d,W$,z$,Y$])s(i,n);if(Y(e,YI)&&s(_d,n),Y(e,zI))for(let i of lr(t,e,lM))a(i,nM,"look.stats[].statPath",n);if(Y(e,GI)||Y(e,JI)){let i=this.rangeOf(t,n,be(e,pM));if(i)for(let o of[_d,W$,z$,Y$])s(o,i)}if(Y(e,XI)){let i=this.rangeOf(t,n,be(e,fM));if(i)for(let o of[rM,G$])s(o,i)}if(Y(e,QI))for(let i of hn(e,hM)){let o=i instanceof te?void 0:mM(i),l=this.rangeOf(t,n,o);if(l)for(let c of[G$,aM])s(c,l)}if(Y(e,ZI))for(let i of lr(t,e,cM)){let o=this.rangeOf(t,n,be(i,dM));if(o){a(i,iM,"look.facets[].nodeNote",o),a(i,oM,"look.facets[].edgeValue",o);for(let l of lr(t,i,uM))a(l,sM,"look.facets[].channels[].mapPath",o)}}return r}rangeOf(t,e,n){if(!n)return;let r=nr(t,e,n);return r.ok?r.descriptor?.range:void 0}toError(t,e,n){let r=`${n.propertyUri.publisher}/${n.propertyUri.package_}/${n.propertyUri.name}`,a=n.contextClass.name,s=new ve;return s.ruleType=this.ruleName,s.severity="Error",s.entityName=t,s.propertyName=e,s.actualValue=r,s.message=`tx.${n.via} reads property '${n.propertyUri.name}', but its domain is not in scope for '${a}' (the class this band carrier is evaluated against). The read would silently return undefined at render time and the band would render empty.`,s.expectedValue=`A property whose domain is '${a}', an ancestor, or rdfs.Resource`,s.suggestion=`Property '${r}' is not in scope for '${a}'.
|
|
381
381
|
|
|
382
382
|
Possible solutions:
|
|
383
383
|
\u2022 Read a property declared on '${a}' (or an ancestor / rdfs.Resource)
|
|
384
384
|
\u2022 If the property should apply to '${a}', adjust its domain
|
|
385
|
-
\u2022 If the path is wrong, correct the tx.PropertyRead/tx.Traverse chain`,s}};function
|
|
385
|
+
\u2022 If the path is wrong, correct the tx.PropertyRead/tx.Traverse chain`,s}};function mM(t){let e=t.subject;return e&&typeof e.name=="string"?e:void 0}function gM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var yM="kanonak.org",Md=(t,e)=>({publisher:yM,package_:t,name:e}),kM=Md("derivation","look"),bM=Md("look","bands"),vM=Md("core-rdf","type"),wM=class{ruleName="UnrenderableBand";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(new at(t,e)),s=$M(t);if(!s)return r;let i=$d();for(let o of a){if(!(o instanceof V)||o.namespace!==s)continue;let l=Vt(o,kM);if(l)for(let c of lr(a,l,bM)){let u=this.typeOf(c);if(!u)continue;let p=`${u.publisher}/${u.package_}/${u.name}`;if(i.has(p))continue;let f=new ve;f.ruleType=this.ruleName,f.severity="Warning",f.entityName=o.name,f.propertyName="derivation.look",f.actualValue=p,f.message=`Band '${u.name}' has no renderer, so this region of the page will be empty. The declaration is valid against the look vocabulary, but the renderer emits only an HTML comment for it \u2014 which a browser does not display, so the loss is silent. Use a band the renderer implements, or remove it until it is supported.`,r.push(f)}}return r}typeOf(t){let e=be(t,vM);if(e)return{publisher:e.publisher,package_:e.package_,name:e.name}}};function $M(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var ms="kanonak.org",gs="view",SM={publisher:ms,package_:gs,name:"bind"},AM={publisher:ms,package_:gs,name:"produces"},xM={publisher:ms,package_:gs,name:"projections"},EM={publisher:ms,package_:gs,name:"where"},_M={publisher:ms,package_:gs,name:"value"},CM={publisher:ms,package_:gs,name:"as"},F0=class{ruleName="TxExpressionPath";async validateAsync(t,e,n){let r=[],a;n?a=await n.getKanonaks():a=await new je().parseKanonaks(new at(t,e));let s=PM(t);if(!s)return r;for(let i of a)i instanceof V&&i.namespace===s&&this.checkView(a,i,r);return r}checkView(t,e,n){let r=be(e,SM);if(!r)return;let a=be(e,AM),s=0;for(let o of NM(t,hn(e,xM))){let l=Vt(o,_M);if(l)for(let u of rc(t,r,l))n.push(this.toError(e.name,`view.projections[${s}].value`,r,u));let c=be(o,CM);c&&a&&(nr(t,a,c).ok||n.push(this.asError(e.name,s,a,c))),s+=1}let i=0;for(let o of jM(e,EM)){for(let l of rc(t,r,o))n.push(this.toError(e.name,`view.where[${i}]`,r,l));i+=1}}asError(t,e,n,r){let a=`${r.publisher}/${r.package_}/${r.name}`,s=new ve;return s.ruleType=this.ruleName,s.severity="Error",s.entityName=t,s.propertyName=`view.projections[${e}].as`,s.actualValue=a,s.message=`Projection stores its value under property '${r.name}', but that property's domain is not in scope for the view's produces class '${n.name}'. The materialized result instance could not carry this value.`,s.expectedValue=`A property whose domain is '${n.name}', an ancestor, or rdfs.Resource`,s.suggestion=`Property '${a}' is not in scope for produces class '${n.name}'.
|
|
386
386
|
|
|
387
387
|
Possible solutions:
|
|
388
388
|
\u2022 Use an output property whose domain covers '${n.name}'
|
|
@@ -392,14 +392,14 @@ Possible solutions:
|
|
|
392
392
|
Possible solutions:
|
|
393
393
|
\u2022 Read a property declared on '${s}' (or an ancestor / rdfs.Resource)
|
|
394
394
|
\u2022 If the property should apply to '${s}', adjust its domain
|
|
395
|
-
\u2022 If the path is wrong, correct the tx.PropertyRead/tx.Traverse chain`,o}};function CM(t,e){let n=Ft(t,e);return n?[n]:hn(t,e).filter(r=>r instanceof te)}function jM(t,e){let n=[];for(let r of e)if(r instanceof te)n.push(r);else if(r instanceof D){let a=ge(t,r.subject);a&&n.push(a)}return n}function NM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var rc="kanonak.org",PM="core-shacl",Mt=t=>({publisher:rc,package_:PM,name:t}),Ed=Mt("NodeShape"),z$=Mt("PropertyShape"),TM=Mt("targetClass"),_d=Mt("property"),Y$=Mt("path"),OM=Mt("minCount"),LM=Mt("maxCount"),RM=Mt("datatype"),IM=Mt("class"),G$=Mt("in"),MM=Mt("pattern"),DM=Mt("flags"),FM=Mt("minLength"),qM=Mt("maxLength"),VM=Mt("minInclusive"),KM=Mt("maxInclusive"),UM=Mt("minExclusive"),BM=Mt("maxExclusive"),HM={publisher:rc,package_:"core-rdf",name:"range"},Cd=t=>t,M0=class{ruleName="ShaclShape";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=WM(t);if(!s)return r;let i=new Set;for(let o of a){if(!(o instanceof q)||o.namespace!==s||!Y(o,Ed))continue;let l=be(o,TM);l?this.resolvesToClass(a,l)||r.push(this.err(o.name,"targetClass","Error",`NodeShape '${o.name}' sh:targetClass '${l.name}' does not resolve to a class.`,"Reference a defined or imported rdfs.Class.",fn(l))):r.push(this.err(o.name,"targetClass","Error",`NodeShape '${o.name}' has no sh:targetClass; it constrains nothing.`,"Add sh:targetClass naming the class this shape applies to."));for(let{item:c}of bt(o,_d)){let u;if(c instanceof te)u=c;else if(c instanceof D){let p=ge(a,c.subject);p&&(u=p,i.add(T(c.subject)))}u&&this.checkPropertyShape(a,o.name,u,l??void 0,r)}}for(let o of a){if(!(o instanceof q)||o.namespace!==s||!Y(o,z$))continue;let l=xe(o);l&&i.has(T(l))||this.checkPropertyShape(a,o.name,o,void 0,r)}return r}checkPropertyShape(t,e,n,r,a){let s=ec(n);if(!s){a.push(this.err(e,"property.path","Error",`A PropertyShape on '${e}' has no sh:path; a PropertyShape must name the property it constrains.`,"Add sh:path naming a property."));return}if("problem"in s){a.push(this.err(e,"property.path","Error",`The sh:path of a PropertyShape on '${e}' is not a path core-shacl declares: ${s.problem}.`,"Name a property, or write an sh:inversePath or an sh:alternativePath inline."));return}let i=s.kind==="predicate"?s.property:void 0,o=bn(s),l=i?ge(t,i):void 0,c=l?In(t,l):!1;i?c?r&&(er(t,r,i).ok||a.push(this.err(e,"property.path","Warning",`sh:path '${i.name}' is not in scope for sh:targetClass '${r.name}'; the constraint would never bind a value.`,`Constrain a property whose domain is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)))):a.push(this.err(e,"property.path","Error",`sh:path '${i.name}' on '${e}' does not resolve to a property.`,"Reference a defined or imported property.",fn(i))):this.checkPathExpression(t,e,s,r,a);let u=be(n,RM),p=be(n,IM);u&&p&&a.push(this.err(e,"property","Error",`A PropertyShape on '${e}' sets both sh:datatype and sh:class; a value is a literal or a node, not both.`,"Keep sh:datatype (literal values) or sh:class (node values), not both.")),u&&!this.resolvesToDatatype(t,u)&&a.push(this.err(e,"datatype","Error",`sh:datatype '${u.name}' on '${e}' does not resolve to a datatype.`,"Reference an xsd datatype or rdfs.Datatype.",fn(u))),p&&!this.resolvesToClass(t,p)&&a.push(this.err(e,"class","Error",`sh:class '${p.name}' on '${e}' does not resolve to a class.`,"Reference a defined or imported rdfs.Class.",fn(p)));let f=Ii(ft(n,OM)),h=Ii(ft(n,LM));this.checkOrder(e,"minCount",f,"maxCount",h,a);let g=Ii(ft(n,FM)),m=Ii(ft(n,qM));this.checkOrder(e,"minLength",g,"maxLength",m,a);let y=kn(n,VM),v=kn(n,KM);this.checkOrder(e,"minInclusive",la(y),"maxInclusive",la(v),a);let k=kn(n,UM),w=kn(n,BM);this.checkOrder(e,"minExclusive",la(k),"maxExclusive",la(w),a,!0),this.checkOrder(e,"minInclusive",la(y),"maxExclusive",la(w),a,!0),this.checkOrder(e,"minExclusive",la(k),"maxInclusive",la(v),a,!0);let S=[["minInclusive",y],["maxInclusive",v],["minExclusive",k],["maxExclusive",w]];for(let[_,B]of S)typeof B=="string"&&a.push(this.err(e,_,"Warning",`${_} on '${e}' is '${B}', which isn't a number, so conformance doesn't check it.`,`Write ${_} as a number, such as 10.`,B));let A=vt(n,MM);if(A!==void 0){let _=vt(n,DM);try{new RegExp(A,_)}catch{a.push(this.err(e,"pattern","Error",`sh:pattern on '${e}' is not a valid regular expression`+(_!==void 0?` (with flags '${_}')`:"")+`: ${A}`,"Provide a valid regular expression and flags.",A))}}if(ut(n,G$)&&bt(n,G$).length===0&&a.push(this.err(e,"in","Error",`sh:in on '${e}' is empty; an enumeration must list at least one permitted value.`,"List the permitted literal values, or remove sh:in.")),i&&c&&r){let _=er(t,r,i).descriptor;_&&((A!==void 0||g!==void 0||m!==void 0)&&_.kind==="object"&&a.push(this.err(e,"pattern/minLength/maxLength","Warning",`String facets on '${e}' apply to '${i.name}', which is an object property; string facets constrain literal values.`,"Apply string facets to a datatype property, or use sh:class for node values.",fn(i))),S.some(([,B])=>B!==void 0)&&!this.isNumericDatatypeRange(t,_.range)&&a.push(this.err(e,"minInclusive/maxInclusive/minExclusive/maxExclusive","Warning",`Numeric bounds on '${e}' apply to '${i.name}', whose range is not a numeric datatype.`,"Apply numeric bounds to a numeric datatype property.",fn(i))))}let C=l&&c?be(l,HM):void 0,N=l&&c?this.isDatatypeProperty(t,l,C):!1;if(ut(n,Fa)){let _=be(n,Fa);N?a.push(this.err(e,"hasValue","Error",`sh:hasValue on '${e}' constrains '${o}', a datatype property; a literal hasValue is not supported yet.`,"Use sh:hasValue on an object property, naming an individual; literal values arrive with structured literals (typescript#115).",_?fn(_):void 0)):!_||!ge(t,_)?a.push(this.err(e,"hasValue","Error",`sh:hasValue${_?` '${_.name}'`:""} on '${e}' does not resolve to an individual.`,"Name a defined or imported individual.",_?fn(_):void 0)):C&&this.resolvesToClass(t,C)&&!this.isInstanceOf(t,_,C)&&a.push(this.err(e,"hasValue","Warning",`sh:hasValue '${_.name}' on '${e}' is not an instance of '${C.name}', the range of '${o}'; no well-typed value can equal it.`,`Name an instance of '${C.name}'.`,fn(_)))}this.checkQualified(t,e,n,C,a)}checkPathExpression(t,e,n,r,a){let s=bn(n);for(let{property:i,inverse:o}of Nd(n,!1)){let l=ge(t,i);if(!l||!In(t,l)){a.push(this.err(e,"property.path","Error",`sh:path ${s} on '${e}' follows '${i.name}', which does not resolve to a property.`,"Reference a defined or imported property.",fn(i)));continue}!r||(o?Lg(t,r,i):er(t,r,i)).ok||a.push(o?this.err(e,"property.path","Warning",`sh:path ${s} on '${e}' follows '${i.name}' backwards, but its range is not sh:targetClass '${r.name}', an ancestor or rdfs.Resource; that step would never bind a value.`,`Follow backwards a property whose range is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)):this.err(e,"property.path","Warning",`sh:path ${s} on '${e}' follows '${i.name}', which is not in scope for sh:targetClass '${r.name}'; that step would never bind a value.`,`Follow a property whose domain is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)))}}checkQualifiedPath(t,e,n){if(Y(e,Ed))return;let r=ec(e);!r||"problem"in r||r.kind==="predicate"||n.push(this.err(t,"qualifiedValueShape","Error",`The qualified value shape on '${t}' is a property shape whose sh:path is a path expression, ${bn(r)}; a qualified property shape's sh:path is a property.`,"Name a property as its sh:path, or put the path expression on the property shape that counts."))}checkQualified(t,e,n,r,a){let s=ut(n,xn),i=[{name:"qualifiedMinCount",uri:Is,value:void 0},{name:"qualifiedMaxCount",uri:Ms,value:void 0}],o=!1;for(let g of i){if(!ut(n,g.uri))continue;o=!0;let m=Ii(ft(n,g.uri));m===void 0||!Number.isInteger(m)||m<0?a.push(this.err(e,g.name,"Error",`sh:${g.name} on '${e}' must be a non-negative integer.`,`Set sh:${g.name} to 0 or more.`)):g.value=m}if(!s&&!o)return;if(!s){a.push(this.err(e,"qualifiedValueShape","Error",`A qualified count on '${e}' has no sh:qualifiedValueShape; it counts values conforming to nothing.`,"Add sh:qualifiedValueShape naming the shape the counted values conform to."));return}o||a.push(this.err(e,"qualifiedValueShape","Error",`sh:qualifiedValueShape on '${e}' has no sh:qualifiedMinCount or sh:qualifiedMaxCount; it bounds nothing.`,"Add sh:qualifiedMinCount and/or sh:qualifiedMaxCount.")),this.checkOrder(e,"qualifiedMinCount",i[0].value,"qualifiedMaxCount",i[1].value,a);let l=r&&this.resolvesToClass(t,r)?r:void 0,c=`${e} (qualified shape)`,u=Ft(n,xn);if(u){this.checkQualifiedPath(e,u,a),this.checkNestedShape(t,c,u,l,a);let g=this.qualifiedCycle(t,u,new Set);g&&this.pushCycle(e,g,a);return}let p=be(n,xn),f=p?ge(t,p):void 0;if(!p||!f||!(Y(f,Ed)||Y(f,z$)||ut(f,Y$))){a.push(this.err(e,"qualifiedValueShape","Error",`sh:qualifiedValueShape${p?` '${p.name}'`:""} on '${e}' does not resolve to a shape.`,"Reference a NodeShape or PropertyShape, or write the shape inline.",p?fn(p):void 0));return}this.checkQualifiedPath(e,f,a);let h=this.qualifiedCycle(t,f,new Set([T(p)]));h&&this.pushCycle(e,[p.name,...h],a)}checkNestedShape(t,e,n,r,a){if(ut(n,Y$)){this.checkPropertyShape(t,e,n,r,a);return}for(let{item:s}of bt(n,_d)){let i=s instanceof te?s:s instanceof D?ge(t,s.subject):void 0;i&&this.checkPropertyShape(t,e,i,r,a)}}qualifiedCycle(t,e,n){let r=(a,s)=>{if(s){let i=T(s);if(n.has(i))return[s.name];let o=ge(t,s);if(!o)return;let l=this.qualifiedCycle(t,o,new Set([...n,i]));return l?[s.name,...l]:void 0}return a?this.qualifiedCycle(t,a,n):void 0};if(ut(e,xn)){let a=r(Ft(e,xn),be(e,xn));if(a)return a}for(let{item:a}of bt(e,_d)){let s=a instanceof te?r(a,void 0):a instanceof D?r(void 0,a.subject):void 0;if(s)return s}}pushCycle(t,e,n){n.push(this.err(t,"qualifiedValueShape","Error",`sh:qualifiedValueShape on '${t}' leads back to a shape already being checked (${e.join(" -> ")}); recursive shapes are not evaluated.`,"Break the cycle: a qualified value shape must not reference, directly or through other shapes, a shape that contains it."))}isDatatypeProperty(t,e,n){let r=wt(t,e);return r==="DatatypeProperty"?!0:r==="ObjectProperty"?!1:n?this.resolvesToDatatype(t,n):!1}isInstanceOf(t,e,n){let r=ge(t,e);if(!r)return!1;let a=T(n);return Et(r).some(s=>T(s)===a||ot(t,s).some(i=>T(i)===a))}checkOrder(t,e,n,r,a,s,i=!1){n===void 0||a===void 0||(i?n<a:n<=a)||s.push(this.err(t,`${e}/${r}`,"Error",n>a?`${e} (${n}) exceeds ${r} (${a}) on '${t}'.`:`${e} and ${r} are both ${n} on '${t}', so no value is between them.`,`Set ${e} ${i?"<":"<="} ${r}.`))}resolvesToClass(t,e){let n=ge(t,e);return n?tt.isClassType(Cd(n))||tt.isDatatypeType(Cd(n)):!1}resolvesToDatatype(t,e){if(e.publisher===rc&&e.package_==="core-rdf"&&e.name==="Literal")return!0;let n=ge(t,e);return n?tt.isDatatypeType(Cd(n)):!1}isNumericDatatypeRange(t,e){return!e||e.publisher===rc&&e.package_==="core-rdf"&&e.name==="Literal"?!0:Zl(t,e)}err(t,e,n,r,a,s){let i=new ve;return i.ruleType=this.ruleName,i.severity=n,i.entityName=t,i.propertyName=e,i.message=r,i.suggestion=a,s!==void 0&&(i.actualValue=s),i}};function Nd(t,e){switch(t.kind){case"predicate":return[{property:t.property,inverse:e}];case"inverse":return Nd(t.path,!e);case"alternative":return t.paths.flatMap(n=>Nd(n,e))}}function Ii(t){return typeof t=="number"?t:void 0}function la(t){return typeof t=="number"?t:void 0}function fn(t){return`${t.publisher}/${t.package_}/${t.name}`}function WM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var J$={publisher:"kanonak.org",package_:"core-owl",name:"oneOf"},zM=t=>t,D0=class{ruleName="OwlOneOf";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=YM(t);if(!s)return r;for(let i of a){if(!(i instanceof q)||i.namespace!==s||!ut(i,J$))continue;let o=hn(i,J$);if(o.length===0){r.push(this.err(i.name,"Warning",`owl:oneOf on '${i.name}' is empty; a closed enumeration must list at least one individual.`,"List the individuals that make up the enumeration, or remove owl:oneOf."));continue}for(let l of o)if(l instanceof xt)r.push(this.err(i.name,"Error",`owl:oneOf member '${String(l.value)}' on '${i.name}' is not a named individual; a class enumeration is of individuals (a misspelled or unimported individual reads as a literal). For a closed set of literal VALUES, constrain a property with sh:in instead.`,"Reference a defined or imported individual, or move literal value sets to a property sh:in.",String(l.value)));else if(l instanceof D){let c=ge(a,l.subject);c&&tt.isSchemaDefinitionType(zM(c))&&r.push(this.err(i.name,"Error",`owl:oneOf member '${l.subject.name}' on '${i.name}' is a class/property/datatype, not an individual.`,"List named individuals (instances), not schema definitions.",`${l.subject.publisher}/${l.subject.package_}/${l.subject.name}`))}}return r}err(t,e,n,r,a){let s=new ve;return s.ruleType=this.ruleName,s.severity=e,s.entityName=t,s.propertyName="oneOf",s.message=n,s.suggestion=r,a!==void 0&&(s.actualValue=a),s}};function YM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var GM=t=>t,JM=new rt("kanonak.org","core-rdf","Resource"),F0=class{ruleName="DiamondNameClash";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=XM(t);if(!s)return r;let i=Gl(a);for(let o of a){if(!(o instanceof q)||o.namespace!==s||!tt.isClassType(GM(o)))continue;let l=xe(o);if(!l)continue;let c=ot(a,l),u=T(l),p=new Set(c.map(h=>T(h)));p.delete(u),p.delete(T(JM));let f=new Map;for(let h of qa(a,l)){if(!h.domains.some(m=>p.has(T(m))))continue;let g=f.get(h.uri.name);g?g.push(h):f.set(h.uri.name,[h])}for(let[h,g]of f){if(g.length<2)continue;let m=k=>yd(i,c,k.uri)?.cardinality,y=new Set(g.map(k=>k.range?T(k.range):void 0).filter(k=>k!==void 0)),v=new Set(g.map(m).filter(k=>k!==void 0));y.size<=1&&v.size<=1||r.push(this.toError(o.name,h,g,m))}}return r}toError(t,e,n,r){let a=o=>{let l=`${o.uri.publisher}/${o.uri.package_}/${o.uri.name}`,c=o.range?`${o.range.publisher}/${o.range.package_}/${o.range.name}`:"no range",u=r(o);return`${l} (range ${c}${u?`, ${u}`:""})`},s=n.map(a).join("; "),i=new ve;return i.ruleType=this.ruleName,i.severity="Error",i.entityName=t,i.propertyName=e,i.actualValue=s,i.message=`Class '${t}' inherits ${n.length} distinct properties named '${e}' with incompatible range or cardinality: ${s}. The generated interface would multiply-inherit '${e}' with conflicting types and could not compile.`,i.suggestion=`Disambiguate the diamond name-clash on '${e}':
|
|
395
|
+
\u2022 If the path is wrong, correct the tx.PropertyRead/tx.Traverse chain`,o}};function jM(t,e){let n=Vt(t,e);return n?[n]:hn(t,e).filter(r=>r instanceof te)}function NM(t,e){let n=[];for(let r of e)if(r instanceof te)n.push(r);else if(r instanceof D){let a=ge(t,r.subject);a&&n.push(a)}return n}function PM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var ac="kanonak.org",TM="core-shacl",Dt=t=>({publisher:ac,package_:TM,name:t}),Cd=Dt("NodeShape"),J$=Dt("PropertyShape"),OM=Dt("targetClass"),jd=Dt("property"),X$=Dt("path"),LM=Dt("minCount"),RM=Dt("maxCount"),IM=Dt("datatype"),MM=Dt("class"),Q$=Dt("in"),DM=Dt("pattern"),FM=Dt("flags"),VM=Dt("minLength"),qM=Dt("maxLength"),KM=Dt("minInclusive"),UM=Dt("maxInclusive"),BM=Dt("minExclusive"),HM=Dt("maxExclusive"),WM={publisher:ac,package_:"core-rdf",name:"range"},Nd=t=>t,V0=class{ruleName="ShaclShape";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=zM(t);if(!s)return r;let i=new Set;for(let o of a){if(!(o instanceof V)||o.namespace!==s||!Y(o,Cd))continue;let l=be(o,OM);l?this.resolvesToClass(a,l)||r.push(this.err(o.name,"targetClass","Error",`NodeShape '${o.name}' sh:targetClass '${l.name}' does not resolve to a class.`,"Reference a defined or imported rdfs.Class.",fn(l))):r.push(this.err(o.name,"targetClass","Error",`NodeShape '${o.name}' has no sh:targetClass; it constrains nothing.`,"Add sh:targetClass naming the class this shape applies to."));for(let{item:c}of bt(o,jd)){let u;if(c instanceof te)u=c;else if(c instanceof D){let p=ge(a,c.subject);p&&(u=p,i.add(T(c.subject)))}u&&this.checkPropertyShape(a,o.name,u,l??void 0,r)}}for(let o of a){if(!(o instanceof V)||o.namespace!==s||!Y(o,J$))continue;let l=xe(o);l&&i.has(T(l))||this.checkPropertyShape(a,o.name,o,void 0,r)}return r}checkPropertyShape(t,e,n,r,a){let s=tc(n);if(!s){a.push(this.err(e,"property.path","Error",`A PropertyShape on '${e}' has no sh:path; a PropertyShape must name the property it constrains.`,"Add sh:path naming a property."));return}if("problem"in s){a.push(this.err(e,"property.path","Error",`The sh:path of a PropertyShape on '${e}' is not a path core-shacl declares: ${s.problem}.`,"Name a property, or write an sh:inversePath or an sh:alternativePath inline."));return}let i=s.kind==="predicate"?s.property:void 0,o=bn(s),l=i?ge(t,i):void 0,c=l?Mn(t,l):!1;i?c?r&&(nr(t,r,i).ok||a.push(this.err(e,"property.path","Warning",`sh:path '${i.name}' is not in scope for sh:targetClass '${r.name}'; the constraint would never bind a value.`,`Constrain a property whose domain is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)))):a.push(this.err(e,"property.path","Error",`sh:path '${i.name}' on '${e}' does not resolve to a property.`,"Reference a defined or imported property.",fn(i))):this.checkPathExpression(t,e,s,r,a);let u=be(n,IM),p=be(n,MM);u&&p&&a.push(this.err(e,"property","Error",`A PropertyShape on '${e}' sets both sh:datatype and sh:class; a value is a literal or a node, not both.`,"Keep sh:datatype (literal values) or sh:class (node values), not both.")),u&&!this.resolvesToDatatype(t,u)&&a.push(this.err(e,"datatype","Error",`sh:datatype '${u.name}' on '${e}' does not resolve to a datatype.`,"Reference an xsd datatype or rdfs.Datatype.",fn(u))),p&&!this.resolvesToClass(t,p)&&a.push(this.err(e,"class","Error",`sh:class '${p.name}' on '${e}' does not resolve to a class.`,"Reference a defined or imported rdfs.Class.",fn(p)));let f=Ii(ft(n,LM)),h=Ii(ft(n,RM));this.checkOrder(e,"minCount",f,"maxCount",h,a);let g=Ii(ft(n,VM)),m=Ii(ft(n,qM));this.checkOrder(e,"minLength",g,"maxLength",m,a);let y=kn(n,KM),v=kn(n,UM);this.checkOrder(e,"minInclusive",ca(y),"maxInclusive",ca(v),a);let k=kn(n,BM),w=kn(n,HM);this.checkOrder(e,"minExclusive",ca(k),"maxExclusive",ca(w),a,!0),this.checkOrder(e,"minInclusive",ca(y),"maxExclusive",ca(w),a,!0),this.checkOrder(e,"minExclusive",ca(k),"maxInclusive",ca(v),a,!0);let S=[["minInclusive",y],["maxInclusive",v],["minExclusive",k],["maxExclusive",w]];for(let[_,B]of S)typeof B=="string"&&a.push(this.err(e,_,"Warning",`${_} on '${e}' is '${B}', which isn't a number, so conformance doesn't check it.`,`Write ${_} as a number, such as 10.`,B));let A=vt(n,DM);if(A!==void 0){let _=vt(n,FM);try{new RegExp(A,_)}catch{a.push(this.err(e,"pattern","Error",`sh:pattern on '${e}' is not a valid regular expression`+(_!==void 0?` (with flags '${_}')`:"")+`: ${A}`,"Provide a valid regular expression and flags.",A))}}if(ut(n,Q$)&&bt(n,Q$).length===0&&a.push(this.err(e,"in","Error",`sh:in on '${e}' is empty; an enumeration must list at least one permitted value.`,"List the permitted literal values, or remove sh:in.")),i&&c&&r){let _=nr(t,r,i).descriptor;_&&((A!==void 0||g!==void 0||m!==void 0)&&_.kind==="object"&&a.push(this.err(e,"pattern/minLength/maxLength","Warning",`String facets on '${e}' apply to '${i.name}', which is an object property; string facets constrain literal values.`,"Apply string facets to a datatype property, or use sh:class for node values.",fn(i))),S.some(([,B])=>B!==void 0)&&!this.isNumericDatatypeRange(t,_.range)&&a.push(this.err(e,"minInclusive/maxInclusive/minExclusive/maxExclusive","Warning",`Numeric bounds on '${e}' apply to '${i.name}', whose range is not a numeric datatype.`,"Apply numeric bounds to a numeric datatype property.",fn(i))))}let C=l&&c?be(l,WM):void 0,N=l&&c?this.isDatatypeProperty(t,l,C):!1;if(ut(n,Fa)){let _=be(n,Fa);N?a.push(this.err(e,"hasValue","Error",`sh:hasValue on '${e}' constrains '${o}', a datatype property; a literal hasValue is not supported yet.`,"Use sh:hasValue on an object property, naming an individual; literal values arrive with structured literals (typescript#115).",_?fn(_):void 0)):!_||!ge(t,_)?a.push(this.err(e,"hasValue","Error",`sh:hasValue${_?` '${_.name}'`:""} on '${e}' does not resolve to an individual.`,"Name a defined or imported individual.",_?fn(_):void 0)):C&&this.resolvesToClass(t,C)&&!this.isInstanceOf(t,_,C)&&a.push(this.err(e,"hasValue","Warning",`sh:hasValue '${_.name}' on '${e}' is not an instance of '${C.name}', the range of '${o}'; no well-typed value can equal it.`,`Name an instance of '${C.name}'.`,fn(_)))}this.checkQualified(t,e,n,C,a)}checkPathExpression(t,e,n,r,a){let s=bn(n);for(let{property:i,inverse:o}of Td(n,!1)){let l=ge(t,i);if(!l||!Mn(t,l)){a.push(this.err(e,"property.path","Error",`sh:path ${s} on '${e}' follows '${i.name}', which does not resolve to a property.`,"Reference a defined or imported property.",fn(i)));continue}!r||(o?Mg(t,r,i):nr(t,r,i)).ok||a.push(o?this.err(e,"property.path","Warning",`sh:path ${s} on '${e}' follows '${i.name}' backwards, but its range is not sh:targetClass '${r.name}', an ancestor or rdfs.Resource; that step would never bind a value.`,`Follow backwards a property whose range is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)):this.err(e,"property.path","Warning",`sh:path ${s} on '${e}' follows '${i.name}', which is not in scope for sh:targetClass '${r.name}'; that step would never bind a value.`,`Follow a property whose domain is '${r.name}', an ancestor, or rdfs.Resource.`,fn(i)))}}checkQualifiedPath(t,e,n){if(Y(e,Cd))return;let r=tc(e);!r||"problem"in r||r.kind==="predicate"||n.push(this.err(t,"qualifiedValueShape","Error",`The qualified value shape on '${t}' is a property shape whose sh:path is a path expression, ${bn(r)}; a qualified property shape's sh:path is a property.`,"Name a property as its sh:path, or put the path expression on the property shape that counts."))}checkQualified(t,e,n,r,a){let s=ut(n,xn),i=[{name:"qualifiedMinCount",uri:Is,value:void 0},{name:"qualifiedMaxCount",uri:Ms,value:void 0}],o=!1;for(let g of i){if(!ut(n,g.uri))continue;o=!0;let m=Ii(ft(n,g.uri));m===void 0||!Number.isInteger(m)||m<0?a.push(this.err(e,g.name,"Error",`sh:${g.name} on '${e}' must be a non-negative integer.`,`Set sh:${g.name} to 0 or more.`)):g.value=m}if(!s&&!o)return;if(!s){a.push(this.err(e,"qualifiedValueShape","Error",`A qualified count on '${e}' has no sh:qualifiedValueShape; it counts values conforming to nothing.`,"Add sh:qualifiedValueShape naming the shape the counted values conform to."));return}o||a.push(this.err(e,"qualifiedValueShape","Error",`sh:qualifiedValueShape on '${e}' has no sh:qualifiedMinCount or sh:qualifiedMaxCount; it bounds nothing.`,"Add sh:qualifiedMinCount and/or sh:qualifiedMaxCount.")),this.checkOrder(e,"qualifiedMinCount",i[0].value,"qualifiedMaxCount",i[1].value,a);let l=r&&this.resolvesToClass(t,r)?r:void 0,c=`${e} (qualified shape)`,u=Vt(n,xn);if(u){this.checkQualifiedPath(e,u,a),this.checkNestedShape(t,c,u,l,a);let g=this.qualifiedCycle(t,u,new Set);g&&this.pushCycle(e,g,a);return}let p=be(n,xn),f=p?ge(t,p):void 0;if(!p||!f||!(Y(f,Cd)||Y(f,J$)||ut(f,X$))){a.push(this.err(e,"qualifiedValueShape","Error",`sh:qualifiedValueShape${p?` '${p.name}'`:""} on '${e}' does not resolve to a shape.`,"Reference a NodeShape or PropertyShape, or write the shape inline.",p?fn(p):void 0));return}this.checkQualifiedPath(e,f,a);let h=this.qualifiedCycle(t,f,new Set([T(p)]));h&&this.pushCycle(e,[p.name,...h],a)}checkNestedShape(t,e,n,r,a){if(ut(n,X$)){this.checkPropertyShape(t,e,n,r,a);return}for(let{item:s}of bt(n,jd)){let i=s instanceof te?s:s instanceof D?ge(t,s.subject):void 0;i&&this.checkPropertyShape(t,e,i,r,a)}}qualifiedCycle(t,e,n){let r=(a,s)=>{if(s){let i=T(s);if(n.has(i))return[s.name];let o=ge(t,s);if(!o)return;let l=this.qualifiedCycle(t,o,new Set([...n,i]));return l?[s.name,...l]:void 0}return a?this.qualifiedCycle(t,a,n):void 0};if(ut(e,xn)){let a=r(Vt(e,xn),be(e,xn));if(a)return a}for(let{item:a}of bt(e,jd)){let s=a instanceof te?r(a,void 0):a instanceof D?r(void 0,a.subject):void 0;if(s)return s}}pushCycle(t,e,n){n.push(this.err(t,"qualifiedValueShape","Error",`sh:qualifiedValueShape on '${t}' leads back to a shape already being checked (${e.join(" -> ")}); recursive shapes are not evaluated.`,"Break the cycle: a qualified value shape must not reference, directly or through other shapes, a shape that contains it."))}isDatatypeProperty(t,e,n){let r=wt(t,e);return r==="DatatypeProperty"?!0:r==="ObjectProperty"?!1:n?this.resolvesToDatatype(t,n):!1}isInstanceOf(t,e,n){let r=ge(t,e);if(!r)return!1;let a=T(n);return Et(r).some(s=>T(s)===a||ot(t,s).some(i=>T(i)===a))}checkOrder(t,e,n,r,a,s,i=!1){n===void 0||a===void 0||(i?n<a:n<=a)||s.push(this.err(t,`${e}/${r}`,"Error",n>a?`${e} (${n}) exceeds ${r} (${a}) on '${t}'.`:`${e} and ${r} are both ${n} on '${t}', so no value is between them.`,`Set ${e} ${i?"<":"<="} ${r}.`))}resolvesToClass(t,e){let n=ge(t,e);return n?tt.isClassType(Nd(n))||tt.isDatatypeType(Nd(n)):!1}resolvesToDatatype(t,e){if(e.publisher===ac&&e.package_==="core-rdf"&&e.name==="Literal")return!0;let n=ge(t,e);return n?tt.isDatatypeType(Nd(n)):!1}isNumericDatatypeRange(t,e){return!e||e.publisher===ac&&e.package_==="core-rdf"&&e.name==="Literal"?!0:ec(t,e)}err(t,e,n,r,a,s){let i=new ve;return i.ruleType=this.ruleName,i.severity=n,i.entityName=t,i.propertyName=e,i.message=r,i.suggestion=a,s!==void 0&&(i.actualValue=s),i}};function Td(t,e){switch(t.kind){case"predicate":return[{property:t.property,inverse:e}];case"inverse":return Td(t.path,!e);case"alternative":return t.paths.flatMap(n=>Td(n,e))}}function Ii(t){return typeof t=="number"?t:void 0}function ca(t){return typeof t=="number"?t:void 0}function fn(t){return`${t.publisher}/${t.package_}/${t.name}`}function zM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var Z$={publisher:"kanonak.org",package_:"core-owl",name:"oneOf"},YM=t=>t,q0=class{ruleName="OwlOneOf";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=GM(t);if(!s)return r;for(let i of a){if(!(i instanceof V)||i.namespace!==s||!ut(i,Z$))continue;let o=hn(i,Z$);if(o.length===0){r.push(this.err(i.name,"Warning",`owl:oneOf on '${i.name}' is empty; a closed enumeration must list at least one individual.`,"List the individuals that make up the enumeration, or remove owl:oneOf."));continue}for(let l of o)if(l instanceof xt)r.push(this.err(i.name,"Error",`owl:oneOf member '${String(l.value)}' on '${i.name}' is not a named individual; a class enumeration is of individuals (a misspelled or unimported individual reads as a literal). For a closed set of literal VALUES, constrain a property with sh:in instead.`,"Reference a defined or imported individual, or move literal value sets to a property sh:in.",String(l.value)));else if(l instanceof D){let c=ge(a,l.subject);c&&tt.isSchemaDefinitionType(YM(c))&&r.push(this.err(i.name,"Error",`owl:oneOf member '${l.subject.name}' on '${i.name}' is a class/property/datatype, not an individual.`,"List named individuals (instances), not schema definitions.",`${l.subject.publisher}/${l.subject.package_}/${l.subject.name}`))}}return r}err(t,e,n,r,a){let s=new ve;return s.ruleType=this.ruleName,s.severity=e,s.entityName=t,s.propertyName="oneOf",s.message=n,s.suggestion=r,a!==void 0&&(s.actualValue=a),s}};function GM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var JM=t=>t,XM=new rt("kanonak.org","core-rdf","Resource"),K0=class{ruleName="DiamondNameClash";async validateAsync(t,e,n){let r=[],a=n?await n.getKanonaks():await new je().parseKanonaks(e),s=QM(t);if(!s)return r;let i=Jl(a);for(let o of a){if(!(o instanceof V)||o.namespace!==s||!tt.isClassType(JM(o)))continue;let l=xe(o);if(!l)continue;let c=ot(a,l),u=T(l),p=new Set(c.map(h=>T(h)));p.delete(u),p.delete(T(XM));let f=new Map;for(let h of Va(a,l)){if(!h.domains.some(m=>p.has(T(m))))continue;let g=f.get(h.uri.name);g?g.push(h):f.set(h.uri.name,[h])}for(let[h,g]of f){if(g.length<2)continue;let m=k=>bd(i,c,k.uri)?.cardinality,y=new Set(g.map(k=>k.range?T(k.range):void 0).filter(k=>k!==void 0)),v=new Set(g.map(m).filter(k=>k!==void 0));y.size<=1&&v.size<=1||r.push(this.toError(o.name,h,g,m))}}return r}toError(t,e,n,r){let a=o=>{let l=`${o.uri.publisher}/${o.uri.package_}/${o.uri.name}`,c=o.range?`${o.range.publisher}/${o.range.package_}/${o.range.name}`:"no range",u=r(o);return`${l} (range ${c}${u?`, ${u}`:""})`},s=n.map(a).join("; "),i=new ve;return i.ruleType=this.ruleName,i.severity="Error",i.entityName=t,i.propertyName=e,i.actualValue=s,i.message=`Class '${t}' inherits ${n.length} distinct properties named '${e}' with incompatible range or cardinality: ${s}. The generated interface would multiply-inherit '${e}' with conflicting types and could not compile.`,i.suggestion=`Disambiguate the diamond name-clash on '${e}':
|
|
396
396
|
\u2022 rename one of the properties, or
|
|
397
397
|
\u2022 re-domain one so it is not inherited by '${t}', or
|
|
398
398
|
\u2022 restructure the hierarchy so '${t}' inherits only one '${e}', or
|
|
399
|
-
\u2022 make the ranges/cardinalities compatible (identical) if they are meant to be the same property.`,i}};function
|
|
399
|
+
\u2022 make the ranges/cardinalities compatible (identical) if they are meant to be the same property.`,i}};function QM(t){let e=t.metadata.namespace_;if(!(!e||!e.version))return`${e.publisher}/${e.package_}@${ee(e.version)}`}var Dd=class{parser;documentRules;repositoryRules;includeWarnings=!0;constructor(t,e={}){this.parser=t??new me,this.documentRules=[new r0,new s0,new i0,new l0,new c0],this.repositoryRules=[new u0,new p0,new f0,new t0({offline:e.offline}),new zR,new h0,new m0,new g0,new y0,new k0,new b0,new v0,new w0,new $0,new S0,new A0,new x0,new E0,new _0,new C0,new j0,new N0,new P0,new L0,new R0,new D0,new wM,new M0,new I0,new F0,new V0,new q0,new K0]}async validateAsync(t,e,n){let r=new Pd;for(let a of this.documentRules)try{let s=a.validate(t);this.addErrorsToResult(r,s)}catch(s){let i=new ve;i.ruleType=a.ruleName,i.severity="Error",i.message=`Validation rule '${a.ruleName}' failed: ${s instanceof Error?s.message:String(s)}`,r.errors.push(i)}if(e){let a=[],s=n??new ds(new Ld(t,e)),i=s.repository;for(let o of this.repositoryRules)try{let l=await o.validateAsync(t,i,s);this.addErrorsToResult(r,l)}catch(l){let c=l instanceof Error?l.message:String(l);a.push({ruleName:o.ruleName,cause:c})}if(a.length>0){let o=new Map;for(let{ruleName:l,cause:c}of a){let u=o.get(c);u?u.push(l):o.set(c,[l])}for(let[l,c]of o){let u=new ve;u.ruleType=c[0],u.severity="Error",c.length===1?u.message=`Validation rule '${c[0]}' failed: ${l}`:u.message=`${l} (affects ${c.length} rules: ${c.join(", ")})`,r.errors.push(u)}}}return r.isValid=r.errors.length===0,r}async validateDocumentsAsync(t,e){let n=e instanceof ds?e:new ds(e),r=[];for(let a of t){let s=await this.validateAsync(a,n.repository,n);r.push({document:a,result:s})}return r}async validateYamlAsync(t,e,n){let r=this.parser.parseWithErrors(t);if(!r.isValid){let a=new Pd;a.isValid=!1;for(let s of r.errors){let i=new ve;i.ruleType="ParseError",i.severity="Error",i.lineNumber=s.line,i.column=s.column,i.message=s.message,s.keyName&&(i.entityName=s.keyName),s.errorType==="DuplicateKey"&&(i.suggestion="All property names must be unique across the entire document. Rename one of the duplicate properties to make them unique."),a.errors.push(i)}return a}return await this.validateAsync(r.document,e,n)}addDocumentRule(t){this.documentRules.push(t)}addRepositoryRule(t){this.repositoryRules.push(t)}removeDocumentRule(t){let e=this.documentRules.findIndex(n=>n instanceof t);e>=0&&this.documentRules.splice(e,1)}removeRepositoryRule(t){let e=this.repositoryRules.findIndex(n=>n instanceof t);e>=0&&this.repositoryRules.splice(e,1)}addErrorsToResult(t,e){for(let n of e)n.severity==="Error"?t.errors.push(n):n.severity==="Info"?this.includeWarnings&&t.infos.push(n):this.includeWarnings&&t.warnings.push(n)}};import{spawn as CD}from"child_process";import{existsSync as OD,readFileSync as LD}from"fs";import{homedir as RD}from"os";import{join as ID}from"path";async function iS(t,e){let n=new Set(t.map(qi)),r=new Set,a=[];if(await rr(t,e,{onDocument:h=>r.add(qi(h)),onUnresolvedEdge:h=>a.push(h)}),a.length>0){let h=a.map(g=>`${g.fromNamespace} imports ${g.publisher}/${g.packageName} ${g.constraint} (${g.reason})`);throw new Error(`Cannot build the conformance scope: ${a.length} import(s) did not resolve:
|
|
400
400
|
${h.join(`
|
|
401
|
-
`)}`)}let s=new ka(e,r),i=new Set((await s.getAllDocumentsAsync()).map(Vi)),o=[...n].filter(h=>!i.has(h));if(o.length>0)throw new Error(`scopeFromClosureAsync: ${o.join(", ")} is not a document of the repository the closure is resolved through.`);let l={},c=await new je().parseKanonaks(s,l),u=l.authored.filter(h=>h instanceof q&&n.has(h.sourceDoc)),p=new Set(u.map(pa)),f=await QM(t,u,e);return{kind:"merged",catalog:c,reasoning:new ba().reasonOver(c),focus:p,links:f}}async function QM(t,e,n){let r=[],a=new Map,s=new Map;for(let i of t){let o=Vi(i),l=e.filter(c=>c.sourceDoc===o);for(let{key:c,references:u,target:p,failure:f}of await Od(i,l,n)){let h=p?Vi(p):void 0;if(s.has(c)&&s.get(c)!==h)throw new Error(`scopeFromClosureAsync: the seeds link ${c} at different versions (${s.get(c)??"unresolved"} and ${h??"unresolved"}); judge them in separate scopes.`);s.has(c)||(s.set(c,h),p&&r.push(...await new je().parseKanonaks(new at(p,n))));for(let{uri:g}of u)p?Ld(p,g.name)||a.set(T(g),`${h} defines no resource named '${g.name}'`):a.set(T(g),`its package ${c} could not be resolved${f?` (${f})`:""}`)}}return s.size>0?{subjects:r,unresolved:a}:void 0}function Vi(t){let e=t.metadata?.namespace_;if(!e)throw new Error("scopeFromClosureAsync: a document has no namespace, so it cannot be identified.");return e.toString()}var wn="kanonak.org/transformations",oc="values",Md="allowed",aS="expected",vn=t=>({type:`${wn}/VarRef`,varName:t}),Dd=t=>({type:`${wn}/IntegerLiteral`,integerLiteral:t}),ZM=t=>({type:`${wn}/DecimalLiteral`,decimalLiteral:t}),ac=t=>Number.isInteger(t)?Dd(t):ZM(t),q0=t=>({type:`${wn}/Count`,source:t}),V0=(t,e)=>({type:`${wn}/GreaterThanOrEqual`,compareLeft:t,compareRight:e}),K0=(t,e)=>({type:`${wn}/LessThanOrEqual`,compareLeft:t,compareRight:e}),eD=(t,e)=>({type:`${wn}/GreaterThan`,compareLeft:t,compareRight:e}),tD=(t,e)=>({type:`${wn}/LessThan`,compareLeft:t,compareRight:e});function nD(t,e){if(!e||e.length===0)return t;let n=new Set(["i","m","s"]),r=[...new Set(e.split(""))];if(r.filter(a=>!n.has(a)).length>0)throw new Error(`sh:flags '${e}' is outside the pinned regex subset (supported: i, m, s)`);return`(?${r.sort().join("")})${t}`}function rD(t){let e=[];return t.minCount!==void 0&&e.push({component:"minCount",per:"node",expr:V0(q0(vn(oc)),Dd(t.minCount))}),t.maxCount!==void 0&&e.push({component:"maxCount",per:"node",expr:K0(q0(vn(oc)),Dd(t.maxCount))}),t.hasValue!==void 0&&e.push({component:"hasValue",per:"node",expr:{type:`${wn}/Contains`,haystack:vn(oc),needle:vn(aS)}}),(t.inValues!==void 0||t.inRefs!==void 0)&&e.push({component:"in",per:"value",expr:{type:`${wn}/Contains`,haystack:vn(Md),needle:vn("v")}}),t.pattern!==void 0&&e.push({component:"pattern",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:nD(t.pattern.regex,t.pattern.flags)}}),t.minLength!==void 0&&e.push({component:"minLength",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:`(?s)^.{${t.minLength},}$`}}),t.maxLength!==void 0&&e.push({component:"maxLength",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:`(?s)^.{0,${t.maxLength}}$`}}),t.minInclusive!==void 0&&e.push({component:"minInclusive",per:"value",expr:V0(vn("v"),ac(t.minInclusive))}),t.maxInclusive!==void 0&&e.push({component:"maxInclusive",per:"value",expr:K0(vn("v"),ac(t.maxInclusive))}),t.minExclusive!==void 0&&e.push({component:"minExclusive",per:"value",expr:eD(vn("v"),ac(t.minExclusive))}),t.maxExclusive!==void 0&&e.push({component:"maxExclusive",per:"value",expr:tD(vn("v"),ac(t.maxExclusive))}),e}function sS(t,e){let n=U0(e)?e:gd(e),r=[],a=t.catalog.filter(c=>c instanceof q).map(lc),s=new Map;aD(a,s);let i=t.links?[...t.catalog,...t.links.subjects]:t.catalog,o=[...a,...s.values()],l={scope:t,membership:new sD(t),values:i,embeddedFocus:s,nodes:o,pointingAt:new Map,numericRanges:new Map};for(let c of n)for(let u of iD(l,c,a))Fd(t,u)&&cS(l,c,u,r);if(!U0(e))for(let c of A$(e))oD(l,c,a,r);return{conforms:!r.some(c=>c.severity==="Violation"),results:r}}function U0(t){return t.length>0&&!(t[0]instanceof Object&&"statement"in t[0])&&typeof t[0].name=="string"&&"properties"in t[0]}function iS(t){let e=t.predicate;return e instanceof D?e:void 0}function Fd(t,e){return!t.focus||e.subject!==void 0&&t.focus.has(e.subject)}function lc(t){let e=pa(t);return{node:t,key:e,uri:xe(t),subject:e,label:t.name}}function Ud(t,e,n){return{node:t,key:e,subject:n,label:e.includes("#")?e.slice(e.indexOf("#")):e}}function aD(t,e){for(let n of t)ln([n.node],({kanonak:r,address:a})=>{r instanceof te&&!e.has(r)&&e.set(r,Ud(r,a,n.subject))})}var sD=class{constructor(t){this.scope=t}scope;ancestors=new Map;defined;defines(t){return this.defined??=new Set(this.scope.catalog.filter(e=>e instanceof q).map(pa)),this.defined.has(T(t))}isInstance(t,e){let n=T(e);return t.some(r=>T(r)===n||this.ancestorsOf(r).has(n))}ancestorsOf(t){let e=t.version&&typeof t.version.major=="number"?`${T(t)}@${ee(t.version)}`:T(t),n=this.ancestors.get(e);return n||(n=this.scope.reasoning?new Set(this.scope.reasoning.getSuperclasses(t)):new Set(ot(this.scope.catalog,t).map(r=>T(r))),this.ancestors.set(e,n)),n}};function iD(t,e,n){let{scope:r}=t,a=new Map,s=o=>{a.set(o.key,o)},i=()=>[...n,...t.embeddedFocus.values()];if(e.targetClass){let o=e.targetClass;for(let l of i())t.membership.isInstance(Et(l.node),o)&&s(l)}for(let o of e.targetNodes){let l=ge(r.catalog,o);l instanceof q&&s(lc(l))}for(let o of e.targetSubjectsOf){let l=T(o);for(let c of i())c.node.statement.some(u=>{let p=iS(u);return p&&T(p.subject)===l})&&s(c)}for(let o of e.targetObjectsOf)for(let l of i())for(let c of Ln(l.node,o,r.catalog,l.key))c.kind==="subject"?s(lc(c.node)):c.kind==="embedded"&&s(t.embeddedFocus.get(c.node)??Ud(c.node,c.address,l.subject));return[...a.values()]}function oD(t,e,n,r){let a=new Map;for(let l of n)t.membership.isInstance(Et(l.node),e.classUri)&&a.set(l.key,l);let s=[];for(let l of[...a.values()].sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0)){let c=e.properties.map(u=>lD(t,l,u));c.every(u=>u.size>0)&&s.push({focus:l,values:c})}let i=new Map;s.forEach(({values:l},c)=>{for(let u of l[0].keys()){let p=i.get(u);p?p.push(c):i.set(u,[c])}});let o=new Set;for(let l of i.values())for(let c=0;c<l.length;c++)for(let u=c+1;u<l.length;u++){let p=`${l[c]}:${l[u]}`;if(o.has(p))continue;let f=s[l[c]],h=s[l[u]],g=f.values.map((k,w)=>[...k.keys()].find(S=>h.values[w].has(S)));if(g.some(k=>k===void 0))continue;o.add(p);let[m,y]=Fd(t.scope,f.focus)?[f.focus,h.focus]:Fd(t.scope,h.focus)?[h.focus,f.focus]:[void 0,void 0];if(!m||!y)continue;let v=e.properties.map((k,w)=>`${k.name} = ${f.values[w].get(g[w])}`).join(", ");r.push({focusNode:m.key,focusUri:m.uri,valueRef:y.uri,constraintComponent:mu,severity:"Violation",message:`'${m.label}' and '${y.label}' are distinct instances of ${e.className} with the same key (${v}); its owl.hasKey makes the key unique.`})}}function lD(t,e,n){let r=new Map;for(let a of Ln(e.node,n,t.scope.catalog,e.key))switch(a.kind){case"subject":case"unresolved":r.set(`ref:${T(a.uri)}`,a.uri.name);break;case"literal":r.set(`${typeof a.value}:${String(a.value)}`,JSON.stringify(a.value));break;case"embedded":break}return r}function cD(t,e,n){return e.node?Ln(e.node,n,t.values,e.key).map(r=>hD(t,r,e.subject)):[]}function Bd(t,e,n){switch(n.kind){case"predicate":return cD(t,e,n.property);case"inverse":return oS(t,e,n.path);case"alternative":return lS(n.paths.flatMap(r=>Bd(t,e,r)))}}function oS(t,e,n){switch(n.kind){case"predicate":return[...uD(t,n.property).get(e.key)?.values()??[]].map(r=>pD(t,r));case"inverse":return Bd(t,e,n.path);case"alternative":return lS(n.paths.flatMap(r=>oS(t,e,r)))}}function uD(t,e){let n=t.pointingAt.get(T(e));if(n)return n;let r=new Map;for(let a of t.nodes)for(let s of Ln(a.node,e,t.values,a.key)){let i=s.kind==="embedded"?t.embeddedFocus.get(s.node)?.key??s.address:s.kind==="literal"?JSON.stringify(s.value):T(s.uri),o=r.get(i)??new Map;o.set(a.key,a),r.set(i,o)}return t.pointingAt.set(T(e),r),r}function pD(t,e){if(e.node instanceof q)return{kernel:{ref:e.key},kind:"reference",ref:e.uri,subject:e.node};let n=Et(e.node).filter(r=>_r(t.scope.catalog,r));return{kernel:{ref:e.key},kind:"embedded",embedded:e,datatypes:n}}function lS(t){let e=new Map;for(let n of t){let r=`${n.kind}:${JSON.stringify(n.kernel)}`;e.has(r)||e.set(r,n)}return[...e.values()]}function fD(t,e){let n=T(e),r=t.numericRanges.get(n);if(r!==void 0)return r;let a=ge(t.scope.catalog,e),s=a?be(a,mD):void 0,i=s!==void 0&&Zl(t.scope.catalog,s);return t.numericRanges.set(n,i),i}function dD(t){return typeof t.kernel=="string"&&md.test(t.kernel)?Number(t.kernel):t.kernel}function hD(t,e,n){switch(e.kind){case"subject":return{kernel:{ref:T(e.uri)},kind:"reference",ref:e.uri,subject:e.node};case"unresolved":return{kernel:{ref:T(e.uri)},kind:"reference",ref:e.uri};case"embedded":{let r=t.embeddedFocus.get(e.node)??Ud(e.node,e.address,n),a=Et(e.node).filter(s=>_r(t.scope.catalog,s));return{kernel:{ref:r.key},kind:"embedded",embedded:r,datatypes:a}}case"literal":return typeof e.value=="boolean"?{kernel:e.value?1:0,kind:"boolean",literal:e.value}:{kernel:e.value,kind:typeof e.value=="number"?"number":"string",literal:e.value}}}function cS(t,e,n,r){for(let a of[...e.properties,...e.pathExpressionProperties??[]])pS(t,e,n,a,r);e.closed&&ED(e,n,r)}function qd(t,e,n,r,a={},s){return{focusNode:e.key,focusUri:e.uri,constraintComponent:n,severity:s??uS(t),message:r,sourceShape:t.name,sourceShapeUri:t.uri,...a}}function uS(t){return t.severity??"Violation"}var mD={publisher:"kanonak.org",package_:"core-rdf",name:"range"},gD={minCount:yg,maxCount:kg,hasValue:hu,in:wg,pattern:$g,minLength:Sg,maxLength:Ag,minInclusive:xg,maxInclusive:Eg,minExclusive:_g,maxExclusive:Cg};function pS(t,e,n,r,a){let s="kind"in r.path?r.path:{kind:"predicate",property:r.path},i=Bd(t,n,s),o=r.severity??uS(e),l=bn(s),c=[...(r.inValues??[]).map(p=>typeof p=="boolean"?p?1:0:p),...(r.inRefs??[]).map(p=>({ref:T(p)}))],u=(p,f,h)=>{let g=qd(e,n,p,r.message??f,{...s.kind==="predicate"?{resultPath:s.property}:{resultPathExpression:s},value:h?.literal,valueRef:h?.ref},o);return a.push(g),g};for(let p of rD(r)){let f=gD[p.component];if(p.per==="node"){let g={[oc]:i.map(m=>m.kernel),[Md]:c};r.hasValue&&(g[aS]={ref:T(r.hasValue)}),B0(p,g)||u(f,yD(p,l,r,i.length));continue}let h=(p.component==="minInclusive"||p.component==="maxInclusive"||p.component==="minExclusive"||p.component==="maxExclusive")&&s.kind==="predicate"&&fD(t,s.property);for(let g of i){if((p.component==="pattern"||p.component==="minLength"||p.component==="maxLength")&&g.kind!=="string"){u(f,`'${l}' value is not a string; ${p.component} applies to string values.`,g);continue}B0(p,{v:h?dD(g):g.kernel,[Md]:c})||u(f,$D(p,l,r,g),g)}}if(r.nodeKind)for(let p of i)SD(r.nodeKind,p)||u(jg,`'${l}' value is ${p.datatypes?.length?`a structured ${p.datatypes[0].name} literal`:p.kind}; nodeKind requires ${r.nodeKind}.`,p);if(r.datatype)for(let p of i){let f=AD(r.datatype,p);f&&u(bg,`'${l}' ${f}`,p)}if(r.classRef)for(let p of i){let f=xD(t,r.classRef,p);f&&u(vg,`'${l}' ${f}`,p)}r.qualified&&kD(t,r,i,l,u)}function yD(t,e,n,r){switch(t.component){case"minCount":return`'${e}' has ${r} value(s); minCount is ${n.minCount}.`;case"maxCount":return`'${e}' has ${r} value(s); maxCount is ${n.maxCount}.`;case"hasValue":return`'${e}' has no value equal to ${n.hasValue?T(n.hasValue):"(unset)"}.`;default:return`'${e}' violates ${t.component}.`}}function kD(t,e,n,r,a){let s=e.qualified,i=s.maxCount!==void 0?ho:fo,o=(c,u)=>{fS.add(a(i,c,u))};if(!s.shape){o(`'${r}' qualified value shape cannot be evaluated: ${s.problem??"it could not be built"}.`);return}let l=0;for(let c of n){let u=c.ref?T(c.ref):c.embedded?c.embedded.label:JSON.stringify(c.literal),p=bD(t,c);if(!p){o(`'${r}' value ${u} does not resolve in this scope; whether it conforms to the qualified shape cannot be decided.`,c);continue}let f=wD(t,s.shape,p);if(f.kind==="undecided"){o(`'${r}' value ${u}: whether it conforms to the qualified shape cannot be decided \u2014 ${f.reason}`,c);continue}f.kind==="conforms"&&l++}s.minCount!==void 0&&l<s.minCount&&a(fo,`'${r}' has ${l} value(s) that conform to the qualified shape; qualifiedMinCount is ${s.minCount}.`),s.maxCount!==void 0&&l>s.maxCount&&a(ho,`'${r}' has ${l} value(s) that conform to the qualified shape; qualifiedMaxCount is ${s.maxCount}.`)}function bD(t,e){switch(e.kind){case"reference":return e.subject?lc(e.subject):void 0;case"embedded":return e.embedded;default:{let n=JSON.stringify(e.literal);return{key:n,label:n}}}}var vD={name:"(qualified value shape)",targetNodes:[],targetSubjectsOf:[],targetObjectsOf:[],closed:!1,ignoredProperties:[],properties:[]},fS=new WeakSet;function wD(t,e,n){let r=[];e.kind==="property"?pS(t,vD,n,e.constraint,r):cS(t,e.shape,n,r);let a=r.find(s=>fS.has(s));return a?{kind:"undecided",reason:a.message}:r.length===0?{kind:"conforms"}:{kind:"fails"}}function $D(t,e,n,r){let a=r.ref?T(r.ref):r.embedded?r.embedded.label:JSON.stringify(r.literal);switch(t.component){case"in":return`'${e}' value ${a} is not in the permitted set.`;case"pattern":return`'${e}' value ${a} does not match pattern ${n.pattern?.regex}.`;case"minLength":return`'${e}' value ${a} is shorter than minLength ${n.minLength}.`;case"maxLength":return`'${e}' value ${a} is longer than maxLength ${n.maxLength}.`;case"minInclusive":return`'${e}' value ${a} is below minInclusive ${n.minInclusive} (or not numeric).`;case"maxInclusive":return`'${e}' value ${a} is above maxInclusive ${n.maxInclusive} (or not numeric).`;case"minExclusive":return`'${e}' value ${a} is not above minExclusive ${n.minExclusive} (or not numeric).`;case"maxExclusive":return`'${e}' value ${a} is not below maxExclusive ${n.maxExclusive} (or not numeric).`;default:return`'${e}' value ${a} violates ${t.component}.`}}function B0(t,e){let n=r=>{let a=r.varName;if(r.type==="kanonak.org/transformations/VarRef"&&typeof a=="string"&&a in e)return e[a];throw new Be(`Conformance lowering produced an unexpected leaf '${r.type}'`)};return Ml(t.expr,void 0,n)===1}function SD(t,e){switch(t){case"IRI":return e.kind==="reference";case"BlankNode":return e.kind==="embedded"&&!e.datatypes?.length;case"Literal":return e.kind==="string"||e.kind==="number"||e.kind==="boolean"||!!e.datatypes?.length}}function AD(t,e){if(e.datatypes?.length)return e.datatypes.some(r=>T(r)===T(t))?void 0:`value is a ${e.datatypes.map(r=>r.name).join(" | ")}; sh:datatype requires ${t.name}.`;if(e.kind==="reference"||e.kind==="embedded")return`value is a ${e.kind}; sh:datatype requires a literal of ${t.name}.`;let n=ya(t);if(n!==void 0)switch(n){case oe.Boolean:return e.kind==="boolean"?void 0:`value is not a boolean (${t.name}).`;case oe.Integer:return e.kind!=="number"?`value is not a number (${t.name}).`:Number.isInteger(e.literal)?void 0:`value is not an integer (${t.name}).`;case oe.Decimal:case oe.Double:case oe.Float:return e.kind==="number"?void 0:`value is not a number (${t.name}).`;default:return e.kind==="string"?void 0:`value is not a string-carried literal (${t.name}).`}}function xD(t,e,n){if(n.kind==="embedded"&&n.embedded?.node){let i=Et(n.embedded.node);return i.length===0?`value ${n.embedded.label} has no type; sh:class requires an instance of ${e.name}.`:t.membership.isInstance(i,e)?void 0:`value ${n.embedded.label} is not an instance of ${e.name}.`}if(n.kind!=="reference"||!n.ref)return`value is not a reference; sh:class requires an instance of ${e.name}.`;let r=n.subject;if(!r){let i=t.scope.links?.unresolved.get(T(n.ref));return i?`value ${T(n.ref)} is a link that does not dereference: ${i} (sh:class ${e.name}).`:`value ${T(n.ref)} does not resolve in this scope (sh:class ${e.name}).`}let a=Et(r);if(t.membership.isInstance(a,e))return;let s=a.filter(i=>!t.membership.defines(i));return s.length>0?`value ${T(n.ref)} is typed ${s.map(T).join(", ")}, which this scope does not define, so it cannot be shown to be an instance of ${e.name}. A class is in scope when the judged document imports the package that defines it.`:`value ${T(n.ref)} is not an instance of ${e.name}.`}function ED(t,e,n){if(!e.node)return;let r=new Set([...t.properties.map(s=>T(s.path)),...t.ignoredProperties.map(s=>T(s))]),a=new Set;for(let s of e.node.statement){let i=iS(s);if(!i)continue;let o=T(i.subject);r.has(o)||a.has(o)||(a.add(o),n.push(qd(t,e,du,`'${e.label}' carries undeclared property '${i.subject.name}' (closed shape).`,{resultPath:i.subject})))}for(let s of e.node.unresolvedPredicates)a.has(s.key)||(a.add(s.key),n.push(qd(t,e,du,`'${e.label}' carries unresolvable property '${s.key}' (closed shape).`,{value:s.key})))}var vz=new Set([hu,fo,ho].map(t=>t.name)),wz=new Set([mu].map(t=>t.name));var CD=12e4,jD=4096,ND=class{argv;interactive;timeoutMs;stderr;now;constructor(t){this.argv=PD(t.command),this.interactive=t.interactive??!1,this.timeoutMs=t.timeoutMs??CD,this.stderr=t.stderr??process.stderr,this.now=t.nowSeconds??(()=>Date.now()/1e3)}get command(){return this.argv.join(" ")}async get(t){let e=await this.run("get",this.wireRequest("get",t)),n=hy(t,e,this.now());if(!n.ok)throw new dt(`credential helper '${this.command}' answered get for ${t.resource} outside the protocol (${n.problem}): ${n.message}`);return n.answer}async erase(t){let e=await this.run("erase",{...this.wireRequest("erase",t),scope:t.scope}),n=my(e);if(!n.ok)throw new dt(`credential helper '${this.command}' answered erase for ${t.resource} outside the protocol (${n.problem}): ${n.message}`)}wireRequest(t,e){let n={version:Ua,operation:t,resource:e.resource,method:e.method};return e.challenges&&(n.challenges=e.challenges),n.interactive=this.interactive,n}run(t,e){let n=`credential helper '${this.command}' ${t}`;return new Promise((r,a)=>{let s=!1,i=f=>{s||(s=!0,f())},o;try{o=_D(this.argv[0],[...this.argv.slice(1),t],{stdio:["pipe","pipe","pipe"],shell:!1,windowsHide:!0})}catch(f){a(H0(n,f));return}let l=[],c="",u=!1,p=setTimeout(()=>{u=!0,o.kill()},this.timeoutMs);o.stdout.on("data",f=>l.push(f)),o.stderr.on("data",f=>{this.stderr.write(f),c=(c+f.toString("utf8")).slice(-jD)}),o.on("error",f=>{clearTimeout(p),i(()=>a(H0(n,f)))}),o.on("close",(f,h)=>{clearTimeout(p);let g=c.trim()?`: ${c.trim()}`:"";if(u){i(()=>a(new dt(`${n} did not finish within ${Math.round(this.timeoutMs/1e3)}s${g}`)));return}if(f!==0){let y=f!==null?`exit ${f}`:`signal ${h}`;i(()=>a(new dt(`${n} failed (${y})${g}`)));return}let m=Buffer.concat(l).toString("utf8").trim();try{let y=JSON.parse(m);i(()=>r(y))}catch{i(()=>a(new dt(`${n} exited 0 without printing one JSON answer${g}`)))}}),o.stdin.on("error",()=>{}),o.stdin.end(`${JSON.stringify(e)}
|
|
402
|
-
`)})}};function PD(t){let e=t.trim().split(/\s+/).filter(n=>n!=="");if(e.length===0)throw new Error("the credential helper command is empty");return e}function H0(t,e){let n=e.code,r="";return n==="ENOENT"&&(r=" (not found: give its path, or put it on PATH)"),n==="EINVAL"&&process.platform==="win32"&&(r=" (a .cmd or .bat file cannot run without a shell: configure an executable, e.g. `node path/to/helper.js`)"),new dt(`${t} could not be started: ${e.message}${r}`)}function Hd(){return RD(LD(),".kanonak","config.json")}function Wd(t){if(!TD(t))return;let e;try{e=JSON.parse(OD(t,"utf-8"))}catch(n){throw new Error(`${t} is not valid JSON: ${n.message}`)}if(typeof e!="object"||e===null||Array.isArray(e))throw new Error(`${t} must hold a JSON object`);return e}var W0="KANONAK_CREDENTIAL_HELPER";function dS(t={}){let e=t.env??process.env,n=t.configPath??Hd(),r=ID(e,n);if(r){let s=Object.keys(e).filter(i=>(i===Ba||i.startsWith(`${Ba}_`))&&(e[i]??"").trim()!=="").sort();if(s.length>0)throw new Error(`A credential helper is configured (${r.source}: ${r.command}) and so is ${s.join(", ")}. Configure one or the other.`);return new ND({command:r.command,interactive:t.interactive??!1})}let a={env:e};return t.discovery&&(a.discovery=t.discovery),new by(a)}function ID(t,e){let n=(t[W0]??"").trim();if(n)return{command:n,source:W0};let r=Wd(e)?.credentialHelper;if(r!==void 0){if(typeof r!="string"||r.trim()==="")throw new Error(`"credentialHelper" in ${e} must be a non-empty command line`);return{command:r.trim(),source:e}}}var z0="KANONAK_PACKAGE_URL_TEMPLATE",Y0="KANONAK_TEMPLATE_TRUSTED_PUBLISHERS";function hS(t={}){let e=t.env??process.env,n=t.configPath??Hd(),r=Wd(n)?.packageUrlTemplates,a=r===void 0?{}:{...xu(r,"packageUrlTemplates",n)},s=(e[z0]??"").trim();return s&&(a[Fr]=Eu(s,z0,!0)),Object.keys(a).length>0?Object.freeze(a):void 0}function mS(t={}){let e=t.env??process.env,n=t.configPath??Hd(),r=Wd(n)?.templateTrustedPublishers,a=new Set(r===void 0?[]:_u(r,"templateTrustedPublishers",n)),s=(e[Y0]??"").split(",").map(i=>i.trim()).filter(i=>i.length>0);for(let i of _u(s,Y0))a.add(i);return a.size>0?Object.freeze([...a]):void 0}var Vd=64;async function gS(t){let{documents:e,publisherIndex:n,readCached:r}=t,a=t.parser??new me,s=new Set(e.map(l=>kS(l)).filter(l=>l!==void 0)),i=new Map,o=new Map;for(let l=0;l<Vd;l++){let c=Kd(e,s,o,i),u=new Map;for(let p of c.values()){let f=await DD(p,n);u.set(p.key,f.version);let h=`${p.key}@${f.version}`;i.has(h)||i.set(h,await FD(p,f,n,r,a))}if(VD(o,u))return qD(u,i,s);o=u}throw new Error(`The import ranges did not settle after ${Vd} rounds: each choice changed the ranges of another.`)}async function yS(t){let{documents:e,lock:n,publisherIndex:r,readCached:a}=t,s=t.parser??new me,i=new Set(e.map(p=>kS(p)).filter(p=>p!==void 0)),o=new Map(Object.entries(n.packages).map(([p,f])=>[p,f.version])),l=new Map,c=Kd(e,i,o,l);for(let p=0;p<Vd;p++){let f=[...c.values()].filter(h=>n.packages[h.key]&&!l.has(`${h.key}@${n.packages[h.key].version}`));if(f.length===0)break;for(let h of f){let g=n.packages[h.key];l.set(`${h.key}@${g.version}`,{document:await MD(h,g,r,a,s)})}c=Kd(e,i,o,l)}let u=[];for(let p of[...c.values()].sort((f,h)=>f.key<h.key?-1:1)){let f=n.packages[p.key];if(!f){u.push(`${p.key} has no pin, though ${cc(p.ranges)} needs one.`);continue}let h=zt(f.version,`The version kanonak.lock pins for ${p.key}`),g=p.ranges.filter(m=>!on(h,m.import_));g.length>0&&u.push(`${p.key} is pinned at ${f.version}, which ${cc(g)} doesn't admit.`)}for(let p of Object.keys(n.packages).sort())c.has(p)||u.push(`${p}@${n.packages[p].version} is pinned, but no package here reaches it.`);return u}async function MD(t,e,n,r,a){let s=`${t.key}@${e.version}`,i=r?.(t.publisher,t.packageName,e.version)??null,o;i!==null?(await qr(s,i,e.integrity,"the cache"),o=i):{content:o}=await n.fetchLockedSource(t.publisher,t.packageName,e);let l=a.parse(o);return mr(l,t.publisher,t.packageName,e.version),l}function kS(t){let e=t.metadata.namespace_;return e?`${e.publisher}/${e.package_}`:void 0}function bS(t){let e=[];for(let[n,r]of Object.entries(t.metadata.imports??{}))for(let a of r)a.mode!=="link"&&e.push({publisher:n,import_:a});return e}function Kd(t,e,n,r){let a=new Map,s=t.map(o=>({document:o,importer:o.metadata.namespace_?.toString()??"(a document with no package)"})),i=new Set;for(;s.length>0;){let{document:o,importer:l}=s.shift();for(let{publisher:c,import_:u}of bS(o)){let p=`${c}/${u.packageName}`;if(e.has(p))continue;let f=a.get(p);f||a.set(p,f={key:p,publisher:c,packageName:u.packageName,ranges:[]}),f.ranges.push({import_:u,importer:l});let h=n.get(p),g=h?`${p}@${h}`:void 0;if(!g||i.has(g))continue;i.add(g);let m=r.get(g);m&&s.push({document:m.document,importer:g})}}return a}async function DD(t,e){let{publisher:n,packageName:r,ranges:a}=t,s=a.map(c=>c.import_),i=await e.getLockEntry(n,r),o=i&&Tu(n,r,i,s);if(o)return{version:o.version,locked:{version:o.version,resolved:o.resolved,integrity:o.integrity}};let l=s.find(c=>c.versionOperator===we.Exact);if(l&&s.every(c=>on(l.version,c)))return{version:ee(l.version)};throw new Error(i?`No version ${n}'s kanonak.lock offers for ${r} is admitted by every range on it: ${cc(a)}. It offers ${KD(i)}.`:`${n}'s kanonak.lock gives ${r} no entry, so the newest version within ${cc(a)} can't be known. An \`=\` import resolves by the version's own URL without one.`)}async function FD(t,e,n,r,a){let{key:s,publisher:i,packageName:o}=t,{version:l,locked:c}=e,u=`${s}@${l}`,p=r?.(i,o,l)??null,f,h;c?p!==null?(await qr(u,p,c.integrity,"the cache"),f=n.lockedSourceUrl(i,o,c),h=p):{url:f,content:h}=await n.fetchLockedSource(i,o,c):p!==null?(f=await n.getPackageUrl(i,o,l),h=p):{url:f,content:h}=await n.fetchPackageSource(i,o,l);let g=a.parse(h);mr(g,i,o,l);let m=c?c.integrity:await Ao(h);return{target:t,entry:{version:l,resolved:f,integrity:m,dependencies:{}},document:g,source:h}}function qD(t,e,n){let r={},a=[];for(let s of[...t.keys()].sort()){let i=t.get(s),{target:o,entry:l,document:c,source:u}=e.get(`${s}@${i}`),p={};for(let{publisher:f,import_:h}of bS(c)){let g=`${f}/${h.packageName}`;n.has(g)||(p[g]=t.get(g))}r[s]={...l,dependencies:Object.fromEntries(Object.entries(p).sort(([f],[h])=>f<h?-1:1))},a.push({publisher:o.publisher,packageName:o.packageName,version:i,source:u})}return{lock:{version:"1",lastUpdated:"",packages:r},pins:a}}function VD(t,e){return t.size===e.size&&[...t].every(([n,r])=>e.get(n)===r)}function cc(t){return t.map(e=>`${Dt(e.import_.versionOperator)} ${ee(e.import_.version)} (from ${e.importer})`).join(", ")}function KD(t){let e=t.lines??[];return e.length>0?`${t.version}, which it pins, and the lines ${e.map(n=>n.version).join(", ")}`:`only ${t.version}, which it pins, and lists no lines`}async function vS(t){let{document:e,repository:n}=t,r=t.resolvedUrl??((c,u,p)=>Ks(wo,c,u,p)),a=e.metadata?.namespace_;if(!a?.version)throw new Error("A release lock is recorded for a version, and this document declares no package version.");let s=a.toString(),i=[],o=[];if(await tr([e],n,{onDocument:c=>i.push(c),onUnresolvedEdge:c=>o.push(`${c.publisher}/${c.packageName} ${c.constraint} (imported by ${c.fromNamespace})`)}),o.length>0)throw new Error(`${s}'s release lock can't be recorded, since no version held answers ${o.join(", ")}.`);let l={};for(let c of i){let u=c.metadata.namespace_,p=`${u.publisher}/${u.package_}`,f=ee(u.version),h=l[p];if(h){if(h.version===f)continue;throw new Error(`${s}'s closure holds ${p} at both ${h.version} and ${f}, and a lock pins one version of each package.`)}let g=await n.getDocumentContentAsync(u.toString());if(g===null)throw new Error(`${s}'s release lock can't be recorded: the bytes of ${u.toString()} aren't held, so their sha256 is unknown.`);let m={};for(let[y,v]of Object.entries(c.metadata.imports??{}))for(let k of v){if(it(k))continue;let w=await n.getHighestCompatibleVersionAsync(y,k);m[`${y}/${k.packageName}`]=ee(w.metadata.namespace_.version)}l[p]={version:f,resolved:r(u.publisher,u.package_,f),integrity:await Ao(g),dependencies:Object.fromEntries(Object.entries(m).sort(([y],[v])=>y.localeCompare(v)))}}return{version:"1",lastUpdated:"",packages:l}}var UD={publisher:"kanonak.org",package_:"core-rdf",name:"domain"},BD={publisher:"kanonak.org",package_:"core-rdf",name:"range"},HD={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};function wS(t,e){return t.major===e.major&&(t.major>=1||t.minor===e.minor)}function $S(t,e){return t.filter(n=>wS(n,e)&&_e(n,e)<0).sort((n,r)=>_e(r,n))[0]}function SS(t,e,n){let r=G0(e),a=G0(n);if(r.publisher!==a.publisher||r.package_!==a.package_||!wS(r.version,a.version)||_e(r.version,a.version)>=0)throw new Error(`${a.text} is compared only with an older version of its own line, and ${r.text} isn't one.`);let s=[],i={was:J0(t,r.text),now:J0(t,a.text)};for(let[u,p]of i.was){let f=i.now.get(u);if(!f){s.push({kind:"removed",term:u,message:`${a.text} removes ${u}, which ${r.text} defines.`});continue}if(!tt.isAnyPropertyType(p))continue;let h=Cr(Gn(p)),g=Cr(Gn(f));h!==g&&s.push({kind:"kind-changed",term:u,message:`${a.text} changes ${u}'s kind from ${h} to ${g}.`});for(let[m,y,v]of[["domain-changed","domain",UD],["range-changed","range",BD]]){let k=Fe(p,v),w=Fe(f,v);Cr(k)!==Cr(w)&&(X0(r.version,a.version)?s.push({kind:m,term:u,message:`${a.text} is a patch, and changes ${u}'s ${y} from ${Cr(k)||"(none)"} to ${Cr(w)||"(none)"}.`}):zD(t,a,k,w)||s.push({kind:m,term:u,message:`${a.text} narrows ${u}'s ${y} from ${Cr(k)||"(none)"} to ${Cr(w)||"(none)"}.`}))}}if(X0(r.version,a.version))for(let u of i.now.keys())i.was.has(u)||s.push({kind:"patch-adds-term",term:u,message:`${a.text} is a patch, and adds ${u}. A new term is a minor version.`});let o=gd([...t]),l={was:eS(o,r),now:eS(o,a)},c=u=>u!==void 0&&u.publisher===a.publisher&&u.package_===a.package_&&!i.was.has(u.name);for(let[u,p]of l.now){let f=l.was.get(u);if(!f&&c(p.targetClass))continue;let h=f??{...ES,..._S(p.path,p.targetClass,l.was,c)},g=!f&&h.maxCount===0;if(p.minCount>h.minCount&&s.push({kind:"min-count-raised",term:u,message:`${a.text} raises ${u}'s minCount from ${h.minCount} to ${p.minCount}.`}),g)continue;p.maxCount<h.maxCount&&s.push({kind:"max-count-lowered",term:u,message:`${a.text} lowers ${u}'s maxCount from ${Q0(h.maxCount)} to ${p.maxCount}.`});let m=p.allowed&&(h.allowed?[...h.allowed].filter(y=>!p.allowed.has(y)):void 0);p.allowed&&(!h.allowed||m.length>0)&&s.push({kind:"in-narrowed",term:u,message:h.allowed?`${a.text} narrows ${u}'s in, which no longer allows ${m.join(", ")}.`:`${a.text} narrows ${u} to the values of its new in: ${[...p.allowed].join(", ")}.`});for(let y of p.classes)h.classes.some(v=>WD(t,a,v,y))||s.push({kind:"class-narrowed",term:u,message:h.classes.length>0?`${a.text} narrows ${u}'s class from ${Cr(h.classes)} to ${T(y)}.`:`${a.text} requires ${u}'s values to be ${T(y)}.`});for(let y of p.patterns)h.patterns.has(y)||s.push({kind:"pattern-added",term:u,message:h.patterns.size>0?`${a.text} changes ${u}'s pattern from ${[...h.patterns].join(", ")} to ${y}.`:`${a.text} adds the pattern ${y} to ${u}.`});p.minLength>h.minLength&&s.push({kind:"min-length-raised",term:u,message:`${a.text} raises ${u}'s minLength from ${h.minLength} to ${p.minLength}.`}),p.maxLength<h.maxLength&&s.push({kind:"max-length-lowered",term:u,message:`${a.text} lowers ${u}'s maxLength from ${Q0(h.maxLength)} to ${p.maxLength}.`}),p.lower&&(!h.lower||AS(p.lower,h.lower))&&s.push({kind:"lower-bound-raised",term:u,message:`${a.text} raises ${u}'s lower bound from ${sc(h.lower,"min")} to ${sc(p.lower,"min")}.`}),p.upper&&(!h.upper||xS(p.upper,h.upper))&&s.push({kind:"upper-bound-lowered",term:u,message:`${a.text} lowers ${u}'s upper bound from ${sc(h.upper,"max")} to ${sc(p.upper,"max")}.`})}return s}function WD(t,e,n,r){let a=n.publisher===e.publisher&&n.package_===e.package_?new rt(n.publisher,n.package_,n.name,e.version):n;return ot([...t],a).some(s=>T(s)===T(r))}function AS(t,e){return t.value>e.value||t.value===e.value&&t.exclusive&&!e.exclusive}function xS(t,e){return t.value<e.value||t.value===e.value&&t.exclusive&&!e.exclusive}function sc(t,e){return t?`${e}${t.exclusive?"Exclusive":"Inclusive"} ${t.value}`:"none"}function G0(t){let e=t.metadata.namespace_;if(!e?.version)throw new Error("A version is compared only when its document states a publisher, a package and a version.");return{publisher:e.publisher,package_:e.package_,version:e.version,text:e.toString()}}function J0(t,e){let n=new Map;for(let r of t)r instanceof q&&r.namespace===e&&n.set(r.name,r);return n}function zD(t,e,n,r){let a=new Set(r.map(T));return a.size===0||a.has(T(HD))?!0:n.every(s=>{let i=s.publisher===e.publisher&&s.package_===e.package_?new rt(s.publisher,s.package_,s.name,e.version):s;return ot([...t],i).some(o=>a.has(T(o)))})}function Cr(t){return[...new Set(t.map(T))].sort().join(", ")}function X0(t,e){return e.major>=1&&e.major===t.major&&e.minor===t.minor}function Q0(t){return t===1/0?"unbounded":String(t)}var ES={minCount:0,maxCount:1/0,allowed:void 0,classes:[],patterns:new Set,minLength:0,maxLength:1/0,lower:void 0,upper:void 0};function _S(t,e,n,r){let a=n.get(`${T(e)}.${bn(t,T)}`);if(a)return a;switch(t.kind){case"predicate":return r(t.property)?{minCount:0,maxCount:0}:{minCount:0,maxCount:1/0};case"inverse":return{minCount:0,maxCount:1/0};case"alternative":{let s=t.paths.map(i=>_S(i,e,n,r));return{minCount:Math.max(...s.map(i=>i.minCount)),maxCount:s.reduce((i,o)=>i+o.maxCount,0)}}}}function ic(t,e){return t===void 0?void 0:{value:t,exclusive:e}}function Z0(t,e){let n;for(let r of t)r&&(!n||e(r,n))&&(n=r);return n}function eS(t,e){let n=new Map;for(let r of t){let a=r.uri,s=r.targetClass;if(!a||!s||a.publisher!==e.publisher||a.package_!==e.package_||!a.version||!Sn(a.version,e.version))continue;let i=[...r.properties.map(o=>({path:{kind:"predicate",property:o.path},c:o})),...(r.pathExpressionProperties??[]).map(o=>({path:o.path,c:o}))];for(let{path:o,c:l}of i){let c=`${T(s)}.${bn(o,T)}`,u=l.inValues||l.inRefs?new Set([...(l.inValues??[]).map(String),...(l.inRefs??[]).map(T)]):void 0,p=n.get(c)??ES;n.set(c,{targetClass:s,path:o,minCount:Math.max(p.minCount,l.minCount??0),maxCount:Math.min(p.maxCount,l.maxCount??1/0),allowed:p.allowed&&u?new Set([...p.allowed].filter(f=>u.has(f))):p.allowed??u,classes:l.classRef?[...p.classes,l.classRef]:p.classes,patterns:l.pattern?new Set([...p.patterns,`/${l.pattern.regex}/${l.pattern.flags??""}`]):p.patterns,minLength:Math.max(p.minLength,l.minLength??0),maxLength:Math.min(p.maxLength,l.maxLength??1/0),lower:Z0([p.lower,ic(l.minInclusive,!1),ic(l.minExclusive,!0)],AS),upper:Z0([p.upper,ic(l.maxInclusive,!1),ic(l.maxExclusive,!0)],xS)})}}return n}var Ki=Dt(we.Major);async function CS(t){let{sources:e,publisherIndex:n,repository:r}=t,a=t.parser??new me,s=GD(e),i=r2(t.packages,s),o=JD(e),l=a2(t.sourcePublishers??[],s),c=new Map,u=(y,v)=>{if(l.has(y))return Promise.resolve(null);let k=`${y}/${v}`,w=c.get(k);return w||c.set(k,w=n.getLockEntry(y,v)),w},p=new Map,f=async(y,v)=>{let k=`${y}/${v}`,w=p.get(k);return[...o.get(k)??[],...w?[w]:[],...jS(y,v,await u(y,v))]},h=new Map,g=new Map,m=[];for(let y=0;y<=i.length;y++){let v=[];for(let S of i)v.push({head:S,...await e2(S,f,a,l)});if(y===0){let S=await XD(r,a);for(let A of i){let C=await QD(A,S,r,a);h.set(A.key,C.missing),g.set(A.key,C.selfReferences),m.push(...C.notices)}}let k=S=>S.raises.length>0||h.get(S.head.key).length>0,w=v.filter(S=>k(S)&&!p.has(S.head.key));if(w.length===0){let S=[];for(let A of v){if(!k(A))continue;s2(A.head,await u(A.head.publisher,A.head.packageName));let C=[];for(let{home:N,terms:_}of h.get(A.head.key)){let B=NS(await f(N.publisher,N.packageName),`${A.head.key} names ${_.join(", ")}, from ${N.key}`);C.push({publisher:N.publisher,packageName:N.packageName,operator:Ki,version:ee(B),terms:_})}S.push(i2(A.head,A.raises,C,g.get(A.head.key),p.get(A.head.key),a))}return{upgrades:S,notices:[...v.flatMap(A=>A.notices),...m]}}for(let{head:S}of w)p.set(S.key,YD(S.version))}throw new Error(`Upgrading the ${i.length} package(s) here did not settle: each new version raised another's floor again.`)}function YD(t){return t.major>=1?fr(t.major,t.minor+1,0):fr(0,t.minor,t.patch+1)}function GD(t){let e=new Map;for(let n of t){let r=n.document.metadata.namespace_;if(!r?.version)throw new Error(`${n.path} states no package version, so it can't be upgraded.`);let a=`${r.publisher}/${r.package_}`,s=e.get(a);if(s&&_e(s.version,r.version)===0)throw new Error(`${s.source.path} and ${n.path} are both ${a}@${ee(r.version)}.`);(!s||_e(r.version,s.version)>0)&&e.set(a,{key:a,publisher:r.publisher,packageName:r.package_,version:r.version,source:n})}return[...e.values()]}function JD(t){let e=new Map;for(let{document:n}of t){let r=n.metadata.namespace_,a=`${r.publisher}/${r.package_}`;e.set(a,[...e.get(a)??[],r.version])}return e}function jS(t,e,n){return n?[n,...n.lines??[]].map(r=>zt(r.version,`A version ${t}'s kanonak.lock offers for ${t}/${e}`)):[]}function NS(t,e){if(t.length===0)throw new Error(`${e}, whose versions can't be known: this folder holds none and its publisher's kanonak.lock gives it no entry.`);return t.reduce((n,r)=>_e(n,r)>=0?n:r)}async function PS(t,e,n){let r=[],a=[],s=await tr([t],e,{onDocument:i=>r.push(i),onUnresolvedEdge:i=>a.push(i)});if(a.length>0)throw new Error(`${n}, and ${a.map(i=>`${i.fromNamespace}'s import of ${i.publisher}/${i.packageName} ${i.constraint}`).join(", ")} doesn't resolve.`);return{keys:s,documents:r}}async function XD(t,e){let n=[];for(let{publisher:r,package_:a}of fa()){let s=`${r}/${a}`,i=e.buildImport(a,Dt(we.Any),"0.0.0",r),o=await t.getHighestCompatibleVersionAsync(r,i);if(!o)throw new Error(`kanonak upgrade reads ${s}, a built-in home, to find which packages name its terms, and no version of it can be read.`);let{keys:l}=await PS(o,t,`kanonak upgrade reads ${s}'s import closure to keep a home import from making a cycle`);n.push({key:s,publisher:r,packageName:a,document:o,closure:l})}return n}async function QD(t,e,n,r){let a=`${t.key}@${ee(t.version)}`,s=t.source.document.metadata.namespace_.toString(),i=new Set(Object.entries(t.source.document.metadata.imports??{}).flatMap(([v,k])=>k.map(w=>`${v}/${w.packageName}`))),o=r.parse(t.source.content),l=o.metadata.imports??(o.metadata.imports={});for(let v of e.filter(k=>!i.has(k.key)&&k.key!==t.key))(l[v.publisher]??=[]).push(r.buildImport(v.packageName,Ki,ee(v.document.metadata.namespace_.version),v.publisher));let{documents:c}=await PS(t.source.document,n,`kanonak upgrade reads ${a}'s import closure to find which built-in terms it names`),u=new Vr(r);await u.saveDocumentAsync(o,s);let p=new Set([s]);for(let v of[...c,...e.map(k=>k.document)]){let k=v.metadata.namespace_.toString();p.has(k)||(p.add(k),await u.saveDocumentAsync(v,k))}let f={};await new je(r).parseKanonaks(u,f);let h=(f.authored??[]).filter(v=>v instanceof q&&v.sourceDoc===s),g=new Map;for(let{uri:v}of ew(h,Df.fromContent(t.source.content))){let k=Zn(v.name);if(!k||k.publisher!==v.publisher||k.package_!==v.package_)continue;let w=`${k.publisher}/${k.package_}`;g.set(w,(g.get(w)??new Set).add(v.name))}let m=[],y=[];for(let v of e){let k=[...g.get(v.key)??[]].sort();k.length===0||v.key===t.key||i.has(v.key)||(v.closure.has(t.key)?y.push({importer:a,message:`names ${k.join(", ")}, from ${v.key}, which depends on it, so it doesn't import it: that would make an import cycle`}):m.push({home:v,terms:k}))}return{missing:m,notices:y,selfReferences:ZD(h,t)}}function ZD(t,e){let n=ee(e.version),r=[],a=(o,l)=>{let c=o.predicate?.subject;return!!c&&c.publisher===l.publisher&&c.package_===l.package_&&c.name===l.name},s=(o,l)=>o.find(c=>c instanceof Ce&&a(c,l)),i=(o,l)=>{let c=s(o,$.version);c?.object===n&&c.sourceKey!==void 0&&s(o,$.publisher)?.object===e.publisher&&s(o,$.package)?.object===e.packageName&&r.push([...l,c.sourceKey]);for(let u of o){if(!(u instanceof zn)||u.sourceKey===void 0)continue;let p=[...l,u.sourceKey];if(u instanceof Ae&&u.object&&i(u.object.statement,p),u instanceof he)for(let f of u.object??[])f instanceof te&&f.sourceKey!==void 0&&i(f.statement,[...p,f.sourceKey])}};for(let o of t)o instanceof q&&typeof o.sourceKey=="string"&&i(o.statement,[o.sourceKey]);return r}async function e2(t,e,n,r){let a=`${t.key}@${ee(t.version)}`,s=[],i=[];for(let[o,l]of Object.entries(t.source.document.metadata.imports??{}))for(let[c,u]of l.entries()){if(u.mode==="link")continue;let p=await e(o,u.packageName),f=Dt(u.versionOperator),h=`${o}/${u.packageName} ${f} ${ee(u.version)}`,g=u.versionOperator===we.Major||u.versionOperator===we.Compatible;if(r.has(o)&&(p.length===0||g&&!Ra(p,v=>v,u))){let v=p.length===0?"no version of it":`only ${zd(p)}`;i.push({importer:a,message:`imports ${h}: left as it's written, since this folder, ${o}'s source, holds ${v}, and ${o}'s kanonak.lock isn't read`});continue}if(p.length===0){let v=`this folder holds no version of it and ${o}'s kanonak.lock gives it no entry`;if(g)throw new Error(`${a} imports ${h}, but ${v}, so the newest version its range admits can't be known.`);i.push({importer:a,message:`imports ${h}: left as it's written, and whether anything is newer can't be known: ${v}`});continue}let m=g?t2(u,p,a,h):void 0;m&&s.push({publisher:o,packageName:u.packageName,operator:f,index:c,from:ee(u.version),to:ee(m)});let y=n2(o,u,p,n,m??u.version);y&&i.push({importer:a,message:`imports ${h}: ${y}`})}return{raises:s,notices:i}}function t2(t,e,n,r){let a=Ra(e,s=>s,t);if(!a)throw new Error(`${n} imports ${r}, which admits none of the versions this folder holds or its publisher's lock offers: ${zd(e)}.`);return _e(a,t.version)>0?a:void 0}function n2(t,e,n,r,a){let s=r.buildImport(e.packageName,Ki,ee(e.version),t),i=Ra(n,c=>c,s),o=NS(n,`${t}/${e.packageName}`);if(e.versionOperator===we.Any)return _e(o,e.version)>0?`left as it's written, and ${ee(o)} is the newest`:void 0;let l=[];return i&&_e(i,a)>0&&l.push(`left at ${ee(a)}, and ${ee(i)} is the newest \`${Ki} ${ee(e.version)}\` admits`),!on(o,s)&&_e(o,e.version)>0&&l.push(`${ee(o)} is out, beyond what \`${Ki} ${ee(e.version)}\` admits, and moving to it is a breaking change made by hand`),l.length>0?l.join("; "):void 0}function r2(t,e){if(t===void 0)return[...e];let n=new Map(e.map(a=>[a.key,a])),r=t.filter(a=>!n.has(a));if(r.length>0)throw new Error(`${r.join(", ")} ${r.length===1?"names no package":"name no packages"} in this folder, so ${r.length===1?"it":"they"} can't be upgraded here. Name each as publisher/package, as one of the ${n.size} package(s) here: ${[...n.keys()].sort().join(", ")}.`);return[...new Set(t)].map(a=>n.get(a))}function a2(t,e){let n=new Set(e.map(a=>a.publisher)),r=t.filter(a=>!n.has(a));if(r.length>0)throw new Error(`This folder is named the source of ${r.join(", ")}, but it holds no package of ${r.length===1?"that publisher":"those publishers"}: it holds packages of ${[...n].sort().join(", ")}.`);return new Set(t)}function s2(t,e){let n=jS(t.publisher,t.packageName,e).filter(r=>_e(r,t.version)>0);if(n.length>0)throw new Error(`This folder's newest ${t.key} is ${ee(t.version)}, but ${t.publisher}'s kanonak.lock offers ${zd(n)}. Upgrade it in the folder that holds its newest version.`)}function zd(t){return[...t].sort((e,n)=>_e(n,e)).map(ee).filter((e,n,r)=>r.indexOf(e)===n).join(", ")}function i2(t,e,n,r,a,s){let{source:i,key:o,packageName:l}=t,c=ee(t.version),u=new l2(i),p=Df.fromContent(i.content),f=p.getImportPackages(l),h=i.document.metadata.imports??{},g=[];for(let k of e){let w=f.filter(C=>C.publisher===k.publisher),S=h[k.publisher]??[];if(w.length!==S.length||w.some((C,N)=>C.package_!==S[N].packageName))throw new Error(`${i.path} states an import of ${k.publisher} in a form kanonak upgrade doesn't edit: it edits a \`version:\` under a publisher's \`packages:\`.`);let A=w[k.index].versionPosition;if(!A)throw new Error(`${i.path} states no \`version:\` for its import of ${k.publisher}/${k.packageName}.`);g.push(u.replaceScalar(A,k.from,k.to))}let m=p.getPropertyValuePosition(l,"version");if(!m)throw new Error(`${i.path} states no \`version:\` for ${o}.`);g.push(u.replaceScalar(m,c,ee(a)));for(let k of r){let w=p.getNodeValuePosition(k);if(!w)throw new Error(`${i.path} states ${k.join(".")}, a reference to its own version, where kanonak upgrade can't find it in the text.`);g.push(u.replaceScalar(w,c,ee(a)))}for(let k of[...new Set(n.map(w=>w.publisher))])g.push(o2(u,p,l,k,n.filter(w=>w.publisher===k)));let y=u.apply(g);if(y.includes(`${o}@${c}`))throw new Error(`${i.path} names ${o}@${c}, its own version, which its next version would still name. Edit it by hand first.`);c2(i,y,e,n,a,s);let v=e.map(({index:k,...w})=>w);return{source:i,publisher:t.publisher,packageName:t.packageName,from:c,to:ee(a),raises:v,homes:[...n],selfReferences:r.length,content:y}}function o2(t,e,n,r,a){let s=(p,f,h)=>f?`${" ".repeat(p)}- { package: ${h.packageName}, match: ${h.operator}, version: ${h.version} }
|
|
401
|
+
`)}`)}let s=new ba(e,r),i=new Set((await s.getAllDocumentsAsync()).map(qi)),o=[...n].filter(h=>!i.has(h));if(o.length>0)throw new Error(`scopeFromClosureAsync: ${o.join(", ")} is not a document of the repository the closure is resolved through.`);let l={},c=await new je().parseKanonaks(s,l),u=l.authored.filter(h=>h instanceof V&&n.has(h.sourceDoc)),p=new Set(u.map(fa)),f=await ZM(t,u,e);return{kind:"merged",catalog:c,reasoning:new va().reasonOver(c),focus:p,links:f}}async function ZM(t,e,n){let r=[],a=new Map,s=new Map;for(let i of t){let o=qi(i),l=e.filter(c=>c.sourceDoc===o);for(let{key:c,references:u,target:p,failure:f}of await Rd(i,l,n)){let h=p?qi(p):void 0;if(s.has(c)&&s.get(c)!==h)throw new Error(`scopeFromClosureAsync: the seeds link ${c} at different versions (${s.get(c)??"unresolved"} and ${h??"unresolved"}); judge them in separate scopes.`);s.has(c)||(s.set(c,h),p&&r.push(...await new je().parseKanonaks(new at(p,n))));for(let{uri:g}of u)p?Id(p,g.name)||a.set(T(g),`${h} defines no resource named '${g.name}'`):a.set(T(g),`its package ${c} could not be resolved${f?` (${f})`:""}`)}}return s.size>0?{subjects:r,unresolved:a}:void 0}function qi(t){let e=t.metadata?.namespace_;if(!e)throw new Error("scopeFromClosureAsync: a document has no namespace, so it cannot be identified.");return e.toString()}var wn="kanonak.org/transformations",lc="values",Fd="allowed",oS="expected",vn=t=>({type:`${wn}/VarRef`,varName:t}),Vd=t=>({type:`${wn}/IntegerLiteral`,integerLiteral:t}),eD=t=>({type:`${wn}/DecimalLiteral`,decimalLiteral:t}),sc=t=>Number.isInteger(t)?Vd(t):eD(t),U0=t=>({type:`${wn}/Count`,source:t}),B0=(t,e)=>({type:`${wn}/GreaterThanOrEqual`,compareLeft:t,compareRight:e}),H0=(t,e)=>({type:`${wn}/LessThanOrEqual`,compareLeft:t,compareRight:e}),tD=(t,e)=>({type:`${wn}/GreaterThan`,compareLeft:t,compareRight:e}),nD=(t,e)=>({type:`${wn}/LessThan`,compareLeft:t,compareRight:e});function rD(t,e){if(!e||e.length===0)return t;let n=new Set(["i","m","s"]),r=[...new Set(e.split(""))];if(r.filter(a=>!n.has(a)).length>0)throw new Error(`sh:flags '${e}' is outside the pinned regex subset (supported: i, m, s)`);return`(?${r.sort().join("")})${t}`}function aD(t){let e=[];return t.minCount!==void 0&&e.push({component:"minCount",per:"node",expr:B0(U0(vn(lc)),Vd(t.minCount))}),t.maxCount!==void 0&&e.push({component:"maxCount",per:"node",expr:H0(U0(vn(lc)),Vd(t.maxCount))}),t.hasValue!==void 0&&e.push({component:"hasValue",per:"node",expr:{type:`${wn}/Contains`,haystack:vn(lc),needle:vn(oS)}}),(t.inValues!==void 0||t.inRefs!==void 0)&&e.push({component:"in",per:"value",expr:{type:`${wn}/Contains`,haystack:vn(Fd),needle:vn("v")}}),t.pattern!==void 0&&e.push({component:"pattern",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:rD(t.pattern.regex,t.pattern.flags)}}),t.minLength!==void 0&&e.push({component:"minLength",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:`(?s)^.{${t.minLength},}$`}}),t.maxLength!==void 0&&e.push({component:"maxLength",per:"value",expr:{type:`${wn}/Matches`,matchSource:vn("v"),pattern:`(?s)^.{0,${t.maxLength}}$`}}),t.minInclusive!==void 0&&e.push({component:"minInclusive",per:"value",expr:B0(vn("v"),sc(t.minInclusive))}),t.maxInclusive!==void 0&&e.push({component:"maxInclusive",per:"value",expr:H0(vn("v"),sc(t.maxInclusive))}),t.minExclusive!==void 0&&e.push({component:"minExclusive",per:"value",expr:tD(vn("v"),sc(t.minExclusive))}),t.maxExclusive!==void 0&&e.push({component:"maxExclusive",per:"value",expr:nD(vn("v"),sc(t.maxExclusive))}),e}function lS(t,e){let n=W0(e)?e:kd(e),r=[],a=t.catalog.filter(c=>c instanceof V).map(cc),s=new Map;sD(a,s);let i=t.links?[...t.catalog,...t.links.subjects]:t.catalog,o=[...a,...s.values()],l={scope:t,membership:new iD(t),values:i,embeddedFocus:s,nodes:o,pointingAt:new Map,numericRanges:new Map};for(let c of n)for(let u of oD(l,c,a))qd(t,u)&&fS(l,c,u,r);if(!W0(e))for(let c of _$(e))lD(l,c,a,r);return{conforms:!r.some(c=>c.severity==="Violation"),results:r}}function W0(t){return t.length>0&&!(t[0]instanceof Object&&"statement"in t[0])&&typeof t[0].name=="string"&&"properties"in t[0]}function cS(t){let e=t.predicate;return e instanceof D?e:void 0}function qd(t,e){return!t.focus||e.subject!==void 0&&t.focus.has(e.subject)}function cc(t){let e=fa(t);return{node:t,key:e,uri:xe(t),subject:e,label:t.name}}function Hd(t,e,n){return{node:t,key:e,subject:n,label:e.includes("#")?e.slice(e.indexOf("#")):e}}function sD(t,e){for(let n of t)ln([n.node],({kanonak:r,address:a})=>{r instanceof te&&!e.has(r)&&e.set(r,Hd(r,a,n.subject))})}var iD=class{constructor(t){this.scope=t}scope;ancestors=new Map;defined;defines(t){return this.defined??=new Set(this.scope.catalog.filter(e=>e instanceof V).map(fa)),this.defined.has(T(t))}isInstance(t,e){let n=T(e);return t.some(r=>T(r)===n||this.ancestorsOf(r).has(n))}ancestorsOf(t){let e=t.version&&typeof t.version.major=="number"?`${T(t)}@${ee(t.version)}`:T(t),n=this.ancestors.get(e);return n||(n=this.scope.reasoning?new Set(this.scope.reasoning.getSuperclasses(t)):new Set(ot(this.scope.catalog,t).map(r=>T(r))),this.ancestors.set(e,n)),n}};function oD(t,e,n){let{scope:r}=t,a=new Map,s=o=>{a.set(o.key,o)},i=()=>[...n,...t.embeddedFocus.values()];if(e.targetClass){let o=e.targetClass;for(let l of i())t.membership.isInstance(Et(l.node),o)&&s(l)}for(let o of e.targetNodes){let l=ge(r.catalog,o);l instanceof V&&s(cc(l))}for(let o of e.targetSubjectsOf){let l=T(o);for(let c of i())c.node.statement.some(u=>{let p=cS(u);return p&&T(p.subject)===l})&&s(c)}for(let o of e.targetObjectsOf)for(let l of i())for(let c of Rn(l.node,o,r.catalog,l.key))c.kind==="subject"?s(cc(c.node)):c.kind==="embedded"&&s(t.embeddedFocus.get(c.node)??Hd(c.node,c.address,l.subject));return[...a.values()]}function lD(t,e,n,r){let a=new Map;for(let l of n)t.membership.isInstance(Et(l.node),e.classUri)&&a.set(l.key,l);let s=[];for(let l of[...a.values()].sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0)){let c=e.properties.map(u=>cD(t,l,u));c.every(u=>u.size>0)&&s.push({focus:l,values:c})}let i=new Map;s.forEach(({values:l},c)=>{for(let u of l[0].keys()){let p=i.get(u);p?p.push(c):i.set(u,[c])}});let o=new Set;for(let l of i.values())for(let c=0;c<l.length;c++)for(let u=c+1;u<l.length;u++){let p=`${l[c]}:${l[u]}`;if(o.has(p))continue;let f=s[l[c]],h=s[l[u]],g=f.values.map((k,w)=>[...k.keys()].find(S=>h.values[w].has(S)));if(g.some(k=>k===void 0))continue;o.add(p);let[m,y]=qd(t.scope,f.focus)?[f.focus,h.focus]:qd(t.scope,h.focus)?[h.focus,f.focus]:[void 0,void 0];if(!m||!y)continue;let v=e.properties.map((k,w)=>`${k.name} = ${f.values[w].get(g[w])}`).join(", ");r.push({focusNode:m.key,focusUri:m.uri,valueRef:y.uri,constraintComponent:yu,severity:"Violation",message:`'${m.label}' and '${y.label}' are distinct instances of ${e.className} with the same key (${v}); its owl.hasKey makes the key unique.`})}}function cD(t,e,n){let r=new Map;for(let a of Rn(e.node,n,t.scope.catalog,e.key))switch(a.kind){case"subject":case"unresolved":r.set(`ref:${T(a.uri)}`,a.uri.name);break;case"literal":r.set(`${typeof a.value}:${String(a.value)}`,JSON.stringify(a.value));break;case"embedded":break}return r}function uD(t,e,n){return e.node?Rn(e.node,n,t.values,e.key).map(r=>mD(t,r,e.subject)):[]}function Wd(t,e,n){switch(n.kind){case"predicate":return uD(t,e,n.property);case"inverse":return uS(t,e,n.path);case"alternative":return pS(n.paths.flatMap(r=>Wd(t,e,r)))}}function uS(t,e,n){switch(n.kind){case"predicate":return[...pD(t,n.property).get(e.key)?.values()??[]].map(r=>fD(t,r));case"inverse":return Wd(t,e,n.path);case"alternative":return pS(n.paths.flatMap(r=>uS(t,e,r)))}}function pD(t,e){let n=t.pointingAt.get(T(e));if(n)return n;let r=new Map;for(let a of t.nodes)for(let s of Rn(a.node,e,t.values,a.key)){let i=s.kind==="embedded"?t.embeddedFocus.get(s.node)?.key??s.address:s.kind==="literal"?JSON.stringify(s.value):T(s.uri),o=r.get(i)??new Map;o.set(a.key,a),r.set(i,o)}return t.pointingAt.set(T(e),r),r}function fD(t,e){if(e.node instanceof V)return{kernel:{ref:e.key},kind:"reference",ref:e.uri,subject:e.node};let n=Et(e.node).filter(r=>Cr(t.scope.catalog,r));return{kernel:{ref:e.key},kind:"embedded",embedded:e,datatypes:n}}function pS(t){let e=new Map;for(let n of t){let r=`${n.kind}:${JSON.stringify(n.kernel)}`;e.has(r)||e.set(r,n)}return[...e.values()]}function dD(t,e){let n=T(e),r=t.numericRanges.get(n);if(r!==void 0)return r;let a=ge(t.scope.catalog,e),s=a?be(a,gD):void 0,i=s!==void 0&&ec(t.scope.catalog,s);return t.numericRanges.set(n,i),i}function hD(t){return typeof t.kernel=="string"&&yd.test(t.kernel)?Number(t.kernel):t.kernel}function mD(t,e,n){switch(e.kind){case"subject":return{kernel:{ref:T(e.uri)},kind:"reference",ref:e.uri,subject:e.node};case"unresolved":return{kernel:{ref:T(e.uri)},kind:"reference",ref:e.uri};case"embedded":{let r=t.embeddedFocus.get(e.node)??Hd(e.node,e.address,n),a=Et(e.node).filter(s=>Cr(t.scope.catalog,s));return{kernel:{ref:r.key},kind:"embedded",embedded:r,datatypes:a}}case"literal":return typeof e.value=="boolean"?{kernel:e.value?1:0,kind:"boolean",literal:e.value}:{kernel:e.value,kind:typeof e.value=="number"?"number":"string",literal:e.value}}}function fS(t,e,n,r){for(let a of[...e.properties,...e.pathExpressionProperties??[]])hS(t,e,n,a,r);e.closed&&_D(e,n,r)}function Kd(t,e,n,r,a={},s){return{focusNode:e.key,focusUri:e.uri,constraintComponent:n,severity:s??dS(t),message:r,sourceShape:t.name,sourceShapeUri:t.uri,...a}}function dS(t){return t.severity??"Violation"}var gD={publisher:"kanonak.org",package_:"core-rdf",name:"range"},yD={minCount:vg,maxCount:wg,hasValue:gu,in:Ag,pattern:xg,minLength:Eg,maxLength:_g,minInclusive:Cg,maxInclusive:jg,minExclusive:Ng,maxExclusive:Pg};function hS(t,e,n,r,a){let s="kind"in r.path?r.path:{kind:"predicate",property:r.path},i=Wd(t,n,s),o=r.severity??dS(e),l=bn(s),c=[...(r.inValues??[]).map(p=>typeof p=="boolean"?p?1:0:p),...(r.inRefs??[]).map(p=>({ref:T(p)}))],u=(p,f,h)=>{let g=Kd(e,n,p,r.message??f,{...s.kind==="predicate"?{resultPath:s.property}:{resultPathExpression:s},value:h?.literal,valueRef:h?.ref},o);return a.push(g),g};for(let p of aD(r)){let f=yD[p.component];if(p.per==="node"){let g={[lc]:i.map(m=>m.kernel),[Fd]:c};r.hasValue&&(g[oS]={ref:T(r.hasValue)}),z0(p,g)||u(f,kD(p,l,r,i.length));continue}let h=(p.component==="minInclusive"||p.component==="maxInclusive"||p.component==="minExclusive"||p.component==="maxExclusive")&&s.kind==="predicate"&&dD(t,s.property);for(let g of i){if((p.component==="pattern"||p.component==="minLength"||p.component==="maxLength")&&g.kind!=="string"){u(f,`'${l}' value is not a string; ${p.component} applies to string values.`,g);continue}z0(p,{v:h?hD(g):g.kernel,[Fd]:c})||u(f,SD(p,l,r,g),g)}}if(r.nodeKind)for(let p of i)AD(r.nodeKind,p)||u(Tg,`'${l}' value is ${p.datatypes?.length?`a structured ${p.datatypes[0].name} literal`:p.kind}; nodeKind requires ${r.nodeKind}.`,p);if(r.datatype)for(let p of i){let f=xD(r.datatype,p);f&&u($g,`'${l}' ${f}`,p)}if(r.classRef)for(let p of i){let f=ED(t,r.classRef,p);f&&u(Sg,`'${l}' ${f}`,p)}r.qualified&&bD(t,r,i,l,u)}function kD(t,e,n,r){switch(t.component){case"minCount":return`'${e}' has ${r} value(s); minCount is ${n.minCount}.`;case"maxCount":return`'${e}' has ${r} value(s); maxCount is ${n.maxCount}.`;case"hasValue":return`'${e}' has no value equal to ${n.hasValue?T(n.hasValue):"(unset)"}.`;default:return`'${e}' violates ${t.component}.`}}function bD(t,e,n,r,a){let s=e.qualified,i=s.maxCount!==void 0?ho:fo,o=(c,u)=>{mS.add(a(i,c,u))};if(!s.shape){o(`'${r}' qualified value shape cannot be evaluated: ${s.problem??"it could not be built"}.`);return}let l=0;for(let c of n){let u=c.ref?T(c.ref):c.embedded?c.embedded.label:JSON.stringify(c.literal),p=vD(t,c);if(!p){o(`'${r}' value ${u} does not resolve in this scope; whether it conforms to the qualified shape cannot be decided.`,c);continue}let f=$D(t,s.shape,p);if(f.kind==="undecided"){o(`'${r}' value ${u}: whether it conforms to the qualified shape cannot be decided \u2014 ${f.reason}`,c);continue}f.kind==="conforms"&&l++}s.minCount!==void 0&&l<s.minCount&&a(fo,`'${r}' has ${l} value(s) that conform to the qualified shape; qualifiedMinCount is ${s.minCount}.`),s.maxCount!==void 0&&l>s.maxCount&&a(ho,`'${r}' has ${l} value(s) that conform to the qualified shape; qualifiedMaxCount is ${s.maxCount}.`)}function vD(t,e){switch(e.kind){case"reference":return e.subject?cc(e.subject):void 0;case"embedded":return e.embedded;default:{let n=JSON.stringify(e.literal);return{key:n,label:n}}}}var wD={name:"(qualified value shape)",targetNodes:[],targetSubjectsOf:[],targetObjectsOf:[],closed:!1,ignoredProperties:[],properties:[]},mS=new WeakSet;function $D(t,e,n){let r=[];e.kind==="property"?hS(t,wD,n,e.constraint,r):fS(t,e.shape,n,r);let a=r.find(s=>mS.has(s));return a?{kind:"undecided",reason:a.message}:r.length===0?{kind:"conforms"}:{kind:"fails"}}function SD(t,e,n,r){let a=r.ref?T(r.ref):r.embedded?r.embedded.label:JSON.stringify(r.literal);switch(t.component){case"in":return`'${e}' value ${a} is not in the permitted set.`;case"pattern":return`'${e}' value ${a} does not match pattern ${n.pattern?.regex}.`;case"minLength":return`'${e}' value ${a} is shorter than minLength ${n.minLength}.`;case"maxLength":return`'${e}' value ${a} is longer than maxLength ${n.maxLength}.`;case"minInclusive":return`'${e}' value ${a} is below minInclusive ${n.minInclusive} (or not numeric).`;case"maxInclusive":return`'${e}' value ${a} is above maxInclusive ${n.maxInclusive} (or not numeric).`;case"minExclusive":return`'${e}' value ${a} is not above minExclusive ${n.minExclusive} (or not numeric).`;case"maxExclusive":return`'${e}' value ${a} is not below maxExclusive ${n.maxExclusive} (or not numeric).`;default:return`'${e}' value ${a} violates ${t.component}.`}}function z0(t,e){let n=r=>{let a=r.varName;if(r.type==="kanonak.org/transformations/VarRef"&&typeof a=="string"&&a in e)return e[a];throw new Be(`Conformance lowering produced an unexpected leaf '${r.type}'`)};return Dl(t.expr,void 0,n)===1}function AD(t,e){switch(t){case"IRI":return e.kind==="reference";case"BlankNode":return e.kind==="embedded"&&!e.datatypes?.length;case"Literal":return e.kind==="string"||e.kind==="number"||e.kind==="boolean"||!!e.datatypes?.length}}function xD(t,e){if(e.datatypes?.length)return e.datatypes.some(r=>T(r)===T(t))?void 0:`value is a ${e.datatypes.map(r=>r.name).join(" | ")}; sh:datatype requires ${t.name}.`;if(e.kind==="reference"||e.kind==="embedded")return`value is a ${e.kind}; sh:datatype requires a literal of ${t.name}.`;let n=ka(t);if(n!==void 0)switch(n){case oe.Boolean:return e.kind==="boolean"?void 0:`value is not a boolean (${t.name}).`;case oe.Integer:return e.kind!=="number"?`value is not a number (${t.name}).`:Number.isInteger(e.literal)?void 0:`value is not an integer (${t.name}).`;case oe.Decimal:case oe.Double:case oe.Float:return e.kind==="number"?void 0:`value is not a number (${t.name}).`;default:return e.kind==="string"?void 0:`value is not a string-carried literal (${t.name}).`}}function ED(t,e,n){if(n.kind==="embedded"&&n.embedded?.node){let i=Et(n.embedded.node);return i.length===0?`value ${n.embedded.label} has no type; sh:class requires an instance of ${e.name}.`:t.membership.isInstance(i,e)?void 0:`value ${n.embedded.label} is not an instance of ${e.name}.`}if(n.kind!=="reference"||!n.ref)return`value is not a reference; sh:class requires an instance of ${e.name}.`;let r=n.subject;if(!r){let i=t.scope.links?.unresolved.get(T(n.ref));return i?`value ${T(n.ref)} is a link that does not dereference: ${i} (sh:class ${e.name}).`:`value ${T(n.ref)} does not resolve in this scope (sh:class ${e.name}).`}let a=Et(r);if(t.membership.isInstance(a,e))return;let s=a.filter(i=>!t.membership.defines(i));return s.length>0?`value ${T(n.ref)} is typed ${s.map(T).join(", ")}, which this scope does not define, so it cannot be shown to be an instance of ${e.name}. A class is in scope when the judged document imports the package that defines it.`:`value ${T(n.ref)} is not an instance of ${e.name}.`}function _D(t,e,n){if(!e.node)return;let r=new Set([...t.properties.map(s=>T(s.path)),...t.ignoredProperties.map(s=>T(s))]),a=new Set;for(let s of e.node.statement){let i=cS(s);if(!i)continue;let o=T(i.subject);r.has(o)||a.has(o)||(a.add(o),n.push(Kd(t,e,mu,`'${e.label}' carries undeclared property '${i.subject.name}' (closed shape).`,{resultPath:i.subject})))}for(let s of e.node.unresolvedPredicates)a.has(s.key)||(a.add(s.key),n.push(Kd(t,e,mu,`'${e.label}' carries unresolvable property '${s.key}' (closed shape).`,{value:s.key})))}var $z=new Set([gu,fo,ho].map(t=>t.name)),Sz=new Set([yu].map(t=>t.name));var jD=12e4,ND=4096,PD=class{argv;interactive;timeoutMs;stderr;now;constructor(t){this.argv=TD(t.command),this.interactive=t.interactive??!1,this.timeoutMs=t.timeoutMs??jD,this.stderr=t.stderr??process.stderr,this.now=t.nowSeconds??(()=>Date.now()/1e3)}get command(){return this.argv.join(" ")}async get(t){let e=await this.run("get",this.wireRequest("get",t)),n=yy(t,e,this.now());if(!n.ok)throw new dt(`credential helper '${this.command}' answered get for ${t.resource} outside the protocol (${n.problem}): ${n.message}`);return n.answer}async erase(t){let e=await this.run("erase",{...this.wireRequest("erase",t),scope:t.scope}),n=ky(e);if(!n.ok)throw new dt(`credential helper '${this.command}' answered erase for ${t.resource} outside the protocol (${n.problem}): ${n.message}`)}wireRequest(t,e){let n={version:Ua,operation:t,resource:e.resource,method:e.method};return e.challenges&&(n.challenges=e.challenges),n.interactive=this.interactive,n}run(t,e){let n=`credential helper '${this.command}' ${t}`;return new Promise((r,a)=>{let s=!1,i=f=>{s||(s=!0,f())},o;try{o=CD(this.argv[0],[...this.argv.slice(1),t],{stdio:["pipe","pipe","pipe"],shell:!1,windowsHide:!0})}catch(f){a(Y0(n,f));return}let l=[],c="",u=!1,p=setTimeout(()=>{u=!0,o.kill()},this.timeoutMs);o.stdout.on("data",f=>l.push(f)),o.stderr.on("data",f=>{this.stderr.write(f),c=(c+f.toString("utf8")).slice(-ND)}),o.on("error",f=>{clearTimeout(p),i(()=>a(Y0(n,f)))}),o.on("close",(f,h)=>{clearTimeout(p);let g=c.trim()?`: ${c.trim()}`:"";if(u){i(()=>a(new dt(`${n} did not finish within ${Math.round(this.timeoutMs/1e3)}s${g}`)));return}if(f!==0){let y=f!==null?`exit ${f}`:`signal ${h}`;i(()=>a(new dt(`${n} failed (${y})${g}`)));return}let m=Buffer.concat(l).toString("utf8").trim();try{let y=JSON.parse(m);i(()=>r(y))}catch{i(()=>a(new dt(`${n} exited 0 without printing one JSON answer${g}`)))}}),o.stdin.on("error",()=>{}),o.stdin.end(`${JSON.stringify(e)}
|
|
402
|
+
`)})}};function TD(t){let e=t.trim().split(/\s+/).filter(n=>n!=="");if(e.length===0)throw new Error("the credential helper command is empty");return e}function Y0(t,e){let n=e.code,r="";return n==="ENOENT"&&(r=" (not found: give its path, or put it on PATH)"),n==="EINVAL"&&process.platform==="win32"&&(r=" (a .cmd or .bat file cannot run without a shell: configure an executable, e.g. `node path/to/helper.js`)"),new dt(`${t} could not be started: ${e.message}${r}`)}function zd(){return ID(RD(),".kanonak","config.json")}function Yd(t){if(!OD(t))return;let e;try{e=JSON.parse(LD(t,"utf-8"))}catch(n){throw new Error(`${t} is not valid JSON: ${n.message}`)}if(typeof e!="object"||e===null||Array.isArray(e))throw new Error(`${t} must hold a JSON object`);return e}var G0="KANONAK_CREDENTIAL_HELPER";function gS(t={}){let e=t.env??process.env,n=t.configPath??zd(),r=MD(e,n);if(r){let s=Object.keys(e).filter(i=>(i===Ba||i.startsWith(`${Ba}_`))&&(e[i]??"").trim()!=="").sort();if(s.length>0)throw new Error(`A credential helper is configured (${r.source}: ${r.command}) and so is ${s.join(", ")}. Configure one or the other.`);return new PD({command:r.command,interactive:t.interactive??!1})}let a={env:e};return t.discovery&&(a.discovery=t.discovery),new $y(a)}function MD(t,e){let n=(t[G0]??"").trim();if(n)return{command:n,source:G0};let r=Yd(e)?.credentialHelper;if(r!==void 0){if(typeof r!="string"||r.trim()==="")throw new Error(`"credentialHelper" in ${e} must be a non-empty command line`);return{command:r.trim(),source:e}}}var J0="KANONAK_PACKAGE_URL_TEMPLATE",X0="KANONAK_TEMPLATE_TRUSTED_PUBLISHERS";function yS(t={}){let e=t.env??process.env,n=t.configPath??zd(),r=Yd(n)?.packageUrlTemplates,a=r===void 0?{}:{..._u(r,"packageUrlTemplates",n)},s=(e[J0]??"").trim();return s&&(a[Vr]=Cu(s,J0,!0)),Object.keys(a).length>0?Object.freeze(a):void 0}function kS(t={}){let e=t.env??process.env,n=t.configPath??zd(),r=Yd(n)?.templateTrustedPublishers,a=new Set(r===void 0?[]:ju(r,"templateTrustedPublishers",n)),s=(e[X0]??"").split(",").map(i=>i.trim()).filter(i=>i.length>0);for(let i of ju(s,X0))a.add(i);return a.size>0?Object.freeze([...a]):void 0}var Ud=64;async function bS(t){let{documents:e,publisherIndex:n,readCached:r}=t,a=t.parser??new me,s=new Set(e.map(l=>wS(l)).filter(l=>l!==void 0)),i=new Map,o=new Map;for(let l=0;l<Ud;l++){let c=Bd(e,s,o,i),u=new Map;for(let p of c.values()){let f=await FD(p,n);u.set(p.key,f.version);let h=`${p.key}@${f.version}`;i.has(h)||i.set(h,await VD(p,f,n,r,a))}if(KD(o,u))return qD(u,i,s);o=u}throw new Error(`The import ranges did not settle after ${Ud} rounds: each choice changed the ranges of another.`)}async function vS(t){let{documents:e,lock:n,publisherIndex:r,readCached:a}=t,s=t.parser??new me,i=new Set(e.map(p=>wS(p)).filter(p=>p!==void 0)),o=new Map(Object.entries(n.packages).map(([p,f])=>[p,f.version])),l=new Map,c=Bd(e,i,o,l);for(let p=0;p<Ud;p++){let f=[...c.values()].filter(h=>n.packages[h.key]&&!l.has(`${h.key}@${n.packages[h.key].version}`));if(f.length===0)break;for(let h of f){let g=n.packages[h.key];l.set(`${h.key}@${g.version}`,{document:await DD(h,g,r,a,s)})}c=Bd(e,i,o,l)}let u=[];for(let p of[...c.values()].sort((f,h)=>f.key<h.key?-1:1)){let f=n.packages[p.key];if(!f){u.push(`${p.key} has no pin, though ${uc(p.ranges)} needs one.`);continue}let h=Lt(f.version,`The version kanonak.lock pins for ${p.key}`),g=p.ranges.filter(m=>!on(h,m.import_));g.length>0&&u.push(`${p.key} is pinned at ${f.version}, which ${uc(g)} doesn't admit.`)}for(let p of Object.keys(n.packages).sort())c.has(p)||u.push(`${p}@${n.packages[p].version} is pinned, but no package here reaches it.`);return u}async function DD(t,e,n,r,a){let s=`${t.key}@${e.version}`,i=r?.(t.publisher,t.packageName,e.version)??null,o;i!==null?(await qr(s,i,e.integrity,"the cache"),o=i):{content:o}=await n.fetchLockedSource(t.publisher,t.packageName,e);let l=a.parse(o);return gr(l,t.publisher,t.packageName,e.version),l}function wS(t){let e=t.metadata.namespace_;return e?`${e.publisher}/${e.package_}`:void 0}function $S(t){let e=[];for(let[n,r]of Object.entries(t.metadata.imports??{}))for(let a of r)a.mode!=="link"&&e.push({publisher:n,import_:a});return e}function Bd(t,e,n,r){let a=new Map,s=t.map(o=>({document:o,importer:o.metadata.namespace_?.toString()??"(a document with no package)"})),i=new Set;for(;s.length>0;){let{document:o,importer:l}=s.shift();for(let{publisher:c,import_:u}of $S(o)){let p=`${c}/${u.packageName}`;if(e.has(p))continue;let f=a.get(p);f||a.set(p,f={key:p,publisher:c,packageName:u.packageName,ranges:[]}),f.ranges.push({import_:u,importer:l});let h=n.get(p),g=h?`${p}@${h}`:void 0;if(!g||i.has(g))continue;i.add(g);let m=r.get(g);m&&s.push({document:m.document,importer:g})}}return a}async function FD(t,e){let{publisher:n,packageName:r,ranges:a}=t,s=a.map(c=>c.import_),i=await e.getLockEntry(n,r),o=i&&Lu(n,r,i,s);if(o)return{version:o.version,locked:{version:o.version,resolved:o.resolved,integrity:o.integrity}};let l=s.find(c=>c.versionOperator===we.Exact);if(l&&s.every(c=>on(l.version,c)))return{version:ee(l.version)};throw new Error(i?`No version ${n}'s kanonak.lock offers for ${r} is admitted by every range on it: ${uc(a)}. It offers ${UD(i)}.`:`${n}'s kanonak.lock gives ${r} no entry, so the newest version within ${uc(a)} can't be known. An \`=\` import resolves by the version's own URL without one.`)}async function VD(t,e,n,r,a){let{key:s,publisher:i,packageName:o}=t,{version:l,locked:c}=e,u=`${s}@${l}`,p=r?.(i,o,l)??null,f,h;c?p!==null?(await qr(u,p,c.integrity,"the cache"),f=n.lockedSourceUrl(i,o,c),h=p):{url:f,content:h}=await n.fetchLockedSource(i,o,c):p!==null?(f=await n.getPackageUrl(i,o,l),h=p):{url:f,content:h}=await n.fetchPackageSource(i,o,l);let g=a.parse(h);gr(g,i,o,l);let m=c?c.integrity:await xo(h);return{target:t,entry:{version:l,resolved:f,integrity:m,dependencies:{}},document:g,source:h}}function qD(t,e,n){let r={},a=[];for(let s of[...t.keys()].sort()){let i=t.get(s),{target:o,entry:l,document:c,source:u}=e.get(`${s}@${i}`),p={};for(let{publisher:f,import_:h}of $S(c)){let g=`${f}/${h.packageName}`;n.has(g)||(p[g]=t.get(g))}r[s]={...l,dependencies:Object.fromEntries(Object.entries(p).sort(([f],[h])=>f<h?-1:1))},a.push({publisher:o.publisher,packageName:o.packageName,version:i,source:u})}return{lock:{version:"1",lastUpdated:"",packages:r},pins:a}}function KD(t,e){return t.size===e.size&&[...t].every(([n,r])=>e.get(n)===r)}function uc(t){return t.map(e=>`${Ft(e.import_.versionOperator)} ${ee(e.import_.version)} (from ${e.importer})`).join(", ")}function UD(t){let e=t.lines??[];return e.length>0?`${t.version}, which it pins, and the lines ${e.map(n=>n.version).join(", ")}`:`only ${t.version}, which it pins, and lists no lines`}async function SS(t){let{document:e,repository:n}=t,r=t.resolvedUrl??((c,u,p)=>Ks(wo,c,u,p)),a=e.metadata?.namespace_;if(!a?.version)throw new Error("A release lock is recorded for a version, and this document declares no package version.");let s=a.toString(),i=[],o=[];if(await rr([e],n,{onDocument:c=>i.push(c),onUnresolvedEdge:c=>o.push(`${c.publisher}/${c.packageName} ${c.constraint} (imported by ${c.fromNamespace})`)}),o.length>0)throw new Error(`${s}'s release lock can't be recorded, since no version held answers ${o.join(", ")}.`);let l={};for(let c of i){let u=c.metadata.namespace_,p=`${u.publisher}/${u.package_}`,f=ee(u.version),h=l[p];if(h){if(h.version===f)continue;throw new Error(`${s}'s closure holds ${p} at both ${h.version} and ${f}, and a lock pins one version of each package.`)}let g=await n.getDocumentContentAsync(u.toString());if(g===null)throw new Error(`${s}'s release lock can't be recorded: the bytes of ${u.toString()} aren't held, so their sha256 is unknown.`);let m={};for(let[y,v]of Object.entries(c.metadata.imports??{}))for(let k of v){if(it(k))continue;let w=await n.getHighestCompatibleVersionAsync(y,k);m[`${y}/${k.packageName}`]=ee(w.metadata.namespace_.version)}l[p]={version:f,resolved:r(u.publisher,u.package_,f),integrity:await xo(g),dependencies:Object.fromEntries(Object.entries(m).sort(([y],[v])=>y.localeCompare(v)))}}return{version:"1",lastUpdated:"",packages:l}}var BD={publisher:"kanonak.org",package_:"core-rdf",name:"domain"},HD={publisher:"kanonak.org",package_:"core-rdf",name:"range"},WD={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"};function AS(t,e){return t.major===e.major&&(t.major>=1||t.minor===e.minor)}function xS(t,e){return t.filter(n=>AS(n,e)&&_e(n,e)<0).sort((n,r)=>_e(r,n))[0]}function ES(t,e,n){let r=Q0(e),a=Q0(n);if(r.publisher!==a.publisher||r.package_!==a.package_||!AS(r.version,a.version)||_e(r.version,a.version)>=0)throw new Error(`${a.text} is compared only with an older version of its own line, and ${r.text} isn't one.`);let s=[],i={was:Z0(t,r.text),now:Z0(t,a.text)};for(let[u,p]of i.was){let f=i.now.get(u);if(!f){s.push({kind:"removed",term:u,message:`${a.text} removes ${u}, which ${r.text} defines.`});continue}if(!tt.isAnyPropertyType(p))continue;let h=jr(Xn(p)),g=jr(Xn(f));h!==g&&s.push({kind:"kind-changed",term:u,message:`${a.text} changes ${u}'s kind from ${h} to ${g}.`});for(let[m,y,v]of[["domain-changed","domain",BD],["range-changed","range",HD]]){let k=Fe(p,v),w=Fe(f,v);jr(k)!==jr(w)&&(eS(r.version,a.version)?s.push({kind:m,term:u,message:`${a.text} is a patch, and changes ${u}'s ${y} from ${jr(k)||"(none)"} to ${jr(w)||"(none)"}.`}):YD(t,a,k,w)||s.push({kind:m,term:u,message:`${a.text} narrows ${u}'s ${y} from ${jr(k)||"(none)"} to ${jr(w)||"(none)"}.`}))}}if(eS(r.version,a.version))for(let u of i.now.keys())i.was.has(u)||s.push({kind:"patch-adds-term",term:u,message:`${a.text} is a patch, and adds ${u}. A new term is a minor version.`});let o=kd([...t]),l={was:rS(o,r),now:rS(o,a)},c=u=>u!==void 0&&u.publisher===a.publisher&&u.package_===a.package_&&!i.was.has(u.name);for(let[u,p]of l.now){let f=l.was.get(u);if(!f&&c(p.targetClass))continue;let h=f??{...jS,...NS(p.path,p.targetClass,l.was,c)},g=!f&&h.maxCount===0;if(p.minCount>h.minCount&&s.push({kind:"min-count-raised",term:u,message:`${a.text} raises ${u}'s minCount from ${h.minCount} to ${p.minCount}.`}),g)continue;p.maxCount<h.maxCount&&s.push({kind:"max-count-lowered",term:u,message:`${a.text} lowers ${u}'s maxCount from ${tS(h.maxCount)} to ${p.maxCount}.`});let m=p.allowed&&(h.allowed?[...h.allowed].filter(y=>!p.allowed.has(y)):void 0);p.allowed&&(!h.allowed||m.length>0)&&s.push({kind:"in-narrowed",term:u,message:h.allowed?`${a.text} narrows ${u}'s in, which no longer allows ${m.join(", ")}.`:`${a.text} narrows ${u} to the values of its new in: ${[...p.allowed].join(", ")}.`});for(let y of p.classes)h.classes.some(v=>zD(t,a,v,y))||s.push({kind:"class-narrowed",term:u,message:h.classes.length>0?`${a.text} narrows ${u}'s class from ${jr(h.classes)} to ${T(y)}.`:`${a.text} requires ${u}'s values to be ${T(y)}.`});for(let y of p.patterns)h.patterns.has(y)||s.push({kind:"pattern-added",term:u,message:h.patterns.size>0?`${a.text} changes ${u}'s pattern from ${[...h.patterns].join(", ")} to ${y}.`:`${a.text} adds the pattern ${y} to ${u}.`});p.minLength>h.minLength&&s.push({kind:"min-length-raised",term:u,message:`${a.text} raises ${u}'s minLength from ${h.minLength} to ${p.minLength}.`}),p.maxLength<h.maxLength&&s.push({kind:"max-length-lowered",term:u,message:`${a.text} lowers ${u}'s maxLength from ${tS(h.maxLength)} to ${p.maxLength}.`}),p.lower&&(!h.lower||_S(p.lower,h.lower))&&s.push({kind:"lower-bound-raised",term:u,message:`${a.text} raises ${u}'s lower bound from ${ic(h.lower,"min")} to ${ic(p.lower,"min")}.`}),p.upper&&(!h.upper||CS(p.upper,h.upper))&&s.push({kind:"upper-bound-lowered",term:u,message:`${a.text} lowers ${u}'s upper bound from ${ic(h.upper,"max")} to ${ic(p.upper,"max")}.`})}return s}function zD(t,e,n,r){let a=n.publisher===e.publisher&&n.package_===e.package_?new rt(n.publisher,n.package_,n.name,e.version):n;return ot([...t],a).some(s=>T(s)===T(r))}function _S(t,e){return t.value>e.value||t.value===e.value&&t.exclusive&&!e.exclusive}function CS(t,e){return t.value<e.value||t.value===e.value&&t.exclusive&&!e.exclusive}function ic(t,e){return t?`${e}${t.exclusive?"Exclusive":"Inclusive"} ${t.value}`:"none"}function Q0(t){let e=t.metadata.namespace_;if(!e?.version)throw new Error("A version is compared only when its document states a publisher, a package and a version.");return{publisher:e.publisher,package_:e.package_,version:e.version,text:e.toString()}}function Z0(t,e){let n=new Map;for(let r of t)r instanceof V&&r.namespace===e&&n.set(r.name,r);return n}function YD(t,e,n,r){let a=new Set(r.map(T));return a.size===0||a.has(T(WD))?!0:n.every(s=>{let i=s.publisher===e.publisher&&s.package_===e.package_?new rt(s.publisher,s.package_,s.name,e.version):s;return ot([...t],i).some(o=>a.has(T(o)))})}function jr(t){return[...new Set(t.map(T))].sort().join(", ")}function eS(t,e){return e.major>=1&&e.major===t.major&&e.minor===t.minor}function tS(t){return t===1/0?"unbounded":String(t)}var jS={minCount:0,maxCount:1/0,allowed:void 0,classes:[],patterns:new Set,minLength:0,maxLength:1/0,lower:void 0,upper:void 0};function NS(t,e,n,r){let a=n.get(`${T(e)}.${bn(t,T)}`);if(a)return a;switch(t.kind){case"predicate":return r(t.property)?{minCount:0,maxCount:0}:{minCount:0,maxCount:1/0};case"inverse":return{minCount:0,maxCount:1/0};case"alternative":{let s=t.paths.map(i=>NS(i,e,n,r));return{minCount:Math.max(...s.map(i=>i.minCount)),maxCount:s.reduce((i,o)=>i+o.maxCount,0)}}}}function oc(t,e){return t===void 0?void 0:{value:t,exclusive:e}}function nS(t,e){let n;for(let r of t)r&&(!n||e(r,n))&&(n=r);return n}function rS(t,e){let n=new Map;for(let r of t){let a=r.uri,s=r.targetClass;if(!a||!s||a.publisher!==e.publisher||a.package_!==e.package_||!a.version||!Sn(a.version,e.version))continue;let i=[...r.properties.map(o=>({path:{kind:"predicate",property:o.path},c:o})),...(r.pathExpressionProperties??[]).map(o=>({path:o.path,c:o}))];for(let{path:o,c:l}of i){let c=`${T(s)}.${bn(o,T)}`,u=l.inValues||l.inRefs?new Set([...(l.inValues??[]).map(String),...(l.inRefs??[]).map(T)]):void 0,p=n.get(c)??jS;n.set(c,{targetClass:s,path:o,minCount:Math.max(p.minCount,l.minCount??0),maxCount:Math.min(p.maxCount,l.maxCount??1/0),allowed:p.allowed&&u?new Set([...p.allowed].filter(f=>u.has(f))):p.allowed??u,classes:l.classRef?[...p.classes,l.classRef]:p.classes,patterns:l.pattern?new Set([...p.patterns,`/${l.pattern.regex}/${l.pattern.flags??""}`]):p.patterns,minLength:Math.max(p.minLength,l.minLength??0),maxLength:Math.min(p.maxLength,l.maxLength??1/0),lower:nS([p.lower,oc(l.minInclusive,!1),oc(l.minExclusive,!0)],_S),upper:nS([p.upper,oc(l.maxInclusive,!1),oc(l.maxExclusive,!0)],CS)})}}return n}var Ki=Ft(we.Major);async function PS(t){let{sources:e,publisherIndex:n,repository:r}=t,a=t.parser??new me,s=JD(e),i=a2(t.packages,s),o=XD(e),l=s2(t.sourcePublishers??[],s),c=new Map,u=(y,v)=>{if(l.has(y))return Promise.resolve(null);let k=`${y}/${v}`,w=c.get(k);return w||c.set(k,w=n.getLockEntry(y,v)),w},p=new Map,f=async(y,v)=>{let k=`${y}/${v}`,w=p.get(k);return[...o.get(k)??[],...w?[w]:[],...TS(y,v,await u(y,v))]},h=new Map,g=new Map,m=[];for(let y=0;y<=i.length;y++){let v=[];for(let S of i)v.push({head:S,...await t2(S,f,a,l)});if(y===0){let S=await QD(r,a);for(let A of i){let C=await ZD(A,S,r,a);h.set(A.key,C.missing),g.set(A.key,C.selfReferences),m.push(...C.notices)}}let k=S=>S.raises.length>0||h.get(S.head.key).length>0,w=v.filter(S=>k(S)&&!p.has(S.head.key));if(w.length===0){let S=[];for(let A of v){if(!k(A))continue;i2(A.head,await u(A.head.publisher,A.head.packageName));let C=[];for(let{home:N,terms:_}of h.get(A.head.key)){let B=OS(await f(N.publisher,N.packageName),`${A.head.key} names ${_.join(", ")}, from ${N.key}`);C.push({publisher:N.publisher,packageName:N.packageName,operator:Ki,version:ee(B),terms:_})}S.push(o2(A.head,A.raises,C,g.get(A.head.key),p.get(A.head.key),a))}return{upgrades:S,notices:[...v.flatMap(A=>A.notices),...m]}}for(let{head:S}of w)p.set(S.key,GD(S.version))}throw new Error(`Upgrading the ${i.length} package(s) here did not settle: each new version raised another's floor again.`)}function GD(t){return t.major>=1?Ln(t.major,t.minor+1,0):Ln(0,t.minor,t.patch+1)}function JD(t){let e=new Map;for(let n of t){let r=n.document.metadata.namespace_;if(!r?.version)throw new Error(`${n.path} states no package version, so it can't be upgraded.`);let a=`${r.publisher}/${r.package_}`,s=e.get(a);if(s&&_e(s.version,r.version)===0)throw new Error(`${s.source.path} and ${n.path} are both ${a}@${ee(r.version)}.`);(!s||_e(r.version,s.version)>0)&&e.set(a,{key:a,publisher:r.publisher,packageName:r.package_,version:r.version,source:n})}return[...e.values()]}function XD(t){let e=new Map;for(let{document:n}of t){let r=n.metadata.namespace_,a=`${r.publisher}/${r.package_}`;e.set(a,[...e.get(a)??[],r.version])}return e}function TS(t,e,n){return n?[n,...n.lines??[]].map(r=>Lt(r.version,`A version ${t}'s kanonak.lock offers for ${t}/${e}`)):[]}function OS(t,e){if(t.length===0)throw new Error(`${e}, whose versions can't be known: this folder holds none and its publisher's kanonak.lock gives it no entry.`);return t.reduce((n,r)=>_e(n,r)>=0?n:r)}async function LS(t,e,n){let r=[],a=[],s=await rr([t],e,{onDocument:i=>r.push(i),onUnresolvedEdge:i=>a.push(i)});if(a.length>0)throw new Error(`${n}, and ${a.map(i=>`${i.fromNamespace}'s import of ${i.publisher}/${i.packageName} ${i.constraint}`).join(", ")} doesn't resolve.`);return{keys:s,documents:r}}async function QD(t,e){let n=[];for(let{publisher:r,package_:a}of da()){let s=`${r}/${a}`,i=e.buildImport(a,Ft(we.Any),"0.0.0",r),o=await t.getHighestCompatibleVersionAsync(r,i);if(!o)throw new Error(`kanonak upgrade reads ${s}, a built-in home, to find which packages name its terms, and no version of it can be read.`);let{keys:l}=await LS(o,t,`kanonak upgrade reads ${s}'s import closure to keep a home import from making a cycle`);n.push({key:s,publisher:r,packageName:a,document:o,closure:l})}return n}async function ZD(t,e,n,r){let a=`${t.key}@${ee(t.version)}`,s=t.source.document.metadata.namespace_.toString(),i=new Set(Object.entries(t.source.document.metadata.imports??{}).flatMap(([v,k])=>k.map(w=>`${v}/${w.packageName}`))),o=r.parse(t.source.content),l=o.metadata.imports??(o.metadata.imports={});for(let v of e.filter(k=>!i.has(k.key)&&k.key!==t.key))(l[v.publisher]??=[]).push(r.buildImport(v.packageName,Ki,ee(v.document.metadata.namespace_.version),v.publisher));let{documents:c}=await LS(t.source.document,n,`kanonak upgrade reads ${a}'s import closure to find which built-in terms it names`),u=new Kr(r);await u.saveDocumentAsync(o,s);let p=new Set([s]);for(let v of[...c,...e.map(k=>k.document)]){let k=v.metadata.namespace_.toString();p.has(k)||(p.add(k),await u.saveDocumentAsync(v,k))}let f={};await new je(r).parseKanonaks(u,f);let h=(f.authored??[]).filter(v=>v instanceof V&&v.sourceDoc===s),g=new Map;for(let{uri:v}of rw(h,Vf.fromContent(t.source.content))){let k=tr(v.name);if(!k||k.publisher!==v.publisher||k.package_!==v.package_)continue;let w=`${k.publisher}/${k.package_}`;g.set(w,(g.get(w)??new Set).add(v.name))}let m=[],y=[];for(let v of e){let k=[...g.get(v.key)??[]].sort();k.length===0||v.key===t.key||i.has(v.key)||(v.closure.has(t.key)?y.push({importer:a,message:`names ${k.join(", ")}, from ${v.key}, which depends on it, so it doesn't import it: that would make an import cycle`}):m.push({home:v,terms:k}))}return{missing:m,notices:y,selfReferences:e2(h,t)}}function e2(t,e){let n=ee(e.version),r=[],a=(o,l)=>{let c=o.predicate?.subject;return!!c&&c.publisher===l.publisher&&c.package_===l.package_&&c.name===l.name},s=(o,l)=>o.find(c=>c instanceof Ce&&a(c,l)),i=(o,l)=>{let c=s(o,$.version);c?.object===n&&c.sourceKey!==void 0&&s(o,$.publisher)?.object===e.publisher&&s(o,$.package)?.object===e.packageName&&r.push([...l,c.sourceKey]);for(let u of o){if(!(u instanceof Gn)||u.sourceKey===void 0)continue;let p=[...l,u.sourceKey];if(u instanceof Ae&&u.object&&i(u.object.statement,p),u instanceof he)for(let f of u.object??[])f instanceof te&&f.sourceKey!==void 0&&i(f.statement,[...p,f.sourceKey])}};for(let o of t)o instanceof V&&typeof o.sourceKey=="string"&&i(o.statement,[o.sourceKey]);return r}async function t2(t,e,n,r){let a=`${t.key}@${ee(t.version)}`,s=[],i=[];for(let[o,l]of Object.entries(t.source.document.metadata.imports??{}))for(let[c,u]of l.entries()){if(u.mode==="link")continue;let p=await e(o,u.packageName),f=Ft(u.versionOperator),h=`${o}/${u.packageName} ${f} ${ee(u.version)}`,g=u.versionOperator===we.Major||u.versionOperator===we.Compatible;if(r.has(o)&&(p.length===0||g&&!Ra(p,v=>v,u))){let v=p.length===0?"no version of it":`only ${Gd(p)}`;i.push({importer:a,message:`imports ${h}: left as it's written, since this folder, ${o}'s source, holds ${v}, and ${o}'s kanonak.lock isn't read`});continue}if(p.length===0){let v=`this folder holds no version of it and ${o}'s kanonak.lock gives it no entry`;if(g)throw new Error(`${a} imports ${h}, but ${v}, so the newest version its range admits can't be known.`);i.push({importer:a,message:`imports ${h}: left as it's written, and whether anything is newer can't be known: ${v}`});continue}let m=g?n2(u,p,a,h):void 0;m&&s.push({publisher:o,packageName:u.packageName,operator:f,index:c,from:ee(u.version),to:ee(m)});let y=r2(o,u,p,n,m??u.version);y&&i.push({importer:a,message:`imports ${h}: ${y}`})}return{raises:s,notices:i}}function n2(t,e,n,r){let a=Ra(e,s=>s,t);if(!a)throw new Error(`${n} imports ${r}, which admits none of the versions this folder holds or its publisher's lock offers: ${Gd(e)}.`);return _e(a,t.version)>0?a:void 0}function r2(t,e,n,r,a){let s=r.buildImport(e.packageName,Ki,ee(e.version),t),i=Ra(n,c=>c,s),o=OS(n,`${t}/${e.packageName}`);if(e.versionOperator===we.Any)return _e(o,e.version)>0?`left as it's written, and ${ee(o)} is the newest`:void 0;let l=[];return i&&_e(i,a)>0&&l.push(`left at ${ee(a)}, and ${ee(i)} is the newest \`${Ki} ${ee(e.version)}\` admits`),!on(o,s)&&_e(o,e.version)>0&&l.push(`${ee(o)} is out, beyond what \`${Ki} ${ee(e.version)}\` admits, and moving to it is a breaking change made by hand`),l.length>0?l.join("; "):void 0}function a2(t,e){if(t===void 0)return[...e];let n=new Map(e.map(a=>[a.key,a])),r=t.filter(a=>!n.has(a));if(r.length>0)throw new Error(`${r.join(", ")} ${r.length===1?"names no package":"name no packages"} in this folder, so ${r.length===1?"it":"they"} can't be upgraded here. Name each as publisher/package, as one of the ${n.size} package(s) here: ${[...n.keys()].sort().join(", ")}.`);return[...new Set(t)].map(a=>n.get(a))}function s2(t,e){let n=new Set(e.map(a=>a.publisher)),r=t.filter(a=>!n.has(a));if(r.length>0)throw new Error(`This folder is named the source of ${r.join(", ")}, but it holds no package of ${r.length===1?"that publisher":"those publishers"}: it holds packages of ${[...n].sort().join(", ")}.`);return new Set(t)}function i2(t,e){let n=TS(t.publisher,t.packageName,e).filter(r=>_e(r,t.version)>0);if(n.length>0)throw new Error(`This folder's newest ${t.key} is ${ee(t.version)}, but ${t.publisher}'s kanonak.lock offers ${Gd(n)}. Upgrade it in the folder that holds its newest version.`)}function Gd(t){return[...t].sort((e,n)=>_e(n,e)).map(ee).filter((e,n,r)=>r.indexOf(e)===n).join(", ")}function o2(t,e,n,r,a,s){let{source:i,key:o,packageName:l}=t,c=ee(t.version),u=new c2(i),p=Vf.fromContent(i.content),f=p.getImportPackages(l),h=i.document.metadata.imports??{},g=[];for(let k of e){let w=f.filter(C=>C.publisher===k.publisher),S=h[k.publisher]??[];if(w.length!==S.length||w.some((C,N)=>C.package_!==S[N].packageName))throw new Error(`${i.path} states an import of ${k.publisher} in a form kanonak upgrade doesn't edit: it edits a \`version:\` under a publisher's \`packages:\`.`);let A=w[k.index].versionPosition;if(!A)throw new Error(`${i.path} states no \`version:\` for its import of ${k.publisher}/${k.packageName}.`);g.push(u.replaceScalar(A,k.from,k.to))}let m=p.getPropertyValuePosition(l,"version");if(!m)throw new Error(`${i.path} states no \`version:\` for ${o}.`);g.push(u.replaceScalar(m,c,ee(a)));for(let k of r){let w=p.getNodeValuePosition(k);if(!w)throw new Error(`${i.path} states ${k.join(".")}, a reference to its own version, where kanonak upgrade can't find it in the text.`);g.push(u.replaceScalar(w,c,ee(a)))}for(let k of[...new Set(n.map(w=>w.publisher))])g.push(l2(u,p,l,k,n.filter(w=>w.publisher===k)));let y=u.apply(g);if(y.includes(`${o}@${c}`))throw new Error(`${i.path} names ${o}@${c}, its own version, which its next version would still name. Edit it by hand first.`);u2(i,y,e,n,a,s);let v=e.map(({index:k,...w})=>w);return{source:i,publisher:t.publisher,packageName:t.packageName,from:c,to:ee(a),raises:v,homes:[...n],selfReferences:r.length,content:y}}function l2(t,e,n,r,a){let s=(p,f,h)=>f?`${" ".repeat(p)}- { package: ${h.packageName}, match: ${h.operator}, version: ${h.version} }
|
|
403
403
|
`:`${" ".repeat(p)}- package: ${h.packageName}
|
|
404
404
|
${" ".repeat(p+2)}match: ${h.operator}
|
|
405
405
|
${" ".repeat(p+2)}version: ${h.version}
|
|
@@ -408,63 +408,63 @@ ${" ".repeat(p+2)}packages:
|
|
|
408
408
|
${a.map(h=>s(p+4,!1,h)).join("")}`;return{offset:t.lineStart(o.line),remove:"",insert:f}}let l=e.getPropertyPosition(n,"version");if(!l)throw new Error(`${t.path} states no \`version:\` for its package, so kanonak upgrade can't place its imports.`);let c=l.column,u=`${" ".repeat(c)}imports:
|
|
409
409
|
${" ".repeat(c+2)}- publisher: ${r}
|
|
410
410
|
${" ".repeat(c+4)}packages:
|
|
411
|
-
${a.map(p=>s(c+6,!1,p)).join("")}`;return{offset:t.lineStart(l.line+1),remove:"",insert:u}}var
|
|
412
|
-
`&&this.lineStarts.push(e+1)}source;lineStarts=[0];get path(){return this.source.path}lineStart(t){let e=this.lineStarts[t];if(e===void 0)throw new Error(`${this.source.path} has no line ${t+1} for kanonak upgrade to write at.`);return e}charAt(t){return this.source.content[this.lineStart(t.line)+t.column]??""}itemDash(t){let e=this.source.content.slice(this.lineStart(t.line),this.lineStart(t.line)+t.column);if(t.column<2||e.slice(0,t.column-2).trim()!==""||e.slice(t.column-2)!=="- ")throw new Error(`${this.source.path} line ${t.line+1} isn't a \`- \` item kanonak upgrade can write another beside.`);return t.column-2}replaceScalar(t,e,n){let r=this.lineStart(t.line)+t.column,a=this.source.content[r],s=a==='"'||a==="'"?r+1:r;if(!this.source.content.startsWith(e,s))throw new Error(`${this.source.path} line ${t.line+1} doesn't state ${e} where its version is, so kanonak upgrade wrote nothing.`);return{offset:s,remove:e,insert:n}}apply(t){let e=this.source.content;for(let n of[...t].sort((r,a)=>a.offset-r.offset))e=e.slice(0,n.offset)+n.insert+e.slice(n.offset+n.remove.length);return e}};function
|
|
411
|
+
${a.map(p=>s(c+6,!1,p)).join("")}`;return{offset:t.lineStart(l.line+1),remove:"",insert:u}}var c2=class{constructor(t){this.source=t;for(let e=0;e<t.content.length;e++)t.content[e]===`
|
|
412
|
+
`&&this.lineStarts.push(e+1)}source;lineStarts=[0];get path(){return this.source.path}lineStart(t){let e=this.lineStarts[t];if(e===void 0)throw new Error(`${this.source.path} has no line ${t+1} for kanonak upgrade to write at.`);return e}charAt(t){return this.source.content[this.lineStart(t.line)+t.column]??""}itemDash(t){let e=this.source.content.slice(this.lineStart(t.line),this.lineStart(t.line)+t.column);if(t.column<2||e.slice(0,t.column-2).trim()!==""||e.slice(t.column-2)!=="- ")throw new Error(`${this.source.path} line ${t.line+1} isn't a \`- \` item kanonak upgrade can write another beside.`);return t.column-2}replaceScalar(t,e,n){let r=this.lineStart(t.line)+t.column,a=this.source.content[r],s=a==='"'||a==="'"?r+1:r;if(!this.source.content.startsWith(e,s))throw new Error(`${this.source.path} line ${t.line+1} doesn't state ${e} where its version is, so kanonak upgrade wrote nothing.`);return{offset:s,remove:e,insert:n}}apply(t){let e=this.source.content;for(let n of[...t].sort((r,a)=>a.offset-r.offset))e=e.slice(0,n.offset)+n.insert+e.slice(n.offset+n.remove.length);return e}};function u2(t,e,n,r,a,s){let i=s.parse(e),o=f=>{throw new Error(`kanonak upgrade's edit of ${t.path} ${f}, so it wrote nothing.`)},l=i.metadata.namespace_?.version;(!l||_e(l,a)!==0)&&o(`doesn't state ${ee(a)} as its version`);let c=(f,h=ee(f.version))=>`${f.packageName} ${Ft(f.versionOperator)} ${h}${f.mode?` ${f.mode}`:""}`,u=t.document.metadata.imports??{},p=i.metadata.imports??{};for(let f of new Set([...Object.keys(u),...r.map(h=>h.publisher)])){let h=[...r.filter(m=>m.publisher===f).map(m=>`${m.packageName} ${m.operator} ${m.version}`),...(u[f]??[]).map((m,y)=>c(m,n.find(v=>v.publisher===f&&v.index===y)?.to))],g=(p[f]??[]).map(m=>c(m));g.join(`
|
|
413
413
|
`)!==h.join(`
|
|
414
|
-
`)&&o(`states ${f}'s imports as ${g.join(", ")}, not ${h.join(", ")}`)}}var
|
|
415
|
-
`).some(a=>a.trim()===n||a.trim()===n+"/"))return;
|
|
414
|
+
`)&&o(`states ${f}'s imports as ${g.join(", ")}, not ${h.join(", ")}`)}}var zn="kanonak.org",Nr="view",aS="core-kanonak",p2={publisher:zn,package_:Nr,name:"rootView"},f2={publisher:zn,package_:Nr,name:"bind"},d2={publisher:zn,package_:Nr,name:"produces"},h2={publisher:zn,package_:Nr,name:"projections"},m2={publisher:zn,package_:Nr,name:"where"},g2={publisher:zn,package_:Nr,name:"value"},y2={publisher:zn,package_:Nr,name:"as"},RS=class{constructor(t,e=new me){this.repository=t,this.parser=e,this.objectParser=new je(this.parser),this.builder=new Iy(this.repository,this.parser,this.objectParser)}repository;parser;objectParser;builder;async materialize(t,e={}){let n=await this.objectParser.parseKanonaks(this.repository),r=this.resolveView(n,t),a=be(r,f2);if(!a)throw new Error(`View ${r.namespace}/${r.name} declares no view.bind; cannot materialize.`);let s=be(r,d2);if(!s)throw new Error(`View ${r.namespace}/${r.name} is a selection view (no view.produces). In-graph materialization of selection views is not yet supported \u2014 declare a view.produces output class to reshape the result.`);let i=k2(r),o=sS(n,zn,aS),l=sS(n,zn,Nr),c=this.builder.imports(),u=c.ensure(zn,aS,o,"ck"),p=c.ensure(zn,Nr,l,"v"),f=c.ref(s),h=new Ri(this.repository,this.parser,this.objectParser),g=new cs(h,n),m=this.readProjections(n,r),y=w2(r,m2),v=this.findInstances(n,a,await this.reason(e)),k={},w=new Set;for(let C of v){if(!await this.passesWhere(g,n,y,C))continue;let N={type:f};for(let B of m){let X=await this.evaluateValue(g,n,B.value,C),pe=this.builder.serializeValue(IS(X),c);pe!==void 0&&(N[c.ref(B.as)]=pe)}let _=xe(C);_&&(N[`${p}.derivedFrom`]=c.ref(_)),k[this.rowName(C,w)]=N}let S={};e.resolvedAt&&(S[`${u}.resolvedAt`]=e.resolvedAt),e.invocationId&&(S[`${u}.id`]=e.invocationId);let A=await this.builder.buildContentAddressed({publisher:i,book:c,body:k,contentHashProperty:`${u}.contentHash`,header:S});return{yaml:A.yaml,contentHash:A.contentHash,packageName:A.packageName,publisher:A.publisher,rowCount:A.resourceCount}}resolveView(t,e){let n=ge(t,e);if(!n)throw new Error(`View ${e.publisher}/${e.package_}/${e.name} not found in the catalog.`);let r=be(n,p2);if(r){let a=ge(t,r);if(!a)throw new Error(`ViewPackage ${e.name} names rootView ${r.name}, which is not in the catalog.`);return a}return n}readProjections(t,e){let n=[];for(let r of hn(e,h2)){let a=r instanceof te?r:r instanceof D?ge(t,r.subject):void 0;if(!a)continue;let s=Vt(a,g2),i=be(a,y2);s&&i&&n.push({value:s,as:i})}return n}async reason(t){return new va({profile:t.reasoningProfile??"owl-rl-classification"}).reason(this.repository)}findInstances(t,e,n){let r=v2(t),a=[],s=new Set;for(let i of n.getInstancesOfClass(e)){if(s.has(i))continue;s.add(i);let o=r.get(i);o&&a.push(o)}return a.sort((i,o)=>{let l=In(xe(i)),c=In(xe(o));return l<c?-1:l>c?1:0}),a}async passesWhere(t,e,n,r){for(let a of n){let s=await this.evaluateValue(t,e,a,r);if(!$2(s))return!1}return!0}async evaluateValue(t,e,n,r){let a=Nn(n,"view-projection",{catalog:e,depth:0}),s=new Map([["input",r]]);return t.evaluate(a,s)}rowName(t,e){let n=Hu(t.name)||"row",r=n,a=2;for(;e.has(r);)r=`${n}-${a++}`;return e.add(r),r}};function IS(t){return Pn(t)?t.value:Array.isArray(t)?t.map(IS):t}function k2(t){let e=xe(t);if(!e)throw new Error(`Could not derive a publisher from view ${t.namespace}/${t.name}.`);return e.publisher}function sS(t,e,n){let r=b2(t,e,n);if(!r)throw new Error(`Package ${e}/${n} is not in the catalog; it must be importable to materialize a view.`);return r}function b2(t,e,n){let r;for(let a of t){if(!(a instanceof V))continue;let s=xe(a);!s||s.publisher!==e||s.package_!==n||!s.version||(!r||_e(s.version,r)>0)&&(r=s.version)}return r?ee(r):void 0}function v2(t){let e=new Map,n=new Map;for(let r of t){if(!(r instanceof V))continue;let a=xe(r);if(!a||!a.version)continue;let s=In(a),i=n.get(s);(!i||_e(a.version,i)>0)&&(n.set(s,a.version),e.set(s,r))}return e}function w2(t,e){let n=Vt(t,e);return n?[n]:hn(t,e).filter(r=>r instanceof te)}function $2(t){return t===!0?!0:t===!1||t===void 0||t===null?!1:typeof t=="string"?t.length>0:typeof t=="number"?t!==0:Pn(t)?t.value.length>0:Array.isArray(t)?t.length>0:!!t}import{existsSync as j2}from"fs";import{dirname as VS,join as N2,resolve as P2}from"path";import{mkdirSync as S2,readFileSync as MS,writeFileSync as DS,existsSync as Jd,appendFileSync as A2}from"fs";import{join as x2,dirname as E2,isAbsolute as _2}from"path";var On=class{constructor(e=$r()){this.cacheDir=e;this.isProjectLocal=!_2(e)}cacheDir;gitignoreChecked=!1;isProjectLocal;get(e,n,r){let a=this.getPath(e,n,r);return Jd(a)?MS(a,"utf-8"):null}put(e,n,r,a){let s=this.getPath(e,n,r);S2(E2(s),{recursive:!0}),DS(s,a,"utf-8"),this.isProjectLocal&&this.ensureGitignore()}has(e,n,r){return Jd(this.getPath(e,n,r))}ensureGitignore(){if(this.gitignoreChecked)return;this.gitignoreChecked=!0;let e=".gitignore",n=this.cacheDir;if(Jd(e)){if(MS(e,"utf-8").split(`
|
|
415
|
+
`).some(a=>a.trim()===n||a.trim()===n+"/"))return;A2(e,`
|
|
416
416
|
${n}/
|
|
417
|
-
`)}else
|
|
418
|
-
`)}getPath(e,n,r){return
|
|
417
|
+
`)}else DS(e,`${n}/
|
|
418
|
+
`)}getPath(e,n,r){return x2(this.cacheDir,e,`${n}@${r}.kan.yml`)}};var Xd;function FS(){if(!Xd){let t=new Ys,e=!!(process.stdin.isTTY&&process.stderr.isTTY);Xd=Fu(gS({interactive:e,discovery:t}),{discovery:t})}return Xd}var Qd;function mt(){if(!Qd){let t=yS(),e=kS();Qd={fetchFn:FS(),...t?{packageUrlTemplates:t}:{},...e?{templateTrustedPublishers:e,onTemplateTrustedRead:C2(n=>console.error(n))}:{}}}return Qd}function C2(t){let e=new Set;return({publisher:n,url:r})=>{e.has(n)||(e.add(n),t(`Read ${n}'s exact versions from ${new URL(r).host} without checking them against ${n}'s lock, as templateTrustedPublishers says.`))}}function Pr(t){let e=P2(t);for(let n=e;;n=VS(n)){if(j2(N2(n,".git")))return n;if(VS(n)===n)return e}}async function ct(t,e,n={}){let r=new On;return tp(t,e,{offline:n.offline,...n.offline?{}:mt(),httpCache:{getFromCache:(a,s,i)=>r.get(a,s,i),onFetch:(a,s,i,o)=>r.put(a,s,i,o)}})}var BS="Parse";async function WS(t,e={}){if(e.json&&e.conformance)throw new Error("kanonak validate: --json reports validation only, not conformance yet. Run --conformance without --json.");let n=R2(t);if(!T2(n))throw new Error(`kanonak validate: path not found: ${n}`);let r=L2(n),a=r.isDirectory()?Pr(n):Pr(qS(n)),s=new me,i=new Dd(s,{offline:e.offline}),o=await ct(a,s,{offline:e.offline}),l=[],c=[];r.isDirectory()?Kt(n,l,{ignore:new Js(a),ignored:c}):l.push(n);let u=c.length===0?"":`${c.reduce((A,C)=>A+C.kanonakFiles,0)} .kan.yml file(s) excluded by .gitignore: ${c.map(A=>KS(n,A.path).split(US).join("/")+(A.isDirectory?"/":"")).join(", ")}.`,p=A=>KS(r.isDirectory()?n:qS(n),A).split(US).join("/");if(l.length===0){if(e.json){HS([],c,p);return}console.log(c.length===0?"No .kan.yml files found.":`No .kan.yml files to validate. ${u}`);return}let f=[],h=[];for(let A of l){let C=O2(A,"utf-8"),N=s.parseWithErrors(C);if(N.errors&&N.errors.length>0){f.push({file:A,namespace:null,errors:N.errors.map(_=>({ruleType:BS,message:_.message,lineNumber:_.line,column:_.column})),warnings:[],infos:[]});continue}if(!N.document){f.push({file:A,namespace:null,errors:[{ruleType:BS,message:"Failed to parse document"}],warnings:[],infos:[]});continue}h.push({file:A,document:N.document})}let g=h.map(A=>A.document),m=new Map(h.map(A=>[A.document,A.file])),y=await i.validateDocumentsAsync(g,new ds(o,{closureOf:g})),v=new Map;for(let{document:A,result:C}of y){let N=A.metadata.namespace_,_={file:m.get(A)??"(unknown)",namespace:N?N.toString():null,errors:C.errors.filter(B=>B.severity===hs.Error).map(Zd),warnings:C.warnings.filter(B=>B.severity===hs.Warning).map(Zd),infos:C.infos.filter(B=>B.severity===hs.Info).map(Zd)};v.set(_,N?`${N.publisher}/${N.package_}@${N.version}`:_.file),f.push(_)}let k=f.reduce((A,C)=>A+C.errors.length,0),w=f.reduce((A,C)=>A+C.warnings.length,0),S=f.reduce((A,C)=>A+C.infos.length,0);if(e.json)HS(f,c,p);else{for(let A of f){let C=v.get(A);if(C===void 0){console.log(`
|
|
419
419
|
${A.file}:`);for(let N of A.errors)console.log(N.lineNumber===void 0?` ERROR: ${N.message}`:` ERROR (parse): ${N.message} [line ${N.lineNumber}:${N.column}]`);continue}if(!(A.errors.length===0&&A.warnings.length===0&&A.infos.length===0)){console.log(`
|
|
420
420
|
${C}:`);for(let N of A.errors)console.log(` ERROR: ${N.message}`),N.suggestion&&console.log(` -> ${N.suggestion}`);for(let N of A.warnings)console.log(` WARN: ${N.message}`);for(let N of A.infos)console.log(` INFO: ${N.message}`)}}console.log(`
|
|
421
421
|
${l.length} file(s) validated. ${k} error(s), ${w} warning(s), ${S} info(s).`),u&&console.log(u)}if(e.conformance){console.log(`
|
|
422
|
-
Conformance (sh:NodeShape and owl:hasKey evaluation over each document's import closure):`);let A=!0,C=0;for(let{file:N,document:_}of h){let B;try{let X=await
|
|
422
|
+
Conformance (sh:NodeShape and owl:hasKey evaluation over each document's import closure):`);let A=!0,C=0;for(let{file:N,document:_}of h){let B;try{let X=await iS([_],o);B=lS(X,X.catalog)}catch(X){A=!1,console.log(` ERROR: ${_.metadata.namespace_?.toString()??N}: ${X.message}`);continue}B.conforms||(A=!1),C+=B.results.length;for(let X of B.results){let pe=X.severity==="Violation"?"VIOLATION":X.severity.toUpperCase(),J=X.resultPath?.name??(X.resultPathExpression&&bn(X.resultPathExpression)),Q=J?` [${J}]`:"";console.log(` ${pe}: ${X.focusNode}${Q} \u2014 ${X.message}`),console.log(` -> ${In(X.constraintComponent)}${X.sourceShape!==void 0?` (shape: ${X.sourceShape})`:""}`)}}console.log(C===0&&A?" conforms: true (no findings)":` conforms: ${A} (${C} finding(s))`),A||(process.exitCode=1)}k>0&&(process.exitCode=1)}function Zd(t){let e={};for(let n of["ruleType","lineNumber","column","resourceName","propertyName","propertyPath","message","suggestion","actualValue","expectedValue"]){let r=t[n];r!=null&&(e[n]=r)}return e}function HS(t,e,n){let r=t.map(a=>({...a,file:n(a.file)})).sort((a,s)=>a.file.localeCompare(s.file));console.log(JSON.stringify({files:r,excludedByGitignore:e.map(a=>({path:n(a.path)+(a.isDirectory?"/":""),kanonakFiles:a.kanonakFiles})),errors:t.reduce((a,s)=>a+s.errors.length,0),warnings:t.reduce((a,s)=>a+s.warnings.length,0),infos:t.reduce((a,s)=>a+s.infos.length,0)},null,2))}function pa(t){if(!t)return null;let e=t.indexOf("/");if(e===-1)return null;let n=t.substring(0,e),r=t.substring(e+1);if(!n||!r)return null;let a,s=null,i=null,o=r.indexOf("@");if(o!==-1){a=r.substring(0,o);let l=r.substring(o+1),c=l.indexOf("/");c===-1?s=l||null:(s=l.substring(0,c)||null,i=l.substring(c+1)||null)}else{let l=r.indexOf("/");l===-1?a=r:(a=r.substring(0,l),i=r.substring(l+1)||null)}return!a||i&&i.includes("/")||s&&s.includes("@")?null:{publisher:n,packageName:a,version:s,instanceName:i}}import{readFileSync as I2}from"fs";import{isDeepStrictEqual as M2}from"util";async function zS(){let t=new On,e=new me,n=new Mt(mt()),r=process.cwd(),a=eh(r,e);if(a.length===0)throw new Error(`${r} holds no Kanonak packages, so there is nothing to lock. Run \`kanonak lock\` in the folder that holds them.`);let s=(u,p,f)=>t.get(u,p,f),{lock:i,pins:o}=await bS({documents:a,publisherIndex:n,readCached:s,parser:e});for(let u of o)D2(u,t);let l=kr(),c=F2(l,i);if(l&&c.length===0){console.log(`
|
|
423
423
|
kanonak.lock already pins the newest version each range admits: ${o.length} version(s), all cached.`);return}for(let u of c)console.log(` ${u}`);Ws(i),console.log(`
|
|
424
|
-
Wrote kanonak.lock: ${o.length} version(s) for the ${a.length} document(s) here, all cached.`)}function
|
|
425
|
-
`))}console.log(`Installing ${h}@${g.version} and its closure (from ${o}'s kanonak.lock)...`);let m=
|
|
426
|
-
Installed ${m.length} package(s).`)}async function
|
|
427
|
-
`))}async function q2(t,e,n,r){let a=Object.keys(t.packages);if(a.length===0)throw new Error("No kanonak.lock file found or lock file is empty. Run `kanonak lock` to write one for the packages in this folder, or install one package: kanonak install {publisher}/{package}[@{version}]");console.log(`Installing ${a.length} package(s) from kanonak.lock...`);for(let s of a){let i=t.packages[s],o=s.indexOf("/"),l=s.substring(0,o),c=s.substring(o+1);await
|
|
428
|
-
Installed ${a.length} package(s) from lock file.`)}async function
|
|
429
|
-
${s.length} of ${a.length} published version(s) have no release lock. Run \`kanonak release-lock\` to record them.`),process.exitCode=1;return}let i=await ct(
|
|
430
|
-
Recorded ${s.length} release lock(s). Commit them: each is recorded once and never changes.`)}function
|
|
431
|
-
Left as written:`);for(let l of i)console.log(` ${l.importer} ${l.message}`)}if(s.length===0){let l=t.package?`of ${t.package.join(", ")}`:`of each of the ${new Set(r.map(
|
|
424
|
+
Wrote kanonak.lock: ${o.length} version(s) for the ${a.length} document(s) here, all cached.`)}function eh(t,e){return Kt(t).map(n=>{try{return e.parse(I2(n,"utf-8"))}catch(r){throw new Error(`${n} doesn't parse, so its imports can't be locked: ${r.message}`,{cause:r})}})}function D2(t,e){let n=`${t.publisher}/${t.packageName}@${t.version}`;if(e.has(t.publisher,t.packageName,t.version)){console.log(` ${n} (cached)`);return}e.put(t.publisher,t.packageName,t.version,t.source),console.log(` ${n}`)}function F2(t,e){let n=[...new Set([...Object.keys(t?.packages??{}),...Object.keys(e.packages)])].sort(),r=[];for(let a of n){let s=t?.packages[a],i=e.packages[a];s?i?M2(s,i)||r.push(s.version===i.version?`~ ${a}@${i.version}`:`~ ${a}@${s.version} \u2192 ${i.version}`):r.push(`- ${a}@${s.version}`):r.push(`+ ${a}@${i.version}`)}return r}async function YS(t,e={}){let n=new On,r=new me,a=new Mt(mt()),s=kr()??{version:"1",lastUpdated:new Date().toISOString(),packages:{}};if(e.frozen){if(t)throw new Error(`\`kanonak install --frozen\` checks this folder's kanonak.lock against its packages, so it takes no package; got "${t}".`);await V2(s,n,r,a)}if(!t){await q2(s,n,r,a);return}let i=pa(t);if(!i)throw new Error(`Invalid package reference: "${t}". Expected format: {publisher}/{package}[@{version}]`);let{publisher:o,packageName:l,version:c,instanceName:u}=i;if(u)throw new Error(`\`kanonak install\` works on whole packages \u2014 got an instance suffix "/${u}". Try: kanonak install ${o}/${l}${c?"@"+c:""}`);let p=c===null?null:At(c);if(c!==null&&p===null)throw new Error(`'${c}' is not a version. \`kanonak install\` takes an exact version, as x.y.z, or none to install the version the publisher pins.`);let f=await a.getLock(o);if(!f)throw new Error(`Publisher '${o}' serves no kanonak.lock \u2014 it pins no packages to install.`);let h=`${o}/${l}`,g=f.packages[h];if(!g)throw new Error(`'${o}' does not pin '${l}' in its kanonak.lock. Check the spelling, or that the publisher actually publishes this package.`);if(p&&ee(p)!==g.version){let y=ee(p);throw new Error([`'${o}' pins ${l}@${g.version}, not @${y}, and \`kanonak install\` installs only what a publisher's kanonak.lock pins. Drop the @${y} to install ${g.version}.`,`To use ${l}@${y}, import it with an exact pin in your package, among its ${o} imports:`,` - { package: ${l}, match: "=", version: ${y} }`,"An exact pin resolves against the publisher's archive of published versions; `kanonak validate` fetches it and caches it."].join(`
|
|
425
|
+
`))}console.log(`Installing ${h}@${g.version} and its closure (from ${o}'s kanonak.lock)...`);let m=K2(h,f);for(let y of m){let v=f.packages[y],k=y.indexOf("/"),w=y.substring(0,k),S=y.substring(k+1),A={...v,resolved:a.lockedSourceUrl(w,S,v)};await GS(w,S,A,n,r,a),s.packages[y]=A}Ws(s),console.log(`
|
|
426
|
+
Installed ${m.length} package(s).`)}async function V2(t,e,n,r){let a=process.cwd();if(Object.keys(t.packages).length===0)throw new Error(`\`kanonak install --frozen\` found no kanonak.lock in ${a}. Run \`kanonak lock\` to write one, and commit it.`);let s=await vS({documents:eh(a,n),lock:t,publisherIndex:r,readCached:(i,o,l)=>e.get(i,o,l),parser:n});if(s.length>0)throw new Error([`kanonak.lock doesn't fit the packages in ${a}, so \`kanonak install --frozen\` installed nothing:`,...s.map(i=>` ${i}`),"Run `kanonak lock` to write it again, and commit it."].join(`
|
|
427
|
+
`))}async function q2(t,e,n,r){let a=Object.keys(t.packages);if(a.length===0)throw new Error("No kanonak.lock file found or lock file is empty. Run `kanonak lock` to write one for the packages in this folder, or install one package: kanonak install {publisher}/{package}[@{version}]");console.log(`Installing ${a.length} package(s) from kanonak.lock...`);for(let s of a){let i=t.packages[s],o=s.indexOf("/"),l=s.substring(0,o),c=s.substring(o+1);await GS(l,c,i,e,n,r)}console.log(`
|
|
428
|
+
Installed ${a.length} package(s) from lock file.`)}async function GS(t,e,n,r,a,s){let i=`${t}/${e}@${n.version}`,o=r.get(t,e,n.version);if(o){await qr(i,o,n.integrity,"the cache"),console.log(` ${i} (cached)`);return}let{content:l}=await s.fetchLockedSource(t,e,n);gr(a.parse(l),t,e,n.version),r.put(t,e,n.version,l),console.log(` ${i}`)}function K2(t,e){let n=new Set,r=[t];for(;r.length>0;){let a=r.pop();if(n.has(a))continue;let s=e.packages[a];if(!s)throw new Error(`Lock is incomplete: "${a}" is depended on but not pinned.`);n.add(a);for(let i of Object.keys(s.dependencies))r.push(i)}return[...n]}import{existsSync as U2,readFileSync as B2,writeFileSync as H2}from"fs";import{basename as W2,dirname as z2,join as Y2,relative as JS,resolve as G2}from"path";async function XS(t,e=[]){let n=process.cwd(),r=new me,a=e.length>0?e.map(o=>X2(G2(n,o),r)):J2(n,r);if(a.length===0)throw new Error(`${n} holds no source named for its version, {version}.kan.yml or {package}@{version}.kan.yml, so there is no published version to record a release lock for.`);let s=a.filter(o=>!U2(o.lockPath));if(s.length===0){console.log(`Every one of the ${a.length} published version(s) here has its release lock.`);return}if(t.check){for(let o of s)console.log(` ${o.id}: no ${JS(n,o.lockPath)}`);console.log(`
|
|
429
|
+
${s.length} of ${a.length} published version(s) have no release lock. Run \`kanonak release-lock\` to record them.`),process.exitCode=1;return}let i=await ct(Pr(n),r,{offline:t.offline});for(let o of s){let l=await SS({document:o.document,repository:i});H2(o.lockPath,Hs(l),{flag:"wx"}),console.log(` ${o.id}: ${JS(n,o.lockPath)}, ${Object.keys(l.packages).length} package(s)`)}console.log(`
|
|
430
|
+
Recorded ${s.length} release lock(s). Commit them: each is recorded once and never changes.`)}function J2(t,e){return Kt(t).map(n=>QS(n,e)).filter(n=>n!==void 0)}function X2(t,e){let n=QS(t,e);if(n===void 0)throw new Error(`${t} isn't a published version: one is a source named for its version, {version}.kan.yml or {package}@{version}.kan.yml.`);return n}function QS(t,e){let n;try{n=e.parse(B2(t,"utf-8"))}catch(i){throw new Error(`${t} doesn't parse, so its release lock can't be recorded: ${i.message}`,{cause:i})}let r=n.metadata?.namespace_;if(!r?.version)return;let a=ee(r.version),s=W2(t);if(!(s!==`${a}.kan.yml`&&s!==`${r.package_}@${a}.kan.yml`))return{path:t,lockPath:Y2(z2(t),s.replace(/\.kan\.yml$/,".kanonak.lock")),document:n,id:r.toString()}}import{existsSync as Q2,readFileSync as Z2,writeFileSync as eF}from"fs";import{basename as tF,dirname as nF,join as rF,relative as aF}from"path";async function ZS(t){let e=process.cwd(),n=new me,r=sF(e,n);if(r.length===0)throw new Error(`${e} holds no Kanonak packages, so there is nothing to upgrade. Run \`kanonak upgrade\` in the folder that holds them.`);let a=await ct(e,n),{upgrades:s,notices:i}=await PS({sources:r,publisherIndex:new Mt(mt()),repository:a,parser:n,sourcePublishers:t.sourceOf??[],packages:t.package}),o=s.map(l=>({upgrade:l,path:oF(l)}));for(let{upgrade:l,path:c}of o){console.log(`${l.publisher}/${l.packageName} ${l.from} \u2192 ${l.to} ${aF(e,c)}`);for(let u of l.raises)console.log(` ${u.publisher}/${u.packageName} ${u.operator} ${u.from} \u2192 ${u.to}`);for(let u of l.homes)console.log(` + ${u.publisher}/${u.packageName} ${u.operator} ${u.version}, the home of ${u.terms.join(", ")}`);l.selfReferences>0&&console.log(` ~ ${l.selfReferences} reference(s) to its own transformations at ${l.from} now name ${l.to}`)}if(i.length>0){console.log(`
|
|
431
|
+
Left as written:`);for(let l of i)console.log(` ${l.importer} ${l.message}`)}if(s.length===0){let l=t.package?`of ${t.package.join(", ")}`:`of each of the ${new Set(r.map(iF)).size} package(s) here`;console.log(`
|
|
432
432
|
The newest version ${l} already imports the newest each range admits, and every built-in home it names.`);return}if(t.check){console.log(`
|
|
433
|
-
${s.length} package(s) would get a new version. Run \`kanonak upgrade\` to write them.`),process.exitCode=1;return}for(let{upgrade:l,path:c}of o)
|
|
434
|
-
Wrote ${s.length} new version(s).`)}function
|
|
433
|
+
${s.length} package(s) would get a new version. Run \`kanonak upgrade\` to write them.`),process.exitCode=1;return}for(let{upgrade:l,path:c}of o)eF(c,l.content,c===l.source.path?{}:{flag:"wx"});console.log(`
|
|
434
|
+
Wrote ${s.length} new version(s).`)}function sF(t,e){return Kt(t).map(n=>{let r=Z2(n,"utf-8");try{return{path:n,content:r,document:e.parse(r)}}catch(a){throw new Error(`${n} doesn't parse, so its floors can't be upgraded: ${a.message}`,{cause:a})}})}function iF(t){let e=t.document.metadata.namespace_;return`${e?.publisher}/${e?.package_}`}function oF(t){let{source:e,packageName:n,from:r,to:a}=t,s=tF(e.path),i=[[`${r}.kan.yml`,`${a}.kan.yml`],[`${n}@${r}.kan.yml`,`${n}@${a}.kan.yml`]].find(([l])=>l===s);if(!i)return e.path;let o=rF(nF(e.path),i[1]);if(Q2(o))throw new Error(`${o} already exists, so ${t.publisher}/${n}@${a} can't be written beside ${e.path}.`);return o}import{existsSync as lF,readFileSync as cF}from"fs";import{resolve as uF,dirname as pF}from"path";async function eA(t){let e=uF(t);if(!lF(e))throw new Error(`kanonak deps: file not found: ${e}`);let n=cF(e,"utf-8"),r=new me,a=r.parse(n),s=a.metadata.namespace_,i=s?`${s.publisher}/${s.package_}@${s.version}`:t;if(console.log(i),!a.metadata.imports){console.log(" (no imports)");return}let o=Pr(pF(e)),l=await ct(o,r),c=new Set;for(let[u,p]of Object.entries(a.metadata.imports))for(let f of p)await tA(u,f,l,c," ")}async function tA(t,e,n,r,a){let s=`${t}/${e.packageName}`;if(r.has(s)){console.log(`${a}${s} (${e.package_}) [circular]`);return}r.add(s);let i;try{i=await n.getHighestCompatibleVersionAsync(t,e)}catch{console.log(`${a}${s} (${e.package_}) [fetch failed]`);return}if(!i){console.log(`${a}${s} (${e.package_}) [not found]`);return}let o=i.metadata.namespace_?.version?.toString()??"?";if(console.log(`${a}${t}/${e.packageName}@${o}`),i.metadata.imports)for(let[l,c]of Object.entries(i.metadata.imports))for(let u of c)await tA(l,u,n,r,a+" ")}import{Command as Bi}from"commander";import{readFileSync as aV,writeFileSync as sV,mkdirSync as iV,existsSync as gA,statSync as oV}from"fs";import{join as lV,resolve as cV}from"path";var fF="kanonak.org",dF="document-ast",fe=t=>({publisher:fF,package_:dF,name:t}),dn={Document:fe("Document"),Block:fe("Block"),Inline:fe("Inline"),StructuredValue:fe("StructuredValue"),Heading:fe("Heading"),Paragraph:fe("Paragraph"),RawBlock:fe("RawBlock"),Text:fe("Text"),StructuredMap:fe("StructuredMap"),StructuredEntry:fe("StructuredEntry"),StructuredList:fe("StructuredList"),StringScalar:fe("StringScalar"),IntegerScalar:fe("IntegerScalar"),EscapeHint:fe("EscapeHint"),MediaType:fe("MediaType"),metadata:fe("metadata"),children:fe("children"),level:fe("level"),inlines:fe("inlines"),text:fe("text"),entries:fe("entries"),key:fe("key"),value:fe("value"),escapeHint:fe("escapeHint"),items:fe("items"),stringValue:fe("stringValue"),integerValue:fe("integerValue"),rawContent:fe("rawContent"),mediaType:fe("mediaType"),mimeType:fe("mimeType"),ESC_RAW:fe("esc-raw"),ESC_YAML_SAFE:fe("esc-yaml-safe"),ESC_TOML_STRING:fe("esc-toml-string"),ESC_TOML_MULTILINE:fe("esc-toml-multiline"),ESC_JSON:fe("esc-json"),ESC_DYNAMODB_BOOL:fe("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:fe("esc-dynamodb-number"),ESC_DYNAMODB_NULL:fe("esc-dynamodb-null"),TEXT_PLAIN:fe("text-plain"),TEXT_MARKDOWN:fe("text-markdown"),TEXT_HTML:fe("text-html"),TEXT_CSS:fe("text-css"),APPLICATION_JSON:fe("application-json"),TEXT_YAML:fe("text-yaml"),IMAGE_SVG_XML:fe("image-svg-xml"),ResourceLink:fe("ResourceLink"),target:fe("target"),linkLabel:fe("linkLabel"),PropertyList:fe("PropertyList"),propertyEntries:fe("propertyEntries"),PropertyEntry:fe("PropertyEntry"),propertyKey:fe("propertyKey"),propertyValue:fe("propertyValue"),Table:fe("Table"),tableColumnLabels:fe("tableColumnLabels"),tableRows:fe("tableRows"),TableRow:fe("TableRow"),tableCells:fe("tableCells")};function nA(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var hF=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(t,e){let n=mF(t.metadata,e),r=kF(t.children),a=["---",...n,"---","",r].join(`
|
|
435
435
|
`);return e?.trailingNewline&&(a.endsWith(`
|
|
436
436
|
`)||(a+=`
|
|
437
|
-
`)),a}};function
|
|
437
|
+
`)),a}};function mF(t,e){if(!t)return[];let n=new Map;for(let i of t.entries)n.set(pc(i.key),i);let r=new Map;if(e?.metadataRenames)for(let[i,o]of e.metadataRenames)r.set(pc(i),o);let a=(e?.metadataKeys??t.entries.map(i=>i.key)).map(pc),s=[];for(let i of a){let o=n.get(i);if(!o)continue;let l=r.get(i),c=pc(l??i),u=iA(o.value,o.escapeHint);u!==void 0&&s.push(`${c}: ${u}`)}return s}function pc(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function iA(t,e){switch(t.kind){case"StringScalar":return gF(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=iA(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function gF(t,e){return!e||nA(e,dn.ESC_RAW)?t:nA(e,dn.ESC_YAML_SAFE)?yF(t):t}function yF(t){return t.includes(`
|
|
438
438
|
`)?`|-
|
|
439
439
|
${t.replace(/\n/g,`
|
|
440
|
-
`).trimEnd()}`:/[:#\[\]{}&*!|>'"%@`,]/.test(t)?`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:t}function
|
|
440
|
+
`).trimEnd()}`:/[:#\[\]{}&*!|>'"%@`,]/.test(t)?`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:t}function kF(t){let e=[];for(let n of t){let r=ih(n);r&&e.push(r)}return e.join(`
|
|
441
441
|
|
|
442
|
-
`)}function
|
|
443
|
-
`)}function
|
|
442
|
+
`)}function ih(t){switch(t.kind){case"Heading":return`${"#".repeat(t.level)} ${fc(t.inlines)}`;case"Paragraph":return fc(t.inlines);case"RawBlock":return t.rawContent;case"PropertyList":return oA(t);case"Table":return bF(t);default:return""}}function bF(t){let e=t.tableColumnLabels??[],n=t.tableRows??[];if(e.length===0&&n.length===0)return"";let r=`| ${e.map(sh).join(" | ")} |`,a=`| ${e.map(()=>"---").join(" | ")} |`,s=n.map(i=>`| ${(i.tableCells??[]).map(vF).join(" | ")} |`);return[r,a,...s].join(`
|
|
443
|
+
`)}function vF(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?sh(fc([e])):sh(ih(e).replace(/\n+/g," "))}function sh(t){return t==null?"":String(t).replace(/\|/g,"\\|")}function oA(t,e=0){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let n=" ".repeat(e),r=[];for(let a of t.propertyEntries){let s=`${n}**${a.propertyKey}:**`,i=wF(a.propertyValue,e+1);i.includes(`
|
|
444
444
|
`)?r.push(`${s}
|
|
445
445
|
${i}`):r.push(`${s} ${i}`)}return r.join(`
|
|
446
446
|
|
|
447
|
-
`)}function
|
|
447
|
+
`)}function wF(t,e){if(!t||t.length===0)return"";let n=[],r=[];for(let a of t){let s=a;!s||typeof s!="object"||!s.kind||(s.kind==="Text"||s.kind==="ResourceLink"||s.kind==="Badge"?n.push(fc([s])):s.kind==="PropertyList"?r.push(oA(s,e)):r.push(ih(s)))}return r.length===0?n.join(""):n.length===0?r.join(`
|
|
448
448
|
|
|
449
449
|
`):`${n.join("")}
|
|
450
450
|
|
|
451
451
|
${r.join(`
|
|
452
452
|
|
|
453
|
-
`)}`}function
|
|
453
|
+
`)}`}function fc(t){let e=[];for(let n of t)n.kind==="Text"?e.push(n.text):n.kind==="ResourceLink"?e.push($F(n)):n.kind==="Badge"&&e.push(SF(n));return e.join("")}function $F(t){let e=cA(t.target);if(!e)return t.linkLabel??"[unresolved link]";let n=Mr(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` "${lA(t.linkTooltip)}"`:"";return`[${r}](${n}${a})`}function SF(t){if(!t.badgeTarget)return`*${t.badgeLabel}*`;let e=cA(t.badgeTarget);if(!e)return`*${t.badgeLabel}*`;let n=Mr(e),r=t.badgeTooltip?` "${lA(t.badgeTooltip)}"`:"";return`*[${t.badgeLabel}](${n}${r})*`}function lA(t){return t==null?"":String(t).replace(/"/g,'\\"')}function cA(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function AF(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var xF=class{backendUri="kanonak.org/transformations/toml";render(t,e){let n=EF(t.metadata,e).join(`
|
|
454
454
|
`);return e?.trailingNewline&&(n.endsWith(`
|
|
455
455
|
`)||(n+=`
|
|
456
|
-
`)),n}};function
|
|
456
|
+
`)),n}};function EF(t,e){if(!t)return[];let n=new Map;for(let s of t.entries)n.set(s.key,s);let r=e?.metadataKeys??t.entries.map(s=>s.key),a=[];for(let s of r){let i=n.get(s);if(!i)continue;let o=e?.metadataRenames.get(s)??s,l=uA(i.value,i.escapeHint);l!==void 0&&a.push(`${o} = ${l}`)}return a}function uA(t,e){switch(t.kind){case"StringScalar":return _F(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=uA(r,e);a!==void 0&&n.push(a)}return`[${n.join(", ")}]`}case"StructuredMap":return;default:return}}function _F(t,e){return e&&AF(e,dn.ESC_TOML_MULTILINE)?jF(t):CF(t)}function CF(t){return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}"`}function jF(t){return`"""
|
|
457
457
|
${t.replace(/"""/g,'\\"\\"\\"')}
|
|
458
|
-
"""`}var
|
|
458
|
+
"""`}var NF=class{backendUri="kanonak.org/transformations/json";render(t,e){let n=JSON.stringify(t,null,2);return e?.trailingNewline&&!n.endsWith(`
|
|
459
459
|
`)?n+`
|
|
460
|
-
`:n}};function
|
|
460
|
+
`:n}};function th(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var PF=class{backendUri="kanonak.org/transformations/html";render(t,e){let n=LF(t.children);if(e?.omitWrapper){let i=n.endsWith(`
|
|
461
461
|
`)?n:`${n}
|
|
462
462
|
`;return e.trailingNewline===!1&&i.endsWith(`
|
|
463
|
-
`)?i.slice(0,-1):i}let r=
|
|
463
|
+
`)?i.slice(0,-1):i}let r=TF(t.metadata)??"Untitled",a=OF(t.metadata,e),s=`<!DOCTYPE html>
|
|
464
464
|
<html lang="en">
|
|
465
465
|
<head>
|
|
466
466
|
<meta charset="utf-8">
|
|
467
|
-
<title>${
|
|
467
|
+
<title>${cr(r)}</title>
|
|
468
468
|
<style>
|
|
469
469
|
body { font-family: -apple-system, Segoe UI, Helvetica, Arial, sans-serif; max-width: 860px; margin: 2rem auto; padding: 0 1rem; color: #222; line-height: 1.55; }
|
|
470
470
|
h1, h2, h3, h4 { line-height: 1.2; }
|
|
@@ -490,38 +490,38 @@ ${a}${n}
|
|
|
490
490
|
</body>
|
|
491
491
|
</html>
|
|
492
492
|
`;return e?.trailingNewline===!1&&s.endsWith(`
|
|
493
|
-
`)?s.slice(0,-1):s}};function
|
|
493
|
+
`)?s.slice(0,-1):s}};function TF(t){if(t){for(let e of t.entries)if((e.key==="title"||e.key==="name")&&e.value.kind==="StringScalar")return e.value.stringValue}}function OF(t,e){if(!t||t.entries.length===0)return"";let n=e?.metadataKeys??t.entries.map(s=>s.key),r=new Map(t.entries.map(s=>[s.key,s])),a=[];for(let s of n){let i=r.get(s);if(!i)continue;let o=e?.metadataRenames.get(s)??s,l=pA(i.value);l!==void 0&&a.push(` <dt>${cr(o)}</dt>
|
|
494
494
|
<dd>${l}</dd>`)}return a.length===0?"":`<dl class="metadata">
|
|
495
495
|
${a.join(`
|
|
496
496
|
`)}
|
|
497
497
|
</dl>
|
|
498
|
-
`}function
|
|
499
|
-
`)}function
|
|
500
|
-
<tr>${e.map(s=>`<th>${
|
|
498
|
+
`}function pA(t){switch(t.kind){case"StringScalar":return cr(t.stringValue);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let e=[];for(let n of t.items){let r=pA(n);r!==void 0&&e.push(`<code>${r}</code>`)}return e.join(", ")}case"StructuredMap":return;default:return}}function LF(t){let e=[];for(let n of t){let r=oh(n);r&&e.push(r)}return e.join(`
|
|
499
|
+
`)}function oh(t){switch(t.kind){case"Heading":{let e=Math.max(1,Math.min(6,t.level));return`<h${e}>${dc(t.inlines)}</h${e}>`}case"Paragraph":return`<p>${dc(t.inlines)}</p>`;case"RawBlock":return VF(t);case"PropertyList":return DF(t);case"Table":return RF(t);default:return""}}function RF(t){let e=t.tableColumnLabels??[],n=t.tableRows??[],r=e.length>0?`<thead>
|
|
500
|
+
<tr>${e.map(s=>`<th>${cr(s)}</th>`).join("")}</tr>
|
|
501
501
|
</thead>
|
|
502
502
|
`:"",a=n.length>0?`<tbody>
|
|
503
|
-
${n.map(
|
|
503
|
+
${n.map(IF).join(`
|
|
504
504
|
`)}
|
|
505
505
|
</tbody>
|
|
506
506
|
`:"";return`<table class="property-table">
|
|
507
|
-
${r}${a}</table>`}function
|
|
507
|
+
${r}${a}</table>`}function IF(t){return` <tr>${(t.tableCells??[]).map(e=>`<td>${MF(e)}</td>`).join("")}</tr>`}function MF(t){let e=t;return!e||typeof e!="object"||!e.kind?"":e.kind==="Text"||e.kind==="ResourceLink"||e.kind==="Badge"?dc([e]):oh(e)}function DF(t){if(!t.propertyEntries||t.propertyEntries.length===0)return"";let e=[];for(let n of t.propertyEntries){let r=`<dt${n.propertyTooltip?` title="${ys(n.propertyTooltip)}"`:""}>${cr(n.propertyKey)}</dt>`,a=`<dd>${FF(n.propertyValue)}</dd>`;e.push(r,a)}return`<dl class="property-list">
|
|
508
508
|
${e.join(`
|
|
509
509
|
`)}
|
|
510
|
-
</dl>`}function
|
|
510
|
+
</dl>`}function FF(t){if(!t||t.length===0)return"";let e=[];for(let n of t){let r=n;!r||typeof r!="object"||!r.kind||(r.kind==="Text"||r.kind==="ResourceLink"||r.kind==="Badge"?e.push(dc([r])):e.push(oh(r)))}return e.join("")}function VF(t){let e=t.mediaType;return e&&th(e,dn.TEXT_MARKDOWN)?Ti(t.rawContent):e&&th(e,dn.TEXT_HTML)?t.rawContent:e&&th(e,dn.IMAGE_SVG_XML)?`<figure class="svg-figure">
|
|
511
511
|
${t.rawContent}
|
|
512
|
-
</figure>`:`<pre${e?` class="media-${ys(e.name)}"`:""}><code>${
|
|
512
|
+
</figure>`:`<pre${e?` class="media-${ys(e.name)}"`:""}><code>${cr(t.rawContent)}</code></pre>`}function dc(t){let e=[];for(let n of t)n.kind==="Text"?e.push(cr(n.text)):n.kind==="ResourceLink"?e.push(qF(n)):n.kind==="Badge"&&e.push(KF(n));return e.join("")}function qF(t){let e=fA(t.target);if(!e)return cr(t.linkLabel??"[unresolved link]");let n=Mr(e),r=t.linkLabel&&t.linkLabel.length>0?t.linkLabel:e.name,a=t.linkTooltip?` title="${ys(t.linkTooltip)}"`:"";return`<a class="kan-link" href="${ys(n)}"${a}>${cr(r)}</a>`}function KF(t){let e=t.badgeTooltip?` title="${ys(t.badgeTooltip)}"`:"",n=cr(t.badgeLabel);if(!t.badgeTarget)return`<span class="kan-badge"${e}>${n}</span>`;let r=fA(t.badgeTarget);if(!r)return`<span class="kan-badge"${e}>${n}</span>`;let a=Mr(r);return`<a class="kan-badge" href="${ys(a)}"${e}>${n}</a>`}function fA(t){if(!t||typeof t!="object")return;let e=t;if(e.subject&&e.subject.publisher&&e.subject.package_&&e.subject.name){let r={publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name};return e.subject.version&&(r.version=e.subject.version),r}let n=t;if(typeof n.namespace=="string"&&typeof n.name=="string"&&n.name.length>0){let r=/^([^/]+)\/([^@]+)@(\d+)\.(\d+)\.(\d+)$/.exec(n.namespace);if(r)return{publisher:r[1],package_:r[2],name:n.name,version:{major:Number(r[3]),minor:Number(r[4]),patch:Number(r[5])}}}}function cr(t){return t==null?"":String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function ys(t){return t==null?"":String(t).replace(/"/g,""").replace(/&/g,"&")}function UF(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var BF=class{backendUri="kanonak.org/transformations/svg";render(t,e){for(let n of t.children)if(n.kind==="RawBlock"&&n.mediaType&&UF(n.mediaType,dn.IMAGE_SVG_XML)){let r=n.rawContent;return e?.trailingNewline&&!r.endsWith(`
|
|
513
513
|
`)&&(r+=`
|
|
514
|
-
`),r}return'<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'}};function
|
|
514
|
+
`),r}return'<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>'}};function HF(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var WF=class{backendUri="kanonak.org/transformations/stylesheet";render(t,e){let n=[];for(let a of t.children)a.kind==="RawBlock"&&a.mediaType&&HF(a.mediaType,dn.TEXT_CSS)&&n.push(a.rawContent);let r=n.join(`
|
|
515
515
|
|
|
516
516
|
`);return e?.trailingNewline&&r.length>0&&!r.endsWith(`
|
|
517
517
|
`)&&(r+=`
|
|
518
|
-
`),r}};function
|
|
518
|
+
`),r}};function zF(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var YF=class{backendUri="kanonak.org/transformations/yaml";render(t,e){let n=[];for(let a of t.children)a.kind==="RawBlock"&&a.mediaType&&zF(a.mediaType,dn.TEXT_YAML)&&n.push(a.rawContent);let r=n.join(`
|
|
519
519
|
|
|
520
520
|
`);return e?.trailingNewline&&r.length>0&&!r.endsWith(`
|
|
521
521
|
`)&&(r+=`
|
|
522
|
-
`),r}};function Ui(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var
|
|
522
|
+
`),r}};function Ui(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var GF=class{backendUri="kanonak.org/transformations/dynamodb-json";render(t,e){if(!t.metadata)throw new Error("dynamodb-json backend: Document has no `metadata` channel. This backend serializes Document.metadata into DynamoDB attribute-value JSON \u2014 the transformation must populate that channel. (No silent empty artifact.)");let n=dA(t.metadata,e),r=JSON.stringify(n,null,2);return e?.trailingNewline&&!r.endsWith(`
|
|
523
523
|
`)&&(r+=`
|
|
524
|
-
`),r}};function
|
|
524
|
+
`),r}};function dA(t,e){let n=new Map;for(let s of t.entries)n.set(s.key,s);let r=e?.metadataKeys??t.entries.map(s=>s.key),a={};for(let s of r){let i=n.get(s);if(!i)continue;let o=e?.metadataRenames.get(s)??s;a[o]=hA(i.value,i.escapeHint)}return{M:a}}function hA(t,e){switch(t.kind){case"StructuredMap":return dA(t);case"StructuredList":return{L:t.items.map(n=>hA(n,void 0))};case"StringScalar":return JF(t.stringValue,e??t.escapeHint);case"IntegerScalar":return XF(t.integerValue,e??t.escapeHint)}}function JF(t,e){if(e&&Ui(e,dn.ESC_DYNAMODB_BOOL)){if(t==="true")return{BOOL:!0};if(t==="false")return{BOOL:!1};throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-bool must have the value "true" or "false"; got ${JSON.stringify(t)}.`)}if(e&&Ui(e,dn.ESC_DYNAMODB_NULL))return{NULL:!0};if(e&&Ui(e,dn.ESC_DYNAMODB_NUMBER)){if(t.trim()===""||Number.isNaN(Number(t)))throw new Error(`dynamodb-json backend: a StringScalar hinted esc-dynamodb-number must hold a numeric literal; got ${JSON.stringify(t)}.`);return{N:t}}return{S:t}}function XF(t,e){if(e&&Ui(e,dn.ESC_DYNAMODB_BOOL))throw new Error(`dynamodb-json backend: esc-dynamodb-bool cannot apply to an IntegerScalar (value ${t}). Use a StringScalar "true"/"false".`);if(e&&Ui(e,dn.ESC_DYNAMODB_NULL))throw new Error(`dynamodb-json backend: esc-dynamodb-null cannot apply to an IntegerScalar (value ${t}). Use a StringScalar hinted esc-dynamodb-null.`);return{N:String(t)}}var hc={"markdown-with-frontmatter":{formatUri:"kanonak.org/transformations/markdown-with-frontmatter",extension:".md"},"plain-markdown":{formatUri:"kanonak.org/transformations/plain-markdown",extension:".md"},toml:{formatUri:"kanonak.org/transformations/toml",extension:".toml"},json:{formatUri:"kanonak.org/transformations/json",extension:".json"},html:{formatUri:"kanonak.org/transformations/html",extension:".html"},svg:{formatUri:"kanonak.org/transformations/svg",extension:".svg"},stylesheet:{formatUri:"kanonak.org/transformations/stylesheet",extension:".css"},yaml:{formatUri:"kanonak.org/transformations/yaml",extension:".yaml"},"dynamodb-json":{formatUri:"kanonak.org/transformations/dynamodb-json",extension:".json"}},ks=class extends Error{},bs=class{backends=new Map;constructor(){this.register(new hF),this.register(new xF),this.register(new NF),this.register(new PF),this.register(new BF),this.register(new WF),this.register(new YF),this.register(new GF)}register(t){this.backends.set(t.backendUri,t)}async run(t){let e=t.transformationKanonaks??t.allKanonaks,n=us(t.transformation,e);if(!n.outputs.has(t.outputFormat))throw new ks(`Transformation "${n.name}" does not declare output format "${t.outputFormat}". Declared: ${Array.from(n.outputs).join(", ")}`);let r=this.findBackend(t.outputFormat);if(!r)throw new ks(`No backend registered for OutputFormat "${t.outputFormat}".`);let a=new Ri(t.repository,t.parser,t.objectParser),s=new cs(a,t.allKanonaks,n.fragments);return n.kind==="instance"?this.runInstance(n,t,r,s):this.runSet(n,t,r,s)}async runInstance(t,e,n,r){let a=rA(e.instances,t.inputPattern.requires),s=aA(a,t.inputPattern.sortBy),i=[];for(let o of s){let l=new Map;l.set("input",o);let c=await r.evaluate(t.rule,l);nh(c,t.name,`input "${o.name}"`);let u=rh(await r.evaluate(t.artifactName,l),t.name,`input "${o.name}"`),p=ah(t.overrides.get(e.outputFormat),e.runtimeOverride),f=n.render(c,p);i.push({fileName:u,format:e.outputFormat,content:f,source:{kind:"instance",sourceName:o.name}})}return i}async runSet(t,e,n,r){let a=rA(e.instances,t.inputPattern.requires),s=aA(a,t.inputPattern.sortBy);return t.partitionBy?this.runSetWithPartition(t,s,e,n,r):this.runSetSingle(t,s,e,n,r)}async runSetSingle(t,e,n,r,a){let s=new Map;s.set("inputs",e);let i=await a.evaluate(t.rule,s);nh(i,t.name,"set");let o=rh(await a.evaluate(t.artifactName,s),t.name,"set"),l=ah(t.overrides.get(n.outputFormat),n.runtimeOverride),c=r.render(i,l);return[{fileName:o,format:n.outputFormat,content:c,source:{kind:"set",memberCount:e.length}}]}async runSetWithPartition(t,e,n,r,a){let s=t.partitionBy,i=new Map,o=[];for(let c of e){let u=eV(c,s);if(u==null)continue;let p=tV(u),f=i.get(p);f||(f={keyValue:u,keyDisplay:nV(u),members:[]},i.set(p,f),o.push(p)),f.members.push(c)}let l=[];for(let c of o){let u=i.get(c),p=new Map;p.set("inputs",u.members),p.set("key",u.keyValue);let f=await a.evaluate(t.rule,p);nh(f,t.name,`partition "${u.keyDisplay}"`);let h=rh(await a.evaluate(t.artifactName,p),t.name,`partition "${u.keyDisplay}"`),g=ah(t.overrides.get(n.outputFormat),n.runtimeOverride),m=r.render(f,g);l.push({fileName:h,format:n.outputFormat,content:m,source:{kind:"set",memberCount:u.members.length,partitionKey:u.keyDisplay}})}return l}findBackend(t){let e=hc[t];if(e)return this.backends.get(e.formatUri)}};function rA(t,e){return e.length===0?t:t.filter(n=>{for(let r of e)if(!ZF(n,r))return!1;return!0})}function aA(t,e){if(e.length===0)return t;let n=[...t];return n.sort((r,a)=>{for(let s of e){let i=sA(r,s.byProperty),o=sA(a,s.byProperty),l=QF(i,o,s.order);if(l!==0)return l}return 0}),n}function sA(t,e){for(let n of t.statement){let r=lh(n);if(!(!r||!$e(r,e))){if(n instanceof Ce||n instanceof et||n instanceof Ge)return n.object;if(n instanceof he)throw new ks(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a list \u2014 list-typed properties are not sortable. Use a scalar property.`);if(n instanceof de)throw new ks(`Sort property "${e.name}" on instance "${t.name??"?"}" resolves to a reference \u2014 reference-typed properties don't have a natural total order. Use a scalar property.`)}}}function QF(t,e,n){if(t===void 0&&e===void 0)return 0;if(t===void 0)return n==="ascending"?1:-1;if(e===void 0)return n==="ascending"?-1:1;let r;return typeof t=="number"&&typeof e=="number"?r=t-e:r=String(t).localeCompare(String(e)),n==="ascending"?r:-r}function ZF(t,e){for(let n of t.statement){let r=lh(n);if(!r||!$e(r,e))continue;let a=n.object;if(a!=null&&!(typeof a=="string"&&a.length===0)&&!(Array.isArray(a)&&a.length===0))return!0}return!1}function eV(t,e){for(let n of t.statement){let r=lh(n);if(!(!r||!$e(r,e))&&(n instanceof Ce||n instanceof et||n instanceof Ge||n instanceof de||n instanceof he))return n.object}}function lh(t){return t.predicate?.subject}function tV(t){if(t===void 0)return" undef";if(t===null)return" null";if(typeof t=="string")return`s:${t}`;if(typeof t=="number")return`n:${t}`;if(typeof t=="boolean")return`b:${t}`;if(t instanceof D){let e=t.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(t instanceof kt){let e=t.name??"";return`k:${t.namespace??""}/${e}`}if(typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.publisher=="string"){let e=t;return`u:${e.publisher}/${e.package_}/${e.name}`}return`o:${JSON.stringify(t,(e,n)=>e==="sourceKey"?void 0:n)}`}function nV(t){return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):t instanceof D?t.subject.name:t instanceof kt?t.name??"":typeof t=="object"&&t!==null&&typeof t.name=="string"?t.name:""}function nh(t,e,n){if(typeof t!="object"||t===null||t.kind!=="Document")throw new ks(`Transformation "${e}" rule did not yield a Document for ${n}. Got: ${mA(t)}`)}function rh(t,e,n){if(typeof t=="string")return t;if(Array.isArray(t)&&t.every(rV))return t.map(r=>String(r)).join("");throw new ks(`Transformation "${e}" artifactName did not yield a string for ${n}. Got: ${mA(t)}`)}function rV(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function mA(t){if(t===void 0)return"undefined";if(t===null)return"null";if(Array.isArray(t))return`array(${t.length})`;if(typeof t=="object"){let e=t.kind;return e?`object(kind=${e})`:"object"}return typeof t}function ah(t,e){if(!t&&!e)return;let n={metadataRenames:e?.metadataRenames??t?.metadataRenames??new Map},r=e?.metadataKeys??t?.metadataKeys;r!==void 0&&(n.metadataKeys=r);let a=e?.trailingNewline??t?.trailingNewline;a!==void 0&&(n.trailingNewline=a);let s=e?.omitWrapper??t?.omitWrapper;return s!==void 0&&(n.omitWrapper=s),n}function ch(t){return[...Qn(t,$.InstanceTransformation),...Qn(t,$.SetTransformation)]}function kA(){let t=new Bi("transform").description("Run ontology-driven transformations against Kanonak packages. Transformations are declarative YAML rules (instances of `kanonak.org/transformations/Transformation`) that convert ontology instances into output files. The runner produces one or more Artifacts per matched input; format backends serialize them to Markdown, HTML, SVG, TOML, JSON, or (with post-processing) PDF.").addHelpText("after",`
|
|
525
525
|
Examples:
|
|
526
526
|
|
|
527
527
|
# List every Transformation available in the local workspace
|
|
@@ -559,9 +559,9 @@ Examples:
|
|
|
559
559
|
|
|
560
560
|
# List the registered format backends
|
|
561
561
|
$ kanonak transform formats
|
|
562
|
-
`);return t.addCommand(
|
|
562
|
+
`);return t.addCommand(uV()),t.addCommand(hV()),t.addCommand(gV()),t.addCommand(kV()),t}function uV(){return new Bi("run").description("Run a transformation against an input scope and write the resulting Artifacts to disk.").argument("<transformation>","Transformation URI (`publisher/package/name`, optional `@version`) or just the local name if unique in the workspace.").requiredOption("--scope <scope>","Input source \u2014 either a package URI `publisher/package[@version]` (resolved via the local workspace + cache + HTTP tiers) or a file path to a `.kan.yml` document. Repeatable: pass `--scope X --scope Y` to aggregate matching instances across multiple packages, useful for index pages and other cross-package SetTransformations.",pV,[]).option("--format <name>","OutputFormat name to target (e.g. `markdown-with-frontmatter`, `html`, `svg`, `json`). If omitted and the transformation declares exactly one output, that single format is used.").option("--out <dir>","Directory to write artifacts into.",".").action(async(t,e)=>{try{await fV(t,e)}catch(n){console.error(`Error: ${n.message}`),process.exit(1)}})}function pV(t,e){return[...e,t]}async function fV(t,e){let n=new me,r=new je,a=await ct(process.cwd(),n),s=await bA(t,a,r),{transformation:i,transformationKanonaks:o}=s;console.log(`Transformation: ${gc(i)}`);let l=us(i,o);e.scope.length===0&&(console.error("At least one --scope is required."),process.exit(1));let c=[],u=new Map;for(let k of e.scope){let w=await bV(k,a,n,r);c.push(...w);let S=await $V(w,l.inputPattern.matchesClass,a);for(let A of S){let C=SV(A);C&&!u.has(C)&&u.set(C,A)}console.log(`Scope: ${k} \u2014 found ${S.length} instance(s) of ${l.inputPattern.matchesClass.publisher}/${l.inputPattern.matchesClass.package_}/${l.inputPattern.matchesClass.name}`)}let p=[...u.values()],f=c;e.scope.length>1&&console.log(`Total across ${e.scope.length} scope(s): ${p.length} unique instance(s)`),p.length===0&&l.kind==="instance"&&(console.error("No matching input instances across the supplied scope(s). Check the transformation's inputPattern.matchesClass vs. the scope package(s)."),process.exit(1));let h=dV(l.outputs,e.format);console.log(`Output format: ${h}`);let g=hc[h];if(!g)throw new Error(`Unknown format "${h}". Run \`kanonak transform formats\` to see what the runner supports.`);let y=await new bs().run({transformation:i,instances:p,allKanonaks:f,transformationKanonaks:o,repository:a,parser:n,objectParser:r,outputFormat:h}),v=cV(e.out);iV(v,{recursive:!0});for(let k of y){let w=wV(k.fileName),S=lV(v,`${w}${g.extension}`);sV(S,k.content,"utf-8"),console.log(` wrote ${S}`)}console.log(`Done. ${y.length} artifact(s) written to ${v}`)}function dV(t,e){if(e){if(!t.has(e))throw new Error(`Transformation does not declare --format "${e}" in its outputs. Declared outputs: ${Array.from(t).sort().join(", ")}`);return e}if(t.size===1)return Array.from(t)[0];throw new Error(`Transformation supports multiple output formats (${Array.from(t).sort().join(", ")}); pass --format <name> to select one.`)}function hV(){return new Bi("list").description("Scan the local workspace + cache for every Transformation instance and print a one-line summary per hit.").action(async()=>{try{await mV()}catch(t){console.error(`Error: ${t.message}`),process.exit(1)}})}async function mV(){let t=new me,e=new je,n=await ct(process.cwd(),t),r=await n.getAllDocumentsAsync(),a=new Map;for(let i of r)try{let o=new at(i,n),l=await e.parseKanonaks(o),c=ch(l);for(let u of c){let p=uh(u);if(!p)continue;let f=a.get(p)??[];f.push({tx:u,kanonaks:l,doc:i}),a.set(p,f)}}catch{}let s=[];for(let i of a.values()){if(i.length===1){s.push(yA(i[0].tx,i[0].kanonaks));continue}let o=hr(i.map(c=>c.doc));if(!o.chosen)continue;let l=i.find(c=>c.doc===o.chosen);l&&s.push(yA(l.tx,l.kanonaks))}if(s.length===0){console.log("No Transformation instances found in the current workspace.");return}s.sort((i,o)=>i.uri.localeCompare(o.uri));for(let i of s)console.log(`${i.uri}`),console.log(` matches: ${i.matchesClass}`),console.log(` outputs: ${i.outputs.join(", ")}`)}function gV(){return new Bi("show").description("Compile a transformation and print a human-readable summary (input pattern, outputs, format overrides, rule shape).").argument("<transformation>","Transformation URI or local name").action(async t=>{try{await yV(t)}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}})}async function yV(t){let e=new me,n=new je,r=await ct(process.cwd(),e),{transformation:a,transformationKanonaks:s}=await bA(t,r,n),i=us(a,s);if(console.log(`Transformation: ${gc(a)}`),console.log(),console.log("Input pattern:"),console.log(` Matches class: ${mc(i.inputPattern.matchesClass)}`),i.inputPattern.requires.length>0){console.log(" Required properties:");for(let o of i.inputPattern.requires)console.log(` - ${mc(o)}`)}else console.log(" Required properties: (none)");if(console.log(),console.log(`Outputs: ${Array.from(i.outputs).sort().join(", ")}`),console.log(),i.overrides.size>0){console.log("Format overrides:");for(let[o,l]of i.overrides){if(console.log(` ${o}:`),l.metadataKeys&&console.log(` metadata keys: ${l.metadataKeys.join(", ")}`),l.metadataRenames.size>0){let c=[];for(let[u,p]of l.metadataRenames)c.push(`${u} \u2192 ${p}`);console.log(` metadata renames: ${c.join(", ")}`)}l.trailingNewline!==void 0&&console.log(` trailing newline: ${l.trailingNewline}`)}console.log()}console.log(`Rule root kind: ${i.rule.kind}`),i.rule.kind==="build-ast-node"&&(console.log(`Rule root AST class: ${mc(i.rule.astClass)}`),console.log(`Rule root bindings: ${i.rule.set.length} field(s)`)),console.log(`Artifact name root kind: ${i.artifactName.kind}`)}function kV(){return new Bi("formats").description("List the OutputFormat names the runner can serialize to.").action(()=>{console.log("Registered format backends:");let t=Object.entries(hc).sort(([e],[n])=>e.localeCompare(n));for(let[e,n]of t)console.log(` ${e.padEnd(28)} ${n.extension.padEnd(6)} ${n.formatUri}`)})}async function bA(t,e,n){let r,a,s;if(t.includes("/")){let f=t.indexOf("@"),h=t;if(f!==-1){let m=t.indexOf("/",f);if(m===-1)throw new Error(`Transformation URI "${t}" has @version but no trailing /<name>`);h=t.substring(0,f)+t.substring(m)}let g=h.split("/");if(g.length<3)throw new Error(`Invalid transformation URI "${t}" \u2014 expected publisher/package/name or publisher/package@version/name`);r=g[0],a=g[1],s=g.slice(2).join("/")}else s=t;if(r&&a){let f=await e.getDocumentsByNamespaceAsync(r,a);if(f.length===0)throw new Error(`Package ${r}/${a} not found in the local workspace or cache.`);let h=vV(t),g=vA(f,h,`${r}/${a}`),m=new at(g,e),y=await n.parseKanonaks(m),v=ge(y,{publisher:r,package_:a,name:s,version:""});if(!v){let k=ch(y),w=k.find(S=>S.name===s);if(!w)throw new Error(`Transformation "${s}" not found in package ${r}/${a}. Package contains ${k.length} Transformation(s): ${k.map(S=>S.name).join(", ")||"(none)"}`);return{transformation:w,transformationKanonaks:y}}return{transformation:v,transformationKanonaks:y}}let i=await e.getAllDocumentsAsync(),o=new Map;for(let f of i)try{let h=new at(f,e),g=await n.parseKanonaks(h),m=ch(g);for(let y of m){if(y.name!==s)continue;let v=uh(y);if(!v)continue;let k=o.get(v)??[];k.push({tx:y,kanonaks:g,doc:f}),o.set(v,k)}}catch{}if(o.size===0)throw new Error(`No Transformation named "${s}" found in the workspace. Try \`kanonak transform list\` to see available transformations.`);if(o.size>1){let f=Array.from(o.keys()).sort().join(`
|
|
563
563
|
`);throw new Error(`Multiple Transformations named "${s}" in the workspace \u2014 disambiguate with a full publisher/package/name URI:
|
|
564
|
-
${f}`)}let l=Array.from(o.values())[0];if(l.length===1)return{transformation:l[0].tx,transformationKanonaks:l[0].kanonaks};let c=new Map(l.map(f=>[f.doc,f])),u=
|
|
564
|
+
${f}`)}let l=Array.from(o.values())[0];if(l.length===1)return{transformation:l[0].tx,transformationKanonaks:l[0].kanonaks};let c=new Map(l.map(f=>[f.doc,f])),u=hr(l.map(f=>f.doc));if(!u.chosen)throw new Error(`Could not select a Transformation version for "${s}".`);let p=c.get(u.chosen);if(u.multipleVersionsPresent){let f=m=>{let y=m.metadata.namespace_?.version;return y?ee(y):""},h=p.tx.namespace??"",g=h.includes("@")?h.substring(0,h.indexOf("@")):h;console.warn(`Warning: Transformation "${s}" has ${l.length} versions present (${l.map(m=>f(m.doc)).filter(Boolean).join(", ")}); using @${f(u.chosen)}. Pin with ${g}@<version>/${s} to suppress this warning.`)}return{transformation:p.tx,transformationKanonaks:p.kanonaks}}async function bV(t,e,n,r){if(/^[.\/\\]/.test(t)||/^[A-Za-z]:/.test(t)||t.endsWith(".kan.yml")||gA(t)&&oV(t).isFile()){if(!gA(t))throw new Error(`Scope file not found: ${t}`);let g=aV(t,"utf-8"),m=n.parse(g),y=new at(m,e);return r.parseKanonaks(y)}let s=t.indexOf("@"),i=s===-1?t:t.substring(0,s),o=s===-1?void 0:t.substring(s+1),l=i.indexOf("/");if(l===-1)throw new Error(`Invalid scope "${t}" \u2014 expected a file path or publisher/package[@version] URI`);let c=i.substring(0,l),u=i.substring(l+1),p=await e.getDocumentsByNamespaceAsync(c,u);if(p.length===0)throw new Error(`Scope package ${c}/${u} not found in the local workspace or cache.`);let f=vA(p,o,`${c}/${u}`),h=new at(f,e);return r.parseKanonaks(h)}function vV(t){let e=t.indexOf("@");if(e===-1)return;let n=t.substring(e+1),r=n.indexOf("/");return r===-1?n:n.substring(0,r)}function vA(t,e,n){let r=s=>{let i=s.metadata.namespace_?.version;return i?ee(i):""},a=hr(t,{requestedVersion:e});if(a.exactRequestedVersionMissing){let s=t.map(r).filter(Boolean).sort().join(", ");throw new Error(`${n}@${e} not found in the local workspace or cache. Available versions: ${s||"(none with parseable namespace)"}`)}if(!a.chosen)throw new Error(`${n} not found in the local workspace or cache.`);return!e&&a.multipleVersionsPresent&&console.warn(`Warning: ${n} has ${t.length} versions present (${t.map(r).filter(Boolean).join(", ")}); using @${r(a.chosen)}. Pin with ${n}@<version> to suppress this warning.`),a.chosen}function yA(t,e){try{let n=us(t,e);return{uri:gc(t),matchesClass:mc(n.inputPattern.matchesClass),outputs:Array.from(n.outputs).sort()}}catch(n){return{uri:gc(t),matchesClass:`(compile error: ${n.message})`,outputs:[]}}}function gc(t){let e=t.namespace||"",n=e.indexOf("@");return`${n===-1?e:e.substring(0,n)}/${t.name}`}function mc(t){return`${t.publisher}/${t.package_}/${t.name}`}function wV(t){return t.replace(/[\\/:*?"<>|\s]+/g,"_").replace(/^_+|_+$/g,"")}async function $V(t,e,n){let r=new Map;for(let i of t){if(!(i instanceof V))continue;let o=uh(i);o&&r.set(o,i)}let a=[];try{a=(await new va({vocabulary:new ma}).reason(n)).getInstancesOfClass(Ve(e.publisher,e.package_,e.name))}catch{}let s=[];for(let i of a){let o=r.get(i);o&&s.push(o)}return s.length>0?s:Qn(t,e)}function uh(t){let e=t.namespace??"",n=e.indexOf("@"),r=n===-1?e:e.substring(0,n),a=r.indexOf("/");return a===-1||!t.name?null:Ve(r.substring(0,a),r.substring(a+1),t.name)}function SV(t){let e=t.namespace??"";return!e||!t.name?null:`${e}/${t.name}`}import{Command as AV}from"commander";import{writeFileSync as xV,mkdirSync as EV}from"fs";import{join as _V,resolve as CV}from"path";var jV={publisher:"kanonak.org",package_:"formats",name:"html"},NV={publisher:"kanonak.org",package_:"derivation",name:"default"},PV={html:".html",markdown:".md",json:".json",yaml:".yaml",xml:".xml",svg:".svg",typescript:".ts","c-sharp":".cs",rust:".rs",python:".py"};function TV(t){return t==="markdown"?"markdown-with-frontmatter":t}function SA(){return new AV("derive").description("Materialize a derived artifact from a Kanonak resource by walking the polymorphic derivation discovery: instance overrides \u2192 class hierarchy \u2192 universal defaults. The result is written to disk.").argument("<resource>","Resource URI in the form publisher/package[@version]/name. Identifies the specific instance to derive.").option("--format <name>","Format instance name (e.g. html, markdown, json). Defaults to html.","html").option("--variant <name>","Variant instance name (e.g. default, compact, summary). Defaults to default.","default").option("--out <dir>","Directory to write the artifact into.",".").addHelpText("after",`
|
|
565
565
|
Examples:
|
|
566
566
|
|
|
567
567
|
# Render a resource as HTML using whatever derivation the discovery
|
|
@@ -572,7 +572,7 @@ Examples:
|
|
|
572
572
|
|
|
573
573
|
# Materialize the JSON view (universal default unless overridden).
|
|
574
574
|
$ kanonak derive my-publisher.com/my-package/my-resource --format json
|
|
575
|
-
`).action(async(t,e)=>{try{await
|
|
575
|
+
`).action(async(t,e)=>{try{await OV(t,e)}catch(n){console.error(`Error: ${n.message}`),process.exit(1)}})}async function OV(t,e){let n=pa(t);if(!n||!n.instanceName)throw new Error(`Invalid resource URI "${t}". Expected publisher/package[@version]/instance.`);let r=new me,a=new je,s=await ct(process.cwd(),r),i=await a.parseKanonaks(s),o=LV(i,n);if(!o)throw new Error(`Resource ${n.publisher}/${n.packageName}${n.version?`@${n.version}`:""}/${n.instanceName} not found in the workspace or cache.`);console.log(`Resource: ${wA(o)}`);let l=IV(e.format),c=MV(e.variant),u=wa(o,l,c,i);if(!u)throw new Error(`No derivation found for resource ${wA(o)} at (format=${e.format}, variant=${e.variant}). The class hierarchy declares no binding and no universal default applies.`);console.log(`Derivation: ${DV(u)} \u2192 ${$A(u.transformation)}`);let p=RV(i,u.transformation);if(!p)throw new Error(`Transformation ${$A(u.transformation)} not found in the workspace or cache. The binding pointed at a transformation the resolver cannot locate.`);let f=TV(e.format),g=await new bs().run({transformation:p,instances:[o],allKanonaks:i,repository:s,parser:r,objectParser:a,outputFormat:f}),m=CV(e.out);EV(m,{recursive:!0});let y=PV[e.format]??"";for(let v of g){let k=FV(v.fileName),w=_V(m,`${k}${y}`);xV(w,v.content,"utf-8"),console.log(` wrote ${w}`)}console.log(`Done. ${g.length} artifact(s) written to ${m}`)}function LV(t,e){for(let n of t){if(!(n instanceof V)||n.name!==e.instanceName)continue;let r=n.namespace||"",a=`${e.publisher}/${e.packageName}@`;if(r.startsWith(a))if(e.version){if(r===`${e.publisher}/${e.packageName}@${e.version}`)return n}else return n}}function RV(t,e){let n=`${e.publisher}/${e.package_}@${e.version}`;for(let r of t)if(r instanceof V&&r.name===e.name&&r.namespace===n)return r}function IV(t){if(t.includes("/")){let e=pa(t);if(!e||!e.instanceName)throw new Error(`Invalid --format URI "${t}".`);return{publisher:e.publisher,package_:e.packageName,name:e.instanceName}}return{...jV,name:t}}function MV(t){if(t.includes("/")){let e=pa(t);if(!e||!e.instanceName)throw new Error(`Invalid --variant URI "${t}".`);return{publisher:e.publisher,package_:e.packageName,name:e.instanceName}}return{...NV,name:t}}function wA(t){return`${t.namespace}/${t.name}`}function $A(t){return`${t.publisher}/${t.package_}@${t.version}/${t.name}`}function DV(t){return t.source==="instance"?"instance override":`class ${t.source.publisher}/${t.source.package_}/${t.source.name}`}function FV(t){return t.replace(/[^a-zA-Z0-9._@-]+/g,"_")}import{Command as VV}from"commander";import{readFileSync as qV,writeFileSync as KV}from"fs";import{join as UV,resolve as BV}from"path";var yc=class extends Qu{constructor(n,r,a,s){super(n,r);this.warn=s;this.exact=new Zu(n,r,{own:a})}warn;exact;warned=new Set;async getHighestCompatibleVersionAsync(n,r){return await this.warnIfRefused(()=>this.exact.getHighestCompatibleVersionAsync(n,r)),super.getHighestCompatibleVersionAsync(n,r)}async getDocumentsByNamespaceAsync(n,r){return await this.warnIfRefused(()=>this.exact.getDocumentsByNamespaceAsync(n,r)),super.getDocumentsByNamespaceAsync(n,r)}async warnIfRefused(n){try{await n()}catch(r){let a=r.message;if(this.warned.has(a))return;this.warned.add(a),this.warn(a)}}};function AA(){let t=new VV("view").description("Run and materialize Views \u2014 the producer-agnostic query primitive. A View selects instances of its bind class, filters by its where predicates, and projects each into its produces output class.");return t.command("run").description("Materialize a view.View against the local catalog into an EphemeralPackage (content-addressed, versionless). Prints the result as .kan.yml, or writes it with --out.").argument("<view>","View URI in the form publisher/package[@version]/name. May name a view.View directly or a view.ViewPackage (its rootView is followed).").option("--out <file>","Write the EphemeralPackage to this file instead of stdout.").option("--id <id>","Record a per-invocation id on the result (provenance, not identity).").addHelpText("after",`
|
|
576
576
|
Examples:
|
|
577
577
|
|
|
578
578
|
# Materialize a published view and print the EphemeralPackage.
|
|
@@ -580,8 +580,8 @@ Examples:
|
|
|
580
580
|
|
|
581
581
|
# Write the result to a file.
|
|
582
582
|
$ kanonak view run example.org/authors/AuthorView --out ./result.kan.yml
|
|
583
|
-
`).action(async(e,n)=>{try{await
|
|
584
|
-
${c.publisher}/${c.packageName} (${c.contentHash})`)}else process.stdout.write(c.yaml)}function Hq(t,e){return Vt(t).flatMap(n=>{let r=e.parseWithErrors(qq(n,"utf-8"));return r.document?[r.document]:[]})}import{Command as pV}from"commander";import{writeFileSync as en,mkdirSync as Ta}from"fs";import{join as gt,resolve as NA,dirname as fV}from"path";import{existsSync as Wq,readFileSync as yc,writeFileSync as zq,mkdirSync as Yq}from"fs";import{join as kc}from"path";import{existsSync as Xq,readFileSync as Qq,writeFileSync as Zq,mkdirSync as eV}from"fs";import{join as SA}from"path";import{readFileSync as lV}from"fs";var Gq=[{publisher:"kanonak.org",package_:"core-kanonak"},{publisher:"kanonak.org",package_:"site"},{publisher:"kanonak.org",package_:"link"},{publisher:"kanonak.org",package_:"look-tokens"},{publisher:"kanonak.org",package_:"look-styles"},{publisher:"kanonak.org",package_:"look"},{publisher:"kanonak.org",package_:"universal-look"}];function EA(t){return Gq}function vs(t){return`${t.publisher}/${t.package_}`}function _A(t,e=[]){let n={"kanonak.org/look-styles":"pages render UNSTYLED \u2014 generated CSS stops at the :root token block","kanonak.org/look-tokens":"the :root block loses the universal design-token floor (colors, fonts, spacing)","kanonak.org/universal-look":"resources without their own look render as an empty HTML comment","kanonak.org/look":"band vocabulary (Hero, PropertyList, \u2026) is unresolvable \u2014 declared looks cannot render","kanonak.org/site":"the site vocabulary (content, navigation) is unresolvable \u2014 the base stylesheet cannot bind","kanonak.org/core-kanonak":"the Package/Publisher classes are unresolvable \u2014 package and publisher pages degrade","kanonak.org/link":"link vocabulary is unresolvable \u2014 cross-reference styling degrades"},r=[];for(let a of t)if(a.origin==="missing"){let s=vs(a),i=n[s]??"whatever this package contributes to rendering is lost";r.push(`Render-stack package ${s} is MISSING (${a.reason??"unknown reason"}) \u2014 ${i}. Fix: kanonak install ${s} (as the user running the render), or restore network access to ${a.publisher}.`)}else a.resolvedButNotInCatalog&&r.push(`Render-stack package ${vs(a)} resolved (${a.origin}) but is NOT in the parsed catalog \u2014 this is a closure-scoping bug; please report it.`);for(let a of e)r.push(`Import edge ${a.fromNamespace} \u2192 ${a.publisher}/${a.packageName} ${a.constraint} did NOT resolve (${a.reason==="no-compatible-version"?"no compatible version in the repository":"resolution threw"}) \u2014 every statement ${a.fromNamespace} authors against ${a.publisher}/${a.packageName} entities is dropped from the parse as an unresolved predicate (a look declaration loses its bands and pages render empty; see typescript#91). Fix: add a ${a.constraint}-compatible version of ${a.publisher}/${a.packageName} to the workspace or cache (kanonak install ${a.publisher}/${a.packageName}), or bump the import in ${a.fromNamespace}.`);return r}function CA(t){let{publisher:e,availablePublishers:n,catalog:r,lookRenderer:a,localNamespaces:s,rawByNsKey:i,renderStack:o,producers:l,lockSource:c,releaseLocks:u,configSource:p}=t,f=new Map,h=new Map,g=new Map,m=new Set;for(let y of r){if(!(y instanceof q))continue;let v=y.namespace||"";if(!s.has(v))continue;f.set(`${v}/${y.name}`,y);let k=v.split("/")[1]??"",[w,S]=k.split("@");if(!w||!S)continue;let A=At(S);A&&(m.has(k)||(m.add(k),h.has(w)||h.set(w,[]),h.get(w).push({verStr:S,version:A})),y.name===w&&g.set(k,y))}for(let y of h.values())y.sort((v,k)=>_e(k.version,v.version));return{publisher:e,availablePublishers:n,catalog:r,lookRenderer:a,localNamespaces:s,rawByNsKey:i,bySubject:f,pkgVersions:h,pkgSelfByVer:g,renderStack:o,...l?{producers:l}:{},...c?{lockSource:c}:{},...u?{releaseLocks:u}:{},...p?{configSource:p}:{}}}async function ws(t,e={}){let n=new me,r=new Vr(n),a=[],s=[];for(let K of Vt(t)){let E;try{E=yc(K,"utf-8")}catch{continue}let U;try{U=n.parse(E).metadata?.namespace_}catch{continue}if(!U?.version)continue;let R=U.version,ce=K.replace(/\.kan\.yml$/,".kanonak.lock");s.push({publisher:U.publisher,package_:U.package_,verStr:ee(R),version:R,source:E,...Wq(ce)?{releaseLock:yc(ce,"utf-8")}:{}})}s.sort((K,E)=>_e(E.version,K.version));for(let K of s)await r.saveDocumentAsync(n.parse(K.source),`${K.publisher}/${K.package_}@${K.verStr}`),a.push(K);let i=[...new Set(a.map(K=>K.publisher))].sort(),o=e.publisher;if(o){if(!i.includes(o))throw new Error(`Publisher "${o}" not found in workspace. Available: ${i.join(", ")||"(none)"}`)}else if(i.length===1)o=i[0];else throw i.length===0?new Error(`No Kanonak packages found under ${t}`):new Error(`Workspace has multiple publishers (${i.join(", ")}). Pass --publisher <domain> to choose which one to serve.`);let l=new Set,c=new Map;for(let K of a)K.publisher===o&&(l.add(`${K.publisher}/${K.package_}@${K.verStr}`),c.set(`${K.package_}@${K.verStr}`,K.source));let u=wr(),p=new Ya(u,!0,n),f={};e.httpCache&&(f.getFromCache=e.httpCache.getFromCache,f.onFetch=e.httpCache.onFetch),e.fetchFn&&(f.fetchFn=e.fetchFn),e.packageUrlTemplates&&(f.packageUrlTemplates=e.packageUrlTemplates),e.templateTrustedPublishers&&(f.templateTrustedPublishers=e.templateTrustedPublishers),e.onTemplateTrustedRead&&(f.onTemplateTrustedRead=e.onTemplateTrustedRead);let h=e.repository??new za(r,p,new Ka(f)),g=e.log??(()=>{}),m=EA(void 0),y=[],v=K=>K.map(E=>E.metadata.namespace_?.version).filter(E=>E!==void 0).sort((E,U)=>_e(U,E)).map(ee);if(!e.repository){g(`[render-stack] resolving ${m.length} ambient look-stack package(s); cache: ${u}`);let K=new It({...e.fetchFn?{fetchFn:e.fetchFn}:{},...e.packageUrlTemplates?{packageUrlTemplates:e.packageUrlTemplates}:{}});for(let E of m){let U=vs(E),R=await r.getDocumentsByNamespaceAsync(E.publisher,E.package_);if(R.length>0){let ae=v(R);y.push({...E,origin:"workspace",versions:ae}),g(`[render-stack] ${U} \u2014 workspace (${ae.join(", ")})`);continue}let ce=await p.getDocumentsByNamespaceAsync(E.publisher,E.package_);if(ce.length>0){let ae=v(ce);y.push({...E,origin:"cache",versions:ae}),g(`[render-stack] ${U} \u2014 cache (${ae.join(", ")})`);continue}try{let ae=await K.getLockEntry(E.publisher,E.package_);if(!ae){let Le=`publisher ${E.publisher} reachable but its lock does not pin ${E.package_}`;y.push({...E,origin:"missing",reason:Le}),g(`[render-stack] ${U} \u2014 MISSING: ${Le}`);continue}let se=ae.version,{url:Ne,content:Ve}=await K.fetchLockedSource(E.publisher,E.package_,ae);await r.saveDocumentAsync(n.parse(Ve),`${E.publisher}/${E.package_}@${se}`);try{let Le=kc(u,E.publisher);Yq(Le,{recursive:!0}),zq(kc(Le,`${E.package_}@${se}.kan.yml`),Ve,"utf-8"),y.push({...E,origin:"fetched",versions:[se]}),g(`[render-stack] ${U}@${se} \u2014 fetched from ${Ne}, installed to cache`)}catch(Le){y.push({...E,origin:"fetched",versions:[se]}),g(`[render-stack] ${U}@${se} \u2014 fetched from ${Ne}, but cache ${u} is NOT WRITABLE (${Le.message}); usable for this load only \u2014 every load will re-fetch it`)}}catch(ae){let se=`fetch failed: ${ae.message}`;y.push({...E,origin:"missing",reason:se}),g(`[render-stack] ${U} \u2014 MISSING: ${se}`)}}}let k=(await r.getAllDocumentsAsync()).filter(K=>K.metadata.namespace_?.publisher===o);for(let K of m)k.push(...await h.getDocumentsByNamespaceAsync(K.publisher,K.package_));let w=[],S=await tr(k,h,{onUnresolvedEdge:K=>w.push(K)}),A=h;if(!e.repository){for(let K of m)S.add(vs(K));A=new ka(h,S)}let C=await new je(n).parseKanonaks(A),N=new ia(C),_=(K,E)=>ze(C,{publisher:K,package_:E,name:E}).length>0,B;if(e.repository){B=[];for(let K of m){let E=await h.getDocumentsByNamespaceAsync(K.publisher,K.package_);B.push(E.length>0?{...K,origin:"repository",versions:v(E)}:{...K,origin:"missing",reason:"not present in the caller-supplied repository"})}}else B=y.map(K=>K.origin==="missing"||_(K.publisher,K.package_)?K:{...K,resolvedButNotInCatalog:!0});let X=_A(B,w);for(let K of X)g(`[render-stack] WARNING: ${K}`);let pe={contractSource:"universal-default",cachePath:u,packages:B,warnings:X},J;try{J=yc(kc(t,"kanonak.lock"),"utf-8")}catch{J=Jq(o,a,n)}let Q;try{Q=yc(kc(t,".well-known","kanonak.json"),"utf-8")}catch{Q=void 0}let H=new Map;for(let K of a)K.publisher===o&&K.releaseLock!==void 0&&H.set(`/${K.package_}/${K.verStr}/kanonak.lock`,K.releaseLock);return CA({publisher:o,availablePublishers:i,catalog:C,lookRenderer:N,localNamespaces:l,rawByNsKey:c,renderStack:pe,...H.size>0?{releaseLocks:H}:{},...J?{lockSource:J}:{},...Q?{configSource:Q}:{}})}function Jq(t,e,n){let r=new Map,a=new Map;for(let i of e){if(i.publisher!==t)continue;r.has(i.package_)||r.set(i.package_,{verStr:i.verStr,source:i.source});let o=a.get(i.package_)??[];o.some(l=>no(l.version,i.version))||o.push({version:i.version,locked:$A(t,i.package_,i.verStr,i.source)}),a.set(i.package_,o)}if(r.size===0)return;let s={};for(let i of[...r.keys()].sort()){let{verStr:o,source:l}=r.get(i),c={},u;try{u=n.parse(l).metadata?.imports}catch{u=void 0}for(let f of u?.[t]??[]){let h=r.get(f.packageName);h&&(c[`${t}/${f.packageName}`]=h.verStr)}let p={};for(let f of Object.keys(c).sort())p[f]=c[f];s[`${t}/${i}`]={...$A(t,i,o,l),dependencies:p,lines:a.get(i).map(f=>f.locked)}}return Ia.dump({version:"1",lastUpdated:"",packages:s},{lineWidth:-1,sortKeys:!1,quotingType:'"'})}function $A(t,e,n,r){return{version:n,resolved:`https://${t}/${e}/${n}.kan.yml`,integrity:va(r)}}async function tV(t,e={}){let n=new me,r=An(t),a=r.kind==="resource"?r.uri.publisher:r.publisher,s=e.log??(()=>{}),i=e.cacheRoot??wr(),o=(E,U,R)=>SA(i,E,`${U}@${R}.kan.yml`),l=new Set,c=new Set,u=new Map,p=new Ka({getFromCache:(E,U,R)=>{let ce=o(E,U,R),ae=Xq(ce)?Qq(ce,"utf-8"):null;return ae!==null&&l.add(`${E}/${U}`),ae},onFetch:(E,U,R,ce)=>{c.add(`${E}/${U}`);try{let ae=SA(i,E);eV(ae,{recursive:!0}),Zq(o(E,U,R),ce,"utf-8")}catch(ae){u.set(`${E}/${U}`,ae.message),s(`[render] fetched ${E}/${U}@${R} but cache ${i} is NOT WRITABLE (${ae.message}); usable for this load only \u2014 every load will re-fetch it`)}},...e.fetchFn?{fetchFn:e.fetchFn}:{},...e.packageUrlTemplates?{packageUrlTemplates:e.packageUrlTemplates}:{},...e.templateTrustedPublishers?{templateTrustedPublishers:e.templateTrustedPublishers}:{},...e.onTemplateTrustedRead?{onTemplateTrustedRead:e.onTemplateTrustedRead}:{}}),f=new It(e.fetchFn?{fetchFn:e.fetchFn}:void 0),h;if(r.kind==="resource"){let E=r.uri.version;h=[E?{package_:r.uri.package_,version:`${E.major}.${E.minor}.${E.patch}`}:{package_:r.uri.package_}]}else if(r.kind==="package"){let E=r.version;h=[E?{package_:r.package_,version:`${E.major}.${E.minor}.${E.patch}`}:{package_:r.package_}]}else h=((await f.getConfig(a)).featured_packages??[]).map(E=>({package_:E}));let g=async(E,U,R)=>{try{let ce=R?n.buildImport(U,"=",R,E):n.buildImport(U,"*","0.0.0",E),ae=await p.getHighestCompatibleVersionAsync(E,ce);return ae?{doc:ae}:{doc:null,error:`${E} did not resolve ${U}${R?`@${R}`:""} (not in its index, or unreachable)`}}catch(ce){return{doc:null,error:ce.message}}},m=[],y=[];for(let E of h){let{doc:U,error:R}=await g(a,E.package_,E.version);U?m.push(U):R&&y.push(R)}if(m.length===0)throw new Error(`Could not fetch any package for address "${t}" from publisher "${a}".`+(y.length>0?` Reasons: ${y.join("; ")}`:""));let v=EA(),k="universal-default",w=E=>E.map(U=>U.metadata.namespace_?.version).filter(U=>U!==void 0).sort((U,R)=>_e(R,U)).map(ee);s(`[render-stack] resolving ${v.length} ambient look-stack package(s) (contract: ${k}); cache: ${i}`);let S=[],A=[];for(let E of v){let U=vs(E),{doc:R,error:ce}=await g(E.publisher,E.package_,void 0);if(R){S.push(R);let ae=w([R]),se=c.has(U)?"fetched":l.has(U)?"cache":"fetched";A.push({...E,origin:se,versions:ae}),s(`[render-stack] ${U} \u2014 ${se} (${ae.join(", ")})`+(u.has(U)?" [cache write FAILED \u2014 will re-fetch next load]":""))}else A.push({...E,origin:"missing",reason:ce??"unresolved"}),s(`[render-stack] ${U} \u2014 MISSING: ${ce??"unresolved"}`)}let C=[],N=await tr([...m,...S],p,{onUnresolvedEdge:E=>C.push(E)}),_=new ka(p,N),B=await new je(n).parseKanonaks(_),X=new ia(B),pe=A.map(E=>E.origin==="missing"||ze(B,{publisher:E.publisher,package_:E.package_,name:E.package_}).length>0?E:{...E,resolvedButNotInCatalog:!0}),J=_A(pe,C);for(let E of J)s(`[render-stack] WARNING: ${E}`);let Q={contractSource:k,cachePath:i,packages:pe,warnings:J},H=new Set,K=new Map;for(let E of await p.getAllDocumentsAsync()){let U=E.metadata.namespace_;if(!U?.version||U.publisher!==a)continue;let R=ee(U.version),ce=`${U.publisher}/${U.package_}@${R}`;H.add(ce);let ae=await p.getDocumentContentAsync(ce);ae!==null&&K.set(`${U.package_}@${R}`,ae)}return CA({publisher:a,availablePublishers:[a],catalog:B,lookRenderer:X,localNamespaces:H,rawByNsKey:K,renderStack:Q})}function AA(t){let{lookRenderer:e,publisher:n,renderStack:r,catalog:a}=t,s=e.explainStylesheet(e.publisherSubject(n)),i=[...s.tokens.entries()].map(([h,g])=>({name:h,value:g.value,source:`${g.sourceNamespace}/${g.sourceName}`,level:g.level})),o=s.baseStylesheet,l={present:o.css!==void 0,...o.sourceNamespace!==void 0?{source:o.sourceNamespace}:{},...o.scope!==void 0?{scope:o.scope}:{},...o.css!==void 0?{bytes:o.css.length}:{},...o.problem!==void 0?{problem:o.problem}:{},candidates:o.candidates},c=new Map;for(let h of a){let g=h.namespace;g&&c.set(g,(c.get(g)??0)+1)}let u=[...c.entries()].map(([h,g])=>({namespace:h,resources:g})).sort((h,g)=>h.namespace.localeCompare(g.namespace)),p=e.expressionFailures().map(h=>({carrier:h.carrier,stage:h.stage,reason:h.reason})),f=p.map(h=>h.stage==="compile"?`Expression carrier "${h.carrier}" did not compile: ${h.reason} Consequence: that value renders as nothing (and a parent operation consuming it may drop its whole tier). Fix: use a tx.Expression node class the runner implements, or remove the carrier.`:`Expression carrier "${h.carrier}" failed to evaluate: ${h.reason} Consequence: that value renders as nothing. Fix: correct the expression, or make a value that may be absent explicitly optional.`);return{publisher:n,renderStack:{contractSource:r.contractSource,cachePath:r.cachePath,packages:r.packages.map(h=>({package_:vs(h),origin:h.origin,...h.versions!==void 0?{versions:h.versions}:{},...h.reason!==void 0?{reason:h.reason}:{},...h.resolvedButNotInCatalog!==void 0?{resolvedButNotInCatalog:h.resolvedButNotInCatalog}:{}}))},stylesheet:{tokens:i,baseStylesheet:l,...s.look?{look:{sourceClass:`${s.look.sourceClass.publisher}/${s.look.sourceClass.package_}/${s.look.sourceClass.name}`}}:{}},expressionCarriers:p,catalog:u,warnings:[...r.warnings,...s.warnings.filter(h=>!r.warnings.includes(h)),...f]}}function nV(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function rV(t){let e=nV,n=t.warnings.length===0,r=t.expressionCarriers.map(u=>`<tr><td><code>${e(u.carrier)}</code></td><td>${e(u.reason)}</td></tr>`).join(`
|
|
583
|
+
`).action(async(e,n)=>{try{await HV(e,n)}catch(r){console.error(`Error: ${r.message}`),process.exit(1)}}),t}async function HV(t,e){let n=pa(t);if(!n||!n.instanceName)throw new Error(`Invalid view URI "${t}". Expected publisher/package[@version]/name.`);let r=new me,a=await ct(process.cwd(),r),s=kr(UV(process.cwd(),"kanonak.lock")),i=s?new yc(a,s,WV(process.cwd(),r),u=>console.warn(`Warning: ${u} \`kanonak view\` reads it as before, and refuses it from the next major release.`)):a,o=new RS(i,r),l={resolvedAt:new Date().toISOString()};e.id&&(l.invocationId=e.id);let c=await o.materialize({publisher:n.publisher,package_:n.packageName,name:n.instanceName},l);if(e.out){let u=BV(e.out);KV(u,c.yaml,"utf-8"),console.error(`Materialized ${c.rowCount} result(s) \u2192 ${u}
|
|
584
|
+
${c.publisher}/${c.packageName} (${c.contentHash})`)}else process.stdout.write(c.yaml)}function WV(t,e){return Kt(t).flatMap(n=>{let r=e.parseWithErrors(qV(n,"utf-8"));return r.document?[r.document]:[]})}import{Command as Rq}from"commander";import{writeFileSync as en,mkdirSync as Ta}from"fs";import{join as gt,resolve as IA,dirname as Iq}from"path";import{existsSync as zV,readFileSync as kc,writeFileSync as YV,mkdirSync as GV}from"fs";import{join as bc}from"path";import{existsSync as QV,readFileSync as ZV,writeFileSync as eq,mkdirSync as tq}from"fs";import{join as EA}from"path";import{readFileSync as cq}from"fs";var JV=[{publisher:"kanonak.org",package_:"core-kanonak"},{publisher:"kanonak.org",package_:"site"},{publisher:"kanonak.org",package_:"link"},{publisher:"kanonak.org",package_:"look-tokens"},{publisher:"kanonak.org",package_:"look-styles"},{publisher:"kanonak.org",package_:"look"},{publisher:"kanonak.org",package_:"universal-look"}];function jA(t){return JV}function vs(t){return`${t.publisher}/${t.package_}`}function NA(t,e=[]){let n={"kanonak.org/look-styles":"pages render UNSTYLED \u2014 generated CSS stops at the :root token block","kanonak.org/look-tokens":"the :root block loses the universal design-token floor (colors, fonts, spacing)","kanonak.org/universal-look":"resources without their own look render as an empty HTML comment","kanonak.org/look":"band vocabulary (Hero, PropertyList, \u2026) is unresolvable \u2014 declared looks cannot render","kanonak.org/site":"the site vocabulary (content, navigation) is unresolvable \u2014 the base stylesheet cannot bind","kanonak.org/core-kanonak":"the Package/Publisher classes are unresolvable \u2014 package and publisher pages degrade","kanonak.org/link":"link vocabulary is unresolvable \u2014 cross-reference styling degrades"},r=[];for(let a of t)if(a.origin==="missing"){let s=vs(a),i=n[s]??"whatever this package contributes to rendering is lost";r.push(`Render-stack package ${s} is MISSING (${a.reason??"unknown reason"}) \u2014 ${i}. Fix: kanonak install ${s} (as the user running the render), or restore network access to ${a.publisher}.`)}else a.resolvedButNotInCatalog&&r.push(`Render-stack package ${vs(a)} resolved (${a.origin}) but is NOT in the parsed catalog \u2014 this is a closure-scoping bug; please report it.`);for(let a of e)r.push(`Import edge ${a.fromNamespace} \u2192 ${a.publisher}/${a.packageName} ${a.constraint} did NOT resolve (${a.reason==="no-compatible-version"?"no compatible version in the repository":"resolution threw"}) \u2014 every statement ${a.fromNamespace} authors against ${a.publisher}/${a.packageName} entities is dropped from the parse as an unresolved predicate (a look declaration loses its bands and pages render empty; see typescript#91). Fix: add a ${a.constraint}-compatible version of ${a.publisher}/${a.packageName} to the workspace or cache (kanonak install ${a.publisher}/${a.packageName}), or bump the import in ${a.fromNamespace}.`);return r}function PA(t){let{publisher:e,availablePublishers:n,catalog:r,lookRenderer:a,localNamespaces:s,rawByNsKey:i,renderStack:o,producers:l,lockSource:c,releaseLocks:u,configSource:p}=t,f=new Map,h=new Map,g=new Map,m=new Set;for(let y of r){if(!(y instanceof V))continue;let v=y.namespace||"";if(!s.has(v))continue;f.set(`${v}/${y.name}`,y);let k=v.split("/")[1]??"",[w,S]=k.split("@");if(!w||!S)continue;let A=At(S);A&&(m.has(k)||(m.add(k),h.has(w)||h.set(w,[]),h.get(w).push({verStr:S,version:A})),y.name===w&&g.set(k,y))}for(let y of h.values())y.sort((v,k)=>_e(k.version,v.version));return{publisher:e,availablePublishers:n,catalog:r,lookRenderer:a,localNamespaces:s,rawByNsKey:i,bySubject:f,pkgVersions:h,pkgSelfByVer:g,renderStack:o,...l?{producers:l}:{},...c?{lockSource:c}:{},...u?{releaseLocks:u}:{},...p?{configSource:p}:{}}}async function ws(t,e={}){let n=new me,r=new Kr(n),a=[],s=[];for(let K of Kt(t)){let E;try{E=kc(K,"utf-8")}catch{continue}let U;try{U=n.parse(E).metadata?.namespace_}catch{continue}if(!U?.version)continue;let R=U.version,ce=K.replace(/\.kan\.yml$/,".kanonak.lock");s.push({publisher:U.publisher,package_:U.package_,verStr:ee(R),version:R,source:E,...zV(ce)?{releaseLock:kc(ce,"utf-8")}:{}})}s.sort((K,E)=>_e(E.version,K.version));for(let K of s)await r.saveDocumentAsync(n.parse(K.source),`${K.publisher}/${K.package_}@${K.verStr}`),a.push(K);let i=[...new Set(a.map(K=>K.publisher))].sort(),o=e.publisher;if(o){if(!i.includes(o))throw new Error(`Publisher "${o}" not found in workspace. Available: ${i.join(", ")||"(none)"}`)}else if(i.length===1)o=i[0];else throw i.length===0?new Error(`No Kanonak packages found under ${t}`):new Error(`Workspace has multiple publishers (${i.join(", ")}). Pass --publisher <domain> to choose which one to serve.`);let l=new Set,c=new Map;for(let K of a)K.publisher===o&&(l.add(`${K.publisher}/${K.package_}@${K.verStr}`),c.set(`${K.package_}@${K.verStr}`,K.source));let u=$r(),p=new Ya(u,!0,n),f={};e.httpCache&&(f.getFromCache=e.httpCache.getFromCache,f.onFetch=e.httpCache.onFetch),e.fetchFn&&(f.fetchFn=e.fetchFn),e.packageUrlTemplates&&(f.packageUrlTemplates=e.packageUrlTemplates),e.templateTrustedPublishers&&(f.templateTrustedPublishers=e.templateTrustedPublishers),e.onTemplateTrustedRead&&(f.onTemplateTrustedRead=e.onTemplateTrustedRead);let h=e.repository??new za(r,p,new Ka(f)),g=e.log??(()=>{}),m=jA(void 0),y=[],v=K=>K.map(E=>E.metadata.namespace_?.version).filter(E=>E!==void 0).sort((E,U)=>_e(U,E)).map(ee);if(!e.repository){g(`[render-stack] resolving ${m.length} ambient look-stack package(s); cache: ${u}`);let K=new Mt({...e.fetchFn?{fetchFn:e.fetchFn}:{},...e.packageUrlTemplates?{packageUrlTemplates:e.packageUrlTemplates}:{}});for(let E of m){let U=vs(E),R=await r.getDocumentsByNamespaceAsync(E.publisher,E.package_);if(R.length>0){let ae=v(R);y.push({...E,origin:"workspace",versions:ae}),g(`[render-stack] ${U} \u2014 workspace (${ae.join(", ")})`);continue}let ce=await p.getDocumentsByNamespaceAsync(E.publisher,E.package_);if(ce.length>0){let ae=v(ce);y.push({...E,origin:"cache",versions:ae}),g(`[render-stack] ${U} \u2014 cache (${ae.join(", ")})`);continue}try{let ae=await K.getLockEntry(E.publisher,E.package_);if(!ae){let Le=`publisher ${E.publisher} reachable but its lock does not pin ${E.package_}`;y.push({...E,origin:"missing",reason:Le}),g(`[render-stack] ${U} \u2014 MISSING: ${Le}`);continue}let se=ae.version,{url:Ne,content:qe}=await K.fetchLockedSource(E.publisher,E.package_,ae);await r.saveDocumentAsync(n.parse(qe),`${E.publisher}/${E.package_}@${se}`);try{let Le=bc(u,E.publisher);GV(Le,{recursive:!0}),YV(bc(Le,`${E.package_}@${se}.kan.yml`),qe,"utf-8"),y.push({...E,origin:"fetched",versions:[se]}),g(`[render-stack] ${U}@${se} \u2014 fetched from ${Ne}, installed to cache`)}catch(Le){y.push({...E,origin:"fetched",versions:[se]}),g(`[render-stack] ${U}@${se} \u2014 fetched from ${Ne}, but cache ${u} is NOT WRITABLE (${Le.message}); usable for this load only \u2014 every load will re-fetch it`)}}catch(ae){let se=`fetch failed: ${ae.message}`;y.push({...E,origin:"missing",reason:se}),g(`[render-stack] ${U} \u2014 MISSING: ${se}`)}}}let k=(await r.getAllDocumentsAsync()).filter(K=>K.metadata.namespace_?.publisher===o);for(let K of m)k.push(...await h.getDocumentsByNamespaceAsync(K.publisher,K.package_));let w=[],S=await rr(k,h,{onUnresolvedEdge:K=>w.push(K)}),A=h;if(!e.repository){for(let K of m)S.add(vs(K));A=new ba(h,S)}let C=await new je(n).parseKanonaks(A),N=new oa(C),_=(K,E)=>ze(C,{publisher:K,package_:E,name:E}).length>0,B;if(e.repository){B=[];for(let K of m){let E=await h.getDocumentsByNamespaceAsync(K.publisher,K.package_);B.push(E.length>0?{...K,origin:"repository",versions:v(E)}:{...K,origin:"missing",reason:"not present in the caller-supplied repository"})}}else B=y.map(K=>K.origin==="missing"||_(K.publisher,K.package_)?K:{...K,resolvedButNotInCatalog:!0});let X=NA(B,w);for(let K of X)g(`[render-stack] WARNING: ${K}`);let pe={contractSource:"universal-default",cachePath:u,packages:B,warnings:X},J;try{J=kc(bc(t,"kanonak.lock"),"utf-8")}catch{J=XV(o,a,n)}let Q;try{Q=kc(bc(t,".well-known","kanonak.json"),"utf-8")}catch{Q=void 0}let H=new Map;for(let K of a)K.publisher===o&&K.releaseLock!==void 0&&H.set(`/${K.package_}/${K.verStr}/kanonak.lock`,K.releaseLock);return PA({publisher:o,availablePublishers:i,catalog:C,lookRenderer:N,localNamespaces:l,rawByNsKey:c,renderStack:pe,...H.size>0?{releaseLocks:H}:{},...J?{lockSource:J}:{},...Q?{configSource:Q}:{}})}function XV(t,e,n){let r=new Map,a=new Map;for(let i of e){if(i.publisher!==t)continue;r.has(i.package_)||r.set(i.package_,{verStr:i.verStr,source:i.source});let o=a.get(i.package_)??[];o.some(l=>no(l.version,i.version))||o.push({version:i.version,locked:xA(t,i.package_,i.verStr,i.source)}),a.set(i.package_,o)}if(r.size===0)return;let s={};for(let i of[...r.keys()].sort()){let{verStr:o,source:l}=r.get(i),c={},u;try{u=n.parse(l).metadata?.imports}catch{u=void 0}for(let f of u?.[t]??[]){let h=r.get(f.packageName);h&&(c[`${t}/${f.packageName}`]=h.verStr)}let p={};for(let f of Object.keys(c).sort())p[f]=c[f];s[`${t}/${i}`]={...xA(t,i,o,l),dependencies:p,lines:a.get(i).map(f=>f.locked)}}return Ia.dump({version:"1",lastUpdated:"",packages:s},{lineWidth:-1,sortKeys:!1,quotingType:'"'})}function xA(t,e,n,r){return{version:n,resolved:`https://${t}/${e}/${n}.kan.yml`,integrity:Dn(r)}}async function nq(t,e={}){let n=new me,r=An(t),a=r.kind==="resource"?r.uri.publisher:r.publisher,s=e.log??(()=>{}),i=e.cacheRoot??$r(),o=(E,U,R)=>EA(i,E,`${U}@${R}.kan.yml`),l=new Set,c=new Set,u=new Map,p=new Ka({getFromCache:(E,U,R)=>{let ce=o(E,U,R),ae=QV(ce)?ZV(ce,"utf-8"):null;return ae!==null&&l.add(`${E}/${U}`),ae},onFetch:(E,U,R,ce)=>{c.add(`${E}/${U}`);try{let ae=EA(i,E);tq(ae,{recursive:!0}),eq(o(E,U,R),ce,"utf-8")}catch(ae){u.set(`${E}/${U}`,ae.message),s(`[render] fetched ${E}/${U}@${R} but cache ${i} is NOT WRITABLE (${ae.message}); usable for this load only \u2014 every load will re-fetch it`)}},...e.fetchFn?{fetchFn:e.fetchFn}:{},...e.packageUrlTemplates?{packageUrlTemplates:e.packageUrlTemplates}:{},...e.templateTrustedPublishers?{templateTrustedPublishers:e.templateTrustedPublishers}:{},...e.onTemplateTrustedRead?{onTemplateTrustedRead:e.onTemplateTrustedRead}:{}}),f=new Mt(e.fetchFn?{fetchFn:e.fetchFn}:void 0),h;if(r.kind==="resource"){let E=r.uri.version;h=[E?{package_:r.uri.package_,version:`${E.major}.${E.minor}.${E.patch}`}:{package_:r.uri.package_}]}else if(r.kind==="package"){let E=r.version;h=[E?{package_:r.package_,version:`${E.major}.${E.minor}.${E.patch}`}:{package_:r.package_}]}else h=((await f.getConfig(a)).featured_packages??[]).map(E=>({package_:E}));let g=async(E,U,R)=>{try{let ce=R?n.buildImport(U,"=",R,E):n.buildImport(U,"*","0.0.0",E),ae=await p.getHighestCompatibleVersionAsync(E,ce);return ae?{doc:ae}:{doc:null,error:`${E} did not resolve ${U}${R?`@${R}`:""} (not in its index, or unreachable)`}}catch(ce){return{doc:null,error:ce.message}}},m=[],y=[];for(let E of h){let{doc:U,error:R}=await g(a,E.package_,E.version);U?m.push(U):R&&y.push(R)}if(m.length===0)throw new Error(`Could not fetch any package for address "${t}" from publisher "${a}".`+(y.length>0?` Reasons: ${y.join("; ")}`:""));let v=jA(),k="universal-default",w=E=>E.map(U=>U.metadata.namespace_?.version).filter(U=>U!==void 0).sort((U,R)=>_e(R,U)).map(ee);s(`[render-stack] resolving ${v.length} ambient look-stack package(s) (contract: ${k}); cache: ${i}`);let S=[],A=[];for(let E of v){let U=vs(E),{doc:R,error:ce}=await g(E.publisher,E.package_,void 0);if(R){S.push(R);let ae=w([R]),se=c.has(U)?"fetched":l.has(U)?"cache":"fetched";A.push({...E,origin:se,versions:ae}),s(`[render-stack] ${U} \u2014 ${se} (${ae.join(", ")})`+(u.has(U)?" [cache write FAILED \u2014 will re-fetch next load]":""))}else A.push({...E,origin:"missing",reason:ce??"unresolved"}),s(`[render-stack] ${U} \u2014 MISSING: ${ce??"unresolved"}`)}let C=[],N=await rr([...m,...S],p,{onUnresolvedEdge:E=>C.push(E)}),_=new ba(p,N),B=await new je(n).parseKanonaks(_),X=new oa(B),pe=A.map(E=>E.origin==="missing"||ze(B,{publisher:E.publisher,package_:E.package_,name:E.package_}).length>0?E:{...E,resolvedButNotInCatalog:!0}),J=NA(pe,C);for(let E of J)s(`[render-stack] WARNING: ${E}`);let Q={contractSource:k,cachePath:i,packages:pe,warnings:J},H=new Set,K=new Map;for(let E of await p.getAllDocumentsAsync()){let U=E.metadata.namespace_;if(!U?.version||U.publisher!==a)continue;let R=ee(U.version),ce=`${U.publisher}/${U.package_}@${R}`;H.add(ce);let ae=await p.getDocumentContentAsync(ce);ae!==null&&K.set(`${U.package_}@${R}`,ae)}return PA({publisher:a,availablePublishers:[a],catalog:B,lookRenderer:X,localNamespaces:H,rawByNsKey:K,renderStack:Q})}function _A(t){let{lookRenderer:e,publisher:n,renderStack:r,catalog:a}=t,s=e.explainStylesheet(e.publisherSubject(n)),i=[...s.tokens.entries()].map(([h,g])=>({name:h,value:g.value,source:`${g.sourceNamespace}/${g.sourceName}`,level:g.level})),o=s.baseStylesheet,l={present:o.css!==void 0,...o.sourceNamespace!==void 0?{source:o.sourceNamespace}:{},...o.scope!==void 0?{scope:o.scope}:{},...o.css!==void 0?{bytes:o.css.length}:{},...o.problem!==void 0?{problem:o.problem}:{},candidates:o.candidates},c=new Map;for(let h of a){let g=h.namespace;g&&c.set(g,(c.get(g)??0)+1)}let u=[...c.entries()].map(([h,g])=>({namespace:h,resources:g})).sort((h,g)=>h.namespace.localeCompare(g.namespace)),p=e.expressionFailures().map(h=>({carrier:h.carrier,stage:h.stage,reason:h.reason})),f=p.map(h=>h.stage==="compile"?`Expression carrier "${h.carrier}" did not compile: ${h.reason} Consequence: that value renders as nothing (and a parent operation consuming it may drop its whole tier). Fix: use a tx.Expression node class the runner implements, or remove the carrier.`:`Expression carrier "${h.carrier}" failed to evaluate: ${h.reason} Consequence: that value renders as nothing. Fix: correct the expression, or make a value that may be absent explicitly optional.`);return{publisher:n,renderStack:{contractSource:r.contractSource,cachePath:r.cachePath,packages:r.packages.map(h=>({package_:vs(h),origin:h.origin,...h.versions!==void 0?{versions:h.versions}:{},...h.reason!==void 0?{reason:h.reason}:{},...h.resolvedButNotInCatalog!==void 0?{resolvedButNotInCatalog:h.resolvedButNotInCatalog}:{}}))},stylesheet:{tokens:i,baseStylesheet:l,...s.look?{look:{sourceClass:`${s.look.sourceClass.publisher}/${s.look.sourceClass.package_}/${s.look.sourceClass.name}`}}:{}},expressionCarriers:p,catalog:u,warnings:[...r.warnings,...s.warnings.filter(h=>!r.warnings.includes(h)),...f]}}function rq(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function aq(t){let e=rq,n=t.warnings.length===0,r=t.expressionCarriers.map(u=>`<tr><td><code>${e(u.carrier)}</code></td><td>${e(u.reason)}</td></tr>`).join(`
|
|
585
585
|
`),a=t.warnings.length===0?'<p class="ok">\u2713 No problems detected \u2014 the render stack is fully resolved and pages should be styled.</p>':t.warnings.map(u=>`<div class="warn">\u26A0 ${e(u)}</div>`).join(`
|
|
586
586
|
`),s=t.renderStack.packages.map(u=>{let p=u.origin!=="missing"&&!u.resolvedButNotInCatalog,f=u.origin==="missing"?'<span class="bad">MISSING</span>':u.resolvedButNotInCatalog?`<span class="bad">${e(u.origin)} (not in catalog)</span>`:`<span class="good">${e(u.origin)}</span>`,h=u.reason?e(u.reason):e((u.versions??[]).join(", "));return`<tr class="${p?"":"row-bad"}"><td><code>${e(u.package_)}</code></td><td>${f}</td><td>${h}</td></tr>`}).join(`
|
|
587
587
|
`),i=t.stylesheet.baseStylesheet,o=i.present?`<p><span class="good">\u2713 present</span> \u2014 <code>${e(i.source??"")}</code> (${i.bytes} bytes, ${e(i.scope??"")})</p>`:`<p><span class="bad">\u2717 MISSING</span>${i.problem?` \u2014 ${e(i.problem)}`:""}${i.candidates.length>0?`<br>candidates considered: ${i.candidates.map(u=>`<code>${e(u)}</code>`).join(", ")}`:""}</p><p>Without the base stylesheet, generated CSS stops at the <code>:root</code> token block and pages appear unstyled.</p>`,l=t.stylesheet.tokens.map(u=>`<tr><td><code>--kan-${e(u.name)}</code></td><td><code>${e(u.value)}</code></td><td><code>${e(u.source)}</code></td><td>${e(u.level)}</td></tr>`).join(`
|
|
@@ -652,54 +652,55 @@ ${r}
|
|
|
652
652
|
${c}
|
|
653
653
|
</table>
|
|
654
654
|
</body>
|
|
655
|
-
</html>`}var
|
|
656
|
-
`))}async function mV(t,e,n,r,a){let s=await t.getPackageUrl(n,r,a),i=await e(s,n);if(i.status===404)return!1;if(!i.ok)throw await mn(`${n}/${r}@${a}`,s,i);return await i.arrayBuffer(),!0}async function gV(t,e){if(e.rawByNsKey.size===0)return;let n=async(s,i)=>{let o=gt(t,i);Ta(fV(o),{recursive:!0}),en(o,(await Hi(e,s)).body,"utf-8")};await n("/.well-known/kanonak.json",".well-known/kanonak.json"),e.lockSource&&await n("/kanonak.lock","kanonak.lock");for(let s of e.rawByNsKey.keys()){let[i,o]=s.split("@");!i||!o||await n(`/${i}/${o}.kan.yml`,`${i}/${o}.kan.yml`)}for(let s of e.releaseLocks?.keys()??[])await n(s,s.slice(1));let r=e.releaseLocks?.size??0,a=e.rawByNsKey.size-r;console.log(`Wrote publisher endpoints: .well-known/kanonak.json${e.lockSource?", kanonak.lock":""}, ${e.rawByNsKey.size} raw package source(s), and ${r} release lock(s)${a>0?`. ${a} version(s) have no release lock, so theirs answer 404: run \`kanonak release-lock\` and commit what it writes`:""}.`)}async function yV(t,e,n){let r=new Map,a=new Map;for(let o of e){let l=o.namespace||"",[,c]=l.split("/");if(!c)continue;let[u,p]=c.split("@");if(!u||!p||o.name!==u)continue;let f=p.split(".").map(Number);if(f.length!==3||f.some(m=>Number.isNaN(m)))continue;let h={verStr:p,major:f[0],minor:f[1],patch:f[2]};r.has(u)||r.set(u,[]),r.get(u).push({resource:o,ver:h});let g=a.get(u);(!g||h.major>g.ver.major||h.major===g.ver.major&&h.minor>g.ver.minor||h.major===g.ver.major&&h.minor===g.ver.minor&&h.patch>g.ver.patch)&&a.set(u,{resource:o,ver:h})}let s=async(o,l)=>{try{return Ta(o,{recursive:!0}),en(gt(o,"index.html"),await n.renderDocument(l),"utf-8"),en(gt(o,`${l.name}.css`),n.renderStylesheet(l),"utf-8"),!0}catch{return!1}},i=0;for(let[o,l]of r)for(let{resource:c,ver:u}of l)await s(gt(t,o,u.verStr),c)&&(i+=1);for(let[o,{resource:l}]of a){let c=gt(t,o);try{if(Ta(c,{recursive:!0}),n.hasDeclaredView(l))en(gt(c,"index.html"),await n.renderDocument(l,{bareOverview:!0}),"utf-8"),en(gt(c,`${l.name}.css`),n.renderStylesheet(l),"utf-8");else{let u=(r.get(o)??[]).slice().sort((p,f)=>f.ver.major-p.ver.major||f.ver.minor-p.ver.minor||f.ver.patch-p.ver.patch).map(p=>p.ver.verStr);en(gt(c,"index.html"),n.renderPackageVersionList(o,u,l),"utf-8"),en(gt(c,`${l.name}.css`),n.renderStylesheet(l),"utf-8")}i+=1}catch{}}return i}async function kV(t,e,n){let r="",a=new Map;for(let i of e){let l=(i.namespace||"").split("/"),[c]=(l[1]??"").split("@");if(!l[0]||!c||(r||(r=l[0]),i.name!==c))continue;let u=(l[1]??"").split("@")[1]??"",p=u.split(".").map(Number);if(p.length!==3||p.some(g=>Number.isNaN(g)))continue;let f={verStr:u,major:p[0],minor:p[1],patch:p[2]},h=a.get(c);(!h||f.major>h.ver.major||f.major===h.ver.major&&f.minor>h.ver.minor||f.major===h.ver.major&&f.minor===h.ver.minor&&f.patch>h.ver.patch)&&a.set(c,{resource:i,ver:f})}if(!r||a.size===0)return;let s=n.publisherSubject(r);en(gt(t,"index.html"),await n.renderDocument(s,{rootIndex:!0}),"utf-8"),en(gt(t,"index.css"),n.renderStylesheet(s),"utf-8")}function bV(t,e){let n=new Map;for(let a of e){let s=a.namespace||"",[,i]=s.split("/");if(!i)continue;let[o,l]=i.split("@");if(!o||!l)continue;let c=l.split(".").map(Number);if(c.length!==3||c.some(p=>Number.isNaN(p)))continue;let u=`${o}/${a.name}`;n.has(u)||n.set(u,[]),n.get(u).push({verStr:l,major:c[0],minor:c[1],patch:c[2]})}let r=0;for(let[a,s]of n){let[i,o]=a.split("/");s.sort((p,f)=>f.major-p.major||f.minor-p.minor||f.patch-p.patch);let l=s[0];en(gt(t,i,`${o}.html`),ch(`/${i}/${l.verStr}/${o}`),"utf-8"),r+=1;let c=new Set;for(let p of s){if(c.has(p.major))continue;c.add(p.major);let f=gt(t,i,String(p.major));Ta(f,{recursive:!0}),en(gt(f,`${o}.html`),ch(`/${i}/${p.verStr}/${o}`),"utf-8"),r+=1}let u=new Set;for(let p of s){let f=`${p.major}.${p.minor}`;if(u.has(f))continue;u.add(f);let h=gt(t,i,f);Ta(h,{recursive:!0}),en(gt(h,`${o}.html`),ch(`/${i}/${p.verStr}/${o}`),"utf-8"),r+=1}}return r}function ch(t){let e=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");return`<!doctype html>
|
|
657
|
-
<meta charset="utf-8">
|
|
658
|
-
<title>Redirecting\u2026</title>
|
|
659
|
-
<meta http-equiv="refresh" content="0; url=${e}">
|
|
660
|
-
<link rel="canonical" href="${e}">
|
|
661
|
-
<p>If you are not redirected automatically, follow this <a href="${e}">link</a>.</p>
|
|
662
|
-
`}import{Command as RA}from"commander";import{writeFileSync as uh,mkdirSync as bc}from"fs";import{join as ph,resolve as vV,dirname as fh}from"path";var cr="kanonak.org",ur="site",TA={publisher:"kanonak.org",package_:"formats",name:"html"},OA={publisher:"kanonak.org",package_:"derivation",name:"default"};function IA(){let t=new RA("site").description("Materialize a publisher's site \u2014 every StaticPage and AggregateView in the workspace gets rendered to its declared output path under the --out directory.");return t.addCommand(wV()),t}function wV(){return new RA("build").description("Walk the workspace, find every StaticPage and AggregateView, and write each materialized artifact to its declared output path under the --out directory.").option("--out <dir>","Output base directory.","./_site").action(async t=>{try{await $V(t)}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}})}async function $V(t){let e=new me,n=new je,r=await ct(process.cwd(),e),a=await n.parseKanonaks(r),s=vV(t.out);bc(s,{recursive:!0});let i=await r.getAllDocumentsAsync(),o=new Set;for(let m of i){let y=m.metadata.namespace_?.toString();y&&o.add(y)}let l={publisher:cr,package_:ur,name:"StaticPage"},c={publisher:cr,package_:ur,name:"ResourcePage"},u={publisher:cr,package_:ur,name:"AggregateView"},p=Jn(a,l).filter(m=>o.has(m.namespace||"")),f=Jn(a,c).filter(m=>o.has(m.namespace||"")),h=Jn(a,u).filter(m=>o.has(m.namespace||""));console.log(`Found ${p.length} StaticPage(s), ${f.length} ResourcePage(s), and ${h.length} AggregateView(s) in the workspace.`);let g=new bs;for(let m of p){let y=dh(m,cr,ur,"outputPath")??`${m.name}.html`,v=wa(m,TA,OA,a);if(!v){console.warn(` [skip] ${m.name}: no HTML/default derivation found (check class hierarchy or universal-derivations is loaded)`);continue}let k=hh(a,v.transformation);if(!k){console.warn(` [skip] ${m.name}: transformation ${mh(v.transformation)} not found`);continue}let w=await g.run({transformation:k,instances:[m],allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(w.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let S=ph(s,y);bc(fh(S),{recursive:!0}),uh(S,w[0].content,"utf-8"),console.log(` wrote ${S} (StaticPage ${m.name})`)}for(let m of f){let y=dh(m,cr,ur,"outputPath")??`${m.name}.html`,v=LA(m,cr,ur,"pageOf");if(!v){console.warn(` [skip] ${m.name}: no pageOf declared`);continue}let k=a.find(N=>N instanceof q&&N.name===v.name&&(N.namespace||"").startsWith(`${v.publisher}/${v.package_}@`));if(!k){console.warn(` [skip] ${m.name}: pageOf target ${v.publisher}/${v.package_}/${v.name} not found`);continue}let w=wa(k,TA,OA,a);if(!w){console.warn(` [skip] ${m.name}: no derivation for target ${k.name}`);continue}let S=hh(a,w.transformation);if(!S){console.warn(` [skip] ${m.name}: transformation ${mh(w.transformation)} not found`);continue}let A=await g.run({transformation:S,instances:[k],allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(A.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let C=ph(s,y);bc(fh(C),{recursive:!0}),uh(C,A[0].content,"utf-8"),console.log(` wrote ${C} (ResourcePage ${m.name} \u2192 ${k.name})`)}for(let m of h){let y=dh(m,cr,ur,"outputPath");if(!y){console.warn(` [skip] ${m.name}: no outputPath declared`);continue}let v=LA(m,cr,ur,"scopeClass");if(!v){console.warn(` [skip] ${m.name}: no scopeClass declared`);continue}let k={publisher:v.publisher,package_:v.package_,name:v.name},w=SV(m,cr,ur,"scopeSources"),S=AV(m);if(!S){console.warn(` [skip] ${m.name}: no transformation declared`);continue}let A=hh(a,S);if(!A){console.warn(` [skip] ${m.name}: transformation ${mh(S)} not found`);continue}let C=await EV(w,r),N=[],_=new Set;for(let pe of C){let J=await _V(pe,r,e,n),Q=Jn(J,k);for(let H of Q){let K=`${H.namespace}/${H.name}`;_.has(K)||(_.add(K),N.push(H))}}console.log(` ${m.name}: ${N.length} instance(s) of ${k.publisher}/${k.package_}/${k.name} across ${C.length} scope(s)`);let B=await g.run({transformation:A,instances:N,allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(B.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let X=ph(s,y);bc(fh(X),{recursive:!0}),uh(X,B[0].content,"utf-8"),console.log(` wrote ${X} (AggregateView ${m.name})`)}console.log("Site build complete.")}function dh(t,e,n,r){for(let a of t.statement)if(a instanceof Ce&&vc(a,e,n,r))return a.object}function SV(t,e,n,r){for(let a of t.statement){if(!(a instanceof he)||!vc(a,e,n,r))continue;let s=[];for(let i of a.object??[]){let o=i.value;typeof o=="string"&&s.push(o)}return s}return[]}function LA(t,e,n,r){for(let a of t.statement)if(a instanceof de&&vc(a,e,n,r)&&a.object instanceof D)return{publisher:a.object.subject.publisher,package_:a.object.subject.package_,name:a.object.subject.name}}function AV(t){for(let e of t.statement)if(e instanceof Ae&&vc(e,cr,ur,"transformation"))return xV(e.object)}function xV(t){let e,n,r,a;for(let s of t.statement){if(!(s instanceof Ce))continue;let i=s.predicate?.subject?.name;i==="publisher"?e=s.object:i==="package"?n=s.object:i==="version"?r=s.object:i==="name"&&(a=s.object)}if(!(!e||!n||!r||!a))return{publisher:e,package_:n,version:r,name:a}}function vc(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function hh(t,e){let n=`${e.publisher}/${e.package_}@${e.version}`;for(let r of t)if(r instanceof q&&r.name===e.name&&r.namespace===n)return r}function mh(t){return`${t.publisher}/${t.package_}@${t.version}/${t.name}`}async function EV(t,e){let n=[];for(let r of t){let a=r.indexOf("@*");if(a===-1){n.push(r);continue}let s=r.substring(0,a),i=s.indexOf("/");if(i===-1){n.push(r);continue}let o=s.substring(0,i),l=s.substring(i+1),c=await e.getDocumentsByNamespaceAsync(o,l);for(let u of c){let p=u.metadata.namespace_;if(!p)continue;let f=p.version;n.push(`${p.publisher}/${p.package_}@${f.major}.${f.minor}.${f.patch}`)}}return n}async function _V(t,e,n,r){let a=t.indexOf("/"),s=t.indexOf("@");if(a===-1||s===-1)return[];let i=t.substring(0,a),o=t.substring(a+1,s),l=t.substring(s+1),c=await e.getDocumentsByNamespaceAsync(i,o);for(let u of c){let p=u.metadata.namespace_?.version;if(p&&`${p.major}.${p.minor}.${p.patch}`===l){let f=new at(u,e);return r.parseKanonaks(f)}}return[]}import{Command as CV}from"commander";import{createServer as DA}from"http";import{watch as FA}from"fs";import{resolve as jV}from"path";var gh={"Access-Control-Allow-Origin":"*"};function qA(t,e){t.writeHead(e.status,{...e.headers,...gh}),t.end(e.body)}function MA(t,e){let n=t.renderStack,r=n.packages.filter(a=>a.origin==="missing").length;n.warnings.length===0?console.log(`[render-stack] \u2713 all ${n.packages.length} look-stack package(s) resolved \u2014 pages will render styled`):(console.error(`[render-stack] \u2717 ${n.warnings.length} problem(s)`+(r>0?` (${r} package(s) missing)`:"")+" \u2014 pages may render unstyled or incomplete"),console.error(`[render-stack] diagnose: http://localhost:${e}/.well-known/kanonak-render`))}function VA(){return new CV("serve").description("Serve Kanonak resources as a live origin \u2014 the same rendering `kanonak publish` produces, plus the machine-facing publisher endpoints, from one process. With --publisher it serves that single publisher (closed world, like the published site); without it, it serves any publisher per request path and links across publishers (open world). Use --watch for a dev preview.").option("--root <dir>","Workspace root to serve.",".").option("--port <number>","Port to listen on.","8080").option("--publisher <domain>","Serve ONLY this publisher (closed world \u2014 no links to other publishers, mirroring the published site). Omit for the open-world model.").option("--watch","Re-load on .kan.yml changes.",!1).action(async t=>{let e=jV(t.root),n=Number(t.port);if(!Number.isInteger(n)||n<=0||n>65535)throw new Error(`Invalid --port "${t.port}".`);if(t.publisher){let r;try{r=await ws(e,{publisher:t.publisher,log:console.log,...mt()})}catch(a){console.error(`[error] ${a.message}`),process.exitCode=1;return}NV(e,n,t,r)}else PV(e,n,t)})}function NV(t,e,n,r){let a=r;MA(a,e);let s=async i=>{let o=Date.now();a=await ws(t,{...n.publisher?{publisher:n.publisher}:{},log:console.log,...mt()});let l=a.availablePublishers.filter(c=>c!==a.publisher);console.log(`[model] serving ${a.publisher} \u2014 ${a.pkgVersions.size} package(s)${i?` (${i})`:""} in ${Date.now()-o}ms`+(l.length?` [also in workspace: ${l.join(", ")} \u2014 switch with --publisher]`:"")),MA(a,e)};if(n.watch){let i;FA(t,{recursive:!0},(o,l)=>{!l||!String(l).endsWith(".kan.yml")||(clearTimeout(i),i=setTimeout(()=>{s(`changed: ${l}`).catch(c=>console.error("[reload error]",c.message))},150))}),console.log("[watch] re-loading on .kan.yml changes")}DA(async(i,o)=>{let l="/";try{let c=new URL(i.url??"/","http://localhost");l=decodeURIComponent(c.pathname);let u=await Hi(a,l,i.headers.accept??"");qA(o,u),console.log(`${u.status} ${i.method} ${l}${u.headers.Location?` -> ${u.headers.Location}`:""}`)}catch(c){o.writeHead(500,{"Content-Type":"text/plain; charset=utf-8",...gh}),o.end(String(c?.stack??c)),console.error(`500 ${l}: ${c?.message??c}`)}}).listen(e,()=>{console.log(`kanonak origin server \u2192 http://localhost:${e}/ (root=${t}, publisher=${a.publisher})`),console.log(`render diagnostics \u2192 http://localhost:${e}/.well-known/kanonak-render`)})}function PV(t,e,n){let r=new jA({root:t,log:console.log,...mt()});if(n.watch){let a;FA(t,{recursive:!0},(s,i)=>{!i||!String(i).endsWith(".kan.yml")||(clearTimeout(a),a=setTimeout(()=>{r.clearCache(),console.log("[watch] cleared model cache")},150))}),console.log("[watch] clearing model cache on .kan.yml changes")}DA(async(a,s)=>{let i="/";try{let o=new URL(a.url??"/","http://localhost");i=decodeURIComponent(o.pathname);let l=await r.handle(i,a.headers.accept??"");qA(s,l),console.log(`${l.status} ${a.method} ${i}${l.headers.Location?` -> ${l.headers.Location}`:""}`)}catch(o){s.writeHead(502,{"Content-Type":"text/plain; charset=utf-8",...gh}),s.end(String(o?.message??o)),console.error(`502 ${i}: ${o?.message??o}`)}}).listen(e,()=>{console.log(`kanonak request-driven origin \u2192 http://localhost:${e}/ (root=${t})`),console.log("[request-driven] no publisher pinned \u2014 derive per path: /{publisher}/{package}/{version}/{resource}"),console.log("[request-driven] render diagnostics per publisher: /{publisher}/.well-known/kanonak-render")})}import{Command as TV}from"commander";import{resolve as OV,join as LV}from"path";function KA(){return new TV("verify").description("Verify cached packages against kanonak.lock (the cache is untrusted). With --remote, also re-fetch each package from its origin and compare. Exits non-zero on any integrity mismatch.").option("--workspace <dir>","Workspace directory containing kanonak.lock.",process.cwd()).option("--remote","Also re-fetch each package from its recorded origin and verify.",!1).action(async t=>{await IV(t)})}function RV(t){let e=t.indexOf("/");if(!(e<0))return{publisher:t.slice(0,e),package_:t.slice(e+1)}}async function IV(t){let e=OV(t.workspace),n=yr(LV(e,"kanonak.lock"));n||(console.error(`No kanonak.lock found in ${e} \u2014 nothing to verify (run \`kanonak install\` first).`),process.exit(1));let r=new On,a=t.remote?new It(mt()):void 0,s=Object.entries(n.packages);console.log(`Verifying ${s.length} locked package(s) against kanonak.lock${t.remote?" (cache + origin)":" (cache)"}\u2026`);let i=0,o=0,l=0,c=0;for(let[p,f]of s){let h=RV(p);if(!h){console.error(` \u2717 ${p} \u2014 unparseable lock key`),o+=1;continue}let{publisher:g,package_:m}=h,y=r.get(g,m,f.version);if(y===null?(console.warn(` ? ${p} \u2014 not in cache`),l+=1):va(y)===f.integrity?i+=1:(console.error(` \u2717 ${p} \u2014 CACHE does not match lock`),console.error(` lock: ${f.integrity}`),console.error(` cache: ${va(y)}`),o+=1),a){let v=await MV(a,g,m,f);v?(console.error(v),o+=1):c+=1}}let u=[`${i} cache OK`];t.remote&&u.push(`${c} origin OK`),l&&u.push(`${l} not cached`),u.push(`${o} mismatch`),console.log(`
|
|
663
|
-
${u.join(", ")}.`),o>0&&(console.error("Integrity verification FAILED \u2014 a package does not match the committed lock."),process.exit(1)),console.log("Integrity verified.")}async function MV(t,e,n,r){let a=`${e}/${n}`;try{let s=t.lockedSourceUrl(e,n,r),i=await mt().fetchFn(s,e);if(!i.ok)return` \u2717 ${a} \u2014 ${(await mn("origin",s,i)).message}`;let o=await i.text(),l=va(o);return l===r.integrity?void 0:` \u2717 ${a} \u2014 ORIGIN does not match lock (${s})
|
|
664
|
-
lock: ${r.integrity}
|
|
665
|
-
origin: ${l}`}catch(s){return` \u2717 ${a} \u2014 origin fetch failed: ${s.message}`}}import{Command as QV}from"commander";import{resolve as ZV,join as eK}from"path";import{homedir as tK}from"os";import{readFileSync as nK}from"fs";import{homedir as DV}from"os";import{join as bh}from"path";import{existsSync as FV,mkdirSync as qV,readFileSync as VV,writeFileSync as KV}from"fs";import{createHash as UV}from"crypto";var wc="Xenova/all-MiniLM-L6-v2",UA="q8",yh=32;async function BV(t){let{pipeline:e,env:n}=t.transformers;n.cacheDir=t.modelCacheDir??bh(DV(),".kanonak","models");let r=await e("feature-extraction",wc,{dtype:UA});return async a=>(await r(a,{pooling:"mean",normalize:!0})).tolist()}var kh=null;async function HV(){return kh||(kh=(async()=>{let t;try{t=await import("@huggingface/transformers")}catch(e){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
|
|
655
|
+
</html>`}var Ht={".html":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".svg":"image/svg+xml",".md":"text/markdown; charset=utf-8",".kan.yml":"application/yaml; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8"},Wt=(t,e,n,r)=>({status:t,headers:{"Content-Type":e,...r||{}},body:n}),ur=t=>Wt(404,Ht[".html"],`<!doctype html><meta charset=utf-8><title>404</title><h1>404</h1><p>Not found: ${t}</p>`),sq=t=>({status:301,headers:{Location:t},body:""}),iq=t=>({status:302,headers:{Location:t},body:""});function oq(t){switch(t.kind){case"exact":return{operator:we.Exact,version:Ln(t.major,t.minor,t.patch)};case"minor-pin":return{operator:we.Compatible,version:Ln(t.major,t.minor,0)};case"major-pin":return{operator:we.Major,version:Ln(t.major,0,0)};default:return{operator:we.Any,version:Ln(0,0,0)}}}async function lq(t,e,n,r){if(!r)return null;let a=t.producers?.find(l=>l.canProduce(t.publisher,e));if(!a)return null;let s=await a.resolveVersion(t.publisher,e,oq(n));if(!s)return null;let i=ee(s);if(n.kind!=="exact")return iq(`/${e}/${i}.kan.yml`);let{source:o}=await a.produce(t.publisher,e,s);return Wt(200,Ht[".kan.yml"],o)}function CA(t,e,n){let r=t.pkgVersions.get(e);if(!r||r.length===0)return null;switch(n.kind){case"any":return r[0].verStr;case"major-pin":return r.find(a=>a.version.major===n.major)?.verStr??null;case"minor-pin":return r.find(a=>a.version.major===n.major&&a.version.minor===n.minor)?.verStr??null;case"exact":return r.find(a=>a.version.major===n.major&&a.version.minor===n.minor&&a.version.patch===n.patch)?.verStr??null;default:return null}}async function Hi(t,e,n=""){let{lookRenderer:r,publisher:a}=t;if(e==="/.well-known/kanonak.json")return Wt(200,Ht[".json"],Pu(a,t.configSource));if(e==="/kanonak.lock")return t.lockSource?Wt(200,Ht[".kan.yml"],t.lockSource):ur(e);if(e.endsWith("/kanonak.lock")){let p=t.releaseLocks?.get(e);return p!==void 0?Wt(200,Ht[".kan.yml"],p):ur(e)}if(e==="/.well-known/kanonak-render.json")return Wt(200,Ht[".json"],JSON.stringify(_A(t),null,2));if(e==="/.well-known/kanonak-render")return Wt(200,Ht[".html"],aq(_A(t)));if(e==="/"||e==="/index.html"||e==="/index.css"){let p=r.publisherSubject(a);return e==="/index.css"?Wt(200,Ht[".css"],r.renderStylesheet(p)):Wt(200,Ht[".html"],await r.renderDocument(p,{rootIndex:!0}))}let s=".html",i=!1,o=e;for(let p of[".kan.yml",".css",".svg",".md",".html"])if(e.endsWith(p)){s=p,i=!0,o=e.slice(0,-p.length);break}let l=!i&&/application\/yaml|text\/yaml/i.test(n),c=o.endsWith("/");c&&o!=="/"&&(o=o.slice(0,-1));let u=Ci.parse(o,a);if(!u)return ur(e);if(u.kind==="package"){let p=CA(t,u.package_,u.versionSpec);if(!p)return await lq(t,u.package_,u.versionSpec,s===".kan.yml"||l)??ur(e);if(s===".kan.yml"||l){let g=t.rawByNsKey.get(`${u.package_}@${p}`);return g!==void 0?Wt(200,Ht[".kan.yml"],g):ur(e)}let f=t.pkgSelfByVer.get(`${u.package_}@${p}`);if(!f)return ur(e);if(s===".css")return Wt(200,Ht[".css"],r.renderStylesheet(f));if(!c)return sq(o+"/");let h=u.versionSpec.kind==="any";if(h&&!r.hasDeclaredView(f)){let g=(t.pkgVersions.get(u.package_)||[]).map(m=>m.verStr);return Wt(200,Ht[".html"],r.renderPackageVersionList(u.package_,g,f))}return Wt(200,Ht[".html"],await r.renderDocument(f,h?{bareOverview:!0}:void 0))}if(u.kind==="resource"){let p=CA(t,u.package_,u.versionSpec);if(!p)return ur(e);let f=t.bySubject.get(`${a}/${u.package_}@${p}/${u.name}`);if(!f)return ur(e);switch(s){case".css":return Wt(200,Ht[".css"],r.renderStylesheet(f));case".svg":return Wt(200,Ht[".svg"],await r.renderSvg(f));case".md":{let h=r.renderRawMarkdown(f);return h===void 0?ur(e):Wt(200,Ht[".md"],h)}default:return Wt(200,Ht[".html"],await r.renderDocument(f))}}return ur(e)}var uq=/^\d+\.\d+\.\d+$/,TA=class{constructor(t={}){this.options=t}options;models=new Map;workspaceIndex;clearCache(){this.models.clear(),this.workspaceIndex=void 0}getWorkspaceIndex(){if(this.workspaceIndex)return this.workspaceIndex;let t=new Set,e=new Set;if(this.options.root!==void 0){let n=new me;for(let r of Kt(this.options.root))try{let a=n.parse(cq(r,"utf-8")).metadata?.namespace_;if(!a?.version)continue;let s=a.version;t.add(`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}`),e.add(`${a.publisher}/${a.package_}`)}catch{}}return this.workspaceIndex={exact:t,pkgs:e},this.workspaceIndex}async modelFor(t,e,n){let r=this.getWorkspaceIndex(),a={...this.options.fetchFn?{fetchFn:this.options.fetchFn}:{},...this.options.packageUrlTemplates?{packageUrlTemplates:this.options.packageUrlTemplates}:{},...this.options.templateTrustedPublishers?{templateTrustedPublishers:this.options.templateTrustedPublishers}:{},...this.options.onTemplateTrustedRead?{onTemplateTrustedRead:this.options.onTemplateTrustedRead}:{},...this.options.log?{log:this.options.log}:{}},s=e?n?r.exact.has(`${t}/${e}@${n}`):r.pkgs.has(`${t}/${e}`):[...r.pkgs].some(u=>u.startsWith(`${t}/`)),i,o;if(s&&this.options.root!==void 0){let u=this.options.root;i=`ws:${t}`,o=()=>ws(u,{publisher:t,...a})}else{let u=e?n?`${t}/${e}@${n}`:`${t}/${e}`:t;i=`rm:${u}`,o=()=>nq(u,a)}let l=this.models.get(i);if(l)return l;let c=await o();return c.lookRenderer.setLinkMode("open-world"),this.models.set(i,c),c}async handle(t,e=""){let n=t.split("/").filter(Boolean);if(n.length===0)return{status:200,headers:{"Content-Type":"text/html; charset=utf-8"},body:pq()};let r=n[0];if(!r.includes("."))return{status:404,headers:{"Content-Type":"text/html; charset=utf-8"},body:"<!doctype html><meta charset=utf-8><title>404</title><h1>404</h1><p>Expected a publisher domain as the first path segment: <code>/{publisher}/{package}/{version}/{resource}</code></p>"};let a=n.length>=2&&(n[1]==="index.html"||n[1]==="index.css"||n[1]==="kanonak.lock"||n[1]===".well-known"),s=!a&&n.length>=2?n[1]:void 0,i=!a&&n.length>=3&&uq.test(n[2])?n[2]:void 0,o=await this.modelFor(r,s,i),l=t.endsWith("/")&&n.length>1?"/":"",c="/"+n.slice(1).join("/")+l,u=await Hi(o,c,e);return u.headers.Location?{...u,headers:{...u.headers,Location:`/${r}${u.headers.Location}`}}:u}};function pq(){return'<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Kanonak origin</title></head><body style="font-family:system-ui;max-width:40rem;margin:4rem auto;padding:0 1rem"><h1>Kanonak request-driven origin</h1><p>Open a resource by its address:</p><p><code>/{publisher}/{package}/{version}/{resource}</code></p><p>e.g. <code>/kanonak.org/capabilities/2.0.0/Capability</code></p></body></html>'}import{Command as Eq}from"commander";import{resolve as _q,join as Cq}from"path";import{homedir as jq}from"os";import{readFileSync as Nq}from"fs";import{homedir as fq}from"os";import{join as dh}from"path";import{existsSync as dq,mkdirSync as hq,readFileSync as mq,writeFileSync as gq}from"fs";import{createHash as yq}from"crypto";var vc="Xenova/all-MiniLM-L6-v2",OA="q8",ph=32;async function kq(t){let{pipeline:e,env:n}=t.transformers;n.cacheDir=t.modelCacheDir??dh(fq(),".kanonak","models");let r=await e("feature-extraction",vc,{dtype:OA});return async a=>(await r(a,{pooling:"mean",normalize:!0})).tolist()}var fh=null;async function bq(){return fh||(fh=(async()=>{let t;try{t=await import("@huggingface/transformers")}catch(e){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
|
|
666
656
|
Install it with:
|
|
667
657
|
npm install @huggingface/transformers
|
|
668
|
-
(underlying import error: ${e.message})`)}return
|
|
658
|
+
(underlying import error: ${e.message})`)}return kq({transformers:t})})()),fh}function vq(t,e){let n=0;for(let r=0;r<t.length;r++)n+=t[r]*e[r];return n}function wq(t,e){return e?t.version?e.version?_e(t.version,e.version)>0:!0:!1:!0}function $q(t,e){let n=Oe(t,e),r=[n.label],a=Et(e);if(a.length>0){let s=ge(t,a[0]),i=s?Oe(t,s).label:a[0].name;i&&r.push(`\u2014 a ${i}.`)}return n.summary&&r.push(n.summary),r.join(" ")}function Sq(t){let e=new Map;for(let n of t){if(!(n instanceof V))continue;let r=xe(n);if(!r)continue;let a=T(r),s=e.get(a);(!s||wq(r,xe(s)))&&e.set(a,n)}return[...e.values()].sort((n,r)=>{let a=xe(n)?T(xe(n)):n.name,s=xe(r)?T(xe(r)):r.name;return a.localeCompare(s)})}var LA=class{entries=[];embedder;constructor(t={}){this.embedder=t.embedder}resolveEmbedder(){return this.embedder?Promise.resolve(this.embedder):bq()}get size(){return this.entries.length}async build(t,e={}){let n=Sq(t);if(e.include&&(n=n.filter(e.include)),n.length===0)return this.entries=[],{size:0,cached:!1};let r=n.map(l=>$q(t,l)),a=e.cacheDir,s;if(a){let l=yq("sha256").update(vc+"|"+OA+`
|
|
669
659
|
`+r.join(`
|
|
670
|
-
`)).digest("hex").slice(0,32);s=
|
|
660
|
+
`)).digest("hex").slice(0,32);s=dh(a,`index-${l}.json`);let c=Aq(s);if(c&&c.model===vc&&c.vectors.length===n.length)return this.entries=n.map((u,p)=>({subject:u,namespace:u.namespace||"",vector:c.vectors[p]})),{size:this.entries.length,cached:!0}}let i=await this.resolveEmbedder(),o=[];for(let l=0;l<r.length;l+=ph){let c=await i(r.slice(l,l+ph));for(let u of c)o.push(u);e.onProgress?.(Math.min(l+ph,r.length),r.length)}return this.entries=n.map((l,c)=>({subject:l,namespace:l.namespace||"",vector:o[c]})),s&&xq(s,{model:vc,vectors:o}),{size:this.entries.length,cached:!1}}async query(t,e){if(this.entries.length===0)return[];let n=await this.resolveEmbedder(),[r]=await n([t]),a=e?.scope;return this.entries.filter(s=>!a||s.namespace.startsWith(a)).map(s=>({subject:s.subject,score:vq(r,s.vector)})).sort((s,i)=>i.score-s.score).slice(0,e?.limit??20)}};function Aq(t){try{return dq(t)?JSON.parse(mq(t,"utf-8")):null}catch{return null}}function xq(t,e){try{hq(dh(t,".."),{recursive:!0}),gq(t,JSON.stringify(e))}catch{}}function Pq(t){let e=t.split("/");if(e.length!==3)return null;let[n,r,a]=e;return!n||!r||!a?null:{publisher:n,package_:r,name:a}}function RA(){return new Eq("search").description("Semantic-search your workspace (-q), browse a publisher's catalogue, or find instances of a class").argument("[publisher]","Publisher domain (e.g. kanonak.org) \u2014 for the catalogue / --type modes").option("-q, --query <text>","Semantically search the LOCAL workspace for resources matching free-text keywords").option("--root <dir>","Workspace root for -q",".").option("--scope <prefix>","Limit -q to namespaces starting with this prefix (e.g. kanonak.org/look@)").option("--limit <n>","Max results for -q","20").option("--format <fmt>","Output for -q: text | json","text").option("--all","For -q: index imported packages too (default: only your workspace's own resources)",!1).option("--type <uri>","Class URI to search for, in publisher/package/Name form").action(async(t,e)=>{if(e.query){await Tq(e);return}t||(console.error(`Nothing to search. Either:
|
|
671
661
|
\u2022 semantic-search your workspace: kanonak search -q "<keywords>"
|
|
672
662
|
\u2022 browse a publisher's catalogue: kanonak search <publisher>
|
|
673
|
-
\u2022 find instances of a class: kanonak search <publisher> --type <pub>/<pkg>/<Name>`),process.exit(1)),e.type?await
|
|
663
|
+
\u2022 find instances of a class: kanonak search <publisher> --type <pub>/<pkg>/<Name>`),process.exit(1)),e.type?await Lq(t,e.type):await Oq(t)})}async function Tq(t){let e=_q(t.root??"."),n=new me,r;try{let u=await ct(e,n);r=await new je().parseKanonaks(u)}catch(u){console.error(`Failed to load workspace at ${e}: ${u.message}`),process.exit(1)}let a={cacheDir:Cq(jq(),".kanonak","search"),onProgress:(u,p)=>process.stderr.write(`\r embedding ${u}/${p}\u2026 `)};if(!t.all){let u=new Set;for(let p of Kt(e))try{let f=n.parse(Nq(p,"utf-8")).metadata?.namespace_;f?.version&&u.add(`${f.publisher}/${f.package_}@${f.version.major}.${f.version.minor}.${f.version.patch}`)}catch{}a.include=p=>u.has(p.namespace??"")}let s=new LA,i;try{i=await s.build(r,a),i.size>0&&!i.cached&&process.stderr.write(`
|
|
674
664
|
`)}catch(u){console.error(u.message),process.exit(1)}i.size===0&&(console.error(t.all?`No resources found in the workspace at ${e}.`:`No resources defined in the workspace at ${e}. (It imports packages but defines none of its own \u2014 use --all to also search imported packages.)`),process.exit(1));let o=Number(t.limit)||20,c=(await s.query(t.query,{scope:t.scope,limit:o})).map(u=>{let p=Oe(r,u.subject),f=xe(u.subject),h=Et(u.subject)[0]?.name;return{uri:f?`${f.publisher}/${f.package_}/${f.name}`:u.subject.name,label:p.label,type:h??null,score:Number(u.score.toFixed(4))}});if(t.format==="json"){console.log(JSON.stringify(c,null,2));return}if(c.length===0){console.log(`No matches for "${t.query}".`);return}console.log(`Results for "${t.query}":
|
|
675
|
-
`);for(let u of c)console.log(` ${u.score.toFixed(3)} ${u.label}${u.type?` (${u.type})`:""}`),console.log(` ${u.uri}`)}async function
|
|
676
|
-
`);let r=n.reduce((a,s)=>Math.max(a,s.packageName.length),0);for(let{packageName:a,entry:s}of n)console.log(` ${a.padEnd(r)} @${s.version}`)}async function
|
|
677
|
-
`),h.sort();for(let g of h)console.log(` ${g}`)}async function
|
|
678
|
-
`);
|
|
665
|
+
`);for(let u of c)console.log(` ${u.score.toFixed(3)} ${u.label}${u.type?` (${u.type})`:""}`),console.log(` ${u.uri}`)}async function Oq(t){let e=new Mt(mt()),n;try{n=await wc(e,t)}catch(a){console.error(`Failed to fetch publisher lock for ${t}: ${a.message}`),process.exit(1)}if(n.length===0){console.log(`No packages pinned by ${t} (it serves no kanonak.lock, or pins nothing).`);return}console.log(`Packages published by ${t}:
|
|
666
|
+
`);let r=n.reduce((a,s)=>Math.max(a,s.packageName.length),0);for(let{packageName:a,entry:s}of n)console.log(` ${a.padEnd(r)} @${s.version}`)}async function Lq(t,e){let n=Pq(e);n||(console.error(`Invalid --type value: ${e}`),console.error("Expected: publisher/package/Name (e.g. kanonak.org/core-rdf/Class)"),process.exit(1));let r=new me,a=new Mt(mt()),s=new On,i=new Map,o=[];try{o=await wc(a,t)}catch(g){console.error(`Failed to fetch publisher lock for ${t}: ${g.message}`),process.exit(1)}for(let{packageName:g,entry:m}of o)i.set(`${t}/${g}`,{publisher:t,packageName:g,entry:m});await hh(a,"kanonak.org","core-rdf",i),await hh(a,"kanonak.org","core-owl",i),await hh(a,n.publisher,n.package_,i);for(let{publisher:g,packageName:m,entry:y}of i.values())if(!s.has(g,m,y.version))try{let{content:v}=await a.fetchLockedSource(g,m,y);s.put(g,m,y.version,v)}catch(v){console.error(`Warning: ${v.message}`)}let l=new Ya($r(),!0,r),u=await new va({vocabulary:new ma}).reason(l),p=Ve(n.publisher,n.package_,n.name),h=u.getInstancesOfClass(p).filter(g=>g!==p);if(h.length===0){console.log(`No instances of ${p} found in ${t}'s catalogue.`);return}console.log(`Instances of ${p} in ${t}'s catalogue:
|
|
667
|
+
`),h.sort();for(let g of h)console.log(` ${g}`)}async function wc(t,e){let n=await t.getLock(e);if(!n)return[];let r=`${e}/`;return Object.keys(n.packages).filter(a=>a.startsWith(r)).map(a=>({packageName:a.substring(r.length),entry:n.packages[a]})).sort((a,s)=>a.packageName.localeCompare(s.packageName))}async function hh(t,e,n,r){let a=await t.getLockEntry(e,n);a&&r.set(`${e}/${n}`,{publisher:e,packageName:n,entry:a})}function MA(){return new Rq("publish").description("Generate a static Kanonak site from the local workspace \u2014 the same origin `kanonak serve` produces (it shares serve's model + renderer), frozen to disk under --out.").option("--workspace <dir>","Workspace directory containing .kan.yml package files. Defaults to current directory.",process.cwd()).option("--out <dir>","Output directory for the generated site. Defaults to _site.","_site").option("--publisher <domain>","Publisher to publish (required only if the workspace has more than one).").option("--check","Check the workspace against what the publisher's origin serves, as a publish does first, and write nothing.").action(async t=>{await Mq(t)})}async function Mq(t){let e=IA(t.workspace),n=IA(t.out),r=await ws(e,{...t.publisher?{publisher:t.publisher}:{},log:console.log,...mt()}),{catalog:a,lookRenderer:s,localNamespaces:i,rawByNsKey:o,publisher:l}=r,c=new gh(l,mt().fetchFn);if(await Dq(r,c),await Vq(r,c),r.renderStack.warnings.length>0&&console.error(`[render-stack] \u2717 ${r.renderStack.warnings.length} problem(s) \u2014 the published site will render unstyled or incomplete. Run \`kanonak serve\` and open /.well-known/kanonak-render to diagnose.`),t.check){console.log(`${l} can be published. Nothing was written, since --check only checks.`);return}Ta(n,{recursive:!0}),console.log(`Publishing ${l} \u2014 ${i.size} package version(s) to ${n}`);let u=a.filter(m=>m instanceof V&&i.has(m.namespace||""));console.log(`Rendering ${u.length} resource(s).`);let p=0,f=0;for(let m of u){let y=(m.namespace||"").split("/")[1]??"",[v,k]=y.split("@");if(!v||!k)continue;let w=gt(n,v,k);Ta(w,{recursive:!0});try{let S=s.renderRawMarkdown(m);S!==void 0&&(en(gt(w,`${m.name}.md`),S,"utf-8"),p+=1),en(gt(w,`${m.name}.html`),await s.renderDocument(m),"utf-8"),en(gt(w,`${m.name}.css`),s.renderStylesheet(m),"utf-8"),en(gt(w,`${m.name}.svg`),await s.renderSvg(m),"utf-8"),p+=3}catch(S){console.warn(` ${m.namespace}/${m.name}: ${S.message}`),f+=1}}console.log(`Done. ${p} artifact(s) written, ${f} skipped.`);let h=await Kq(n,u,s);console.log(`Wrote ${h} package overview page(s).`),await Uq(n,u,s);let g=Bq(n,u);console.log(`Wrote ${g} version-form redirect stub(s).`),await qq(n,r)}async function Dq(t,e){let n=await e.lockEntries(t.pkgVersions.keys()),r=[...new Set([...t.pkgVersions.keys(),...n.keys()])].sort(),a=[],s=0;for(let i of r){let o=n.get(i);o&&!o.lines&&console.warn(`${t.publisher}/${i}: its origin's lock lists no lines (lock-lines-rule), so only versions in ${o.version}'s minor line, and those the workspace holds, were checked against what it serves.`);let l=(t.pkgVersions.get(i)??[]).map(p=>p.verStr),c=[...new Set([...l,...Fq(t.publisher,i,o)])],u=await Promise.all(c.map(async p=>({version:p,servedAs:await e.integrity(i,p)})));for(let{version:p,servedAs:f}of u){if(f===null)continue;s+=1;let h=`${t.publisher}/${i}@${p}`,g=t.rawByNsKey.get(`${i}@${p}`);g===void 0?a.push(`${h} is served, and the workspace doesn't hold it.`):Dn(g)!==f&&a.push(`${h} is served as ${f}, and the workspace holds it as ${Dn(g)}.`)}}if(a.length>0)throw new Error([`This publish would drop or change ${a.length} version(s) ${t.publisher}'s origin serves:`,...a.map(i=>` ${i}`),"A published version never changes. Restore each with the bytes its origin serves, at whatever path the workspace keeps it now, and publish again."].join(`
|
|
668
|
+
`));console.log(`${t.publisher}: the workspace holds each of the ${s} version(s) its origin serves, unchanged.`)}function Fq(t,e,n){if(!n)return[];let r=`${t}/${e}'s entry in its origin's lock`;return[n,...n.lines??[]].flatMap(a=>{let s=Lt(a.version,r);return Array.from({length:s.patch+1},(i,o)=>ee(Ln(s.major,s.minor,o)))})}async function Vq(t,e){let n=new me,r=(s,i)=>n.parse(t.rawByNsKey.get(`${s}@${i}`)),a=[];for(let[s,i]of t.pkgVersions)for(let o of i){let l=xS(i.map(p=>p.version),o.version);if(!l||await e.integrity(s,o.verStr)!==null)continue;let c=i.find(p=>Sn(p.version,l)),u=ES(t.catalog,r(s,c.verStr),r(s,o.verStr));if(u.length!==0){a.push(`${t.publisher}/${s}@${o.verStr} breaks ${c.verStr}, the version before it in its line:`);for(let p of u)a.push(` ${p.message}`)}}if(a.length>0)throw new Error([...a,"A change a dependent could break on starts a new line: a new major from 1.0.0, or a new minor below it."].join(`
|
|
669
|
+
`))}var gh=class{constructor(e,n){this.publisher=e;this.fetchFn=n;this.index=new Mt({fetchFn:n})}publisher;fetchFn;index;integrities=new Map;async lockEntries(e){let n=(await this.index.getConfig(this.publisher)).versions_url_template,r=new Map;if(n===void 0||!$o(n))for(let{packageName:a,entry:s}of await wc(this.index,this.publisher))r.set(a,s);for(let a of e){if(r.has(a))continue;let s=await this.index.getLockEntry(this.publisher,a);s&&r.set(a,s)}for(let[a,s]of r)for(let i of[s,...s.lines??[]])this.integrities.set(`${a}@${i.version}`,Promise.resolve(i.integrity));return r}integrity(e,n){let r=`${e}@${n}`,a=this.integrities.get(r);return a||(a=this.ask(e,n),this.integrities.set(r,a)),a}async ask(e,n){let r=await this.index.getPackageUrl(this.publisher,e,n),a=await this.fetchFn(r,this.publisher);if(a.status===404)return null;if(!a.ok)throw await mn(`${this.publisher}/${e}@${n}`,r,a);return Dn(await a.text())}};async function qq(t,e){if(e.rawByNsKey.size===0)return;let n=async(s,i)=>{let o=gt(t,i);Ta(Iq(o),{recursive:!0}),en(o,(await Hi(e,s)).body,"utf-8")};await n("/.well-known/kanonak.json",".well-known/kanonak.json"),e.lockSource&&await n("/kanonak.lock","kanonak.lock");for(let s of e.rawByNsKey.keys()){let[i,o]=s.split("@");!i||!o||await n(`/${i}/${o}.kan.yml`,`${i}/${o}.kan.yml`)}for(let s of e.releaseLocks?.keys()??[])await n(s,s.slice(1));let r=e.releaseLocks?.size??0,a=e.rawByNsKey.size-r;console.log(`Wrote publisher endpoints: .well-known/kanonak.json${e.lockSource?", kanonak.lock":""}, ${e.rawByNsKey.size} raw package source(s), and ${r} release lock(s)${a>0?`. ${a} version(s) have no release lock, so theirs answer 404: run \`kanonak release-lock\` and commit what it writes`:""}.`)}async function Kq(t,e,n){let r=new Map,a=new Map;for(let o of e){let l=o.namespace||"",[,c]=l.split("/");if(!c)continue;let[u,p]=c.split("@");if(!u||!p||o.name!==u)continue;let f=p.split(".").map(Number);if(f.length!==3||f.some(m=>Number.isNaN(m)))continue;let h={verStr:p,major:f[0],minor:f[1],patch:f[2]};r.has(u)||r.set(u,[]),r.get(u).push({resource:o,ver:h});let g=a.get(u);(!g||h.major>g.ver.major||h.major===g.ver.major&&h.minor>g.ver.minor||h.major===g.ver.major&&h.minor===g.ver.minor&&h.patch>g.ver.patch)&&a.set(u,{resource:o,ver:h})}let s=async(o,l)=>{try{return Ta(o,{recursive:!0}),en(gt(o,"index.html"),await n.renderDocument(l),"utf-8"),en(gt(o,`${l.name}.css`),n.renderStylesheet(l),"utf-8"),!0}catch{return!1}},i=0;for(let[o,l]of r)for(let{resource:c,ver:u}of l)await s(gt(t,o,u.verStr),c)&&(i+=1);for(let[o,{resource:l}]of a){let c=gt(t,o);try{if(Ta(c,{recursive:!0}),n.hasDeclaredView(l))en(gt(c,"index.html"),await n.renderDocument(l,{bareOverview:!0}),"utf-8"),en(gt(c,`${l.name}.css`),n.renderStylesheet(l),"utf-8");else{let u=(r.get(o)??[]).slice().sort((p,f)=>f.ver.major-p.ver.major||f.ver.minor-p.ver.minor||f.ver.patch-p.ver.patch).map(p=>p.ver.verStr);en(gt(c,"index.html"),n.renderPackageVersionList(o,u,l),"utf-8"),en(gt(c,`${l.name}.css`),n.renderStylesheet(l),"utf-8")}i+=1}catch{}}return i}async function Uq(t,e,n){let r="",a=new Map;for(let i of e){let l=(i.namespace||"").split("/"),[c]=(l[1]??"").split("@");if(!l[0]||!c||(r||(r=l[0]),i.name!==c))continue;let u=(l[1]??"").split("@")[1]??"",p=u.split(".").map(Number);if(p.length!==3||p.some(g=>Number.isNaN(g)))continue;let f={verStr:u,major:p[0],minor:p[1],patch:p[2]},h=a.get(c);(!h||f.major>h.ver.major||f.major===h.ver.major&&f.minor>h.ver.minor||f.major===h.ver.major&&f.minor===h.ver.minor&&f.patch>h.ver.patch)&&a.set(c,{resource:i,ver:f})}if(!r||a.size===0)return;let s=n.publisherSubject(r);en(gt(t,"index.html"),await n.renderDocument(s,{rootIndex:!0}),"utf-8"),en(gt(t,"index.css"),n.renderStylesheet(s),"utf-8")}function Bq(t,e){let n=new Map;for(let a of e){let s=a.namespace||"",[,i]=s.split("/");if(!i)continue;let[o,l]=i.split("@");if(!o||!l)continue;let c=l.split(".").map(Number);if(c.length!==3||c.some(p=>Number.isNaN(p)))continue;let u=`${o}/${a.name}`;n.has(u)||n.set(u,[]),n.get(u).push({verStr:l,major:c[0],minor:c[1],patch:c[2]})}let r=0;for(let[a,s]of n){let[i,o]=a.split("/");s.sort((p,f)=>f.major-p.major||f.minor-p.minor||f.patch-p.patch);let l=s[0];en(gt(t,i,`${o}.html`),mh(`/${i}/${l.verStr}/${o}`),"utf-8"),r+=1;let c=new Set;for(let p of s){if(c.has(p.major))continue;c.add(p.major);let f=gt(t,i,String(p.major));Ta(f,{recursive:!0}),en(gt(f,`${o}.html`),mh(`/${i}/${p.verStr}/${o}`),"utf-8"),r+=1}let u=new Set;for(let p of s){let f=`${p.major}.${p.minor}`;if(u.has(f))continue;u.add(f);let h=gt(t,i,f);Ta(h,{recursive:!0}),en(gt(h,`${o}.html`),mh(`/${i}/${p.verStr}/${o}`),"utf-8"),r+=1}}return r}function mh(t){let e=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");return`<!doctype html>
|
|
670
|
+
<meta charset="utf-8">
|
|
671
|
+
<title>Redirecting\u2026</title>
|
|
672
|
+
<meta http-equiv="refresh" content="0; url=${e}">
|
|
673
|
+
<link rel="canonical" href="${e}">
|
|
674
|
+
<p>If you are not redirected automatically, follow this <a href="${e}">link</a>.</p>
|
|
675
|
+
`}import{Command as qA}from"commander";import{writeFileSync as yh,mkdirSync as $c}from"fs";import{join as kh,resolve as Hq,dirname as bh}from"path";var pr="kanonak.org",fr="site",DA={publisher:"kanonak.org",package_:"formats",name:"html"},FA={publisher:"kanonak.org",package_:"derivation",name:"default"};function KA(){let t=new qA("site").description("Materialize a publisher's site \u2014 every StaticPage and AggregateView in the workspace gets rendered to its declared output path under the --out directory.");return t.addCommand(Wq()),t}function Wq(){return new qA("build").description("Walk the workspace, find every StaticPage and AggregateView, and write each materialized artifact to its declared output path under the --out directory.").option("--out <dir>","Output base directory.","./_site").action(async t=>{try{await zq(t)}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}})}async function zq(t){let e=new me,n=new je,r=await ct(process.cwd(),e),a=await n.parseKanonaks(r),s=Hq(t.out);$c(s,{recursive:!0});let i=await r.getAllDocumentsAsync(),o=new Set;for(let m of i){let y=m.metadata.namespace_?.toString();y&&o.add(y)}let l={publisher:pr,package_:fr,name:"StaticPage"},c={publisher:pr,package_:fr,name:"ResourcePage"},u={publisher:pr,package_:fr,name:"AggregateView"},p=Qn(a,l).filter(m=>o.has(m.namespace||"")),f=Qn(a,c).filter(m=>o.has(m.namespace||"")),h=Qn(a,u).filter(m=>o.has(m.namespace||""));console.log(`Found ${p.length} StaticPage(s), ${f.length} ResourcePage(s), and ${h.length} AggregateView(s) in the workspace.`);let g=new bs;for(let m of p){let y=vh(m,pr,fr,"outputPath")??`${m.name}.html`,v=wa(m,DA,FA,a);if(!v){console.warn(` [skip] ${m.name}: no HTML/default derivation found (check class hierarchy or universal-derivations is loaded)`);continue}let k=wh(a,v.transformation);if(!k){console.warn(` [skip] ${m.name}: transformation ${$h(v.transformation)} not found`);continue}let w=await g.run({transformation:k,instances:[m],allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(w.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let S=kh(s,y);$c(bh(S),{recursive:!0}),yh(S,w[0].content,"utf-8"),console.log(` wrote ${S} (StaticPage ${m.name})`)}for(let m of f){let y=vh(m,pr,fr,"outputPath")??`${m.name}.html`,v=VA(m,pr,fr,"pageOf");if(!v){console.warn(` [skip] ${m.name}: no pageOf declared`);continue}let k=a.find(N=>N instanceof V&&N.name===v.name&&(N.namespace||"").startsWith(`${v.publisher}/${v.package_}@`));if(!k){console.warn(` [skip] ${m.name}: pageOf target ${v.publisher}/${v.package_}/${v.name} not found`);continue}let w=wa(k,DA,FA,a);if(!w){console.warn(` [skip] ${m.name}: no derivation for target ${k.name}`);continue}let S=wh(a,w.transformation);if(!S){console.warn(` [skip] ${m.name}: transformation ${$h(w.transformation)} not found`);continue}let A=await g.run({transformation:S,instances:[k],allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(A.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let C=kh(s,y);$c(bh(C),{recursive:!0}),yh(C,A[0].content,"utf-8"),console.log(` wrote ${C} (ResourcePage ${m.name} \u2192 ${k.name})`)}for(let m of h){let y=vh(m,pr,fr,"outputPath");if(!y){console.warn(` [skip] ${m.name}: no outputPath declared`);continue}let v=VA(m,pr,fr,"scopeClass");if(!v){console.warn(` [skip] ${m.name}: no scopeClass declared`);continue}let k={publisher:v.publisher,package_:v.package_,name:v.name},w=Yq(m,pr,fr,"scopeSources"),S=Gq(m);if(!S){console.warn(` [skip] ${m.name}: no transformation declared`);continue}let A=wh(a,S);if(!A){console.warn(` [skip] ${m.name}: transformation ${$h(S)} not found`);continue}let C=await Xq(w,r),N=[],_=new Set;for(let pe of C){let J=await Qq(pe,r,e,n),Q=Qn(J,k);for(let H of Q){let K=`${H.namespace}/${H.name}`;_.has(K)||(_.add(K),N.push(H))}}console.log(` ${m.name}: ${N.length} instance(s) of ${k.publisher}/${k.package_}/${k.name} across ${C.length} scope(s)`);let B=await g.run({transformation:A,instances:N,allKanonaks:a,repository:r,parser:e,objectParser:n,outputFormat:"html"});if(B.length===0){console.warn(` [skip] ${m.name}: transformation produced no artifacts`);continue}let X=kh(s,y);$c(bh(X),{recursive:!0}),yh(X,B[0].content,"utf-8"),console.log(` wrote ${X} (AggregateView ${m.name})`)}console.log("Site build complete.")}function vh(t,e,n,r){for(let a of t.statement)if(a instanceof Ce&&Sc(a,e,n,r))return a.object}function Yq(t,e,n,r){for(let a of t.statement){if(!(a instanceof he)||!Sc(a,e,n,r))continue;let s=[];for(let i of a.object??[]){let o=i.value;typeof o=="string"&&s.push(o)}return s}return[]}function VA(t,e,n,r){for(let a of t.statement)if(a instanceof de&&Sc(a,e,n,r)&&a.object instanceof D)return{publisher:a.object.subject.publisher,package_:a.object.subject.package_,name:a.object.subject.name}}function Gq(t){for(let e of t.statement)if(e instanceof Ae&&Sc(e,pr,fr,"transformation"))return Jq(e.object)}function Jq(t){let e,n,r,a;for(let s of t.statement){if(!(s instanceof Ce))continue;let i=s.predicate?.subject?.name;i==="publisher"?e=s.object:i==="package"?n=s.object:i==="version"?r=s.object:i==="name"&&(a=s.object)}if(!(!e||!n||!r||!a))return{publisher:e,package_:n,version:r,name:a}}function Sc(t,e,n,r){let a=t.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===r:!1}function wh(t,e){let n=`${e.publisher}/${e.package_}@${e.version}`;for(let r of t)if(r instanceof V&&r.name===e.name&&r.namespace===n)return r}function $h(t){return`${t.publisher}/${t.package_}@${t.version}/${t.name}`}async function Xq(t,e){let n=[];for(let r of t){let a=r.indexOf("@*");if(a===-1){n.push(r);continue}let s=r.substring(0,a),i=s.indexOf("/");if(i===-1){n.push(r);continue}let o=s.substring(0,i),l=s.substring(i+1),c=await e.getDocumentsByNamespaceAsync(o,l);for(let u of c){let p=u.metadata.namespace_;if(!p)continue;let f=p.version;n.push(`${p.publisher}/${p.package_}@${f.major}.${f.minor}.${f.patch}`)}}return n}async function Qq(t,e,n,r){let a=t.indexOf("/"),s=t.indexOf("@");if(a===-1||s===-1)return[];let i=t.substring(0,a),o=t.substring(a+1,s),l=t.substring(s+1),c=await e.getDocumentsByNamespaceAsync(i,o);for(let u of c){let p=u.metadata.namespace_?.version;if(p&&`${p.major}.${p.minor}.${p.patch}`===l){let f=new at(u,e);return r.parseKanonaks(f)}}return[]}import{Command as Zq}from"commander";import{createServer as BA}from"http";import{watch as HA}from"fs";import{resolve as eK}from"path";var Sh={"Access-Control-Allow-Origin":"*"};function WA(t,e){t.writeHead(e.status,{...e.headers,...Sh}),t.end(e.body)}function UA(t,e){let n=t.renderStack,r=n.packages.filter(a=>a.origin==="missing").length;n.warnings.length===0?console.log(`[render-stack] \u2713 all ${n.packages.length} look-stack package(s) resolved \u2014 pages will render styled`):(console.error(`[render-stack] \u2717 ${n.warnings.length} problem(s)`+(r>0?` (${r} package(s) missing)`:"")+" \u2014 pages may render unstyled or incomplete"),console.error(`[render-stack] diagnose: http://localhost:${e}/.well-known/kanonak-render`))}function zA(){return new Zq("serve").description("Serve Kanonak resources as a live origin \u2014 the same rendering `kanonak publish` produces, plus the machine-facing publisher endpoints, from one process. With --publisher it serves that single publisher (closed world, like the published site); without it, it serves any publisher per request path and links across publishers (open world). Use --watch for a dev preview.").option("--root <dir>","Workspace root to serve.",".").option("--port <number>","Port to listen on.","8080").option("--publisher <domain>","Serve ONLY this publisher (closed world \u2014 no links to other publishers, mirroring the published site). Omit for the open-world model.").option("--watch","Re-load on .kan.yml changes.",!1).action(async t=>{let e=eK(t.root),n=Number(t.port);if(!Number.isInteger(n)||n<=0||n>65535)throw new Error(`Invalid --port "${t.port}".`);if(t.publisher){let r;try{r=await ws(e,{publisher:t.publisher,log:console.log,...mt()})}catch(a){console.error(`[error] ${a.message}`),process.exitCode=1;return}tK(e,n,t,r)}else nK(e,n,t)})}function tK(t,e,n,r){let a=r;UA(a,e);let s=async i=>{let o=Date.now();a=await ws(t,{...n.publisher?{publisher:n.publisher}:{},log:console.log,...mt()});let l=a.availablePublishers.filter(c=>c!==a.publisher);console.log(`[model] serving ${a.publisher} \u2014 ${a.pkgVersions.size} package(s)${i?` (${i})`:""} in ${Date.now()-o}ms`+(l.length?` [also in workspace: ${l.join(", ")} \u2014 switch with --publisher]`:"")),UA(a,e)};if(n.watch){let i;HA(t,{recursive:!0},(o,l)=>{!l||!String(l).endsWith(".kan.yml")||(clearTimeout(i),i=setTimeout(()=>{s(`changed: ${l}`).catch(c=>console.error("[reload error]",c.message))},150))}),console.log("[watch] re-loading on .kan.yml changes")}BA(async(i,o)=>{let l="/";try{let c=new URL(i.url??"/","http://localhost");l=decodeURIComponent(c.pathname);let u=await Hi(a,l,i.headers.accept??"");WA(o,u),console.log(`${u.status} ${i.method} ${l}${u.headers.Location?` -> ${u.headers.Location}`:""}`)}catch(c){o.writeHead(500,{"Content-Type":"text/plain; charset=utf-8",...Sh}),o.end(String(c?.stack??c)),console.error(`500 ${l}: ${c?.message??c}`)}}).listen(e,()=>{console.log(`kanonak origin server \u2192 http://localhost:${e}/ (root=${t}, publisher=${a.publisher})`),console.log(`render diagnostics \u2192 http://localhost:${e}/.well-known/kanonak-render`)})}function nK(t,e,n){let r=new TA({root:t,log:console.log,...mt()});if(n.watch){let a;HA(t,{recursive:!0},(s,i)=>{!i||!String(i).endsWith(".kan.yml")||(clearTimeout(a),a=setTimeout(()=>{r.clearCache(),console.log("[watch] cleared model cache")},150))}),console.log("[watch] clearing model cache on .kan.yml changes")}BA(async(a,s)=>{let i="/";try{let o=new URL(a.url??"/","http://localhost");i=decodeURIComponent(o.pathname);let l=await r.handle(i,a.headers.accept??"");WA(s,l),console.log(`${l.status} ${a.method} ${i}${l.headers.Location?` -> ${l.headers.Location}`:""}`)}catch(o){s.writeHead(502,{"Content-Type":"text/plain; charset=utf-8",...Sh}),s.end(String(o?.message??o)),console.error(`502 ${i}: ${o?.message??o}`)}}).listen(e,()=>{console.log(`kanonak request-driven origin \u2192 http://localhost:${e}/ (root=${t})`),console.log("[request-driven] no publisher pinned \u2014 derive per path: /{publisher}/{package}/{version}/{resource}"),console.log("[request-driven] render diagnostics per publisher: /{publisher}/.well-known/kanonak-render")})}import{Command as rK}from"commander";import{resolve as aK,join as sK}from"path";function YA(){return new rK("verify").description("Verify cached packages against kanonak.lock (the cache is untrusted). With --remote, also re-fetch each package from its origin and compare. Exits non-zero on any integrity mismatch.").option("--workspace <dir>","Workspace directory containing kanonak.lock.",process.cwd()).option("--remote","Also re-fetch each package from its recorded origin and verify.",!1).action(async t=>{await oK(t)})}function iK(t){let e=t.indexOf("/");if(!(e<0))return{publisher:t.slice(0,e),package_:t.slice(e+1)}}async function oK(t){let e=aK(t.workspace),n=kr(sK(e,"kanonak.lock"));n||(console.error(`No kanonak.lock found in ${e} \u2014 nothing to verify (run \`kanonak install\` first).`),process.exit(1));let r=new On,a=t.remote?new Mt(mt()):void 0,s=Object.entries(n.packages);console.log(`Verifying ${s.length} locked package(s) against kanonak.lock${t.remote?" (cache + origin)":" (cache)"}\u2026`);let i=0,o=0,l=0,c=0;for(let[p,f]of s){let h=iK(p);if(!h){console.error(` \u2717 ${p} \u2014 unparseable lock key`),o+=1;continue}let{publisher:g,package_:m}=h,y=r.get(g,m,f.version);if(y===null?(console.warn(` ? ${p} \u2014 not in cache`),l+=1):Dn(y)===f.integrity?i+=1:(console.error(` \u2717 ${p} \u2014 CACHE does not match lock`),console.error(` lock: ${f.integrity}`),console.error(` cache: ${Dn(y)}`),o+=1),a){let v=await lK(a,g,m,f);v?(console.error(v),o+=1):c+=1}}let u=[`${i} cache OK`];t.remote&&u.push(`${c} origin OK`),l&&u.push(`${l} not cached`),u.push(`${o} mismatch`),console.log(`
|
|
676
|
+
${u.join(", ")}.`),o>0&&(console.error("Integrity verification FAILED \u2014 a package does not match the committed lock."),process.exit(1)),console.log("Integrity verified.")}async function lK(t,e,n,r){let a=`${e}/${n}`;try{let s=t.lockedSourceUrl(e,n,r),i=await mt().fetchFn(s,e);if(!i.ok)return` \u2717 ${a} \u2014 ${(await mn("origin",s,i)).message}`;let o=await i.text(),l=Dn(o);return l===r.integrity?void 0:` \u2717 ${a} \u2014 ORIGIN does not match lock (${s})
|
|
677
|
+
lock: ${r.integrity}
|
|
678
|
+
origin: ${l}`}catch(s){return` \u2717 ${a} \u2014 origin fetch failed: ${s.message}`}}import{existsSync as cK,readFileSync as uK}from"fs";import{dirname as pK,resolve as fK}from"path";async function GA(t,e={}){let n=new me,r=new je;e.frozen&&process.stderr.write(`kanonak hash: --frozen is deprecated and changes nothing. A hash reads each import at the version it states, never at a lock's pin (kanonak-protocol 4.8.0, stated-version-rule), so drop it.
|
|
679
|
+
`);let{document:a,source:s}=await dK(t,n,e.offline??!1),i=hK(s),o=await ct(i,n,{offline:e.offline}),l=new at(a,new ep(o)),c=await r.parseKanonaks(l),u=jo(c);if(console.log(u),e.verbose){let p=Ku(c);process.stderr.write(`# canonical form for ${s}
|
|
679
680
|
`),process.stderr.write(p),process.stderr.write(`
|
|
680
|
-
`)}}async function
|
|
681
|
+
`)}}async function dK(t,e,n){if(t.endsWith(".kan.yml")){let l=fK(t);if(!cK(l))throw new Error(`kanonak hash: file not found: ${l}`);let c=uK(l,"utf-8");return{document:e.parse(c),source:l}}let r=An(t);if(r.kind!=="package")throw new Error(`kanonak hash: expected a package address (publisher/package[@version]) or a path ending in .kan.yml; got ${r.kind} address "${t}"`);let s=await(await ct(process.cwd(),e,{offline:n})).getDocumentsByNamespaceAsync(r.publisher,r.package_);if(s.length===0)throw new Error(`kanonak hash: could not find ${t} in local workspace, global cache, or publisher HTTP`);let i=r.version?`${r.version.major}.${r.version.minor}.${r.version.patch}`:void 0,o=hr(s,i?{requestedVersion:i}:{});if(!o.chosen){let l=i?`@${i}`:"";throw new Error(`kanonak hash: no version of ${r.publisher}/${r.package_}${l} available across local/cache/HTTP`)}return{document:o.chosen,source:t}}function hK(t){return t.endsWith(".kan.yml")?Pr(pK(t)):process.cwd()}function mK(t){let e=`# ${t.name()} \u2014 command reference
|
|
681
682
|
|
|
682
683
|
`,n=t.description();n&&(e+=`${n}
|
|
683
684
|
|
|
684
|
-
`);for(let r of
|
|
685
|
+
`);for(let r of JA(t))e+=XA(r,t.name());return e}function JA(t){return t.commands.filter(e=>!e._hidden&&e.name()!=="help")}function XA(t,e){let n=`${e} ${t.name()}`,r=`## ${n}
|
|
685
686
|
|
|
686
687
|
`,a=t.description();a&&(r+=`${a}
|
|
687
688
|
|
|
688
689
|
`);let s=t.registeredArguments??[],i=!1;for(let o of s){let l=o.required?`<${o.name()}>`:`[${o.name()}]`;r+=`- \`${l}\`: ${(o.description||"").replace(/\n/g," ")}
|
|
689
690
|
`,i=!0}for(let o of t.options){if(o.hidden)continue;let l=o.defaultValue!==void 0?` [default: ${String(o.defaultValue)}]`:"";r+=`- \`${o.flags}\`: ${(o.description||"").replace(/\n/g," ")}${l}
|
|
690
691
|
`,i=!0}i&&(r+=`
|
|
691
|
-
`);for(let o of
|
|
692
|
-
`)}function
|
|
693
|
-
${
|
|
692
|
+
`);for(let o of JA(t))r+=XA(o,n);return r}function QA(t){t.command("docs").description("Print the full command reference, auto-generated from the CLI definition \u2014 for humans and AI agents (kanonak ask feeds this to its local model).").action(()=>{process.stdout.write(mK(t))})}import{cpus as vK,totalmem as wK,arch as $K,platform as ox,homedir as SK}from"os";import{readFileSync as AK,writeFileSync as xK,mkdirSync as EK}from"fs";import{join as _K,dirname as CK}from"path";var ex=process.env.NO_COLOR!==void 0&&process.env.NO_COLOR!=="",Ac=!!process.stdout.isTTY&&!ex,zi=!!process.stderr.isTTY&&!ex;function Oa(t){let e=n=>r=>t?`\x1B[${n}m${r}\x1B[0m`:r;return{bold:e("1"),dim:e("2"),green:e("1;32"),red:e("1;31"),yellow:e("1;33"),cyan:e("36")}}var Tr=Oa(zi);function $s(t){process.stderr.write(t+`
|
|
693
|
+
`)}function tx(t){$s(t)}function xh(t){$s(`
|
|
694
|
+
${Tr.green("\u2713")} ${Tr.bold(t)}`)}function xc(t){$s(` ${Tr.yellow("\u26A0")} ${t}`)}function Tt(t){$s(` ${Tr.dim(t)}`)}function nx(t){return`${Tr.green("\u2713")} ${t}`}function rx(t){return`${Tr.red("\u2717")} ${t}`}function Ss(t){let e=t instanceof Error?t.message:String(t);$s(`${Tr.red("error:")} ${e}`);let n=t instanceof Error?t.cause:void 0;for(;n;){let r=n instanceof Error?n.message:String(n);$s(` ${Tr.dim("caused by:")} ${r}`),n=n instanceof Error?n.cause:void 0}}function ax(t){return`${Math.round(t*8/1e6)} Mbps`}var Wi=class t{partial="";state={kind:"prose"};p;color;constructor(e=Ac){this.color=e,this.p=Oa(e)}push(e){this.partial+=e;let n="",r;for(;(r=this.partial.indexOf(`
|
|
694
695
|
`))>=0;){let a=this.partial.slice(0,r);this.partial=this.partial.slice(r+1),n+=this.line(a)}return n+=this.flushProsePartial(),n}finish(){let e="";if(this.partial.length>0){let r=this.partial;this.partial="",e+=this.line(r)}let n=this.state;return this.state={kind:"prose"},n.kind==="table"?e+=this.renderTable(n.rows):n.kind==="bufferedFence"&&(e+=this.renderBufferedFence(n.lang,n.lines)),e}line(e){let n=e.trim(),r=this.state;switch(r.kind){case"midprose":return this.state={kind:"prose"},this.inlineSpans(e)+`
|
|
695
|
-
`;case"table":return n.startsWith("|")?(r.rows.push(e),""):(this.state={kind:"prose"},this.renderTable(r.rows)+this.line(e));case"streamingFence":return
|
|
696
|
-
`;case"bufferedFence":return
|
|
696
|
+
`;case"table":return n.startsWith("|")?(r.rows.push(e),""):(this.state={kind:"prose"},this.renderTable(r.rows)+this.line(e));case"streamingFence":return Ah(n)!==null?(this.state={kind:"prose"},""):r.lang==="yaml"||r.lang==="yml"?this.yamlLine(e):` ${this.p.cyan(e)}
|
|
697
|
+
`;case"bufferedFence":return Ah(n)===null?(r.lines.push(e),""):(this.state={kind:"prose"},this.renderBufferedFence(r.lang,r.lines));case"prose":{let a=Ah(n);if(a!==null){if(a==="json"||a==="markdown"||a==="md")return this.state={kind:"bufferedFence",lang:a,lines:[]},"";let o=a?` ${this.p.dim("\u2500\u2500 "+a)}
|
|
697
698
|
`:"";return this.state={kind:"streamingFence",lang:a},o}if(n.startsWith("|"))return this.state={kind:"table",rows:[e]},"";if(n==="---"||n==="***"||n==="___")return this.p.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")+`
|
|
698
|
-
`;let s=
|
|
699
|
+
`;let s=gK(n);if(s!==null)return this.p.bold(s)+`
|
|
699
700
|
`;if(n.startsWith("$ ")||n.startsWith("kanonak "))return` ${this.p.cyan(n)}
|
|
700
|
-
`;let i=
|
|
701
|
+
`;let i=yK(e);return i?`${i.indent}${this.p.dim("\u2022")} ${this.inlineSpans(i.item)}
|
|
701
702
|
`:this.inlineSpans(e)+`
|
|
702
|
-
`}}}flushProsePartial(){if(this.state.kind==="prose"){let r=this.partial.replace(/^\s+/,"");if(r.length===0)return"";let a=r[0],s=r.length<8&&"kanonak ".startsWith(r),i=r==="$";if("|#`~-*+<".includes(a)||s||i||r.startsWith("kanonak ")||r.startsWith("$ "))return""}else if(this.state.kind!=="midprose")return"";let e=
|
|
703
|
+
`}}}flushProsePartial(){if(this.state.kind==="prose"){let r=this.partial.replace(/^\s+/,"");if(r.length===0)return"";let a=r[0],s=r.length<8&&"kanonak ".startsWith(r),i=r==="$";if("|#`~-*+<".includes(a)||s||i||r.startsWith("kanonak ")||r.startsWith("$ "))return""}else if(this.state.kind!=="midprose")return"";let e=kK(this.partial);if(e===0)return"";let n=this.partial.slice(0,e);return this.partial=this.partial.slice(e),this.state={kind:"midprose"},this.inlineSpans(n)}yamlLine(e){let n=e.indexOf(":");if(n>0){let r=e.slice(0,n);if(r.trim().length>0&&!r.trim().includes(" "))return` ${this.p.cyan(r)}:${e.slice(n+1)}
|
|
703
704
|
`}return` ${e}
|
|
704
705
|
`}renderBufferedFence(e,n){if(e==="markdown"||e==="md"){let r=new t(this.color),a=r.push(n.join(`
|
|
705
706
|
`));return a+=r.finish(),a}if(e==="json")try{let r=JSON.parse(n.join(`
|
|
@@ -716,37 +717,37 @@ ${Pr.green("\u2713")} ${Pr.bold(t)}`)}function Sc(t){$s(` ${Pr.yellow("\u26A0")
|
|
|
716
717
|
`:`
|
|
717
718
|
`}),s+=`${a}]`,s}return JSON.stringify(e)}renderTable(e){let n=[],r=!1;for(let o of e){let c=o.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(p=>p.trim());c.length>0&&c.every(p=>p.length>0&&/^[-:]+$/.test(p))?n.length===1&&(r=!0):n.push(c)}if(n.length===0)return"";let a=Math.max(...n.map(o=>o.length)),s=new Array(a).fill(0);for(let o of n)o.forEach((l,c)=>{s[c]=Math.max(s[c],this.visibleWidth(l))});let i="";return n.forEach((o,l)=>{i+=" ",s.forEach((c,u)=>{let p=o[u]??"",f=" ".repeat(c-this.visibleWidth(p)),h=l===0&&r&&!p.includes("`")&&!p.includes("**")?this.p.bold(p):this.inlineSpans(p);i+=h,u+1<s.length&&(i+=f+` ${this.p.dim("\u2502")} `)}),i+=`
|
|
718
719
|
`,l===0&&r&&(i+=" ",s.forEach((c,u)=>{let p=u+1<s.length?c:Math.max(this.visibleWidth(o[u]??""),3);i+=this.p.dim("\u2500".repeat(p)),u+1<s.length&&(i+=this.p.dim("\u2500\u2500\u253C\u2500\u2500"))}),i+=`
|
|
719
|
-
`)}),i}visibleWidth(e){return this.inlineSpans(e).replace(/\x1b\[[0-9;]*m/g,"").length}inlineSpans(e){if(!e.includes("`"))return this.boldSpans(e);let n=e.split("`");if(n.length%2===0)return this.boldSpans(e);let r="";return n.forEach((a,s)=>{r+=s%2===1?this.p.cyan(a):this.boldSpans(a)}),r}boldSpans(e){if(!e.includes("**"))return e;let n=e.split("**");if(n.length%2===0)return e;let r="";return n.forEach((a,s)=>{r+=s%2===1?this.p.bold(a):a}),r}};function
|
|
720
|
-
`);return}process.stdout.write(
|
|
721
|
-
`),{finishAndClear(){}};let e=0,n=()=>{process.stderr.write(`\r\x1B[K ${
|
|
722
|
-
`);return}let o=Oa(
|
|
720
|
+
`)}),i}visibleWidth(e){return this.inlineSpans(e).replace(/\x1b\[[0-9;]*m/g,"").length}inlineSpans(e){if(!e.includes("`"))return this.boldSpans(e);let n=e.split("`");if(n.length%2===0)return this.boldSpans(e);let r="";return n.forEach((a,s)=>{r+=s%2===1?this.p.cyan(a):this.boldSpans(a)}),r}boldSpans(e){if(!e.includes("**"))return e;let n=e.split("**");if(n.length%2===0)return e;let r="";return n.forEach((a,s)=>{r+=s%2===1?this.p.bold(a):a}),r}};function gK(t){for(let e of["### ","## ","# "])if(t.startsWith(e))return t.slice(e.length);return null}function yK(t){let e=t.length-t.replace(/^\s+/,"").length,n=t.slice(0,e),r=t.slice(e),a=r[0];return!a||!"-*+".includes(a)||r[1]!==" "?null:{indent:n,item:r.slice(2).replace(/^\s+/,"")}}function Ah(t){return t.startsWith("```")||t.startsWith("~~~")?t.slice(3).trim().toLowerCase():null}function kK(t){let e=0,n=0,r=0,a=!1;for(let s=0;s<t.length;s++){let i=t[s];i==="`"?(n++,a=!1):i==="*"?a?(r++,a=!1):a=!0:a=!1,i!=="`"&&i!=="*"&&n%2===0&&r%2===0&&(e=s+1)}return e}function bK(t,e=Ac){let n=new Wi(e),r=n.push(t);return r+=n.finish(),r}function sx(t){if(!process.stdout.isTTY){process.stdout.write(t+`
|
|
721
|
+
`);return}process.stdout.write(bK(t))}function Eh(t){process.stdout.write(t)}var ZA=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function ix(t){if(!process.stderr.isTTY)return process.stderr.write(" "+t+`
|
|
722
|
+
`),{finishAndClear(){}};let e=0,n=()=>{process.stderr.write(`\r\x1B[K ${Tr.cyan(ZA[e%ZA.length])} ${t}`),e++};n();let r=setInterval(n,80);return{finishAndClear(){clearInterval(r),process.stderr.write("\r\x1B[K")}}}var As="http://localhost:11434",jh="llama3.2",dr=[{tag:"llama3.2",family:"llama",params:"3B",pullGb:2,minRamGb:8,why:"the floor \u2014 fast and tool-capable on any machine; weakest reasoning"},{tag:"llama3.1:8b",family:"llama",params:"8B",pullGb:4.9,minRamGb:16,why:"dependable general tool-caller"},{tag:"qwen3:8b",family:"qwen3",params:"8B",pullGb:5.2,minRamGb:16,why:"stronger reasoning than llama at the same size (hybrid thinking)"},{tag:"qwen3:14b",family:"qwen3",params:"14B",pullGb:9.3,minRamGb:32,why:"the 32 GB sweet spot \u2014 markedly better tool use and summarization"},{tag:"mistral-small3.2",family:"mistral",params:"24B",pullGb:15,minRamGb:48,why:"24B dense \u2014 excellent instruction following"},{tag:"qwen3:30b-a3b",family:"qwen3",params:"30B MoE (3B active)",pullGb:18.6,minRamGb:48,why:"mixture-of-experts \u2014 near-14B speed with much stronger quality"}];function jK(t){if(t===null)return dr[0];for(let e=dr.length-1;e>=0;e--)if(dr[e].minRamGb<=t)return dr[e];return dr[0]}function NK(){let t=vK().length||1,e=wK();return{cpus:t,ramGb:e>0?Math.floor(e/(1024*1024*1024)):null}}function Ch(){return ox()==="darwin"&&$K()==="arm64"?"Apple Silicon \u2014 GPU (Metal) shares unified memory, so total RAM is the model budget":ox()==="darwin"?"Intel Mac \u2014 Metal acceleration, VRAM not probed":"GPU not probed \u2014 recommendations assume system RAM is the budget"}function cx(){return _K(SK(),".kanonak","preferred-model")}function ux(){try{let t=AK(cx(),"utf-8").trim();return t.length>0?t:null}catch{return null}}function px(t){for(let e=dr.length-1;e>=0;e--){let n=dr[e].tag;if(t.some(r=>r===n||r.split(":")[0]===n))return n}return null}async function Nh(t){try{let e=await fetch(`${t}/api/tags`);return e.ok?((await e.json()).models??[]).map(r=>r.name??"").filter(Boolean):null}catch{return null}}async function PK(t){let e=await fetch(`${t}/api/tags`).catch(()=>null);if(!e)throw new Error(`reach Ollama at ${t} \u2014 is it running? (ollama serve, or the Ollama app)`);if(!e.ok)throw new Error(`Ollama at ${t} rejected the /api/tags model listing`);let n=await e.json(),r=[];for(let a of n.models??[]){let s=a.name??"",i=await fetch(`${t}/api/show`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:s,name:s})}).catch(()=>null),o=i&&i.ok?await i.json():{};r.push({name:s,sizeGb:(a.size??0)/1e9,family:a.details?.family??"unknown",params:a.details?.parameter_size??"?",tools:(o.capabilities??[]).includes("tools")})}return r}async function lx(t,e){let n=await PK(t),{cpus:r,ramGb:a}=NK(),s=jK(a),i=l=>n.some(c=>c.name===l||c.name.split(":")[0]===l);if(e){process.stdout.write(JSON.stringify({host:t,device:{cpus:r,ram_gb:a,acceleration:Ch()},installed:n.map(l=>({name:l.name,size_gb:l.sizeGb,family:l.family,parameters:l.params,tools:l.tools})),curated:dr.map(l=>({tag:l.tag,family:l.family,parameters:l.params,pull_gb:l.pullGb,min_ram_gb:l.minRamGb,why:l.why,installed:i(l.tag),fits:a===null?null:l.minRamGb<=a,recommended:l.tag===s.tag}))},null,2)+`
|
|
723
|
+
`);return}let o=Oa(Ac);if(process.stdout.write(`${o.bold("Local models")} \u2014 ollama at ${t}
|
|
723
724
|
|
|
724
725
|
`),n.length===0)process.stdout.write(` (none installed yet)
|
|
725
|
-
`);else for(let l of n){let c=l.tools?
|
|
726
|
+
`);else for(let l of n){let c=l.tools?nx("tools"):rx("no tools");process.stdout.write(` ${o.green("\u2713")} ${o.bold(l.name)} ${o.dim(`${l.sizeGb.toFixed(1)} GB \xB7 ${l.family} ${l.params} \xB7`)} ${c}
|
|
726
727
|
`)}process.stdout.write(a===null?`
|
|
727
|
-
This device: ${r} CPUs, RAM undetected \u2014 ${
|
|
728
|
+
This device: ${r} CPUs, RAM undetected \u2014 ${Ch()}
|
|
728
729
|
`:`
|
|
729
|
-
This device: ${r} CPUs, ${a} GiB RAM \u2014 ${
|
|
730
|
+
This device: ${r} CPUs, ${a} GiB RAM \u2014 ${Ch()}
|
|
730
731
|
`),process.stdout.write(`
|
|
731
732
|
${o.bold("Curated for kanonak ask")} (all tool-capable):
|
|
732
|
-
`);for(let l of
|
|
733
|
+
`);for(let l of dr){let c=a===null?null:l.minRamGb<=a,u=i(l.tag)?o.green("\u2713 installed"):l.tag===s.tag?o.yellow("\u2605 recommended for this device"):c===!0?"fits":c===!1?o.dim(`needs ${l.minRamGb} GB RAM`):o.dim(`needs ${l.minRamGb} GB RAM (RAM undetected)`);process.stdout.write(` ${o.bold(l.tag)} ${o.dim(`${l.params} \xB7 ${l.pullGb.toFixed(1)} GB pull \xB7`)} ${u}
|
|
733
734
|
`),process.stdout.write(` ${o.dim(l.why)}
|
|
734
|
-
`)}i(s.tag)||Tt(`get the recommended model: kanonak models pull ${s.tag}`),Tt('use one: kanonak ask --model <tag> "..." (or /model <tag> inside kanonak ask)')}async function
|
|
735
|
-
`))>=0;){let f=s.slice(0,p).trim();if(s=s.slice(p+1),!f)continue;let h;try{h=JSON.parse(f)}catch{continue}if(h.error)throw i&&process.stderr.write("\r\x1B[K"),new Error(`ollama pull of '${e}' failed: ${h.error}`);if(i&&h.total&&h.completed!==void 0){l=h.completed;let g=(h.completed/h.total*100).toFixed(0),m=(Date.now()-o)/1e3,y=m>0?h.completed/m:0,v=(h.completed/(1024*1024)).toFixed(0),k=(h.total/(1024*1024)).toFixed(0);process.stderr.write(`\r\x1B[K ${g}% ${v}/${k} MiB ${(y/(1024*1024)).toFixed(2)} MiB/s (${
|
|
735
|
+
`)}i(s.tag)||Tt(`get the recommended model: kanonak models pull ${s.tag}`),Tt('use one: kanonak ask --model <tag> "..." (or /model <tag> inside kanonak ask)')}async function TK(t,e){dr.some(c=>c.tag===e)||Tt(`'${e}' is not in kanonak's curated list (kanonak models) \u2014 pulling it anyway.`),tx(`Pulling ${e} via ollama at ${t}...`);let n=await fetch(`${t}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:e,stream:!0})}).catch(()=>null);if(!n)throw new Error(`reach Ollama at ${t} \u2014 is it running? (ollama serve, or the Ollama app)`);if(!n.ok||!n.body)throw new Error(`Ollama rejected the pull of '${e}' (HTTP ${n.status})`);let r=n.body.getReader(),a=new TextDecoder,s="",i=!!process.stderr.isTTY,o=Date.now(),l=0;for(;;){let{done:c,value:u}=await r.read();if(c)break;s+=a.decode(u,{stream:!0});let p;for(;(p=s.indexOf(`
|
|
736
|
+
`))>=0;){let f=s.slice(0,p).trim();if(s=s.slice(p+1),!f)continue;let h;try{h=JSON.parse(f)}catch{continue}if(h.error)throw i&&process.stderr.write("\r\x1B[K"),new Error(`ollama pull of '${e}' failed: ${h.error}`);if(i&&h.total&&h.completed!==void 0){l=h.completed;let g=(h.completed/h.total*100).toFixed(0),m=(Date.now()-o)/1e3,y=m>0?h.completed/m:0,v=(h.completed/(1024*1024)).toFixed(0),k=(h.total/(1024*1024)).toFixed(0);process.stderr.write(`\r\x1B[K ${g}% ${v}/${k} MiB ${(y/(1024*1024)).toFixed(2)} MiB/s (${ax(y)})`)}}}i&&process.stderr.write("\r\x1B[K"),xh(`Pulled ${e}.`),Tt(`try it: kanonak ask --model ${e} "how do I validate a package?"`)}async function OK(t,e){let n=await Nh(t);if(n===null)throw new Error(`reach Ollama at ${t} \u2014 is it running? (ollama serve, or the Ollama app)`);if(!n.some(a=>a===e||a.split(":")[0]===e))throw new Error(`'${e}' is not pulled, so it can't be the default.
|
|
736
737
|
Pull it first: kanonak models pull ${e}
|
|
737
|
-
See what you have: kanonak models`);let r=
|
|
738
|
-
`)
|
|
739
|
-
(command exited ${o}; stderr: ${s.trim()})`:l.length===0&&(l=`(no output; stderr: ${s.trim()})`),e(l)}),r.on("error",o=>{clearTimeout(i),e(`error: failed to run kanonak: ${o.message}`)})})}function
|
|
740
|
-
`)){let r=
|
|
738
|
+
See what you have: kanonak models`);let r=cx();EK(CK(r),{recursive:!0}),xK(r,e+`
|
|
739
|
+
`),xh(`kanonak ask now defaults to ${e}.`),Tt("override per run with --model <tag>; switch mid-conversation with /model <tag>")}function fx(t){let e=t.command("models").description("Discover, choose, and pull local models for kanonak ask (Ollama), with device-aware recommendations.").option("--host <url>","The Ollama endpoint.",As).option("--json","Print the listing as JSON (for scripts/agents).").action(async n=>{await lx(n.host.replace(/\/+$/,""),!!n.json)});e.command("list").description("List installed models and device-aware recommendations (the default).").option("--host <url>","The Ollama endpoint.",As).option("--json","Print as JSON (for scripts/agents).").action(async n=>{await lx(n.host.replace(/\/+$/,""),!!n.json)}),e.command("pull <name>").description("Download a model through the local Ollama, with progress.").option("--host <url>","The Ollama endpoint.",As).action(async(n,r)=>{await TK(r.host.replace(/\/+$/,""),n)}),e.command("use <name>").description("Set the default model kanonak ask uses (must already be pulled).").option("--host <url>","The Ollama endpoint.",As).action(async(n,r)=>{await OK(r.host.replace(/\/+$/,""),n)})}import{spawn as yx}from"child_process";import{createInterface as kx}from"readline";import{appendFileSync as LK,mkdirSync as RK,readdirSync as IK}from"fs";import{join as MK,dirname as DK}from"path";import{homedir as FK}from"os";var La="run_kanonak",dx=12e4,VK=[["validate"],["view"],["deps"],["search"],["hash"],["verify"],["docs"]];function hx(t){return{temperature:0,maxRounds:(t.paramsB??0)>=8?8:5}}function qK(t){if(t.length===0)return{kind:"refuse",reason:'refused: empty argv \u2014 pass a kanonak command, e.g. ["validate","./pkg.kan.yml"]'};let e=t.find(r=>r.startsWith("<")||r.endsWith(">"));return e?{kind:"refuse",reason:`refused: '${e}' is a placeholder, not a real value \u2014 use an actual path/URI`}:t[0]==="ask"?{kind:"refuse",reason:"refused: kanonak ask cannot invoke itself"}:t[0]==="docs"||t[0]==="help"||t.includes("--help")?{kind:"run",argv:t}:VK.some(r=>t.length>=r.length&&r.every((a,s)=>a===t[s]))?{kind:"run",argv:t}:{kind:"confirm",argv:t}}async function KK(t){if(!process.stdin.isTTY)return{refused:`refused: 'kanonak ${t.join(" ")}' changes state and needs interactive confirmation, but stdin is not a terminal \u2014 run it yourself or use interactive \`kanonak ask\``};xc(`the model wants to run: kanonak ${t.join(" ")}`);let e=kx({input:process.stdin,output:process.stderr}),n=await new Promise(r=>e.question(" allow it? [y/N] ",a=>r(a)));return e.close(),["y","yes"].includes(n.trim().toLowerCase())}async function Ph(t){return new Promise(e=>{let n=process.argv[1],r=yx(process.execPath,[...n.endsWith(".ts")?["--import","tsx"]:[],n,...t],{stdio:["ignore","pipe","pipe"]}),a="",s="";r.stdout.on("data",o=>a+=o.toString()),r.stderr.on("data",o=>s+=o.toString());let i=setTimeout(()=>{r.kill("SIGKILL"),e(`(killed after ${dx/1e3}s \u2014 long-running commands like 'serve' can't run inside a conversation turn; run them in a terminal)`)},dx);r.on("close",o=>{clearTimeout(i);let l=a.trim();o!==0?l+=`
|
|
740
|
+
(command exited ${o}; stderr: ${s.trim()})`:l.length===0&&(l=`(no output; stderr: ${s.trim()})`),e(l)}),r.on("error",o=>{clearTimeout(i),e(`error: failed to run kanonak: ${o.message}`)})})}function Th(t){let e=t;for(;;){let n=e.indexOf("<think>"),r=e.indexOf("</think>");if(n<0||r<0||r<n)break;e=e.slice(0,n)+e.slice(r+8)}return e}function UK(t){let e=Th(t),n=e.indexOf("<think>");if(n>=0)e=e.slice(0,n);else{let r="<think>";for(let a=r.length-1;a>=1;a--)if(e.endsWith(r.slice(0,a))){e=e.slice(0,e.length-a);break}}return e}function BK(t){let e=[];for(let n of t.split(`
|
|
741
|
+
`)){let r=mx(n.trim().replace(/^```/,"").trim());r&&e.push(r)}if(e.length===0){let n=t.indexOf("{"),r=t.lastIndexOf("}");if(n>=0&&r>n){let a=mx(t.slice(n,r+1));a&&e.push(a)}}return e}function mx(t){let e;try{e=JSON.parse(t)}catch{return null}if(typeof e!="object"||e===null)return null;let n=e;if(n.name!==La)return null;let a=(n.parameters??n.arguments)?.args;return Array.isArray(a)?a.filter(s=>typeof s=="string"):null}async function bx(t,e){let n;try{let c=await fetch(`${t}/api/tags`);if(!c.ok)throw new Error(`Ollama at ${t} rejected the /api/tags model listing`);n=await c.json()}catch(c){throw c instanceof Error&&/fetch failed|ECONNREFUSED|Failed to fetch/i.test(c.message)?await HK("ollama")?new Error(`\`kanonak ask\` uses a local model via Ollama, which is installed but not running (nothing is listening at ${t}).
|
|
741
742
|
Start it: ollama serve (or launch the Ollama app)
|
|
742
743
|
Then retry: kanonak ask "..."`):new Error(`\`kanonak ask\` answers questions with a LOCAL model via Ollama, which is not installed (and nothing is listening at ${t}).
|
|
743
744
|
Install it: brew install ollama (or https://ollama.com/download)
|
|
744
|
-
Pull the model: ollama pull ${
|
|
745
|
+
Pull the model: ollama pull ${jh}
|
|
745
746
|
Then retry: kanonak ask "..."`):c}if(!(n.models??[]).some(c=>c.name===e||(c.name??"").split(":")[0]===e))throw new Error(`Ollama is running at ${t}, but the model '${e}' is not pulled.
|
|
746
747
|
Pull it: kanonak models pull ${e}
|
|
747
748
|
See what you have: kanonak models`);let a=await fetch(`${t}/api/show`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:e,name:e})});if(!a.ok)throw new Error(`Ollama rejected /api/show for '${e}'`);let s=await a.json(),i=s.capabilities??[];if(i.length>0&&!i.includes("tools"))throw new Error(`the model '${e}' does not support tool calls, which \`kanonak ask\` needs to run kanonak commands.
|
|
748
749
|
See tool-capable models for this device: kanonak models
|
|
749
|
-
Then: kanonak ask --model <tag> "..."`);let o=s.details?.parameter_size,l=o&&parseFloat(o.replace(/[Bb]$/,""))||null;return{family:s.details?.family??"unknown",paramsB:l}}async function
|
|
750
|
+
Then: kanonak ask --model <tag> "..."`);let o=s.details?.parameter_size,l=o&&parseFloat(o.replace(/[Bb]$/,""))||null;return{family:s.details?.family??"unknown",paramsB:l}}async function HK(t){return new Promise(e=>{let n=yx(t,["--version"],{stdio:"ignore"});n.on("close",r=>e(r===0)),n.on("error",()=>e(!1))})}async function vx(){let t=await Ph(["docs"]),e=process.cwd(),n=[];try{n=IK(e).filter(s=>s.endsWith(".kan.yml"))}catch{}let r=n.length>0?n.map(s=>`./${s}`).join(", ")+" (pass these exact paths to commands)":"(none in this directory)";return[{role:"system",content:`You operate the kanonak CLI \u2014 the Kanonak Protocol tool for authoring, validating, and resolving semantic ontology packages (.kan.yml) \u2014 through the ${La} tool. The complete command reference:
|
|
750
751
|
|
|
751
752
|
${t}
|
|
752
753
|
Working directory: ${e}
|
|
@@ -755,8 +756,8 @@ Working directory: ${e}
|
|
|
755
756
|
How to work:
|
|
756
757
|
- To answer anything about a package's types, properties, references, or URIs, run validate/view/deps first and read the result \u2014 that output comes from the Kanonak Object Model, the source of truth. If a command hasn't shown you something, run it to find out, and base your answer on what it returned.
|
|
757
758
|
- Prefer the read-only commands (validate, view, deps, search, hash, verify); run ["<command>","--help"] if you need more detail than the reference above.
|
|
758
|
-
- Answer in markdown (rendered in the terminal): \`backticks\` for commands, paths, type names, and URIs; \`\`\`bash / \`\`\`json / \`\`\`yaml TAGGED fenced blocks; | tables | with a | --- | header row; # headers; --- dividers; **bold**; - bullets. Write prose for the user; to run a command, call the ${La} tool.`}]}var
|
|
759
|
-
`))>=0;){let C=g.slice(0,A).trim();if(g=g.slice(A+1),!C)continue;let N;try{N=JSON.parse(C)}catch{continue}if(N.error)throw y(),new Error(`Ollama chat failed: ${N.error}`);N.message?.tool_calls&&c.push(...N.message.tool_calls);let _=N.message?.content??"";if(!_||(l+=_,!i))continue;let B=
|
|
760
|
-
`)}}function
|
|
759
|
+
- Answer in markdown (rendered in the terminal): \`backticks\` for commands, paths, type names, and URIs; \`\`\`bash / \`\`\`json / \`\`\`yaml TAGGED fenced blocks; | tables | with a | --- | header row; # headers; --- dividers; **bold**; - bullets. Write prose for the user; to run a command, call the ${La} tool.`}]}var Oh=class{constructor(e,n,r){this.host=e;this.model=n;let a=hx(r);this.temperature=a.temperature,this.maxRounds=a.maxRounds}host;model;temperature;maxRounds;plainMode=!1;switch(e,n){this.model=e;let r=hx(n);this.temperature=r.temperature,this.maxRounds=r.maxRounds,this.plainMode=!1}tools(){return[{type:"function",function:{name:La,description:'Run the kanonak CLI and return its output \u2014 e.g. ["validate","./pkg.kan.yml"], ["view","./pkg.kan.yml"], ["deps","./pkg.kan.yml"], or ["validate","--help"].',parameters:{type:"object",properties:{args:{type:"array",items:{type:"string"},description:"argv for kanonak"}},required:["args"]}}}]}async chat(e,n){let r={model:this.model,messages:e,tools:this.tools(),stream:n,options:{temperature:this.temperature}},a=ix(`thinking (${this.model})...`),s;try{s=await fetch(`${this.host}/api/chat`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(r)})}catch(w){throw a.finishAndClear(),new Error(`call the Ollama chat API at ${this.host}: ${w.message}`)}if(!s.ok)throw a.finishAndClear(),new Error(`Ollama chat failed: HTTP ${s.status}: ${(await s.text()).trim()}`);if(!n){let w=await s.json();if(a.finishAndClear(),w.error)throw new Error(`Ollama chat failed: ${w.error}`);let S=w.message??{role:"assistant",content:""};return gx(S),{msg:S,streamed:!1}}let i=!!process.stdout.isTTY,o=new Wi,l="",c=[],u=0,p=null,f=s.body.getReader(),h=new TextDecoder,g="",m=!1,y=()=>{m||(a.finishAndClear(),m=!0)};for(;;){let{done:w,value:S}=await f.read();if(w)break;g+=h.decode(S,{stream:!0});let A;for(;(A=g.indexOf(`
|
|
760
|
+
`))>=0;){let C=g.slice(0,A).trim();if(g=g.slice(A+1),!C)continue;let N;try{N=JSON.parse(C)}catch{continue}if(N.error)throw y(),new Error(`Ollama chat failed: ${N.error}`);N.message?.tool_calls&&c.push(...N.message.tool_calls);let _=N.message?.content??"";if(!_||(l+=_,!i))continue;let B=UK(l);if(p===null){let X=B.replace(/^\s+/,"");X.length>0&&(p=X[0]!=="{")}p===!0&&B.length>u&&(y(),Eh(o.push(B.slice(u))),u=B.length)}}y();let v=p===!0&&u>0;v&&Eh(o.finish());let k={role:"assistant",content:l};return c.length>0&&(k.tool_calls=c),gx(k),{msg:k,streamed:v}}async answer(e,n){e.push({role:"user",content:n});let r=!1,a=!1,s=!1;for(let i=0;i<this.maxRounds;i++){let o=!this.plainMode&&!s,l=s&&a;s=!1;let{msg:c,streamed:u}=await this.chat(e,o),p=WK(c);l&&!this.plainMode&&(p.length>0||Th(String(c.content??"")).trim().length>0)&&(this.plainMode=!0,Tt(`(${this.model}'s replies only arrive unstreamed on this Ollama \u2014 streaming off for this session)`));let f=p;if(f.length===0){let h=Th(String(c.content??"")).trim(),g=BK(h);if(g.length>0)Tt("(the model wrote its tool calls as text \u2014 executing them)"),f=g.map(m=>({name:La,args:m}));else if(h.length===0){if(o&&!a){a=!0,s=!0,Tt("(the stream returned nothing \u2014 retrying unstreamed)");continue}if(!r){r=!0,Tt("(the model returned nothing \u2014 nudging it once)"),e.push({role:"user",content:"Answer the question now, in prose, using tool output or the run_kanonak tool."});continue}throw new Error("the model returned an empty reply repeatedly \u2014 try rephrasing the question")}else{e.push(c),u||sx(h);return}}e.push(c);for(let h of f){let g;if(h.name!==La)g=`refused: unknown tool '${h.name}'; only ${La} exists`;else{let m=qK(h.args);if(m.kind==="run")Tt(`\u2192 kanonak ${m.argv.join(" ")}`),g=await Ph(m.argv);else if(m.kind==="confirm"){let y=await KK(m.argv);y===!0?(Tt(`\u2192 kanonak ${m.argv.join(" ")} (approved)`),g=await Ph(m.argv)):y===!1?(Tt("(declined \u2014 not run)"),g="the user DECLINED this command \u2014 do not retry it; tell the user it was not run"):(xc(`blocked (needs interactive approval): kanonak ${m.argv.join(" ")}`),g=y.refused)}else xc(`refused model request: kanonak ${h.args.join(" ")}`),g=m.reason}e.push({role:"tool",content:g})}}throw new Error(`no answer after ${this.maxRounds} tool rounds \u2014 the model kept requesting commands. Try rephrasing (or /clear in interactive mode), or run the kanonak commands directly (see \`kanonak docs\`).`)}};function WK(t){let e=t.tool_calls;return Array.isArray(e)?e.map(n=>{let r=n.function,a=Array.isArray(r?.arguments?.args)?r.arguments.args.filter(s=>typeof s=="string"):[];return{name:r?.name??"",args:a}}):[]}function gx(t){if(process.env.KANONAK_ASK_DEBUG){let e=Oa(zi);process.stderr.write(e.dim(`[debug] ${JSON.stringify(t)}`)+`
|
|
761
|
+
`)}}function zK(){return MK(FK(),".kanonak","ask-history")}async function YK(t,e,n){let r=Oa(zi),a=zi?`${r.bold(r.cyan("kanonak\u203A"))} `:"kanonak\u203A ";Tt("interactive mode \u2014 /clear resets, /model <tag> switches models, 'exit' or Ctrl-D leaves");let s=kx({input:process.stdin,output:process.stderr,prompt:a}),i=c=>{try{let u=zK();RK(DK(u),{recursive:!0}),LK(u,c+`
|
|
761
762
|
`)}catch{}},o=!0,l=()=>new Promise(c=>{o||process.stderr.write(`
|
|
762
|
-
`),o=!1,s.question(a,async u=>{let p=u.trim();if(p.length===0)return c(l());if(i(p),p==="exit"||p==="quit")return c();if(p==="/clear")return n.length=0,n.push(...await
|
|
763
|
+
`),o=!1,s.question(a,async u=>{let p=u.trim();if(p.length===0)return c(l());if(i(p),p==="exit"||p==="quit")return c();if(p==="/clear")return n.length=0,n.push(...await vx()),Tt("conversation cleared; state re-fetched"),c(l());if(p==="/model")return Tt(`current model: ${t.model} \u2014 switch with /model <tag>; see choices with 'kanonak models'`),c(l());if(p.startsWith("/model ")){let f=p.slice(7).trim();try{let h=await bx(e,f);t.switch(f,h),Tt(`switched to ${t.model} (conversation kept) \u2014 make it stick: kanonak models use ${t.model}`)}catch(h){Ss(h)}return c(l())}try{await t.answer(n,p)}catch(f){Ss(f)}c(l())})});await l(),s.close()}function wx(t){t.command("ask [question]").description("Ask a local model (via Ollama) about Kanonak packages, or have it drive the kanonak CLI: reads run freely; any state-changing command needs your y/N approval.").option("--model <tag>","The Ollama model to use (must support tool calls). Defaults to your saved choice, else the best installed curated model, else llama3.2.").option("--host <url>","The Ollama endpoint.",As).action(async(e,n)=>{let r=n.host.replace(/\/+$/,""),a=n.model,s="";if(!a){let i=ux();if(i)a=i,s=" \u2014 your saved default (kanonak models use)";else{let o=px(await Nh(r)??[]);o?(a=o,s=" \u2014 best installed model (save one: kanonak models use <tag>)"):a=jh}}try{let i=await bx(r,a);Tt(`model ${a}${s} via ${r} (local; read-only commands run freely, anything state-changing asks you first)`);let o=new Oh(r,a,i),l=await vx();e?await o.answer(l,e):await YK(o,r,l)}catch(i){Ss(i),process.exitCode=1}})}var eU=QK(XK(import.meta.url)),tU=JSON.parse(JK(ZK(eU,"..","package.json"),"utf-8")),St=new GK;St.name("kanonak").description("Kanonak Protocol CLI - Validate and resolve Kanonak ontology packages").version(tU.version);St.command("validate <path>").description("Validate .kan.yml file(s). Resolves imports via HTTP from publisher domains.").option("--conformance","Additionally evaluate SHACL instance conformance (each document against the sh:NodeShapes in its own import closure); non-conformance exits 1.").option("--offline","No network: resolve from the workspace and global cache only. A `mode: link` target only HTTP could answer is reported as unverified (warning), not broken.").option("--json","Print one JSON document instead of text: every version validated, each with its file, namespace and issues. Exits 1 on an error, as without it.").action(async(t,e)=>{await WS(t,{conformance:e.conformance??!1,offline:e.offline??!1,json:e.json??!1})});St.command("install [package]").description("Install a package and its dependencies, or install all from kanonak.lock.").option("--frozen","Check kanonak.lock against this folder's packages first, and install nothing unless it fits them.").action(async(t,e)=>{await YS(t,e)});St.command("lock").description("Write kanonak.lock for the packages in this folder: each dependency at the newest version every range on it admits.").action(async()=>{await zS()});St.command("release-lock [files...]").description("Record the release lock of every published version in this folder that has none, or of each named one: the closure it resolves to now, beside its source.").option("--check","Write nothing, and exit 1 when a published version has no release lock.").option("--offline","Resolve against this folder and the package cache only, never a registry, as recording a past version needs.").action(async(t,e)=>{await XS(e,t)});St.command("upgrade").description("Raise each import's floor in the newest version of every package in this folder to the newest version its range admits, and import the built-in homes it names, as a new version.").option("--check","Write nothing, and exit 1 when any package would get a new version.").option("--source-of <publishers...>","Publishers whose source this folder is: their versions are the ones it holds, and their lock isn't fetched.").option("--package <packages...>","Upgrade only these packages, each publisher/package: only they get a new version, and every other package here is left as it is.").action(async t=>{await ZS(t)});St.command("deps <path>").description("Show resolved dependency tree for a .kan.yml file.").action(async t=>{await eA(t)});St.command("hash <target>").description("Print the canonical structural hash (sha256:\u2026) of a Kanonak package.").option("-v, --verbose","Also print the canonical form on stderr.").option("--frozen","Deprecated, and changes nothing: a hash reads the version each import states, never a lock.").option("--offline","No network: read the workspace and the global cache only, as validate --offline does.").action(async(t,e)=>{await GA(t,e)});St.addCommand(kA());St.addCommand(SA());St.addCommand(AA());St.addCommand(MA());St.addCommand(KA());St.addCommand(zA());St.addCommand(RA());St.addCommand(YA());QA(St);fx(St);wx(St);try{await St.parseAsync()}catch(t){Ss(t),process.exit(1)}
|