@enfyra/kernel 1.0.10 → 1.0.11

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.
@@ -1,4 +1,4 @@
1
- "use strict";var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var I=T((Ae,j)=>{"use strict";var{fork:re}=require("child_process"),ae=require("path");function ne({workerDir:e,activeTaskContexts:t}){let s=new Map,a=new Map,r=null,i=0;function l(u){for(let n of a.values())n.reject(u);a.clear()}function _(u){let n=typeof u=="string"?JSON.parse(u):u;if(n?.error)throw new Error(n.error);return n?.value}async function d(u){let n=t.get(u.taskId);if(!n)throw new Error(`Package callback context not found: ${u.taskId}`);let o=JSON.stringify(u.callbackId),f=JSON.stringify(u.argsJson||"[]"),g=await n.evalClosure(`return __invokeRuntimeCallback(${o}, ${f});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return _(g)}function k(){if(r&&r.connected)return r;let u=ae.join(e,"package-runtime.child.js"),n=re(u,[],{stdio:["ignore","ignore","ignore","ipc"]});return r=n,n.on("message",o=>{if(!o||!o.id)return;if(o.type==="pkgCallbackCall"){d(o).then(g=>{try{n.send({type:"pkgCallbackResult",id:o.id,value:g})}catch{}}).catch(g=>{try{n.send({type:"pkgCallbackError",id:o.id,error:{message:g.message,stack:g.stack}})}catch{}});return}let f=a.get(o.id);if(f)if(a.delete(o.id),o.ok)f.resolve(o.value);else{let g=new Error(o.error?.message||"Package runtime call failed");g.stack=o.error?.stack||g.stack,f.reject(g)}}),n.on("exit",(o,f)=>{r===n&&(r=null),l(new Error(`Package runtime exited${f?` with signal ${f}`:` with code ${o}`}`))}),n.on("error",o=>{r===n&&(r=null),l(o)}),n}function y(u){return new Promise((n,o)=>{let f=k(),g=`pkg_${++i}`;a.set(g,{resolve:n,reject:o});try{f.send({...u,id:g},w=>{w&&(a.delete(g),o(w))})}catch(w){a.delete(g),o(w)}})}function m(u){try{if(!r||!r.connected)return;r.send({...u,id:`pkg_${++i}`,fire:!0})}catch{}}async function c(u,n){let o=s.get(u);if(!o)throw new Error("Package context is not available");if(n.handleId)return y({op:n.kind==="get"?"handleGet":"handleCall",taskId:u,handleId:n.handleId,path:n.path||[],argsJson:n.argsJson||"[]"});let f=o.get(n.packageName);if(!f)throw new Error(`Package "${n.packageName}" is not available`);return y({op:n.kind==="construct"?"construct":"call",taskId:u,packageName:n.packageName,package:{name:f.name,fileUrl:f.fileUrl},path:n.path||[],argsJson:n.argsJson||"[]"})}function h(u,n){s.set(u,n)}function v(u){s.delete(u),m({op:"releaseTask",taskId:u})}function p(){if(r){try{r.kill()}catch{}r=null}}return{cleanupTaskPackages:v,executePackageRuntimeCall:c,setTaskPackages:h,shutdownPackageRuntime:p}}j.exports={createPackageRuntimeBridge:ne}});var H=T((Ne,U)=>{"use strict";var se=`
1
+ "use strict";var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var F=U((Ee,H)=>{"use strict";var{fork:se}=require("child_process"),oe=require("path");function ie({workerDir:e,activeTaskContexts:t}){let n=new Map,a=new Map,r=null,o=0;function c(p){for(let i of a.values())i.reject(p);a.clear()}function _(p){let i=typeof p=="string"?JSON.parse(p):p;if(i?.error)throw new Error(i.error);return i?.value}async function f(p){let i=t.get(p.taskId);if(!i)throw new Error(`Package callback context not found: ${p.taskId}`);let s=JSON.stringify(p.callbackId),g=JSON.stringify(p.argsJson||"[]"),u=await i.evalClosure(`return __invokeRuntimeCallback(${s}, ${g});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return _(u)}function v(){if(r&&r.connected)return r;let p=oe.join(e,"package-runtime.child.js"),i=se(p,[],{stdio:["ignore","ignore","ignore","ipc"]});return r=i,i.on("message",s=>{if(!s||!s.id)return;if(s.type==="pkgCallbackCall"){f(s).then(u=>{try{i.send({type:"pkgCallbackResult",id:s.id,value:u})}catch{}}).catch(u=>{try{i.send({type:"pkgCallbackError",id:s.id,error:{message:u.message,stack:u.stack}})}catch{}});return}let g=a.get(s.id);if(g)if(a.delete(s.id),s.ok)g.resolve(s.value);else{let u=new Error(s.error?.message||"Package runtime call failed");u.stack=s.error?.stack||u.stack,g.reject(u)}}),i.on("exit",(s,g)=>{r===i&&(r=null),c(new Error(`Package runtime exited${g?` with signal ${g}`:` with code ${s}`}`))}),i.on("error",s=>{r===i&&(r=null),c(s)}),i}function d(p){return new Promise((i,s)=>{let g=v(),u=`pkg_${++o}`;a.set(u,{resolve:i,reject:s});try{g.send({...p,id:u},y=>{y&&(a.delete(u),s(y))})}catch(y){a.delete(u),s(y)}})}function m(p){try{if(!r||!r.connected)return;r.send({...p,id:`pkg_${++o}`,fire:!0})}catch{}}async function l(p,i){let s=n.get(p);if(!s)throw new Error("Package context is not available");if(i.handleId)return d({op:i.kind==="get"?"handleGet":"handleCall",taskId:p,handleId:i.handleId,path:i.path||[],argsJson:i.argsJson||"[]"});let g=s.get(i.packageName);if(!g)throw new Error(`Package "${i.packageName}" is not available`);return d({op:i.kind==="construct"?"construct":"call",taskId:p,packageName:i.packageName,package:{name:g.name,fileUrl:g.fileUrl},path:i.path||[],argsJson:i.argsJson||"[]"})}function h(p,i){n.set(p,i)}function w(p){n.delete(p),m({op:"releaseTask",taskId:p})}function k(){if(r){try{r.kill()}catch{}r=null}}return{cleanupTaskPackages:w,executePackageRuntimeCall:l,setTaskPackages:h,shutdownPackageRuntime:k}}H.exports={createPackageRuntimeBridge:ie}});var K=U((Te,L)=>{"use strict";var ce=`
2
2
  "use strict";
3
3
  let $ctx = {};
4
4
  let $pkgs = {};
@@ -626,50 +626,51 @@ function __cleanupTask() {
626
626
  __runtimeCallbacks = new Map();
627
627
  return true;
628
628
  }
629
- `;function oe(e){return se.replace("%%PKG_SETUP%%",e)}U.exports={buildSetupCode:oe}});var{parentPort:N}=require("worker_threads"),F=require("fs"),{fileURLToPath:ie}=require("url"),{createPackageRuntimeBridge:ce}=I(),{buildSetupCode:le}=H(),C;try{C=require("isolated-vm")}catch(e){N.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var S=new Map,B=0,R=new Map,A=ce({workerDir:__dirname,activeTaskContexts:R}),ue=500,pe=5e3,fe=32,L=new WeakMap,V=new WeakMap,z=new WeakMap,b={created:0,reused:0,released:0,evicted:0,scrubFailed:0},P=null,_e=0,K=0,D=0;async function de(){let e=Date.now();if(e-K<pe)return D;if(K=e,!P)return 0;let t=0;for(let s of P){let a=s?.isolate;if(!(!a||a.isDisposed))try{let r=await a.getHeapStatistics(),i=r.heap_size_limit||1,l=r.used_heap_size/i;l>t&&(t=l)}catch{}}return D=t,t}async function $(e){e.heapRatio=await de(),e.contextStats=ge(),N.postMessage(e)}function ge(){let e=0;if(P)for(let t of P)e+=t?.idleContexts?.length||0;return{...b,idle:e}}function W(e,t){if(!P){let r=Math.max(1,Math.trunc(Number(t)||8));P=new Array(r).fill(null)}let s=_e++%P.length,a=P[s];return(!a||!a.isolate||a.isolate.isDisposed)&&(a={isolate:new C.Isolate({memoryLimit:e}),idleContexts:[]},P[s]=a),a}async function x(e,t,s){let a=L.get(e);a||(a=new Map,L.set(e,a));let r=a.get(t);if(r)return r;let i=await e.compileScript(t,{filename:s});if(a.set(t,i),a.size>ue){let l=a.keys().next().value;a.delete(l)}return i}N.on("message",async e=>{if(e.type==="execute")be(e).catch(async t=>{await $({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")Se(e).catch(async t=>{await $({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="callResult"){let t=S.get(e.callId);t&&(S.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=S.get(e.callId);t&&(S.delete(e.callId),t.reject(new Error(e.error)))}});function ye(e,t,s){return new Promise((a,r)=>{let i=`cb_${++B}`;S.set(i,{resolve:a,reject:r}),N.postMessage({type:t,id:e,callId:i,...s})})}function he(e,t,s){N.postMessage({type:t,id:e,callId:`f_${++B}`,...s})}function me(e){if(typeof e.sourceCode=="string"&&e.sourceCode.length>0)return e.sourceCode;let t=e.filePath;return!t&&typeof e.fileUrl=="string"&&e.fileUrl.startsWith("file://")&&(t=ie(e.fileUrl)),!t||!F.existsSync(t)?null:F.readFileSync(t,"utf8")}async function ke(e,t,s){try{let a=me(s);if(!a)return null;let r=await e.compileModule(a,{filename:`pkg:${s.safeName}`});await r.instantiate(t,l=>{throw new Error(`Unresolved import in package ${s.safeName}: ${l}`)}),await r.evaluate({timeout:1e4});let i=await r.namespace.get("default");return i!==void 0&&i.typeof!=="undefined"?i.derefInto({release:!1}):r.namespace.derefInto({release:!1})}catch{return null}}function G(e,t){let s=r=>{let i=2166136261;for(let l=0;l<r.length;l++)i^=r.charCodeAt(l),i=Math.imul(i,16777619);return(i>>>0).toString(36)},a=new Set(t||[]);return e.map(r=>{let i=r.cacheKey||`${r.filePath||""}:${r.fileUrl||""}:${r.mtimeMs||""}:${r.size||""}:${s(r.sourceCode||"")}`,l=a.has(r.name)?"isolate":"proxy";return`${r.name}:${r.version||""}:${i}:${l}`}).join("|")}function X(e,t){let s=new Set(t.map(d=>d.name)),a=new Set,r=String(e||""),i=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,l=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,_=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let d of[i,l])for(let k of r.matchAll(d)){let y=k[2];s.has(y)&&a.add(y)}for(let d of r.matchAll(_)){let k=d[1];s.has(k)&&a.add(k)}return a}async function ve(e,t,s,a){let r=await e.createContext(),i=r.global;await i.set("global",i.derefInto());let l=[],_=[],d=new Map;for(let c of s){d.set(c.name,c);let h=a.has(c.name)?await ke(e,r,c):null;h!==null?(await i.set(`__pkg_${c.safeName}`,h),l.push(c)):_.push(c)}A.setTaskPackages(t,d),await i.set("__callRef",new C.Reference(async(c,h,v)=>{let p=JSON.parse(v);return h==="pkgCall"?JSON.stringify(await A.executePackageRuntimeCall(c,p)):ye(c,h,p)})),await i.set("__fireRef",new C.Reference((c,h,v)=>{let p=JSON.parse(v);he(c,h,p)}));let k=l.map(c=>`$pkgs[${JSON.stringify(c.name)}] = __pkg_${c.safeName};`).concat(_.map(c=>`$pkgs[${JSON.stringify(c.name)}] = __createPkgProxy(${JSON.stringify(c.name)}, []);`)).join(`
630
- `),y=le(k);return await(await x(e,y,"setup.js")).run(r,{timeout:5e3}),V.set(r,G(s,a)),z.set(r,d),r}async function Z(e,t,s,a,r){let i=e.isolate,l=G(s,r),_=null;for(let y=e.idleContexts.length-1;y>=0;y--){let m=e.idleContexts[y];if(e.idleContexts.splice(y,1),V.get(m)===l){_=m,b.reused++;break}try{m.release()}catch{}}_||(_=await ve(i,t,s,r),b.created++),A.setTaskPackages(t,z.get(_)||new Map);let d=_.global;return await d.set("__snapshot",new C.ExternalCopy(a).copyInto()),await d.set("__nextTaskId",t),await(await x(i,"__resetTask(__snapshot, __nextTaskId);","reset-task.js")).run(_,{timeout:5e3}),_}async function Q(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await x(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{b.scrubFailed++;try{t.release()}catch{}return}if(e.idleContexts.length>=fe){try{t.release()}catch{}b.evicted++;return}e.idleContexts.push(t),b.released++}}function we(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var Pe=3,xe=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function $e(e){if(!e)return null;let t=e.split(`
631
- `);for(let s of t){let a=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!a)continue;let r=a[1].trim();if(xe.includes(r))continue;let l=parseInt(a[2])-Pe;if(!(l<=0))return{line:l,column:parseInt(a[3]),phase:r.replace(".js","")}}return null}function J(e){let t=we(e);if(t)return{message:t.message,statusCode:t.statusCode,details:t.details};let s=$e(e.stack),a=e.message||"Unknown error";return{message:s?`${a} (${s.phase}, line ${s.line})`:a,statusCode:e.statusCode||null,details:s||void 0}}async function Y(e,t){let s=J(t);await $({type:"result",id:e,success:!1,error:{...s,stack:t.stack,code:t.code}})}async function be(e){let{id:t,code:s,pkgSources:a,snapshot:r,memoryLimitMb:i,isolatePoolSize:l}=e,_=a||[],d=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),k=X(s,_),y=W(i,l),m=y.isolate,c=await Z(y,t,_,r,k);R.set(t,c);try{let h=`
629
+ `;function le(e){return ce.replace("%%PKG_SETUP%%",e)}L.exports={buildSetupCode:le}});var{parentPort:O}=require("worker_threads"),D=require("fs"),{fileURLToPath:ue}=require("url"),{createPackageRuntimeBridge:pe}=F(),{buildSetupCode:fe}=K(),N;try{N=require("isolated-vm")}catch(e){O.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var A=new Map,W=0,J=new Map,M=pe({workerDir:__dirname,activeTaskContexts:J}),_e=500,de=5e3,ge=32,q=new WeakMap,G=new WeakMap,X=new WeakMap,C={created:0,reused:0,released:0,evicted:0,scrubFailed:0},x=null,ye=0,B=0,V=0;async function he(){let e=Date.now();if(e-B<de)return V;if(B=e,!x)return 0;let t=0;for(let n of x){let a=n?.isolate;if(!(!a||a.isDisposed))try{let r=await a.getHeapStatistics(),o=r.heap_size_limit||1,c=r.used_heap_size/o;c>t&&(t=c)}catch{}}return V=t,t}async function b(e){e.heapRatio=await he(),e.contextStats=me(),O.postMessage(e)}function me(){let e=0;if(x)for(let t of x)e+=t?.idleContexts?.length||0;return{...C,idle:e}}function Z(e,t){if(!x){let r=Math.max(1,Math.trunc(Number(t)||8));x=new Array(r).fill(null)}let n=ye++%x.length,a=x[n];return(!a||!a.isolate||a.isolate.isDisposed)&&(a={isolate:new N.Isolate({memoryLimit:e}),idleContexts:[]},x[n]=a),a}async function $(e,t,n){let a=q.get(e);a||(a=new Map,q.set(e,a));let r=a.get(t);if(r)return r;let o=await e.compileScript(t,{filename:n});if(a.set(t,o),a.size>_e){let c=a.keys().next().value;a.delete(c)}return o}O.on("message",async e=>{if(e.type==="execute")Ne(e).catch(async t=>{await b({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")Je(e).catch(async t=>{await b({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="callResult"){let t=A.get(e.callId);t&&(A.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=A.get(e.callId);t&&(A.delete(e.callId),t.reject(new Error(e.error)))}});function ke(e,t,n){return new Promise((a,r)=>{let o=`cb_${++W}`;A.set(o,{resolve:a,reject:r}),O.postMessage({type:t,id:e,callId:o,...n})})}function ve(e,t,n){O.postMessage({type:t,id:e,callId:`f_${++W}`,...n})}function we(e){if(typeof e.sourceCode=="string"&&e.sourceCode.length>0)return e.sourceCode;let t=e.filePath;return!t&&typeof e.fileUrl=="string"&&e.fileUrl.startsWith("file://")&&(t=ue(e.fileUrl)),!t||!D.existsSync(t)?null:D.readFileSync(t,"utf8")}async function Pe(e,t,n){try{let a=we(n);if(!a)return null;let r=await e.compileModule(a,{filename:`pkg:${n.safeName}`});await r.instantiate(t,c=>{throw new Error(`Unresolved import in package ${n.safeName}: ${c}`)}),await r.evaluate({timeout:1e4});let o=await r.namespace.get("default");return o!==void 0&&o.typeof!=="undefined"?o.derefInto({release:!1}):r.namespace.derefInto({release:!1})}catch{return null}}function Q(e,t){let n=r=>{let o=2166136261;for(let c=0;c<r.length;c++)o^=r.charCodeAt(c),o=Math.imul(o,16777619);return(o>>>0).toString(36)},a=new Set(t||[]);return e.map(r=>{let o=r.cacheKey||`${r.filePath||""}:${r.fileUrl||""}:${r.mtimeMs||""}:${r.size||""}:${n(r.sourceCode||"")}`,c=a.has(r.name)?"isolate":"proxy";return`${r.name}:${r.version||""}:${o}:${c}`}).join("|")}function Y(e,t){let n=new Set(t.map(f=>f.name)),a=new Set,r=String(e||""),o=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,c=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,_=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let f of[o,c])for(let v of r.matchAll(f)){let d=v[2];n.has(d)&&a.add(d)}for(let f of r.matchAll(_)){let v=f[1];n.has(v)&&a.add(v)}return a}async function xe(e,t,n,a){let r=await e.createContext(),o=r.global;await o.set("global",o.derefInto());let c=[],_=[],f=new Map;for(let l of n){f.set(l.name,l);let h=a.has(l.name)?await Pe(e,r,l):null;h!==null?(await o.set(`__pkg_${l.safeName}`,h),c.push(l)):_.push(l)}M.setTaskPackages(t,f),await o.set("__callRef",new N.Reference(async(l,h,w)=>{let k=JSON.parse(w);return h==="pkgCall"?JSON.stringify(await M.executePackageRuntimeCall(l,k)):ke(l,h,k)})),await o.set("__fireRef",new N.Reference((l,h,w)=>{let k=JSON.parse(w);ve(l,h,k)}));let v=c.map(l=>`$pkgs[${JSON.stringify(l.name)}] = __pkg_${l.safeName};`).concat(_.map(l=>`$pkgs[${JSON.stringify(l.name)}] = __createPkgProxy(${JSON.stringify(l.name)}, []);`)).join(`
630
+ `),d=fe(v);return await(await $(e,d,"setup.js")).run(r,{timeout:5e3}),G.set(r,Q(n,a)),X.set(r,f),r}async function ee(e,t,n,a,r){let o=e.isolate,c=Q(n,r),_=null;for(let d=e.idleContexts.length-1;d>=0;d--){let m=e.idleContexts[d];if(e.idleContexts.splice(d,1),G.get(m)===c){_=m,C.reused++;break}try{m.release()}catch{}}_||(_=await xe(o,t,n,r),C.created++),M.setTaskPackages(t,X.get(_)||new Map);let f=_.global;return await f.set("__snapshot",new N.ExternalCopy(a).copyInto()),await f.set("__nextTaskId",t),await(await $(o,"__resetTask(__snapshot, __nextTaskId);","reset-task.js")).run(_,{timeout:5e3}),_}async function te(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await $(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{C.scrubFailed++;try{t.release()}catch{}return}if(e.idleContexts.length>=ge){try{t.release()}catch{}C.evicted++;return}e.idleContexts.push(t),C.released++}}function $e(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var Se=3,be=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Ce(e){if(!e)return null;let t=e.split(`
631
+ `);for(let n of t){let a=n.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!a)continue;let r=a[1].trim();if(be.includes(r))continue;let c=parseInt(a[2])-Se;if(!(c<=0))return{line:c,column:parseInt(a[3]),phase:r.replace(".js","")}}return null}function Re(e,t,n){if(!e||!t)return;let a=String(e).split(/\r?\n/),r=Math.max(1,t-1),o=Math.min(a.length,t+1),c=String(o).length,_=[];for(let f=r;f<=o;f++){let v=f===t?">":" ";_.push(`${v} ${String(f).padStart(c," ")}. ${a[f-1]??""}`),f===t&&n&&n>0&&_.push(` ${" ".repeat(c)} ${" ".repeat(Math.max(0,n-1))}^`)}return _.join(`
632
+ `)}function Ae(e,t){if(!(!e||!t)){if(t[e.phase])return t[e.phase];if(e.phase?.startsWith("preHook"))return t.preHook;if(e.phase?.startsWith("postHook"))return t.postHook}}function E(e,t){let n=$e(e);if(n)return{message:n.message,statusCode:n.statusCode,details:n.details};let a=Ce(e.stack),r=e.message||"Unknown error",o=a?`${r} (${a.phase}, line ${a.line})`:r,c=Ae(a,t),_=a?Re(c,a.line,a.column):void 0;return{message:o,statusCode:e.statusCode||null,details:a?{...a,codeFrame:_}:void 0}}async function re(e,t){let n=E(t);await b({type:"result",id:e,success:!1,error:{...n,stack:t.stack,code:t.code}})}async function Ne(e){let{id:t,code:n,pkgSources:a,snapshot:r,memoryLimitMb:o,isolatePoolSize:c}=e,_=a||[],f=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),v=Y(n,_),d=Z(o,c),m=d.isolate,l=await ee(d,t,_,r,v);J.set(t,l);try{let h=`
632
633
  (async () => {
633
634
  "use strict";
634
- ${s}
635
+ ${n}
635
636
  })().then((__result) => __extractResult(__result, __result === undefined));
636
- `,p=await(await x(m,h,"handler.js")).run(c,{timeout:d,promise:!0}),u=JSON.parse(p);await $({type:"result",id:t,success:!0,...u})}catch(h){await Y(t,h)}finally{R.delete(t),await Q(y,c),ee(t)}}async function Se(e){let{id:t,codeBlocks:s,pkgSources:a,snapshot:r,memoryLimitMb:i,isolatePoolSize:l}=e,_=a||[],d=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),k=X((s||[]).map(p=>p.code||"").join(`
637
- `),_),y=W(i,l),m=y.isolate,c=await Z(y,t,_,r,k);R.set(t,c);let h=[],v=[];for(let p of s)(p.type||"handler")==="postHook"?v.push(p):h.push(p);try{let p=null;for(let n=0;n<h.length;n++){let o=h[n],f=o.type||"handler",g=f==="handler"?"handler":`${f} #${n+1}`,w;f==="preHook"?w=`
637
+ `,k=await(await $(m,h,"handler.js")).run(l,{timeout:f,promise:!0}),p=JSON.parse(k);await b({type:"result",id:t,success:!0,...p})}catch(h){await re(t,h)}finally{J.delete(t),await te(d,l),ae(t)}}async function Je(e){let{id:t,codeBlocks:n,pkgSources:a,snapshot:r,memoryLimitMb:o,isolatePoolSize:c}=e,_=a||[],f=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),v=Y((n||[]).map(s=>s.code||"").join(`
638
+ `),_),d=Z(o,c),m=d.isolate,l=await ee(d,t,_,r,v);J.set(t,l);let h=[],w=[],k={},p=0,i=0;for(let s of n){let g=s.type||"handler";g==="postHook"?(i++,k[`postHook #${i}`]=s.code||"",k.postHook=s.code||"",w.push(s)):(g==="handler"?k.handler=s.code||"":(p++,k[`${g} #${p}`]=s.code||"",k.preHook=s.code||""),h.push(s))}try{let s=null;for(let u=0;u<h.length;u++){let y=h[u],P=y.type||"handler",R=P==="handler"?"handler":`${P} #${u+1}`,S;P==="preHook"?S=`
638
639
  (async () => {
639
640
  "use strict";
640
- ${o.code}
641
+ ${y.code}
641
642
  })().then((__r) => {
642
643
  if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
643
644
  return JSON.stringify({ __shortCircuit: false });
644
- });`:w=`
645
+ });`:S=`
645
646
  (async () => {
646
647
  "use strict";
647
- ${o.code}
648
+ ${y.code}
648
649
  })().then((__r) => {
649
650
  $ctx.$data = __r;
650
651
  return "__handler_done__";
651
- });`;try{let M=await(await x(m,w,`${g}.js`)).run(c,{timeout:d,promise:!0});if(f==="preHook"&&typeof M=="string"){let E=JSON.parse(M);if(E.__shortCircuit){let te=await q(m,c,E.value);await $({type:"result",id:t,success:!0,...te,shortCircuit:!0});return}}}catch(O){p=O;break}}if(!p&&v.length>0&&await(await x(m,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(c,{timeout:5e3}),p&&v.length>0){let n=J(p),o={message:n.message||"Unknown error",name:p.constructor?.name||"Error",stack:p.stack||"",statusCode:n.statusCode||500,details:n.details||{},timestamp:new Date().toISOString()},f=`
652
- $ctx.$error = ${JSON.stringify(o)};
652
+ });`;try{let j=await(await $(m,S,`${R}.js`)).run(l,{timeout:f,promise:!0});if(P==="preHook"&&typeof j=="string"){let I=JSON.parse(j);if(I.__shortCircuit){let ne=await z(m,l,I.value);await b({type:"result",id:t,success:!0,...ne,shortCircuit:!0});return}}}catch(T){s=T;break}}if(!s&&w.length>0&&await(await $(m,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(l,{timeout:5e3}),s&&w.length>0){let u=E(s,k),y={message:u.message||"Unknown error",name:s.constructor?.name||"Error",stack:s.stack||"",statusCode:u.statusCode||500,details:u.details||{},timestamp:new Date().toISOString()},P=`
653
+ $ctx.$error = ${JSON.stringify(y)};
653
654
  $ctx.$data = null;
654
- $ctx.$statusCode = ${o.statusCode};
655
+ $ctx.$statusCode = ${y.statusCode};
655
656
  if ($ctx.$api) {
656
- $ctx.$api.error = ${JSON.stringify(o)};
657
+ $ctx.$api.error = ${JSON.stringify(y)};
657
658
  $ctx.$api.response = {
658
- statusCode: ${o.statusCode},
659
+ statusCode: ${y.statusCode},
659
660
  responseTime: $ctx.$api.request && $ctx.$api.request.timestamp
660
661
  ? Date.now() - new Date($ctx.$api.request.timestamp).getTime()
661
662
  : 0,
662
- timestamp: ${JSON.stringify(o.timestamp)},
663
+ timestamp: ${JSON.stringify(y.timestamp)},
663
664
  };
664
665
  }
665
- "__error_populated__";`;await(await m.compileScript(f,{filename:"populate-error.js"})).run(c,{timeout:5e3})}for(let n=0;n<v.length;n++){let o=v[n],f=`postHook #${n+1}`,g=`
666
+ "__error_populated__";`;await(await m.compileScript(P,{filename:"populate-error.js"})).run(l,{timeout:5e3})}for(let u=0;u<w.length;u++){let y=w[u],P=`postHook #${u+1}`,R=`
666
667
  (async () => {
667
668
  "use strict";
668
- ${o.code}
669
+ ${y.code}
669
670
  })().then((__r) => {
670
671
  if (__r !== undefined) $ctx.$data = __r;
671
672
  return "__posthook_done__";
672
- });`;try{await(await x(m,g,`${f}.js`)).run(c,{timeout:d,promise:!0})}catch{}}if(p){let n=J(p),o;try{let w=await(await x(m,`JSON.stringify({
673
+ });`;try{await(await $(m,R,`${P}.js`)).run(l,{timeout:f,promise:!0})}catch{}}if(s){let u=E(s,k),y;try{let S=await(await $(m,`JSON.stringify({
673
674
  $body: __safeClone($ctx.$body),
674
675
  $query: __safeClone($ctx.$query),
675
676
  $params: __safeClone($ctx.$params),
@@ -679,4 +680,4 @@ if ($ctx.$api) {
679
680
  $error: __safeClone($ctx.$error),
680
681
  $api: __safeClone($ctx.$api),
681
682
  $statusCode: $ctx.$statusCode,
682
- })`,"extract-error-ctx.js")).run(c,{timeout:5e3});o=JSON.parse(w)}catch{}await $({type:"result",id:t,success:!1,error:{message:n.message,statusCode:n.statusCode,stack:p.stack,code:p.code,details:n.details},ctxChanges:o});return}let u=await q(m,c);await $({type:"result",id:t,success:!0,...u})}catch(p){await Y(t,p)}finally{R.delete(t),await Q(y,c),ee(t)}}function ee(e){A.cleanupTaskPackages(e)}function Ce(){A.shutdownPackageRuntime()}process.on("exit",Ce);async function q(e,t,s){if(s!==void 0){let l=`__extractResult(${JSON.stringify(s)}, false)`,d=await(await e.compileScript(l,{filename:"extract.js"})).run(t,{timeout:5e3});return JSON.parse(d)}let i=await(await x(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3});return JSON.parse(i)}
683
+ })`,"extract-error-ctx.js")).run(l,{timeout:5e3});y=JSON.parse(S)}catch{}await b({type:"result",id:t,success:!1,error:{message:u.message,statusCode:u.statusCode,stack:s.stack,code:s.code,details:u.details},ctxChanges:y});return}let g=await z(m,l);await b({type:"result",id:t,success:!0,...g})}catch(s){await re(t,s)}finally{J.delete(t),await te(d,l),ae(t)}}function ae(e){M.cleanupTaskPackages(e)}function Me(){M.shutdownPackageRuntime()}process.on("exit",Me);async function z(e,t,n){if(n!==void 0){let c=`__extractResult(${JSON.stringify(n)}, false)`,f=await(await e.compileScript(c,{filename:"extract.js"})).run(t,{timeout:5e3});return JSON.parse(f)}let o=await(await $(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3});return JSON.parse(o)}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";var ei=Object.create;var Bt=Object.defineProperty;var ti=Object.getOwnPropertyDescriptor;var ni=Object.getOwnPropertyNames;var ri=Object.getPrototypeOf,ii=Object.prototype.hasOwnProperty;var W=(r,e)=>()=>(r&&(e=r(r=0)),e);var bn=(r,e)=>{for(var t in e)Bt(r,t,{get:e[t],enumerable:!0})},ir=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ni(e))!ii.call(r,o)&&o!==t&&Bt(r,o,{get:()=>e[o],enumerable:!(n=ti(e,o))||n.enumerable});return r};var le=(r,e,t)=>(t=r!=null?ei(ri(r)):{},ir(e||!r||!r.__esModule?Bt(t,"default",{value:r,enumerable:!0}):t,r)),oi=r=>ir(Bt({},"__esModule",{value:!0}),r);function Fn(r){return hr.createHash("md5").update(r).digest("hex").substring(0,8)}function br(r){return r.length<=Cn-3?`${r}_pk`:`j_${Fn(r)}_pk`}function _r(r,e,t){let n=`${r}_${e}_foreign`;return n.length<=Cn?n:`j_${Fn(r)}_${t}_fk`}function ue(r,e,t){let n=`${r}_${e}_${t}`;if(n.length<=Cn)return n;let o=Fn(n),i=r.replace(/_definition/g,"").substring(0,10),s=e.substring(0,10),a=t.replace(/_definition/g,"").substring(0,10);return`j_${o}_${i}_${s}_${a}`}function K(r){return`${r}Id`}function fe(r,e,t){let n=K(r);if(r===t){let i=K(e);return{sourceColumn:n,targetColumn:i}}let o=K(t);return{sourceColumn:n,targetColumn:o}}function wr(r){return r.replace(/_([a-z])/g,e=>e[1].toUpperCase())}function $r(r){return r.replace(/([A-Z])/g,"_$1").toLowerCase()}function Tr(r,e,t){return`${r}_${e}_${t}_fk`}function Sr(r,e,t){return`${r}_${e}_${t}_idx`}var hr,Cn,Ke=W(()=>{"use strict";hr=le(require("crypto")),Cn=63});function Zt(r){return Ii[r]??null}var Z,Mn,Rt,Ii,vt=W(()=>{"use strict";Z=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(Z)],Ii={_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 A,Se=W(()=>{"use strict";A=class extends Error{constructor(t="Bad Request",n){let o=Array.isArray(t),i=o?t.join("; ")||"Bad Request":typeof t=="string"?t:JSON.stringify(t);super(i);this.statusCode=400;this.errorCode="BAD_REQUEST";this.name="BadRequestException",this.details=n,o&&(this.messages=t)}}});function Fr(){let r=process.env.DB_URI||"";return r.startsWith("mongodb://")||r.startsWith("mongodb+srv://")}var Rr=W(()=>{"use strict"});function Ue(r,e,t){throw new A({message:`Unsupported filter operator "${r}" on field "${e}"${t?` (table "${t}")`:""}. Supported operators: ${Rt.join(", ")}.`,error:"UnsupportedFilterOperator",operator:r,field:e,supportedOperators:Rt})}function en(r,e,t){if(!e||typeof e!="object"||Array.isArray(e))return;let n=Fr();for(let o of Object.keys(e))if(o.startsWith("_")&&!Z.has(o)){if(n&&o==="_id")continue;Ue(o,r,t)}}function Q(r,e,t){if(!r||typeof r!="object")return;let n=t?.tables?.get(e),o=new Set((n?.columns??[]).map(s=>s.name)),i=new Map((n?.relations??[]).map(s=>[s.propertyName,s]));for(let[s,a]of Object.entries(r)){if(Ei.has(s)){if(Array.isArray(a))for(let l of a)Q(l,e,t);else a&&typeof a=="object"&&Q(a,e,t);continue}let u=i.get(s);if(u){if(a&&typeof a=="object"&&!Array.isArray(a)){en(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];Q(c,l,t)}}}continue}s.startsWith("_")&&!o.has(s)&&s!=="_id"&&Ue(s,s,e),a&&typeof a=="object"&&!Array.isArray(a)&&en(s,a,e)}}var Ei,Ze=W(()=>{"use strict";Se();vt();Rr();Ei=new Set(["_and","_or","_not"])});function ke(r,e,t,n){return!r||typeof r!="object"?{node:null,hasRelationFilters:!1}:tn(r,{tableName:e,metadata:t,registry:n,parentJoinId:null,currentJoinId:null,currentTable:e})}function tn(r,e){if(!r||typeof r!="object")return{node:null,hasRelationFilters:!1};let t=[],n=!1;for(let[o,i]of Object.entries(r)){let s=Pi(o,i,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 Pi(r,e,t){if(r==="_and")return vr("and",e,t);if(r==="_or")return vr("or",e,t);if(r==="_not"){let l=tn(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),o=n?.columns?.some(l=>l.name==="_id"&&l.isPrimary),i=n?.columns?.some(l=>l.name==="id"),a=r==="id"?o&&!i?"_id":"id":r,u=n?.relations?.find(l=>l.propertyName===a);return u?ji(a,e,u,t):n&&!n.columns?.find(f=>f.name===a)?(r.startsWith("_")&&r!=="_id"&&Ue(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}):Li(a,e,t)}function vr(r,e,t){if(!Array.isArray(e))return{node:null,hasRelationFilters:!1};let n=[],o=!1;for(let i of e){let s=tn(i,t);s.hasRelationFilters&&(o=!0),s.node&&n.push(s.node)}return n.length===0?{node:null,hasRelationFilters:o}:n.length===1?{node:n[0],hasRelationFilters:o}:{node:{kind:r,children:n},hasRelationFilters:o}}function ji(r,e,t,n){if(typeof e!="object"||e===null)return{node:null,hasRelationFilters:!0};let o=Object.keys(e),i=o.length===1&&(o[0]==="_is_null"||o[0]==="_is_not_null"||o[0]==="_eq"||o[0]==="_neq"||o[0]==="_in"||o[0]==="_not_in"||o[0]==="_nin"),s=n.registry.registerWithParent(n.currentTable,r,n.metadata,"left",n.currentJoinId,"filter");if(i&&o[0]==="_is_null")return s?{node:{kind:"relation_exists",joinId:s,negate:e._is_null===!0},hasRelationFilters:!0}:{node:null,hasRelationFilters:!0};if(i&&o[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(i&&(o[0]==="_eq"||o[0]==="_neq")&&e[o[0]]===null)return s?{node:{kind:"relation_exists",joinId:s,negate:o[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=o.length>0&&o.every(d=>l.has(d))?{id:e}:e;return{node:tn(c,u).node,hasRelationFilters:!0}}function Li(r,e,t){let n={joinId:t.currentJoinId,fieldName:r,isUuid:Bi(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("_")&&!Z.has(s)&&Ue(s,r,t.tableName);let o=Object.entries(e).filter(([s])=>Z.has(s));if(o.length===0)return{node:{kind:"compare",field:n,op:"eq",value:e},hasRelationFilters:!1};let i=[];for(let[s,a]of o){let u=Di(n,s,a);u&&i.push(u)}return i.length===0?{node:null,hasRelationFilters:!1}:i.length===1?{node:i[0],hasRelationFilters:!1}:{node:{kind:"and",children:i},hasRelationFilters:!1}}function Di(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=Zt(e);return n?{kind:"compare",field:r,op:n,value:t}:null}function Bi(r,e){let t=e.metadata?.tables?.get(e.currentTable);if(!t)return!1;let n=r.includes(".")?r.split(".").pop():r,o=t.columns?.find(s=>s.name===n);if(!o)return!1;let i=(o.type||"").toLowerCase();return i==="uuid"||i==="uuidv4"||i.includes("uuid")}var Nt=W(()=>{"use strict";vt();Ze()});var ie,Mt=W(()=>{"use strict";ie=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,o="left",i=null,s="data"){let a=i?`${i}.${t}`:t;if(this.map.has(a)){let p=this.map.get(a);return o==="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:i,joinType:o,relationMeta:l,purposes:[s]};return this.map.set(a,c),a}}});async function G(r,e){if(r.length<=xe)return e(r);let t=[];for(let a=0;a<r.length;a+=xe)t.push(r.slice(a,a+xe));let n=[],o=0;async function i(){for(;o<t.length;){let a=o++;n[a]=await e(t[a])}}let s=Math.min(Dn,t.length);return await Promise.all(Array.from({length:s},i)),n.flat()}function tt(r){let e=[],t=new Map;for(let n of r)if(n==="*"||!n.includes("."))e.push(n);else{let o=n.split("."),i=o[0],s=o.slice(1).join(".");t.has(i)||t.set(i,[]),t.get(i).push(s)}return{rootFields:e,subRelations:t}}var ee,xe,Dn,Bn,Ce,nt=W(()=>{"use strict";Se();ee=16,xe=5e3,Dn=4,Bn=10;Ce=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 o=t[n.relationName];if(!o)return n;let i=o.fields!=null?Array.isArray(o.fields)?o.fields:String(o.fields).split(",").map(s=>s.trim()).filter(Boolean):n.fields;return{...n,fields:i,userFilter:o.filter??n.userFilter,userSort:o.sort??n.userSort,userLimit:o.limit!==void 0?Number(o.limit):n.userLimit,userPage:o.page!==void 0?Number(o.page):n.userPage,nestedDeep:o.deep??n.nestedDeep}})}withDefaultToManyLimit(e){return e.userLimit===void 0&&(e.type==="one-to-many"||e.type==="many-to-many")?{...e,userLimit:Bn}:e}assertLocalSortFields(e,t){if(!e.userSort)return;let n=Array.isArray(e.userSort)?e.userSort:String(e.userSort).split(",").map(o=>o.trim()).filter(Boolean);for(let o of n){let i=o.startsWith("-")?o.slice(1):o;if(i.includes("."))throw new A(`Sort field '${i}' 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===i),a=i==="id"&&t.columns?.some(u=>u.name==="_id");if(!s&&!a)throw new A(`Sort field '${i}' does not exist on '${e.targetTable}'. Sort only by fields defined on the table metadata.`)}}async execute(e,t,n=3,o=0,i){if(e.length===0||t.length===0||o>=n)return;let s;i&&(s=await this.metadataGetter(i)??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,o):u.type==="one-to-many"||u.type==="one-to-one"&&u.isInverse?this.fetchInverseRelation(e,u,n,o,s):u.type==="many-to-many"?this.fetchM2MRelation(e,u,n,o,s):Promise.resolve()}))}async fetchOwnerRelation(e,t,n,o){let i=this.adapter.resolveOwnerFkKey(t),s=new Set,a=[];for(let h of e){let b=h[i];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 h of e)h[i]=null,t.fkColumn&&t.fkColumn!==i&&delete h[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 h of e){let b=h[i];h[i]=b!=null?this.adapter.buildScalarRef(b,p):null,t.fkColumn&&t.fkColumn!==i&&delete h[t.fkColumn]}return}let d=performance.now(),g=await this.adapter.fetchOwner(t.targetTable,a,c,t);this.trace?.dur(`batch_fetch_L${o}_${t.relationName}`,d,{relationType:t.type,targetTable:t.targetTable,strategy:"batch-in",roundtrips:Math.ceil(a.length/xe)||1,rowsTransferred:g.length,rowsReturned:g.length,rowsDiscarded:0,userFilter:!!t.userFilter,userSort:!!t.userSort});let m=this.enrichNestedDescs(f,t.nestedDeep);m.length>0&&await this.execute(g,m,n,o+1,t.targetTable);let y=new Map;for(let h of g)y.set(this.adapter.keyOf(h[p]),h);for(let h of e){let b=h[i];h[i]=b!=null&&y.get(this.adapter.keyOf(b))||null,t.fkColumn&&t.fkColumn!==i&&delete h[t.fkColumn]}}async fetchInverseRelation(e,t,n,o,i){let s=this.adapter.resolveParentPk(i),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),m=new Map,y=t.fields.includes(u)||t.fields.includes("*");for(let _ of d){let N=_[g],v=this.adapter.keyOf(N);m.has(v)||m.set(v,[]),m.get(v).push(_)}let h=t.userLimit!==void 0&&t.userLimit>0,b=h?"per-parent-c16":"batch-in",S=h?a.length:Math.ceil(a.length/xe)||1,w=h?Math.ceil(a.length/ee):void 0,$=Array.from(m.values()).reduce((_,N)=>_+N.length,0);if(this.trace?.dur(`batch_fetch_L${o}_${t.relationName}`,p,{relationType:t.type,targetTable:t.targetTable,strategy:b,roundtrips:S,concurrencyWaves:w,rowsTransferred:d.length,rowsReturned:$,rowsDiscarded:d.length-$,userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort}),this.adapter.postProcessInverseChild)for(let _ of d)this.adapter.postProcessInverseChild(_,u,y);let k=this.enrichNestedDescs(f,t.nestedDeep);k.length>0&&await this.execute(d,k,n,o+1,t.targetTable);let R=t.type==="one-to-one";for(let _ of e){let N=this.adapter.keyOf(_[s]),v=m.get(N)||[];_[t.relationName]=R?v[0]||null:v}}async fetchM2MRelation(e,t,n,o,i){let s=this.adapter.resolveParentPk(i),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,i,u,f),g=t.userLimit!==void 0&&t.userLimit>0,m=g?"m2m-per-parent-c16":"m2m-batch",y=g?a.length:Math.ceil(a.length/xe)||1,h=g?Math.ceil(a.length/ee):void 0,b=Array.from(p.values()).reduce((w,$)=>w+$.length,0);this.trace?.dur(`batch_fetch_L${o}_${t.relationName}`,c,{relationType:t.type,targetTable:t.targetTable,strategy:m,roundtrips:y,concurrencyWaves:h,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,o+1,t.targetTable);for(let w of e){let $=this.adapter.keyOf(w[s]);w[t.relationName]=p.get($)||[]}}}});async function ge(r,e,t){let n=new Map,o=0;async function i(){for(;o<r.length;){let u=o++,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},i);return await Promise.all(a),n}var sn=W(()=>{"use strict"});function C(r,e){switch(e){case"mysql":return`\`${r}\``;case"postgres":case"pg":case"sqlite":return`"${r}"`;case"mongodb":return r;default:return`\`${r}\``}}var ve=W(()=>{"use strict"});function Y(r,e,t){e&&pn(r,e,t,"and")}function pn(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 o=function(){for(let i of e.children)this.where(function(){pn(this,i,t,"and")})};n==="or"?r.orWhere(o):r.where(o);return}case"or":{let o=function(){for(let i of e.children)this.orWhere(function(){pn(this,i,t,"and")})};n==="or"?r.orWhere(o):r.where(o);return}case"not":{let o=function(){this.whereNot(function(){pn(this,e.child,t,"and")})};n==="or"?r.orWhere(o):r.where(o);return}case"compare":co(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 co(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 o=uo(e.field,t),i=!!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":i&&s&&typeof e.value=="string"?r[u](`${o} = ?::uuid`,[e.value]):r[a](o,"=",e.value);return;case"neq":i&&s&&typeof e.value=="string"?r[u](`${o} != ?::uuid`,[e.value]):r[a](o,"!=",e.value);return;case"gt":i&&s&&typeof e.value=="string"?r[u](`${o} > ?::uuid`,[e.value]):r[a](o,">",e.value);return;case"gte":i&&s&&typeof e.value=="string"?r[u](`${o} >= ?::uuid`,[e.value]):r[a](o,">=",e.value);return;case"lt":i&&s&&typeof e.value=="string"?r[u](`${o} < ?::uuid`,[e.value]):r[a](o,"<",e.value);return;case"lte":i&&s&&typeof e.value=="string"?r[u](`${o} <= ?::uuid`,[e.value]):r[a](o,"<=",e.value);return;case"in":{let g=Jr(e.value);i&&s&&g.every(m=>typeof m=="string")?r[u](`${o} = ANY(?::uuid[])`,[g]):r[l](o,g);return}case"not_in":{let g=Jr(e.value);i&&s&&g.every(m=>typeof m=="string")?r[u](`${o} != ALL(?::uuid[])`,[g]):r[f](o,g);return}case"contains":Hn(r,o,e.value,"contains",t,n);return;case"starts_with":Hn(r,o,e.value,"starts_with",t,n);return;case"ends_with":Hn(r,o,e.value,"ends_with",t,n);return;case"between":Array.isArray(e.value)&&e.value.length===2&&r[c](o,[e.value[0],e.value[1]]);return;case"is_null":e.value===!0?r[p](o):r[d](o);return}}function Hn(r,e,t,n,o,i){let s=i==="or"?"orWhereRaw":"whereRaw";if(o.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(o.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 uo(r,e){return r.fieldName.includes(".")?r.fieldName:`${e.rootTable}.${r.fieldName}`}function Jr(r){return Array.isArray(r)?r:typeof r=="string"&&r.includes(",")?r.split(",").map(e=>e.trim()):[r]}var Gn=W(()=>{"use strict"});function te(r){return r.columns.find(e=>e.isPrimary)||null}var Lt=W(()=>{"use strict"});var zr={};bn(zr,{expandFieldsToJoinsAndSelect:()=>Yn});async function Yn(r,e,t,n,o,i){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 y of u.relations||[])if(y.type==="many-to-one"||y.type==="one-to-one"&&!y.isInverse){let h=y.foreignKeyColumn||K(y.targetTableName);h&&g.add(h)}let m=new Set;for(let y of u.columns)g.has(y.name)||(s.push(`${r}.${y.name}`),m.add(y.name));for(let y of u.relations||[])!l.has(y.propertyName)&&!m.has(y.propertyName)&&l.set(y.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||K(d.targetTableName||d.targetTable),S=C(r,n),w=C(b,n),$=C(p,n);s.push(`${S}.${w} as ${$}`)}let m=d.targetTableName||d.targetTable,y=i?.[p],h=y?.fields!=null?Array.isArray(y.fields)?y.fields:String(y.fields).split(",").map(b=>b.trim()).filter(Boolean):c;a.push({relationName:p,type:d.type,targetTable:m,fields:h,isInverse:d.isInverse,fkColumn:d.foreignKeyColumn,mappedBy:d.mappedBy,junctionTableName:d.junctionTableName,junctionSourceColumn:d.junctionSourceColumn,junctionTargetColumn:d.junctionTargetColumn,userFilter:y?.filter,userSort:y?.sort,userLimit:y?.limit!==void 0?Number(y.limit):void 0,userPage:y?.page!==void 0?Number(y.page):void 0,nestedDeep:y?.deep})}),{select:s,batchFetchDescriptors:a}}var Xn=W(()=>{"use strict";Ke();ve()});var ft,er=W(()=>{"use strict";Ke();ve();Lt();nt();Gn();Mt();Nt();sn();ft=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 ie,o=this.metadata?.tables?this.metadata:{tables:new Map(Object.entries(this.metadata))},{node:i}=ke(e,t,o,n);return i}parseSortTokens(e,t,n){return e?(Array.isArray(e)?e:e.split(",").map(i=>i.trim()).filter(Boolean)).map(i=>{let s=i.startsWith("-"),u=(s?i.slice(1):i).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,o){if(!t||!this.metadata)return;let i=Array.isArray(t)?t:t.split(",").map(a=>a.trim()).filter(Boolean),s=new Set;for(let a of i){let l=(a.startsWith("-")?a.slice(1):a).split(".");if(l.length<=1)continue;let f=n,c=o||n;for(let p=0;p<l.length-1;p++){let d=l[p],g=this.metadata?.tables?.get(f);if(!g)break;let m=g.relations?.find(b=>b.propertyName===d);if(!m)break;let y=m.targetTableName||m.targetTable,h=`__sort_${l.slice(0,p+1).join("_")}`;if(!s.has(h)){s.add(h);let b=m.foreignKeyColumn||K(m.propertyName),S=this.metadata?.tables?.get(y),w=S&&te(S)?.name||"id";e.leftJoin(`${y} as ${h}`,`${h}.${w}`,`${c}.${b}`)}f=y,c=h}}}toKnexSelect(e,t){let n=e.indexOf(" as ");if(n!==-1){let o=e.substring(0,n),i=e.substring(n+4),s=C(i,this.dbType),a=t?`${t}.${C(o,this.dbType)}`:C(o,this.dbType);return this.knex.raw(`${a} as ${s}`)}return t?this.knex.raw(`${t}.${C(e,this.dbType)} as ${C(e,this.dbType)}`):e}keyOf(e){return e==null?"":String(e)}buildScalarRef(e,t){return{[t||this.pkField]:e}}getTargetPkField(e){return te(e)?.name||"id"}resolveOwnerFkKey(e){return e.relationName}resolveInverseFkField(e){let t=e.fkColumn;return!t&&e.mappedBy&&(t=K(e.mappedBy)),t||(t=K(e.targetTable)),t}resolveParentPk(e){return e&&te(e)?.name||"id"}resolveFields(e,t){let{rootFields:n,subRelations:o}=tt(e),i=[];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||K(f.propertyName);c&&l.add(c)}for(let f of t.columns)l.has(f.name)||i.push(f.name);for(let f of t.relations||[])o.has(f.propertyName)||o.set(f.propertyName,["id"])}else for(let l of n){let f=t.columns.find(c=>c.name===l);f?i.push(f.name):t.relations?.find(p=>p.propertyName===l)&&!o.has(l)&&o.set(l,["id"])}let s=te(t)?.name||"id";i.includes(s)||i.push(s),o.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||K(c.propertyName);p&&i.push(`${p} as ${f}`)}});let a=[];return o.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:i.length===1&&i[0]===s&&a.length===0,nestedDescs:a,fetchSpec:{selectCols:i,pkCol:s}}}async fetchOwner(e,t,n,o){let i=o?.userFilter?this.buildFilterTree(o.userFilter,e):null,s=o?.userSort?this.parseSortTokens(o.userSort,e):[],a=n.selectCols.map(u=>this.toKnexSelect(u));return G(t,u=>{let l=this.knex(e).select(a).whereIn(n.pkCol,u);if(i&&Y(l,i,{dbType:this.dbType,rootTable:e}),s.length>0){this.applySortJoins(l,o.userSort,e);for(let f of s)l.orderBy(f.column,f.order)}return l})}async fetchInverse(e,t,n,o,i){let s=t,a=o.selectCols.find(g=>g.startsWith(`${t} as `));a?s=a.split(" as ")[1].trim():o.selectCols.includes(t)||o.selectCols.push(t);let u=i?.userFilter?this.buildFilterTree(i.userFilter,e):null,l=i?.userSort?this.parseSortTokens(i.userSort,e):[],f=i?.userLimit,c=i?.userPage;if(f!==void 0&&f>0){let g=c?(c-1)*f:0,m=o.selectCols.map(b=>this.toKnexSelect(b)),y=await ge(n,async b=>{let S=this.knex(e).select(m).where(t,b);if(u&&Y(S,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(S,i.userSort,e),l.length>0)for(let w of l)S.orderBy(w.column,w.order);else S.orderBy(o.pkCol,"asc");return g>0&&S.offset(g),S.limit(f),S},ee),h=[];for(let[b,S]of y.entries()){let w=n.find($=>String($)===b);for(let $ of S)$[t]||($[t]=w??b),h.push($)}return{docs:h,groupKeyField:s}}let p=o.selectCols.map(g=>this.toKnexSelect(g));return{docs:await G(n,g=>{let m=this.knex(e).select(p).whereIn(t,g);if(u&&Y(m,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(m,i?.userSort,e),l.length>0)for(let y of l)m.orderBy(y.column,y.order);else m.orderBy(o.pkCol,"asc");return m}),groupKeyField:s}}postProcessInverseChild(e,t,n){n||delete e[t]}async fetchM2M(e,t,n,o,i){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(i.selectCols.length===1&&i.selectCols[0]===i.pkCol&&!c&&!d){let S=await G(a,$=>this.knex(u).select([`${l} as __sourceId__`,`${f} as __targetId__`]).whereIn(l,$).orderBy(f,"asc")),w=new Map;for(let $ of S){let k=this.keyOf($.__sourceId__);w.has(k)||w.set(k,[]),w.get(k).push({[i.pkCol]:$.__targetId__})}return{grouped:w,docs:[]}}let y=i.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 R of a)w.set(this.keyOf(R),[]);let $=await ge(a,async R=>{let _=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${i.pkCol}`).select(y).where(`${u}.${l}`,R);if(c&&Y(_,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.${i.pkCol}`,"asc");return S>0&&_.offset(S),_.limit(d),_},ee),k=[];for(let[R,_]of $.entries()){w.set(R,_);for(let N of _)k.push(N)}return{grouped:w,docs:k}}let h=await G(a,S=>{let w=this.knex(u).join(`${t.targetTable} as t`,`${u}.${f}`,`t.${i.pkCol}`).select([`${u}.${l} as __sourceId__`,...y]).whereIn(`${u}.${l}`,S);if(c&&Y(w,c,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(w,t.userSort,t.targetTable,"t"),p.length>0)for(let $ of p)w.orderBy($.column,$.order);else w.orderBy(`t.${i.pkCol}`,"asc");return w}),b=new Map;for(let S of h){let w=S.__sourceId__;delete S.__sourceId__;let $=this.keyOf(w);b.has($)||b.set($,[]),b.get($).push(S)}return{grouped:b,docs:h}}}});var Gr={};bn(Gr,{executeBatchFetches:()=>tr});async function tr(r,e,t,n,o=3,i=0,s,a="postgres",u,l){let f=new ft(r,a,u);await new Ce(f,n,l).execute(e,t,o,i,s)}var nr=W(()=>{"use strict";nt();er()});var yo={};bn(yo,{ALL_SUPPORTED_OPERATORS:()=>Rt,AuthenticationException:()=>Pe,AuthorizationException:()=>je,BadRequestException:()=>A,BatchFetchEngine:()=>Ce,BusinessLogicException:()=>Ae,CHUNKED_FETCH_CONCURRENCY:()=>Dn,ConfigurationException:()=>wt,DEEP_TO_MANY_DEFAULT_LIMIT:()=>Bn,DEFAULT_TIMEOUT_MS:()=>Kt,DOTTED_PATH_MAX_HOPS:()=>mn,DatabaseException:()=>_e,DuplicateResourceException:()=>Ee,ErrorHandler:()=>De,ExecutorEngineService:()=>ze,ExternalServiceException:()=>bt,FIELD_OPERATORS:()=>Z,FileNotFoundException:()=>Tt,FileSizeExceededException:()=>St,FileUploadException:()=>$t,HttpException:()=>Me,ISOLATED_EXECUTOR_RUNTIME_LOG_PATH:()=>Ut,InvalidTokenException:()=>ht,IsolatedExecutorService:()=>He,JoinRegistry:()=>ie,LOGICAL_OPERATORS:()=>Mn,MongoBatchAdapter:()=>rt,MongoQueryExecutor:()=>at,PER_PARENT_CONCURRENCY:()=>ee,QueryBuilderService:()=>pt,QueryPlanner:()=>J,ResourceNotFoundException:()=>Ie,SchemaException:()=>_t,ScriptExecutionException:()=>be,ScriptTimeoutException:()=>he,ServiceUnavailableException:()=>Le,SqlBatchAdapter:()=>ft,SqlQueryExecutor:()=>dt,TokenExpiredException:()=>mt,ValidationException:()=>Oe,WHERE_IN_CHUNK_SIZE:()=>xe,WorkerPool:()=>Ft,appendIsolatedExecutorRuntimeLog:()=>z,applyOperatorToMatch:()=>Xt,applyRelationFilters:()=>Ve,applyWhereToKnex:()=>ut,assertFieldOperatorValueIsClean:()=>en,buildAggregateFilter:()=>st,buildMongoCharFoldMapJson:()=>vn,buildMongoFoldTextSearchJs:()=>qt,buildRelationSubquery:()=>Et,buildSqlWherePartsFromFieldAst:()=>jt,buildWhereClause:()=>se,camelToSnake:()=>$r,chunkedFetch:()=>G,compileScriptSource:()=>ce,computeEngineTuning:()=>Tn,createEnfyraKernel:()=>go,dslOpToCompareOp:()=>Zt,encodeMainThreadToIsolate:()=>xn,escapeSqlValue:()=>Vr,executeBatchFetches:()=>tr,executeMongoBatchFetches:()=>an,expandFieldsToJoinsAndSelect:()=>Yn,getEffectiveCpuCount:()=>$n,getEffectiveMemoryBytes:()=>kt,getEngineTuning:()=>Vt,getExecutableScript:()=>hi,getForeignKeyColumnName:()=>K,getIoAbortSignal:()=>mr,getJunctionColumnNames:()=>fe,getJunctionTableName:()=>ue,getPrimaryKeyColumn:()=>te,getScriptLegacyField:()=>Sn,getShortFkConstraintName:()=>_r,getShortFkName:()=>Tr,getShortIndexName:()=>Sr,getShortPkName:()=>br,hasAggregateQuery:()=>Un,hasLogicalOperators:()=>ye,isExecutableJavaScript:()=>cr,isScriptTable:()=>kn,mergeAggregateValue:()=>Re,normalizeAggregateQuery:()=>ot,normalizeFlowStepScriptConfig:()=>bi,normalizeScriptLanguage:()=>Ct,normalizeScriptPatch:()=>mi,normalizeScriptRecord:()=>yi,parseBatchFields:()=>tt,parseFields:()=>ln,parseFilter:()=>ke,perParentRun:()=>ge,quoteIdentifier:()=>C,resolveExecutableScript:()=>ur,rewriteFilterDenyingFields:()=>Xr,rewriteSortDroppingDenied:()=>Zr,separateFilters:()=>H,snakeToCamel:()=>wr,throwUnsupportedFieldOperator:()=>Ue,transformCode:()=>wn,validateDeepOptions:()=>rr,validateFilterShape:()=>Q,whereToMongoFilter:()=>Xe});module.exports=oi(yo);var si={"@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"},me=0,or=1,sr=2,_n=3,ar=4,lr=5;function wn(r){let e=r.length,t="",n=0,o=me,i=0,s=0;for(;n<e;){let a=r[n],u=r[n+1];switch(o){case me:if(a==='"')o=or,t+=a,n++;else if(a==="'")o=sr,t+=a,n++;else if(a==="`")o=_n,t+=a,n++;else if(a==="/"&&u==="/")o=ar,t+=a+u,n+=2;else if(a==="/"&&u==="*")o=lr,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=si[c];t+=p||c}else f==="#"?t+="$ctx.$repos."+c.substring(1):t+="$ctx.$pkgs."+c.substring(1)}else a==="{"?(i>0&&s++,t+=a,n++):a==="}"&&i>0?s>0?(s--,t+=a,n++):(i--,t+=a,n++,o=_n):(t+=a,n++);break;case or:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==='"'&&(o=me),n++);break;case sr:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):(a==="'"&&(o=me),n++);break;case _n:t+=a,a==="\\"?(n++,n<e&&(t+=r[n],n++)):a==="`"?(o=me,n++):a==="$"&&n+1<e&&r[n+1]==="{"?(t+="{",n+=2,i++,o=me):n++;break;case ar:t+=a,a===`
2
- `&&(o=me),n++;break;case lr:t+=a,a==="*"&&u==="/"?(t+=u,n+=2,o=me):n++;break}}return t}var Kt=3e4,ze=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??Kt)}async run(e,t,n=Kt){return this.isolatedExecutorService.run(e,t,n)}};var Wt=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=le(require("path")),gr=require("worker_threads");var he=class extends Error{constructor(t=0,n){let o=typeof t=="number"&&t>0?`${t}ms`:String(t||"configured timeout");super(`Script execution timed out after ${o}`);this.statusCode=408;this.errorCode="SCRIPT_TIMEOUT";this.name="ScriptTimeoutException",this.details={timeoutMs:t,scriptId:n}}},be=class extends Error{constructor(t,n,o){super(`Script execution failed: ${t}`);this.statusCode=400;this.errorCode="SCRIPT_EXECUTION_ERROR";this.name="ScriptExecutionException",this.details={scriptId:n,...o}}},j=class extends Error{constructor(t,n,o,i){super(t);this.statusCode=n;this.errorCode=o;this.name=this.constructor.name,this.details=i}},Me=class extends j{constructor(e,t,n){super(e,t,`HTTP_${t}`,n)}},Ae=class extends j{constructor(e,t){super(e,400,"BUSINESS_LOGIC_ERROR",t)}},Oe=class extends j{constructor(e,t){super(e,422,"VALIDATION_ERROR",t)}},Ie=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})}},Ee=class extends j{constructor(e,t,n){super(`${e} with ${t} '${n}' already exists`,409,"DUPLICATE_RESOURCE",{resource:e,field:t,value:n})}},Pe=class extends j{constructor(e="Authentication failed",t){super(e,401,"AUTHENTICATION_ERROR",t)}},je=class extends j{constructor(e="Insufficient permissions",t){super(e,403,"AUTHORIZATION_ERROR",t)}},mt=class extends j{constructor(){super("Token has expired",401,"TOKEN_EXPIRED")}},ht=class extends j{constructor(){super("Invalid token provided",401,"INVALID_TOKEN")}},_e=class extends j{constructor(e,t){super(e,500,"DATABASE_ERROR",t)}},bt=class extends j{constructor(e,t,n){super(`External service '${e}' error: ${t}`,502,"EXTERNAL_SERVICE_ERROR",{service:e,details:n})}},Le=class extends j{constructor(e){super(`Service '${e}' is currently unavailable`,503,"SERVICE_UNAVAILABLE",{service:e})}},_t=class extends j{constructor(e,t){super(e,400,"SCHEMA_ERROR",t)}},wt=class extends j{constructor(e,t){super(e,500,"CONFIGURATION_ERROR",t)}},$t=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")}},St=class extends j{constructor(e,t){super("File size exceeded",413,"FILE_SIZE_EXCEEDED",{maxSize:e,actualSize:t})}};var De=class{static createException(e,t,n,o,i){if(e?.includes("$throw"))switch(e){case"$throw.businessLogic":return new Ae(n||"Bad request",i);case"$throw.validation":return new Oe(n||"Validation failed",i);case"$throw.notFound":return new Ie(n||"Resource");case"$throw.duplicate":return new Ee(n||"Resource","field","value");case"$throw.unauthorized":return new Pe(n||"Unauthorized");case"$throw.forbidden":return new je(n||"Forbidden");case"$throw.tokenExpired":return new mt;case"$throw.invalidToken":return new ht;case"$throw.database":return new _e(n||"Database error",i);case"$throw.dbQuery":return new _e(n||"Query error",i);case"$throw.externalService":return new bt(n||"Service",n||"Error",i);case"$throw.serviceUnavailable":return new Le(n||"Service");case"$throw.rateLimit":return new Me(n||"Rate limit exceeded",429);case"$throw.scriptError":return new be(n||"Script error",o,i);case"$throw.scriptTimeout":return new he(i?.timeout||5e3,o);case"$throw.schema":return new _t(n||"Schema error",i);case"$throw.config":return new wt(n||"Configuration error",i);case"$throw.fileUpload":return new $t(n||"File upload error",i);case"$throw.fileNotFound":return new Tt(n||"File not found");case"$throw.fileSizeExceeded":return new St(i?.maxSize||"unknown",i?.actualSize||"unknown");case"$throw.400":return new Ae(n||"Bad request");case"$throw.401":return new Pe(n||"Authentication required");case"$throw.403":return new je(n||"Insufficient permissions");case"$throw.404":return new Ie(n||"Resource");case"$throw.409":return new Ee(n||"Resource","field","value");case"$throw.422":return new Oe(n||"Validation failed");case"$throw.429":return new Me(n||"Rate limit exceeded",429);case"$throw.500":return new _e(n||"Internal server error",i);case"$throw.503":return new Le(n||"Service");default:return new be(n||"Unknown error",o)}if(t)switch(t){case 400:return new Ae(n||"Bad request");case 401:return new Pe(n||"Authentication required");case 403:return new je(n||"Insufficient permissions");case 404:return new Ie(n||"Resource");case 409:return new Ee(n||"Resource","field","value");case 422:return new Oe(n||"Validation failed");case 429:return new Me(n||"Rate limit exceeded",429);case 500:return new _e(n||"Internal server error",i);case 503:return new Le(n||"Service");default:return new be(n||"Unknown error",o,i)}return new be(n||"Unknown error",o,i)}};var Qt=le(require("fs")),Jt=le(require("path")),Ut=Jt.join(process.cwd(),"test","logs","isolated-executor-runtime.log");function ai(){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 li=ai();function z(r){if(li)try{let e=Jt.dirname(Ut);Qt.mkdirSync(e,{recursive:!0});let t=JSON.stringify({ts:new Date().toISOString(),pid:process.pid,...r})+`
2
+ `&&(o=me),n++;break;case lr:t+=a,a==="*"&&u==="/"?(t+=u,n+=2,o=me):n++;break}}return t}var Kt=3e4,ze=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??Kt)}async run(e,t,n=Kt){return this.isolatedExecutorService.run(e,t,n)}};var Wt=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=le(require("path")),gr=require("worker_threads");var he=class extends Error{constructor(t=0,n){let o=typeof t=="number"&&t>0?`${t}ms`:String(t||"configured timeout");super(`Script execution timed out after ${o}`);this.statusCode=408;this.errorCode="SCRIPT_TIMEOUT";this.name="ScriptTimeoutException",this.details={timeoutMs:t,scriptId:n}}},be=class extends Error{constructor(t,n,o){super(`Script execution failed: ${t}`);this.statusCode=400;this.errorCode="SCRIPT_EXECUTION_ERROR";this.name="ScriptExecutionException",this.details={scriptId:n,...o}}},j=class extends Error{constructor(t,n,o,i){super(t);this.statusCode=n;this.errorCode=o;this.name=this.constructor.name,this.details=i}},Me=class extends j{constructor(e,t,n){super(e,t,`HTTP_${t}`,n)}},Ae=class extends j{constructor(e,t){super(e,400,"BUSINESS_LOGIC_ERROR",t)}},Oe=class extends j{constructor(e,t){super(e,422,"VALIDATION_ERROR",t)}},Ie=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})}},Ee=class extends j{constructor(e,t,n){super(`${e} with ${t} '${n}' already exists`,409,"DUPLICATE_RESOURCE",{resource:e,field:t,value:n})}},Pe=class extends j{constructor(e="Authentication failed",t){super(e,401,"AUTHENTICATION_ERROR",t)}},je=class extends j{constructor(e="Insufficient permissions",t){super(e,403,"AUTHORIZATION_ERROR",t)}},mt=class extends j{constructor(){super("Token has expired",401,"TOKEN_EXPIRED")}},ht=class extends j{constructor(){super("Invalid token provided",401,"INVALID_TOKEN")}},_e=class extends j{constructor(e,t){super(e,500,"DATABASE_ERROR",t)}},bt=class extends j{constructor(e,t,n){super(`External service '${e}' error: ${t}`,502,"EXTERNAL_SERVICE_ERROR",{service:e,details:n})}},Le=class extends j{constructor(e){super(`Service '${e}' is currently unavailable`,503,"SERVICE_UNAVAILABLE",{service:e})}},_t=class extends j{constructor(e,t){super(e,400,"SCHEMA_ERROR",t)}},wt=class extends j{constructor(e,t){super(e,500,"CONFIGURATION_ERROR",t)}},$t=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")}},St=class extends j{constructor(e,t){super("File size exceeded",413,"FILE_SIZE_EXCEEDED",{maxSize:e,actualSize:t})}};var De=class{static createException(e,t,n,o,i){if(e?.includes("$throw"))switch(e){case"$throw.businessLogic":return new Ae(n||"Bad request",i);case"$throw.validation":return new Oe(n||"Validation failed",i);case"$throw.notFound":return new Ie(n||"Resource");case"$throw.duplicate":return new Ee(n||"Resource","field","value");case"$throw.unauthorized":return new Pe(n||"Unauthorized");case"$throw.forbidden":return new je(n||"Forbidden");case"$throw.tokenExpired":return new mt;case"$throw.invalidToken":return new ht;case"$throw.database":return new _e(n||"Database error",i);case"$throw.dbQuery":return new _e(n||"Query error",i);case"$throw.externalService":return new bt(n||"Service",n||"Error",i);case"$throw.serviceUnavailable":return new Le(n||"Service");case"$throw.rateLimit":return new Me(n||"Rate limit exceeded",429);case"$throw.scriptError":return new be(n||"Script error",o,i);case"$throw.scriptTimeout":return new he(i?.timeout||5e3,o);case"$throw.schema":return new _t(n||"Schema error",i);case"$throw.config":return new wt(n||"Configuration error",i);case"$throw.fileUpload":return new $t(n||"File upload error",i);case"$throw.fileNotFound":return new Tt(n||"File not found");case"$throw.fileSizeExceeded":return new St(i?.maxSize||"unknown",i?.actualSize||"unknown");case"$throw.400":return new Ae(n||"Bad request",i);case"$throw.401":return new Pe(n||"Authentication required");case"$throw.403":return new je(n||"Insufficient permissions");case"$throw.404":return new Ie(n||"Resource");case"$throw.409":return new Ee(n||"Resource","field","value");case"$throw.422":return new Oe(n||"Validation failed",i);case"$throw.429":return new Me(n||"Rate limit exceeded",429);case"$throw.500":return new _e(n||"Internal server error",i);case"$throw.503":return new Le(n||"Service");default:return new be(n||"Unknown error",o)}if(t)switch(t){case 400:return new Ae(n||"Bad request",i);case 401:return new Pe(n||"Authentication required");case 403:return new je(n||"Insufficient permissions");case 404:return new Ie(n||"Resource");case 409:return new Ee(n||"Resource","field","value");case 422:return new Oe(n||"Validation failed",i);case 429:return new Me(n||"Rate limit exceeded",429);case 500:return new _e(n||"Internal server error",i);case 503:return new Le(n||"Service");default:return new be(n||"Unknown error",o,i)}return new be(n||"Unknown error",o,i)}};var Qt=le(require("fs")),Jt=le(require("path")),Ut=Jt.join(process.cwd(),"test","logs","isolated-executor-runtime.log");function ai(){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 li=ai();function z(r){if(li)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 we=le(require("os")),qe=le(require("fs"));function kt(){try{let r=qe.readFileSync("/sys/fs/cgroup/memory.max","utf8").trim();if(r!=="max"){let e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<we.totalmem())return e}}catch{}try{let r=qe.readFileSync("/sys/fs/cgroup/memory/memory.limit_in_bytes","utf8").trim(),e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<we.totalmem())return e}catch{}return we.totalmem()}function $n(){let r=we.availableParallelism?.()||we.cpus()?.length||1;try{let e=qe.readFileSync("/sys/fs/cgroup/cpu.max","utf8").trim(),[t,n]=e.split(/\s+/);if(t!=="max"){let o=parseInt(t,10),i=parseInt(n,10);if(o>0&&i>0)return Math.max(1,Math.ceil(o/i))}}catch{}try{let e=parseInt(qe.readFileSync("/sys/fs/cgroup/cpu/cpu.cfs_quota_us","utf8").trim(),10),t=parseInt(qe.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 ci=.25,ui=2,fi=2048,di=40,pi=128,gi=32;function Tn(r){let e=Math.max(1,Math.trunc(r.logicalCpuCount)||1),t=Math.max(1,r.totalMemoryBytes/(1024*1024)),n=Math.min(pi,Math.max(di,Math.round(t/gi))),o=t*ci,i=Math.max(1,Math.floor(o/n)),s=Math.max(1,Math.min(e,2,i)),a=Math.min(256,Math.max(16,Math.floor(t/n/s))),u=t<fi?1:ui,l=Math.max(1,Math.min(u,Math.floor(o/(s*n))));return{maxConcurrentWorkers:s,isolateMemoryLimitMb:n,tasksPerWorkerCap:a,isolatePoolSize:l}}function Vt(){return Tn({logicalCpuCount:$n(),totalMemoryBytes:kt()})}var Be=le(require("typescript"));var xt={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 Sn(r){return xt[r]}function kn(r){return r in xt}function Ct(r){return r==="javascript"?"javascript":"typescript"}function ce(r,e){if(r==null||r==="")return null;let t=wn(String(r));if(Ct(e)==="javascript")return t;let n=Be.default.transpileModule(t,{compilerOptions:{target:Be.default.ScriptTarget.ES2022,module:Be.default.ModuleKind.CommonJS,importsNotUsedAsValues:Be.default.ImportsNotUsedAsValues.Remove,sourceMap:!1,inlineSourceMap:!1,inlineSources:!1},reportDiagnostics:!0}),o=n.diagnostics?.find(i=>i.category===Be.default.DiagnosticCategory.Error);if(o)throw new Error(Be.default.flattenDiagnosticMessageText(o.messageText,`
4
4
  `));return n.outputText.trimEnd()}function cr(r){if(!r)return!1;try{return new Function(`return (async () => {
5
5
  "use strict";
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@enfyra/kernel",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "source": "bundled-compiled-kernel"
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enfyra/kernel",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Closed-distribution Enfyra kernel runtime",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "private": false,