@blue-labs/language 1.35.0 → 1.36.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/index.js +7 -7
- package/dist/index.mjs +738 -647
- package/dist/lib/Blue.d.ts +17 -0
- package/dist/lib/Blue.d.ts.map +1 -1
- package/dist/lib/merge/processors/DictionaryProcessor.d.ts.map +1 -1
- package/dist/lib/merge/processors/ListProcessor.d.ts.map +1 -1
- package/dist/lib/utils/InlineTypeRestorer.d.ts +23 -0
- package/dist/lib/utils/InlineTypeRestorer.d.ts.map +1 -0
- package/dist/lib/utils/NodeTypeMatcher.d.ts.map +1 -1
- package/dist/lib/utils/NodeTypes.d.ts +2 -2
- package/dist/lib/utils/NodeTypes.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ss=Object.defineProperty;var rs=(r,e,t)=>e in r?ss(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e,t)=>rs(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("big.js"),c=require("@blue-labs/shared-utils"),u=require("zod"),ns=require("bs58"),C=require("radash"),is=require("js-sha256"),os=require("crypto"),ls=require("base32.js"),k=require("js-yaml"),lt=r=>r&&r.__esModule?r:{default:r},ae=lt(ns),Ee=lt(os);class w extends x{constructor(e){super(e)}}class T extends x{constructor(e){super(e)}}class as{static get(e,t,s,n=!0){if(c.isNullable(t)||!t.startsWith("/"))throw new Error(`Invalid path: ${t}`);if(t==="/"){const o=e.getValue();return n&&o!==void 0?o:e}const i=t.substring(1).split("/");return this.getRecursive(e,i,0,s,n)}static getRecursive(e,t,s,n,i){if(s===t.length-1&&!i)return this.getNodeForSegment(e,t[s],n,!1);if(s===t.length){const a=e.getValue();return i&&a!==void 0?a:e}const o=t[s],l=this.getNodeForSegment(e,o,n,!0);if(l)return this.getRecursive(l,t,s+1,n,i)}static getNodeForSegment(e,t,s,n){let i;const o=e.getProperties();if(o&&t in o)i=o[t];else switch(t){case"name":{const l=e.getName();i=new d().setValue(l??null);break}case"description":{const l=e.getDescription();i=new d().setValue(l??null);break}case"type":i=e.getType();break;case"itemType":i=e.getItemType();break;case"keyType":i=e.getKeyType();break;case"valueType":i=e.getValueType();break;case"value":{const l=e.getValue();i=new d().setValue(l??null);break}case"blueId":{const l=e.getBlueId();i=new d().setValue(l??null);break}case"blue":i=e.getBlue();break;case"items":{const l=e.getItems();i=new d().setItems(l);break}case"properties":{const l=e.getProperties();i=new d().setProperties(l);break}case"contracts":{const l=e.getContracts();i=new d().setContracts(l);break}default:{if(/^\d+$/.test(t)){const l=parseInt(t,10),a=e.getItems();a&&l>=0&&l<a.length?i=a[l]:i=void 0}else i=void 0;break}}if(i)return n&&s?this.link(i,s):i}static link(e,t){const s=t(e);return c.isNonNullable(s)?s:e}}const q="name",X="description",fe="type",_e="itemType",ke="keyType",Ye="valueType",Ne="value",Je="items",_="blueId",Ke="blue",cs=[q,X,fe,_e,ke,Ye,Ne,Je,_,Ke],us="Text",ds="Double",hs="Integer",ps="Boolean",fs="List",gs="Dictionary",Ge=[us,ds,hs,ps],at=[...Ge,fs,gs],Y="F92yo19rCcbBoBSpUA5LRxpfDejJDAaP1PRxxbWAraVP",J="68ryJtnmui4j5rCZWUnkZ3DChtmEb7Z9F8atn1mBSM3L",K="DHmxTkFbXePZHCHCYmQr2dSzcNLcryFVjXVHkdQrrZr8",G="EL6AjrbJsxTWRTPzY8WR8Y2zAMXRbydQj83PcZwuAHbo",ct="G8wmfjEqugPEEXByMYWJXiEdbLToPRWNQEekNxrxfQWB",ut="294NBTj2mFRL3RB4kDRUSckwGg7Kzj6T8CTAFeR1kcSA",dt=[Y,J,K,G],de=[...dt,ct,ut];Object.fromEntries(at.map((r,e)=>[r,de[e]]));const ys=Object.fromEntries(de.map((r,e)=>[r,at[e]])),E=class E{constructor(e){p(this,"name");p(this,"description");p(this,"type");p(this,"itemType");p(this,"keyType");p(this,"valueType");p(this,"value");p(this,"items");p(this,"properties");p(this,"blueId");p(this,"blue");p(this,"inlineValue",!1);this.name=e}getName(){return this.name}setName(e){return this.name=e,this}getDescription(){return this.description}setDescription(e){return this.description=e,this}getType(){return this.type}setType(e){return typeof e=="string"?this.type=new E().setValue(e).setInlineValue(!0):this.type=e,this}getItemType(){return this.itemType}setItemType(e){return typeof e=="string"?this.itemType=new E().setValue(e).setInlineValue(!0):this.itemType=e,this}getKeyType(){return this.keyType}setKeyType(e){return typeof e=="string"?this.keyType=new E().setValue(e).setInlineValue(!0):this.keyType=e,this}getValueType(){return this.valueType}setValueType(e){return typeof e=="string"?this.valueType=new E().setValue(e).setInlineValue(!0):this.valueType=e,this}getValue(){var t;const e=(t=this.type)==null?void 0:t.getBlueId();if(c.isNonNullable(e)&&c.isNonNullable(this.value)){if(e===K&&typeof this.value=="string")return new T(this.value);if(e===J&&typeof this.value=="string"){const s=new w(this.value),n=parseFloat(s.toString());return new w(n.toString())}else if(e===G&&typeof this.value=="string")return this.value.toLowerCase()==="true"}return this.value}setValue(e){return typeof e=="number"?e%1===0?this.value=new T(e.toString()):this.value=new w(e.toString()):this.value=e,this}getItems(){return this.items}setItems(e){return this.items=e,this}addItems(...e){return this.items||(this.items=[]),this.items.push(...e),this}getProperties(){return this.properties}setProperties(e){return this.properties=e,this}addProperty(e,t){return this.properties||(this.properties={}),this.properties[e]=t,this}removeProperty(e){return this.properties&&delete this.properties[e],this}getContractsProperty(){var e;return(e=this.properties)==null?void 0:e.contracts}getContracts(){var e;return(e=this.getContractsProperty())==null?void 0:e.getProperties()}setContracts(e){return c.isNullable(e)?this.removeProperty("contracts"):this.addProperty("contracts",new E().setProperties(e)),this}addContract(e,t){const s=this.getContractsProperty();return c.isNullable(s)?this.addProperty("contracts",new E().addProperty(e,t)):s.addProperty(e,t),this}removeContract(e){const t=this.getContractsProperty();if(t){t.removeProperty(e);const s=t.getProperties();s&&Object.keys(s).length===0&&this.removeProperty("contracts")}return this}getBlueId(){return this.blueId}setBlueId(e){return this.blueId=e,this}getBlue(){return this.blue}setBlue(e){return this.blue=e,this}isInlineValue(){return this.inlineValue}setInlineValue(e){return this.inlineValue=e,this}isResolved(){return!1}get(e,t){return as.get(this,e,t)}getAsNode(e){const t=this.get(e);if(t instanceof E)return t;throw new Error(`Value at path ${e} is not a BlueNode: ${t}`)}getAsInteger(e){const t=this.get(e);if(t instanceof T||t instanceof w)return t.toNumber();throw new Error(`Value at path ${e} is not a BigInteger or BigDecimal: ${t}`)}clone(){var t,s,n,i,o,l;const e=new E(this.name);return e.description=this.description,e.type=(t=this.type)==null?void 0:t.clone(),e.itemType=(s=this.itemType)==null?void 0:s.clone(),e.keyType=(n=this.keyType)==null?void 0:n.clone(),e.valueType=(i=this.valueType)==null?void 0:i.clone(),e.value=this.value,e.items=(o=this.items)==null?void 0:o.map(a=>a.clone()),this.properties&&(e.properties=Object.fromEntries(Object.entries(this.properties).map(([a,h])=>[a,h.clone()]))),e.blueId=this.blueId,e.blue=(l=this.blue)==null?void 0:l.clone(),e.inlineValue=this.inlineValue,e}toString(){return`BlueNode{name='${this.name}', description='${this.description}', type=${this.type}, itemType=${this.itemType}, keyType=${this.keyType}, valueType=${this.valueType}, value=${this.value}, items=${this.items}, properties=${this.properties}, blueId='${this.blueId}', blue=${this.blue}, inlineValue=${this.inlineValue}}`}};p(E,"INTEGER",new E("Integer"));let d=E;class Z{static isPotentialBlueId(e){if(!e||e.length===0||!this.BLUE_ID_PATTERN.test(e))return!1;const t=e.split("#"),s=t[0],n=s.length;if(n<this.MIN_BLUE_ID_LENGTH||n>this.MAX_BLUE_ID_LENGTH)return!1;try{if(ae.default.decode(s).length!==32)return!1}catch{return!1}if(t.length>1)try{if(Number(t[1])<0)return!1}catch{return!1}return!0}}p(Z,"MIN_BLUE_ID_LENGTH",41),p(Z,"MAX_BLUE_ID_LENGTH",45),p(Z,"BLUE_ID_PATTERN",/^[1-9A-HJ-NP-Za-km-z]{41,45}(?:#\d+)?$/);const ms=u.z.string().max(Z.MAX_BLUE_ID_LENGTH,{message:"Blue Id has a maximum length of 45 characters"}).min(Z.MIN_BLUE_ID_LENGTH,{message:"Blue Id has a minimum length of 41 characters"}).refine(r=>{try{return ae.default.decode(r),!0}catch{return!1}},{message:"Blue Id must be a valid Base58 string"}),Q=u.z.lazy(()=>u.z.record(u.z.unknown()).and(u.z.object({blueId:u.z.string().optional(),name:u.z.string().optional(),description:u.z.string().optional(),type:Q.optional(),value:u.z.union([u.z.string(),u.z.number(),u.z.boolean()]).optional().nullable(),items:u.z.array(Q).optional()}))),he=u.z.object({blueId:u.z.string().optional(),name:u.z.string().optional(),description:u.z.string().optional(),type:Q.optional()}),Is=he.extend({value:u.z.string().optional()}),bs=he.extend({value:u.z.number().optional()}),Ns=he.extend({value:u.z.boolean().optional()}),Ts=he.extend({items:u.z.array(u.z.string()).optional()}),vs=r=>Q.safeParse(r).success,ht=r=>c.isNonNullable(r)&&"blueId"in r&&c.isNonNullable(r.blueId),Bs=r=>c.isNonNullable(r)&&"name"in r&&c.isNonNullable(r.name),pt=r=>c.isNonNullable(r)&&"items"in r&&c.isNonNullable(r.items),ft=r=>c.isNonNullable(r)&&"type"in r&&c.isNonNullable(r.type),gt=r=>c.isNonNullable(r)&&"value"in r&&c.isNonNullable(r.value),ws=(r,e)=>r.required({type:!0}).safeParse(e).success,P=r=>r instanceof x,$=r=>P(r)&&r instanceof T,ge=r=>P(r)&&r instanceof w,Ss=u.z.lazy(()=>u.z.record(ce)),Ps=u.z.lazy(()=>u.z.union([u.z.array(ce),u.z.array(ce).readonly()])),ce=u.z.lazy(()=>u.z.union([c.jsonPrimitiveSchema,Ss,Ps,u.z.instanceof(x)])),We=r=>C.isObject(r)&&!C.isArray(r)&&!c.isReadonlyArray(r)&&!P(r),He=r=>C.isArray(r)||c.isReadonlyArray(r),Es=r=>He(r)||We(r)||P(r)||c.isJsonPrimitive(r);class y{static deserialize(e){return y.handleNode(e)}static handleNode(e){if(e===void 0)throw new Error("This is not a valid JSON-like value. Found 'undefined' as a value.");if(We(e)){const t=new d,s={};return Object.entries(e).forEach(([n,i])=>{switch(n){case q:if(i==null)t.setName(void 0);else{if(typeof i!="string")throw new Error(`The ${q} field must be a string.`);t.setName(i)}break;case X:if(i==null)t.setDescription(void 0);else{if(typeof i!="string")throw new Error(`The ${X} field must be a string.`);t.setDescription(i)}break;case fe:t.setType(y.handleNode(i));break;case _e:t.setItemType(y.handleNode(i));break;case ke:t.setKeyType(y.handleNode(i));break;case Ye:t.setValueType(y.handleNode(i));break;case Ne:t.setValue(y.handleValue(i));break;case _:if(typeof i!="string")throw new Error(`The ${_} field must be a string.`);t.setBlueId(i);break;case Je:t.setItems(y.handleArray(i));break;case Ke:t.setBlue(y.handleNode(i));break;default:s[n]=y.handleNode(i);break}}),Object.keys(s).length>0&&t.setProperties(s),t}else{if(He(e))return new d().setItems(y.handleArray(e));{const t=e;return new d().setValue(y.handleValue(t)).setInlineValue(!0)}}}static handleValue(e){if(e==null)return null;if(typeof e=="string")return e;if(typeof e=="number"||P(e))if($(e)||Number.isSafeInteger(e)){const t=new T(e.toString()),s=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER;return t.lt(s)?new T(s.toString()):t.gt(n)?new T(n.toString()):t}else{const t=parseFloat(e.toString());return new w(t.toString())}else if(typeof e=="boolean")return e;throw new Error(`Can't handle node: ${JSON.stringify(e)}`)}static handleArray(e){if(e!=null){if(C.isObject(e)&&!Array.isArray(e))return[y.handleNode(e)];if(Array.isArray(e))return e.map(y.handleNode);throw new Error("Expected an array node")}}}function As(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Ae,rt;function Cs(){return rt||(rt=1,Ae=function r(e){if(typeof e=="number"&&isNaN(e))throw new Error("NaN is not allowed");if(typeof e=="number"&&!isFinite(e))throw new Error("Infinity is not allowed");return e===null||typeof e!="object"?JSON.stringify(e):e.toJSON instanceof Function?r(e.toJSON()):Array.isArray(e)?`[${e.reduce((n,i,o)=>`${n}${o===0?"":","}${r(i===void 0||typeof i=="symbol"?null:i)}`,"")}]`:`{${Object.keys(e).sort().reduce((s,n)=>{if(e[n]===void 0||typeof e[n]=="symbol")return s;const i=s.length===0?"":",";return`${s}${i}${r(n)}:${r(e[n])}`},"")}}`}),Ae}var Vs=Cs();const Ds=As(Vs);class yt{static canonicalize(e){return Ds(e)}}const Ce=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,me=class me{constructor(){p(this,"browserCrypto");this.browserCrypto=this.initBrowserCrypto()}static getInstance(){return this.instance||(this.instance=new me),this.instance}initBrowserCrypto(){return Ce?null:"crypto"in globalThis?globalThis.crypto:null}hasNodeCrypto(){return Ce&&!!Ee.default&&typeof Ee.default.createHash=="function"}getBrowserCrypto(){return this.browserCrypto}getNodeCrypto(){return Ce?Ee.default:null}};p(me,"instance");let Fe=me;class mt{constructor(){p(this,"cryptoEnv",Fe.getInstance())}applySync(e){const t=this.canonicalizeInput(e),s=this.cryptoEnv.hasNodeCrypto()?this.sha256Sync(t):this.sha256SyncBrowser(t);return ae.default.encode(new Uint8Array(s))}async apply(e){const t=this.canonicalizeInput(e),s=this.cryptoEnv.hasNodeCrypto()?this.sha256Sync(t):await this.sha256Async(t);return ae.default.encode(new Uint8Array(s))}canonicalizeInput(e){const t=yt.canonicalize(e);if(typeof t!="string")throw new Error("Canonized value must be a string");return t}sha256Sync(e){const t=this.cryptoEnv.getNodeCrypto();if(!t)throw new Error("Synchronous SHA-256 is not available in this environment");return t.createHash("sha256").update(e).digest()}sha256SyncBrowser(e){return is.sha256.arrayBuffer(e)}async sha256Async(e){if(this.cryptoEnv.hasNodeCrypto())return this.sha256Sync(e);const t=this.cryptoEnv.getBrowserCrypto();if(!t)throw new Error("crypto is not available in this environment");const n=new TextEncoder().encode(e);return t.subtle.digest("SHA-256",n)}}class b{static get(e,t="official"){var st;const s=e.getValue(),n=this.handleValue(s);if(n!==void 0&&t==="simple")return n;const i=(st=e.getItems())==null?void 0:st.map(H=>b.get(H,t));if(i!==void 0&&t==="simple")return i;const o=e.getName(),l=e.getDescription();if(t==="original"&&o===void 0&&l===void 0){if(n!==void 0)return n;if(i!==void 0)return i}const a={};o!==void 0&&(a[q]=o),l!==void 0&&(a[X]=l);const h=e.getType();if(t==="official"&&s!==void 0&&h===void 0){const H=this.inferTypeBlueId(s);H!==null&&(a[fe]={[_]:H})}else h!==void 0&&(a[fe]=b.get(h,t));const I=e.getItemType();I!==void 0&&(a[_e]=b.get(I,t));const m=e.getKeyType();m!==void 0&&(a[ke]=b.get(m,t));const f=e.getValueType();f!==void 0&&(a[Ye]=b.get(f,t)),n!==void 0&&(a[Ne]=n),i!==void 0&&(a[Je]=i);const g=e.getBlueId();g!==void 0&&(a[_]=g);const O=e.getBlue();O!==void 0&&(a[Ke]=O);const W=e.getProperties();return W!==void 0&&Object.entries(W).forEach(([H,ts])=>{a[H]=b.get(ts,t)}),a}static handleValue(e){if(P(e)){if($(e)){const t=new x(Number.MIN_SAFE_INTEGER.toString()),s=new x(Number.MAX_SAFE_INTEGER.toString());if(e.lt(t)||e.gt(s))return e.toString()}return e.toNumber()}return e}static inferTypeBlueId(e){return typeof e=="string"?Y:P(e)?$(e)?K:J:typeof e=="boolean"?G:null}}const Os=r=>c.isJsonPrimitive(r)&&c.isNonNullable(r),R=class R{constructor(e){p(this,"hashProvider");this.hashProvider=e}static calculateBlueId(e){if(Array.isArray(e)){const s=e.map(n=>b.get(n));return R.INSTANCE.calculate(s)}const t=b.get(e);return R.INSTANCE.calculate(t)}static calculateBlueIdSync(e){if(Array.isArray(e)){const s=e.map(n=>b.get(n));return R.INSTANCE.calculateSync(s)}const t=b.get(e);return R.INSTANCE.calculateSync(t)}calculate(e){const t=this.cleanStructure(e);if(t===void 0)throw new Error("Object after cleaning cannot be null or undefined.");return this.internalCalculate(t,!1)}calculateSync(e){const t=this.cleanStructure(e);if(t===void 0)throw new Error("Object after cleaning cannot be null or undefined.");return this.internalCalculate(t,!0)}internalCalculate(e,t){return Os(e)||P(e)?this.applyHash(e.toString(),t):Array.isArray(e)||c.isReadonlyArray(e)?this.calculateList(e,t):this.calculateMap(e,t)}calculateMap(e,t){if(e[_]!==void 0)return e[_];const n=Object.keys(e).map(o=>{const l=e[o];if([q,Ne,X].includes(o))return t?[o,l]:Promise.resolve([o,l]);{const a=this.internalCalculate(l,t);return t?[o,{blueId:a}]:Promise.resolve(a).then(h=>[o,{blueId:h}])}}),i=o=>{const l={};for(const[a,h]of o)l[a]=h;return this.applyHash(l,t)};return t?i(n):Promise.all(n).then(i)}calculateList(e,t){if(e.length===0)throw new Error("Cannot calculate BlueId for an empty list.");let s=this.internalCalculate(e[0],t);const n=(i,o)=>t?this.applyHash([{blueId:i},{blueId:o}],!0):Promise.all([i,o]).then(([l,a])=>this.applyHash([{blueId:l},{blueId:a}],!1));for(let i=1;i<e.length;i++){const o=this.internalCalculate(e[i],t);s=n(s,o)}return s}applyHash(e,t){return t?this.hashProvider.applySync(e):this.hashProvider.apply(e)}cleanStructure(e){if(e!=null){if(c.isJsonPrimitive(e)||P(e))return e;if(Array.isArray(e)||c.isReadonlyArray(e)){const t=e.map(s=>this.cleanStructure(s)).filter(c.isNonNullable);return t.length>0?t:void 0}else if(typeof e=="object"){const t={};for(const s in e){const n=this.cleanStructure(e[s]);n!=null&&(t[s]=n)}return Object.keys(t).length>0?t:void 0}else return e}}};p(R,"INSTANCE",new R(new mt));let N=R;class Ms{static convert(e){const t=ae.default.decode(e),s=new Uint8Array(2+t.length);s[0]=18,s[1]=32,s.set(t,2);const n=new Uint8Array(2+s.length);return n[0]=1,n[1]=85,n.set(s,2),"b"+new ls.Encoder({type:"rfc4648",lc:!0}).write(n).finalize().replace(/=/g,"")}}class D{static transform(e,t){const s=t(e.clone()),n=s.getType();n!==void 0&&s.setType(D.transform(n,t));const i=s.getItemType();i!==void 0&&s.setItemType(D.transform(i,t));const o=s.getKeyType();o!==void 0&&s.setKeyType(D.transform(o,t));const l=s.getValueType();l!==void 0&&s.setValueType(D.transform(l,t));const a=s.getItems();if(a!==void 0){const I=a.map(m=>D.transform(m,t));s.setItems(I)}const h=s.getProperties();if(h!==void 0){const I=Object.keys(h).reduce((m,f)=>(m[f]=D.transform(h[f],t),m),{});s.setProperties(I)}return s}}const L=r=>!!r&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof d),M=r=>r instanceof T||r instanceof w,Fs=r=>r.replace(/~1/g,"/").replace(/~0/g,"~");function se(r){if(r==="/")return[];if(!r.startsWith("/"))throw new Error(`Path must start with '/': ${r}`);return r.split("/").slice(1).map(Fs)}function ee(r){if(r==="-")return-1;const e=typeof r=="number"?r:parseInt(r,10);if(isNaN(e))throw new Error(`Invalid array index (NaN) from '${r}'`);if(!Number.isFinite(e))throw new Error(`Invalid array index '${r}' results in non-finite number ${e}`);return e}function It(r,e,t,s=!0){switch(e){case"name":return t?s?r.getName()??null:r:r.getName();case"description":return t?s?r.getDescription():r:r.getDescription();case"type":return r.getType();case"itemType":return r.getItemType();case"keyType":return r.getKeyType();case"valueType":return r.getValueType();case"value":return t?s?r.getValue()??null:r:r.getValue();case"blueId":return t?s?r.getBlueId()??null:r:r.getBlueId();case"blue":return r.getBlue();case"items":return r.getItems();case"properties":return r.getProperties();case"contracts":return r.getContracts();default:return}}function nt(r,e,t=!0){if(r instanceof d){const s=It(r,e,!0,t);if(s!==void 0||["name","description","type","itemType","keyType","valueType","value","blueId","blue","items","properties","contracts"].includes(e))return s;if(/^-?\d+$/.test(e)&&e!=="-"){const i=r.getItems(),o=parseInt(e,10);return i&&o>=0&&o<i.length?i[o]:void 0}const n=r.getProperties();return n&&e in n?n[e]:void 0}if(Array.isArray(r)){if(e==="-")return;const s=ee(e);return s>=0&&s<r.length?r[s]:void 0}if(L(r))return r[e]}function re(r,e){if(e.length===0)return{parent:r,key:"value",actualTarget:r.getValue()??r};let t=r;for(let n=0;n<e.length-1;++n){const i=e[n],o=nt(t,i);if(o===void 0)throw new Error(`Cannot resolve '/${e.slice(0,n+1).join("/")}'`);t=o}const s=e[e.length-1];if(t instanceof d){const n=nt(t,s,!1);if((typeof n!="object"||n===null||M(n))&&!(n instanceof d)&&!Array.isArray(n)&&["name","description","value","blueId"].includes(s))return{parent:t,key:s,actualTarget:n}}return Array.isArray(t)&&s==="-"?{parent:t,key:"-"}:t instanceof d&&t.getItems()&&s==="-"?{parent:t,key:"-"}:{parent:t,key:Array.isArray(t)?ee(s):s}}function qe(r,e){var t;if(r instanceof d){const s=e,n=It(r,s,!1);if(n!==void 0||["name","description","type","itemType","keyType","valueType","value","blueId","blue","items","properties","contracts"].includes(s))return n;if(typeof e=="number"||typeof e=="string"&&/^\d+$/.test(e)){const i=r.getItems(),o=typeof e=="number"?e:parseInt(e,10);if(i&&o>=0&&o<i.length)return i[o]}return(t=r.getProperties())==null?void 0:t[s]}return Array.isArray(r)||L(r)?r[e]:r}function B(r){if(r instanceof d)return r;if(r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean"||M(r))return y.deserialize(r);const e=Re(r);return y.deserialize(e)}function Re(r){if(r===void 0)return null;if(r===null||typeof r!="object")return r;if(Array.isArray(r))return r.map(Re);const e={};for(const[t,s]of Object.entries(r))e[t]=Re(s);return e}function Xe(r,e,t){if(r instanceof d){const s=e;switch(s){case"name":r.setName(t);return;case"description":r.setDescription(t);return;case"type":r.setType(t instanceof d||typeof t=="string"||t===void 0?t:B(t));return;case"itemType":r.setItemType(t instanceof d||typeof t=="string"||t===void 0?t:B(t));return;case"keyType":r.setKeyType(t instanceof d||typeof t=="string"||t===void 0?t:B(t));return;case"valueType":r.setValueType(t instanceof d||typeof t=="string"||t===void 0?t:B(t));return;case"value":{const n=t;r.setValue(n===void 0?null:n);return}case"blueId":r.setBlueId(t);return;case"blue":r.setBlue(t instanceof d||t===void 0?t:B(t));return;case"items":r.setItems(t);return;case"properties":r.setProperties(t);return;case"contracts":r.setContracts(t);return;default:{if(t===void 0){const n=r.getProperties();n&&s in n&&delete n[s]}else r.getProperties()||r.setProperties({}),r.addProperty(s,t instanceof d?t:B(t));return}}}Array.isArray(r)?r.splice(ee(e),1):L(r)&&(t===void 0?delete r[e]:r[e]=t)}function Rs(r,e,t,s){let n=-1;if(e!=="-"&&(n=typeof e=="number"?e:parseInt(e,10),isNaN(n)))throw new Error(`Invalid numeric key for BlueNode item operation: ${e}`);if(n<-1)throw new Error(`Invalid array index for BlueNode items: ${n}`);let i=r.getItems();if(i||(i=[],r.setItems(i)),!s&&n!==-1&&n>i.length)throw new Error(`ADD operation failed: Target array index '${n}' is greater than array length ${i.length}.`);if(e==="-")i.push(t);else if(s){if(n>=0)if(n<i.length)i[n]=t;else{for(let o=i.length;o<n;o++)i.push(y.deserialize(null));i.push(t)}}else i.splice(n,0,t)}function ye(r,e,t,s){if(Array.isArray(r)){const n=e==="-"?r.length:ee(e);if(!s&&n>r.length)throw new Error(`ADD operation failed: Target array index '${n}' is greater than array length ${r.length}. Path involving key '${e}'.`);if(n<0&&e!=="-")throw new Error(`Invalid negative array index: ${e}`);const i=B(t);if(s){if(n>=0&&n<r.length)r[n]=i;else if(n>=r.length){for(let o=r.length;o<n;o++)r.push(y.deserialize(null));r.push(i)}}else r.splice(n,0,i);return}if(r instanceof d){e==="-"||typeof e=="number"&&!isNaN(e)||typeof e=="string"&&/^\d+$/.test(e)?Rs(r,e,B(t),s):Xe(r,e,t);return}if(L(r)){r[e]=B(t);return}throw new Error(`Cannot insert into parent of type ${typeof r}`)}function js(r,e){if(Array.isArray(r)){const t=ee(e);t===-1&&e==="-"?r.length>0&&r.pop():t>=0&&t<r.length&&r.splice(t,1);return}if(r instanceof d){if(typeof e=="number"||typeof e=="string"&&/^-?\d+$/.test(e)){const t=r.getItems();if(t){const s=ee(e);s===-1&&e==="-"?t.length>0&&t.pop():s>=0&&s<t.length&&t.splice(s,1),t.length===0&&r.setItems(void 0);return}}Xe(r,e,void 0)}else L(r)&&delete r[e]}function je(r){if(r instanceof d)return r.clone();if(Array.isArray(r))return r.map(t=>je(t));if(L(r)){const e={};return Object.keys(r).forEach(t=>{e[t]=je(r[t])}),e}return r}function U(r,e){if(r===e||r instanceof d&&(r.isInlineValue()||r.getValue()!==void 0)&&U(r.getValue()??null,e)||e instanceof d&&(e.isInlineValue()||e.getValue()!==void 0)&&U(r,e.getValue()??null))return!0;if(r instanceof d&&e instanceof d||M(r)&&M(e)||M(r)&&typeof e=="number"||typeof r=="number"&&M(e))return r.toString()===e.toString();if(Array.isArray(r)&&Array.isArray(e))return r.length===e.length&&r.every((t,s)=>U(t,e[s]));if(L(r)&&L(e)){const t=Object.keys(r),s=Object.keys(e);return t.length===s.length&&t.every(n=>U(r[n],e[n]))}return!1}function bt(r,e){const{parent:t,key:s}=re(r,se(e));return qe(t,s)}function Nt(r,e,t){const s=se(e);if(s.length===0&&e==="/"){const o=B(t);r.setValue(o.getValue()??null),o.getItems()?r.setItems(o.getItems()):r.setItems(void 0);return}const{parent:n,key:i}=re(r,s);ye(n,i,t,!0)}function xs(r,e,t){const s=se(e);if(s.length===0&&e==="/"){if(r.getItems()&&Array.isArray(t)){const o=B(t);o.getItems()?(r.setItems(o.getItems()),r.setValue(null)):(r.setValue(o.getValue()??null),r.setItems(void 0))}else{const o=B(t);r.setValue(o.getValue()??null),o.getItems()&&r.setItems(o.getItems())}return!0}const{parent:n,key:i}=re(r,s);return ye(n,i,t,!1),!0}function $s(r,e,t){const s=se(e);if(s.length===0&&e==="/"){const l=B(t);return r.setValue(l.getValue()??null),l.getItems()?r.setItems(l.getItems()):r.setItems(void 0),!0}const{parent:n,key:i,actualTarget:o}=re(r,s);if(o!==void 0&&n instanceof d)Xe(n,i,t);else{const l=qe(n,i),a=Array.isArray(n)||n instanceof d&&n.getItems()&&(typeof i=="number"||typeof i=="string"&&/^\d+$/.test(i));if(l===void 0){if(a)throw new Error(`REPLACE failed: Target array index '${i.toString()}' is out of bounds or does not exist at path '${e}'.`);ye(n,i,t,!0)}else ye(n,i,t,!0)}return!0}function Tt(r,e){const t=se(e);if(t.length===0&&e==="/")return r.setValue(null),r.setItems(void 0),r.setProperties(void 0),!0;const{parent:s,key:n}=re(r,t);return js(s,n),!0}function Ls(r,e,t){const s=je(bt(r,e));return Nt(r,t,s),!0}function zs(r,e,t){const s=se(e),{parent:n,key:i}=re(r,s),o=qe(n,i);if(o===void 0)throw new Error(`MOVE failed: 'from' location '${e}' does not exist.`);return Tt(r,e)?(Nt(r,t,o),!0):!1}function Us(r,e,t){const s=bt(r,e);let n=t;if(s instanceof d)if((t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||M(t))&&(s.isInlineValue()||s.getValue()!==void 0)){if(!U(s.getValue()??null,t))throw new Error(`TEST failed at '${e}': Expected ${JSON.stringify(t)}, got ${JSON.stringify(s.getValue()??null)}`);return!0}else typeof t=="object"&&!(t instanceof d)&&(n=B(t));else if(M(s)&&typeof t=="number")s instanceof T?n=new T(t.toString()):s instanceof w&&(n=new w(t.toString()));else if((s===null||typeof s=="string"||typeof s=="number"||typeof s=="boolean")&&M(t)){const i=t;!U(s,i.toString())&&(typeof s=="number"&&parseFloat(i.toString()))}if(!U(s,n)){const i=s instanceof d?s.toString():JSON.stringify(s),o=n instanceof d?n.toString():JSON.stringify(n);throw new Error(`TEST failed at '${e}': Expected ${o}, got ${i}`)}return!0}function Zs(r,e){switch(e.op){case"add":return xs(r,e.path,e.val);case"replace":return $s(r,e.path,e.val);case"remove":return Tt(r,e.path);case"copy":return Ls(r,e.from,e.path);case"move":return zs(r,e.from,e.path);case"test":return Us(r,e.path,e.val)}}function _s(r,e,t=!1){const s=t?r:r.clone();return Zs(s,e),s}const Ve=Symbol.for("zod-schema-annotations");function ks(){if(typeof globalThis<"u")return globalThis;if(typeof global<"u")return global;if(typeof window<"u")return window;if(typeof self<"u")return self;throw new Error("Unable to locate global object")}function vt(){const r=ks();return Ve in r||(r[Ve]=new WeakMap),r[Ve]}function ne(r,e){const t=vt(),s=t.get(r)||{};return t.set(r,{...s,...e}),r}const V=r=>vt().get(r),Bt=r=>e=>{const t=V(e);return ne(e,{...t,blueDescription:r})},wt=r=>{const e=V(r);return c.isNonNullable(e)&&C.isString(e.blueDescription)?e.blueDescription:null},Ys=r=>Bt(r)(u.z.string().optional()),Js=u.z.union([u.z.string(),u.z.boolean()]),St=r=>e=>{const t=V(e);return ne(e,{...t,blueId:r})},Pt=r=>{const e=V(r),t=Js.safeParse(e==null?void 0:e.blueId);return t.success?t.data:null},Ks=r=>St(r??!0)(u.z.string()),Et=r=>e=>{const t=V(e);return ne(e,{...t,blueName:r})},At=r=>{const e=V(r);return c.isNonNullable(e)&&C.isString(e.blueName)?e.blueName:null},Gs=r=>{const e=u.z.string().optional();return Et(r)(e)},Ct=()=>r=>{const e=V(r);return ne(r,{...e,blueNode:!0})},Vt=r=>{const e=V(r);return c.isNonNullable(e)&&c.isNonNullable(e.blueNode)&&e.blueNode===!0?e.blueNode:null},Qe=r=>!!Vt(r),Ws=()=>{const r=u.z.instanceof(d);return Ct()(r)},xe="extendedFrom",Dt=({schema:r,baseSchema:e})=>{const t=V(r)||{};return ne(r,{...t,[xe]:e})},Ot=r=>{const e=V(r);return c.isNonNullable(e)&&e[xe]?e[xe]:null},et=(r,e)=>{const t=Ot(r);return c.isNullable(t)?!1:(t==null?void 0:t._def)===(e==null?void 0:e._def)?!0:et(t,e)},Hs=r=>new Proxy(r,{get(e,t,s){return t==="extend"?function(...n){const i=e.extend(...n);return Dt({schema:i,baseSchema:e})}:Reflect.get(e,t,s)}}),qs=u.z.object({value:u.z.array(u.z.string()).optional(),defaultValue:u.z.string().optional()}),Mt=r=>{const e=V(r),t=qs.passthrough().safeParse(e==null?void 0:e.typeBlueId);return t.success?t.data:null},Xs=r=>e=>{const t=V(e),s=typeof r=="string"?{value:[r]}:r,n=Hs(e);return ne(n,{...t,typeBlueId:{...(t==null?void 0:t.typeBlueId)||{},...s}})};class Te{static resolveBlueId(e){var i;const t=Mt(e);if(c.isNullable(t))return null;const s=t.defaultValue;if(c.isNonNullable(s))return s;const n=(i=t.value)==null?void 0:i[0];return c.isNonNullable(n)?n:Te.getRepositoryBlueId(t,e)}static getRepositoryBlueId(e,t){throw new Error("Not implemented")}}class A{static isTypeOf(e,t,s){var o;const n=Te.resolveBlueId(t),i=(o=e.getType())==null?void 0:o.getBlueId();if(c.isNullable(n)||c.isNullable(i))return!1;if(n===i)return!0;if(s!=null&&s.checkSchemaExtensions&&c.isNonNullable(s.typeSchemaResolver)){const l=s.typeSchemaResolver.resolveSchema(e);return A.checkSchemaExtension(l,t)}return!1}static checkSchemaExtension(e,t){if(!c.isNonNullable(e))return!1;const s=A.unwrapSchema(e),n=A.unwrapSchema(t);return et(s,n)}static isWrapperType(e){return e instanceof u.ZodOptional||e instanceof u.ZodNullable||e instanceof u.ZodReadonly||e instanceof u.ZodBranded||e instanceof u.ZodEffects||e instanceof u.ZodLazy}static unwrapSchema(e){return Qe(e)?e:A.isWrapperType(e)?e instanceof u.ZodEffects?A.unwrapSchema(e.innerType()):e instanceof u.ZodLazy?A.unwrapSchema(e.schema):A.unwrapSchema(e.unwrap()):e}}class Ft{constructor(e){p(this,"blueIdMap",new Map);this.registerSchemas(e)}registerSchemas(e){for(const t of e)this.registerSchema(t)}registerSchema(e){const t=Te.resolveBlueId(e);if(c.isNonNullable(t)){if(this.blueIdMap.has(t))throw new Error(`Duplicate BlueId value: ${t}`);this.blueIdMap.set(t,e)}}resolveSchema(e){const t=this.getEffectiveBlueId(e);return c.isNullable(t)?null:this.blueIdMap.get(t)}getEffectiveBlueId(e){const t=e.getType();return c.isNonNullable(t)&&c.isNonNullable(t.getBlueId())?t.getBlueId():c.isNonNullable(t)?N.calculateBlueIdSync(t):null}getBlueIdMap(){return new Map(this.blueIdMap)}}const v={NAME:"name",DESCRIPTION:"description",TYPE:"type",BLUE_ID:"blue_id",KEY_TYPE:"key_type",VALUE_TYPE:"value_type",ITEM_TYPE:"item_type",VALUE:"value",PROPERTIES:"properties",BLUE:"blue",ITEMS:"items"};class ve{static isEmptyNode(e){return this.hasFieldsAndMayHaveFields(e)}static hasBlueIdOnly(e){return this.hasFieldsAndMayHaveFields(e,new Set([v.BLUE_ID]))}static hasItemsOnly(e){return this.hasFieldsAndMayHaveFields(e,new Set([v.ITEMS]))}static isValidValueNode(e){const t=e.getValue(),s=e.getProperties(),n=e.getItems();return c.isNonNullable(t)&&c.isNullable(s)&&c.isNullable(n)}static textNode(e){return new d().setType(new d().setBlueId(Y)).setValue(e)}static integerNode(e){const t=e instanceof T?e:new T(e.toString());return new d().setType(new d().setBlueId(K)).setValue(t)}static doubleNode(e){const t=e instanceof w?e:new w(e.toString());return new d().setType(new d().setBlueId(J)).setValue(t)}static booleanNode(e){return new d().setType(new d().setBlueId(G)).setValue(e)}static hasFieldsAndMayHaveFields(e,t=new Set,s=new Set){for(const n of Object.values(v)){const i=c.isNonNullable(this.getFieldValue(e,n));if(t.has(n)){if(!i)return!1}else if(!s.has(n)){if(i)return!1}}return!0}static getFieldValue(e,t){switch(t){case v.NAME:return e.getName();case v.TYPE:return e.getType();case v.VALUE:return e.getValue();case v.DESCRIPTION:return e.getDescription();case v.PROPERTIES:return e.getProperties();case v.BLUE:return e.getBlue();case v.ITEMS:return e.getItems();case v.KEY_TYPE:return e.getKeyType();case v.VALUE_TYPE:return e.getValueType();case v.ITEM_TYPE:return e.getItemType();case v.BLUE_ID:return e.getBlueId();default:throw new Error(`Unknown field: ${t}`)}}}class Be{}class ie{static convert(e){const t=new $e;return ie.traverseNode(e,"",t),t.build()}static traverseNode(e,t,s){if(!e)return;const n=e.getProperties(),i=e.getItems(),o=n!==void 0&&Object.keys(n).length>0,l=i!==void 0&&i.length>0;if(!o&&!l){s.addPath(t===""?"/":t);return}if(n)for(const[a,h]of Object.entries(n)){const I=`${t}/${a}`;ie.traverseNode(h,I,s)}if(i)for(let a=0;a<i.length;a++){const h=`${t}/${a}`;ie.traverseNode(i[a],h,s)}}}function it(r,e){const t=r.split(e),s=[...t].reverse().findIndex(i=>i!==""),n=s===-1?0:t.length-s;return t.slice(0,n)}class we extends Be{constructor(t,s){super();p(this,"allowedPaths");p(this,"maxDepth");p(this,"currentPath",[]);this.allowedPaths=t,this.maxDepth=s}shouldExtendPathSegment(t){if(this.currentPath.length>=this.maxDepth)return!1;const s=this.normalizePath(this.getCurrentFullPath()+"/"+t);return this.isAllowedPath(s)}shouldMergePathSegment(t){return this.shouldExtendPathSegment(t)}isAllowedPath(t){for(const s of this.allowedPaths)if(this.matchesAllowedPath(s,t))return!0;return!1}matchesAllowedPath(t,s){const n=it(t,"/"),i=it(s,"/");if(i.length>n.length)return!1;for(let o=1;o<i.length;o++)if(n[o]!=="*"&&n[o]!==i[o])return!1;return!0}enterPathSegment(t){this.currentPath.push(t)}exitPathSegment(){this.currentPath.length>0&&this.currentPath.pop()}getCurrentFullPath(){return"/"+this.currentPath.join("/")}normalizePath(t){return"/"+t.split("/").filter(s=>s!=="").join("/")}static withMaxDepth(t){const s=new $e().setMaxDepth(t);for(let n=1;n<=t;n++){const i="/"+Array(n).fill("*").join("/");s.addPath(i)}return s.build()}static withSinglePath(t){return new $e().addPath(t).build()}static fromNode(t){return ie.convert(t)}}class $e{constructor(){p(this,"allowedPaths",new Set);p(this,"maxDepth",Number.MAX_SAFE_INTEGER)}addPath(e){return this.allowedPaths.add(e),this}setMaxDepth(e){return this.maxDepth=e,this}build(){return new we(this.allowedPaths,this.maxDepth)}}class Qs extends Be{shouldExtendPathSegment(){return!0}shouldMergePathSegment(){return!0}enterPathSegment(){}exitPathSegment(){}}class Se extends Be{constructor(t){super();p(this,"limits");this.limits=t}shouldExtendPathSegment(t,s){return this.limits.every(n=>n.shouldExtendPathSegment(t,s))}shouldMergePathSegment(t,s){return this.limits.every(n=>n.shouldMergePathSegment(t,s))}enterPathSegment(t,s){this.limits.forEach(n=>{n.enterPathSegment(t,s)})}exitPathSegment(){this.limits.forEach(t=>{t.exitPathSegment()})}static of(...t){return new Se(t)}}const z=new Qs;function ot(r,e){const t=r.getType();if(t===void 0)return;const s=t.getBlueId();if(s!==void 0){if(de.includes(s)){const i=ys[s];return new d().setBlueId(s).setName(i)}const n=e.fetchByBlueId(s);if(!n||n.length===0)return;if(n.length>1)throw new Error(`Expected a single node for type with blueId '${s}', but found multiple.`);return n[0]}return t}function S(r,e,t){const s=N.calculateBlueIdSync(r),n=N.calculateBlueIdSync(e);if(s===n)return!0;if(s&&de.includes(s)){let a=e;for(;a!==void 0;){if(N.calculateBlueIdSync(a)===s)return!0;a=ot(a,t)}return!1}let i=r;const o=r.getBlueId();if(o){const a=t.fetchByBlueId(o);a&&a.length===1&&(i=a[0])}let l=i;for(;l!==void 0;){if(N.calculateBlueIdSync(l)===n)return!0;l=ot(l,t)}return!1}function er(r,e){return dt.some(t=>{const s=new d().setBlueId(t);return S(r,s,e)})}function tr(r,e){const t=new d().setBlueId(Y);return S(r,t,e)}function sr(r,e){const t=new d().setBlueId(K);return S(r,t,e)}function rr(r,e){const t=new d().setBlueId(J);return S(r,t,e)}function nr(r,e){const t=new d().setBlueId(G);return S(r,t,e)}function Rt(r){return(r==null?void 0:r.getBlueId())===ct}function jt(r){return(r==null?void 0:r.getBlueId())===ut}function ir(r,e){return Ge.some(t=>{const s=new d().setName(t);return S(r,s,e)})}function or(r,e){for(const t of Ge){const s=new d().setName(t);if(S(r,s,e))return t}throw new Error(`Cannot determine the basic type for node of type "${r.getName()||"unknown"}".`)}class lr{constructor(e){p(this,"blue");this.blue=e}matchesType(e,t,s=z){const n=t.getType();if(this.matchesImplicitStructure(e,n))return!0;const i=we.fromNode(t),o=Se.of(s,i),l=this.extendAndResolve(e,o),a=this.blue.resolve(t,o);return this.verifyMatch(l,t,o)&&this.recursiveValueComparison(l,a)}extendAndResolve(e,t){const s=e.clone(),n=s.clone();this.blue.extend(n,t);const i=this.blue.resolve(n,t);return this.restoreMissingStructure(i,s),i}restoreMissingStructure(e,t){const s=t.getItems(),n=e.getItems();if(s&&s.length>0)if(!n||n.length===0)e.setItems(s.map(a=>a.clone()));else for(let a=0;a<Math.min(n.length,s.length);a++)this.restoreMissingStructure(n[a],s[a]);const i=t.getProperties();if(i){let a=e.getProperties();a||(a={},e.setProperties(a));for(const[h,I]of Object.entries(i)){const m=a[h];m===void 0?a[h]=I.clone():this.restoreMissingStructure(m,I)}}const o=t.getBlueId();e.getBlueId()===void 0&&o!==void 0&&e.setBlueId(o);const l=t.getValue();e.getValue()===void 0&&l!==void 0&&e.setValue(l)}verifyMatch(e,t,s){const n=t.getType();if(this.matchesImplicitStructure(e,n))return!0;const i=e.clone().setType(t.clone());try{this.blue.resolve(i,s)}catch{return!1}return!0}recursiveValueComparison(e,t){var m;const s=t.getType(),n=this.matchesImplicitStructure(e,s);if(s&&!n){const f=e.getType();if(!f||!S(f,s,this.blue.getNodeProvider()))return!1}const i=t.getBlueId();if(!n&&i!==void 0){const f=e.getBlueId(),g=(m=e.getType())==null?void 0:m.getBlueId();if(f!==void 0){if(i!==f)return!1}else if(g===void 0||i!==g)return!1}const o=t.getValue();if(o!==void 0){const f=e.getValue();if(f===void 0)return!1;if(P(f)&&P(o)){if(!f.eq(o))return!1}else if(f!==o)return!1}const l=t.getItems();if(l!==void 0){const f=e.getItems()??[];for(let g=0;g<l.length;g++)if(g<f.length){if(!this.recursiveValueComparison(f[g],l[g]))return!1}else if(this.hasValueInNestedStructure(l[g]))return!1}const a=t.getItemType();if(a!==void 0){const f=e.getItems()??[];for(const g of f)if(!this.recursiveValueComparison(g,a))return!1}const h=t.getProperties();if(h!==void 0){const f=e.getProperties()??{};for(const[g,O]of Object.entries(h))if(g in f){if(!this.recursiveValueComparison(f[g],O))return!1}else if(this.hasValueInNestedStructure(O))return!1}const I=t.getValueType();if(I!==void 0){const f=Object.values(e.getProperties()??{});for(const g of f)if(!this.recursiveValueComparison(g,I))return!1}return!0}hasValueInNestedStructure(e){if(e.getValue()!==void 0)return!0;const t=e.getItems();if(t!==void 0){for(const n of t)if(this.hasValueInNestedStructure(n))return!0}const s=e.getProperties();if(s!==void 0){for(const n of Object.values(s))if(this.hasValueInNestedStructure(n))return!0}return!1}matchesImplicitStructure(e,t){return t===void 0||e.getType()!==void 0?!1:Rt(t)?this.isImplicitListStructure(e):jt(t)?this.isImplicitDictionaryStructure(e):!1}isImplicitListStructure(e){return e.getItems()!==void 0&&e.getValue()===void 0}isImplicitDictionaryStructure(e){return e.getProperties()!==void 0&&e.getValue()===void 0}}const ar=r=>r instanceof u.ZodOptional||r instanceof u.ZodNullable||r instanceof u.ZodReadonly||r instanceof u.ZodBranded||r instanceof u.ZodEffects||r instanceof u.ZodLazy,cr=r=>r instanceof u.ZodString||r instanceof u.ZodNumber||r instanceof u.ZodBoolean||r instanceof u.ZodBigInt;class xt{static convertValue(e,t){var i;const s=(i=e.getType())==null?void 0:i.getBlueId(),n=e.getValue();return c.isNullable(n)?cr(t)&&ve.isValidValueNode(e)?this.getDefaultPrimitiveValue(t):n:Y===s?this.convertFromString(String(n),t):J===s||n instanceof w?this.convertFromBigDecimal(new w(n==null?void 0:n.toString()),t):K===s||n instanceof T?this.convertFromBigInteger(new T(n==null?void 0:n.toString()),t):G===s||typeof n=="boolean"?this.convertFromBoolean(!!n,t):this.convertFromString(String(n),t)}static convertFromString(e,t){if(!t||t instanceof u.ZodString||t instanceof u.ZodEnum||t instanceof u.ZodNativeEnum)return e;if(t instanceof u.ZodNumber)return Number(e);if(t instanceof u.ZodBoolean)return e.toLowerCase()==="true";if(t instanceof u.ZodBigInt)return BigInt(e);throw new Error(`Cannot convert String to ${t._def.typeName}`)}static convertFromBigDecimal(e,t){if(t instanceof u.ZodNumber)return e.toNumber();if(t instanceof u.ZodString)return e.toString();throw new Error(`Cannot convert Number to ${t._def.typeName}`)}static convertFromBigInteger(e,t){if(t instanceof u.ZodNumber)return e.toNumber();if(t instanceof u.ZodBigInt)return BigInt(e.toString());if(t instanceof u.ZodString)return e.toString();throw new Error(`Cannot convert Number to ${t._def.typeName}`)}static convertFromBoolean(e,t){if(!t||t instanceof u.ZodBoolean)return e;if(t instanceof u.ZodString)return e.toString();if(t instanceof u.ZodNumber)return Number(e);if(t instanceof u.ZodBigInt)return BigInt(e);throw new Error(`Cannot convert Boolean to ${t._def.typeName}`)}static getDefaultPrimitiveValue(e){if(!e)return null;if(e instanceof u.ZodNumber)return 0;if(e instanceof u.ZodBoolean)return!1;if(e instanceof u.ZodString)return"";throw new Error(`Unsupported primitive type: ${e._def.typeName}`)}}class ur{convert(e,t){return xt.convertValue(e,t)}}class dr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){return this.convertFields(e,t)}convertFields(e,t){if(t instanceof u.ZodIntersection){const s=t._def.left,n=t._def.right,i=this.convert(e,s),o=this.convert(e,n);return{...i,...o}}if(t instanceof u.ZodUnion)throw new Error("Union not supported");if(t instanceof u.ZodObject)return Object.keys(t.shape).reduce((n,i)=>{const o=e.getProperties(),l=t.shape[i],a=Pt(l);if(c.isNonNullable(a)){const g=C.isString(a)?a:i,O=o==null?void 0:o[g],W=O?N.calculateBlueIdSync(O):void 0;return n[i]=W,n}const h=At(l);if(c.isNonNullable(h)){const g=o==null?void 0:o[h];return n[i]=g==null?void 0:g.getName(),n}const I=wt(l);if(c.isNonNullable(I)){const g=o==null?void 0:o[I];return n[i]=g==null?void 0:g.getDescription(),n}if(i==="name"){const g=e.getName();return n[i]=g,n}if(i==="description"){const g=e.getDescription();return n[i]=g,n}const m=o==null?void 0:o[i];if(c.isNullable(m))return n;const f=this.nodeToObjectConverter.convert(m,l);return n[i]=f,n},{});throw new Error("Unknown schema type, "+t._def.typeName)}}class hr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t.element;return s.map(o=>this.nodeToObjectConverter.convert(o,n))}}class pr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t._def.valueType,i=s.map(o=>this.nodeToObjectConverter.convert(o,n));return new Set(i)}}class fr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=t.keySchema,n=t.valueSchema,i=new Map,o=e.getName();c.isNonNullable(o)&&i.set(q,o);const l=e.getDescription();c.isNonNullable(l)&&i.set(X,l);const a=e.getProperties();return c.isNonNullable(a)&&Object.entries(a).forEach(([h,I])=>{const m=new d().setValue(h);m.setType(new d().setBlueId(Y));const f=xt.convertValue(m,s),g=this.nodeToObjectConverter.convert(I,n);i.set(f,g)}),t instanceof u.ZodRecord?Object.fromEntries(i):i}}class gr{convert(e){return b.get(e)}}class yr{convert(e){return b.get(e)}}class mr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t.items;return s.map((o,l)=>this.nodeToObjectConverter.convert(o,n[l]))}}const Ir=u.z.union([u.z.literal("ZodString"),u.z.literal("ZodNumber"),u.z.literal("ZodBoolean"),u.z.literal("ZodBigInt"),u.z.literal("ZodArray"),u.z.literal("ZodSet"),u.z.literal("ZodMap"),u.z.literal("ZodRecord"),u.z.literal("ZodObject"),u.z.literal("ZodEnum"),u.z.literal("ZodNativeEnum"),u.z.literal("ZodUnknown"),u.z.literal("ZodAny"),u.z.literal("ZodTuple")]);class br{constructor(e){p(this,"converters",new Map);p(this,"complexObjectConverter");this.nodeToObjectConverter=e,this.registerConverters(),this.complexObjectConverter=new dr(this.nodeToObjectConverter)}registerConverters(){const e=new ur,t=new hr(this.nodeToObjectConverter),s=new mr(this.nodeToObjectConverter),n=new pr(this.nodeToObjectConverter),i=new fr(this.nodeToObjectConverter);this.converters.set("ZodString",e),this.converters.set("ZodNumber",e),this.converters.set("ZodBoolean",e),this.converters.set("ZodBigInt",e),this.converters.set("ZodEnum",e),this.converters.set("ZodNativeEnum",e),this.converters.set("ZodUnknown",new gr),this.converters.set("ZodAny",new yr),this.converters.set("ZodArray",t),this.converters.set("ZodTuple",s),this.converters.set("ZodSet",n),this.converters.set("ZodMap",i),this.converters.set("ZodRecord",i),this.converters.set("ZodObject",this.complexObjectConverter)}getConverter(e){const t=this.getSchemaTypeName(e);return this.converters.get(t)??this.complexObjectConverter}getSchemaTypeName(e){if(ar(e))return e instanceof u.ZodEffects?this.getSchemaTypeName(e.innerType()):e instanceof u.ZodLazy?this.getSchemaTypeName(e.schema):this.getSchemaTypeName(e.unwrap());const t=e._def.typeName;try{return Ir.parse(t)}catch{throw new Error(`Schema type name ${t} is not supported`)}}}class Nr{constructor(e){p(this,"converterFactory");this.typeSchemaResolver=e,this.converterFactory=new br(this)}convert(e,t){var o;const s=(o=this.typeSchemaResolver)==null?void 0:o.resolveSchema(e),n=A.unwrapSchema(t);if(Qe(n))return e;let i=n;return A.checkSchemaExtension(s,n)&&c.isNonNullable(s)&&(i=s),this.convertWithType(e,i)}convertWithType(e,t){return this.converterFactory.getConverter(t).convert(e,t)}}class pe{fetchFirstByBlueId(e){const t=this.fetchByBlueId(e);return t&&t.length>0?t[0]:null}}function Tr(r){return new class extends pe{fetchByBlueId(e){return r(e)}}}class vr extends pe{constructor(t){super();p(this,"nodeProviders");this.nodeProviders=t}fetchByBlueId(t){for(const s of this.nodeProviders){const n=s.fetchByBlueId(t);if(n&&n.length>0)return n}return[]}fetchFirstByBlueId(t){for(const s of this.nodeProviders){const n=s.fetchFirstByBlueId(t);if(n)return n}return null}getNodeProviders(){return this.nodeProviders}}const De=k.types.float.options,Br={...De,construct:r=>{const e=r.replace(/_/g,"").toLowerCase();if(!c.isPreciseNumberString(e))return new w(e);if(De.construct)return De.construct(r)}},wr=new k.Type("tag:yaml.org,2002:float",Br),Oe=k.types.int.options,Sr={...Oe,construct:r=>{let e=r;if(e.indexOf("_")!==-1&&(e=e.replace(/_/g,"")),!c.isPreciseNumberString(e))return new T(e);if(Oe.construct)return Oe.construct(r)}},Pr=new k.Type("tag:yaml.org,2002:int",Sr),$t=k.CORE_SCHEMA.extend({implicit:[wr,Pr]}),F=r=>{const e=k.load(r,{schema:$t});return e===void 0?void 0:e},Er=r=>k.dump(r,{schema:$t,replacer:(e,t)=>{if(P(t)){if($(t)){const s=new x(Number.MIN_SAFE_INTEGER.toString()),n=new x(Number.MAX_SAFE_INTEGER.toString());if(t.lt(s)||t.gt(n))return t.toString()}return t.toNumber()}return t}}),Lt=`- type:
|
|
1
|
+
"use strict";var rs=Object.defineProperty;var ns=(r,e,t)=>e in r?rs(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e,t)=>ns(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("big.js"),u=require("@blue-labs/shared-utils"),c=require("zod"),is=require("bs58"),C=require("radash"),os=require("js-sha256"),ls=require("crypto"),as=require("base32.js"),k=require("js-yaml"),lt=r=>r&&r.__esModule?r:{default:r},ue=lt(is),Ee=lt(ls);class P extends x{constructor(e){super(e)}}class v extends x{constructor(e){super(e)}}class us{static get(e,t,s,n=!0){if(u.isNullable(t)||!t.startsWith("/"))throw new Error(`Invalid path: ${t}`);if(t==="/"){const o=e.getValue();return n&&o!==void 0?o:e}const i=t.substring(1).split("/");return this.getRecursive(e,i,0,s,n)}static getRecursive(e,t,s,n,i){if(s===t.length-1&&!i)return this.getNodeForSegment(e,t[s],n,!1);if(s===t.length){const a=e.getValue();return i&&a!==void 0?a:e}const o=t[s],l=this.getNodeForSegment(e,o,n,!0);if(l)return this.getRecursive(l,t,s+1,n,i)}static getNodeForSegment(e,t,s,n){let i;const o=e.getProperties();if(o&&t in o)i=o[t];else switch(t){case"name":{const l=e.getName();i=new d().setValue(l??null);break}case"description":{const l=e.getDescription();i=new d().setValue(l??null);break}case"type":i=e.getType();break;case"itemType":i=e.getItemType();break;case"keyType":i=e.getKeyType();break;case"valueType":i=e.getValueType();break;case"value":{const l=e.getValue();i=new d().setValue(l??null);break}case"blueId":{const l=e.getBlueId();i=new d().setValue(l??null);break}case"blue":i=e.getBlue();break;case"items":{const l=e.getItems();i=new d().setItems(l);break}case"properties":{const l=e.getProperties();i=new d().setProperties(l);break}case"contracts":{const l=e.getContracts();i=new d().setContracts(l);break}default:{if(/^\d+$/.test(t)){const l=parseInt(t,10),a=e.getItems();a&&l>=0&&l<a.length?i=a[l]:i=void 0}else i=void 0;break}}if(i)return n&&s?this.link(i,s):i}static link(e,t){const s=t(e);return u.isNonNullable(s)?s:e}}const q="name",X="description",ge="type",_e="itemType",ke="keyType",Ye="valueType",Ne="value",Ke="items",_="blueId",Ge="blue",cs=[q,X,ge,_e,ke,Ye,Ne,Ke,_,Ge],ds="Text",hs="Double",ps="Integer",fs="Boolean",gs="List",ys="Dictionary",Je=[ds,hs,ps,fs],at=[...Je,gs,ys],Y="F92yo19rCcbBoBSpUA5LRxpfDejJDAaP1PRxxbWAraVP",K="68ryJtnmui4j5rCZWUnkZ3DChtmEb7Z9F8atn1mBSM3L",G="DHmxTkFbXePZHCHCYmQr2dSzcNLcryFVjXVHkdQrrZr8",J="EL6AjrbJsxTWRTPzY8WR8Y2zAMXRbydQj83PcZwuAHbo",ut="G8wmfjEqugPEEXByMYWJXiEdbLToPRWNQEekNxrxfQWB",ct="294NBTj2mFRL3RB4kDRUSckwGg7Kzj6T8CTAFeR1kcSA",dt=[Y,K,G,J],he=[...dt,ut,ct];Object.fromEntries(at.map((r,e)=>[r,he[e]]));const ht=Object.fromEntries(he.map((r,e)=>[r,at[e]])),E=class E{constructor(e){p(this,"name");p(this,"description");p(this,"type");p(this,"itemType");p(this,"keyType");p(this,"valueType");p(this,"value");p(this,"items");p(this,"properties");p(this,"blueId");p(this,"blue");p(this,"inlineValue",!1);this.name=e}getName(){return this.name}setName(e){return this.name=e,this}getDescription(){return this.description}setDescription(e){return this.description=e,this}getType(){return this.type}setType(e){return typeof e=="string"?this.type=new E().setValue(e).setInlineValue(!0):this.type=e,this}getItemType(){return this.itemType}setItemType(e){return typeof e=="string"?this.itemType=new E().setValue(e).setInlineValue(!0):this.itemType=e,this}getKeyType(){return this.keyType}setKeyType(e){return typeof e=="string"?this.keyType=new E().setValue(e).setInlineValue(!0):this.keyType=e,this}getValueType(){return this.valueType}setValueType(e){return typeof e=="string"?this.valueType=new E().setValue(e).setInlineValue(!0):this.valueType=e,this}getValue(){var t;const e=(t=this.type)==null?void 0:t.getBlueId();if(u.isNonNullable(e)&&u.isNonNullable(this.value)){if(e===G&&typeof this.value=="string")return new v(this.value);if(e===K&&typeof this.value=="string"){const s=new P(this.value),n=parseFloat(s.toString());return new P(n.toString())}else if(e===J&&typeof this.value=="string")return this.value.toLowerCase()==="true"}return this.value}setValue(e){return typeof e=="number"?e%1===0?this.value=new v(e.toString()):this.value=new P(e.toString()):this.value=e,this}getItems(){return this.items}setItems(e){return this.items=e,this}addItems(...e){return this.items||(this.items=[]),this.items.push(...e),this}getProperties(){return this.properties}setProperties(e){return this.properties=e,this}addProperty(e,t){return this.properties||(this.properties={}),this.properties[e]=t,this}removeProperty(e){return this.properties&&delete this.properties[e],this}getContractsProperty(){var e;return(e=this.properties)==null?void 0:e.contracts}getContracts(){var e;return(e=this.getContractsProperty())==null?void 0:e.getProperties()}setContracts(e){return u.isNullable(e)?this.removeProperty("contracts"):this.addProperty("contracts",new E().setProperties(e)),this}addContract(e,t){const s=this.getContractsProperty();return u.isNullable(s)?this.addProperty("contracts",new E().addProperty(e,t)):s.addProperty(e,t),this}removeContract(e){const t=this.getContractsProperty();if(t){t.removeProperty(e);const s=t.getProperties();s&&Object.keys(s).length===0&&this.removeProperty("contracts")}return this}getBlueId(){return this.blueId}setBlueId(e){return this.blueId=e,this}getBlue(){return this.blue}setBlue(e){return this.blue=e,this}isInlineValue(){return this.inlineValue}setInlineValue(e){return this.inlineValue=e,this}isResolved(){return!1}get(e,t){return us.get(this,e,t)}getAsNode(e){const t=this.get(e);if(t instanceof E)return t;throw new Error(`Value at path ${e} is not a BlueNode: ${t}`)}getAsInteger(e){const t=this.get(e);if(t instanceof v||t instanceof P)return t.toNumber();throw new Error(`Value at path ${e} is not a BigInteger or BigDecimal: ${t}`)}clone(){var t,s,n,i,o,l;const e=new E(this.name);return e.description=this.description,e.type=(t=this.type)==null?void 0:t.clone(),e.itemType=(s=this.itemType)==null?void 0:s.clone(),e.keyType=(n=this.keyType)==null?void 0:n.clone(),e.valueType=(i=this.valueType)==null?void 0:i.clone(),e.value=this.value,e.items=(o=this.items)==null?void 0:o.map(a=>a.clone()),this.properties&&(e.properties=Object.fromEntries(Object.entries(this.properties).map(([a,h])=>[a,h.clone()]))),e.blueId=this.blueId,e.blue=(l=this.blue)==null?void 0:l.clone(),e.inlineValue=this.inlineValue,e}toString(){return`BlueNode{name='${this.name}', description='${this.description}', type=${this.type}, itemType=${this.itemType}, keyType=${this.keyType}, valueType=${this.valueType}, value=${this.value}, items=${this.items}, properties=${this.properties}, blueId='${this.blueId}', blue=${this.blue}, inlineValue=${this.inlineValue}}`}};p(E,"INTEGER",new E("Integer"));let d=E;class Z{static isPotentialBlueId(e){if(!e||e.length===0||!this.BLUE_ID_PATTERN.test(e))return!1;const t=e.split("#"),s=t[0],n=s.length;if(n<this.MIN_BLUE_ID_LENGTH||n>this.MAX_BLUE_ID_LENGTH)return!1;try{if(ue.default.decode(s).length!==32)return!1}catch{return!1}if(t.length>1)try{if(Number(t[1])<0)return!1}catch{return!1}return!0}}p(Z,"MIN_BLUE_ID_LENGTH",41),p(Z,"MAX_BLUE_ID_LENGTH",45),p(Z,"BLUE_ID_PATTERN",/^[1-9A-HJ-NP-Za-km-z]{41,45}(?:#\d+)?$/);const ms=c.z.string().max(Z.MAX_BLUE_ID_LENGTH,{message:"Blue Id has a maximum length of 45 characters"}).min(Z.MIN_BLUE_ID_LENGTH,{message:"Blue Id has a minimum length of 41 characters"}).refine(r=>{try{return ue.default.decode(r),!0}catch{return!1}},{message:"Blue Id must be a valid Base58 string"}),Q=c.z.lazy(()=>c.z.record(c.z.unknown()).and(c.z.object({blueId:c.z.string().optional(),name:c.z.string().optional(),description:c.z.string().optional(),type:Q.optional(),value:c.z.union([c.z.string(),c.z.number(),c.z.boolean()]).optional().nullable(),items:c.z.array(Q).optional()}))),pe=c.z.object({blueId:c.z.string().optional(),name:c.z.string().optional(),description:c.z.string().optional(),type:Q.optional()}),Is=pe.extend({value:c.z.string().optional()}),bs=pe.extend({value:c.z.number().optional()}),Ts=pe.extend({value:c.z.boolean().optional()}),Ns=pe.extend({items:c.z.array(c.z.string()).optional()}),vs=r=>Q.safeParse(r).success,pt=r=>u.isNonNullable(r)&&"blueId"in r&&u.isNonNullable(r.blueId),Bs=r=>u.isNonNullable(r)&&"name"in r&&u.isNonNullable(r.name),ft=r=>u.isNonNullable(r)&&"items"in r&&u.isNonNullable(r.items),gt=r=>u.isNonNullable(r)&&"type"in r&&u.isNonNullable(r.type),yt=r=>u.isNonNullable(r)&&"value"in r&&u.isNonNullable(r.value),ws=(r,e)=>r.required({type:!0}).safeParse(e).success,S=r=>r instanceof x,$=r=>S(r)&&r instanceof v,ye=r=>S(r)&&r instanceof P,Ps=c.z.lazy(()=>c.z.record(ce)),Ss=c.z.lazy(()=>c.z.union([c.z.array(ce),c.z.array(ce).readonly()])),ce=c.z.lazy(()=>c.z.union([u.jsonPrimitiveSchema,Ps,Ss,c.z.instanceof(x)])),We=r=>C.isObject(r)&&!C.isArray(r)&&!u.isReadonlyArray(r)&&!S(r),He=r=>C.isArray(r)||u.isReadonlyArray(r),Es=r=>He(r)||We(r)||S(r)||u.isJsonPrimitive(r);class m{static deserialize(e){return m.handleNode(e)}static handleNode(e){if(e===void 0)throw new Error("This is not a valid JSON-like value. Found 'undefined' as a value.");if(We(e)){const t=new d,s={};return Object.entries(e).forEach(([n,i])=>{switch(n){case q:if(i==null)t.setName(void 0);else{if(typeof i!="string")throw new Error(`The ${q} field must be a string.`);t.setName(i)}break;case X:if(i==null)t.setDescription(void 0);else{if(typeof i!="string")throw new Error(`The ${X} field must be a string.`);t.setDescription(i)}break;case ge:t.setType(m.handleNode(i));break;case _e:t.setItemType(m.handleNode(i));break;case ke:t.setKeyType(m.handleNode(i));break;case Ye:t.setValueType(m.handleNode(i));break;case Ne:t.setValue(m.handleValue(i));break;case _:if(typeof i!="string")throw new Error(`The ${_} field must be a string.`);t.setBlueId(i);break;case Ke:t.setItems(m.handleArray(i));break;case Ge:t.setBlue(m.handleNode(i));break;default:s[n]=m.handleNode(i);break}}),Object.keys(s).length>0&&t.setProperties(s),t}else{if(He(e))return new d().setItems(m.handleArray(e));{const t=e;return new d().setValue(m.handleValue(t)).setInlineValue(!0)}}}static handleValue(e){if(e==null)return null;if(typeof e=="string")return e;if(typeof e=="number"||S(e))if($(e)||Number.isSafeInteger(e)){const t=new v(e.toString()),s=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER;return t.lt(s)?new v(s.toString()):t.gt(n)?new v(n.toString()):t}else{const t=parseFloat(e.toString());return new P(t.toString())}else if(typeof e=="boolean")return e;throw new Error(`Can't handle node: ${JSON.stringify(e)}`)}static handleArray(e){if(e!=null){if(C.isObject(e)&&!Array.isArray(e))return[m.handleNode(e)];if(Array.isArray(e))return e.map(m.handleNode);throw new Error("Expected an array node")}}}function As(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Ae,rt;function Vs(){return rt||(rt=1,Ae=function r(e){if(typeof e=="number"&&isNaN(e))throw new Error("NaN is not allowed");if(typeof e=="number"&&!isFinite(e))throw new Error("Infinity is not allowed");return e===null||typeof e!="object"?JSON.stringify(e):e.toJSON instanceof Function?r(e.toJSON()):Array.isArray(e)?`[${e.reduce((n,i,o)=>`${n}${o===0?"":","}${r(i===void 0||typeof i=="symbol"?null:i)}`,"")}]`:`{${Object.keys(e).sort().reduce((s,n)=>{if(e[n]===void 0||typeof e[n]=="symbol")return s;const i=s.length===0?"":",";return`${s}${i}${r(n)}:${r(e[n])}`},"")}}`}),Ae}var Cs=Vs();const Ds=As(Cs);class mt{static canonicalize(e){return Ds(e)}}const Ve=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,Ie=class Ie{constructor(){p(this,"browserCrypto");this.browserCrypto=this.initBrowserCrypto()}static getInstance(){return this.instance||(this.instance=new Ie),this.instance}initBrowserCrypto(){return Ve?null:"crypto"in globalThis?globalThis.crypto:null}hasNodeCrypto(){return Ve&&!!Ee.default&&typeof Ee.default.createHash=="function"}getBrowserCrypto(){return this.browserCrypto}getNodeCrypto(){return Ve?Ee.default:null}};p(Ie,"instance");let Fe=Ie;class It{constructor(){p(this,"cryptoEnv",Fe.getInstance())}applySync(e){const t=this.canonicalizeInput(e),s=this.cryptoEnv.hasNodeCrypto()?this.sha256Sync(t):this.sha256SyncBrowser(t);return ue.default.encode(new Uint8Array(s))}async apply(e){const t=this.canonicalizeInput(e),s=this.cryptoEnv.hasNodeCrypto()?this.sha256Sync(t):await this.sha256Async(t);return ue.default.encode(new Uint8Array(s))}canonicalizeInput(e){const t=mt.canonicalize(e);if(typeof t!="string")throw new Error("Canonized value must be a string");return t}sha256Sync(e){const t=this.cryptoEnv.getNodeCrypto();if(!t)throw new Error("Synchronous SHA-256 is not available in this environment");return t.createHash("sha256").update(e).digest()}sha256SyncBrowser(e){return os.sha256.arrayBuffer(e)}async sha256Async(e){if(this.cryptoEnv.hasNodeCrypto())return this.sha256Sync(e);const t=this.cryptoEnv.getBrowserCrypto();if(!t)throw new Error("crypto is not available in this environment");const n=new TextEncoder().encode(e);return t.subtle.digest("SHA-256",n)}}class b{static get(e,t="official"){var st;const s=e.getValue(),n=this.handleValue(s);if(n!==void 0&&t==="simple")return n;const i=(st=e.getItems())==null?void 0:st.map(H=>b.get(H,t));if(i!==void 0&&t==="simple")return i;const o=e.getName(),l=e.getDescription();if(t==="original"&&o===void 0&&l===void 0){if(n!==void 0)return n;if(i!==void 0)return i}const a={};o!==void 0&&(a[q]=o),l!==void 0&&(a[X]=l);const h=e.getType();if(t==="official"&&s!==void 0&&h===void 0){const H=this.inferTypeBlueId(s);H!==null&&(a[ge]={[_]:H})}else h!==void 0&&(a[ge]=b.get(h,t));const I=e.getItemType();I!==void 0&&(a[_e]=b.get(I,t));const y=e.getKeyType();y!==void 0&&(a[ke]=b.get(y,t));const f=e.getValueType();f!==void 0&&(a[Ye]=b.get(f,t)),n!==void 0&&(a[Ne]=n),i!==void 0&&(a[Ke]=i);const g=e.getBlueId();g!==void 0&&(a[_]=g);const O=e.getBlue();O!==void 0&&(a[Ge]=O);const W=e.getProperties();return W!==void 0&&Object.entries(W).forEach(([H,ss])=>{a[H]=b.get(ss,t)}),a}static handleValue(e){if(S(e)){if($(e)){const t=new x(Number.MIN_SAFE_INTEGER.toString()),s=new x(Number.MAX_SAFE_INTEGER.toString());if(e.lt(t)||e.gt(s))return e.toString()}return e.toNumber()}return e}static inferTypeBlueId(e){return typeof e=="string"?Y:S(e)?$(e)?G:K:typeof e=="boolean"?J:null}}const Os=r=>u.isJsonPrimitive(r)&&u.isNonNullable(r),R=class R{constructor(e){p(this,"hashProvider");this.hashProvider=e}static calculateBlueId(e){if(Array.isArray(e)){const s=e.map(n=>b.get(n));return R.INSTANCE.calculate(s)}const t=b.get(e);return R.INSTANCE.calculate(t)}static calculateBlueIdSync(e){if(Array.isArray(e)){const s=e.map(n=>b.get(n));return R.INSTANCE.calculateSync(s)}const t=b.get(e);return R.INSTANCE.calculateSync(t)}calculate(e){const t=this.cleanStructure(e);if(t===void 0)throw new Error("Object after cleaning cannot be null or undefined.");return this.internalCalculate(t,!1)}calculateSync(e){const t=this.cleanStructure(e);if(t===void 0)throw new Error("Object after cleaning cannot be null or undefined.");return this.internalCalculate(t,!0)}internalCalculate(e,t){return Os(e)||S(e)?this.applyHash(e.toString(),t):Array.isArray(e)||u.isReadonlyArray(e)?this.calculateList(e,t):this.calculateMap(e,t)}calculateMap(e,t){if(e[_]!==void 0)return e[_];const n=Object.keys(e).map(o=>{const l=e[o];if([q,Ne,X].includes(o))return t?[o,l]:Promise.resolve([o,l]);{const a=this.internalCalculate(l,t);return t?[o,{blueId:a}]:Promise.resolve(a).then(h=>[o,{blueId:h}])}}),i=o=>{const l={};for(const[a,h]of o)l[a]=h;return this.applyHash(l,t)};return t?i(n):Promise.all(n).then(i)}calculateList(e,t){if(e.length===0)throw new Error("Cannot calculate BlueId for an empty list.");let s=this.internalCalculate(e[0],t);const n=(i,o)=>t?this.applyHash([{blueId:i},{blueId:o}],!0):Promise.all([i,o]).then(([l,a])=>this.applyHash([{blueId:l},{blueId:a}],!1));for(let i=1;i<e.length;i++){const o=this.internalCalculate(e[i],t);s=n(s,o)}return s}applyHash(e,t){return t?this.hashProvider.applySync(e):this.hashProvider.apply(e)}cleanStructure(e){if(e!=null){if(u.isJsonPrimitive(e)||S(e))return e;if(Array.isArray(e)||u.isReadonlyArray(e)){const t=e.map(s=>this.cleanStructure(s)).filter(u.isNonNullable);return t.length>0?t:void 0}else if(typeof e=="object"){const t={};for(const s in e){const n=this.cleanStructure(e[s]);n!=null&&(t[s]=n)}return Object.keys(t).length>0?t:void 0}else return e}}};p(R,"INSTANCE",new R(new It));let T=R;class Ms{static convert(e){const t=ue.default.decode(e),s=new Uint8Array(2+t.length);s[0]=18,s[1]=32,s.set(t,2);const n=new Uint8Array(2+s.length);return n[0]=1,n[1]=85,n.set(s,2),"b"+new as.Encoder({type:"rfc4648",lc:!0}).write(n).finalize().replace(/=/g,"")}}class V{static transform(e,t){const s=t(e.clone()),n=s.getType();n!==void 0&&s.setType(V.transform(n,t));const i=s.getItemType();i!==void 0&&s.setItemType(V.transform(i,t));const o=s.getKeyType();o!==void 0&&s.setKeyType(V.transform(o,t));const l=s.getValueType();l!==void 0&&s.setValueType(V.transform(l,t));const a=s.getItems();if(a!==void 0){const I=a.map(y=>V.transform(y,t));s.setItems(I)}const h=s.getProperties();if(h!==void 0){const I=Object.keys(h).reduce((y,f)=>(y[f]=V.transform(h[f],t),y),{});s.setProperties(I)}return s}}const L=r=>!!r&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof d),M=r=>r instanceof v||r instanceof P,Fs=r=>r.replace(/~1/g,"/").replace(/~0/g,"~");function re(r){if(r==="/")return[];if(!r.startsWith("/"))throw new Error(`Path must start with '/': ${r}`);return r.split("/").slice(1).map(Fs)}function ee(r){if(r==="-")return-1;const e=typeof r=="number"?r:parseInt(r,10);if(isNaN(e))throw new Error(`Invalid array index (NaN) from '${r}'`);if(!Number.isFinite(e))throw new Error(`Invalid array index '${r}' results in non-finite number ${e}`);return e}function bt(r,e,t,s=!0){switch(e){case"name":return t?s?r.getName()??null:r:r.getName();case"description":return t?s?r.getDescription():r:r.getDescription();case"type":return r.getType();case"itemType":return r.getItemType();case"keyType":return r.getKeyType();case"valueType":return r.getValueType();case"value":return t?s?r.getValue()??null:r:r.getValue();case"blueId":return t?s?r.getBlueId()??null:r:r.getBlueId();case"blue":return r.getBlue();case"items":return r.getItems();case"properties":return r.getProperties();case"contracts":return r.getContracts();default:return}}function nt(r,e,t=!0){if(r instanceof d){const s=bt(r,e,!0,t);if(s!==void 0||["name","description","type","itemType","keyType","valueType","value","blueId","blue","items","properties","contracts"].includes(e))return s;if(/^-?\d+$/.test(e)&&e!=="-"){const i=r.getItems(),o=parseInt(e,10);return i&&o>=0&&o<i.length?i[o]:void 0}const n=r.getProperties();return n&&e in n?n[e]:void 0}if(Array.isArray(r)){if(e==="-")return;const s=ee(e);return s>=0&&s<r.length?r[s]:void 0}if(L(r))return r[e]}function ne(r,e){if(e.length===0)return{parent:r,key:"value",actualTarget:r.getValue()??r};let t=r;for(let n=0;n<e.length-1;++n){const i=e[n],o=nt(t,i);if(o===void 0)throw new Error(`Cannot resolve '/${e.slice(0,n+1).join("/")}'`);t=o}const s=e[e.length-1];if(t instanceof d){const n=nt(t,s,!1);if((typeof n!="object"||n===null||M(n))&&!(n instanceof d)&&!Array.isArray(n)&&["name","description","value","blueId"].includes(s))return{parent:t,key:s,actualTarget:n}}return Array.isArray(t)&&s==="-"?{parent:t,key:"-"}:t instanceof d&&t.getItems()&&s==="-"?{parent:t,key:"-"}:{parent:t,key:Array.isArray(t)?ee(s):s}}function qe(r,e){var t;if(r instanceof d){const s=e,n=bt(r,s,!1);if(n!==void 0||["name","description","type","itemType","keyType","valueType","value","blueId","blue","items","properties","contracts"].includes(s))return n;if(typeof e=="number"||typeof e=="string"&&/^\d+$/.test(e)){const i=r.getItems(),o=typeof e=="number"?e:parseInt(e,10);if(i&&o>=0&&o<i.length)return i[o]}return(t=r.getProperties())==null?void 0:t[s]}return Array.isArray(r)||L(r)?r[e]:r}function w(r){if(r instanceof d)return r;if(r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean"||M(r))return m.deserialize(r);const e=Re(r);return m.deserialize(e)}function Re(r){if(r===void 0)return null;if(r===null||typeof r!="object")return r;if(Array.isArray(r))return r.map(Re);const e={};for(const[t,s]of Object.entries(r))e[t]=Re(s);return e}function Xe(r,e,t){if(r instanceof d){const s=e;switch(s){case"name":r.setName(t);return;case"description":r.setDescription(t);return;case"type":r.setType(t instanceof d||typeof t=="string"||t===void 0?t:w(t));return;case"itemType":r.setItemType(t instanceof d||typeof t=="string"||t===void 0?t:w(t));return;case"keyType":r.setKeyType(t instanceof d||typeof t=="string"||t===void 0?t:w(t));return;case"valueType":r.setValueType(t instanceof d||typeof t=="string"||t===void 0?t:w(t));return;case"value":{const n=t;r.setValue(n===void 0?null:n);return}case"blueId":r.setBlueId(t);return;case"blue":r.setBlue(t instanceof d||t===void 0?t:w(t));return;case"items":r.setItems(t);return;case"properties":r.setProperties(t);return;case"contracts":r.setContracts(t);return;default:{if(t===void 0){const n=r.getProperties();n&&s in n&&delete n[s]}else r.getProperties()||r.setProperties({}),r.addProperty(s,t instanceof d?t:w(t));return}}}Array.isArray(r)?r.splice(ee(e),1):L(r)&&(t===void 0?delete r[e]:r[e]=t)}function Rs(r,e,t,s){let n=-1;if(e!=="-"&&(n=typeof e=="number"?e:parseInt(e,10),isNaN(n)))throw new Error(`Invalid numeric key for BlueNode item operation: ${e}`);if(n<-1)throw new Error(`Invalid array index for BlueNode items: ${n}`);let i=r.getItems();if(i||(i=[],r.setItems(i)),!s&&n!==-1&&n>i.length)throw new Error(`ADD operation failed: Target array index '${n}' is greater than array length ${i.length}.`);if(e==="-")i.push(t);else if(s){if(n>=0)if(n<i.length)i[n]=t;else{for(let o=i.length;o<n;o++)i.push(m.deserialize(null));i.push(t)}}else i.splice(n,0,t)}function me(r,e,t,s){if(Array.isArray(r)){const n=e==="-"?r.length:ee(e);if(!s&&n>r.length)throw new Error(`ADD operation failed: Target array index '${n}' is greater than array length ${r.length}. Path involving key '${e}'.`);if(n<0&&e!=="-")throw new Error(`Invalid negative array index: ${e}`);const i=w(t);if(s){if(n>=0&&n<r.length)r[n]=i;else if(n>=r.length){for(let o=r.length;o<n;o++)r.push(m.deserialize(null));r.push(i)}}else r.splice(n,0,i);return}if(r instanceof d){e==="-"||typeof e=="number"&&!isNaN(e)||typeof e=="string"&&/^\d+$/.test(e)?Rs(r,e,w(t),s):Xe(r,e,t);return}if(L(r)){r[e]=w(t);return}throw new Error(`Cannot insert into parent of type ${typeof r}`)}function js(r,e){if(Array.isArray(r)){const t=ee(e);t===-1&&e==="-"?r.length>0&&r.pop():t>=0&&t<r.length&&r.splice(t,1);return}if(r instanceof d){if(typeof e=="number"||typeof e=="string"&&/^-?\d+$/.test(e)){const t=r.getItems();if(t){const s=ee(e);s===-1&&e==="-"?t.length>0&&t.pop():s>=0&&s<t.length&&t.splice(s,1),t.length===0&&r.setItems(void 0);return}}Xe(r,e,void 0)}else L(r)&&delete r[e]}function je(r){if(r instanceof d)return r.clone();if(Array.isArray(r))return r.map(t=>je(t));if(L(r)){const e={};return Object.keys(r).forEach(t=>{e[t]=je(r[t])}),e}return r}function U(r,e){if(r===e||r instanceof d&&(r.isInlineValue()||r.getValue()!==void 0)&&U(r.getValue()??null,e)||e instanceof d&&(e.isInlineValue()||e.getValue()!==void 0)&&U(r,e.getValue()??null))return!0;if(r instanceof d&&e instanceof d||M(r)&&M(e)||M(r)&&typeof e=="number"||typeof r=="number"&&M(e))return r.toString()===e.toString();if(Array.isArray(r)&&Array.isArray(e))return r.length===e.length&&r.every((t,s)=>U(t,e[s]));if(L(r)&&L(e)){const t=Object.keys(r),s=Object.keys(e);return t.length===s.length&&t.every(n=>U(r[n],e[n]))}return!1}function Tt(r,e){const{parent:t,key:s}=ne(r,re(e));return qe(t,s)}function Nt(r,e,t){const s=re(e);if(s.length===0&&e==="/"){const o=w(t);r.setValue(o.getValue()??null),o.getItems()?r.setItems(o.getItems()):r.setItems(void 0);return}const{parent:n,key:i}=ne(r,s);me(n,i,t,!0)}function xs(r,e,t){const s=re(e);if(s.length===0&&e==="/"){if(r.getItems()&&Array.isArray(t)){const o=w(t);o.getItems()?(r.setItems(o.getItems()),r.setValue(null)):(r.setValue(o.getValue()??null),r.setItems(void 0))}else{const o=w(t);r.setValue(o.getValue()??null),o.getItems()&&r.setItems(o.getItems())}return!0}const{parent:n,key:i}=ne(r,s);return me(n,i,t,!1),!0}function $s(r,e,t){const s=re(e);if(s.length===0&&e==="/"){const l=w(t);return r.setValue(l.getValue()??null),l.getItems()?r.setItems(l.getItems()):r.setItems(void 0),!0}const{parent:n,key:i,actualTarget:o}=ne(r,s);if(o!==void 0&&n instanceof d)Xe(n,i,t);else{const l=qe(n,i),a=Array.isArray(n)||n instanceof d&&n.getItems()&&(typeof i=="number"||typeof i=="string"&&/^\d+$/.test(i));if(l===void 0){if(a)throw new Error(`REPLACE failed: Target array index '${i.toString()}' is out of bounds or does not exist at path '${e}'.`);me(n,i,t,!0)}else me(n,i,t,!0)}return!0}function vt(r,e){const t=re(e);if(t.length===0&&e==="/")return r.setValue(null),r.setItems(void 0),r.setProperties(void 0),!0;const{parent:s,key:n}=ne(r,t);return js(s,n),!0}function Ls(r,e,t){const s=je(Tt(r,e));return Nt(r,t,s),!0}function zs(r,e,t){const s=re(e),{parent:n,key:i}=ne(r,s),o=qe(n,i);if(o===void 0)throw new Error(`MOVE failed: 'from' location '${e}' does not exist.`);return vt(r,e)?(Nt(r,t,o),!0):!1}function Us(r,e,t){const s=Tt(r,e);let n=t;if(s instanceof d)if((t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||M(t))&&(s.isInlineValue()||s.getValue()!==void 0)){if(!U(s.getValue()??null,t))throw new Error(`TEST failed at '${e}': Expected ${JSON.stringify(t)}, got ${JSON.stringify(s.getValue()??null)}`);return!0}else typeof t=="object"&&!(t instanceof d)&&(n=w(t));else if(M(s)&&typeof t=="number")s instanceof v?n=new v(t.toString()):s instanceof P&&(n=new P(t.toString()));else if((s===null||typeof s=="string"||typeof s=="number"||typeof s=="boolean")&&M(t)){const i=t;!U(s,i.toString())&&(typeof s=="number"&&parseFloat(i.toString()))}if(!U(s,n)){const i=s instanceof d?s.toString():JSON.stringify(s),o=n instanceof d?n.toString():JSON.stringify(n);throw new Error(`TEST failed at '${e}': Expected ${o}, got ${i}`)}return!0}function Zs(r,e){switch(e.op){case"add":return xs(r,e.path,e.val);case"replace":return $s(r,e.path,e.val);case"remove":return vt(r,e.path);case"copy":return Ls(r,e.from,e.path);case"move":return zs(r,e.from,e.path);case"test":return Us(r,e.path,e.val)}}function _s(r,e,t=!1){const s=t?r:r.clone();return Zs(s,e),s}const Ce=Symbol.for("zod-schema-annotations");function ks(){if(typeof globalThis<"u")return globalThis;if(typeof global<"u")return global;if(typeof window<"u")return window;if(typeof self<"u")return self;throw new Error("Unable to locate global object")}function Bt(){const r=ks();return Ce in r||(r[Ce]=new WeakMap),r[Ce]}function ie(r,e){const t=Bt(),s=t.get(r)||{};return t.set(r,{...s,...e}),r}const D=r=>Bt().get(r),wt=r=>e=>{const t=D(e);return ie(e,{...t,blueDescription:r})},Pt=r=>{const e=D(r);return u.isNonNullable(e)&&C.isString(e.blueDescription)?e.blueDescription:null},Ys=r=>wt(r)(c.z.string().optional()),Ks=c.z.union([c.z.string(),c.z.boolean()]),St=r=>e=>{const t=D(e);return ie(e,{...t,blueId:r})},Et=r=>{const e=D(r),t=Ks.safeParse(e==null?void 0:e.blueId);return t.success?t.data:null},Gs=r=>St(r??!0)(c.z.string()),At=r=>e=>{const t=D(e);return ie(e,{...t,blueName:r})},Vt=r=>{const e=D(r);return u.isNonNullable(e)&&C.isString(e.blueName)?e.blueName:null},Js=r=>{const e=c.z.string().optional();return At(r)(e)},Ct=()=>r=>{const e=D(r);return ie(r,{...e,blueNode:!0})},Dt=r=>{const e=D(r);return u.isNonNullable(e)&&u.isNonNullable(e.blueNode)&&e.blueNode===!0?e.blueNode:null},Qe=r=>!!Dt(r),Ws=()=>{const r=c.z.instanceof(d);return Ct()(r)},xe="extendedFrom",Ot=({schema:r,baseSchema:e})=>{const t=D(r)||{};return ie(r,{...t,[xe]:e})},Mt=r=>{const e=D(r);return u.isNonNullable(e)&&e[xe]?e[xe]:null},et=(r,e)=>{const t=Mt(r);return u.isNullable(t)?!1:(t==null?void 0:t._def)===(e==null?void 0:e._def)?!0:et(t,e)},Hs=r=>new Proxy(r,{get(e,t,s){return t==="extend"?function(...n){const i=e.extend(...n);return Ot({schema:i,baseSchema:e})}:Reflect.get(e,t,s)}}),qs=c.z.object({value:c.z.array(c.z.string()).optional(),defaultValue:c.z.string().optional()}),Ft=r=>{const e=D(r),t=qs.passthrough().safeParse(e==null?void 0:e.typeBlueId);return t.success?t.data:null},Xs=r=>e=>{const t=D(e),s=typeof r=="string"?{value:[r]}:r,n=Hs(e);return ie(n,{...t,typeBlueId:{...(t==null?void 0:t.typeBlueId)||{},...s}})};class ve{static resolveBlueId(e){var i;const t=Ft(e);if(u.isNullable(t))return null;const s=t.defaultValue;if(u.isNonNullable(s))return s;const n=(i=t.value)==null?void 0:i[0];return u.isNonNullable(n)?n:ve.getRepositoryBlueId(t,e)}static getRepositoryBlueId(e,t){throw new Error("Not implemented")}}class A{static isTypeOf(e,t,s){var o;const n=ve.resolveBlueId(t),i=(o=e.getType())==null?void 0:o.getBlueId();if(u.isNullable(n)||u.isNullable(i))return!1;if(n===i)return!0;if(s!=null&&s.checkSchemaExtensions&&u.isNonNullable(s.typeSchemaResolver)){const l=s.typeSchemaResolver.resolveSchema(e);return A.checkSchemaExtension(l,t)}return!1}static checkSchemaExtension(e,t){if(!u.isNonNullable(e))return!1;const s=A.unwrapSchema(e),n=A.unwrapSchema(t);return et(s,n)}static isWrapperType(e){return e instanceof c.ZodOptional||e instanceof c.ZodNullable||e instanceof c.ZodReadonly||e instanceof c.ZodBranded||e instanceof c.ZodEffects||e instanceof c.ZodLazy}static unwrapSchema(e){return Qe(e)?e:A.isWrapperType(e)?e instanceof c.ZodEffects?A.unwrapSchema(e.innerType()):e instanceof c.ZodLazy?A.unwrapSchema(e.schema):A.unwrapSchema(e.unwrap()):e}}class Rt{constructor(e){p(this,"blueIdMap",new Map);this.registerSchemas(e)}registerSchemas(e){for(const t of e)this.registerSchema(t)}registerSchema(e){const t=ve.resolveBlueId(e);if(u.isNonNullable(t)){if(this.blueIdMap.has(t))throw new Error(`Duplicate BlueId value: ${t}`);this.blueIdMap.set(t,e)}}resolveSchema(e){const t=this.getEffectiveBlueId(e);return u.isNullable(t)?null:this.blueIdMap.get(t)}getEffectiveBlueId(e){const t=e.getType();return u.isNonNullable(t)&&u.isNonNullable(t.getBlueId())?t.getBlueId():u.isNonNullable(t)?T.calculateBlueIdSync(t):null}getBlueIdMap(){return new Map(this.blueIdMap)}}const B={NAME:"name",DESCRIPTION:"description",TYPE:"type",BLUE_ID:"blue_id",KEY_TYPE:"key_type",VALUE_TYPE:"value_type",ITEM_TYPE:"item_type",VALUE:"value",PROPERTIES:"properties",BLUE:"blue",ITEMS:"items"};class Be{static isEmptyNode(e){return this.hasFieldsAndMayHaveFields(e)}static hasBlueIdOnly(e){return this.hasFieldsAndMayHaveFields(e,new Set([B.BLUE_ID]))}static hasItemsOnly(e){return this.hasFieldsAndMayHaveFields(e,new Set([B.ITEMS]))}static isValidValueNode(e){const t=e.getValue(),s=e.getProperties(),n=e.getItems();return u.isNonNullable(t)&&u.isNullable(s)&&u.isNullable(n)}static textNode(e){return new d().setType(new d().setBlueId(Y)).setValue(e)}static integerNode(e){const t=e instanceof v?e:new v(e.toString());return new d().setType(new d().setBlueId(G)).setValue(t)}static doubleNode(e){const t=e instanceof P?e:new P(e.toString());return new d().setType(new d().setBlueId(K)).setValue(t)}static booleanNode(e){return new d().setType(new d().setBlueId(J)).setValue(e)}static hasFieldsAndMayHaveFields(e,t=new Set,s=new Set){for(const n of Object.values(B)){const i=u.isNonNullable(this.getFieldValue(e,n));if(t.has(n)){if(!i)return!1}else if(!s.has(n)){if(i)return!1}}return!0}static getFieldValue(e,t){switch(t){case B.NAME:return e.getName();case B.TYPE:return e.getType();case B.VALUE:return e.getValue();case B.DESCRIPTION:return e.getDescription();case B.PROPERTIES:return e.getProperties();case B.BLUE:return e.getBlue();case B.ITEMS:return e.getItems();case B.KEY_TYPE:return e.getKeyType();case B.VALUE_TYPE:return e.getValueType();case B.ITEM_TYPE:return e.getItemType();case B.BLUE_ID:return e.getBlueId();default:throw new Error(`Unknown field: ${t}`)}}}class we{}class oe{static convert(e){const t=new $e;return oe.traverseNode(e,"",t),t.build()}static traverseNode(e,t,s){if(!e)return;const n=e.getProperties(),i=e.getItems(),o=n!==void 0&&Object.keys(n).length>0,l=i!==void 0&&i.length>0;if(!o&&!l){s.addPath(t===""?"/":t);return}if(n)for(const[a,h]of Object.entries(n)){const I=`${t}/${a}`;oe.traverseNode(h,I,s)}if(i)for(let a=0;a<i.length;a++){const h=`${t}/${a}`;oe.traverseNode(i[a],h,s)}}}function it(r,e){const t=r.split(e),s=[...t].reverse().findIndex(i=>i!==""),n=s===-1?0:t.length-s;return t.slice(0,n)}class Pe extends we{constructor(t,s){super();p(this,"allowedPaths");p(this,"maxDepth");p(this,"currentPath",[]);this.allowedPaths=t,this.maxDepth=s}shouldExtendPathSegment(t){if(this.currentPath.length>=this.maxDepth)return!1;const s=this.normalizePath(this.getCurrentFullPath()+"/"+t);return this.isAllowedPath(s)}shouldMergePathSegment(t){return this.shouldExtendPathSegment(t)}isAllowedPath(t){for(const s of this.allowedPaths)if(this.matchesAllowedPath(s,t))return!0;return!1}matchesAllowedPath(t,s){const n=it(t,"/"),i=it(s,"/");if(i.length>n.length)return!1;for(let o=1;o<i.length;o++)if(n[o]!=="*"&&n[o]!==i[o])return!1;return!0}enterPathSegment(t){this.currentPath.push(t)}exitPathSegment(){this.currentPath.length>0&&this.currentPath.pop()}getCurrentFullPath(){return"/"+this.currentPath.join("/")}normalizePath(t){return"/"+t.split("/").filter(s=>s!=="").join("/")}static withMaxDepth(t){const s=new $e().setMaxDepth(t);for(let n=1;n<=t;n++){const i="/"+Array(n).fill("*").join("/");s.addPath(i)}return s.build()}static withSinglePath(t){return new $e().addPath(t).build()}static fromNode(t){return oe.convert(t)}}class $e{constructor(){p(this,"allowedPaths",new Set);p(this,"maxDepth",Number.MAX_SAFE_INTEGER)}addPath(e){return this.allowedPaths.add(e),this}setMaxDepth(e){return this.maxDepth=e,this}build(){return new Pe(this.allowedPaths,this.maxDepth)}}class Qs extends we{shouldExtendPathSegment(){return!0}shouldMergePathSegment(){return!0}enterPathSegment(){}exitPathSegment(){}}class Se extends we{constructor(t){super();p(this,"limits");this.limits=t}shouldExtendPathSegment(t,s){return this.limits.every(n=>n.shouldExtendPathSegment(t,s))}shouldMergePathSegment(t,s){return this.limits.every(n=>n.shouldMergePathSegment(t,s))}enterPathSegment(t,s){this.limits.forEach(n=>{n.enterPathSegment(t,s)})}exitPathSegment(){this.limits.forEach(t=>{t.exitPathSegment()})}static of(...t){return new Se(t)}}const z=new Qs;function ot(r,e){const t=r.getType();if(t===void 0)return;const s=t.getBlueId();if(s!==void 0){if(he.includes(s)){const i=ht[s];return new d().setBlueId(s).setName(i)}const n=e.fetchByBlueId(s);if(!n||n.length===0)return;if(n.length>1)throw new Error(`Expected a single node for type with blueId '${s}', but found multiple.`);return n[0]}return t}function N(r,e,t){const s=T.calculateBlueIdSync(r),n=T.calculateBlueIdSync(e);if(s===n)return!0;if(s&&he.includes(s)){let a=e;for(;a!==void 0;){if(T.calculateBlueIdSync(a)===s)return!0;a=ot(a,t)}return!1}let i=r;const o=r.getBlueId();if(o){const a=t.fetchByBlueId(o);a&&a.length===1&&(i=a[0])}let l=i;for(;l!==void 0;){if(T.calculateBlueIdSync(l)===n)return!0;l=ot(l,t)}return!1}function er(r,e){return dt.some(t=>{const s=new d().setBlueId(t);return N(r,s,e)})}function tr(r,e){const t=new d().setBlueId(Y);return N(r,t,e)}function sr(r,e){const t=new d().setBlueId(G);return N(r,t,e)}function rr(r,e){const t=new d().setBlueId(K);return N(r,t,e)}function nr(r,e){const t=new d().setBlueId(J);return N(r,t,e)}function jt(r,e){const t=new d().setBlueId(ut);return N(r,t,e)}function xt(r,e){const t=new d().setBlueId(ct);return N(r,t,e)}function ir(r,e){return Je.some(t=>{const s=new d().setName(t);return N(r,s,e)})}function or(r,e){for(const t of Je){const s=new d().setName(t);if(N(r,s,e))return t}throw new Error(`Cannot determine the basic type for node of type "${r.getName()||"unknown"}".`)}class lr{constructor(e){p(this,"blue");this.blue=e}matchesType(e,t,s=z){const n=t.getType();if(this.matchesImplicitStructure(e,n))return!0;const i=Pe.fromNode(t),o=Se.of(s,i),l=this.extendAndResolve(e,o),a=this.blue.resolve(t,o);return this.verifyMatch(l,t,o)&&this.recursiveValueComparison(l,a)}extendAndResolve(e,t){const s=e.clone(),n=s.clone();this.blue.extend(n,t);const i=this.blue.resolve(n,t);return this.restoreMissingStructure(i,s),i}restoreMissingStructure(e,t){const s=t.getItems(),n=e.getItems();if(s&&s.length>0)if(!n||n.length===0)e.setItems(s.map(a=>a.clone()));else for(let a=0;a<Math.min(n.length,s.length);a++)this.restoreMissingStructure(n[a],s[a]);const i=t.getProperties();if(i){let a=e.getProperties();a||(a={},e.setProperties(a));for(const[h,I]of Object.entries(i)){const y=a[h];y===void 0?a[h]=I.clone():this.restoreMissingStructure(y,I)}}const o=t.getBlueId();e.getBlueId()===void 0&&o!==void 0&&e.setBlueId(o);const l=t.getValue();e.getValue()===void 0&&l!==void 0&&e.setValue(l)}verifyMatch(e,t,s){const n=t.getType();if(this.matchesImplicitStructure(e,n))return!0;const i=e.clone().setType(t.clone());try{this.blue.resolve(i,s)}catch{return!1}return!0}recursiveValueComparison(e,t){var y;const s=t.getType(),n=this.matchesImplicitStructure(e,s);if(s&&!n){const f=e.getType();if(!f||!N(f,s,this.blue.getNodeProvider()))return!1}const i=t.getBlueId();if(!n&&i!==void 0){const f=e.getBlueId(),g=(y=e.getType())==null?void 0:y.getBlueId();if(f!==void 0){if(i!==f)return!1}else if(g===void 0||i!==g)return!1}const o=t.getValue();if(o!==void 0){const f=e.getValue();if(f===void 0)return!1;if(S(f)&&S(o)){if(!f.eq(o))return!1}else if(f!==o)return!1}const l=t.getItems();if(l!==void 0){const f=e.getItems()??[];for(let g=0;g<l.length;g++)if(g<f.length){if(!this.recursiveValueComparison(f[g],l[g]))return!1}else if(this.hasValueInNestedStructure(l[g]))return!1}const a=t.getItemType();if(a!==void 0){const f=e.getItems()??[];for(const g of f)if(!this.recursiveValueComparison(g,a))return!1}const h=t.getProperties();if(h!==void 0){const f=e.getProperties()??{};for(const[g,O]of Object.entries(h))if(g in f){if(!this.recursiveValueComparison(f[g],O))return!1}else if(this.hasValueInNestedStructure(O))return!1}const I=t.getValueType();if(I!==void 0){const f=Object.values(e.getProperties()??{});for(const g of f)if(!this.recursiveValueComparison(g,I))return!1}return!0}hasValueInNestedStructure(e){if(e.getValue()!==void 0)return!0;const t=e.getItems();if(t!==void 0){for(const n of t)if(this.hasValueInNestedStructure(n))return!0}const s=e.getProperties();if(s!==void 0){for(const n of Object.values(s))if(this.hasValueInNestedStructure(n))return!0}return!1}matchesImplicitStructure(e,t){return t===void 0||e.getType()!==void 0?!1:jt(t,this.blue.getNodeProvider())?this.isImplicitListStructure(e):xt(t,this.blue.getNodeProvider())?this.isImplicitDictionaryStructure(e):!1}isImplicitListStructure(e){return e.getItems()!==void 0&&e.getValue()===void 0}isImplicitDictionaryStructure(e){return e.getProperties()!==void 0&&e.getValue()===void 0}}const ar=r=>r instanceof c.ZodOptional||r instanceof c.ZodNullable||r instanceof c.ZodReadonly||r instanceof c.ZodBranded||r instanceof c.ZodEffects||r instanceof c.ZodLazy,ur=r=>r instanceof c.ZodString||r instanceof c.ZodNumber||r instanceof c.ZodBoolean||r instanceof c.ZodBigInt;class $t{static convertValue(e,t){var i;const s=(i=e.getType())==null?void 0:i.getBlueId(),n=e.getValue();return u.isNullable(n)?ur(t)&&Be.isValidValueNode(e)?this.getDefaultPrimitiveValue(t):n:Y===s?this.convertFromString(String(n),t):K===s||n instanceof P?this.convertFromBigDecimal(new P(n==null?void 0:n.toString()),t):G===s||n instanceof v?this.convertFromBigInteger(new v(n==null?void 0:n.toString()),t):J===s||typeof n=="boolean"?this.convertFromBoolean(!!n,t):this.convertFromString(String(n),t)}static convertFromString(e,t){if(!t||t instanceof c.ZodString||t instanceof c.ZodEnum||t instanceof c.ZodNativeEnum)return e;if(t instanceof c.ZodNumber)return Number(e);if(t instanceof c.ZodBoolean)return e.toLowerCase()==="true";if(t instanceof c.ZodBigInt)return BigInt(e);throw new Error(`Cannot convert String to ${t._def.typeName}`)}static convertFromBigDecimal(e,t){if(t instanceof c.ZodNumber)return e.toNumber();if(t instanceof c.ZodString)return e.toString();throw new Error(`Cannot convert Number to ${t._def.typeName}`)}static convertFromBigInteger(e,t){if(t instanceof c.ZodNumber)return e.toNumber();if(t instanceof c.ZodBigInt)return BigInt(e.toString());if(t instanceof c.ZodString)return e.toString();throw new Error(`Cannot convert Number to ${t._def.typeName}`)}static convertFromBoolean(e,t){if(!t||t instanceof c.ZodBoolean)return e;if(t instanceof c.ZodString)return e.toString();if(t instanceof c.ZodNumber)return Number(e);if(t instanceof c.ZodBigInt)return BigInt(e);throw new Error(`Cannot convert Boolean to ${t._def.typeName}`)}static getDefaultPrimitiveValue(e){if(!e)return null;if(e instanceof c.ZodNumber)return 0;if(e instanceof c.ZodBoolean)return!1;if(e instanceof c.ZodString)return"";throw new Error(`Unsupported primitive type: ${e._def.typeName}`)}}class cr{convert(e,t){return $t.convertValue(e,t)}}class dr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){return this.convertFields(e,t)}convertFields(e,t){if(t instanceof c.ZodIntersection){const s=t._def.left,n=t._def.right,i=this.convert(e,s),o=this.convert(e,n);return{...i,...o}}if(t instanceof c.ZodUnion)throw new Error("Union not supported");if(t instanceof c.ZodObject)return Object.keys(t.shape).reduce((n,i)=>{const o=e.getProperties(),l=t.shape[i],a=Et(l);if(u.isNonNullable(a)){const g=C.isString(a)?a:i,O=o==null?void 0:o[g],W=O?T.calculateBlueIdSync(O):void 0;return n[i]=W,n}const h=Vt(l);if(u.isNonNullable(h)){const g=o==null?void 0:o[h];return n[i]=g==null?void 0:g.getName(),n}const I=Pt(l);if(u.isNonNullable(I)){const g=o==null?void 0:o[I];return n[i]=g==null?void 0:g.getDescription(),n}if(i==="name"){const g=e.getName();return n[i]=g,n}if(i==="description"){const g=e.getDescription();return n[i]=g,n}const y=o==null?void 0:o[i];if(u.isNullable(y))return n;const f=this.nodeToObjectConverter.convert(y,l);return n[i]=f,n},{});throw new Error("Unknown schema type, "+t._def.typeName)}}class hr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t.element;return s.map(o=>this.nodeToObjectConverter.convert(o,n))}}class pr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t._def.valueType,i=s.map(o=>this.nodeToObjectConverter.convert(o,n));return new Set(i)}}class fr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=t.keySchema,n=t.valueSchema,i=new Map,o=e.getName();u.isNonNullable(o)&&i.set(q,o);const l=e.getDescription();u.isNonNullable(l)&&i.set(X,l);const a=e.getProperties();return u.isNonNullable(a)&&Object.entries(a).forEach(([h,I])=>{const y=new d().setValue(h);y.setType(new d().setBlueId(Y));const f=$t.convertValue(y,s),g=this.nodeToObjectConverter.convert(I,n);i.set(f,g)}),t instanceof c.ZodRecord?Object.fromEntries(i):i}}class gr{convert(e){return b.get(e)}}class yr{convert(e){return b.get(e)}}class mr{constructor(e){this.nodeToObjectConverter=e}convert(e,t){const s=e.getItems();if(!s)return;const n=t.items;return s.map((o,l)=>this.nodeToObjectConverter.convert(o,n[l]))}}const Ir=c.z.union([c.z.literal("ZodString"),c.z.literal("ZodNumber"),c.z.literal("ZodBoolean"),c.z.literal("ZodBigInt"),c.z.literal("ZodArray"),c.z.literal("ZodSet"),c.z.literal("ZodMap"),c.z.literal("ZodRecord"),c.z.literal("ZodObject"),c.z.literal("ZodEnum"),c.z.literal("ZodNativeEnum"),c.z.literal("ZodUnknown"),c.z.literal("ZodAny"),c.z.literal("ZodTuple")]);class br{constructor(e){p(this,"converters",new Map);p(this,"complexObjectConverter");this.nodeToObjectConverter=e,this.registerConverters(),this.complexObjectConverter=new dr(this.nodeToObjectConverter)}registerConverters(){const e=new cr,t=new hr(this.nodeToObjectConverter),s=new mr(this.nodeToObjectConverter),n=new pr(this.nodeToObjectConverter),i=new fr(this.nodeToObjectConverter);this.converters.set("ZodString",e),this.converters.set("ZodNumber",e),this.converters.set("ZodBoolean",e),this.converters.set("ZodBigInt",e),this.converters.set("ZodEnum",e),this.converters.set("ZodNativeEnum",e),this.converters.set("ZodUnknown",new gr),this.converters.set("ZodAny",new yr),this.converters.set("ZodArray",t),this.converters.set("ZodTuple",s),this.converters.set("ZodSet",n),this.converters.set("ZodMap",i),this.converters.set("ZodRecord",i),this.converters.set("ZodObject",this.complexObjectConverter)}getConverter(e){const t=this.getSchemaTypeName(e);return this.converters.get(t)??this.complexObjectConverter}getSchemaTypeName(e){if(ar(e))return e instanceof c.ZodEffects?this.getSchemaTypeName(e.innerType()):e instanceof c.ZodLazy?this.getSchemaTypeName(e.schema):this.getSchemaTypeName(e.unwrap());const t=e._def.typeName;try{return Ir.parse(t)}catch{throw new Error(`Schema type name ${t} is not supported`)}}}class Tr{constructor(e){p(this,"converterFactory");this.typeSchemaResolver=e,this.converterFactory=new br(this)}convert(e,t){var o;const s=(o=this.typeSchemaResolver)==null?void 0:o.resolveSchema(e),n=A.unwrapSchema(t);if(Qe(n))return e;let i=n;return A.checkSchemaExtension(s,n)&&u.isNonNullable(s)&&(i=s),this.convertWithType(e,i)}convertWithType(e,t){return this.converterFactory.getConverter(t).convert(e,t)}}class Lt{reverse(e){const t=new d;return this.reverseNode(t,e,e.getType()),t}reverseNode(e,t,s){this.isIdenticalToType(t,s)||(this.reverseBasicProperties(e,t,s),this.reverseTypeReferences(e,t,s),this.reverseItems(e,t,s),this.reverseProperties(e,t,s))}isIdenticalToType(e,t){return u.isNonNullable(e.getBlueId())&&u.isNonNullable(t==null?void 0:t.getBlueId())&&e.getBlueId()===t.getBlueId()}reverseBasicProperties(e,t,s){const n=t.getValue();u.isNonNullable(n)&&(u.isNullable(s)||u.isNullable(s.getValue()))&&e.setValue(n),u.isNonNullable(t.getName())&&(u.isNullable(s)||t.getName()!==s.getName())&&e.setName(t.getName()),u.isNonNullable(t.getDescription())&&(u.isNullable(s)||t.getDescription()!==s.getDescription())&&e.setDescription(t.getDescription()),u.isNonNullable(t.getBlueId())&&(u.isNullable(s)||t.getBlueId()!==s.getBlueId())&&e.setBlueId(t.getBlueId())}reverseTypeReferences(e,t,s){const n=(i,o)=>{const l=i(t),a=s?i(s):void 0,h=l==null?void 0:l.getBlueId();u.isNonNullable(h)&&(u.isNullable(a==null?void 0:a.getBlueId())||h!==a.getBlueId())&&o(e,new d().setBlueId(h))};n(i=>i.getType(),(i,o)=>i.setType(o)),n(i=>i.getItemType(),(i,o)=>i.setItemType(o)),n(i=>i.getKeyType(),(i,o)=>i.setKeyType(o)),n(i=>i.getValueType(),(i,o)=>i.setValueType(o))}reverseItems(e,t,s){const n=t.getItems();if(u.isNullable(n))return;const i=s==null?void 0:s.getItems(),o=[];if(u.isNonNullable(i)&&i.length>0){const a=T.calculateBlueIdSync(i);o.push(new d().setBlueId(a))}const l=(i==null?void 0:i.length)||0;for(let a=l;a<n.length;a++){const h=new d;this.reverseNode(h,n[a],void 0),o.push(h)}o.length>0&&e.setItems(o)}reverseProperties(e,t,s){const n=t.getProperties();if(u.isNullable(n))return;const i={};for(const[o,l]of Object.entries(n)){const a=this.getInheritedProperty(o,t,s),h=new d;this.reverseNode(h,l,a),Be.isEmptyNode(h)||(i[o]=h)}Object.keys(i).length>0&&e.setProperties(i)}getInheritedProperty(e,t,s){var o,l,a;const n=(o=s==null?void 0:s.getProperties())==null?void 0:o[e],i=(a=(l=t.getType())==null?void 0:l.getProperties())==null?void 0:a[e];if(!(u.isNullable(n)&&u.isNullable(i)))return u.isNullable(n)?i:u.isNullable(i)?n:this.mergeNodes(n,i)}mergeNodes(e,t){const s=e.clone(),n=t.getValue();u.isNonNullable(n)&&s.setValue(n);const i=t.getType();u.isNonNullable(i)&&s.setType(i.clone());const o=t.getItemType();u.isNonNullable(o)&&s.setItemType(o.clone());const l=t.getKeyType();u.isNonNullable(l)&&s.setKeyType(l.clone());const a=t.getValueType();u.isNonNullable(a)&&s.setValueType(a.clone());const h=t.getProperties();if(u.isNonNullable(h)){const y=s.getProperties()||{};for(const[f,g]of Object.entries(h))y[f]=g.clone();s.setProperties(y)}const I=t.getItems();return u.isNonNullable(I)&&s.setItems(I.map(y=>y.clone())),s}}class te extends d{constructor(e){super(e.getName()),this.createFrom(e)}isResolved(){return!0}getMinimalNode(){return new Lt().reverse(this)}getMinimalBlueId(){const e=this.getMinimalNode();return T.calculateBlueIdSync(e)}clone(){const e=super.clone();return new te(e)}createFrom(e){e.getName()!==this.getName()&&this.setName(e.getName()),this.setDescription(e.getDescription()).setType(e.getType()).setItemType(e.getItemType()).setKeyType(e.getKeyType()).setValueType(e.getValueType()).setItems(e.getItems()).setProperties(e.getProperties()).setBlueId(e.getBlueId()).setBlue(e.getBlue()).setInlineValue(e.isInlineValue());const t=e.getValue();t!==void 0&&this.setValue(t)}}class fe{fetchFirstByBlueId(e){const t=this.fetchByBlueId(e);return t&&t.length>0?t[0]:null}}function Nr(r){return new class extends fe{fetchByBlueId(e){return r(e)}}}class vr extends fe{constructor(t){super();p(this,"nodeProviders");this.nodeProviders=t}fetchByBlueId(t){for(const s of this.nodeProviders){const n=s.fetchByBlueId(t);if(n&&n.length>0)return n}return[]}fetchFirstByBlueId(t){for(const s of this.nodeProviders){const n=s.fetchFirstByBlueId(t);if(n)return n}return null}getNodeProviders(){return this.nodeProviders}}const De=k.types.float.options,Br={...De,construct:r=>{const e=r.replace(/_/g,"").toLowerCase();if(!u.isPreciseNumberString(e))return new P(e);if(De.construct)return De.construct(r)}},wr=new k.Type("tag:yaml.org,2002:float",Br),Oe=k.types.int.options,Pr={...Oe,construct:r=>{let e=r;if(e.indexOf("_")!==-1&&(e=e.replace(/_/g,"")),!u.isPreciseNumberString(e))return new v(e);if(Oe.construct)return Oe.construct(r)}},Sr=new k.Type("tag:yaml.org,2002:int",Pr),zt=k.CORE_SCHEMA.extend({implicit:[wr,Sr]}),F=r=>{const e=k.load(r,{schema:zt});return e===void 0?void 0:e},Er=r=>k.dump(r,{schema:zt,replacer:(e,t)=>{if(S(t)){if($(t)){const s=new x(Number.MIN_SAFE_INTEGER.toString()),n=new x(Number.MAX_SAFE_INTEGER.toString());if(t.lt(s)||t.gt(n))return t.toString()}return t.toNumber()}return t}}),Ut=`- type:
|
|
2
2
|
blueId: 27B7fuxQCS1VAptiCPc2RMkKoutP5qxkh3uDxZ7dr6Eo
|
|
3
3
|
mappings:
|
|
4
4
|
Text: F92yo19rCcbBoBSpUA5LRxpfDejJDAaP1PRxxbWAraVP
|
|
@@ -10,18 +10,18 @@
|
|
|
10
10
|
- type:
|
|
11
11
|
blueId: FGYuTXwaoSKfZmpTysLTLsb8WzSqf43384rKZDkXhxD4
|
|
12
12
|
`,Ar=`name: Transformation
|
|
13
|
-
description: TODO`,
|
|
13
|
+
description: TODO`,Vr=`name: Infer Basic Types For Untyped Values
|
|
14
14
|
type:
|
|
15
15
|
blueId: Ct1SGRGw1i47qjzm1ruiUdSZofeV6WevPTGuieVvbRS4
|
|
16
|
-
description: This transformation infers type details for Text, Integer, Number and Boolean.`,
|
|
16
|
+
description: This transformation infers type details for Text, Integer, Number and Boolean.`,Cr=`name: Replace Inline Types with BlueIds
|
|
17
17
|
type:
|
|
18
18
|
blueId: Ct1SGRGw1i47qjzm1ruiUdSZofeV6WevPTGuieVvbRS4
|
|
19
|
-
description: This transformation replaces`,Dr=[
|
|
19
|
+
description: This transformation replaces`,Dr=[Ut,Ar,Vr,Cr];class Or extends fe{constructor(){super();p(this,"blueIdToNodesMap",new Map);this.load()}fetchByBlueId(t){return this.blueIdToNodesMap.get(t)||[]}load(){for(const t of Dr){const s=F(t);if(s===void 0){console.error(`This content file is not valid YAML: ${t}`);continue}if(Array.isArray(s)){const n=s.map(o=>m.deserialize(o)),i=T.calculateBlueIdSync(n);this.blueIdToNodesMap.set(i,n)}else{const n=m.deserialize(s),i=T.calculateBlueIdSync(n);this.blueIdToNodesMap.set(i,[n])}}}}const be=class be extends fe{constructor(){super();p(this,"nodeProvider");this.nodeProvider=new Or}fetchByBlueId(t){return this.nodeProvider.fetchByBlueId(t)}};p(be,"INSTANCE",new be);let Le=be;class Me{constructor(e,t,s){this.blueId=e,this.content=t,this.isMultipleDocuments=s}}class j{static parseAndCalculateBlueId(e,t){let s;try{const l=F(e);if(l===void 0)throw new Error;s=l}catch{throw new Error("Failed to parse content as YAML or JSON")}let n,i;const o=Array.isArray(s)&&s.length>1;if(o){const l=s.map(a=>{const h=m.deserialize(a);return t(h)});n=T.calculateBlueIdSync(l),i=l.map(a=>b.get(a))}else{const l=m.deserialize(s),a=t(l);n=T.calculateBlueIdSync(a),i=b.get(a)}return new Me(n,i,o)}static parseAndCalculateBlueIdForNode(e,t){const s=t(e),n=T.calculateBlueIdSync(s),i=b.get(s);return new Me(n,i,!1)}static parseAndCalculateBlueIdForNodeList(e,t){if(!e||e.length===0)throw new Error("List of nodes cannot be null or empty");const s=e.map(t),n=T.calculateBlueIdSync(s),i=s.map(l=>b.get(l)),o=e.length>1;return new Me(n,i,o)}static resolveThisReferences(e,t,s){return this.resolveThisReferencesRecursive(e,t,s)}static resolveThisReferencesRecursive(e,t,s){if(e&&typeof e=="object"&&!Array.isArray(e)){const n={};for(const[i,o]of Object.entries(e))typeof o=="string"?this.THIS_REFERENCE_PATTERN.test(o)?n[i]=this.resolveThisReference(o,t,s):n[i]=o:o&&typeof o=="object"?n[i]=this.resolveThisReferencesRecursive(o,t,s):n[i]=o;return n}else if(Array.isArray(e))return e.map(n=>typeof n=="string"?this.THIS_REFERENCE_PATTERN.test(n)?this.resolveThisReference(n,t,s):n:n&&typeof n=="object"?this.resolveThisReferencesRecursive(n,t,s):n);return e}static resolveThisReference(e,t,s){if(s){if(!e.startsWith("this#"))throw new Error("For multiple documents, 'this' references must include an index (e.g., 'this#0')");return t+e.substring(4)}else{if(e==="this")return t;throw new Error("For a single document, only 'this' is allowed as a reference, not 'this#<id>'")}}}p(j,"THIS_REFERENCE_PATTERN",/^this(#\d+)?$/);class Mr extends fe{fetchByBlueId(e){const t=e.split("#")[0],s=this.fetchContentByBlueId(t);if(s==null)return null;const n=Array.isArray(s)&&s.length>1,i=j.resolveThisReferences(s,t,n);if(e.includes("#")){const o=e.split("#");if(o.length>1){const l=parseInt(o[1]);if(Array.isArray(i)&&l<i.length){const a=i[l],h=m.deserialize(a);return h.setBlueId(e),[h]}else if(l===0){const a=m.deserialize(i);return a.setBlueId(e),[a]}else return null}}if(Array.isArray(i))return i.map(o=>m.deserialize(o));{const o=m.deserialize(i);return o.setBlueId(t),[o]}}}class Zt extends Mr{constructor(){super(...arguments);p(this,"nameToBlueIdsMap",new Map)}findNodeByName(t){const s=this.nameToBlueIdsMap.get(t);if(!s)return;if(s.length>1)throw new Error(`Multiple nodes found with name: ${t}`);const n=this.fetchByBlueId(s[0]);return n&&n.length>0?n[0]:void 0}findAllNodesByName(t){const s=this.nameToBlueIdsMap.get(t);if(!s)return[];const n=[];for(const i of s){const o=this.fetchByBlueId(i);o&&n.push(...o)}return n}addToNameMap(t,s){this.nameToBlueIdsMap.set(t,[...this.nameToBlueIdsMap.get(t)||[],s])}}const _t=r=>r instanceof d||Array.isArray(r)&&r.every(e=>e instanceof d)?r:C.isArray(r)?r.map(e=>m.deserialize(e)):m.deserialize(r),kt=async r=>{const e=_t(r);return T.calculateBlueId(e)},Fr=r=>{const e=_t(r);return T.calculateBlueIdSync(e)},ze=async r=>{if(pt(r))return r;try{const e=ce.parse(r),t=await kt(e);return{...r,blueId:t}}catch(e){throw new Error(`Failed enriching object with Blue ID: ${e}`)}},Rr=r=>r==null?void 0:r.items,jr=r=>r==null?void 0:r.value,xr=r=>u.isNullable(r)?{}:C.omit(r,cs),$r=r=>gt(r)?r.type.name??null:yt(r)?C.pascal(typeof r.value):ft(r)?"List":null,Yt=r=>u.isNonNullable(r)&&Object.keys(C.omit(r,["blueId"])).length>0,Lr=r=>{try{const e=m.deserialize(r),t=b.get(e);return Q.parse(t)}catch(e){throw new Error(`Failed transforming JSON-like value to BlueObject: ${e}`)}},Ue=async r=>{const{resolveFunction:e,signal:t=new AbortController().signal,omitItems:s}=r,n=r.count??r.items.length;let i=await C.map(r.items,async l=>await ze(l));const o=Math.max((i==null?void 0:i.length)-n,0);for(let l=i.length-1;l>=o;l--)if(!Yt(i[l])){const a=await e(i[l],{signal:t});if(Array.isArray(a))return Ue({...r,items:[...i.slice(0,l),...a,...i.slice(l+1)]});const h=await ze(a);if(s!=null&&s.includes(h.blueId))return Ue({...r,items:[...i.slice(0,l),...i.slice(l+1)]});i=[...i.slice(0,l),h,...i.slice(l+1)]}return i};function le(r){try{const e=new URL(r);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}class zr{process(e){return V.transform(e,this.inferType.bind(this))}inferType(e){const t=e.getType(),s=e.getValue();return u.isNullable(t)&&u.isNonNullable(s)&&(typeof s=="string"?e.setType(new d().setBlueId(Y)):typeof s=="bigint"||$(s)?e.setType(new d().setBlueId(G)):ye(s)?e.setType(new d().setBlueId(K)):typeof s=="boolean"&&e.setType(new d().setBlueId(J))),e}}const ae=class ae{constructor(e){p(this,"mappings",new Map);if(e instanceof d){const s=e.getProperties();if(s&&s[ae.MAPPINGS]){const i=s[ae.MAPPINGS].getProperties();i&&Object.entries(i).forEach(([o,l])=>{const a=l.getValue();typeof a=="string"&&this.mappings.set(o,a)})}}else this.mappings=e}process(e){return V.transform(e,this.transformNode.bind(this))}transformNode(e){const t=e.clone();return this.transformTypeField(t,t.getType()),this.transformTypeField(t,t.getItemType()),this.transformTypeField(t,t.getKeyType()),this.transformTypeField(t,t.getValueType()),t}transformTypeField(e,t){if(t&&t.isInlineValue()&&t.getValue()!==void 0){const s=String(t.getValue());if(this.mappings.has(s)){const n=this.mappings.get(s);if(n){const i=new d().setBlueId(n);t===e.getType()?e.setType(i):t===e.getItemType()?e.setItemType(i):t===e.getKeyType()?e.setKeyType(i):t===e.getValueType()&&e.setValueType(i)}}}}};p(ae,"MAPPINGS","mappings");let Ze=ae;class Ur{process(e){return V.transform(e,this.validateNode.bind(this)),e}validateNode(e){return this.validateTypeField(e,e.getType(),"type"),this.validateTypeField(e,e.getItemType(),"itemType"),this.validateTypeField(e,e.getKeyType(),"keyType"),this.validateTypeField(e,e.getValueType(),"valueType"),e}validateTypeField(e,t,s){if(t&&t.isInlineValue()&&t.getValue()!==void 0){const n=String(t.getValue());throw new Error(`Unknown type "${n}" found in ${s} field. No BlueId mapping exists for this type.`)}}}class tt{constructor(e,t){p(this,"nodeProvider");p(this,"strategy");this.nodeProvider=de.wrap(e),this.strategy=t||"THROW_EXCEPTION"}extend(e,t){this.extendNode(e,t,"")}extendNode(e,t,s,n=!1){if(!n){if(!t.shouldExtendPathSegment(s,e))return;t.enterPathSegment(s,e)}try{const i=e.getBlueId();if(i&&!he.includes(i)){const f=this.fetchNode(e);if(f&&f.length>0)if(f.length===1){const g=f[0];this.mergeNodes(e,g)}else{const g=f.map(W=>W.clone()),O=new d().setItems(g);this.mergeNodes(e,O)}}const o=e.getType();o&&this.extendNode(o,t,"type",!0);const l=e.getItemType();l&&this.extendNode(l,t,"itemType",!0);const a=e.getKeyType();a&&this.extendNode(a,t,"keyType",!0);const h=e.getValueType();h&&this.extendNode(h,t,"valueType",!0);const I=e.getProperties();I&&Object.entries(I).forEach(([f,g])=>{this.extendNode(g,t,f,!1)});const y=e.getItems();if(y&&y.length>0){this.reconstructList(y);for(let f=0;f<y.length;f++)this.extendNode(y[f],t,String(f),!1)}}finally{n||t.exitPathSegment()}}reconstructList(e){for(;e.length>0;){const t=e[0],s=t==null?void 0:t.getBlueId();if(!s)break;const n=this.nodeProvider.fetchByBlueId(s);if(!n||n.length===1)break;e.shift(),e.unshift(...n)}}fetchNode(e){const t=e.getBlueId();if(!t){if(this.strategy==="RETURN_EMPTY")return null;throw new Error(`No blueId found for node: ${e.getName()}`)}const s=this.nodeProvider.fetchByBlueId(t);if(!s||s.length===0){if(this.strategy==="RETURN_EMPTY")return null;throw new Error(`No content found for blueId: ${e.getBlueId()}`)}return s}mergeNodes(e,t){e.setName(t.getName()),e.setDescription(t.getDescription()),e.setType(t.getType()),e.setItemType(t.getItemType()),e.setKeyType(t.getKeyType()),e.setValueType(t.getValueType());const s=t.getValue();u.isNonNullable(s)&&e.setValue(s),e.setItems(t.getItems()),e.setProperties(t.getProperties())}}class Kt{constructor(){p(this,"blueIdsCollections",[])}initialize(...e){this.blueIdsCollections=[...e]}registerBlueIds(...e){this.blueIdsCollections.push(...e)}generateMappingsYaml(e="27B7fuxQCS1VAptiCPc2RMkKoutP5qxkh3uDxZ7dr6Eo"){const t={};for(const n of this.blueIdsCollections)Object.assign(t,n);const s=Object.entries(t).map(([n,i])=>` ${n}: ${i}`).join(`
|
|
20
20
|
`);return`- type:
|
|
21
21
|
blueId: ${e}
|
|
22
22
|
mappings:
|
|
23
|
-
${s}`}getAllBlueIds(){const e={};for(const t of this.blueIdsCollections)Object.assign(e,t);return e}getAllBlueIdNames(){return Object.keys(this.getAllBlueIds())}clear(){this.blueIdsCollections=[]}getCollectionCount(){return this.blueIdsCollections.length}getTotalBlueIdCount(){return Object.keys(this.getAllBlueIds()).length}}const
|
|
23
|
+
${s}`}getAllBlueIds(){const e={};for(const t of this.blueIdsCollections)Object.assign(e,t);return e}getAllBlueIdNames(){return Object.keys(this.getAllBlueIds())}clear(){this.blueIdsCollections=[]}getCollectionCount(){return this.blueIdsCollections.length}getTotalBlueIdCount(){return Object.keys(this.getAllBlueIds()).length}}const Te=class Te{constructor(e={}){p(this,"processorProvider");p(this,"nodeProvider");p(this,"defaultSimpleBlue",null);p(this,"blueIdsMappingGenerator");const{nodeProvider:t,processorProvider:s,blueIdsMappingGenerator:n}=e;if(!t)throw new Error("NodeProvider is required");this.nodeProvider=de.wrap(t),this.processorProvider=s||Te.getStandardProvider(),this.blueIdsMappingGenerator=n||new Kt,this.loadDefaultSimpleBlue()}preprocess(e){return this.preprocessWithOptions(e,null)}preprocessWithDefaultBlue(e){return this.preprocessWithOptions(e,this.defaultSimpleBlue)}preprocessWithOptions(e,t){let s=e.clone(),n=s.getBlue();if(!n&&t&&(n=t.clone()),n){new tt(this.nodeProvider).extend(n,Pe.withSinglePath("/*"));const i=n.getItems();if(i&&i.length>0){for(const o of i){const l=this.processorProvider.getProcessor(o);if(l)s=l.process(s);else throw new Error(`No processor found for transformation: ${o}`)}s.setBlue(void 0)}s=new Ur().process(s)}return s}static getStandardProvider(){return{getProcessor(e){var i;const t="27B7fuxQCS1VAptiCPc2RMkKoutP5qxkh3uDxZ7dr6Eo",s="FGYuTXwaoSKfZmpTysLTLsb8WzSqf43384rKZDkXhxD4",n=(i=e.getType())==null?void 0:i.getBlueId();if(t===n)return new Ze(e);if(s===n)return new zr}}}enrichDefaultBlue(e){const t=this.blueIdsMappingGenerator.generateMappingsYaml();return`
|
|
24
24
|
${e}
|
|
25
25
|
${t}
|
|
26
|
-
`}loadDefaultSimpleBlue(){const e=this.enrichDefaultBlue(
|
|
27
|
-
${n.message}`):n}else throw oe(t)?new Error(`UrlContentFetcher not provided for URL: ${t}`):new Error(`Invalid blue value: ${t}`)}return e}getBlueNodeValue(e){const t=e.getBlue(),s=t==null?void 0:t.getValue();return s&&typeof s=="string"?s:null}handleAliasValue(e,t){return e.setBlue(new d().setBlueId(this.preprocessingAliases.get(t))),e}handleBlueId(e,t){return e.setBlue(new d().setBlueId(t)),e}async fetchFromUrl(e){if(!this.urlContentFetcher)throw new Error(`UrlContentFetcher not provided for URL: ${e}`);return await this.urlContentFetcher.fetchAndCache(e)}getPreprocessingAliases(){return new Map(this.preprocessingAliases)}setPreprocessingAliases(e){return this.preprocessingAliases=new Map(e),this}addPreprocessingAliases(e){return e.forEach((t,s)=>{this.preprocessingAliases.set(s,t)}),this}setUrlContentFetcher(e){return this.urlContentFetcher=e,this}getUrlContentFetcher(){return this.urlContentFetcher}}const kr={fetchUrl:async r=>{throw new Error(`You must provide a custom UrlFetchStrategy to fetch content from URL: ${r}`)}};class Yr{constructor(e){p(this,"cache",new Map);p(this,"fetchStrategy");p(this,"enabled",!1);p(this,"allowedDomains",[]);this.fetchStrategy=e||kr}validateUrl(e){if(!oe(e))throw new Error(`Invalid URL: ${e}`);return!0}isDomainAllowed(e){if(this.allowedDomains.length===0)return!0;try{const t=new URL(e);return this.allowedDomains.some(s=>t.hostname===s||t.hostname.endsWith(`.${s}`))}catch{return!1}}getFromCache(e){try{return this.validateUrl(e),this.cache.get(e)||[]}catch{return[]}}async fetchAndCache(e){if(this.validateUrl(e),!this.enabled)throw new Error("URL fetching is disabled. Enable it using the enableFetching method.");if(!this.isDomainAllowed(e))throw new Error(`Domain not allowed for URL: ${e}.`);let t;try{t=await this.fetchStrategy.fetchUrl(e)}catch(l){throw new Error(`Error fetching from URL: ${e}`,{cause:l})}const{data:s,contentType:n}=t;let i;if(n.includes("application/json")||n.includes("text/yaml")||n.includes("application/yaml")||n.includes("text/plain"))i=F(s);else throw new Error(`Unsupported content type from URL: ${n}`);if(i===void 0)throw new Error(`Failed to parse content from URL: ${e}`);let o;return Array.isArray(i)?o=i.map(l=>y.deserialize(l)):o=[y.deserialize(i)],this.cache.set(e,o),o}prefetchUrl(e,t){try{this.validateUrl(e),this.cache.set(e,t)}catch{}}clearCache(){this.cache.clear()}setFetchStrategy(e){return this.fetchStrategy=e,this}getFetchStrategy(){return this.fetchStrategy}enableFetching(){return this.enabled=!0,this.allowedDomains=[],this}enableFetchingForDomains(e){return this.enabled=!0,this.allowedDomains=[...e],this}disableFetching(){return this.enabled=!1,this}isFetchingEnabled(){return this.enabled}getAllowedDomains(){return[...this.allowedDomains]}allowDomain(e){return this.allowedDomains.includes(e)||this.allowedDomains.push(e),this}disallowDomain(e){return this.allowedDomains=this.allowedDomains.filter(t=>t!==e),this}clearAllowedDomains(){return this.allowedDomains=[],this}}class Yt{reverse(e){const t=new d;return this.reverseNode(t,e,e.getType()),t}reverseNode(e,t,s){this.isIdenticalToType(t,s)||(this.reverseBasicProperties(e,t,s),this.reverseTypeReferences(e,t,s),this.reverseItems(e,t,s),this.reverseProperties(e,t,s))}isIdenticalToType(e,t){return c.isNonNullable(e.getBlueId())&&c.isNonNullable(t==null?void 0:t.getBlueId())&&e.getBlueId()===t.getBlueId()}reverseBasicProperties(e,t,s){const n=t.getValue();c.isNonNullable(n)&&(c.isNullable(s)||c.isNullable(s.getValue()))&&e.setValue(n),c.isNonNullable(t.getName())&&(c.isNullable(s)||t.getName()!==s.getName())&&e.setName(t.getName()),c.isNonNullable(t.getDescription())&&(c.isNullable(s)||t.getDescription()!==s.getDescription())&&e.setDescription(t.getDescription()),c.isNonNullable(t.getBlueId())&&(c.isNullable(s)||t.getBlueId()!==s.getBlueId())&&e.setBlueId(t.getBlueId())}reverseTypeReferences(e,t,s){const n=(i,o)=>{const l=i(t),a=s?i(s):void 0,h=l==null?void 0:l.getBlueId();c.isNonNullable(h)&&(c.isNullable(a==null?void 0:a.getBlueId())||h!==a.getBlueId())&&o(e,new d().setBlueId(h))};n(i=>i.getType(),(i,o)=>i.setType(o)),n(i=>i.getItemType(),(i,o)=>i.setItemType(o)),n(i=>i.getKeyType(),(i,o)=>i.setKeyType(o)),n(i=>i.getValueType(),(i,o)=>i.setValueType(o))}reverseItems(e,t,s){const n=t.getItems();if(c.isNullable(n))return;const i=s==null?void 0:s.getItems(),o=[];if(c.isNonNullable(i)&&i.length>0){const a=N.calculateBlueIdSync(i);o.push(new d().setBlueId(a))}const l=(i==null?void 0:i.length)||0;for(let a=l;a<n.length;a++){const h=new d;this.reverseNode(h,n[a],void 0),o.push(h)}o.length>0&&e.setItems(o)}reverseProperties(e,t,s){const n=t.getProperties();if(c.isNullable(n))return;const i={};for(const[o,l]of Object.entries(n)){const a=this.getInheritedProperty(o,t,s),h=new d;this.reverseNode(h,l,a),ve.isEmptyNode(h)||(i[o]=h)}Object.keys(i).length>0&&e.setProperties(i)}getInheritedProperty(e,t,s){var o,l,a;const n=(o=s==null?void 0:s.getProperties())==null?void 0:o[e],i=(a=(l=t.getType())==null?void 0:l.getProperties())==null?void 0:a[e];if(!(c.isNullable(n)&&c.isNullable(i)))return c.isNullable(n)?i:c.isNullable(i)?n:this.mergeNodes(n,i)}mergeNodes(e,t){const s=e.clone(),n=t.getValue();c.isNonNullable(n)&&s.setValue(n);const i=t.getType();c.isNonNullable(i)&&s.setType(i.clone());const o=t.getItemType();c.isNonNullable(o)&&s.setItemType(o.clone());const l=t.getKeyType();c.isNonNullable(l)&&s.setKeyType(l.clone());const a=t.getValueType();c.isNonNullable(a)&&s.setValueType(a.clone());const h=t.getProperties();if(c.isNonNullable(h)){const m=s.getProperties()||{};for(const[f,g]of Object.entries(h))m[f]=g.clone();s.setProperties(m)}const I=t.getItems();return c.isNonNullable(I)&&s.setItems(I.map(m=>m.clone())),s}}class Pe extends d{constructor(e){super(e.getName()),this.createFrom(e)}isResolved(){return!0}getMinimalNode(){return new Yt().reverse(this)}getMinimalBlueId(){const e=this.getMinimalNode();return N.calculateBlueIdSync(e)}clone(){const e=super.clone();return new Pe(e)}createFrom(e){e.getName()!==this.getName()&&this.setName(e.getName()),this.setDescription(e.getDescription()).setType(e.getType()).setItemType(e.getItemType()).setKeyType(e.getKeyType()).setValueType(e.getValueType()).setItems(e.getItems()).setProperties(e.getProperties()).setBlueId(e.getBlueId()).setBlue(e.getBlue()).setInlineValue(e.isInlineValue());const t=e.getValue();t!==void 0&&this.setValue(t)}}class Jt{resolveWithoutLimits(e){return this.resolve(e,z)}}class Kt extends Jt{constructor(t,s){super();p(this,"mergingProcessor");p(this,"nodeProvider");this.mergingProcessor=t,this.nodeProvider=ue.wrap(s)}merge(t,s,n){if(c.isNonNullable(s.getBlue()))throw new Error('Document contains "blue" attribute. Preprocess document before merging.');let i=t;const o=s.getType();if(c.isNonNullable(o)){const l=o.clone();c.isNonNullable(l.getBlueId())&&new tt(this.nodeProvider).extend(l,we.withSinglePath("/"));const a=this.resolve(l,n),h=s.clone().setType(a);return i=this.merge(i,l,n),this.mergeObject(i,h,n)}return this.mergeObject(i,s,n)}mergeObject(t,s,n){let i=this.mergingProcessor.process(t,s,this.nodeProvider);const o=s.getItems();c.isNonNullable(o)&&(i=this.mergeChildren(i,o,n));const l=s.getProperties();return c.isNonNullable(l)&&Object.entries(l).forEach(([a,h])=>{n.shouldMergePathSegment(a,h)&&(n.enterPathSegment(a,h),i=this.mergeProperty(i,a,h,n),n.exitPathSegment())}),c.isNonNullable(s.getBlueId())&&(i=i.clone().setBlueId(s.getBlueId())),this.mergingProcessor.postProcess&&(i=this.mergingProcessor.postProcess(i,s,this.nodeProvider)),i}mergeChildren(t,s,n){const i=t.getItems();if(c.isNullable(i)){const l=s.filter((a,h)=>n.shouldMergePathSegment(String(h),a)).map(a=>{n.enterPathSegment(String(s.indexOf(a)),a);const h=this.resolve(a,n);return n.exitPathSegment(),h});return t.clone().setItems(l)}else if(s.length<i.length)throw new Error(`Subtype of element must not have more items (${i.length}) than the element itself (${s.length}).`);const o=[...i];for(let l=0;l<s.length;l++){if(!n.shouldMergePathSegment(String(l),s[l]))continue;if(n.enterPathSegment(String(l),s[l]),l>=o.length){o.push(s[l]),n.exitPathSegment();continue}const a=N.calculateBlueIdSync(s[l]),h=N.calculateBlueIdSync(o[l]);if(a!==h)throw new Error(`Mismatched items at index ${l}: source item has blueId '${a}', but target item has blueId '${h}'.`);n.exitPathSegment()}return t.clone().setItems(o)}mergeProperty(t,s,n,i){const o=this.resolve(n,i),l=t.clone();c.isNullable(l.getProperties())&&l.setProperties({});const a=l.getProperties()[s];return a===void 0?l.getProperties()[s]=o:l.getProperties()[s]=this.mergeObject(a,o,i),l}resolve(t,s){const n=new d,o=this.merge(n,t,s).clone().setName(t.getName()).setDescription(t.getDescription()).setBlueId(t.getBlueId());return new Pe(o)}}class Gt{constructor(e){p(this,"mergingProcessors");this.mergingProcessors=e}process(e,t,s){return this.mergingProcessors.reduce((n,i)=>i.process(n,t,s),e)}postProcess(e,t,s){return this.mergingProcessors.reduce((n,i)=>i.postProcess?i.postProcess(n,t,s):n,e)}}class Wt{process(e,t){const s=t.getValue();if(c.isNonNullable(s)){const n=e.getValue();if(c.isNullable(n))return e.clone().setValue(s);if(!Jr(s,n))throw new Error(`Node values conflict. Source node value: ${s}, target node value: ${n}`)}return e}}const Jr=(r,e)=>$(r)&&$(e)||ge(r)&&ge(e)?r.eq(e):r===e;class Ht{process(e,t,s){const n=e.getType(),i=t.getType();let o=e;if(n===void 0)o=e.clone().setType(i);else if(i!==void 0){if(!S(i,n,s)){const a=b.get(i),h=b.get(n);throw new Error(`The source type '${JSON.stringify(a)}' is not a subtype of the target type '${JSON.stringify(h)}'.`)}o=e.clone().setType(i)}return o}}class qt{process(e,t,s){if(t.getItemType()!==void 0&&!Rt(t.getType()))throw new Error("Source node with itemType must have a List type");const n=e.getItemType(),i=t.getItemType();let o=e;if(n===void 0)i!==void 0&&(o=e.clone().setItemType(i));else if(i!==void 0){if(!S(i,n,s)){const I=b.get(i),m=b.get(n);throw new Error(`The source item type '${JSON.stringify(I)}' is not a subtype of the target item type '${JSON.stringify(m)}'.`)}o=e.clone().setItemType(i)}const l=o.getItemType(),a=t.getItems();if(l!==void 0&&a!==void 0)for(const h of a){const I=h.getType();if(I!==void 0&&!S(I,l,s)){const m=b.get(I),f=b.get(l);throw new Error(`Item of type '${JSON.stringify(m)}' is not a subtype of the list's item type '${JSON.stringify(f)}'.`)}}return o}}class Xt{process(e,t,s){if((t.getKeyType()!==void 0||t.getValueType()!==void 0)&&!jt(t.getType()))throw new Error("Source node with keyType or valueType must have a Dictionary type");let n=this.processKeyType(e,t,s);n=this.processValueType(n,t,s);const i=n.getKeyType(),o=n.getValueType(),l=t.getProperties();return(i!==void 0||o!==void 0)&&l!==void 0&&Object.entries(l).forEach(([a,h])=>{i!==void 0&&this.validateKeyType(a,i,s),o!==void 0&&this.validateValueType(h,o,s)}),n}processKeyType(e,t,s){const n=e.getKeyType(),i=t.getKeyType();if(n===void 0){if(i!==void 0)return this.validateBasicKeyType(i,s),e.clone().setKeyType(i)}else if(i!==void 0){if(this.validateBasicKeyType(i,s),!S(i,n,s)){const l=b.get(i),a=b.get(n);throw new Error(`The source key type '${JSON.stringify(l)}' is not a subtype of the target key type '${JSON.stringify(a)}'.`)}return e.clone().setKeyType(i)}return e}processValueType(e,t,s){const n=e.getValueType(),i=t.getValueType();if(n===void 0){if(i!==void 0)return e.clone().setValueType(i)}else if(i!==void 0){if(!S(i,n,s)){const l=b.get(i),a=b.get(n);throw new Error(`The source value type '${JSON.stringify(l)}' is not a subtype of the target value type '${JSON.stringify(a)}'.`)}return e.clone().setValueType(i)}return e}validateBasicKeyType(e,t){if(!er(e,t))throw new Error("Dictionary key type must be a basic type")}validateKeyType(e,t,s){if(!tr(t,s))if(sr(t,s)){const n=Number.parseInt(e,10);if(Number.isNaN(n)||n.toString()!==e)throw new Error(`Key '${e}' is not a valid Integer.`)}else if(rr(t,s)){const n=Number.parseFloat(e);if(Number.isNaN(n))throw new Error(`Key '${e}' is not a valid Number.`)}else if(nr(t,s)){if(e.toLowerCase()!=="true"&&e.toLowerCase()!=="false")throw new Error(`Key '${e}' is not a valid Boolean.`)}else throw new Error(`Unsupported key type: ${t.getName()||"unknown"}`)}validateValueType(e,t,s){const n=e.getType();if(n!==void 0&&!S(n,t,s)){const i=b.get(n),o=b.get(t);throw new Error(`Value of type '${JSON.stringify(i)}' is not a subtype of the dictionary's value type '${JSON.stringify(o)}'.`)}}}class Qt{process(e){return e}postProcess(e,t,s){const n=e.getType();if(n!==void 0&&ir(n,s)){const i=e.getItems(),o=e.getProperties();if(i!==void 0&&i.length>0||o!==void 0&&Object.keys(o).length>0){const l=or(n,s),a=n.getName()||"unknown";throw new Error(`Node of type "${a}" (which extends basic type "${l}") must not have items, properties or contracts.`)}}return e}}class es{process(e,t){let s=e;const n=t.getName(),i=e.getName();n!==void 0&&i===void 0&&(s=s.clone().setName(n));const o=t.getDescription(),l=s.getDescription();return o!==void 0&&l===void 0&&(s=s.clone().setDescription(o)),s}}const Kr=Object.freeze(Object.defineProperty({__proto__:null,BasicTypesVerifier:Qt,DictionaryProcessor:Xt,ListProcessor:qt,MetadataPropagator:es,SequentialMergingProcessor:Gt,TypeAssigner:Ht,ValuePropagator:Wt},Symbol.toStringTag,{value:"Module"}));function Gr(){return new Gt([new Wt,new Ht,new qt,new Xt,new es,new Qt])}class Wr{constructor(e={}){p(this,"nodeProvider");p(this,"typeSchemaResolver");p(this,"blueDirectivePreprocessor");p(this,"urlContentFetcher");p(this,"blueIdsMappingGenerator");p(this,"globalLimits",z);p(this,"mergingProcessor");p(this,"repositories");p(this,"prepareForBlueIdCalculation",async e=>e instanceof d||Array.isArray(e)&&e.every(t=>t instanceof d)?e:Array.isArray(e)?await Promise.all(e.map(s=>this.jsonValueToNodeAsync(s))):this.jsonValueToNodeAsync(e));p(this,"calculateBlueId",async e=>{const t=await this.prepareForBlueIdCalculation(e);return N.calculateBlueId(t)});p(this,"prepareForBlueIdCalculationSync",e=>e instanceof d||Array.isArray(e)&&e.every(t=>t instanceof d)?e:Array.isArray(e)?e.map(t=>this.jsonValueToNode(t)):this.jsonValueToNode(e));var a;const{nodeProvider:t,typeSchemaResolver:s=null,urlFetchStrategy:n,repositories:i,mergingProcessor:o}=e;this.repositories=i;const l=Tr(()=>[]);if(this.nodeProvider=ue.wrap(t||l,i),this.typeSchemaResolver=s??new Ft([]),this.mergingProcessor=o??Gr(),this.urlContentFetcher=new Yr(n),this.blueDirectivePreprocessor=new _r(void 0,this.urlContentFetcher),this.blueIdsMappingGenerator=new kt,i)for(const{schemas:h,blueIds:I}of i)(a=this.typeSchemaResolver)==null||a.registerSchemas(h),this.blueIdsMappingGenerator.registerBlueIds(I)}nodeToJson(e,t="official"){return b.get(e,t)}nodeToSchemaOutput(e,t){return new Nr(this.typeSchemaResolver).convert(e,t)}resolve(e,t=z){const s=this.combineWithGlobalLimits(t);return new Kt(this.mergingProcessor,this.nodeProvider).resolve(e,s)}reverse(e){return new Yt().reverse(e)}extend(e,t){const s=this.combineWithGlobalLimits(t);new tt(this.nodeProvider).extend(e,s)}jsonValueToNode(e){return this.preprocess(y.deserialize(e))}async jsonValueToNodeAsync(e){return this.preprocessAsync(y.deserialize(e))}yamlToNode(e){const t=F(e);if(!t)throw new Error("Failed to parse YAML to JSON");return this.jsonValueToNode(t)}async yamlToNodeAsync(e){const t=F(e);if(!t)throw new Error("Failed to parse YAML to JSON");return this.jsonValueToNodeAsync(t)}calculateBlueIdSync(e){const t=this.prepareForBlueIdCalculationSync(e);return N.calculateBlueIdSync(t)}addPreprocessingAliases(e){this.blueDirectivePreprocessor.addPreprocessingAliases(e)}preprocess(e){const t=this.blueDirectivePreprocessor.process(e);return new te({nodeProvider:this.nodeProvider,blueIdsMappingGenerator:this.blueIdsMappingGenerator}).preprocessWithDefaultBlue(t)}async preprocessAsync(e){const t=await this.blueDirectivePreprocessor.processAsync(e);return new te({nodeProvider:this.nodeProvider,blueIdsMappingGenerator:this.blueIdsMappingGenerator}).preprocessWithDefaultBlue(t)}transform(e,t){return D.transform(e,t)}getNodeProvider(){return this.nodeProvider}setNodeProvider(e){return this.nodeProvider=ue.wrap(e,this.repositories),this}getTypeSchemaResolver(){return this.typeSchemaResolver}setTypeSchemaResolver(e){return this.typeSchemaResolver=e,this}getUrlContentFetcher(){return this.urlContentFetcher}setUrlFetchStrategy(e){return this.urlContentFetcher.setFetchStrategy(e),this}enablePreprocessingDirectivesFetchForUrls(){return this.urlContentFetcher.enableFetching(),this}enablePreprocessingDirectivesFetchForDomains(e){return this.urlContentFetcher.enableFetchingForDomains(e),this}allowUrlFetchingForDomain(e){return this.urlContentFetcher.allowDomain(e),this}disallowUrlFetchingForDomain(e){return this.urlContentFetcher.disallowDomain(e),this}getAllowedUrlFetchingDomains(){return this.urlContentFetcher.getAllowedDomains()}disablePreprocessingDirectivesFetchForUrls(){return this.urlContentFetcher.disableFetching(),this}isPreprocessingDirectivesFetchForUrlsEnabled(){return this.urlContentFetcher.isFetchingEnabled()}getPreprocessingAliases(){return this.blueDirectivePreprocessor.getPreprocessingAliases()}setPreprocessingAliases(e){return this.blueDirectivePreprocessor.setPreprocessingAliases(e),this}registerBlueIds(...e){return this.blueIdsMappingGenerator.registerBlueIds(...e),this}getAllRegisteredBlueIds(){return this.blueIdsMappingGenerator.getAllBlueIds()}getAllBlueIdNames(){return this.blueIdsMappingGenerator.getAllBlueIdNames()}getBlueIdsMappingGenerator(){return this.blueIdsMappingGenerator}isTypeOf(e,t,s){return A.isTypeOf(e,t,{checkSchemaExtensions:s==null?void 0:s.checkSchemaExtensions,typeSchemaResolver:this.typeSchemaResolver})}isTypeOfNode(e,t){return new lr(this).matchesType(e,t,this.globalLimits)}setGlobalLimits(e){return this.globalLimits=e??z,this}getGlobalLimits(){return this.globalLimits}combineWithGlobalLimits(e){return this.globalLimits==z?e:e==z?this.globalLimits:Se.of(this.globalLimits,e)}}class Hr extends zt{constructor(t=[]){super();p(this,"blueIdToContentMap",new Map);p(this,"blueIdToMultipleDocumentsMap",new Map);p(this,"preprocessor");const s=new te({nodeProvider:this});this.preprocessor=n=>s.preprocessWithDefaultBlue(n),t.forEach(n=>this.processNode(n))}processNode(t){ve.hasItemsOnly(t)?this.processNodeWithItems(t):this.processSingleNode(t)}processSingleNode(t){const s=j.parseAndCalculateBlueIdForNode(t,this.preprocessor);this.blueIdToContentMap.set(s.blueId,s.content),this.blueIdToMultipleDocumentsMap.set(s.blueId,s.isMultipleDocuments);const n=t.getName();n&&this.addToNameMap(n,s.blueId)}processNodeWithItems(t){const s=t.getItems();if(!s)return;this.processNodeList(s);const n=j.parseAndCalculateBlueIdForNodeList(s,this.preprocessor);this.blueIdToContentMap.set(n.blueId,n.content),this.blueIdToMultipleDocumentsMap.set(n.blueId,!0),s.forEach((i,o)=>{const l=i.getName();l&&this.addToNameMap(l,`${n.blueId}#${o}`)})}processNodeList(t){const s=N.calculateBlueIdSync(t),n=t.map(i=>b.get(i));this.blueIdToContentMap.set(s,n),this.blueIdToMultipleDocumentsMap.set(s,!0)}fetchContentByBlueId(t){const s=this.blueIdToContentMap.get(t),n=this.blueIdToMultipleDocumentsMap.get(t);return s!==void 0&&n!==void 0?j.resolveThisReferences(s,t,n):null}addSingleNodes(...t){t.forEach(s=>this.processNode(s))}addSingleDocs(...t){t.forEach(s=>{const n=F(s);if(n!==void 0){const i=y.deserialize(n);this.processNode(i)}})}getBlueIdByName(t){const s=this.nameToBlueIdsMap.get(t);if(!s||s.length===0)throw new Error(`No node with name "${t}"`);return s[0]}getNodeByName(t){const s=this.findNodeByName(t);if(!s)throw new Error(`No node with name "${t}"`);return s}addListAndItsItemsFromNodes(t){this.processNodeList(t),t.forEach(s=>this.processNode(s))}addListAndItsItemsFromDoc(t){const s=F(t);if(s!==void 0){const i=y.deserialize(s).getItems();i&&this.addListAndItsItems(i)}}addListAndItsItems(t){Array.isArray(t)?this.addListAndItsItemsFromNodes(t):this.addListAndItsItemsFromDoc(t)}addList(t){this.processNodeList(t)}}exports.Base58Sha256Provider=mt;exports.BasicNodeProvider=Hr;exports.Blue=Wr;exports.BlueIdCalculator=N;exports.BlueIdToCid=Ms;exports.BlueNode=d;exports.BlueNodeTypeSchema=A;exports.JsonCanonicalizer=yt;exports.Limits=Be;exports.Merger=Kt;exports.MergingProcessors=Kr;exports.NodeResolver=Jt;exports.Nodes=ve;exports.ResolvedBlueNode=Pe;exports.TypeSchemaResolver=Ft;exports.applyBlueNodePatch=_s;exports.baseBlueObjectSchema=he;exports.blueDescriptionField=Ys;exports.blueIdField=Ks;exports.blueIdSchema=ms;exports.blueNameField=Gs;exports.blueNodeField=Ws;exports.blueObjectBooleanValueSchema=Ns;exports.blueObjectNumberValueSchema=bs;exports.blueObjectSchema=Q;exports.blueObjectStringListItemsSchema=Ts;exports.blueObjectStringValueSchema=Is;exports.calculateBlueId=Zt;exports.calculateBlueIdSync=Fr;exports.enrichWithBlueId=ze;exports.getBlueDescriptionAnnotation=wt;exports.getBlueIdAnnotation=Pt;exports.getBlueNameAnnotation=At;exports.getBlueNodeAnnotation=Vt;exports.getBlueObjectItems=Rr;exports.getBlueObjectProperties=xr;exports.getBlueObjectTypeLabel=$r;exports.getBlueObjectValue=jr;exports.getExtendedFromSchemaAnnotation=Ot;exports.getTypeBlueIdAnnotation=Mt;exports.hasBlueObjectBlueIdDefined=ht;exports.hasBlueObjectItemsDefined=pt;exports.hasBlueObjectNameDefined=Bs;exports.hasBlueObjectTypeDefined=ft;exports.hasBlueObjectValueDefined=gt;exports.isBigDecimalNumber=ge;exports.isBigIntegerNumber=$;exports.isBigNumber=P;exports.isBlueNodeSchema=Qe;exports.isBlueObject=vs;exports.isBlueObjectResolved=_t;exports.isGivenBlueObjectTypeSchema=ws;exports.isJsonBlueArray=He;exports.isJsonBlueObject=We;exports.isJsonBlueValue=Es;exports.isSchemaExtendedFrom=et;exports.isUrl=oe;exports.jsonBlueValueSchema=ce;exports.normalizeToBlueObject=Lr;exports.resolveBlueObjectItems=Ue;exports.withBlueDescription=Bt;exports.withBlueId=St;exports.withBlueName=Et;exports.withBlueNode=Ct;exports.withExtendedFromSchema=Dt;exports.withTypeBlueId=Xs;exports.yamlBlueDump=Er;exports.yamlBlueParse=F;
|
|
26
|
+
`}loadDefaultSimpleBlue(){const e=this.enrichDefaultBlue(Ut);try{const t=F(e);if(t)this.defaultSimpleBlue=m.deserialize(t);else throw new Error("Failed to parse default Blue content")}catch(t){throw new Error(`Error loading default Blue: ${t}`)}}};p(Te,"DEFAULT_BLUE_BLUE_ID","FREHAAGDZSzpnoTUoCQ86bBmxbVCULMjvx9JZM6fyqT1");let se=Te;class Zr extends Zt{constructor(t){super();p(this,"blueIdToContentMap",new Map);p(this,"blueIdToMultipleDocumentsMap",new Map);p(this,"preprocessor");const s=new se({nodeProvider:this});this.preprocessor=n=>s.preprocessWithDefaultBlue(n),this.loadRepositories(t)}loadRepositories(t){for(const s of t)if(s.contents)for(const[n,i]of Object.entries(s.contents))this.processContent(i,n)}processContent(t,s){Array.isArray(t)?this.processMultipleDocuments(t,s):this.processSingleDocument(t,s)}processSingleDocument(t,s){const n=m.deserialize(t),i=j.parseAndCalculateBlueIdForNode(n,this.preprocessor),o=s||i.blueId;this.blueIdToContentMap.set(o,i.content),this.blueIdToMultipleDocumentsMap.set(o,!1);const l=n.getName();l&&this.addToNameMap(l,o)}processMultipleDocuments(t,s){const n=t.map(l=>{const a=m.deserialize(l);return this.preprocessor(a)}),i=j.parseAndCalculateBlueIdForNodeList(n,l=>l),o=s||i.blueId;this.blueIdToContentMap.set(o,i.content),this.blueIdToMultipleDocumentsMap.set(o,!0),n.forEach((l,a)=>{const h=`${o}#${a}`,I=b.get(l),y=T.calculateBlueIdSync(l);this.blueIdToContentMap.set(y,I),this.blueIdToMultipleDocumentsMap.set(y,!1);const f=l.getName();f&&this.addToNameMap(f,h)})}fetchContentByBlueId(t){const s=this.blueIdToContentMap.get(t),n=this.blueIdToMultipleDocumentsMap.get(t);return s!==void 0&&n!==void 0?j.resolveThisReferences(s,t,n):null}getBlueIds(){return Array.from(this.blueIdToContentMap.keys())}hasBlueId(t){const s=t.split("#")[0];return this.blueIdToContentMap.has(s)}}class de{static wrap(e,t){const s=[Le.INSTANCE];if(t&&t.length>0){const n=new Zr(t);s.push(n)}return s.push(e),new vr(s)}}class _r{constructor(e,t){p(this,"preprocessingAliases",new Map);p(this,"urlContentFetcher");e&&(this.preprocessingAliases=new Map(e)),this.urlContentFetcher=t}process(e){const t=this.getBlueNodeValue(e);if(t){const s=e.clone();if(this.preprocessingAliases.has(t))return this.handleAliasValue(s,t);if(Z.isPotentialBlueId(t))return this.handleBlueId(s,t);throw le(t)?new Error(`URL '${t}' detected. Use the async version of this method to fetch the content.`):new Error(`Invalid blue value: ${t}`)}return e}async processAsync(e){const t=this.getBlueNodeValue(e);if(t){const s=e.clone();if(this.preprocessingAliases.has(t))return this.handleAliasValue(s,t);if(Z.isPotentialBlueId(t))return this.handleBlueId(s,t);if(le(t)&&this.urlContentFetcher)try{const n=await this.fetchFromUrl(t);return n&&s.setBlue(new d().setItems(n)),s}catch(n){throw n instanceof Error?new Error(`Failed to fetch from URL '${t}'.
|
|
27
|
+
${n.message}`):n}else throw le(t)?new Error(`UrlContentFetcher not provided for URL: ${t}`):new Error(`Invalid blue value: ${t}`)}return e}getBlueNodeValue(e){const t=e.getBlue(),s=t==null?void 0:t.getValue();return s&&typeof s=="string"?s:null}handleAliasValue(e,t){return e.setBlue(new d().setBlueId(this.preprocessingAliases.get(t))),e}handleBlueId(e,t){return e.setBlue(new d().setBlueId(t)),e}async fetchFromUrl(e){if(!this.urlContentFetcher)throw new Error(`UrlContentFetcher not provided for URL: ${e}`);return await this.urlContentFetcher.fetchAndCache(e)}getPreprocessingAliases(){return new Map(this.preprocessingAliases)}setPreprocessingAliases(e){return this.preprocessingAliases=new Map(e),this}addPreprocessingAliases(e){return e.forEach((t,s)=>{this.preprocessingAliases.set(s,t)}),this}setUrlContentFetcher(e){return this.urlContentFetcher=e,this}getUrlContentFetcher(){return this.urlContentFetcher}}const kr={fetchUrl:async r=>{throw new Error(`You must provide a custom UrlFetchStrategy to fetch content from URL: ${r}`)}};class Yr{constructor(e){p(this,"cache",new Map);p(this,"fetchStrategy");p(this,"enabled",!1);p(this,"allowedDomains",[]);this.fetchStrategy=e||kr}validateUrl(e){if(!le(e))throw new Error(`Invalid URL: ${e}`);return!0}isDomainAllowed(e){if(this.allowedDomains.length===0)return!0;try{const t=new URL(e);return this.allowedDomains.some(s=>t.hostname===s||t.hostname.endsWith(`.${s}`))}catch{return!1}}getFromCache(e){try{return this.validateUrl(e),this.cache.get(e)||[]}catch{return[]}}async fetchAndCache(e){if(this.validateUrl(e),!this.enabled)throw new Error("URL fetching is disabled. Enable it using the enableFetching method.");if(!this.isDomainAllowed(e))throw new Error(`Domain not allowed for URL: ${e}.`);let t;try{t=await this.fetchStrategy.fetchUrl(e)}catch(l){throw new Error(`Error fetching from URL: ${e}`,{cause:l})}const{data:s,contentType:n}=t;let i;if(n.includes("application/json")||n.includes("text/yaml")||n.includes("application/yaml")||n.includes("text/plain"))i=F(s);else throw new Error(`Unsupported content type from URL: ${n}`);if(i===void 0)throw new Error(`Failed to parse content from URL: ${e}`);let o;return Array.isArray(i)?o=i.map(l=>m.deserialize(l)):o=[m.deserialize(i)],this.cache.set(e,o),o}prefetchUrl(e,t){try{this.validateUrl(e),this.cache.set(e,t)}catch{}}clearCache(){this.cache.clear()}setFetchStrategy(e){return this.fetchStrategy=e,this}getFetchStrategy(){return this.fetchStrategy}enableFetching(){return this.enabled=!0,this.allowedDomains=[],this}enableFetchingForDomains(e){return this.enabled=!0,this.allowedDomains=[...e],this}disableFetching(){return this.enabled=!1,this}isFetchingEnabled(){return this.enabled}getAllowedDomains(){return[...this.allowedDomains]}allowDomain(e){return this.allowedDomains.includes(e)||this.allowedDomains.push(e),this}disallowDomain(e){return this.allowedDomains=this.allowedDomains.filter(t=>t!==e),this}clearAllowedDomains(){return this.allowedDomains=[],this}}class Gt{resolveWithoutLimits(e){return this.resolve(e,z)}}class Jt extends Gt{constructor(t,s){super();p(this,"mergingProcessor");p(this,"nodeProvider");this.mergingProcessor=t,this.nodeProvider=de.wrap(s)}merge(t,s,n){if(u.isNonNullable(s.getBlue()))throw new Error('Document contains "blue" attribute. Preprocess document before merging.');let i=t;const o=s.getType();if(u.isNonNullable(o)){const l=o.clone();u.isNonNullable(l.getBlueId())&&new tt(this.nodeProvider).extend(l,Pe.withSinglePath("/"));const a=this.resolve(l,n),h=s.clone().setType(a);return i=this.merge(i,l,n),this.mergeObject(i,h,n)}return this.mergeObject(i,s,n)}mergeObject(t,s,n){let i=this.mergingProcessor.process(t,s,this.nodeProvider);const o=s.getItems();u.isNonNullable(o)&&(i=this.mergeChildren(i,o,n));const l=s.getProperties();return u.isNonNullable(l)&&Object.entries(l).forEach(([a,h])=>{n.shouldMergePathSegment(a,h)&&(n.enterPathSegment(a,h),i=this.mergeProperty(i,a,h,n),n.exitPathSegment())}),u.isNonNullable(s.getBlueId())&&(i=i.clone().setBlueId(s.getBlueId())),this.mergingProcessor.postProcess&&(i=this.mergingProcessor.postProcess(i,s,this.nodeProvider)),i}mergeChildren(t,s,n){const i=t.getItems();if(u.isNullable(i)){const l=s.filter((a,h)=>n.shouldMergePathSegment(String(h),a)).map(a=>{n.enterPathSegment(String(s.indexOf(a)),a);const h=this.resolve(a,n);return n.exitPathSegment(),h});return t.clone().setItems(l)}else if(s.length<i.length)throw new Error(`Subtype of element must not have more items (${i.length}) than the element itself (${s.length}).`);const o=[...i];for(let l=0;l<s.length;l++){if(!n.shouldMergePathSegment(String(l),s[l]))continue;if(n.enterPathSegment(String(l),s[l]),l>=o.length){o.push(s[l]),n.exitPathSegment();continue}const a=T.calculateBlueIdSync(s[l]),h=T.calculateBlueIdSync(o[l]);if(a!==h)throw new Error(`Mismatched items at index ${l}: source item has blueId '${a}', but target item has blueId '${h}'.`);n.exitPathSegment()}return t.clone().setItems(o)}mergeProperty(t,s,n,i){const o=this.resolve(n,i),l=t.clone();u.isNullable(l.getProperties())&&l.setProperties({});const a=l.getProperties()[s];return a===void 0?l.getProperties()[s]=o:l.getProperties()[s]=this.mergeObject(a,o,i),l}resolve(t,s){const n=new d,o=this.merge(n,t,s).clone().setName(t.getName()).setDescription(t.getDescription()).setBlueId(t.getBlueId());return new te(o)}}class Wt{constructor(e){p(this,"mergingProcessors");this.mergingProcessors=e}process(e,t,s){return this.mergingProcessors.reduce((n,i)=>i.process(n,t,s),e)}postProcess(e,t,s){return this.mergingProcessors.reduce((n,i)=>i.postProcess?i.postProcess(n,t,s):n,e)}}class Ht{process(e,t){const s=t.getValue();if(u.isNonNullable(s)){const n=e.getValue();if(u.isNullable(n))return e.clone().setValue(s);if(!Kr(s,n))throw new Error(`Node values conflict. Source node value: ${s}, target node value: ${n}`)}return e}}const Kr=(r,e)=>$(r)&&$(e)||ye(r)&&ye(e)?r.eq(e):r===e;class qt{process(e,t,s){const n=e.getType(),i=t.getType();let o=e;if(n===void 0)o=e.clone().setType(i);else if(i!==void 0){if(!N(i,n,s)){const a=b.get(i),h=b.get(n);throw new Error(`The source type '${JSON.stringify(a)}' is not a subtype of the target type '${JSON.stringify(h)}'.`)}o=e.clone().setType(i)}return o}}class Xt{process(e,t,s){const n=t.getItemType(),i=t.getType();if(n!==void 0&&i!==void 0&&!jt(i,s))throw new Error("Source node with itemType must have a List type");const o=e.getItemType();let l=e;if(o===void 0)n!==void 0&&(l=e.clone().setItemType(n));else if(n!==void 0){if(!N(n,o,s)){const y=b.get(n),f=b.get(o);throw new Error(`The source item type '${JSON.stringify(y)}' is not a subtype of the target item type '${JSON.stringify(f)}'.`)}l=e.clone().setItemType(n)}const a=l.getItemType(),h=t.getItems();if(a!==void 0&&h!==void 0)for(const I of h){const y=I.getType();if(y!==void 0&&!N(y,a,s)){const f=b.get(y),g=b.get(a);throw new Error(`Item of type '${JSON.stringify(f)}' is not a subtype of the list's item type '${JSON.stringify(g)}'.`)}}return l}}class Qt{process(e,t,s){const n=t.getKeyType(),i=t.getValueType(),o=t.getType();if((n!==void 0||i!==void 0)&&o!==void 0&&!xt(o,s))throw new Error("Source node with keyType or valueType must have a Dictionary type");let l=this.processKeyType(e,t,s);l=this.processValueType(l,t,s);const a=l.getKeyType(),h=l.getValueType(),I=t.getProperties();return(a!==void 0||h!==void 0)&&I!==void 0&&Object.entries(I).forEach(([y,f])=>{a!==void 0&&this.validateKeyType(y,a,s),h!==void 0&&this.validateValueType(f,h,s)}),l}processKeyType(e,t,s){const n=e.getKeyType(),i=t.getKeyType();if(n===void 0){if(i!==void 0)return this.validateBasicKeyType(i,s),e.clone().setKeyType(i)}else if(i!==void 0){if(this.validateBasicKeyType(i,s),!N(i,n,s)){const l=b.get(i),a=b.get(n);throw new Error(`The source key type '${JSON.stringify(l)}' is not a subtype of the target key type '${JSON.stringify(a)}'.`)}return e.clone().setKeyType(i)}return e}processValueType(e,t,s){const n=e.getValueType(),i=t.getValueType();if(n===void 0){if(i!==void 0)return e.clone().setValueType(i)}else if(i!==void 0){if(!N(i,n,s)){const l=b.get(i),a=b.get(n);throw new Error(`The source value type '${JSON.stringify(l)}' is not a subtype of the target value type '${JSON.stringify(a)}'.`)}return e.clone().setValueType(i)}return e}validateBasicKeyType(e,t){if(!er(e,t))throw new Error("Dictionary key type must be a basic type")}validateKeyType(e,t,s){if(!tr(t,s))if(sr(t,s)){const n=Number.parseInt(e,10);if(Number.isNaN(n)||n.toString()!==e)throw new Error(`Key '${e}' is not a valid Integer.`)}else if(rr(t,s)){const n=Number.parseFloat(e);if(Number.isNaN(n))throw new Error(`Key '${e}' is not a valid Number.`)}else if(nr(t,s)){if(e.toLowerCase()!=="true"&&e.toLowerCase()!=="false")throw new Error(`Key '${e}' is not a valid Boolean.`)}else throw new Error(`Unsupported key type: ${t.getName()||"unknown"}`)}validateValueType(e,t,s){const n=e.getType();if(n!==void 0&&!N(n,t,s)){const i=b.get(n),o=b.get(t);throw new Error(`Value of type '${JSON.stringify(i)}' is not a subtype of the dictionary's value type '${JSON.stringify(o)}'.`)}}}class es{process(e){return e}postProcess(e,t,s){const n=e.getType();if(n!==void 0&&ir(n,s)){const i=e.getItems(),o=e.getProperties();if(i!==void 0&&i.length>0||o!==void 0&&Object.keys(o).length>0){const l=or(n,s),a=n.getName()||"unknown";throw new Error(`Node of type "${a}" (which extends basic type "${l}") must not have items, properties or contracts.`)}}return e}}class ts{process(e,t){let s=e;const n=t.getName(),i=e.getName();n!==void 0&&i===void 0&&(s=s.clone().setName(n));const o=t.getDescription(),l=s.getDescription();return o!==void 0&&l===void 0&&(s=s.clone().setDescription(o)),s}}const Gr=Object.freeze(Object.defineProperty({__proto__:null,BasicTypesVerifier:es,DictionaryProcessor:Qt,ListProcessor:Xt,MetadataPropagator:ts,SequentialMergingProcessor:Wt,TypeAssigner:qt,ValuePropagator:Ht},Symbol.toStringTag,{value:"Module"}));function Jr(){return new Wt([new Ht,new qt,new Xt,new Qt,new ts,new es])}class Wr{constructor(e){p(this,"nodeProvider");p(this,"blueIdToInlineValue",new Map);const{nodeProvider:t,blueIdsMappingGenerator:s}=e;this.nodeProvider=t,Object.entries(ht).forEach(([i,o])=>{this.blueIdToInlineValue.set(i,o)});const n=s.getAllBlueIds();Object.entries(n).forEach(([i,o])=>{this.blueIdToInlineValue.has(o)||this.blueIdToInlineValue.set(o,i)})}restore(e){return V.transform(e,t=>this.restoreNode(t))}restoreNode(e){return this.restoreTypeField(e,()=>e.getType(),t=>e.setType(t)),this.restoreTypeField(e,()=>e.getItemType(),t=>e.setItemType(t)),this.restoreTypeField(e,()=>e.getKeyType(),t=>e.setKeyType(t)),this.restoreTypeField(e,()=>e.getValueType(),t=>e.setValueType(t)),e}restoreTypeField(e,t,s){const n=t();if(!n||n.isInlineValue()&&n.getValue()!==void 0)return;const i=n.getBlueId();if(!i)return;const o=this.resolveInlineValue(i,n);if(!o)return;const l=new d().setValue(o).setInlineValue(!0);s(l)}resolveInlineValue(e,t){const s=this.blueIdToInlineValue.get(e);if(s)return s;const n=t.getName();if(n)return this.blueIdToInlineValue.set(e,n),n;const i=this.nodeProvider.fetchFirstByBlueId(e),o=i==null?void 0:i.getName();if(o)return this.blueIdToInlineValue.set(e,o),o}}class Hr{constructor(e={}){p(this,"nodeProvider");p(this,"typeSchemaResolver");p(this,"blueDirectivePreprocessor");p(this,"urlContentFetcher");p(this,"blueIdsMappingGenerator");p(this,"globalLimits",z);p(this,"mergingProcessor");p(this,"repositories");p(this,"prepareForBlueIdCalculation",async e=>e instanceof d||Array.isArray(e)&&e.every(t=>t instanceof d)?e:Array.isArray(e)?await Promise.all(e.map(s=>this.jsonValueToNodeAsync(s))):this.jsonValueToNodeAsync(e));p(this,"calculateBlueId",async e=>{const t=await this.prepareForBlueIdCalculation(e);return T.calculateBlueId(t)});p(this,"prepareForBlueIdCalculationSync",e=>e instanceof d||Array.isArray(e)&&e.every(t=>t instanceof d)?e:Array.isArray(e)?e.map(t=>this.jsonValueToNode(t)):this.jsonValueToNode(e));var a;const{nodeProvider:t,typeSchemaResolver:s=null,urlFetchStrategy:n,repositories:i,mergingProcessor:o}=e;this.repositories=i;const l=Nr(()=>[]);if(this.nodeProvider=de.wrap(t||l,i),this.typeSchemaResolver=s??new Rt([]),this.mergingProcessor=o??Jr(),this.urlContentFetcher=new Yr(n),this.blueDirectivePreprocessor=new _r(void 0,this.urlContentFetcher),this.blueIdsMappingGenerator=new Kt,i)for(const{schemas:h,blueIds:I}of i)(a=this.typeSchemaResolver)==null||a.registerSchemas(h),this.blueIdsMappingGenerator.registerBlueIds(I)}nodeToJson(e,t="official"){return b.get(e,t)}nodeToSchemaOutput(e,t){return new Tr(this.typeSchemaResolver).convert(e,t)}resolve(e,t=z){const s=this.combineWithGlobalLimits(t);return new Jt(this.mergingProcessor,this.nodeProvider).resolve(e,s)}createResolvedNode(e){return e instanceof te?e:new te(e)}reverse(e){return new Lt().reverse(e)}restoreInlineTypes(e){return new Wr({nodeProvider:this.nodeProvider,blueIdsMappingGenerator:this.blueIdsMappingGenerator}).restore(e)}extend(e,t){const s=this.combineWithGlobalLimits(t);new tt(this.nodeProvider).extend(e,s)}jsonValueToNode(e){return this.preprocess(m.deserialize(e))}async jsonValueToNodeAsync(e){return this.preprocessAsync(m.deserialize(e))}yamlToNode(e){const t=F(e);if(!t)throw new Error("Failed to parse YAML to JSON");return this.jsonValueToNode(t)}async yamlToNodeAsync(e){const t=F(e);if(!t)throw new Error("Failed to parse YAML to JSON");return this.jsonValueToNodeAsync(t)}calculateBlueIdSync(e){const t=this.prepareForBlueIdCalculationSync(e);return T.calculateBlueIdSync(t)}addPreprocessingAliases(e){this.blueDirectivePreprocessor.addPreprocessingAliases(e)}preprocess(e){const t=this.blueDirectivePreprocessor.process(e);return new se({nodeProvider:this.nodeProvider,blueIdsMappingGenerator:this.blueIdsMappingGenerator}).preprocessWithDefaultBlue(t)}async preprocessAsync(e){const t=await this.blueDirectivePreprocessor.processAsync(e);return new se({nodeProvider:this.nodeProvider,blueIdsMappingGenerator:this.blueIdsMappingGenerator}).preprocessWithDefaultBlue(t)}transform(e,t){return V.transform(e,t)}getNodeProvider(){return this.nodeProvider}setNodeProvider(e){return this.nodeProvider=de.wrap(e,this.repositories),this}getTypeSchemaResolver(){return this.typeSchemaResolver}setTypeSchemaResolver(e){return this.typeSchemaResolver=e,this}getUrlContentFetcher(){return this.urlContentFetcher}setUrlFetchStrategy(e){return this.urlContentFetcher.setFetchStrategy(e),this}enablePreprocessingDirectivesFetchForUrls(){return this.urlContentFetcher.enableFetching(),this}enablePreprocessingDirectivesFetchForDomains(e){return this.urlContentFetcher.enableFetchingForDomains(e),this}allowUrlFetchingForDomain(e){return this.urlContentFetcher.allowDomain(e),this}disallowUrlFetchingForDomain(e){return this.urlContentFetcher.disallowDomain(e),this}getAllowedUrlFetchingDomains(){return this.urlContentFetcher.getAllowedDomains()}disablePreprocessingDirectivesFetchForUrls(){return this.urlContentFetcher.disableFetching(),this}isPreprocessingDirectivesFetchForUrlsEnabled(){return this.urlContentFetcher.isFetchingEnabled()}getPreprocessingAliases(){return this.blueDirectivePreprocessor.getPreprocessingAliases()}setPreprocessingAliases(e){return this.blueDirectivePreprocessor.setPreprocessingAliases(e),this}registerBlueIds(...e){return this.blueIdsMappingGenerator.registerBlueIds(...e),this}getAllRegisteredBlueIds(){return this.blueIdsMappingGenerator.getAllBlueIds()}getAllBlueIdNames(){return this.blueIdsMappingGenerator.getAllBlueIdNames()}getBlueIdsMappingGenerator(){return this.blueIdsMappingGenerator}isTypeOf(e,t,s){return A.isTypeOf(e,t,{checkSchemaExtensions:s==null?void 0:s.checkSchemaExtensions,typeSchemaResolver:this.typeSchemaResolver})}isTypeOfNode(e,t){return new lr(this).matchesType(e,t,this.globalLimits)}setGlobalLimits(e){return this.globalLimits=e??z,this}getGlobalLimits(){return this.globalLimits}combineWithGlobalLimits(e){return this.globalLimits==z?e:e==z?this.globalLimits:Se.of(this.globalLimits,e)}}class qr extends Zt{constructor(t=[]){super();p(this,"blueIdToContentMap",new Map);p(this,"blueIdToMultipleDocumentsMap",new Map);p(this,"preprocessor");const s=new se({nodeProvider:this});this.preprocessor=n=>s.preprocessWithDefaultBlue(n),t.forEach(n=>this.processNode(n))}processNode(t){Be.hasItemsOnly(t)?this.processNodeWithItems(t):this.processSingleNode(t)}processSingleNode(t){const s=j.parseAndCalculateBlueIdForNode(t,this.preprocessor);this.blueIdToContentMap.set(s.blueId,s.content),this.blueIdToMultipleDocumentsMap.set(s.blueId,s.isMultipleDocuments);const n=t.getName();n&&this.addToNameMap(n,s.blueId)}processNodeWithItems(t){const s=t.getItems();if(!s)return;this.processNodeList(s);const n=j.parseAndCalculateBlueIdForNodeList(s,this.preprocessor);this.blueIdToContentMap.set(n.blueId,n.content),this.blueIdToMultipleDocumentsMap.set(n.blueId,!0),s.forEach((i,o)=>{const l=i.getName();l&&this.addToNameMap(l,`${n.blueId}#${o}`)})}processNodeList(t){const s=T.calculateBlueIdSync(t),n=t.map(i=>b.get(i));this.blueIdToContentMap.set(s,n),this.blueIdToMultipleDocumentsMap.set(s,!0)}fetchContentByBlueId(t){const s=this.blueIdToContentMap.get(t),n=this.blueIdToMultipleDocumentsMap.get(t);return s!==void 0&&n!==void 0?j.resolveThisReferences(s,t,n):null}addSingleNodes(...t){t.forEach(s=>this.processNode(s))}addSingleDocs(...t){t.forEach(s=>{const n=F(s);if(n!==void 0){const i=m.deserialize(n);this.processNode(i)}})}getBlueIdByName(t){const s=this.nameToBlueIdsMap.get(t);if(!s||s.length===0)throw new Error(`No node with name "${t}"`);return s[0]}getNodeByName(t){const s=this.findNodeByName(t);if(!s)throw new Error(`No node with name "${t}"`);return s}addListAndItsItemsFromNodes(t){this.processNodeList(t),t.forEach(s=>this.processNode(s))}addListAndItsItemsFromDoc(t){const s=F(t);if(s!==void 0){const i=m.deserialize(s).getItems();i&&this.addListAndItsItems(i)}}addListAndItsItems(t){Array.isArray(t)?this.addListAndItsItemsFromNodes(t):this.addListAndItsItemsFromDoc(t)}addList(t){this.processNodeList(t)}}exports.Base58Sha256Provider=It;exports.BasicNodeProvider=qr;exports.Blue=Hr;exports.BlueIdCalculator=T;exports.BlueIdToCid=Ms;exports.BlueNode=d;exports.BlueNodeTypeSchema=A;exports.JsonCanonicalizer=mt;exports.Limits=we;exports.Merger=Jt;exports.MergingProcessors=Gr;exports.NodeResolver=Gt;exports.Nodes=Be;exports.ResolvedBlueNode=te;exports.TypeSchemaResolver=Rt;exports.applyBlueNodePatch=_s;exports.baseBlueObjectSchema=pe;exports.blueDescriptionField=Ys;exports.blueIdField=Gs;exports.blueIdSchema=ms;exports.blueNameField=Js;exports.blueNodeField=Ws;exports.blueObjectBooleanValueSchema=Ts;exports.blueObjectNumberValueSchema=bs;exports.blueObjectSchema=Q;exports.blueObjectStringListItemsSchema=Ns;exports.blueObjectStringValueSchema=Is;exports.calculateBlueId=kt;exports.calculateBlueIdSync=Fr;exports.enrichWithBlueId=ze;exports.getBlueDescriptionAnnotation=Pt;exports.getBlueIdAnnotation=Et;exports.getBlueNameAnnotation=Vt;exports.getBlueNodeAnnotation=Dt;exports.getBlueObjectItems=Rr;exports.getBlueObjectProperties=xr;exports.getBlueObjectTypeLabel=$r;exports.getBlueObjectValue=jr;exports.getExtendedFromSchemaAnnotation=Mt;exports.getTypeBlueIdAnnotation=Ft;exports.hasBlueObjectBlueIdDefined=pt;exports.hasBlueObjectItemsDefined=ft;exports.hasBlueObjectNameDefined=Bs;exports.hasBlueObjectTypeDefined=gt;exports.hasBlueObjectValueDefined=yt;exports.isBigDecimalNumber=ye;exports.isBigIntegerNumber=$;exports.isBigNumber=S;exports.isBlueNodeSchema=Qe;exports.isBlueObject=vs;exports.isBlueObjectResolved=Yt;exports.isGivenBlueObjectTypeSchema=ws;exports.isJsonBlueArray=He;exports.isJsonBlueObject=We;exports.isJsonBlueValue=Es;exports.isSchemaExtendedFrom=et;exports.isUrl=le;exports.jsonBlueValueSchema=ce;exports.normalizeToBlueObject=Lr;exports.resolveBlueObjectItems=Ue;exports.withBlueDescription=wt;exports.withBlueId=St;exports.withBlueName=At;exports.withBlueNode=Ct;exports.withExtendedFromSchema=Ot;exports.withTypeBlueId=Xs;exports.yamlBlueDump=Er;exports.yamlBlueParse=F;
|