@enfyra/kernel 1.1.9 → 1.1.10
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 +1 -1
- package/dist/package-metadata.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var oi=Object.create;var Dt=Object.defineProperty;var si=Object.getOwnPropertyDescriptor;var ai=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,ci=Object.prototype.hasOwnProperty;var W=(r,e)=>()=>(r&&(e=r(r=0)),e);var $n=(r,e)=>{for(var t in e)Dt(r,t,{get:e[t],enumerable:!0})},or=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ai(e))!ci.call(r,i)&&i!==t&&Dt(r,i,{get:()=>e[i],enumerable:!(n=si(e,i))||n.enumerable});return r};var ce=(r,e,t)=>(t=r!=null?oi(li(r)):{},or(e||!r||!r.__esModule?Dt(t,"default",{value:r,enumerable:!0}):t,r)),ui=r=>or(Dt({},"__esModule",{value:!0}),r);function br(r){return Rn.createHash("md5").update(r).digest("hex").substring(0,8)}function _r(r){return r.length<=mr-3?`${r}_pk`:`j_${br(r)}_pk`}function wr(r,e,t){let n=`${r}_${e}_foreign`;return n.length<=mr?n:`j_${br(r)}_${t}_fk`}function Ft(r,e,t){let n=`${r}:${e}:${t}`;return`j_${Rn.createHash("sha1").update(n).digest("hex").slice(0,12)}`}function V(r){return`${r}Id`}function xt(r,e,t){return{sourceColumn:"sourceId",targetColumn:"targetId"}}function Tr(r){return r.replace(/_([a-z])/g,e=>e[1].toUpperCase())}function $r(r){return r.replace(/([A-Z])/g,"_$1").toLowerCase()}function Sr(r,e,t){return`${r}_${e}_${t}_fk`}function kr(r,e,t){return`${r}_${e}_${t}_idx`}var Rn,mr,qe=W(()=>{"use strict";Rn=ce(require("crypto")),mr=63});function tn(r){return Qi[r]??null}var ee,Mn,Rt,Qi,vt=W(()=>{"use strict";ee=new Set(["_eq","_neq","_gt","_gte","_lt","_lte","_in","_not_in","_nin","_contains","_starts_with","_ends_with","_between","_is_null","_is_not_null"]),Mn=new Set(["_and","_or","_not"]),Rt=[...Array.from(Mn),...Array.from(ee)],Qi={_eq:"eq",_neq:"neq",_gt:"gt",_gte:"gte",_lt:"lt",_lte:"lte",_in:"in",_not_in:"not_in",_nin:"not_in",_contains:"contains",_starts_with:"starts_with",_ends_with:"ends_with",_between:"between"}});var R,ue=W(()=>{"use strict";R=class extends Error{constructor(t="Bad Request",n){let i=Array.isArray(t),o=i?t.join("; ")||"Bad Request":typeof t=="string"?t:JSON.stringify(t);super(o);this.statusCode=400;this.errorCode="BAD_REQUEST";this.name="BadRequestException",this.details=n,i&&(this.messages=t)}}});function Rr(){let r=process.env.DB_URI||"";return r.startsWith("mongodb://")||r.startsWith("mongodb+srv://")}var vr=W(()=>{"use strict"});function De(r,e,t){throw new R({message:`Unsupported filter operator "${r}" on field "${e}"${t?` (table "${t}")`:""}. Supported operators: ${Rt.join(", ")}.`,error:"UnsupportedFilterOperator",operator:r,field:e,supportedOperators:Rt})}function nn(r,e,t){if(!e||typeof e!="object"||Array.isArray(e))return;let n=Rr();for(let i of Object.keys(e))if(i.startsWith("_")&&!ee.has(i)){if(n&&i==="_id")continue;De(i,r,t)}}function U(r,e,t){if(!r||typeof r!="object")return;let n=t?.tables?.get(e),i=new Set((n?.columns??[]).map(s=>s.name)),o=new Map((n?.relations??[]).map(s=>[s.propertyName,s]));for(let[s,a]of Object.entries(r)){if(Ji.has(s)){if(Array.isArray(a))for(let l of a)U(l,e,t);else a&&typeof a=="object"&&U(a,e,t);continue}let u=o.get(s);if(u){if(a&&typeof a=="object"&&!Array.isArray(a)){nn(s,a,e);let l=u.targetTableName||u.targetTable;if(l){let f=Object.keys(a).filter(c=>!c.startsWith("_"));if(f.length>0){let c={};for(let p of f)c[p]=a[p];U(c,l,t)}}}continue}s.startsWith("_")&&!i.has(s)&&s!=="_id"&&De(s,s,e),a&&typeof a=="object"&&!Array.isArray(a)&&nn(s,a,e)}}var Ji,Xe=W(()=>{"use strict";ue();vt();vr();Ji=new Set(["_and","_or","_not"])});function $e(r,e,t,n){return!r||typeof r!="object"?{node:null,hasRelationFilters:!1}:rn(r,{tableName:e,metadata:t,registry:n,parentJoinId:null,currentJoinId:null,currentTable:e})}function rn(r,e){if(!r||typeof r!="object")return{node:null,hasRelationFilters:!1};let t=[],n=!1;for(let[i,o]of Object.entries(r)){let s=zi(i,o,e);s.hasRelationFilters&&(n=!0),s.node&&t.push(s.node)}return t.length===0?{node:null,hasRelationFilters:n}:t.length===1?{node:t[0],hasRelationFilters:n}:{node:{kind:"and",children:t},hasRelationFilters:n}}function zi(r,e,t){if(r==="_and")return Ir("and",e,t);if(r==="_or")return Ir("or",e,t);if(r==="_not"){let l=rn(e,t);return l.node?{node:{kind:"not",child:l.node},hasRelationFilters:l.hasRelationFilters}:{node:null,hasRelationFilters:l.hasRelationFilters}}let n=t.metadata?.tables?.get(t.currentTable),i=n?.columns?.some(l=>l.name==="_id"&&l.isPrimary),o=n?.columns?.some(l=>l.name==="id"),a=r==="id"?i&&!o?"_id":"id":r,u=n?.relations?.find(l=>l.propertyName===a);return u?Vi(a,e,u,t):n&&!n.columns?.find(f=>f.name===a)?(r.startsWith("_")&&r!=="_id"&&De(r,r,t.currentTable),console.warn(`[filter-parser] Unknown field "${r}" on table "${t.currentTable}" \u2014 skipped (not a column or relation in metadata).`),{node:null,hasRelationFilters:!1}):qi(a,e,t)}function Ir(r,e,t){if(!Array.isArray(e))return{node:null,hasRelationFilters:!1};let n=[],i=!1;for(let o of e){let s=rn(o,t);s.hasRelationFilters&&(i=!0),s.node&&n.push(s.node)}return n.length===0?{node:null,hasRelationFilters:i}:n.length===1?{node:n[0],hasRelationFilters:i}:{node:{kind:r,children:n},hasRelationFilters:i}}function Vi(r,e,t,n){if(typeof e!="object"||e===null)return{node:null,hasRelationFilters:!0};let i=Object.keys(e),o=i.length===1&&(i[0]==="_is_null"||i[0]==="_is_not_null"||i[0]==="_eq"||i[0]==="_neq"||i[0]==="_in"||i[0]==="_not_in"||i[0]==="_nin"),s=n.registry.registerWithParent(n.currentTable,r,n.metadata,"left",n.currentJoinId,"filter");if(o&&i[0]==="_is_null")return s?{node:{kind:"relation_exists",joinId:s,negate:e._is_null===!0},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(o&&i[0]==="_is_not_null")return s?{node:{kind:"relation_exists",joinId:s,negate:e._is_not_null!==!0},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(o&&(i[0]==="_eq"||i[0]==="_neq")&&e[i[0]]===null)return s?{node:{kind:"relation_exists",joinId:s,negate:i[0]==="_eq"},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(!s)return{node:null,hasRelationFilters:!0};let a=t.targetTableName||t.targetTable,u={...n,parentJoinId:n.currentJoinId,currentJoinId:s,currentTable:a},l=new Set(["_eq","_neq","_in","_not_in","_nin","_gt","_gte","_lt","_lte"]),c=i.length>0&&i.every(d=>l.has(d))?{id:e}:e;return{node:rn(c,u).node,hasRelationFilters:!0}}function qi(r,e,t){let n={joinId:t.currentJoinId,fieldName:r,isUuid:Gi(r,t)};if(e===null)return{node:{kind:"compare",field:n,op:"is_null",value:!0},hasRelationFilters:!1};if(typeof e!="object")return{node:{kind:"compare",field:n,op:"eq",value:e},hasRelationFilters:!1};for(let s of Object.keys(e))s.startsWith("_")&&!ee.has(s)&&De(s,r,t.tableName);let i=Object.entries(e).filter(([s])=>ee.has(s));if(i.length===0)return{node:{kind:"compare",field:n,op:"eq",value:e},hasRelationFilters:!1};let o=[];for(let[s,a]of i){let u=Hi(n,s,a);u&&o.push(u)}return o.length===0?{node:null,hasRelationFilters:!1}:o.length===1?{node:o[0],hasRelationFilters:!1}:{node:{kind:"and",children:o},hasRelationFilters:!1}}function Hi(r,e,t){if(e==="_is_null")return{kind:"compare",field:r,op:"is_null",value:t===!0};if(e==="_is_not_null")return{kind:"compare",field:r,op:"is_null",value:t!==!0};let n=tn(e);return n?{kind:"compare",field:r,op:n,value:t}:null}function Gi(r,e){let t=e.metadata?.tables?.get(e.currentTable);if(!t)return!1;let n=r.includes(".")?r.split(".").pop():r,i=t.columns?.find(s=>s.name===n);if(!i)return!1;let o=(i.type||"").toLowerCase();return o==="uuid"||o==="uuidv4"||o.includes("uuid")}var It=W(()=>{"use strict";vt();Xe()});var oe,Nt=W(()=>{"use strict";oe=class{constructor(){this.map=new Map}size(){return this.map.size}has(e){return this.map.has(e)}get(e){return this.map.get(e)}getAll(){return Array.from(this.map.values())}registerWithParent(e,t,n,i="left",o=null,s="data"){let a=o?`${o}.${t}`:t;if(this.map.has(a)){let p=this.map.get(a);return i==="inner"&&(p.joinType="inner"),p.purposes.includes(s)||p.purposes.push(s),a}let u=n?.tables?.get(e);if(!u)return null;let l=u.relations?.find(p=>p.propertyName===t);if(!l)return null;let f=l.targetTableName||l.targetTable;if(!f)return null;let c={id:a,propertyName:t,parentTable:e,targetTable:f,relationType:l.type,parentJoinId:o,joinType:i,relationMeta:l,purposes:[s]};return this.map.set(a,c),a}}});async function Y(r,e){if(r.length<=Se)return e(r);let t=[];for(let a=0;a<r.length;a+=Se)t.push(r.slice(a,a+Se));let n=[],i=0;async function o(){for(;i<t.length;){let a=i++;n[a]=await e(t[a])}}let s=Math.min(Dn,t.length);return await Promise.all(Array.from({length:s},o)),n.flat()}function et(r){let e=[],t=new Map;for(let n of r)if(n==="*"||!n.includes("."))e.push(n);else{let i=n.split("."),o=i[0],s=i.slice(1).join(".");t.has(o)||t.set(o,[]),t.get(o).push(s)}return{rootFields:e,subRelations:t}}var te,Se,Dn,Wn,ke,tt=W(()=>{"use strict";ue();te=16,Se=5e3,Dn=4,Wn=10;ke=class{constructor(e,t,n){this.adapter=e;this.metadataGetter=t;this.trace=n}enrichNestedDescs(e,t){return!t||Object.keys(t).length===0?e:e.map(n=>{let i=t[n.relationName];if(!i)return n;let o=i.fields!=null?Array.isArray(i.fields)?i.fields:String(i.fields).split(",").map(s=>s.trim()).filter(Boolean):n.fields;return{...n,fields:o,userFilter:i.filter??n.userFilter,userSort:i.sort??n.userSort,userLimit:i.limit!==void 0?Number(i.limit):n.userLimit,userPage:i.page!==void 0?Number(i.page):n.userPage,nestedDeep:i.deep??n.nestedDeep}})}withDefaultToManyLimit(e){return e.userLimit===void 0&&(e.type==="one-to-many"||e.type==="many-to-many")?{...e,userLimit:Wn}:e}assertLocalSortFields(e,t){if(!e.userSort)return;let n=Array.isArray(e.userSort)?e.userSort:String(e.userSort).split(",").map(i=>i.trim()).filter(Boolean);for(let i of n){let o=i.startsWith("-")?i.slice(1):i;if(o.includes("."))throw new R(`Sort field '${o}' is not supported on deep relation '${e.relationName}'. Sort only by local fields defined on '${e.targetTable}'.`);let s=t.columns?.some(u=>u.name===o),a=o==="id"&&t.columns?.some(u=>u.name==="_id");if(!s&&!a)throw new R(`Sort field '${o}' does not exist on '${e.targetTable}'. Sort only by fields defined on the table metadata.`)}}async execute(e,t,n=3,i=0,o){if(e.length===0||t.length===0||i>=n)return;let s;o&&(s=await this.metadataGetter(o)??void 0),await Promise.all(t.map(a=>{let u=this.withDefaultToManyLimit(a);return u.type==="many-to-one"||u.type==="one-to-one"&&!u.isInverse?this.fetchOwnerRelation(e,u,n,i):u.type==="one-to-many"||u.type==="one-to-one"&&u.isInverse?this.fetchInverseRelation(e,u,n,i,s):u.type==="many-to-many"?this.fetchM2MRelation(e,u,n,i,s):Promise.resolve()}))}async fetchOwnerRelation(e,t,n,i){let o=this.adapter.resolveOwnerFkKey(t),s=new Set,a=[];for(let m of e){let b=m[o];if(b==null)continue;let S=this.adapter.keyOf(b);s.has(S)||(s.add(S),a.push(b))}if(a.length===0){for(let m of e)m[t.relationName]=null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn];return}let u=await this.metadataGetter(t.targetTable);if(!u)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,u);let{isPkOnly:l,nestedDescs:f,fetchSpec:c}=this.adapter.resolveFields(t.fields,u),p=this.adapter.getTargetPkField(u);if(l){for(let m of e){let b=m[o];m[t.relationName]=b!=null?this.adapter.buildScalarRef(b,p):null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn]}return}let d=performance.now(),g=await this.adapter.fetchOwner(t.targetTable,a,c,t);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,d,{relationType:t.type,targetTable:t.targetTable,strategy:"batch-in",roundtrips:Math.ceil(a.length/Se)||1,rowsTransferred:g.length,rowsReturned:g.length,rowsDiscarded:0,userFilter:!!t.userFilter,userSort:!!t.userSort});let y=this.enrichNestedDescs(f,t.nestedDeep);y.length>0&&await this.execute(g,y,n,i+1,t.targetTable);let h=new Map;for(let m of g)h.set(this.adapter.keyOf(m[p]),m);for(let m of e){let b=m[o];m[t.relationName]=b!=null&&h.get(this.adapter.keyOf(b))||null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn]}}async fetchInverseRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=e.map(_=>_[s]).filter(_=>_!=null);if(a.length===0)return;let u=this.adapter.resolveInverseFkField(t),l=await this.metadataGetter(t.targetTable);if(!l)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,l);let{nestedDescs:f,fetchSpec:c}=this.adapter.resolveFields(t.fields,l),p=performance.now(),{docs:d,groupKeyField:g}=await this.adapter.fetchInverse(t.targetTable,u,a,c,t),y=new Map,h=t.fields.includes(u)||t.fields.includes("*");for(let _ of d){let N=_[g],I=this.adapter.keyOf(N);y.has(I)||y.set(I,[]),y.get(I).push(_)}let m=t.userLimit!==void 0&&t.userLimit>0,b=m?"per-parent-c16":"batch-in",S=m?a.length:Math.ceil(a.length/Se)||1,w=m?Math.ceil(a.length/te):void 0,T=Array.from(y.values()).reduce((_,N)=>_+N.length,0);if(this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,p,{relationType:t.type,targetTable:t.targetTable,strategy:b,roundtrips:S,concurrencyWaves:w,rowsTransferred:d.length,rowsReturned:T,rowsDiscarded:d.length-T,userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort}),this.adapter.postProcessInverseChild)for(let _ of d)this.adapter.postProcessInverseChild(_,u,h);let k=this.enrichNestedDescs(f,t.nestedDeep);k.length>0&&await this.execute(d,k,n,i+1,t.targetTable);let v=t.type==="one-to-one";for(let _ of e){let N=this.adapter.keyOf(_[s]),I=y.get(N)||[];_[t.relationName]=v?I[0]||null:I}}async fetchM2MRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=e.map(w=>w[s]).filter(w=>w!=null);if(a.length===0)return;let u=await this.metadataGetter(t.targetTable);if(!u)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,u);let{nestedDescs:l,fetchSpec:f}=this.adapter.resolveFields(t.fields,u),c=performance.now(),{grouped:p,docs:d}=await this.adapter.fetchM2M(e,t,o,u,f),g=t.userLimit!==void 0&&t.userLimit>0,y=g?"m2m-per-parent-c16":"m2m-batch",h=g?a.length:Math.ceil(a.length/Se)||1,m=g?Math.ceil(a.length/te):void 0,b=Array.from(p.values()).reduce((w,T)=>w+T.length,0);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,c,{relationType:t.type,targetTable:t.targetTable,strategy:y,roundtrips:h,concurrencyWaves:m,rowsTransferred:d.length,rowsReturned:b,rowsDiscarded:d.length-b,userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort});let S=this.enrichNestedDescs(l,t.nestedDeep);S.length>0&&d.length>0&&await this.execute(d,S,n,i+1,t.targetTable);for(let w of e){let T=this.adapter.keyOf(w[s]);w[t.relationName]=p.get(T)||[]}}}});async function pe(r,e,t){let n=new Map,i=0;async function o(){for(;i<r.length;){let u=i++,l=r[u];n.set(String(l),await e(l))}}let s=Math.min(t,r.length);if(s===0)return n;let a=Array.from({length:s},o);return await Promise.all(a),n}var ln=W(()=>{"use strict"});function F(r,e){switch(e){case"mysql":return`\`${r}\``;case"postgres":case"pg":case"sqlite":return`"${r}"`;case"mongodb":return r;default:return`\`${r}\``}}var xe=W(()=>{"use strict"});function X(r,e,t){e&&yn(r,e,t,"and")}function yn(r,e,t,n){switch(e.kind){case"true":return;case"false":n==="or"?r.orWhereRaw("1 = 0"):r.whereRaw("1 = 0");return;case"and":{let i=function(){for(let o of e.children)this.where(function(){yn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"or":{let i=function(){for(let o of e.children)this.orWhere(function(){yn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"not":{let i=function(){this.whereNot(function(){yn(this,e.child,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"compare":$o(r,e,t,n);return;case"relation_exists":console.warn(`[sql-render-filter] relation_exists node reached renderer directly (rootTable=${t.rootTable}, joinId=${e.joinId}) \u2014 expected to be handled by applyRelationFilters. Filter silently skipped.`);return}}function $o(r,e,t,n){if(e.field.joinId!==null){console.warn(`[sql-render-filter] compare node has joinId=${e.field.joinId} (field=${e.field.fieldName}) but reached renderer \u2014 expected join path to handle it. Filter silently skipped.`);return}let i=So(e.field,t),o=!!e.field.isUuid,s=t.dbType==="postgres",a=n==="or"?"orWhere":"where",u=n==="or"?"orWhereRaw":"whereRaw",l=n==="or"?"orWhereIn":"whereIn",f=n==="or"?"orWhereNotIn":"whereNotIn",c=n==="or"?"orWhereBetween":"whereBetween",p=n==="or"?"orWhereNull":"whereNull",d=n==="or"?"orWhereNotNull":"whereNotNull";switch(e.op){case"eq":o&&s&&typeof e.value=="string"?r[u](`${i} = ?::uuid`,[e.value]):r[a](i,"=",e.value);return;case"neq":o&&s&&typeof e.value=="string"?r[u](`${i} != ?::uuid`,[e.value]):r[a](i,"!=",e.value);return;case"gt":o&&s&&typeof e.value=="string"?r[u](`${i} > ?::uuid`,[e.value]):r[a](i,">",e.value);return;case"gte":o&&s&&typeof e.value=="string"?r[u](`${i} >= ?::uuid`,[e.value]):r[a](i,">=",e.value);return;case"lt":o&&s&&typeof e.value=="string"?r[u](`${i} < ?::uuid`,[e.value]):r[a](i,"<",e.value);return;case"lte":o&&s&&typeof e.value=="string"?r[u](`${i} <= ?::uuid`,[e.value]):r[a](i,"<=",e.value);return;case"in":{let g=Hr(e.value);o&&s&&g.every(y=>typeof y=="string")?r[u](`${i} = ANY(?::uuid[])`,[g]):r[l](i,g);return}case"not_in":{let g=Hr(e.value);o&&s&&g.every(y=>typeof y=="string")?r[u](`${i} != ALL(?::uuid[])`,[g]):r[f](i,g);return}case"contains":Gn(r,i,e.value,"contains",t,n);return;case"starts_with":Gn(r,i,e.value,"starts_with",t,n);return;case"ends_with":Gn(r,i,e.value,"ends_with",t,n);return;case"between":Array.isArray(e.value)&&e.value.length===2&&r[c](i,[e.value[0],e.value[1]]);return;case"is_null":e.value===!0?r[p](i):r[d](i);return}}function Gn(r,e,t,n,i,o){let s=o==="or"?"orWhereRaw":"whereRaw";if(i.dbType==="postgres"){let u=n==="contains"?`lower(unaccent(${e})) ILIKE '%' || lower(unaccent(?)) || '%'`:n==="starts_with"?`lower(unaccent(${e})) ILIKE lower(unaccent(?)) || '%'`:`lower(unaccent(${e})) ILIKE '%' || lower(unaccent(?))`;r[s](u,[t]);return}if(i.dbType==="sqlite"){let u=n==="contains"?`lower(${e}) LIKE '%' || lower(?) || '%'`:n==="starts_with"?`lower(${e}) LIKE lower(?) || '%'`:`lower(${e}) LIKE '%' || lower(?)`;r[s](u,[t]);return}let a=n==="contains"?`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT('%', lower(unaccent(?)) COLLATE utf8mb4_general_ci, '%')`:n==="starts_with"?`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT(lower(unaccent(?)) COLLATE utf8mb4_general_ci, '%')`:`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT('%', lower(unaccent(?)) COLLATE utf8mb4_general_ci)`;r[s](a,[t])}function So(r,e){return r.fieldName.includes(".")?r.fieldName:`${e.rootTable}.${r.fieldName}`}function Hr(r){return Array.isArray(r)?r:typeof r=="string"&&r.includes(",")?r.split(",").map(e=>e.trim()):[r]}var Yn=W(()=>{"use strict"});function ne(r){return r.columns.find(e=>e.isPrimary)||null}var Lt=W(()=>{"use strict"});var Yr={};$n(Yr,{expandFieldsToJoinsAndSelect:()=>Xn});async function Xn(r,e,t,n,i,o){let s=[],a=[],u=await t(r);if(!u)return{select:[],batchFetchDescriptors:[]};let l=new Map;for(let c of e)if(c==="*"||!c.includes("."))l.has("")||l.set("",[]),l.get("").push(c);else{let p=c.split("."),d=p[0],g=p.slice(1).join(".");l.has(d)||l.set(d,[]),l.get(d).push(g)}let f=l.get("")||[];for(let c of f){if(c==="*"){let g=new Set;for(let h of u.relations||[])if(h.type==="many-to-one"||h.type==="one-to-one"&&!h.isInverse){let m=h.foreignKeyColumn||V(h.propertyName);m&&g.add(m)}let y=new Set;for(let h of u.columns)g.has(h.name)||(s.push(`${r}.${h.name}`),y.add(h.name));for(let h of u.relations||[])!l.has(h.propertyName)&&!y.has(h.propertyName)&&l.set(h.propertyName,["id"]);continue}if(c.includes(".")){s.push(`${r}.${c}`);continue}if(u.columns?.find(g=>g.name===c)){s.push(`${r}.${c}`);continue}if(u.relations?.find(g=>g.propertyName===c)){l.has(c)||l.set(c,["id"]);continue}}return l.forEach((c,p)=>{if(p==="")return;let d=u.relations?.find(b=>b.propertyName===p);if(!d)return;if(d.type==="many-to-one"||d.type==="one-to-one"&&!d.isInverse){let b=d.foreignKeyColumn||V(d.propertyName),S=F(r,n),w=F(b,n),T=F(p,n);s.push(`${S}.${w} as ${T}`)}let y=d.targetTableName||d.targetTable,h=o?.[p],m=h?.fields!=null?Array.isArray(h.fields)?h.fields:String(h.fields).split(",").map(b=>b.trim()).filter(Boolean):c;a.push({relationName:p,type:d.type,targetTable:y,fields:m,isInverse:d.isInverse,fkColumn:d.foreignKeyColumn,mappedBy:d.mappedBy,junctionTableName:d.junctionTableName,junctionSourceColumn:d.junctionSourceColumn,junctionTargetColumn:d.junctionTargetColumn,userFilter:h?.filter,userSort:h?.sort,userLimit:h?.limit!==void 0?Number(h.limit):void 0,userPage:h?.page!==void 0?Number(h.page):void 0,nestedDeep:h?.deep})}),{select:s,batchFetchDescriptors:a}}var Zn=W(()=>{"use strict";qe();xe()});var ut,tr=W(()=>{"use strict";qe();xe();Lt();tt();Yn();Nt();It();ln();ut=class{constructor(e,t="postgres",n){this.knex=e;this.dbType=t;this.metadata=n;this.pkField="id"}buildFilterTree(e,t){if(!e||!this.metadata)return null;let n=new oe,i=this.metadata?.tables?this.metadata:{tables:new Map(Object.entries(this.metadata))},{node:o}=$e(e,t,i,n);return o}parseSortTokens(e,t,n){return e?(Array.isArray(e)?e:e.split(",").map(o=>o.trim()).filter(Boolean)).map(o=>{let s=o.startsWith("-"),u=(s?o.slice(1):o).split(".");if(u.length===1)return{column:n?`${n}.${u[0]}`:`${t}.${u[0]}`,order:s?"desc":"asc"};let l=u[u.length-1];return{column:`${`__sort_${u.slice(0,-1).join("_")}`}.${l}`,order:s?"desc":"asc"}}):[]}applySortJoins(e,t,n,i){if(!t||!this.metadata)return;let o=Array.isArray(t)?t:t.split(",").map(a=>a.trim()).filter(Boolean),s=new Set;for(let a of o){let l=(a.startsWith("-")?a.slice(1):a).split(".");if(l.length<=1)continue;let f=n,c=i||n;for(let p=0;p<l.length-1;p++){let d=l[p],g=this.metadata?.tables?.get(f);if(!g)break;let y=g.relations?.find(b=>b.propertyName===d);if(!y)break;let h=y.targetTableName||y.targetTable,m=`__sort_${l.slice(0,p+1).join("_")}`;if(!s.has(m)){s.add(m);let b=y.foreignKeyColumn||V(y.propertyName),S=this.metadata?.tables?.get(h),w=S&&ne(S)?.name||"id";e.leftJoin(`${h} as ${m}`,`${m}.${w}`,`${c}.${b}`)}f=h,c=m}}}toKnexSelect(e,t){let n=e.indexOf(" as ");if(n!==-1){let i=e.substring(0,n),o=e.substring(n+4),s=F(o,this.dbType),a=t?`${t}.${F(i,this.dbType)}`:F(i,this.dbType);return this.knex.raw(`${a} as ${s}`)}return t?this.knex.raw(`${t}.${F(e,this.dbType)} as ${F(e,this.dbType)}`):e}keyOf(e){return e==null?"":String(e)}buildScalarRef(e,t){return{[t||this.pkField]:e}}getTargetPkField(e){return ne(e)?.name||"id"}resolveOwnerFkKey(e){return e.relationName}resolveInverseFkField(e){let t=e.fkColumn;return!t&&e.mappedBy&&(t=V(e.mappedBy)),t||(t=V(e.targetTable)),t}resolveParentPk(e){return e&&ne(e)?.name||"id"}resolveFields(e,t){let{rootFields:n,subRelations:i}=et(e),o=[];if(n.includes("*")){let l=new Set;for(let f of t.relations||[])if(f.type==="many-to-one"||f.type==="one-to-one"&&!f.isInverse){let c=f.foreignKeyColumn||V(f.propertyName);c&&l.add(c)}for(let f of t.columns)l.has(f.name)||o.push(f.name);for(let f of t.relations||[])i.has(f.propertyName)||i.set(f.propertyName,["id"])}else for(let l of n){let f=t.columns.find(c=>c.name===l);f?o.push(f.name):t.relations?.find(p=>p.propertyName===l)&&!i.has(l)&&i.set(l,["id"])}let s=ne(t)?.name||"id";o.includes(s)||o.push(s),i.forEach((l,f)=>{let c=t.relations?.find(p=>p.propertyName===f);if(c&&(c.type==="many-to-one"||c.type==="one-to-one"&&!c.isInverse)){let p=c.foreignKeyColumn||V(c.propertyName);p&&o.push(`${p} as ${f}`)}});let a=[];return i.forEach((l,f)=>{let c=t.relations?.find(d=>d.propertyName===f);if(!c)return;let p=c.targetTableName||c.targetTable;p&&a.push({relationName:f,type:c.type,targetTable:p,fields:l,isInverse:c.isInverse,fkColumn:c.foreignKeyColumn,mappedBy:c.mappedBy,junctionTableName:c.junctionTableName,junctionSourceColumn:c.junctionSourceColumn,junctionTargetColumn:c.junctionTargetColumn})}),{isPkOnly:o.length===1&&o[0]===s&&a.length===0,nestedDescs:a,fetchSpec:{selectCols:o,pkCol:s}}}async fetchOwner(e,t,n,i){let o=i?.userFilter?this.buildFilterTree(i.userFilter,e):null,s=i?.userSort?this.parseSortTokens(i.userSort,e):[],a=n.selectCols.map(u=>this.toKnexSelect(u));return Y(t,u=>{let l=this.knex(e).select(a).whereIn(n.pkCol,u);if(o&&X(l,o,{dbType:this.dbType,rootTable:e}),s.length>0){this.applySortJoins(l,i.userSort,e);for(let f of s)l.orderBy(f.column,f.order)}return l})}async fetchInverse(e,t,n,i,o){let s=t,a=i.selectCols.find(g=>g.startsWith(`${t} as `));a?s=a.split(" as ")[1].trim():i.selectCols.includes(t)||i.selectCols.push(t);let u=o?.userFilter?this.buildFilterTree(o.userFilter,e):null,l=o?.userSort?this.parseSortTokens(o.userSort,e):[],f=o?.userLimit,c=o?.userPage;if(f!==void 0&&f>0){let g=c?(c-1)*f:0,y=i.selectCols.map(b=>this.toKnexSelect(b)),h=await pe(n,async b=>{let S=this.knex(e).select(y).where(t,b);if(u&&X(S,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(S,o.userSort,e),l.length>0)for(let w of l)S.orderBy(w.column,w.order);else S.orderBy(i.pkCol,"asc");return g>0&&S.offset(g),S.limit(f),S},te),m=[];for(let[b,S]of h.entries()){let w=n.find(T=>String(T)===b);for(let T of S)T[t]||(T[t]=w??b),m.push(T)}return{docs:m,groupKeyField:s}}let p=i.selectCols.map(g=>this.toKnexSelect(g));return{docs:await Y(n,g=>{let y=this.knex(e).select(p).whereIn(t,g);if(u&&X(y,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(y,o?.userSort,e),l.length>0)for(let h of l)y.orderBy(h.column,h.order);else y.orderBy(i.pkCol,"asc");return y}),groupKeyField:s}}postProcessInverseChild(e,t,n){n||delete e[t]}async fetchM2M(e,t,n,i,o){let s=this.resolveParentPk(n),a=e.map(S=>S[s]).filter(S=>S!=null);if(a.length===0)return{grouped:new Map,docs:[]};let u=t.junctionTableName,l=t.junctionSourceColumn,f=t.junctionTargetColumn;if(!u||!l||!f)throw new Error(`Missing junction table config for relation: ${t.relationName}`);let c=t.userFilter?this.buildFilterTree(t.userFilter,t.targetTable):null,p=t.userSort?this.parseSortTokens(t.userSort,t.targetTable,"t"):[],d=t.userLimit,g=t.userPage;if(o.selectCols.length===1&&o.selectCols[0]===o.pkCol&&!c&&!d){let S=await Y(a,T=>this.knex(u).select([`${l} as __sourceId__`,`${f} as __targetId__`]).whereIn(l,T).orderBy(f,"asc")),w=new Map;for(let T of S){let k=this.keyOf(T.__sourceId__);w.has(k)||w.set(k,[]),w.get(k).push({[o.pkCol]:T.__targetId__})}return{grouped:w,docs:[]}}let h=o.selectCols.map(S=>this.toKnexSelect(S,"t"));if(d!==void 0&&d>0){let S=g?(g-1)*d:0,w=new Map;for(let v of a)w.set(this.keyOf(v),[]);let T=await pe(a,async v=>{let _=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${o.pkCol}`).select(h).where(`${u}.${l}`,v);if(c&&X(_,c,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(_,t.userSort,t.targetTable,"t"),p.length>0)for(let N of p)_.orderBy(N.column,N.order);else _.orderBy(`t.${o.pkCol}`,"asc");return S>0&&_.offset(S),_.limit(d),_},te),k=[];for(let[v,_]of T.entries()){w.set(v,_);for(let N of _)k.push(N)}return{grouped:w,docs:k}}let m=await Y(a,S=>{let w=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${o.pkCol}`).select([`${u}.${l} as __sourceId__`,...h]).whereIn(`${u}.${l}`,S);if(c&&X(w,c,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(w,t.userSort,t.targetTable,"t"),p.length>0)for(let T of p)w.orderBy(T.column,T.order);else w.orderBy(`t.${o.pkCol}`,"asc");return w}),b=new Map;for(let S of m){let w=S.__sourceId__;delete S.__sourceId__;let T=this.keyOf(w);b.has(T)||b.set(T,[]),b.get(T).push(S)}return{grouped:b,docs:m}}}});var ei={};$n(ei,{executeBatchFetches:()=>nr});async function nr(r,e,t,n,i=3,o=0,s,a="postgres",u,l){let f=new ut(r,a,u);await new ke(f,n,l).execute(e,t,i,o,s)}var rr=W(()=>{"use strict";tt();tr()});var xo={};$n(xo,{ALL_SUPPORTED_OPERATORS:()=>Rt,AuthenticationException:()=>Oe,AuthorizationException:()=>Ee,BadRequestException:()=>R,BatchFetchEngine:()=>ke,BusinessLogicException:()=>Ie,CHUNKED_FETCH_CONCURRENCY:()=>Dn,ConfigurationException:()=>_t,DEEP_TO_MANY_DEFAULT_LIMIT:()=>Wn,DEFAULT_TIMEOUT_MS:()=>Wt,DOTTED_PATH_MAX_HOPS:()=>wn,DatabaseException:()=>be,DuplicateResourceException:()=>Ae,ErrorHandler:()=>je,ExecutorEngineService:()=>Je,ExternalServiceException:()=>mt,FIELD_OPERATORS:()=>ee,FileNotFoundException:()=>Tt,FileSizeExceededException:()=>$t,FileUploadException:()=>wt,HttpException:()=>ve,ISOLATED_EXECUTOR_RUNTIME_LOG_PATH:()=>Ut,InvalidTokenException:()=>yt,IsolatedExecutorService:()=>Ve,JoinRegistry:()=>oe,LOGICAL_OPERATORS:()=>Mn,MongoBatchAdapter:()=>nt,MongoQueryExecutor:()=>st,PER_PARENT_CONCURRENCY:()=>te,QueryBuilderService:()=>dt,QueryPlanner:()=>Q,ResourceNotFoundException:()=>Me,SchemaException:()=>bt,ScriptContractService:()=>Vt,ScriptExecutionException:()=>me,ScriptTimeoutException:()=>ye,ServiceUnavailableException:()=>Pe,SqlBatchAdapter:()=>ut,SqlQueryExecutor:()=>ft,TokenExpiredException:()=>ht,ValidationException:()=>Ne,WHERE_IN_CHUNK_SIZE:()=>Se,WorkerPool:()=>Ct,appendIsolatedExecutorRuntimeLog:()=>z,applyOperatorToMatch:()=>en,applyRelationFilters:()=>Qe,applyWhereToKnex:()=>ct,assertFieldOperatorValueIsClean:()=>nn,buildAggregateFilter:()=>ot,buildMongoCharFoldMapJson:()=>In,buildMongoFoldTextSearchJs:()=>Gt,buildRelationSubquery:()=>Et,buildSqlWherePartsFromFieldAst:()=>jt,buildWhereClause:()=>ae,camelToSnake:()=>$r,chunkedFetch:()=>Y,compileScriptSource:()=>qt,computeEngineTuning:()=>Fn,createEnfyraKernel:()=>Fo,dslOpToCompareOp:()=>tn,encodeMainThreadToIsolate:()=>xn,escapeSqlValue:()=>Gr,executeBatchFetches:()=>nr,executeMongoBatchFetches:()=>cn,expandFieldsToJoinsAndSelect:()=>Xn,getEffectiveCpuCount:()=>Cn,getEffectiveMemoryBytes:()=>St,getEngineTuning:()=>zt,getExecutableScript:()=>Fi,getForeignKeyColumnName:()=>V,getIoAbortSignal:()=>yr,getJunctionColumnNames:()=>xt,getJunctionTableName:()=>Ft,getPrimaryKeyColumn:()=>ne,getScriptLegacyField:()=>wi,getShortFkConstraintName:()=>wr,getShortFkName:()=>Sr,getShortIndexName:()=>kr,getShortPkName:()=>_r,hasAggregateQuery:()=>Qn,hasLogicalOperators:()=>ge,isExecutableJavaScript:()=>Si,isScriptTable:()=>Ti,mergeAggregateValue:()=>Fe,normalizeAggregateQuery:()=>it,normalizeFlowStepScriptConfig:()=>Ri,normalizeScriptLanguage:()=>$i,normalizeScriptPatch:()=>Ci,normalizeScriptRecord:()=>ki,parseBatchFields:()=>et,parseFields:()=>un,parseFilter:()=>$e,perParentRun:()=>pe,quoteIdentifier:()=>F,resolveExecutableScript:()=>xi,rewriteFilterDenyingFields:()=>ri,rewriteSortDroppingDenied:()=>ii,scriptContractService:()=>Z,separateFilters:()=>G,snakeToCamel:()=>Tr,throwUnsupportedFieldOperator:()=>De,transformCode:()=>kn,validateDeepOptions:()=>ir,validateFilterShape:()=>U,whereToMongoFilter:()=>Ye});module.exports=ui(xo);var fi={"@CACHE":"$ctx.$cache","@REPOS":"$ctx.$repos","@HELPERS":"$ctx.$helpers","@FETCH":"$ctx.$helpers.$fetch","@LOGS":"$ctx.$logs","@BODY":"$ctx.$body","@DATA":"$ctx.$data","@PARAMS":"$ctx.$params","@QUERY":"$ctx.$query","@USER":"$ctx.$user","@REQ":"$ctx.$req","@RES":"$ctx.$res","@SHARE":"$ctx.$share","@API":"$ctx.$api","@UPLOADED_FILE":"$ctx.$uploadedFile","@PKGS":"$ctx.$pkgs","@SOCKET":"$ctx.$socket","@TRIGGER":"$ctx.$trigger","@FLOW":"$ctx.$flow","@FLOW_PAYLOAD":"$ctx.$flow.$payload","@FLOW_LAST":"$ctx.$flow.$last","@FLOW_META":"$ctx.$flow.$meta","@THROW400":"$ctx.$throw['400']","@THROW401":"$ctx.$throw['401']","@THROW403":"$ctx.$throw['403']","@THROW404":"$ctx.$throw['404']","@THROW409":"$ctx.$throw['409']","@THROW422":"$ctx.$throw['422']","@THROW429":"$ctx.$throw['429']","@THROW500":"$ctx.$throw['500']","@THROW503":"$ctx.$throw['503']","@THROW":"$ctx.$throw","@ERROR":"$ctx.$error","@STATUS":"$ctx.$statusCode"},he=0,sr=1,ar=2,Sn=3,lr=4,cr=5;function kn(r){let e=r.length,t="",n=0,i=he,o=0,s=0;for(;n<e;){let a=r[n],u=r[n+1];switch(i){case he:if(a==='"')i=sr,t+=a,n++;else if(a==="'")i=ar,t+=a,n++;else if(a==="`")i=Sn,t+=a,n++;else if(a==="/"&&u==="/")i=lr,t+=a+u,n+=2;else if(a==="/"&&u==="*")i=cr,t+=a+u,n+=2;else if(a==="@"||a==="#"||a==="%"){let l=n,f=a;for(n++;n<e;){let p=r[n];if(p>="A"&&p<="Z"||p>="0"&&p<="9"||p==="_")n++;else break}let c=r.substring(l,n);if(f==="@"){let p=fi[c];t+=p||c}else f==="#"?t+="$ctx.$repos."+c.substring(1):t+="$ctx.$pkgs."+c.substring(1)}else a==="{"?(o>0&&s++,t+=a,n++):a==="}"&&o>0?s>0?(s--,t+=a,n++):(o--,t+=a,n++,i=Sn):(t+=a,n++);break;case sr:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==='"'&&(i=he),n++);break;case ar:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==="'"&&(i=he),n++);break;case Sn:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):a==="`"?(i=he,n++):a==="$"&&n+1<e&&r[n+1]==="{"?(t+="{",n+=2,o++,i=he):n++;break;case lr:t+=a,a===`
|
|
1
|
+
"use strict";var oi=Object.create;var Dt=Object.defineProperty;var si=Object.getOwnPropertyDescriptor;var ai=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,ci=Object.prototype.hasOwnProperty;var W=(r,e)=>()=>(r&&(e=r(r=0)),e);var $n=(r,e)=>{for(var t in e)Dt(r,t,{get:e[t],enumerable:!0})},or=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ai(e))!ci.call(r,i)&&i!==t&&Dt(r,i,{get:()=>e[i],enumerable:!(n=si(e,i))||n.enumerable});return r};var ce=(r,e,t)=>(t=r!=null?oi(li(r)):{},or(e||!r||!r.__esModule?Dt(t,"default",{value:r,enumerable:!0}):t,r)),ui=r=>or(Dt({},"__esModule",{value:!0}),r);function br(r){return Rn.createHash("md5").update(r).digest("hex").substring(0,8)}function _r(r){return r.length<=mr-3?`${r}_pk`:`j_${br(r)}_pk`}function wr(r,e,t){let n=`${r}_${e}_foreign`;return n.length<=mr?n:`j_${br(r)}_${t}_fk`}function Ft(r,e,t){let n=`${r}:${e}:${t}`;return`j_${Rn.createHash("sha1").update(n).digest("hex").slice(0,12)}`}function V(r){return`${r}Id`}function xt(r,e,t){return{sourceColumn:"sourceId",targetColumn:"targetId"}}function Tr(r){return r.replace(/_([a-z])/g,e=>e[1].toUpperCase())}function $r(r){return r.replace(/([A-Z])/g,"_$1").toLowerCase()}function Sr(r,e,t){return`${r}_${e}_${t}_fk`}function kr(r,e,t){return`${r}_${e}_${t}_idx`}var Rn,mr,qe=W(()=>{"use strict";Rn=ce(require("crypto")),mr=63});function tn(r){return Qi[r]??null}var ee,Mn,Rt,Qi,vt=W(()=>{"use strict";ee=new Set(["_eq","_neq","_gt","_gte","_lt","_lte","_in","_not_in","_nin","_contains","_starts_with","_ends_with","_between","_is_null","_is_not_null"]),Mn=new Set(["_and","_or","_not"]),Rt=[...Array.from(Mn),...Array.from(ee)],Qi={_eq:"eq",_neq:"neq",_gt:"gt",_gte:"gte",_lt:"lt",_lte:"lte",_in:"in",_not_in:"not_in",_nin:"not_in",_contains:"contains",_starts_with:"starts_with",_ends_with:"ends_with",_between:"between"}});var R,ue=W(()=>{"use strict";R=class extends Error{constructor(t="Bad Request",n){let i=Array.isArray(t),o=i?t.join("; ")||"Bad Request":typeof t=="string"?t:JSON.stringify(t);super(o);this.statusCode=400;this.errorCode="BAD_REQUEST";this.name="BadRequestException",this.details=n,i&&(this.messages=t)}}});function Rr(){let r=process.env.DB_URI||"";return r.startsWith("mongodb://")||r.startsWith("mongodb+srv://")}var vr=W(()=>{"use strict"});function De(r,e,t){throw new R({message:`Unsupported filter operator "${r}" on field "${e}"${t?` (table "${t}")`:""}. Supported operators: ${Rt.join(", ")}.`,error:"UnsupportedFilterOperator",operator:r,field:e,supportedOperators:Rt})}function nn(r,e,t){if(!e||typeof e!="object"||Array.isArray(e))return;let n=Rr();for(let i of Object.keys(e))if(i.startsWith("_")&&!ee.has(i)){if(n&&i==="_id")continue;De(i,r,t)}}function U(r,e,t){if(!r||typeof r!="object")return;let n=t?.tables?.get(e),i=new Set((n?.columns??[]).map(s=>s.name)),o=new Map((n?.relations??[]).map(s=>[s.propertyName,s]));for(let[s,a]of Object.entries(r)){if(Ji.has(s)){if(Array.isArray(a))for(let l of a)U(l,e,t);else a&&typeof a=="object"&&U(a,e,t);continue}let u=o.get(s);if(u){if(a&&typeof a=="object"&&!Array.isArray(a)){nn(s,a,e);let l=u.targetTableName||u.targetTable;if(l){let f=Object.keys(a).filter(c=>!c.startsWith("_"));if(f.length>0){let c={};for(let p of f)c[p]=a[p];U(c,l,t)}}}continue}s.startsWith("_")&&!i.has(s)&&s!=="_id"&&De(s,s,e),a&&typeof a=="object"&&!Array.isArray(a)&&nn(s,a,e)}}var Ji,Xe=W(()=>{"use strict";ue();vt();vr();Ji=new Set(["_and","_or","_not"])});function $e(r,e,t,n){return!r||typeof r!="object"?{node:null,hasRelationFilters:!1}:rn(r,{tableName:e,metadata:t,registry:n,parentJoinId:null,currentJoinId:null,currentTable:e})}function rn(r,e){if(!r||typeof r!="object")return{node:null,hasRelationFilters:!1};let t=[],n=!1;for(let[i,o]of Object.entries(r)){let s=zi(i,o,e);s.hasRelationFilters&&(n=!0),s.node&&t.push(s.node)}return t.length===0?{node:null,hasRelationFilters:n}:t.length===1?{node:t[0],hasRelationFilters:n}:{node:{kind:"and",children:t},hasRelationFilters:n}}function zi(r,e,t){if(r==="_and")return Ir("and",e,t);if(r==="_or")return Ir("or",e,t);if(r==="_not"){let l=rn(e,t);return l.node?{node:{kind:"not",child:l.node},hasRelationFilters:l.hasRelationFilters}:{node:null,hasRelationFilters:l.hasRelationFilters}}let n=t.metadata?.tables?.get(t.currentTable),i=n?.columns?.some(l=>l.name==="_id"&&l.isPrimary),o=n?.columns?.some(l=>l.name==="id"),a=r==="id"?i&&!o?"_id":"id":r,u=n?.relations?.find(l=>l.propertyName===a);return u?Vi(a,e,u,t):n&&!n.columns?.find(f=>f.name===a)?(r.startsWith("_")&&r!=="_id"&&De(r,r,t.currentTable),console.warn(`[filter-parser] Unknown field "${r}" on table "${t.currentTable}" \u2014 skipped (not a column or relation in metadata).`),{node:null,hasRelationFilters:!1}):qi(a,e,t)}function Ir(r,e,t){if(!Array.isArray(e))return{node:null,hasRelationFilters:!1};let n=[],i=!1;for(let o of e){let s=rn(o,t);s.hasRelationFilters&&(i=!0),s.node&&n.push(s.node)}return n.length===0?{node:null,hasRelationFilters:i}:n.length===1?{node:n[0],hasRelationFilters:i}:{node:{kind:r,children:n},hasRelationFilters:i}}function Vi(r,e,t,n){if(typeof e!="object"||e===null)return{node:null,hasRelationFilters:!0};let i=Object.keys(e),o=i.length===1&&(i[0]==="_is_null"||i[0]==="_is_not_null"||i[0]==="_eq"||i[0]==="_neq"||i[0]==="_in"||i[0]==="_not_in"||i[0]==="_nin"),s=n.registry.registerWithParent(n.currentTable,r,n.metadata,"left",n.currentJoinId,"filter");if(o&&i[0]==="_is_null")return s?{node:{kind:"relation_exists",joinId:s,negate:e._is_null===!0},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(o&&i[0]==="_is_not_null")return s?{node:{kind:"relation_exists",joinId:s,negate:e._is_not_null!==!0},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(o&&(i[0]==="_eq"||i[0]==="_neq")&&e[i[0]]===null)return s?{node:{kind:"relation_exists",joinId:s,negate:i[0]==="_eq"},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(!s)return{node:null,hasRelationFilters:!0};let a=t.targetTableName||t.targetTable,u={...n,parentJoinId:n.currentJoinId,currentJoinId:s,currentTable:a},l=new Set(["_eq","_neq","_in","_not_in","_nin","_gt","_gte","_lt","_lte"]),c=i.length>0&&i.every(d=>l.has(d))?{id:e}:e;return{node:rn(c,u).node,hasRelationFilters:!0}}function qi(r,e,t){let n={joinId:t.currentJoinId,fieldName:r,isUuid:Gi(r,t)};if(e===null)return{node:{kind:"compare",field:n,op:"is_null",value:!0},hasRelationFilters:!1};if(typeof e!="object")return{node:{kind:"compare",field:n,op:"eq",value:e},hasRelationFilters:!1};for(let s of Object.keys(e))s.startsWith("_")&&!ee.has(s)&&De(s,r,t.tableName);let i=Object.entries(e).filter(([s])=>ee.has(s));if(i.length===0)return{node:{kind:"compare",field:n,op:"eq",value:e},hasRelationFilters:!1};let o=[];for(let[s,a]of i){let u=Hi(n,s,a);u&&o.push(u)}return o.length===0?{node:null,hasRelationFilters:!1}:o.length===1?{node:o[0],hasRelationFilters:!1}:{node:{kind:"and",children:o},hasRelationFilters:!1}}function Hi(r,e,t){if(e==="_is_null")return{kind:"compare",field:r,op:"is_null",value:t===!0};if(e==="_is_not_null")return{kind:"compare",field:r,op:"is_null",value:t!==!0};let n=tn(e);return n?{kind:"compare",field:r,op:n,value:t}:null}function Gi(r,e){let t=e.metadata?.tables?.get(e.currentTable);if(!t)return!1;let n=r.includes(".")?r.split(".").pop():r,i=t.columns?.find(s=>s.name===n);if(!i)return!1;let o=(i.type||"").toLowerCase();return o==="uuid"||o==="uuidv4"||o.includes("uuid")}var It=W(()=>{"use strict";vt();Xe()});var oe,Nt=W(()=>{"use strict";oe=class{constructor(){this.map=new Map}size(){return this.map.size}has(e){return this.map.has(e)}get(e){return this.map.get(e)}getAll(){return Array.from(this.map.values())}registerWithParent(e,t,n,i="left",o=null,s="data"){let a=o?`${o}.${t}`:t;if(this.map.has(a)){let p=this.map.get(a);return i==="inner"&&(p.joinType="inner"),p.purposes.includes(s)||p.purposes.push(s),a}let u=n?.tables?.get(e);if(!u)return null;let l=u.relations?.find(p=>p.propertyName===t);if(!l)return null;let f=l.targetTableName||l.targetTable;if(!f)return null;let c={id:a,propertyName:t,parentTable:e,targetTable:f,relationType:l.type,parentJoinId:o,joinType:i,relationMeta:l,purposes:[s]};return this.map.set(a,c),a}}});async function Y(r,e){if(r.length<=Se)return e(r);let t=[];for(let a=0;a<r.length;a+=Se)t.push(r.slice(a,a+Se));let n=[],i=0;async function o(){for(;i<t.length;){let a=i++;n[a]=await e(t[a])}}let s=Math.min(Dn,t.length);return await Promise.all(Array.from({length:s},o)),n.flat()}function et(r){let e=[],t=new Map;for(let n of r)if(n==="*"||!n.includes("."))e.push(n);else{let i=n.split("."),o=i[0],s=i.slice(1).join(".");t.has(o)||t.set(o,[]),t.get(o).push(s)}return{rootFields:e,subRelations:t}}var te,Se,Dn,Wn,ke,tt=W(()=>{"use strict";ue();te=16,Se=5e3,Dn=4,Wn=10;ke=class{constructor(e,t,n){this.adapter=e;this.metadataGetter=t;this.trace=n}enrichNestedDescs(e,t){return!t||Object.keys(t).length===0?e:e.map(n=>{let i=t[n.relationName];if(!i)return n;let o=i.fields!=null?Array.isArray(i.fields)?i.fields:String(i.fields).split(",").map(s=>s.trim()).filter(Boolean):n.fields;return{...n,fields:o,userFilter:i.filter??n.userFilter,userSort:i.sort??n.userSort,userLimit:i.limit!==void 0?Number(i.limit):n.userLimit,userPage:i.page!==void 0?Number(i.page):n.userPage,nestedDeep:i.deep??n.nestedDeep}})}withDefaultToManyLimit(e){return e.userLimit===void 0&&(e.type==="one-to-many"||e.type==="many-to-many")?{...e,userLimit:Wn}:e}assertLocalSortFields(e,t){if(!e.userSort)return;let n=Array.isArray(e.userSort)?e.userSort:String(e.userSort).split(",").map(i=>i.trim()).filter(Boolean);for(let i of n){let o=i.startsWith("-")?i.slice(1):i;if(o.includes("."))throw new R(`Sort field '${o}' is not supported on deep relation '${e.relationName}'. Sort only by local fields defined on '${e.targetTable}'.`);let s=t.columns?.some(u=>u.name===o),a=o==="id"&&t.columns?.some(u=>u.name==="_id");if(!s&&!a)throw new R(`Sort field '${o}' does not exist on '${e.targetTable}'. Sort only by fields defined on the table metadata.`)}}async execute(e,t,n=3,i=0,o){if(e.length===0||t.length===0||i>=n)return;let s;o&&(s=await this.metadataGetter(o)??void 0),await Promise.all(t.map(a=>{let u=this.withDefaultToManyLimit(a);return u.type==="many-to-one"||u.type==="one-to-one"&&!u.isInverse?this.fetchOwnerRelation(e,u,n,i):u.type==="one-to-many"||u.type==="one-to-one"&&u.isInverse?this.fetchInverseRelation(e,u,n,i,s):u.type==="many-to-many"?this.fetchM2MRelation(e,u,n,i,s):Promise.resolve()}))}async fetchOwnerRelation(e,t,n,i){let o=this.adapter.resolveOwnerFkKey(t),s=new Set,a=[];for(let m of e){let b=m[o];if(b==null)continue;let S=this.adapter.keyOf(b);s.has(S)||(s.add(S),a.push(b))}if(a.length===0){for(let m of e)m[t.relationName]=null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn];return}let u=await this.metadataGetter(t.targetTable);if(!u)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,u);let{isPkOnly:l,nestedDescs:f,fetchSpec:c}=this.adapter.resolveFields(t.fields,u),p=this.adapter.getTargetPkField(u);if(l){for(let m of e){let b=m[o];m[t.relationName]=b!=null?this.adapter.buildScalarRef(b,p):null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn]}return}let d=performance.now(),g=await this.adapter.fetchOwner(t.targetTable,a,c,t);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,d,{relationType:t.type,targetTable:t.targetTable,strategy:"batch-in",roundtrips:Math.ceil(a.length/Se)||1,rowsTransferred:g.length,rowsReturned:g.length,rowsDiscarded:0,userFilter:!!t.userFilter,userSort:!!t.userSort});let y=this.enrichNestedDescs(f,t.nestedDeep);y.length>0&&await this.execute(g,y,n,i+1,t.targetTable);let h=new Map;for(let m of g)h.set(this.adapter.keyOf(m[p]),m);for(let m of e){let b=m[o];m[t.relationName]=b!=null&&h.get(this.adapter.keyOf(b))||null,o!==t.relationName&&delete m[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete m[t.fkColumn]}}async fetchInverseRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=e.map(_=>_[s]).filter(_=>_!=null);if(a.length===0)return;let u=this.adapter.resolveInverseFkField(t),l=await this.metadataGetter(t.targetTable);if(!l)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,l);let{nestedDescs:f,fetchSpec:c}=this.adapter.resolveFields(t.fields,l),p=performance.now(),{docs:d,groupKeyField:g}=await this.adapter.fetchInverse(t.targetTable,u,a,c,t),y=new Map,h=t.fields.includes(u)||t.fields.includes("*");for(let _ of d){let N=_[g],I=this.adapter.keyOf(N);y.has(I)||y.set(I,[]),y.get(I).push(_)}let m=t.userLimit!==void 0&&t.userLimit>0,b=m?"per-parent-c16":"batch-in",S=m?a.length:Math.ceil(a.length/Se)||1,w=m?Math.ceil(a.length/te):void 0,T=Array.from(y.values()).reduce((_,N)=>_+N.length,0);if(this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,p,{relationType:t.type,targetTable:t.targetTable,strategy:b,roundtrips:S,concurrencyWaves:w,rowsTransferred:d.length,rowsReturned:T,rowsDiscarded:d.length-T,userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort}),this.adapter.postProcessInverseChild)for(let _ of d)this.adapter.postProcessInverseChild(_,u,h);let k=this.enrichNestedDescs(f,t.nestedDeep);k.length>0&&await this.execute(d,k,n,i+1,t.targetTable);let v=t.type==="one-to-one";for(let _ of e){let N=this.adapter.keyOf(_[s]),I=y.get(N)||[];_[t.relationName]=v?I[0]||null:I}}async fetchM2MRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=e.map(w=>w[s]).filter(w=>w!=null);if(a.length===0)return;let u=await this.metadataGetter(t.targetTable);if(!u)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,u);let{nestedDescs:l,fetchSpec:f}=this.adapter.resolveFields(t.fields,u),c=performance.now(),{grouped:p,docs:d}=await this.adapter.fetchM2M(e,t,o,u,f),g=t.userLimit!==void 0&&t.userLimit>0,y=g?"m2m-per-parent-c16":"m2m-batch",h=g?a.length:Math.ceil(a.length/Se)||1,m=g?Math.ceil(a.length/te):void 0,b=Array.from(p.values()).reduce((w,T)=>w+T.length,0);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,c,{relationType:t.type,targetTable:t.targetTable,strategy:y,roundtrips:h,concurrencyWaves:m,rowsTransferred:d.length,rowsReturned:b,rowsDiscarded:d.length-b,userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort});let S=this.enrichNestedDescs(l,t.nestedDeep);S.length>0&&d.length>0&&await this.execute(d,S,n,i+1,t.targetTable);for(let w of e){let T=this.adapter.keyOf(w[s]);w[t.relationName]=p.get(T)||[]}}}});async function pe(r,e,t){let n=new Map,i=0;async function o(){for(;i<r.length;){let u=i++,l=r[u];n.set(String(l),await e(l))}}let s=Math.min(t,r.length);if(s===0)return n;let a=Array.from({length:s},o);return await Promise.all(a),n}var ln=W(()=>{"use strict"});function F(r,e){switch(e){case"mysql":return`\`${r}\``;case"postgres":case"pg":case"sqlite":return`"${r}"`;case"mongodb":return r;default:return`\`${r}\``}}var xe=W(()=>{"use strict"});function X(r,e,t){e&&yn(r,e,t,"and")}function yn(r,e,t,n){switch(e.kind){case"true":return;case"false":n==="or"?r.orWhereRaw("1 = 0"):r.whereRaw("1 = 0");return;case"and":{let i=function(){for(let o of e.children)this.where(function(){yn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"or":{let i=function(){for(let o of e.children)this.orWhere(function(){yn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"not":{let i=function(){this.whereNot(function(){yn(this,e.child,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"compare":$o(r,e,t,n);return;case"relation_exists":console.warn(`[sql-render-filter] relation_exists node reached renderer directly (rootTable=${t.rootTable}, joinId=${e.joinId}) \u2014 expected to be handled by applyRelationFilters. Filter silently skipped.`);return}}function $o(r,e,t,n){if(e.field.joinId!==null){console.warn(`[sql-render-filter] compare node has joinId=${e.field.joinId} (field=${e.field.fieldName}) but reached renderer \u2014 expected join path to handle it. Filter silently skipped.`);return}let i=So(e.field,t),o=!!e.field.isUuid,s=t.dbType==="postgres",a=n==="or"?"orWhere":"where",u=n==="or"?"orWhereRaw":"whereRaw",l=n==="or"?"orWhereIn":"whereIn",f=n==="or"?"orWhereNotIn":"whereNotIn",c=n==="or"?"orWhereBetween":"whereBetween",p=n==="or"?"orWhereNull":"whereNull",d=n==="or"?"orWhereNotNull":"whereNotNull";switch(e.op){case"eq":o&&s&&typeof e.value=="string"?r[u](`${i} = ?::uuid`,[e.value]):r[a](i,"=",e.value);return;case"neq":o&&s&&typeof e.value=="string"?r[u](`${i} != ?::uuid`,[e.value]):r[a](i,"!=",e.value);return;case"gt":o&&s&&typeof e.value=="string"?r[u](`${i} > ?::uuid`,[e.value]):r[a](i,">",e.value);return;case"gte":o&&s&&typeof e.value=="string"?r[u](`${i} >= ?::uuid`,[e.value]):r[a](i,">=",e.value);return;case"lt":o&&s&&typeof e.value=="string"?r[u](`${i} < ?::uuid`,[e.value]):r[a](i,"<",e.value);return;case"lte":o&&s&&typeof e.value=="string"?r[u](`${i} <= ?::uuid`,[e.value]):r[a](i,"<=",e.value);return;case"in":{let g=Hr(e.value);o&&s&&g.every(y=>typeof y=="string")?r[u](`${i} = ANY(?::uuid[])`,[g]):r[l](i,g);return}case"not_in":{let g=Hr(e.value);o&&s&&g.every(y=>typeof y=="string")?r[u](`${i} != ALL(?::uuid[])`,[g]):r[f](i,g);return}case"contains":Gn(r,i,e.value,"contains",t,n);return;case"starts_with":Gn(r,i,e.value,"starts_with",t,n);return;case"ends_with":Gn(r,i,e.value,"ends_with",t,n);return;case"between":Array.isArray(e.value)&&e.value.length===2&&r[c](i,[e.value[0],e.value[1]]);return;case"is_null":e.value===!0?r[p](i):r[d](i);return}}function Gn(r,e,t,n,i,o){let s=o==="or"?"orWhereRaw":"whereRaw";if(i.dbType==="postgres"){let u=n==="contains"?`lower(unaccent(${e})) ILIKE '%' || lower(unaccent(?)) || '%'`:n==="starts_with"?`lower(unaccent(${e})) ILIKE lower(unaccent(?)) || '%'`:`lower(unaccent(${e})) ILIKE '%' || lower(unaccent(?))`;r[s](u,[t]);return}if(i.dbType==="sqlite"){let u=n==="contains"?`lower(${e}) LIKE '%' || lower(?) || '%'`:n==="starts_with"?`lower(${e}) LIKE lower(?) || '%'`:`lower(${e}) LIKE '%' || lower(?)`;r[s](u,[t]);return}let a=n==="contains"?`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT('%', lower(unaccent(?)) COLLATE utf8mb4_general_ci, '%')`:n==="starts_with"?`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT(lower(unaccent(?)) COLLATE utf8mb4_general_ci, '%')`:`lower(unaccent(${e})) COLLATE utf8mb4_general_ci LIKE CONCAT('%', lower(unaccent(?)) COLLATE utf8mb4_general_ci)`;r[s](a,[t])}function So(r,e){return r.fieldName.includes(".")?r.fieldName:`${e.rootTable}.${r.fieldName}`}function Hr(r){return Array.isArray(r)?r:typeof r=="string"&&r.includes(",")?r.split(",").map(e=>e.trim()):[r]}var Yn=W(()=>{"use strict"});function ne(r){return r.columns.find(e=>e.isPrimary)||null}var Lt=W(()=>{"use strict"});var Yr={};$n(Yr,{expandFieldsToJoinsAndSelect:()=>Xn});async function Xn(r,e,t,n,i,o){let s=[],a=[],u=await t(r);if(!u)return{select:[],batchFetchDescriptors:[]};let l=new Map;for(let c of e)if(c==="*"||!c.includes("."))l.has("")||l.set("",[]),l.get("").push(c);else{let p=c.split("."),d=p[0],g=p.slice(1).join(".");l.has(d)||l.set(d,[]),l.get(d).push(g)}let f=l.get("")||[];for(let c of f){if(c==="*"){let g=new Set;for(let h of u.relations||[])if(h.type==="many-to-one"||h.type==="one-to-one"&&!h.isInverse){let m=h.foreignKeyColumn||V(h.propertyName);m&&g.add(m)}let y=new Set;for(let h of u.columns)g.has(h.name)||(s.push(`${r}.${h.name}`),y.add(h.name));for(let h of u.relations||[])!l.has(h.propertyName)&&!y.has(h.propertyName)&&l.set(h.propertyName,["id"]);continue}if(c.includes(".")){s.push(`${r}.${c}`);continue}if(u.columns?.find(g=>g.name===c)){s.push(`${r}.${c}`);continue}if(u.relations?.find(g=>g.propertyName===c)){l.has(c)||l.set(c,["id"]);continue}}return l.forEach((c,p)=>{if(p==="")return;let d=u.relations?.find(b=>b.propertyName===p);if(!d)return;if(d.type==="many-to-one"||d.type==="one-to-one"&&!d.isInverse){let b=d.foreignKeyColumn||V(d.propertyName),S=F(r,n),w=F(b,n),T=F(p,n);s.push(`${S}.${w} as ${T}`)}let y=d.targetTableName||d.targetTable,h=o?.[p],m=h?.fields!=null?Array.isArray(h.fields)?h.fields:String(h.fields).split(",").map(b=>b.trim()).filter(Boolean):c;a.push({relationName:p,type:d.type,targetTable:y,fields:m,isInverse:d.isInverse,fkColumn:d.foreignKeyColumn,mappedBy:d.mappedBy,junctionTableName:d.junctionTableName,junctionSourceColumn:d.junctionSourceColumn,junctionTargetColumn:d.junctionTargetColumn,userFilter:h?.filter,userSort:h?.sort,userLimit:h?.limit!==void 0?Number(h.limit):void 0,userPage:h?.page!==void 0?Number(h.page):void 0,nestedDeep:h?.deep})}),{select:s,batchFetchDescriptors:a}}var Zn=W(()=>{"use strict";qe();xe()});var ut,tr=W(()=>{"use strict";qe();xe();Lt();tt();Yn();Nt();It();ln();ut=class{constructor(e,t="postgres",n){this.knex=e;this.dbType=t;this.metadata=n;this.pkField="id"}buildFilterTree(e,t){if(!e||!this.metadata)return null;let n=new oe,i=this.metadata?.tables?this.metadata:{tables:new Map(Object.entries(this.metadata))},{node:o}=$e(e,t,i,n);return o}parseSortTokens(e,t,n){return e?(Array.isArray(e)?e:e.split(",").map(o=>o.trim()).filter(Boolean)).map(o=>{let s=o.startsWith("-"),u=(s?o.slice(1):o).split(".");if(u.length===1)return{column:n?`${n}.${u[0]}`:`${t}.${u[0]}`,order:s?"desc":"asc"};let l=u[u.length-1];return{column:`${`__sort_${u.slice(0,-1).join("_")}`}.${l}`,order:s?"desc":"asc"}}):[]}applySortJoins(e,t,n,i){if(!t||!this.metadata)return;let o=Array.isArray(t)?t:t.split(",").map(a=>a.trim()).filter(Boolean),s=new Set;for(let a of o){let l=(a.startsWith("-")?a.slice(1):a).split(".");if(l.length<=1)continue;let f=n,c=i||n;for(let p=0;p<l.length-1;p++){let d=l[p],g=this.metadata?.tables?.get(f);if(!g)break;let y=g.relations?.find(b=>b.propertyName===d);if(!y)break;let h=y.targetTableName||y.targetTable,m=`__sort_${l.slice(0,p+1).join("_")}`;if(!s.has(m)){s.add(m);let b=y.foreignKeyColumn||V(y.propertyName),S=this.metadata?.tables?.get(h),w=S&&ne(S)?.name||"id";e.leftJoin(`${h} as ${m}`,`${m}.${w}`,`${c}.${b}`)}f=h,c=m}}}toKnexSelect(e,t){let n=e.indexOf(" as ");if(n!==-1){let i=e.substring(0,n),o=e.substring(n+4),s=F(o,this.dbType),a=t?`${t}.${F(i,this.dbType)}`:F(i,this.dbType);return this.knex.raw(`${a} as ${s}`)}return t?this.knex.raw(`${t}.${F(e,this.dbType)} as ${F(e,this.dbType)}`):e}keyOf(e){return e==null?"":String(e)}buildScalarRef(e,t){return{[t||this.pkField]:e}}getTargetPkField(e){return ne(e)?.name||"id"}resolveOwnerFkKey(e){return e.relationName}resolveInverseFkField(e){let t=e.fkColumn;return!t&&e.mappedBy&&(t=V(e.mappedBy)),t||(t=V(e.targetTable)),t}resolveParentPk(e){return e&&ne(e)?.name||"id"}resolveFields(e,t){let{rootFields:n,subRelations:i}=et(e),o=[];if(n.includes("*")){let l=new Set;for(let f of t.relations||[])if(f.type==="many-to-one"||f.type==="one-to-one"&&!f.isInverse){let c=f.foreignKeyColumn||V(f.propertyName);c&&l.add(c)}for(let f of t.columns)l.has(f.name)||o.push(f.name);for(let f of t.relations||[])i.has(f.propertyName)||i.set(f.propertyName,["id"])}else for(let l of n){let f=t.columns.find(c=>c.name===l);f?o.push(f.name):t.relations?.find(p=>p.propertyName===l)&&!i.has(l)&&i.set(l,["id"])}let s=ne(t)?.name||"id";o.includes(s)||o.push(s),i.forEach((l,f)=>{let c=t.relations?.find(p=>p.propertyName===f);if(c&&(c.type==="many-to-one"||c.type==="one-to-one"&&!c.isInverse)){let p=c.foreignKeyColumn||V(c.propertyName);p&&o.push(`${p} as ${f}`)}});let a=[];return i.forEach((l,f)=>{let c=t.relations?.find(d=>d.propertyName===f);if(!c)return;let p=c.targetTableName||c.targetTable;p&&a.push({relationName:f,type:c.type,targetTable:p,fields:l,isInverse:c.isInverse,fkColumn:c.foreignKeyColumn,mappedBy:c.mappedBy,junctionTableName:c.junctionTableName,junctionSourceColumn:c.junctionSourceColumn,junctionTargetColumn:c.junctionTargetColumn})}),{isPkOnly:o.length===1&&o[0]===s&&a.length===0,nestedDescs:a,fetchSpec:{selectCols:o,pkCol:s}}}async fetchOwner(e,t,n,i){let o=i?.userFilter?this.buildFilterTree(i.userFilter,e):null,s=i?.userSort?this.parseSortTokens(i.userSort,e):[],a=n.selectCols.map(u=>this.toKnexSelect(u));return Y(t,u=>{let l=this.knex(e).select(a).whereIn(n.pkCol,u);if(o&&X(l,o,{dbType:this.dbType,rootTable:e}),s.length>0){this.applySortJoins(l,i.userSort,e);for(let f of s)l.orderBy(f.column,f.order)}return l})}async fetchInverse(e,t,n,i,o){let s=t,a=i.selectCols.find(g=>g.startsWith(`${t} as `));a?s=a.split(" as ")[1].trim():i.selectCols.includes(t)||i.selectCols.push(t);let u=o?.userFilter?this.buildFilterTree(o.userFilter,e):null,l=o?.userSort?this.parseSortTokens(o.userSort,e):[],f=o?.userLimit,c=o?.userPage;if(f!==void 0&&f>0){let g=c?(c-1)*f:0,y=i.selectCols.map(b=>this.toKnexSelect(b)),h=await pe(n,async b=>{let S=this.knex(e).select(y).where(t,b);if(u&&X(S,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(S,o.userSort,e),l.length>0)for(let w of l)S.orderBy(w.column,w.order);else S.orderBy(i.pkCol,"asc");return g>0&&S.offset(g),S.limit(f),S},te),m=[];for(let[b,S]of h.entries()){let w=n.find(T=>String(T)===b);for(let T of S)T[t]||(T[t]=w??b),m.push(T)}return{docs:m,groupKeyField:s}}let p=i.selectCols.map(g=>this.toKnexSelect(g));return{docs:await Y(n,g=>{let y=this.knex(e).select(p).whereIn(t,g);if(u&&X(y,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(y,o?.userSort,e),l.length>0)for(let h of l)y.orderBy(h.column,h.order);else y.orderBy(i.pkCol,"asc");return y}),groupKeyField:s}}postProcessInverseChild(e,t,n){n||delete e[t]}async fetchM2M(e,t,n,i,o){let s=this.resolveParentPk(n),a=e.map(S=>S[s]).filter(S=>S!=null);if(a.length===0)return{grouped:new Map,docs:[]};let u=t.junctionTableName,l=t.junctionSourceColumn,f=t.junctionTargetColumn;if(!u||!l||!f)throw new Error(`Missing junction table config for relation: ${t.relationName}`);let c=t.userFilter?this.buildFilterTree(t.userFilter,t.targetTable):null,p=t.userSort?this.parseSortTokens(t.userSort,t.targetTable,"t"):[],d=t.userLimit,g=t.userPage;if(o.selectCols.length===1&&o.selectCols[0]===o.pkCol&&!c&&!d){let S=await Y(a,T=>this.knex(u).select([`${l} as __sourceId__`,`${f} as __targetId__`]).whereIn(l,T).orderBy(f,"asc")),w=new Map;for(let T of S){let k=this.keyOf(T.__sourceId__);w.has(k)||w.set(k,[]),w.get(k).push({[o.pkCol]:T.__targetId__})}return{grouped:w,docs:[]}}let h=o.selectCols.map(S=>this.toKnexSelect(S,"t"));if(d!==void 0&&d>0){let S=g?(g-1)*d:0,w=new Map;for(let v of a)w.set(this.keyOf(v),[]);let T=await pe(a,async v=>{let _=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${o.pkCol}`).select(h).where(`${u}.${l}`,v);if(c&&X(_,c,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(_,t.userSort,t.targetTable,"t"),p.length>0)for(let N of p)_.orderBy(N.column,N.order);else _.orderBy(`t.${o.pkCol}`,"asc");return S>0&&_.offset(S),_.limit(d),_},te),k=[];for(let[v,_]of T.entries()){w.set(v,_);for(let N of _)k.push(N)}return{grouped:w,docs:k}}let m=await Y(a,S=>{let w=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${o.pkCol}`).select([`${u}.${l} as __sourceId__`,...h]).whereIn(`${u}.${l}`,S);if(c&&X(w,c,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(w,t.userSort,t.targetTable,"t"),p.length>0)for(let T of p)w.orderBy(T.column,T.order);else w.orderBy(`t.${o.pkCol}`,"asc");return w}),b=new Map;for(let S of m){let w=S.__sourceId__;delete S.__sourceId__;let T=this.keyOf(w);b.has(T)||b.set(T,[]),b.get(T).push(S)}return{grouped:b,docs:m}}}});var ei={};$n(ei,{executeBatchFetches:()=>nr});async function nr(r,e,t,n,i=3,o=0,s,a="postgres",u,l){let f=new ut(r,a,u);await new ke(f,n,l).execute(e,t,i,o,s)}var rr=W(()=>{"use strict";tt();tr()});var xo={};$n(xo,{ALL_SUPPORTED_OPERATORS:()=>Rt,AuthenticationException:()=>Oe,AuthorizationException:()=>Ee,BadRequestException:()=>R,BatchFetchEngine:()=>ke,BusinessLogicException:()=>Ie,CHUNKED_FETCH_CONCURRENCY:()=>Dn,ConfigurationException:()=>_t,DEEP_TO_MANY_DEFAULT_LIMIT:()=>Wn,DEFAULT_TIMEOUT_MS:()=>Wt,DOTTED_PATH_MAX_HOPS:()=>wn,DatabaseException:()=>be,DuplicateResourceException:()=>Ae,ErrorHandler:()=>je,ExecutorEngineService:()=>Je,ExternalServiceException:()=>mt,FIELD_OPERATORS:()=>ee,FileNotFoundException:()=>Tt,FileSizeExceededException:()=>$t,FileUploadException:()=>wt,HttpException:()=>ve,ISOLATED_EXECUTOR_RUNTIME_LOG_PATH:()=>Ut,InvalidTokenException:()=>yt,IsolatedExecutorService:()=>Ve,JoinRegistry:()=>oe,LOGICAL_OPERATORS:()=>Mn,MongoBatchAdapter:()=>nt,MongoQueryExecutor:()=>st,PER_PARENT_CONCURRENCY:()=>te,QueryBuilderService:()=>dt,QueryPlanner:()=>Q,ResourceNotFoundException:()=>Me,SchemaException:()=>bt,ScriptContractService:()=>Vt,ScriptExecutionException:()=>me,ScriptTimeoutException:()=>ye,ServiceUnavailableException:()=>Pe,SqlBatchAdapter:()=>ut,SqlQueryExecutor:()=>ft,TokenExpiredException:()=>ht,ValidationException:()=>Ne,WHERE_IN_CHUNK_SIZE:()=>Se,WorkerPool:()=>Ct,appendIsolatedExecutorRuntimeLog:()=>z,applyOperatorToMatch:()=>en,applyRelationFilters:()=>Qe,applyWhereToKnex:()=>ct,assertFieldOperatorValueIsClean:()=>nn,buildAggregateFilter:()=>ot,buildMongoCharFoldMapJson:()=>In,buildMongoFoldTextSearchJs:()=>Gt,buildRelationSubquery:()=>Et,buildSqlWherePartsFromFieldAst:()=>jt,buildWhereClause:()=>ae,camelToSnake:()=>$r,chunkedFetch:()=>Y,compileScriptSource:()=>qt,computeEngineTuning:()=>Fn,createEnfyraKernel:()=>Fo,dslOpToCompareOp:()=>tn,encodeMainThreadToIsolate:()=>xn,escapeSqlValue:()=>Gr,executeBatchFetches:()=>nr,executeMongoBatchFetches:()=>cn,expandFieldsToJoinsAndSelect:()=>Xn,getEffectiveCpuCount:()=>Cn,getEffectiveMemoryBytes:()=>St,getEngineTuning:()=>zt,getExecutableScript:()=>Fi,getForeignKeyColumnName:()=>V,getIoAbortSignal:()=>yr,getJunctionColumnNames:()=>xt,getJunctionTableName:()=>Ft,getPrimaryKeyColumn:()=>ne,getScriptLegacyField:()=>wi,getShortFkConstraintName:()=>wr,getShortFkName:()=>Sr,getShortIndexName:()=>kr,getShortPkName:()=>_r,hasAggregateQuery:()=>Qn,hasLogicalOperators:()=>ge,isExecutableJavaScript:()=>Si,isScriptTable:()=>Ti,mergeAggregateValue:()=>Fe,normalizeAggregateQuery:()=>it,normalizeFlowStepScriptConfig:()=>Ri,normalizeScriptLanguage:()=>$i,normalizeScriptPatch:()=>Ci,normalizeScriptRecord:()=>ki,parseBatchFields:()=>et,parseFields:()=>un,parseFilter:()=>$e,perParentRun:()=>pe,quoteIdentifier:()=>F,resolveExecutableScript:()=>xi,rewriteFilterDenyingFields:()=>ri,rewriteSortDroppingDenied:()=>ii,scriptContractService:()=>Z,separateFilters:()=>G,snakeToCamel:()=>Tr,throwUnsupportedFieldOperator:()=>De,transformCode:()=>kn,validateDeepOptions:()=>ir,validateFilterShape:()=>U,whereToMongoFilter:()=>Ye});module.exports=ui(xo);var fi={"@CACHE":"$ctx.$cache","@REPOS":"$ctx.$repos","@HELPERS":"$ctx.$helpers","@FETCH":"$ctx.$helpers.$fetch","@LOGS":"$ctx.$logs","@BODY":"$ctx.$body","@ENV":"$ctx.$env","@DATA":"$ctx.$data","@PARAMS":"$ctx.$params","@QUERY":"$ctx.$query","@USER":"$ctx.$user","@REQ":"$ctx.$req","@RES":"$ctx.$res","@SHARE":"$ctx.$share","@API":"$ctx.$api","@UPLOADED_FILE":"$ctx.$uploadedFile","@PKGS":"$ctx.$pkgs","@SOCKET":"$ctx.$socket","@TRIGGER":"$ctx.$trigger","@FLOW":"$ctx.$flow","@FLOW_PAYLOAD":"$ctx.$flow.$payload","@FLOW_LAST":"$ctx.$flow.$last","@FLOW_META":"$ctx.$flow.$meta","@THROW400":"$ctx.$throw['400']","@THROW401":"$ctx.$throw['401']","@THROW403":"$ctx.$throw['403']","@THROW404":"$ctx.$throw['404']","@THROW409":"$ctx.$throw['409']","@THROW422":"$ctx.$throw['422']","@THROW429":"$ctx.$throw['429']","@THROW500":"$ctx.$throw['500']","@THROW503":"$ctx.$throw['503']","@THROW":"$ctx.$throw","@ERROR":"$ctx.$error","@STATUS":"$ctx.$statusCode"},he=0,sr=1,ar=2,Sn=3,lr=4,cr=5;function kn(r){let e=r.length,t="",n=0,i=he,o=0,s=0;for(;n<e;){let a=r[n],u=r[n+1];switch(i){case he:if(a==='"')i=sr,t+=a,n++;else if(a==="'")i=ar,t+=a,n++;else if(a==="`")i=Sn,t+=a,n++;else if(a==="/"&&u==="/")i=lr,t+=a+u,n+=2;else if(a==="/"&&u==="*")i=cr,t+=a+u,n+=2;else if(a==="@"||a==="#"||a==="%"){let l=n,f=a;for(n++;n<e;){let p=r[n];if(p>="A"&&p<="Z"||p>="0"&&p<="9"||p==="_")n++;else break}let c=r.substring(l,n);if(f==="@"){let p=fi[c];t+=p||c}else f==="#"?t+="$ctx.$repos."+c.substring(1):t+="$ctx.$pkgs."+c.substring(1)}else a==="{"?(o>0&&s++,t+=a,n++):a==="}"&&o>0?s>0?(s--,t+=a,n++):(o--,t+=a,n++,i=Sn):(t+=a,n++);break;case sr:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==='"'&&(i=he),n++);break;case ar:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==="'"&&(i=he),n++);break;case Sn:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):a==="`"?(i=he,n++):a==="$"&&n+1<e&&r[n+1]==="{"?(t+="{",n+=2,o++,i=he):n++;break;case lr:t+=a,a===`
|
|
2
2
|
`&&(i=he),n++;break;case cr:t+=a,a==="*"&&u==="/"?(t+=u,n+=2,i=he):n++;break}}return t}var Wt=3e4,Je=class{constructor(e){this.isolatedExecutorService=e.isolatedExecutorService}register(e,t){e.routeData.__codeBlocks||(e.routeData.__codeBlocks=[]),e.routeData.__codeBlocks.push(t)}async runBatch(e,t){let n=e.routeData.__codeBlocks||[];return n.length===0?{value:void 0,shortCircuit:!1}:this.isolatedExecutorService.runBatch(n,e.routeData.context,t??Wt)}async run(e,t,n=Wt){return this.isolatedExecutorService.run(e,t,n)}};var Kt=class{constructor(e){this.context=e}log(e){console.log(this.format(e))}warn(e){console.warn(this.format(e))}error(e,t){console.error(this.format(e)),t&&console.error(t)}debug(e){process.env.DEBUG&&console.debug(this.format(e))}verbose(e){process.env.DEBUG&&console.debug(this.format(e))}format(e){let t=typeof e=="string"?e:JSON.stringify(e);return this.context?`[${this.context}] ${t}`:t}};var dr=require("async_hooks"),pr=ce(require("path")),gr=require("worker_threads");var ye=class extends Error{constructor(t=0,n){let i=typeof t=="number"&&t>0?`${t}ms`:String(t||"configured timeout");super(`Script execution timed out after ${i}`);this.statusCode=408;this.errorCode="SCRIPT_TIMEOUT";this.name="ScriptTimeoutException",this.details={timeoutMs:t,scriptId:n}}},me=class extends Error{constructor(t,n,i){super(`Script execution failed: ${t}`);this.statusCode=400;this.errorCode="SCRIPT_EXECUTION_ERROR";this.name="ScriptExecutionException",this.details={scriptId:n,...i}}},j=class extends Error{constructor(t,n,i,o){super(t);this.statusCode=n;this.errorCode=i;this.name=this.constructor.name,this.details=o}},ve=class extends j{constructor(e,t,n){super(e,t,`HTTP_${t}`,n)}},Ie=class extends j{constructor(e,t){super(e,400,"BUSINESS_LOGIC_ERROR",t)}},Ne=class extends j{constructor(e,t){super(e,422,"VALIDATION_ERROR",t)}},Me=class extends j{constructor(e,t){super(t?`${e} with identifier '${t}' not found`:`${e} not found`,404,"RESOURCE_NOT_FOUND",{resource:e,identifier:t})}},Ae=class extends j{constructor(e,t,n){super(`${e} with ${t} '${n}' already exists`,409,"DUPLICATE_RESOURCE",{resource:e,field:t,value:n})}},Oe=class extends j{constructor(e="Authentication failed",t){super(e,401,"AUTHENTICATION_ERROR",t)}},Ee=class extends j{constructor(e="Insufficient permissions",t){super(e,403,"AUTHORIZATION_ERROR",t)}},ht=class extends j{constructor(){super("Token has expired",401,"TOKEN_EXPIRED")}},yt=class extends j{constructor(){super("Invalid token provided",401,"INVALID_TOKEN")}},be=class extends j{constructor(e,t){super(e,500,"DATABASE_ERROR",t)}},mt=class extends j{constructor(e,t,n){super(`External service '${e}' error: ${t}`,502,"EXTERNAL_SERVICE_ERROR",{service:e,details:n})}},Pe=class extends j{constructor(e){super(`Service '${e}' is currently unavailable`,503,"SERVICE_UNAVAILABLE",{service:e})}},bt=class extends j{constructor(e,t){super(e,400,"SCHEMA_ERROR",t)}},_t=class extends j{constructor(e,t){super(e,500,"CONFIGURATION_ERROR",t)}},wt=class extends j{constructor(e,t){super(e,400,"FILE_UPLOAD_ERROR",t)}},Tt=class extends j{constructor(e="File not found"){super(e,404,"FILE_NOT_FOUND")}},$t=class extends j{constructor(e,t){super("File size exceeded",413,"FILE_SIZE_EXCEEDED",{maxSize:e,actualSize:t})}};var je=class{static createException(e,t,n,i,o){if(e?.includes("$throw"))switch(e){case"$throw.businessLogic":return new Ie(n||"Bad request",o);case"$throw.validation":return new Ne(n||"Validation failed",o);case"$throw.notFound":return new Me(n||"Resource");case"$throw.duplicate":return new Ae(n||"Resource","field","value");case"$throw.unauthorized":return new Oe(n||"Unauthorized");case"$throw.forbidden":return new Ee(n||"Forbidden");case"$throw.tokenExpired":return new ht;case"$throw.invalidToken":return new yt;case"$throw.database":return new be(n||"Database error",o);case"$throw.dbQuery":return new be(n||"Query error",o);case"$throw.externalService":return new mt(n||"Service",n||"Error",o);case"$throw.serviceUnavailable":return new Pe(n||"Service");case"$throw.rateLimit":return new ve(n||"Rate limit exceeded",429);case"$throw.scriptError":return new me(n||"Script error",i,o);case"$throw.scriptTimeout":return new ye(o?.timeout||5e3,i);case"$throw.schema":return new bt(n||"Schema error",o);case"$throw.config":return new _t(n||"Configuration error",o);case"$throw.fileUpload":return new wt(n||"File upload error",o);case"$throw.fileNotFound":return new Tt(n||"File not found");case"$throw.fileSizeExceeded":return new $t(o?.maxSize||"unknown",o?.actualSize||"unknown");case"$throw.400":return new Ie(n||"Bad request",o);case"$throw.401":return new Oe(n||"Authentication required");case"$throw.403":return new Ee(n||"Insufficient permissions");case"$throw.404":return new Me(n||"Resource");case"$throw.409":return new Ae(n||"Resource","field","value");case"$throw.422":return new Ne(n||"Validation failed",o);case"$throw.429":return new ve(n||"Rate limit exceeded",429);case"$throw.500":return new be(n||"Internal server error",o);case"$throw.503":return new Pe(n||"Service");default:return new me(n||"Unknown error",i)}if(t)switch(t){case 400:return new Ie(n||"Bad request",o);case 401:return new Oe(n||"Authentication required");case 403:return new Ee(n||"Insufficient permissions");case 404:return new Me(n||"Resource");case 409:return new Ae(n||"Resource","field","value");case 422:return new Ne(n||"Validation failed",o);case 429:return new ve(n||"Rate limit exceeded",429);case 500:return new be(n||"Internal server error",o);case 503:return new Pe(n||"Service");default:return new me(n||"Unknown error",i,o)}return new me(n||"Unknown error",i,o)}};var Qt=ce(require("fs")),Jt=ce(require("path")),Ut=Jt.join(process.cwd(),"test","logs","isolated-executor-runtime.log");function di(){return process.env.ISOLATED_EXECUTOR_FILE_LOG==="0"?!1:process.env.ISOLATED_EXECUTOR_FILE_LOG==="1"?!0:process.env.JEST_WORKER_ID!==void 0}var pi=di();function z(r){if(pi)try{let e=Jt.dirname(Ut);Qt.mkdirSync(e,{recursive:!0});let t=JSON.stringify({ts:new Date().toISOString(),pid:process.pid,...r})+`
|
|
3
3
|
`;Qt.appendFileSync(Ut,t)}catch{}}var _e=ce(require("os")),ze=ce(require("fs"));function St(){try{let r=ze.readFileSync("/sys/fs/cgroup/memory.max","utf8").trim();if(r!=="max"){let e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<_e.totalmem())return e}}catch{}try{let r=ze.readFileSync("/sys/fs/cgroup/memory/memory.limit_in_bytes","utf8").trim(),e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<_e.totalmem())return e}catch{}return _e.totalmem()}function Cn(){let r=_e.availableParallelism?.()||_e.cpus()?.length||1;try{let e=ze.readFileSync("/sys/fs/cgroup/cpu.max","utf8").trim(),[t,n]=e.split(/\s+/);if(t!=="max"){let i=parseInt(t,10),o=parseInt(n,10);if(i>0&&o>0)return Math.max(1,Math.ceil(i/o))}}catch{}try{let e=parseInt(ze.readFileSync("/sys/fs/cgroup/cpu/cpu.cfs_quota_us","utf8").trim(),10),t=parseInt(ze.readFileSync("/sys/fs/cgroup/cpu/cpu.cfs_period_us","utf8").trim(),10);if(e>0&&t>0)return Math.max(1,Math.ceil(e/t))}catch{}return r}var gi=.25,hi=2,yi=2048,mi=40,bi=128,_i=32;function Fn(r){let e=Math.max(1,Math.trunc(r.logicalCpuCount)||1),t=Math.max(1,r.totalMemoryBytes/(1024*1024)),n=Math.min(bi,Math.max(mi,Math.round(t/_i))),i=t*gi,o=Math.max(1,Math.floor(i/n)),s=Math.max(1,Math.min(e,2,o)),a=Math.min(256,Math.max(16,Math.floor(t/n/s))),u=t<yi?1:hi,l=Math.max(1,Math.min(u,Math.floor(i/(s*n))));return{maxConcurrentWorkers:s,isolateMemoryLimitMb:n,tasksPerWorkerCap:a,isolatePoolSize:l}}function zt(){return Fn({logicalCpuCount:Cn(),totalMemoryBytes:St()})}var Le=ce(require("typescript"));var kt={oauth_config_definition:"",route_handler_definition:"logic",pre_hook_definition:"code",post_hook_definition:"code",bootstrap_script_definition:"logic",websocket_definition:"connectionHandlerScript",websocket_event_definition:"handlerScript"};function wi(r){return Z.getLegacyField(r)}function Ti(r){return Z.isScriptTable(r)}function $i(r){return Z.normalizeLanguage(r)}var Vt=class{getLegacyField(e){return kt[e]}isScriptTable(e){return e in kt}normalizeLanguage(e){return e==="javascript"?"javascript":"typescript"}compileSource(e,t){if(e==null||e==="")return null;let n=kn(String(e)),o=this.normalizeLanguage(t)==="javascript"?n:this.transpileTypeScript(n);return this.assertExecutableJavaScript(o),o}isExecutableJavaScript(e){if(!e)return!1;try{return this.assertExecutableJavaScript(e),!0}catch{return!1}}normalizeRecord(e,t){if(!this.isScriptTable(e)||!t||typeof t!="object")return t;let n={...t},i=this.getLegacyField(e);return i&&(n.sourceCode===void 0||n.sourceCode===null||n.sourceCode==="")&&n[i]!==void 0&&(n.sourceCode=n[i]),n.scriptLanguage=this.normalizeLanguage(n.scriptLanguage),n.compiledCode=this.compileSource(n.sourceCode,n.scriptLanguage),i&&i in n&&delete n[i],n}normalizePatch(e,t,n){if(!this.isScriptTable(e)||!t||typeof t!="object")return t;let i=this.getLegacyField(e),o=Object.prototype.hasOwnProperty.call(t,"sourceCode")||(i?Object.prototype.hasOwnProperty.call(t,i):!1),s=Object.prototype.hasOwnProperty.call(t,"scriptLanguage");if(!o&&!s)return t;let a=o?t.sourceCode??(i?t[i]:void 0):n?.sourceCode??(i&&n?n[i]:void 0),u=s?t.scriptLanguage:n?.scriptLanguage,l={...t};return o&&(l.sourceCode=a??null),l.scriptLanguage=this.normalizeLanguage(u),l.compiledCode=this.compileSource(a,l.scriptLanguage),i&&i in l&&delete l[i],l}getExecutableScript(e){return this.resolveExecutableScript(e).code}resolveExecutableScript(e){if(!e||typeof e!="object")return{code:null,compiledCode:null,shouldPersistCompiledCode:!1};if(typeof e.sourceCode=="string"&&e.sourceCode!==""){let n=this.compileSource(e.sourceCode,e.scriptLanguage);return{code:n,compiledCode:n,shouldPersistCompiledCode:n!==e.compiledCode}}let t=Object.keys(kt).find(n=>kt[n]in e);if(t){let n=e[kt[t]];if(typeof n=="string"&&n!==""){let i=this.compileSource(n,e.scriptLanguage);return{code:i,compiledCode:i,shouldPersistCompiledCode:i!==e.compiledCode}}}return typeof e.compiledCode=="string"&&e.compiledCode!==""&&this.isExecutableJavaScript(e.compiledCode)?{code:e.compiledCode,compiledCode:e.compiledCode,shouldPersistCompiledCode:!1}:{code:null,compiledCode:null,shouldPersistCompiledCode:!1}}normalizeFlowStepScriptConfig(e){if(!e||typeof e!="object")return e;let t=e.type;if(t!=="script"&&t!=="condition")return e;let n={...e},i=e.config;if(typeof i=="string")try{i=JSON.parse(i)}catch{return e}let o=i&&typeof i=="object"?i:{};n.sourceCode=n.sourceCode??o.sourceCode??o.code??null,n.scriptLanguage=this.normalizeLanguage(n.scriptLanguage??o.scriptLanguage),n.compiledCode=this.compileSource(n.sourceCode,n.scriptLanguage);let s={...o};return delete s.sourceCode,delete s.scriptLanguage,delete s.compiledCode,delete s.code,{...n,config:typeof e.config=="string"?JSON.stringify(s):s}}repairContract(e){let t=this.normalizeLanguage(e?.scriptLanguage),n=e?.sourceCode??null,i=this.compileSource(n,t);return{sourceCode:n,scriptLanguage:t,code:i,compiledCode:i,shouldPersistCompiledCode:i!==e?.compiledCode}}transpileTypeScript(e){let t=Le.default.transpileModule(e,{compilerOptions:{target:Le.default.ScriptTarget.ES2022,module:Le.default.ModuleKind.CommonJS,importsNotUsedAsValues:Le.default.ImportsNotUsedAsValues.Remove,sourceMap:!1,inlineSourceMap:!1,inlineSources:!1},reportDiagnostics:!0}),n=t.diagnostics?.find(i=>i.category===Le.default.DiagnosticCategory.Error);if(n)throw new Error(Le.default.flattenDiagnosticMessageText(n.messageText,`
|
|
4
4
|
`));return t.outputText.trimEnd()}assertExecutableJavaScript(e){e&&new Function(`return (async () => {
|