@kanonak-protocol/sdk 5.20.0 → 5.23.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.
Files changed (47) hide show
  1. package/dist/browser.d.ts +2 -2
  2. package/dist/browser.js +1 -1
  3. package/dist/chunk-6VIUXP4N.js +1 -0
  4. package/dist/{chunk-LYSCTQC2.js → chunk-APWYAZMI.js} +1 -1
  5. package/dist/chunk-BPIAKTAV.js +63 -0
  6. package/dist/{chunk-M443OYKT.js → chunk-BRCVOR7A.js} +1 -1
  7. package/dist/{chunk-6AIRUIV5.js → chunk-DUM5Q4MH.js} +1 -1
  8. package/dist/{chunk-YEGCG4MF.js → chunk-FNLI7URD.js} +1 -1
  9. package/dist/{chunk-V3IPBWWU.js → chunk-GFLQ5TPR.js} +1 -1
  10. package/dist/{chunk-YW6P24RF.js → chunk-H6UAD2LP.js} +1 -1
  11. package/dist/{chunk-NJ3AZYQD.js → chunk-KOWDHKBN.js} +1 -1
  12. package/dist/{chunk-V6KIDED2.js → chunk-LMD432SO.js} +1 -1
  13. package/dist/chunk-M7OWTFTC.js +2 -0
  14. package/dist/{chunk-SVUMCLK5.js → chunk-O6YV2SDB.js} +1 -1
  15. package/dist/chunk-PEB52US5.js +1 -0
  16. package/dist/chunk-QILEJIFU.js +1 -0
  17. package/dist/{chunk-5NH5XDGO.js → chunk-ULHACEE2.js} +1 -1
  18. package/dist/chunk-WKLSD5DQ.js +1 -0
  19. package/dist/chunk-YM2V52DK.js +152 -0
  20. package/dist/index.d.ts +3 -3
  21. package/dist/index.js +1 -1
  22. package/dist/look/LookRenderer.d.ts +162 -9
  23. package/dist/look/index.d.ts +1 -1
  24. package/dist/parsing/index.js +1 -1
  25. package/dist/reasoning/index.js +1 -1
  26. package/dist/repositories/browser.js +1 -1
  27. package/dist/repositories/index.js +1 -1
  28. package/dist/resolution/VersionUtils.d.ts +21 -1
  29. package/dist/resolution/index.d.ts +1 -3
  30. package/dist/resolution/index.js +1 -1
  31. package/dist/search/index.js +1 -1
  32. package/dist/server/index.js +1 -1
  33. package/dist/transformations/index.js +2 -2
  34. package/dist/uri-helpers/index.js +1 -1
  35. package/dist/validation/index.js +1 -1
  36. package/dist/validation/rules/repository/UnrenderableBandRule.d.ts +33 -0
  37. package/dist/validation/rules/repository/index.d.ts +1 -0
  38. package/package.json +2 -2
  39. package/dist/chunk-2ACBWC7K.js +0 -1
  40. package/dist/chunk-4NO7MHS7.js +0 -1
  41. package/dist/chunk-4YMGH5RR.js +0 -1
  42. package/dist/chunk-CCVH7TCQ.js +0 -2
  43. package/dist/chunk-P36E2UV6.js +0 -152
  44. package/dist/chunk-PEUTCG3B.js +0 -1
  45. package/dist/chunk-QHABFCRC.js +0 -0
  46. package/dist/chunk-UYSEO3OT.js +0 -63
  47. package/dist/resolution/InstanceSearch.d.ts +0 -32
@@ -0,0 +1,2 @@
1
+ import{a as F}from"./chunk-SC5M74NM.js";import{a as A}from"./chunk-KOWDHKBN.js";import{e as y,g as P,j as R}from"./chunk-QILEJIFU.js";var b="@kanonak-protocol/sdk (+https://kanonak.org)",v=b;function V(o){v=o}function G(){return v}function p(o){let t;try{t=typeof o=="string"?new URL(o):o}catch{throw new Error(`Kanonak requires an absolute https:// URL \u2014 got an unparseable or relative URL: ${String(o)}`)}if(t.protocol!=="https:")throw new Error(`Kanonak requires HTTPS \u2014 refusing to fetch ${t.href} (only https:// is supported).`)}var K=new Set([429,502,503,504]),I=4,T=500,C=2e4;function u(o,t){p(o);let e=new Headers(t?.headers);return e.has("User-Agent")||e.set("User-Agent",v),N(o,{...t,headers:e})}var d=I;function W(o){d=Math.max(0,o)}async function N(o,t){let e;for(let n=0;n<=d;n++){let r;try{r=await fetch(o,t)}catch(s){if(e=s,n>=d)throw s;await E(x(n,null));continue}if(!K.has(r.status)||n>=d)return r;await E(x(n,r.headers.get("retry-after")))}throw e??new Error("kanonakFetch: exhausted retries")}function x(o,t){let e=M(t);if(e!=null)return Math.min(e,C);let n=Math.min(C,T*2**o);return Math.floor(n/2+Math.random()*(n/2))}function M(o){if(!o)return null;let t=Number(o);if(Number.isFinite(t))return Math.max(0,t*1e3);let e=Date.parse(o);return Number.isNaN(e)?null:Math.max(0,e-Date.now())}function E(o){return new Promise(t=>setTimeout(t,o))}var S="https://{publisher}/{package}/{version}.kan.yml",L={version:1};function Y(){return{version:1}}var k=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):u(e))}catch{return L}if(n.status===404)return L;if(!n.ok)throw new Error(`Failed to fetch publisher config: ${e} (${n.status} ${n.statusText})`);let r=await n.json();if(typeof r.version!="number")throw new Error(`Invalid publisher config at ${e}: missing or invalid "version" field`);let s={version:r.version};return typeof r.package_url_template=="string"&&(j(e,"package_url_template",r.package_url_template),s.package_url_template=r.package_url_template),Array.isArray(r.featured_packages)&&r.featured_packages.every(i=>typeof i=="string")&&(s.featured_packages=r.featured_packages),s}resolvePackageUrl(t,e,n,r){let s=r.package_url_template??S,i=H(s,{publisher:t,package:e,version:n});return p(i),i}};function j(o,t,e){if(!e.startsWith("https://"))throw new Error(`Invalid publisher config at ${o}: ${t} must be an absolute https:// URL template (got "${e}").`)}function H(o,t){let e=o;for(let[r,s]of Object.entries(t))e=e.replaceAll(`{${r}}`,s);let n=e.match(/\{[a-z]+\}/);if(n)throw new Error(`Unresolved variable ${n[0]} in URL template: ${o}`);return e}import $ from"js-yaml";var O=`# This file is generated by Kanonak CLI. Do not edit manually.
2
+ `,B="sha256:";function _(o){let t=$.load(o);return!t||typeof t!="object"||t.version!=="1"?null:{version:"1",lastUpdated:t.lastUpdated??"",packages:t.packages??{}}}function Z(o){let t={};for(let n of Object.keys(o.packages).sort())t[n]=o.packages[n];let e=$.dump({...o,packages:t},{lineWidth:-1,sortKeys:!1,quotingType:'"'});return O+e}async function tt(o){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(o)),e=Array.from(new Uint8Array(t),n=>n.toString(16).padStart(2,"0")).join("");return`${B}${e}`}var m=class{configResolver;fetchFn;lockCache=new Map;constructor(t){this.configResolver=t?.configResolver??new k(t?.fetchFn),this.fetchFn=t?.fetchFn}getConfig(t){return this.configResolver.getConfig(t)}async getPackageUrl(t,e,n){let r=await this.configResolver.getConfig(t);return this.configResolver.resolvePackageUrl(t,e,n,r)}getLock(t){let e=this.lockCache.get(t);return e||(e=this.fetchLock(t),this.lockCache.set(t,e),e.catch(()=>{this.lockCache.get(t)===e&&this.lockCache.delete(t)})),e}async fetchLock(t){let e=`https://${t}/kanonak.lock`,n;try{n=this.fetchFn?await this.fetchFn(e,t):await u(e)}catch{return null}if(n.status===404)return null;if(!n.ok)throw new Error(`Failed to fetch publisher lock: ${e} (${n.status} ${n.statusText})`);return _(await n.text())}};import{VersionOperator as U}from"@kanonak-protocol/types/document/models/enums";function q(o,t){let e=P(o);return e?R(e,t):!1}var D=class{parser=new A;publisherIndex;documents=new Map;contentCache=new Map;fetchFn;onFetch;getFromCache;constructor(t){this.onFetch=t?.onFetch,this.getFromCache=t?.getFromCache,this.fetchFn=t?.fetchFn,this.publisherIndex=t?.fetchFn?new m({fetchFn:t.fetchFn}):new m}async getHighestCompatibleVersionAsync(t,e){let r=(await this.publisherIndex.getLock(t))?.packages[`${t}/${e.packageName}`];return r&&q(r.version,e)?this.fetchPinned(t,e.packageName,r):r&&e.versionOperator!==U.Exact?null:this.resolveByDirectFetch(t,e)}async fetchPinned(t,e,n){let r=n.version,s=`${t}/${e}@${r}`,i=this.documents.get(s);if(i)return i;let a=h=>{let f=this.parser.parse(h);return F(f,t,e,r),f};if(this.getFromCache){let h=this.getFromCache(t,e,r);if(h){let f=a(h);return this.documents.set(s,f),this.contentCache.set(s,h),f}}let l=n.resolved,c=this.fetchFn?await this.fetchFn(l,t):await u(l);if(!c.ok)throw new Error(`Failed to fetch Kanonak package: ${l} (${c.status} ${c.statusText})`);let g=await c.text(),w=a(g);return this.onFetch&&this.onFetch(t,e,r,g),this.documents.set(s,w),this.contentCache.set(s,g),w}async resolveByDirectFetch(t,e){let n=e.packageName,s=e.versionOperator===U.Exact?await this.publisherIndex.getPackageUrl(t,n,y(e.version)):`https://${t}/${n}.kan.yml`,i=await this.fetchFollowing(s,t);if(!i)return null;let a=this.parser.parse(i.content),l=a.metadata.namespace_;if(!l||!l.version)throw new Error(`Producer origin returned a package with no namespace/version for ${t}/${n}`);let c=y(l.version);F(a,t,n,c);let g=`${t}/${n}@${c}`;return this.onFetch&&this.onFetch(t,n,c,i.content),this.documents.set(g,a),this.contentCache.set(g,i.content),a}async fetchFollowing(t,e,n=4){let r=t;for(let s=0;s<n;s++){p(r);let i=this.fetchFn?await this.fetchFn(r,e):await u(r,{redirect:"manual"});if(i.status===301||i.status===302){let a=i.headers.get("location");if(!a)throw new Error(`Redirect with no Location header from ${r}`);r=new URL(a,r).toString();continue}if(i.status===404)return null;if(!i.ok)throw new Error(`Failed to fetch Kanonak package: ${r} (${i.status} ${i.statusText})`);return{url:r,content:await i.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,s]=e;return this.publisherIndex.getPackageUrl(n,r,s)}};export{b as a,V as b,G as c,p as d,u as e,W as f,Y as g,k as h,B as i,_ as j,Z as k,tt as l,m,D as n};
@@ -1 +1 @@
1
- import{c as M,d as L,m as k,r as V,s as E,v as x,w as C,y as F}from"./chunk-YW6P24RF.js";import{a as P}from"./chunk-FUUTGGJS.js";var B=class{cache=new Map;repository;logger;constructor(e,n){this.repository=e,this.logger=n}async resolveEntityAsync(e,n){let r=n.metadata?.namespace_?.toString()??"unknown",a=this.cache.get(r);if(a){let i=a.get(e);if(i)return i}let o=await this.buildEntityIndexAsyncInternal(n,new Set,"",new Map);return this.cache.set(r,o),o.get(e)??null}async resolveAllEntitiesAsync(e,n){let r=await this.buildAllEntitiesIndexAsync(n,new Set,"");if(e.includes(".")){let a=e.split("."),o=a[0],i=a[1],l=await this.findDocumentForAlias(n,o);return l?await this.resolveAllEntitiesAsync(i,l):[]}return r.filter(a=>a.entityName===e)}async buildAllEntitiesIndexAsync(e,n,r){let a=[],o=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${o}`),n.has(o))return this.logger?.debug?.(`Skipping ${o} - already visited (circular import prevention)`),a;n.add(o);let i=r.length===0?o:`${r} \u2192 ${o}`;for(let[l,p]of Object.entries(e.body))if(!l.includes(".")&&p&&typeof p=="object"&&!Array.isArray(p)){if(!e.metadata.namespace_)continue;let d=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};a.push({entityName:l,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,l,d),entity:p,definedInNamespace:o,isImported:r.length>0,importPath:i})}if(this.logger?.debug?.(`Collected ${a.length} entities from ${o}`),e.metadata?.imports){let l=Object.values(e.metadata.imports).reduce((p,d)=>p+d.length,0);this.logger?.debug?.(`Processing ${l} import(s) for ${o}`);for(let[p,d]of Object.entries(e.metadata.imports))for(let g of d)try{this.logger?.debug?.(`Resolving import: ${p}/${g.packageName}`);let y=await this.repository.getHighestCompatibleVersionAsync(p,g);if(y){this.logger?.debug?.(`Successfully loaded import: ${y.metadata?.namespace_?.toString()}`);let f=await this.buildAllEntitiesIndexAsync(y,n,i);a.push(...f),this.logger?.debug?.(`Added ${f.length} entities from import ${y.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${p}/${g.packageName}`)}catch(y){let f=y;throw this.logger?.error?.(`Failed to process import ${p}/${g.packageName} for namespace ${o}. Error: ${f.message}`,f),new Error(`Failed to process import ${p}/${g.packageName} for namespace ${o}. See inner exception for details.`,{cause:y})}}return a}async buildEntityIndexAsync(e){return await this.buildEntityIndexAsyncInternal(e,new Set,"",new Map)}async buildEntityIndexAsyncInternal(e,n,r,a){let o=new Map,i=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${i}`),n.has(i))return this.logger?.debug?.(`Skipping ${i} - circular import in progress`),o;let l=a.get(i);if(l)return l;n.add(i);let p=r.length===0?i:`${r} \u2192 ${i}`,d=0;for(let[g,y]of Object.entries(e.body))if(!g.includes(".")&&y&&typeof y=="object"&&!Array.isArray(y)){if(!e.metadata.namespace_)continue;if(!o.has(g)){let f=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};o.set(g,{entityName:g,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,g,f),entity:y,definedInNamespace:i,isImported:r.length>0,importPath:p}),d++}}if(this.logger?.debug?.(`Indexed ${d} entities from ${i}`),e.metadata?.imports){let g=Object.values(e.metadata.imports).reduce((y,f)=>y+f.length,0);this.logger?.debug?.(`Processing ${g} import(s) for ${i}`);for(let[y,f]of Object.entries(e.metadata.imports))for(let S of f)try{this.logger?.debug?.(`Resolving import: ${y}/${S.packageName}`);let $=await this.repository.getHighestCompatibleVersionAsync(y,S);if($){this.logger?.debug?.(`Successfully loaded import: ${$.metadata?.namespace_?.toString()}`);let j=await this.buildEntityIndexAsyncInternal($,n,p,a),D=0;for(let[U,_]of j.entries()){let K=o.get(U);if(!K)o.set(U,_),D++;else if(K.isImported&&_.isImported&&(K.uri.publisher!==_.uri.publisher||K.uri.package_!==_.uri.package_)){let R=K.isAmbiguous?K:{...K,isAmbiguous:!0,ambiguousNamespaces:[K.definedInNamespace]};R.ambiguousNamespaces.includes(_.definedInNamespace)||R.ambiguousNamespaces.push(_.definedInNamespace),o.set(U,R),this.logger?.warn?.(`Ambiguous reference '${U}': defined in ${R.ambiguousNamespaces.join(", ")}`)}if(S.alias&&!U.includes(".")){let R=`${S.alias}.${U}`;o.has(R)||(o.set(R,_),D++)}}this.logger?.debug?.(`Merged ${D} entities from import ${$.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${y}/${S.packageName}`)}catch($){let j=$;throw this.logger?.error?.(`Failed to process import ${y}/${S.packageName} for namespace ${i}. Error: ${j.message}`,j),new Error(`Failed to process import ${y}/${S.packageName} for namespace ${i}. See inner exception for details.`,{cause:$})}}return n.delete(i),a.set(i,o),o}async findDocumentForAlias(e,n){if(!e.metadata?.imports)return null;for(let[r,a]of Object.entries(e.metadata.imports))for(let o of a){if(o.alias===n)return await this.repository.getHighestCompatibleVersionAsync(r,o);if(!o.alias&&o.packageName===n)return await this.repository.getHighestCompatibleVersionAsync(r,o)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(e){this.cache.delete(e)}};var H=class t{static KNOWN_XSD_DATATYPES=new Set(["string","integer","int","boolean","decimal","float","double","date","datetime","time","duration","anyuri","base64binary","hexbinary","long","short","byte","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte"]);resourceResolver;constructor(e){this.resourceResolver=e}isXsdDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-xsd"&&t.KNOWN_XSD_DATATYPES.has(e.name.toLowerCase()):!1}isLiteralType(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-rdf"&&e.name==="Literal":!1}isMarkdownDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&e.name==="Markdown":!1}isSubstitutableDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&(e.name==="SubstitutableString"||e.name==="Markdown"):!1}isKnownXsdDatatypeName(e){let n=e.includes(".")?e.split(".")[1]:e;return t.KNOWN_XSD_DATATYPES.has(n.toLowerCase())}async isClassTypeAsync(e,n){if(this.isKnownXsdDatatypeName(e))return!1;let r=await this.resourceResolver.resolveEntityAsync(e,n);if(r){let a=r.entity.type;if(a){let o=String(a);return o==="Class"||o==="rdfs.Class"||o.endsWith(".Class")}}return!0}getPropertyTypeClassification(e){if(!e||e.trim().length===0)return"Property";switch(e.includes(".")?e.split(".")[1]:e){case"DatatypeProperty":return"DatatypeProperty";case"ObjectProperty":return"ObjectProperty";case"AnnotationProperty":return"AnnotationProperty";case"Property":return"Property";default:return"Property"}}isEffectiveDatatypeProperty(e,n){return!!(e==="DatatypeProperty"||e==="Property"&&this.isXsdDatatype(n)||e==="Property"&&this.isLiteralType(n))}isEffectiveObjectProperty(e,n){return!!(e==="ObjectProperty"||e==="Property"&&n&&!this.isXsdDatatype(n)&&!this.isLiteralType(n))}};function q(t){if(!t||t.trim().length===0)throw new Error("Kanonak address string cannot be null or empty");let e=t.trim(),n=e.split("/");if(n.length===1){let r=n[0];if(!r)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher, publisher/package[@version], or publisher/package[@version]/name.`);if(r.includes("@"))throw new Error(`Invalid Kanonak address: "${t}". A bare publisher cannot carry an @version qualifier \u2014 versions belong to packages.`);return{kind:"publisher",publisher:r}}if(n.length===2){let[r,a]=n;if(!r||!a)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let o=a.indexOf("@");if(o===-1)return{kind:"package",publisher:r,package_:a};let i=a.substring(0,o),l=a.substring(o+1);if(!i||!l)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let p=J(l);return{kind:"package",publisher:r,package_:i,version:p}}return{kind:"resource",uri:P.parse(e)}}function Ke(t){switch(t.kind){case"publisher":return t.publisher;case"package":return t.version?`${t.publisher}/${t.package_}@${t.version.major}.${t.version.minor}.${t.version.patch}`:`${t.publisher}/${t.package_}`;case"resource":return t.uri.toString()}}function J(t){let e=t.split(".").map(Number);return Q(e[0]||0,e[1]||0,e[2]||0)}function Q(t,e,n){return{major:t,minor:e,patch:n,toString:()=>`${t}.${e}.${n}`,equals:r=>!r||typeof r!="object"?!1:r.major===t&&r.minor===e&&r.patch===n,getHashCode:()=>t<<20|e<<10|n,compareTo:r=>t!==r.major?t-r.major:e!==r.minor?e-r.minor:n-r.patch}}function Se(t){return`${t.publisher}/${t.package_}/${t.name}`}function u(t,e,n){return`${t}/${e}/${n}`}function $e(t){return`${t.s}|${t.p}|${Z(t.o)}`}function Z(t){switch(t.kind){case"uri":return`u:${t.key}`;case"literal":return`l:${t.datatype}:${t.lexical}`;case"blank":return`b:${t.id}`}}function _e(t,e,n){return{s:t,p:e,o:{kind:"uri",key:n}}}var c="kanonak.org",s="core-rdf",m="core-owl",W="core-kanonak",O=new Map([["type",s],["subClassOf",s],["subPropertyOf",s],["domain",s],["range",s],["label",s],["comment",s],["seeAlso",s],["isDefinedBy",s],["member",s],["Resource",s],["Class",s],["Property",s],["Datatype",s],["Literal",s],["List",s],["ObjectProperty",m],["DatatypeProperty",m],["AnnotationProperty",m],["Thing",m],["Nothing",m],["Package",W]]),ee=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function Ae(t){return O.has(t)}function Ue(t){let e=O.get(t);return e?{publisher:c,package_:e}:void 0}function I(t,e,n){if(!t||!t.name)return;let r=O.get(t.name);if(!r)return;let a=()=>{t.publisher=c,t.package_=r,n&&(t.version=n.get(r))};if(ee.has(t.name)){let o=t.publisher===c&&t.package_===r;t.publisher=c,t.package_=r,!o&&n&&(t.version=n.get(r));return}t.publisher===c&&t.package_===r||t.publisher&&t.publisher.length>0&&(!e||e(t))||a()}var X=class{type=u(c,s,"type");subClassOf=u(c,s,"subClassOf");subPropertyOf=u(c,s,"subPropertyOf");domain=u(c,s,"domain");range=u(c,s,"range");label=u(c,s,"label");comment=u(c,s,"comment");resource=u(c,s,"Resource");class_=u(c,s,"Class");datatype=u(c,s,"Datatype");literal=u(c,s,"Literal");equivalentClass=u(c,m,"equivalentClass");equivalentProperty=u(c,m,"equivalentProperty");inverseOf=u(c,m,"inverseOf");sameAs=u(c,m,"sameAs");transitiveProperty=u(c,m,"TransitiveProperty");symmetricProperty=u(c,m,"SymmetricProperty");objectProperty=u(c,m,"ObjectProperty");datatypeProperty=u(c,m,"DatatypeProperty");annotationProperty=u(c,m,"AnnotationProperty");package_=u(c,W,"Package")};var ne=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function b(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=e.entity.type;if(typeof n=="string"){let a={publisher:"",package_:"",name:n.includes(".")?n.substring(n.lastIndexOf(".")+1):n};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}if(e.statement&&Array.isArray(e.statement)){for(let n of e.statement)if(n.predicate?.subject?.name==="type"&&n.object?.subject){let r=n.object.subject,a={publisher:r.publisher??"",package_:r.package_??"",name:r.name};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}return null}function h(t,e){return ne.has(`${t}/${e}`)}var te=new Set(["Property","ObjectProperty","DatatypeProperty","AnnotationProperty"]);function N(t){if(h(t.publisher,t.package_))return te.has(t.name)?t.name:void 0}var Y=class t{static getTypeUri(e){return b(e)}static isCoreOntologyType(e){return h(e.publisher,e.package_)}static isClassType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Class":!1}static isDatatypeType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Datatype":!1}static isDatatypePropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="DatatypeProperty":!1}static isObjectPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="ObjectProperty":!1}static isAnnotationPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="AnnotationProperty":!1}static isGenericPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Property":!1}static isAnyPropertyType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"}static isSchemaDefinitionType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Class"||n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"||n.name==="Datatype"}static isInstanceOfKnownClass(e,n){if(t.isSchemaDefinitionType(e))return!1;let r=b(e);return r?n.has(r.name):!1}};var v="kanonak.org",A="core-rdf",re={publisher:v,package_:A,name:"domain"},ae={publisher:v,package_:A,name:"range"},oe={publisher:v,package_:A,name:"subClassOf"},ie={publisher:v,package_:A,name:"type"},se={publisher:v,package_:A,name:"label"},pe={publisher:v,package_:A,name:"comment"},ce=new P(v,A,"Resource");function le(t){try{let e=q(`${t.namespace}/${t.name}`);return e.kind==="resource"?e.uri:void 0}catch{return}}function T(t,e){let n=C(t,e);if(n)return[n];let r=[];for(let a of F(t,e))a instanceof L&&r.push(a.subject);return r}function G(t,e){let n=[],r=new Set,a="version"in e?e.version:void 0,o=[new P(e.publisher,e.package_,e.name,a??void 0)];for(;o.length>0;){let i=o.shift(),l=k(i);if(r.has(l))continue;r.add(l),n.push(i);let p=ue(t,i);p&&o.push(...T(p,oe))}return n}function ue(t,e){return e.version&&typeof e.version.major=="number"?V(t,e)??E(t,e)[0]:E(t,e)[0]}function w(t,e){let n;for(let r of me(e)){let a=ye(t,r);if(a){if(a!=="Property")return a;n??=a}}return n}function ye(t,e){let n=N(e);if(n)return n;let r=z.get(t);r||(r=new Map,z.set(t,r));let a=e.version,o=a&&typeof a.major=="number"?`${k(e)}@${a.major}.${a.minor}.${a.patch}`:k(e),i=r.get(o);if(i!==void 0)return i??void 0;let l;for(let p of G(t,e)){let d=N(p);if(d){if(d!=="Property"){l=d;break}l??="Property"}}return r.set(o,l??null),l}var z=new WeakMap;function Te(t,e){return w(t,e)!==void 0}function Me(t,e){return w(t,e)==="ObjectProperty"}function Le(t,e){return w(t,e)==="DatatypeProperty"}function de(t,e){let n=new Set([k(ce)]);for(let r of G(t,e))n.add(k(r));return n}function ge(t,e){let n=de(t,e),r=[],a=new Set;for(let o of t){if(!(o instanceof M))continue;let i=w(t,o);if(!i)continue;let l=T(o,re);if(!l.some(g=>n.has(k(g))))continue;let p=le(o);if(!p)continue;let d=k(p);a.has(d)||(a.add(d),r.push({uri:p,label:x(o,se),comment:x(o,pe),kind:i==="ObjectProperty"?"object":i==="DatatypeProperty"?"datatype":"other",range:C(o,ae),domains:l}))}return r}function Ve(t,e,n){let r=ge(t,e).find(a=>k(a.uri)===k(n));return r?{ok:!0,descriptor:r}:{ok:!1,message:`Property ${n.publisher}/${n.package_}/${n.name} is not in scope for ${e.publisher}/${e.package_}/${e.name}.`}}function me(t){return T(t,ie)}export{B as a,H as b,q as c,Ke as d,Se as e,u as f,$e as g,Z as h,_e as i,Ae as j,Ue as k,I as l,X as m,N as n,Y as o,le as p,G as q,w as r,Te as s,Me as t,Le as u,ge as v,Ve as w,me as x};
1
+ import{c as M,d as L,m as k,r as V,s as E,v as x,w as C,y as F}from"./chunk-H6UAD2LP.js";import{a as P}from"./chunk-FUUTGGJS.js";var B=class{cache=new Map;repository;logger;constructor(e,n){this.repository=e,this.logger=n}async resolveEntityAsync(e,n){let r=n.metadata?.namespace_?.toString()??"unknown",a=this.cache.get(r);if(a){let i=a.get(e);if(i)return i}let o=await this.buildEntityIndexAsyncInternal(n,new Set,"",new Map);return this.cache.set(r,o),o.get(e)??null}async resolveAllEntitiesAsync(e,n){let r=await this.buildAllEntitiesIndexAsync(n,new Set,"");if(e.includes(".")){let a=e.split("."),o=a[0],i=a[1],l=await this.findDocumentForAlias(n,o);return l?await this.resolveAllEntitiesAsync(i,l):[]}return r.filter(a=>a.entityName===e)}async buildAllEntitiesIndexAsync(e,n,r){let a=[],o=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building ALL entities index for namespace: ${o}`),n.has(o))return this.logger?.debug?.(`Skipping ${o} - already visited (circular import prevention)`),a;n.add(o);let i=r.length===0?o:`${r} \u2192 ${o}`;for(let[l,p]of Object.entries(e.body))if(!l.includes(".")&&p&&typeof p=="object"&&!Array.isArray(p)){if(!e.metadata.namespace_)continue;let d=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};a.push({entityName:l,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,l,d),entity:p,definedInNamespace:o,isImported:r.length>0,importPath:i})}if(this.logger?.debug?.(`Collected ${a.length} entities from ${o}`),e.metadata?.imports){let l=Object.values(e.metadata.imports).reduce((p,d)=>p+d.length,0);this.logger?.debug?.(`Processing ${l} import(s) for ${o}`);for(let[p,d]of Object.entries(e.metadata.imports))for(let g of d)try{this.logger?.debug?.(`Resolving import: ${p}/${g.packageName}`);let y=await this.repository.getHighestCompatibleVersionAsync(p,g);if(y){this.logger?.debug?.(`Successfully loaded import: ${y.metadata?.namespace_?.toString()}`);let f=await this.buildAllEntitiesIndexAsync(y,n,i);a.push(...f),this.logger?.debug?.(`Added ${f.length} entities from import ${y.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${p}/${g.packageName}`)}catch(y){let f=y;throw this.logger?.error?.(`Failed to process import ${p}/${g.packageName} for namespace ${o}. Error: ${f.message}`,f),new Error(`Failed to process import ${p}/${g.packageName} for namespace ${o}. See inner exception for details.`,{cause:y})}}return a}async buildEntityIndexAsync(e){return await this.buildEntityIndexAsyncInternal(e,new Set,"",new Map)}async buildEntityIndexAsyncInternal(e,n,r,a){let o=new Map,i=e.metadata?.namespace_?.toString()??"unknown";if(this.logger?.debug?.(`Building entity index for namespace: ${i}`),n.has(i))return this.logger?.debug?.(`Skipping ${i} - circular import in progress`),o;let l=a.get(i);if(l)return l;n.add(i);let p=r.length===0?i:`${r} \u2192 ${i}`,d=0;for(let[g,y]of Object.entries(e.body))if(!g.includes(".")&&y&&typeof y=="object"&&!Array.isArray(y)){if(!e.metadata.namespace_)continue;if(!o.has(g)){let f=e.metadata.namespace_.version??{major:1,minor:0,patch:0,toString:()=>"1.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};o.set(g,{entityName:g,uri:new P(e.metadata.namespace_.publisher,e.metadata.namespace_.package_,g,f),entity:y,definedInNamespace:i,isImported:r.length>0,importPath:p}),d++}}if(this.logger?.debug?.(`Indexed ${d} entities from ${i}`),e.metadata?.imports){let g=Object.values(e.metadata.imports).reduce((y,f)=>y+f.length,0);this.logger?.debug?.(`Processing ${g} import(s) for ${i}`);for(let[y,f]of Object.entries(e.metadata.imports))for(let S of f)try{this.logger?.debug?.(`Resolving import: ${y}/${S.packageName}`);let $=await this.repository.getHighestCompatibleVersionAsync(y,S);if($){this.logger?.debug?.(`Successfully loaded import: ${$.metadata?.namespace_?.toString()}`);let j=await this.buildEntityIndexAsyncInternal($,n,p,a),D=0;for(let[U,_]of j.entries()){let K=o.get(U);if(!K)o.set(U,_),D++;else if(K.isImported&&_.isImported&&(K.uri.publisher!==_.uri.publisher||K.uri.package_!==_.uri.package_)){let R=K.isAmbiguous?K:{...K,isAmbiguous:!0,ambiguousNamespaces:[K.definedInNamespace]};R.ambiguousNamespaces.includes(_.definedInNamespace)||R.ambiguousNamespaces.push(_.definedInNamespace),o.set(U,R),this.logger?.warn?.(`Ambiguous reference '${U}': defined in ${R.ambiguousNamespaces.join(", ")}`)}if(S.alias&&!U.includes(".")){let R=`${S.alias}.${U}`;o.has(R)||(o.set(R,_),D++)}}this.logger?.debug?.(`Merged ${D} entities from import ${$.metadata?.namespace_?.toString()}`)}else this.logger?.warn?.(`Failed to load import: ${y}/${S.packageName}`)}catch($){let j=$;throw this.logger?.error?.(`Failed to process import ${y}/${S.packageName} for namespace ${i}. Error: ${j.message}`,j),new Error(`Failed to process import ${y}/${S.packageName} for namespace ${i}. See inner exception for details.`,{cause:$})}}return n.delete(i),a.set(i,o),o}async findDocumentForAlias(e,n){if(!e.metadata?.imports)return null;for(let[r,a]of Object.entries(e.metadata.imports))for(let o of a){if(o.alias===n)return await this.repository.getHighestCompatibleVersionAsync(r,o);if(!o.alias&&o.packageName===n)return await this.repository.getHighestCompatibleVersionAsync(r,o)}return null}clearCache(){this.cache.clear()}clearCacheForDocument(e){this.cache.delete(e)}};var H=class t{static KNOWN_XSD_DATATYPES=new Set(["string","integer","int","boolean","decimal","float","double","date","datetime","time","duration","anyuri","base64binary","hexbinary","long","short","byte","nonnegativeinteger","positiveinteger","negativeinteger","nonpositiveinteger","unsignedint","unsignedlong","unsignedshort","unsignedbyte"]);resourceResolver;constructor(e){this.resourceResolver=e}isXsdDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-xsd"&&t.KNOWN_XSD_DATATYPES.has(e.name.toLowerCase()):!1}isLiteralType(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-rdf"&&e.name==="Literal":!1}isMarkdownDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&e.name==="Markdown":!1}isSubstitutableDatatype(e){return e?e.publisher==="kanonak.org"&&e.package_==="core-prose"&&(e.name==="SubstitutableString"||e.name==="Markdown"):!1}isKnownXsdDatatypeName(e){let n=e.includes(".")?e.split(".")[1]:e;return t.KNOWN_XSD_DATATYPES.has(n.toLowerCase())}async isClassTypeAsync(e,n){if(this.isKnownXsdDatatypeName(e))return!1;let r=await this.resourceResolver.resolveEntityAsync(e,n);if(r){let a=r.entity.type;if(a){let o=String(a);return o==="Class"||o==="rdfs.Class"||o.endsWith(".Class")}}return!0}getPropertyTypeClassification(e){if(!e||e.trim().length===0)return"Property";switch(e.includes(".")?e.split(".")[1]:e){case"DatatypeProperty":return"DatatypeProperty";case"ObjectProperty":return"ObjectProperty";case"AnnotationProperty":return"AnnotationProperty";case"Property":return"Property";default:return"Property"}}isEffectiveDatatypeProperty(e,n){return!!(e==="DatatypeProperty"||e==="Property"&&this.isXsdDatatype(n)||e==="Property"&&this.isLiteralType(n))}isEffectiveObjectProperty(e,n){return!!(e==="ObjectProperty"||e==="Property"&&n&&!this.isXsdDatatype(n)&&!this.isLiteralType(n))}};function q(t){if(!t||t.trim().length===0)throw new Error("Kanonak address string cannot be null or empty");let e=t.trim(),n=e.split("/");if(n.length===1){let r=n[0];if(!r)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher, publisher/package[@version], or publisher/package[@version]/name.`);if(r.includes("@"))throw new Error(`Invalid Kanonak address: "${t}". A bare publisher cannot carry an @version qualifier \u2014 versions belong to packages.`);return{kind:"publisher",publisher:r}}if(n.length===2){let[r,a]=n;if(!r||!a)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let o=a.indexOf("@");if(o===-1)return{kind:"package",publisher:r,package_:a};let i=a.substring(0,o),l=a.substring(o+1);if(!i||!l)throw new Error(`Invalid Kanonak address: "${t}". Expected publisher/package[@version].`);let p=J(l);return{kind:"package",publisher:r,package_:i,version:p}}return{kind:"resource",uri:P.parse(e)}}function Ke(t){switch(t.kind){case"publisher":return t.publisher;case"package":return t.version?`${t.publisher}/${t.package_}@${t.version.major}.${t.version.minor}.${t.version.patch}`:`${t.publisher}/${t.package_}`;case"resource":return t.uri.toString()}}function J(t){let e=t.split(".").map(Number);return Q(e[0]||0,e[1]||0,e[2]||0)}function Q(t,e,n){return{major:t,minor:e,patch:n,toString:()=>`${t}.${e}.${n}`,equals:r=>!r||typeof r!="object"?!1:r.major===t&&r.minor===e&&r.patch===n,getHashCode:()=>t<<20|e<<10|n,compareTo:r=>t!==r.major?t-r.major:e!==r.minor?e-r.minor:n-r.patch}}function Se(t){return`${t.publisher}/${t.package_}/${t.name}`}function u(t,e,n){return`${t}/${e}/${n}`}function $e(t){return`${t.s}|${t.p}|${Z(t.o)}`}function Z(t){switch(t.kind){case"uri":return`u:${t.key}`;case"literal":return`l:${t.datatype}:${t.lexical}`;case"blank":return`b:${t.id}`}}function _e(t,e,n){return{s:t,p:e,o:{kind:"uri",key:n}}}var c="kanonak.org",s="core-rdf",m="core-owl",W="core-kanonak",O=new Map([["type",s],["subClassOf",s],["subPropertyOf",s],["domain",s],["range",s],["label",s],["comment",s],["seeAlso",s],["isDefinedBy",s],["member",s],["Resource",s],["Class",s],["Property",s],["Datatype",s],["Literal",s],["List",s],["ObjectProperty",m],["DatatypeProperty",m],["AnnotationProperty",m],["Thing",m],["Nothing",m],["Package",W]]),ee=new Set(["type","subClassOf","subPropertyOf","domain","range"]);function Ae(t){return O.has(t)}function Ue(t){let e=O.get(t);return e?{publisher:c,package_:e}:void 0}function I(t,e,n){if(!t||!t.name)return;let r=O.get(t.name);if(!r)return;let a=()=>{t.publisher=c,t.package_=r,n&&(t.version=n.get(r))};if(ee.has(t.name)){let o=t.publisher===c&&t.package_===r;t.publisher=c,t.package_=r,!o&&n&&(t.version=n.get(r));return}t.publisher===c&&t.package_===r||t.publisher&&t.publisher.length>0&&(!e||e(t))||a()}var X=class{type=u(c,s,"type");subClassOf=u(c,s,"subClassOf");subPropertyOf=u(c,s,"subPropertyOf");domain=u(c,s,"domain");range=u(c,s,"range");label=u(c,s,"label");comment=u(c,s,"comment");resource=u(c,s,"Resource");class_=u(c,s,"Class");datatype=u(c,s,"Datatype");literal=u(c,s,"Literal");equivalentClass=u(c,m,"equivalentClass");equivalentProperty=u(c,m,"equivalentProperty");inverseOf=u(c,m,"inverseOf");sameAs=u(c,m,"sameAs");transitiveProperty=u(c,m,"TransitiveProperty");symmetricProperty=u(c,m,"SymmetricProperty");objectProperty=u(c,m,"ObjectProperty");datatypeProperty=u(c,m,"DatatypeProperty");annotationProperty=u(c,m,"AnnotationProperty");package_=u(c,W,"Package")};var ne=new Set(["kanonak.org/core-rdf","kanonak.org/core-owl","kanonak.org/core-xsd","kanonak.org/core-kanonak"]);function b(t){let e=t;if(e.entity&&typeof e.entity=="object"){let n=e.entity.type;if(typeof n=="string"){let a={publisher:"",package_:"",name:n.includes(".")?n.substring(n.lastIndexOf(".")+1):n};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}if(e.statement&&Array.isArray(e.statement)){for(let n of e.statement)if(n.predicate?.subject?.name==="type"&&n.object?.subject){let r=n.object.subject,a={publisher:r.publisher??"",package_:r.package_??"",name:r.name};return I(a),{publisher:a.publisher,package_:a.package_,name:a.name}}}return null}function h(t,e){return ne.has(`${t}/${e}`)}var te=new Set(["Property","ObjectProperty","DatatypeProperty","AnnotationProperty"]);function N(t){if(h(t.publisher,t.package_))return te.has(t.name)?t.name:void 0}var Y=class t{static getTypeUri(e){return b(e)}static isCoreOntologyType(e){return h(e.publisher,e.package_)}static isClassType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Class":!1}static isDatatypeType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Datatype":!1}static isDatatypePropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="DatatypeProperty":!1}static isObjectPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="ObjectProperty":!1}static isAnnotationPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="AnnotationProperty":!1}static isGenericPropertyType(e){let n=b(e);return n?h(n.publisher,n.package_)&&n.name==="Property":!1}static isAnyPropertyType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"}static isSchemaDefinitionType(e){let n=b(e);return!n||!h(n.publisher,n.package_)?!1:n.name==="Class"||n.name==="Property"||n.name==="DatatypeProperty"||n.name==="ObjectProperty"||n.name==="AnnotationProperty"||n.name==="Datatype"}static isInstanceOfKnownClass(e,n){if(t.isSchemaDefinitionType(e))return!1;let r=b(e);return r?n.has(r.name):!1}};var v="kanonak.org",A="core-rdf",re={publisher:v,package_:A,name:"domain"},ae={publisher:v,package_:A,name:"range"},oe={publisher:v,package_:A,name:"subClassOf"},ie={publisher:v,package_:A,name:"type"},se={publisher:v,package_:A,name:"label"},pe={publisher:v,package_:A,name:"comment"},ce=new P(v,A,"Resource");function le(t){try{let e=q(`${t.namespace}/${t.name}`);return e.kind==="resource"?e.uri:void 0}catch{return}}function T(t,e){let n=C(t,e);if(n)return[n];let r=[];for(let a of F(t,e))a instanceof L&&r.push(a.subject);return r}function G(t,e){let n=[],r=new Set,a="version"in e?e.version:void 0,o=[new P(e.publisher,e.package_,e.name,a??void 0)];for(;o.length>0;){let i=o.shift(),l=k(i);if(r.has(l))continue;r.add(l),n.push(i);let p=ue(t,i);p&&o.push(...T(p,oe))}return n}function ue(t,e){return e.version&&typeof e.version.major=="number"?V(t,e)??E(t,e)[0]:E(t,e)[0]}function w(t,e){let n;for(let r of me(e)){let a=ye(t,r);if(a){if(a!=="Property")return a;n??=a}}return n}function ye(t,e){let n=N(e);if(n)return n;let r=z.get(t);r||(r=new Map,z.set(t,r));let a=e.version,o=a&&typeof a.major=="number"?`${k(e)}@${a.major}.${a.minor}.${a.patch}`:k(e),i=r.get(o);if(i!==void 0)return i??void 0;let l;for(let p of G(t,e)){let d=N(p);if(d){if(d!=="Property"){l=d;break}l??="Property"}}return r.set(o,l??null),l}var z=new WeakMap;function Te(t,e){return w(t,e)!==void 0}function Me(t,e){return w(t,e)==="ObjectProperty"}function Le(t,e){return w(t,e)==="DatatypeProperty"}function de(t,e){let n=new Set([k(ce)]);for(let r of G(t,e))n.add(k(r));return n}function ge(t,e){let n=de(t,e),r=[],a=new Set;for(let o of t){if(!(o instanceof M))continue;let i=w(t,o);if(!i)continue;let l=T(o,re);if(!l.some(g=>n.has(k(g))))continue;let p=le(o);if(!p)continue;let d=k(p);a.has(d)||(a.add(d),r.push({uri:p,label:x(o,se),comment:x(o,pe),kind:i==="ObjectProperty"?"object":i==="DatatypeProperty"?"datatype":"other",range:C(o,ae),domains:l}))}return r}function Ve(t,e,n){let r=ge(t,e).find(a=>k(a.uri)===k(n));return r?{ok:!0,descriptor:r}:{ok:!1,message:`Property ${n.publisher}/${n.package_}/${n.name} is not in scope for ${e.publisher}/${e.package_}/${e.name}.`}}function me(t){return T(t,ie)}export{B as a,H as b,q as c,Ke as d,Se as e,u as f,$e as g,Z as h,_e as i,Ae as j,Ue as k,I as l,X as m,N as n,Y as o,le as p,G as q,w as r,Te as s,Me as t,Le as u,ge as v,Ve as w,me as x};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-FUUTGGJS.js";var i=class{resourceResolver;constructor(e){this.resourceResolver=e}async buildFromNameAsync(e,r){return(await this.resourceResolver.resolveEntityAsync(e,r))?.uri??null}buildFromName(e,r,t){if(e.includes(".")){let o=e.split("."),l=o[0],u=o[1],p=this.findPackageNameForAlias(t,l);if(p){for(let n of r.values())if(n.entityName===u&&n.uri.package_===p)return n.uri}return null}let s=r.get(e);return s?s.uri:null}create(e,r,t,s){return new a(e,r,t,s)}findPackageNameForAlias(e,r){if(!e.metadata.imports)return null;for(let[t,s]of Object.entries(e.metadata.imports))for(let o of s)if(o.alias===r||!o.alias&&o.packageName===r)return o.packageName;return null}};export{i as a};
@@ -0,0 +1 @@
1
+ import{VersionOperator as t}from"@kanonak-protocol/types/document/models/enums";function g(e){switch(e){case"=":return t.Exact;case"~":return t.Compatible;case"^":return t.Major;case"*":return t.Any;default:return t.Compatible}}function v(e){switch(e){case t.Exact:return"=";case t.Compatible:return"~";case t.Major:return"^";case t.Any:return"*";default:return"~"}}function a(e,r){return e.major!==r.major?e.major-r.major:e.minor!==r.minor?e.minor-r.minor:e.patch-r.patch}function l(e,r){return e.major===r.major&&e.minor===r.minor&&e.patch===r.patch}function c(e){return`${e.major}.${e.minor}.${e.patch}`}function p(e,r,o){let u=`${e}.${r}.${o}`;return{major:e,minor:r,patch:o,toString:()=>u,equals:n=>n?.major===e&&n?.minor===r&&n?.patch===o,getHashCode:()=>e<<20|r<<10|o,compareTo:n=>e!==n.major?e-n.major:r!==n.minor?r-n.minor:o-n.patch}}function h(e){let r=/^(\d+)\.(\d+)\.(\d+)$/.exec(e);return r?p(Number(r[1]),Number(r[2]),Number(r[3])):null}function f(e,r){return a(e,r)>=0&&e.major===r.major&&e.minor===r.minor}function V(e,r){return r.major===0?a(e,r)>=0&&e.major===0&&e.minor===r.minor:a(e,r)>=0&&e.major===r.major}function j(e,r){switch(r.versionOperator){case t.Exact:return l(e,r.version);case t.Compatible:return f(e,r.version);case t.Major:return V(e,r.version);case t.Any:return a(e,r.minVersion)>=0;default:return!1}}function b(e,r={}){let{requestedVersion:o}=r;if(e.length===0)return{chosen:null,alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!!o};if(o){let n=e.find(i=>{let s=i.metadata.namespace_?.version;return!!s&&c(s)===o});return n?{chosen:n,alternatives:e.filter(i=>i!==n),multipleVersionsPresent:e.length>1,exactRequestedVersionMissing:!1}:{chosen:null,alternatives:e,multipleVersionsPresent:e.length>1,exactRequestedVersionMissing:!0}}if(e.length===1)return{chosen:e[0],alternatives:[],multipleVersionsPresent:!1,exactRequestedVersionMissing:!1};let u=[...e].sort((n,i)=>{let s=n.metadata.namespace_?.version,m=i.metadata.namespace_?.version;return!s&&!m?0:s?m?a(m,s):-1:1});return{chosen:u[0],alternatives:u.slice(1),multipleVersionsPresent:!0,exactRequestedVersionMissing:!1}}export{g as a,v as b,a as c,l as d,c as e,p as f,h as g,f as h,V as i,j,b as k};
@@ -1,2 +1,2 @@
1
- import{l as V}from"./chunk-V6KIDED2.js";import{a as E}from"./chunk-NJ3AZYQD.js";var L=class{propertyUri;propertyType;range;rangeUri;isImported;definedInNamespace};import{parseDocument as O,LineCounter as R,isMap as h,isPair as f,isScalar as g,isSeq as I}from"yaml";var K=class i{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let t=new i,n=new R,r=O(e,{lineCounter:n});if(r.errors.length>0||!h(r.contents))return t;N(r.contents,[],n,t);for(let o of r.contents.items){if(!f(o)||!g(o.key))continue;let a=String(o.key.value),u=o.key.range;if(!u)continue;t.entities.set(a,d(u,n));let s=o.value,c=s&&typeof s=="object"&&"range"in s?s.range:void 0;if(c?t.entityBlocks.set(a,d([u[0],u[1],c[2]],n)):t.entityBlocks.set(a,d(u,n)),h(o.value)){let k=new Map,m=new Map,l=new Map;for(let P of o.value.items){if(!f(P)||!g(P.key))continue;let b=String(P.key.value),p=P.key.range;p&&k.set(b,d(p,n));let S=P.value;if(S&&typeof S=="object"&&"range"in S&&Array.isArray(S.range)){let v=S.range;m.set(b,d(v,n))}if(I(S)){let v=[];for(let M of S.items)M&&typeof M=="object"&&"range"in M&&Array.isArray(M.range)&&v.push(d(M.range,n));v.length>0&&l.set(b,v)}}k.size>0&&t.properties.set(a,k),m.size>0&&t.propertyValues.set(a,m),l.size>0&&t.valueListItems.set(a,l);let y=j(o.value,n);y.length>0&&t.importPackages.set(a,y)}}return t}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,t){for(let[n,r]of this.entityBlocks)if(w(r,e,t))return n}findPropertyAtPosition(e,t){let n=this.findEntityAtPosition(e,t);if(!n)return;let r=this.properties.get(n),o=this.propertyValues.get(n);if(!r&&!o)return{entityName:n};let a,u;if(o)for(let[s,c]of o)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);if(r)for(let[s,c]of r)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);return a?{entityName:n,propertyName:a}:{entityName:n}}getPropertyPosition(e,t){return this.properties.get(e)?.get(t)}getPropertyValuePosition(e,t){return this.propertyValues.get(e)?.get(t)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[t,n]of this.importPackages)for(let r of n)e.push({entityName:t,entry:r});return e}findPropertySourceName(e,t){let n=this.properties.get(e);if(n){if(n.has(t))return t;for(let r of n.keys()){let o=r.lastIndexOf(".");if((o===-1?r:r.substring(o+1))===t)return r}}}getListItemPosition(e,t,n){let r=this.valueListItems.get(e)?.get(t);if(!(!r||n<0||n>=r.length))return r[n]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,t){this.nestedKeys.set(e,t)}setNestedValuePosition(e,t){this.nestedValues.set(e,t)}getMostSpecificPosition(e,t,n){if(e){if(t!==void 0){if(n!==void 0){let a=this.getListItemPosition(e,t,n);if(a)return a}let r=this.getPropertyValuePosition(e,t);if(r)return r;let o=this.getPropertyPosition(e,t);if(o)return o}return this.getEntityPosition(e)}}};function j(i,e){let t=[];if(!h(i))return t;let n=i.items.find(r=>f(r)&&g(r.key)&&String(r.key.value)==="imports");if(!n||!f(n)||!I(n.value))return t;for(let r of n.value.items){if(!h(r))continue;let o=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="publisher");if(!o||!f(o)||!g(o.value))continue;let a=String(o.value.value),u=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="packages");if(!(!u||!f(u)||!I(u.value)))for(let s of u.value.items){if(!h(s))continue;let c=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="package");if(!c||!f(c)||!g(c.value)||!c.value.range)continue;let k=String(c.value.value),m=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="version"),l=m&&f(m)&&g(m.value)?String(m.value.value):"",y=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="alias"),P=y&&f(y)&&g(y.value)?String(y.value.value):void 0,b=P!==void 0?{publisher:a,package_:k,version:l,alias:P,position:d(c.value.range,e)}:{publisher:a,package_:k,version:l,position:d(c.value.range,e)};t.push(b)}}return t}function w(i,e,t){return!(e<i.line||e>i.endLine||e===i.line&&t<i.column||e===i.endLine&&t>i.endColumn)}function C(i,e){let t=i.endLine-i.line,n=e.endLine-e.line;if(t!==n)return t<n;let r=i.endLine===i.line?i.endColumn-i.column:Number.MAX_SAFE_INTEGER,o=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return r<o}function N(i,e,t,n){if(h(i)){for(let r of i.items){if(!f(r)||!g(r.key))continue;let o=String(r.key.value),a=[...e,o],u=JSON.stringify(a);r.key.range&&n.setNestedKeyPosition(u,d(r.key.range,t));let s=r.value,c=D(s);c&&n.setNestedValuePosition(u,d(c,t)),N(s,a,t,n)}return}if(I(i)){for(let r=0;r<i.items.length;r++){let o=i.items[r],a=[...e,r],u=JSON.stringify(a),s=D(o);s&&n.setNestedValuePosition(u,d(s,t)),N(o,a,t,n)}return}}function D(i){if(!i||typeof i!="object"||!("range"in i))return;let e=i.range;return Array.isArray(e)&&e.length>=3?e:void 0}function d(i,e){let t=e.linePos(i[0]),n=e.linePos(i[2]);return{line:t.line-1,column:t.col-1,endLine:n.line-1,endColumn:n.col-1}}function x(i,e){let n=(e??new E).parse(i),r=K.fromContent(i);return{document:n,positions:r}}function W(i,e,t,n,r){if(e<n.line||e>n.endLine||e===n.line&&t<n.column||e===n.endLine&&t>=n.endColumn)return;let o=A(r,n.line,n.column),a=A(r,n.endLine,n.endColumn);if(o<0||a<0)return;let u=r.substring(o,a),s=V(u);if(s.length!==i.links.length)return;let c=e-n.line,k=e===n.line?t-n.column:t,m=A(u,c,k);if(!(m<0))for(let l=0;l<s.length;l++){let y=s[l];if(m>=y.startOffset&&m<y.endOffset)return i.links[l]}}function A(i,e,t){let n=0,r=0;for(let o=0;o<i.length;o++){if(n===e)return Math.min(r+t,i.length);i[o]===`
1
+ import{l as V}from"./chunk-LMD432SO.js";import{a as E}from"./chunk-KOWDHKBN.js";var L=class{propertyUri;propertyType;range;rangeUri;isImported;definedInNamespace};import{parseDocument as O,LineCounter as R,isMap as h,isPair as f,isScalar as g,isSeq as I}from"yaml";var K=class i{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let t=new i,n=new R,r=O(e,{lineCounter:n});if(r.errors.length>0||!h(r.contents))return t;N(r.contents,[],n,t);for(let o of r.contents.items){if(!f(o)||!g(o.key))continue;let a=String(o.key.value),u=o.key.range;if(!u)continue;t.entities.set(a,d(u,n));let s=o.value,c=s&&typeof s=="object"&&"range"in s?s.range:void 0;if(c?t.entityBlocks.set(a,d([u[0],u[1],c[2]],n)):t.entityBlocks.set(a,d(u,n)),h(o.value)){let k=new Map,m=new Map,l=new Map;for(let P of o.value.items){if(!f(P)||!g(P.key))continue;let b=String(P.key.value),p=P.key.range;p&&k.set(b,d(p,n));let S=P.value;if(S&&typeof S=="object"&&"range"in S&&Array.isArray(S.range)){let v=S.range;m.set(b,d(v,n))}if(I(S)){let v=[];for(let M of S.items)M&&typeof M=="object"&&"range"in M&&Array.isArray(M.range)&&v.push(d(M.range,n));v.length>0&&l.set(b,v)}}k.size>0&&t.properties.set(a,k),m.size>0&&t.propertyValues.set(a,m),l.size>0&&t.valueListItems.set(a,l);let y=j(o.value,n);y.length>0&&t.importPackages.set(a,y)}}return t}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,t){for(let[n,r]of this.entityBlocks)if(w(r,e,t))return n}findPropertyAtPosition(e,t){let n=this.findEntityAtPosition(e,t);if(!n)return;let r=this.properties.get(n),o=this.propertyValues.get(n);if(!r&&!o)return{entityName:n};let a,u;if(o)for(let[s,c]of o)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);if(r)for(let[s,c]of r)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);return a?{entityName:n,propertyName:a}:{entityName:n}}getPropertyPosition(e,t){return this.properties.get(e)?.get(t)}getPropertyValuePosition(e,t){return this.propertyValues.get(e)?.get(t)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[t,n]of this.importPackages)for(let r of n)e.push({entityName:t,entry:r});return e}findPropertySourceName(e,t){let n=this.properties.get(e);if(n){if(n.has(t))return t;for(let r of n.keys()){let o=r.lastIndexOf(".");if((o===-1?r:r.substring(o+1))===t)return r}}}getListItemPosition(e,t,n){let r=this.valueListItems.get(e)?.get(t);if(!(!r||n<0||n>=r.length))return r[n]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,t){this.nestedKeys.set(e,t)}setNestedValuePosition(e,t){this.nestedValues.set(e,t)}getMostSpecificPosition(e,t,n){if(e){if(t!==void 0){if(n!==void 0){let a=this.getListItemPosition(e,t,n);if(a)return a}let r=this.getPropertyValuePosition(e,t);if(r)return r;let o=this.getPropertyPosition(e,t);if(o)return o}return this.getEntityPosition(e)}}};function j(i,e){let t=[];if(!h(i))return t;let n=i.items.find(r=>f(r)&&g(r.key)&&String(r.key.value)==="imports");if(!n||!f(n)||!I(n.value))return t;for(let r of n.value.items){if(!h(r))continue;let o=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="publisher");if(!o||!f(o)||!g(o.value))continue;let a=String(o.value.value),u=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="packages");if(!(!u||!f(u)||!I(u.value)))for(let s of u.value.items){if(!h(s))continue;let c=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="package");if(!c||!f(c)||!g(c.value)||!c.value.range)continue;let k=String(c.value.value),m=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="version"),l=m&&f(m)&&g(m.value)?String(m.value.value):"",y=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="alias"),P=y&&f(y)&&g(y.value)?String(y.value.value):void 0,b=P!==void 0?{publisher:a,package_:k,version:l,alias:P,position:d(c.value.range,e)}:{publisher:a,package_:k,version:l,position:d(c.value.range,e)};t.push(b)}}return t}function w(i,e,t){return!(e<i.line||e>i.endLine||e===i.line&&t<i.column||e===i.endLine&&t>i.endColumn)}function C(i,e){let t=i.endLine-i.line,n=e.endLine-e.line;if(t!==n)return t<n;let r=i.endLine===i.line?i.endColumn-i.column:Number.MAX_SAFE_INTEGER,o=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return r<o}function N(i,e,t,n){if(h(i)){for(let r of i.items){if(!f(r)||!g(r.key))continue;let o=String(r.key.value),a=[...e,o],u=JSON.stringify(a);r.key.range&&n.setNestedKeyPosition(u,d(r.key.range,t));let s=r.value,c=D(s);c&&n.setNestedValuePosition(u,d(c,t)),N(s,a,t,n)}return}if(I(i)){for(let r=0;r<i.items.length;r++){let o=i.items[r],a=[...e,r],u=JSON.stringify(a),s=D(o);s&&n.setNestedValuePosition(u,d(s,t)),N(o,a,t,n)}return}}function D(i){if(!i||typeof i!="object"||!("range"in i))return;let e=i.range;return Array.isArray(e)&&e.length>=3?e:void 0}function d(i,e){let t=e.linePos(i[0]),n=e.linePos(i[2]);return{line:t.line-1,column:t.col-1,endLine:n.line-1,endColumn:n.col-1}}function x(i,e){let n=(e??new E).parse(i),r=K.fromContent(i);return{document:n,positions:r}}function W(i,e,t,n,r){if(e<n.line||e>n.endLine||e===n.line&&t<n.column||e===n.endLine&&t>=n.endColumn)return;let o=A(r,n.line,n.column),a=A(r,n.endLine,n.endColumn);if(o<0||a<0)return;let u=r.substring(o,a),s=V(u);if(s.length!==i.links.length)return;let c=e-n.line,k=e===n.line?t-n.column:t,m=A(u,c,k);if(!(m<0))for(let l=0;l<s.length;l++){let y=s[l];if(m>=y.startOffset&&m<y.endOffset)return i.links[l]}}function A(i,e,t){let n=0,r=0;for(let o=0;o<i.length;o++){if(n===e)return Math.min(r+t,i.length);i[o]===`
2
2
  `&&(n++,r=o+1)}return n===e?Math.min(r+t,i.length):-1}export{L as a,K as b,x as c,W as d};
@@ -0,0 +1 @@
1
+ import{n as A}from"./chunk-M7OWTFTC.js";import{a as P}from"./chunk-6VIUXP4N.js";import{a as f}from"./chunk-KOWDHKBN.js";import{c as K,g as I,j as R}from"./chunk-QILEJIFU.js";import*as i from"fs/promises";import*as c from"path";import{pathToFileURL as b}from"url";var y=class{rootPath;recursive;parser;documentCache;filePathsByIdentifier;cacheInitialized=!1;cacheInitPromise=null;parsingErrors=new Map;constructor(e,t=!0,n){if(!e||e.trim().length===0)throw new Error("Root path cannot be null or empty");this.rootPath=c.resolve(e),this.recursive=t,this.parser=n??new f,this.documentCache=new Map,this.filePathsByIdentifier=new Map}async getAllDocumentsAsync(){await this.ensureCacheInitialized();let e=new Set(this.documentCache.values());return Array.from(e)}async getDocumentAsync(e){await this.ensureCacheInitialized();let t=this.documentCache.get(e);if(t)return t;let n=c.join(this.rootPath,e);if(t=this.documentCache.get(n),t)return t;for(let o of[".kan.yml",".yml",".yaml"])if(!e.endsWith(o)){let s=e+o;if(t=this.documentCache.get(s),t)return t;let a=c.join(this.rootPath,s);if(t=this.documentCache.get(a),t)return t}return null}async getDocumentsByNamespaceAsync(e,t){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values());return Array.from(n).filter(o=>o.metadata.namespace_?.publisher===e&&o.metadata.namespace_?.package_===t)}async getHighestCompatibleVersionAsync(e,t){await this.ensureCacheInitialized();let n=new Set(this.documentCache.values()),o=Array.from(n).filter(a=>a.metadata?.namespace_?.publisher===e&&a.metadata?.namespace_?.package_===t.packageName&&a.metadata?.namespace_?.version!==void 0);if(o.length===0)return null;let s=o.filter(a=>{let r=a.metadata.namespace_.version;return R(r,t)});return s.length===0?null:(s.sort((a,r)=>{let m=a.metadata.namespace_.version,l=r.metadata.namespace_.version;return K(l,m)}),s[0])}async saveDocumentAsync(e,t){let n,o=e.metadata.namespace_?.toString();if(o&&o.includes("@")&&o.includes("/")){let m=o.split("/"),l=m[0],h=m[1].replace("@","@")+".kan.yml";n=c.join(this.rootPath,l,h)}else n=c.join(this.rootPath,t),!n.endsWith(".yml")&&!n.endsWith(".yaml")&&!n.endsWith(".kan.yml")&&(n+=".kan.yml");let s=c.dirname(n);await i.mkdir(s,{recursive:!0});let a=this.parser.save(e);await i.writeFile(n,a,"utf8"),o&&this.documentCache.set(o,e),this.documentCache.set(n,e);let r=c.relative(this.rootPath,n);this.documentCache.set(r,e)}async deleteDocumentAsync(e){let t=await this.getDocumentAsync(e);if(!t)return;let n=this.filePathsByIdentifier.get(e);if(!n)return;try{await i.unlink(n)}catch{}let o=t.metadata.namespace_?.toString();o&&this.documentCache.delete(o),this.documentCache.delete(e),this.documentCache.delete(n);let s=c.relative(this.rootPath,n);this.documentCache.delete(s)}async clearNamespaceAsync(e,t){await this.ensureCacheInitialized();let n=[];for(let[s,a]of this.documentCache.entries()){let r=a.metadata.namespace_?.toString()||"";r.includes(e)&&r.includes(t)&&n.push([s,a])}let o=c.join(this.rootPath,e);try{let s=await i.readdir(o);for(let a of s)a.includes(t)&&a.endsWith(".kan.yml")&&await i.unlink(c.join(o,a))}catch{}for(let[s]of n)this.documentCache.delete(s)}async getAllDocumentReferencesAsync(){await this.ensureCacheInitialized();let e=new Set(this.filePathsByIdentifier.values()),t=[];for(let n of e){let o=b(n).toString(),s;for(let[m,l]of this.documentCache.entries())if(this.filePathsByIdentifier.get(m)===n&&l.metadata.namespace_){s=l.metadata.namespace_.toString();break}let a=s??c.relative(this.rootPath,n),r=this.parsingErrors.has(n);t.push({identifier:a,uri:o,hasParseError:r})}return t}async getDocumentContentAsync(e){await this.ensureCacheInitialized();let t=this.filePathsByIdentifier.get(e);if(!t)try{await i.access(e),t=e}catch{let n=c.join(this.rootPath,e);try{await i.access(n),t=n}catch{return null}}try{return await i.readFile(t,"utf8")}catch{return null}}async getDocumentUriAsync(e){await this.ensureCacheInitialized();let t=this.filePathsByIdentifier.get(e);if(!t)try{await i.access(e),t=e}catch{let n=c.join(this.rootPath,e);try{await i.access(n),t=n}catch{return null}}return b(t).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 i.mkdir(this.rootPath,{recursive:!0})}catch{}let t=(await this.findYamlFiles(this.rootPath,this.recursive)).map(async o=>{try{let s=await i.readFile(o,"utf8"),a=this.parser.parse(s);return{filePath:o,document:a,error:null}}catch(s){return{filePath:o,document:null,error:s instanceof Error?s.message:String(s)}}}),n=await Promise.all(t);for(let{filePath:o,document:s,error:a}of n){let r=c.relative(this.rootPath,o);if(s&&s.metadata.namespace_){let m=s.metadata.namespace_.toString();this.documentCache.set(m,s),this.documentCache.set(o,s),this.documentCache.set(r,s),this.filePathsByIdentifier.set(m,o),this.filePathsByIdentifier.set(o,o),this.filePathsByIdentifier.set(r,o)}else this.filePathsByIdentifier.set(o,o),this.filePathsByIdentifier.set(r,o);a&&this.parsingErrors.set(o,a)}}async findYamlFiles(e,t){let n=[];try{let o=await i.readdir(e,{withFileTypes:!0});for(let s of o){let a=c.join(e,s.name);if(s.isDirectory()&&t){let r=await this.findYamlFiles(a,t);n.push(...r)}else s.isFile()&&s.name.endsWith(".kan.yml")&&n.push(a)}}catch{}return n}};import*as g from"fs";var F=(n=>(n.NotFound="NotFound",n.Workspace="Workspace",n.Cache="Cache",n))(F||{}),k=class{cache;workspace;constructor(e,t,n){let o=n??new f;g.existsSync(e)||g.mkdirSync(e,{recursive:!0}),g.existsSync(t)||g.mkdirSync(t,{recursive:!0}),this.cache=new y(e,!0,o),this.workspace=new y(t,!0,o)}getCache(){return this.cache}getWorkspace(){return this.workspace}async getAllDocumentsAsync(){let e=await this.workspace.getAllDocumentsAsync(),t=await this.cache.getAllDocumentsAsync(),n=new Map;for(let o of t)if(o.metadata.namespace_){let s=o.metadata.namespace_.toString();n.set(s,o)}for(let o of e)if(o.metadata.namespace_){let s=o.metadata.namespace_.toString();n.set(s,o)}return Array.from(n.values())}async getDocumentAsync(e){let t=await this.workspace.getDocumentAsync(e);return t||await this.cache.getDocumentAsync(e)}async getDocumentsByNamespaceAsync(e,t){let n=await this.workspace.getDocumentsByNamespaceAsync(e,t),o=await this.cache.getDocumentsByNamespaceAsync(e,t),s=new Map;for(let a of o)if(a.metadata.namespace_?.version){let r=a.metadata.namespace_.version.toString();s.set(r,a)}for(let a of n)if(a.metadata.namespace_?.version){let r=a.metadata.namespace_.version.toString();s.set(r,a)}return Array.from(s.values())}async getHighestCompatibleVersionAsync(e,t){let n=await this.workspace.getHighestCompatibleVersionAsync(e,t);return n||await this.cache.getHighestCompatibleVersionAsync(e,t)}async saveDocumentAsync(e,t){await this.workspace.saveDocumentAsync(e,t)}async saveToCacheAsync(e,t){await this.cache.saveDocumentAsync(e,t)}async deleteDocumentAsync(e){await this.workspace.deleteDocumentAsync(e)}async clearNamespaceAsync(e,t){await this.workspace.clearNamespaceAsync(e,t)}async getAllDocumentReferencesAsync(){let e=await this.workspace.getAllDocumentReferencesAsync(),t=await this.cache.getAllDocumentReferencesAsync(),n=[];return n.push(...e),n.push(...t),n}async getDocumentContentAsync(e){let t=await this.workspace.getDocumentContentAsync(e);return t||await this.cache.getDocumentContentAsync(e)}async getDocumentUriAsync(e){let t=await this.workspace.getDocumentUriAsync(e);return t||await this.cache.getDocumentUriAsync(e)}async getDocumentLocationAsync(e){return await this.workspace.getDocumentAsync(e)?"Workspace":await this.cache.getDocumentAsync(e)?"Cache":"NotFound"}};import{homedir as x}from"os";import{join as _}from"path";function d(){let u=process.env.KANONAK_PACKAGE_CACHE;return u||_(x(),".kanonak","packages")}var w=class u{static createComposite(e,t,n){let o=e??d(),s=t??".";return new k(o,s,n)}static createFromEnvironment(e){let t=d(),n=process.env.KANONAK_WORKSPACE_PATH??".";return u.createComposite(t,n,e)}};var D=class{repos;constructor(...e){this.repos=e}async getHighestCompatibleVersionAsync(e,t){for(let n of this.repos)try{let o=await n.getHighestCompatibleVersionAsync(e,t);if(o)return o}catch{}return null}async getAllDocumentsAsync(){let e=[],t=new Set;for(let n of this.repos)try{for(let o of await n.getAllDocumentsAsync()){let s=o.metadata?.namespace_,a=s?s.version?`${s.publisher}/${s.package_}@${s.version.major}.${s.version.minor}.${s.version.patch}`:`${s.publisher}/${s.package_}`:void 0;if(a!==void 0){if(t.has(a))continue;t.add(a)}e.push(o)}}catch{}return e}async getDocumentAsync(e){for(let t of this.repos)try{let n=await t.getDocumentAsync(e);if(n)return n}catch{}return null}async getDocumentsByNamespaceAsync(e,t){for(let n of this.repos)try{let o=await n.getDocumentsByNamespaceAsync(e,t);if(o.length>0)return o}catch{}return[]}async saveDocumentAsync(e,t){await this.repos[0].saveDocumentAsync(e,t)}async deleteDocumentAsync(e){await this.repos[0].deleteDocumentAsync(e)}async clearNamespaceAsync(e,t){await this.repos[0].clearNamespaceAsync(e,t)}async getAllDocumentReferencesAsync(){return this.repos[0].getAllDocumentReferencesAsync()}async getDocumentContentAsync(e){for(let t of this.repos)try{let n=await t.getDocumentContentAsync(e);if(n)return n}catch{}return null}async getDocumentUriAsync(e){for(let t of this.repos)try{let n=await t.getDocumentUriAsync(e);if(n)return n}catch{}return null}};import{VersionOperator as N}from"@kanonak-protocol/types/document/models/enums";var v=class{constructor(e,t){this.base=e;this.lock=t}base;lock;pinnedVersion(e,t){return this.lock.packages[`${e}/${t}`]?.version}async getHighestCompatibleVersionAsync(e,t){let n=this.pinnedVersion(e,t.packageName);if(n){let o=I(n);if(o){let s={...t,versionOperator:N.Exact,version:o};return this.base.getHighestCompatibleVersionAsync(e,s)}}return this.base.getHighestCompatibleVersionAsync(e,t)}async getDocumentsByNamespaceAsync(e,t){let n=await this.base.getDocumentsByNamespaceAsync(e,t),o=this.pinnedVersion(e,t);return o?n.filter(s=>{let a=s.metadata.namespace_?.version;return a?`${a.major}.${a.minor}.${a.patch}`===o:!1}):n}getAllDocumentsAsync(){return this.base.getAllDocumentsAsync()}getDocumentAsync(e){return this.base.getDocumentAsync(e)}saveDocumentAsync(e,t){return this.base.saveDocumentAsync(e,t)}deleteDocumentAsync(e){return this.base.deleteDocumentAsync(e)}clearNamespaceAsync(e,t){return this.base.clearNamespaceAsync(e,t)}getAllDocumentReferencesAsync(){return this.base.getAllDocumentReferencesAsync()}getDocumentContentAsync(e){return this.base.getDocumentContentAsync(e)}getDocumentUriAsync(e){return this.base.getDocumentUriAsync(e)}};import{readFileSync as $,readdirSync as B}from"fs";import{join as S}from"path";var H=new Set(["node_modules",".kanonak",".git","_site","build",".stage"]);function C(u,e=[]){for(let t of B(u,{withFileTypes:!0}))t.isDirectory()?H.has(t.name)||C(S(u,t.name),e):t.name.endsWith(".kan.yml")&&e.push(S(u,t.name));return e}async function V(u,e=new f,t={}){let n=new P(e);for(let m of C(u))try{let l=e.parse($(m,"utf-8")),p=l.metadata?.namespace_,h=p?.version;p&&h&&await n.saveDocumentAsync(l,`${p.publisher}/${p.package_}@${h.major}.${h.minor}.${h.patch}`)}catch{}let o=new y(d(),!0,e),s=new Map,a=t.httpCache??{getFromCache:(m,l,p)=>s.get(`${m}|${l}|${p}`)??null,onFetch:(m,l,p,h)=>{s.set(`${m}|${l}|${p}`,h)}},r=new A({getFromCache:a.getFromCache,onFetch:a.onFetch});return new D(n,o,r)}export{y as a,F as b,k as c,d,w as e,D as f,v as g,C as h,V as i};