@enfyra/kernel 1.1.63 → 1.1.64

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 +1 @@
1
- "use strict";var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $=x((fe,S)=>{"use strict";function j({handles:e,createHandleId:t,callIsolateCallback:n}){function a(f,r){if(r==null)return r;let l=typeof r;if(l==="string"||l==="number"||l==="boolean")return r;if(r instanceof Date)return{__date:r.toISOString()};if(r instanceof Set)return{__set:Array.from(r.values()).map(i=>a(f,i))};if(r instanceof Map)return{__map:Array.from(r.entries()).map(([i,d])=>[a(f,i),a(f,d)])};if(r instanceof RegExp)return{__regexp:{source:r.source,flags:r.flags}};if(r instanceof Error)return{__error:{name:r.name,message:r.message,stack:r.stack}};if(typeof URL<"u"&&r instanceof URL)return{__url:r.href};if(typeof URLSearchParams<"u"&&r instanceof URLSearchParams)return{__urlSearchParams:r.toString()};if(typeof Buffer<"u"&&Buffer.isBuffer(r)||r._isBuffer===!0)return o(f,r);if(ArrayBuffer.isView(r))return{__typedArray:r.constructor?.name||"Uint8Array",data:Array.from(r)};if(r instanceof ArrayBuffer)return{__arrayBuffer:Array.from(new Uint8Array(r))};if(Array.isArray(r))return r.map(i=>a(f,i));if(l==="object"&&U(r)){let i={};for(let[d,A]of Object.entries(r))i[d]=a(f,A);return i}return o(f,r)}function o(f,r){let l=t(f);return e.set(l,r),{__pkgHandle:l}}function c(f,r){if(!r||typeof r!="object")return r;if(r.__fnRef)return(...i)=>n(f,r.__fnRef,i);if(r.__pkgHandleArg){let i=e.get(r.__pkgHandleArg);if(!i)throw new Error(`Package argument handle not found: ${r.__pkgHandleArg}`);return i}if(r.__date)return new Date(r.__date);if(r.__set)return new Set(r.__set.map(i=>c(f,i)));if(r.__map)return new Map(r.__map.map(([i,d])=>[c(f,i),c(f,d)]));if(r.__regexp)return new RegExp(r.__regexp.source,r.__regexp.flags||"");if(r.__error){let i=new Error(r.__error.message||"");return i.name=r.__error.name||"Error",r.__error.stack&&(i.stack=r.__error.stack),i}if(r.__url)return new URL(r.__url);if(r.__urlSearchParams)return new URLSearchParams(r.__urlSearchParams);if(r.__blob)return new Blob([Uint8Array.from(r.__blob.data||[])],{type:r.__blob.type||""});if(r.__file){let i=[Uint8Array.from(r.__file.data||[])],d={type:r.__file.type||"",lastModified:r.__file.lastModified};return typeof File<"u"?new File(i,r.__file.name||"file",d):new Blob(i,d)}if(r.__formData){let i=new FormData;for(let[d,A]of r.__formData)i.append(d,c(f,A));return i}if(r.__typedArray){let i=globalThis[r.__typedArray]||Uint8Array;return new i(r.data||[])}if(r.__arrayBuffer)return Uint8Array.from(r.__arrayBuffer).buffer;if(Array.isArray(r))return r.map(i=>c(f,i));let l={};for(let[i,d]of Object.entries(r))l[i]=c(f,d);return l}function s(f,r){return JSON.parse(r||"[]").map(l=>c(f,l))}return{createPackageHandle:o,deserializePackageArg:c,deserializePackageArgs:s,serializePackageValue:a}}function U(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null?!1:!Object.values(e).some(n=>typeof n=="function")}S.exports={createPackageRuntimeCodec:j}});var{AsyncLocalStorage:B}=require("node:async_hooks"),N=require("node:http"),O=require("node:https"),H=require("node:net"),L=require("node:tls"),_=require("node:http2"),{createPackageRuntimeCodec:z}=$(),R=new B,C=new Map,y=new Map,w=new Map,h=new Map,m=new Map,P=new Map,p=new Map,g=new Map,D=0,F=0,q=0;function G(e){return Math.max(1,Math.trunc(Number(e)||3e4))}function k(e){let t=m.get(e);return t||(t=new AbortController,m.set(e,t)),t}function T(e){k(e).abort();for(let[t,n]of P)if(n.taskId===e){try{typeof n.stream.destroy=="function"&&n.stream.destroy(new Error("Package stream cancelled")),typeof n.iterator?.return=="function"&&Promise.resolve(n.iterator.return()).catch(()=>{})}catch{}P.delete(t)}}function J(e){p.set(e,(p.get(e)||0)+1)}function K(e){let t=Math.max(0,(p.get(e)||1)-1);if(t>0){p.set(e,t);return}p.delete(e);let n=g.get(e);if(n){g.delete(e);for(let a of n)process.send?.({type:"taskCancelled",id:a,taskId:e,ok:!0,value:!0})}}function V(e,t){if(!p.has(t)){process.send?.({type:"taskCancelled",id:e,taskId:t,ok:!0,value:!0});return}let n=g.get(t);n||(n=new Set,g.set(t,n)),n.add(e)}function E(){return R.getStore()}function M(e){let t=E();if(!t||!e)return e;let n=k(t).signal;if(n.aborted)return e.destroy(new Error("Package call cancelled")),e;let a=()=>{try{e.destroy(new Error("Package call cancelled"))}catch{}};return n.addEventListener("abort",a,{once:!0}),e.once("close",()=>{n.removeEventListener("abort",a)}),e}function I(e){let t=E();if(!t||!e||typeof e.destroy!="function")return e;let n=k(t).signal;if(n.aborted)return e.destroy(new Error("Package call cancelled")),e;let a=()=>{try{e.destroy(new Error("Package call cancelled"))}catch{}};return n.addEventListener("abort",a,{once:!0}),e.once("close",()=>{n.removeEventListener("abort",a)}),e}function W(){for(let t of[N,O]){if(t.__enfyraCancelPatched)continue;t.__enfyraCancelPatched=!0;let n=t.request,a=t.get;t.request=function(...c){return M(n.apply(t,c))},t.get=function(...c){return M(a.apply(t,c))}}for(let[t,n]of[[H,["connect","createConnection"]],[L,["connect"]]])if(!t.__enfyraCancelPatched){t.__enfyraCancelPatched=!0;for(let a of n){let o=t[a];typeof o=="function"&&(t[a]=function(...s){return I(o.apply(t,s))})}}if(!_.__enfyraCancelPatched){_.__enfyraCancelPatched=!0;let t=_.connect;_.connect=function(...a){return I(t.apply(_,a))}}let e=globalThis.fetch;typeof e=="function"&&!globalThis.__enfyraFetchCancelPatched&&(globalThis.__enfyraFetchCancelPatched=!0,globalThis.fetch=function(n,a){let o=E();if(o){let c=a&&typeof a=="object"?a:{};c.signal||(a={...c,signal:k(o).signal})}return e.call(globalThis,n,a)})}W();function Y(e){let t=v(e.taskId,e.argsJson),n=(e.path||[]).join(".");if(e.packageName==="undici"&&(n==="request"||n==="fetch")){let a=t[1]&&typeof t[1]=="object"?t[1]:{};t[1]={...a,signal:k(e.taskId).signal}}return t}function Q(e,t,n){T(t),process.send?.({id:e,ok:!1,error:{message:n,code:"ERR_PACKAGE_RUNTIME_TIMEOUT",details:{outcome:"unknown_outcome",retryable:!1}}})}var{createPackageHandle:X,deserializePackageArg:Z,deserializePackageArgs:v,serializePackageValue:u}=z({handles:y,createHandleId:e=>`${e}:pkg_${++D}`,callIsolateCallback:re}),ee=new Set(["__proto__","prototype","constructor","caller","callee","arguments"]);async function te(e){let t=e.fileUrl||e.name;if(C.has(t))return C.get(t);let n=e.name&&e.name.startsWith("node:")?e.name:e.fileUrl||e.name;if(!n)throw new Error(`Package "${e.name}" cannot be imported by package runtime`);let a=await import(n);return C.set(t,a),a}function b(e,t){if(!t||t.length===0)return{target:e&&e.default!==void 0?e.default:e,receiver:void 0};let n=e,a;for(let o=0;o<t.length;o++){let c=t[o];if(ee.has(c))throw new Error(`Package property is forbidden: ${c}`);if(n==null&&o===0&&e.default!==void 0&&(n=e.default),n!=null&&c in n){a=n,n=n[c];continue}if(o===0&&e.default!==void 0&&e.default!==n&&c in e.default){a=e.default,n=e.default[c];continue}throw new Error(`Package export not found: ${t.join(".")}`)}return{target:n,receiver:a}}function re(e,t,n){return new Promise((a,o)=>{let c=`cb_${++F}`;w.set(c,{resolve:a,reject:o,taskId:e});try{process.send?.({type:"pkgCallbackCall",id:c,taskId:e,callbackId:t,argsJson:JSON.stringify(n.map(s=>u(e,s)))})}catch(s){w.delete(c),o(s)}})}async function ne(e){let t=Y(e);if(e.op==="handleCall"){let c=y.get(e.handleId);if(!c)throw new Error(`Package handle not found: ${e.handleId}`);let{target:s,receiver:f}=b(c,e.path||[]);if(typeof s!="function")return u(e.taskId,s);let r=await s.apply(f||c,t);return u(e.taskId,r)}if(e.op==="handleGet"){let c=y.get(e.handleId);if(!c)throw new Error(`Package handle not found: ${e.handleId}`);let{target:s,receiver:f}=b(c,e.path||[]);return u(e.taskId,typeof s=="function"&&f?s.bind(f):s)}let n=await te(e.package),{target:a,receiver:o}=b(n,e.path||[]);if(e.op==="construct"){if(typeof a!="function")throw new Error(`Package export is not constructable: ${e.packageName}.${(e.path||[]).join(".")}`);return X(e.taskId,new a(...t))}return typeof a=="function"?u(e.taskId,await a.apply(o,t)):u(e.taskId,a)}function ae(e,t,n){return new Promise((a,o)=>{let c=`stream_${++q}`;h.set(c,{resolve:a,reject:o});try{process.send?.({type:"pkgStreamChunk",id:e,ackId:c,taskId:t,chunk:Buffer.from(n).toString("base64")},s=>{s&&(h.delete(c),o(s))})}catch(s){h.delete(c),o(s)}})}async function oe(e){let t=y.get(e.handleId);if(!t)throw new Error(`Package handle not found: ${e.handleId}`);let{target:n}=b(t,e.path||[]),a=n||t;if(!a||typeof a[Symbol.asyncIterator]!="function"&&typeof a.on!="function")throw new Error(`Package handle is not a readable stream: ${e.handleId}`);let o=typeof a[Symbol.asyncIterator]=="function"?a[Symbol.asyncIterator]():a;P.set(e.id,{taskId:e.taskId,stream:a,iterator:o});try{for(;;){let c=await o.next();if(c.done)break;await ae(e.id,e.taskId,c.value)}}finally{P.delete(e.id)}}function ce(e){T(e),m.delete(e);for(let t of y.keys())t.startsWith(`${e}:`)&&y.delete(t)}process.on("message",async e=>{if(!e)return;if(e.type==="pkgStreamAck"||e.type==="pkgStreamError"){let o=h.get(e.ackId);if(!o)return;h.delete(e.ackId),e.type==="pkgStreamAck"?o.resolve(!0):o.reject(new Error(e.error?.message||"Package stream failed"));return}if(e.type==="pkgCallbackResult"||e.type==="pkgCallbackError"){let o=w.get(e.id);if(!o)return;w.delete(e.id),e.type==="pkgCallbackResult"?o.resolve(Z(o.taskId,e.value)):o.reject(new Error(e.error?.message||"Package callback failed"));return}if(e.op==="cancelTask"){T(e.taskId),V(e.id,e.taskId);return}if(!e.op)return;let t=!1,n=G(e.timeoutMs),a=setTimeout(()=>{if(t)return;t=!0;let o=[e.op?`op=${e.op}`:null,e.packageName?`package=${e.packageName}`:null,e.handleId?`handle=${e.handleId}`:null,Array.isArray(e.path)?`path=${e.path.join(".")||"<root>"}`:null].filter(Boolean).join(" "),c=`Package runtime call timed out after ${n}ms${o?` (${o})`:""}`;Q(e.id,e.taskId,c)},n);try{if(e.op==="releaseTask"){t=!0,clearTimeout(a),ce(e.taskId),e.fire||process.send?.({id:e.id,ok:!0,value:!0});return}J(e.taskId);let o=await R.run(e.taskId,()=>e.op==="streamHandle"?oe(e):ne(e));if(t)return;t=!0,clearTimeout(a),process.send?.({id:e.id,ok:!0,value:o})}catch(o){if(t)return;t=!0,clearTimeout(a);let c=[e.op?`op=${e.op}`:null,e.packageName?`package=${e.packageName}`:null,e.handleId?`handle=${e.handleId}`:null,Array.isArray(e.path)?`path=${e.path.join(".")||"<root>"}`:null].filter(Boolean).join(" ");process.send?.({id:e.id,ok:!1,error:{message:c?`${o.message} (${c})`:o.message,stack:o.stack}})}finally{e.op!=="releaseTask"&&K(e.taskId)}});process.on("disconnect",()=>{process.exit(1)});
1
+ "use strict";var B=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $=B((he,M)=>{"use strict";function L({handles:e,createHandleId:t,callIsolateCallback:n}){function a(s,r){if(r==null)return r;let l=typeof r;if(l==="string"||l==="number"||l==="boolean")return r;if(r instanceof Date)return{__date:r.toISOString()};if(r instanceof Set)return{__set:Array.from(r.values()).map(i=>a(s,i))};if(r instanceof Map)return{__map:Array.from(r.entries()).map(([i,u])=>[a(s,i),a(s,u)])};if(r instanceof RegExp)return{__regexp:{source:r.source,flags:r.flags}};if(r instanceof Error)return{__error:{name:r.name,message:r.message,stack:r.stack}};if(typeof URL<"u"&&r instanceof URL)return{__url:r.href};if(typeof URLSearchParams<"u"&&r instanceof URLSearchParams)return{__urlSearchParams:r.toString()};if(typeof Buffer<"u"&&Buffer.isBuffer(r)||r._isBuffer===!0)return o(s,r);if(ArrayBuffer.isView(r))return{__typedArray:r.constructor?.name||"Uint8Array",data:Array.from(r)};if(r instanceof ArrayBuffer)return{__arrayBuffer:Array.from(new Uint8Array(r))};if(Array.isArray(r))return r.map(i=>a(s,i));if(l==="object"&&D(r)){let i={};for(let[u,E]of Object.entries(r))i[u]=a(s,E);return i}return o(s,r)}function o(s,r){let l=t(s);return e.set(l,r),{__pkgHandle:l}}function c(s,r){if(!r||typeof r!="object")return r;if(r.__fnRef)return(...i)=>n(s,r.__fnRef,i);if(r.__pkgHandleArg){let i=e.get(r.__pkgHandleArg);if(!i)throw new Error(`Package argument handle not found: ${r.__pkgHandleArg}`);return i}if(r.__date)return new Date(r.__date);if(r.__set)return new Set(r.__set.map(i=>c(s,i)));if(r.__map)return new Map(r.__map.map(([i,u])=>[c(s,i),c(s,u)]));if(r.__regexp)return new RegExp(r.__regexp.source,r.__regexp.flags||"");if(r.__error){let i=new Error(r.__error.message||"");return i.name=r.__error.name||"Error",r.__error.stack&&(i.stack=r.__error.stack),i}if(r.__url)return new URL(r.__url);if(r.__urlSearchParams)return new URLSearchParams(r.__urlSearchParams);if(r.__blob)return new Blob([Uint8Array.from(r.__blob.data||[])],{type:r.__blob.type||""});if(r.__file){let i=[Uint8Array.from(r.__file.data||[])],u={type:r.__file.type||"",lastModified:r.__file.lastModified};return typeof File<"u"?new File(i,r.__file.name||"file",u):new Blob(i,u)}if(r.__formData){let i=new FormData;for(let[u,E]of r.__formData)i.append(u,c(s,E));return i}if(r.__typedArray){let i=globalThis[r.__typedArray]||Uint8Array;return new i(r.data||[])}if(r.__arrayBuffer)return Uint8Array.from(r.__arrayBuffer).buffer;if(Array.isArray(r))return r.map(i=>c(s,i));let l={};for(let[i,u]of Object.entries(r))l[i]=c(s,u);return l}function f(s,r){return JSON.parse(r||"[]").map(l=>c(s,l))}return{createPackageHandle:o,deserializePackageArg:c,deserializePackageArgs:f,serializePackageValue:a}}function D(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null?!1:!Object.values(e).some(n=>typeof n=="function")}M.exports={createPackageRuntimeCodec:L}});var{AsyncLocalStorage:H}=require("node:async_hooks"),F=require("node:http"),G=require("node:https"),z=require("node:net"),K=require("node:tls"),k=require("node:http2"),{createPackageRuntimeCodec:q}=$(),O=new H,S=new Map,y=new Map,b=new Map,h=new Map,g=new Map,A=new Map,d=new Map,x=new WeakSet,_=new Map,C=new Map,J=0,V=0,W=0,Y=0;function X(e){return Math.max(1,Math.trunc(Number(e)||3e4))}function m(e){let t=g.get(e);return t||(t=new AbortController,g.set(e,t)),t}function T(e){m(e).abort();for(let[t,n]of A)if(n.taskId===e){try{typeof n.stream.destroy=="function"&&n.stream.destroy(new Error("Package stream cancelled")),typeof n.iterator?.return=="function"&&Promise.resolve(n.iterator.return()).catch(()=>{})}catch{}A.delete(t)}for(let[t,n]of d)n.taskId===e&&(R(n,new Error("Package stream cancelled")),d.delete(t))}function Q(e){_.set(e,(_.get(e)||0)+1)}function Z(e){let t=Math.max(0,(_.get(e)||1)-1);if(t>0){_.set(e,t);return}_.delete(e);let n=C.get(e);if(n){C.delete(e);for(let a of n)process.send?.({type:"taskCancelled",id:a,taskId:e,ok:!0,value:!0})}}function v(e,t){if(!_.has(t)){process.send?.({type:"taskCancelled",id:e,taskId:t,ok:!0,value:!0});return}let n=C.get(t);n||(n=new Set,C.set(t,n)),n.add(e)}function I(){return O.getStore()}function N(e){let t=I();if(!t||!e)return e;let n=m(t).signal;if(n.aborted)return e.destroy(new Error("Package call cancelled")),e;let a=()=>{try{e.destroy(new Error("Package call cancelled"))}catch{}};return n.addEventListener("abort",a,{once:!0}),e.once("close",()=>{n.removeEventListener("abort",a)}),e}function U(e){let t=I();if(!t||!e||typeof e.destroy!="function")return e;let n=m(t).signal;if(n.aborted)return e.destroy(new Error("Package call cancelled")),e;let a=()=>{try{e.destroy(new Error("Package call cancelled"))}catch{}};return n.addEventListener("abort",a,{once:!0}),e.once("close",()=>{n.removeEventListener("abort",a)}),e}function ee(){for(let t of[F,G]){if(t.__enfyraCancelPatched)continue;t.__enfyraCancelPatched=!0;let n=t.request,a=t.get;t.request=function(...c){return N(n.apply(t,c))},t.get=function(...c){return N(a.apply(t,c))}}for(let[t,n]of[[z,["connect","createConnection"]],[K,["connect"]]])if(!t.__enfyraCancelPatched){t.__enfyraCancelPatched=!0;for(let a of n){let o=t[a];typeof o=="function"&&(t[a]=function(...f){return U(o.apply(t,f))})}}if(!k.__enfyraCancelPatched){k.__enfyraCancelPatched=!0;let t=k.connect;k.connect=function(...a){return U(t.apply(k,a))}}let e=globalThis.fetch;typeof e=="function"&&!globalThis.__enfyraFetchCancelPatched&&(globalThis.__enfyraFetchCancelPatched=!0,globalThis.fetch=function(n,a){let o=I();if(o){let c=a&&typeof a=="object"?a:{};c.signal||(a={...c,signal:m(o).signal})}return e.call(globalThis,n,a)})}ee();function te(e){let t=oe(e.taskId,e.argsJson),n=(e.path||[]).join(".");if(e.packageName==="undici"&&(n==="request"||n==="fetch")){let a=t[1]&&typeof t[1]=="object"?t[1]:{};t[1]={...a,signal:m(e.taskId).signal}}return t}function re(e,t,n){T(t),process.send?.({id:e,ok:!1,error:{message:n,code:"ERR_PACKAGE_RUNTIME_TIMEOUT",details:{outcome:"unknown_outcome",retryable:!1}}})}var{createPackageHandle:ne,deserializePackageArg:ae,deserializePackageArgs:oe,serializePackageValue:p}=q({handles:y,createHandleId:e=>`${e}:pkg_${++J}`,callIsolateCallback:se}),ce=new Set(["__proto__","prototype","constructor","caller","callee","arguments"]);async function ie(e){let t=e.fileUrl||e.name;if(S.has(t))return S.get(t);let n=e.name&&e.name.startsWith("node:")?e.name:e.fileUrl||e.name;if(!n)throw new Error(`Package "${e.name}" cannot be imported by package runtime`);let a=await import(n);return S.set(t,a),a}function w(e,t){if(!t||t.length===0)return{target:e&&e.default!==void 0?e.default:e,receiver:void 0};let n=e,a;for(let o=0;o<t.length;o++){let c=t[o];if(ce.has(c))throw new Error(`Package property is forbidden: ${c}`);if(n==null&&o===0&&e.default!==void 0&&(n=e.default),n!=null&&c in n){a=n,n=n[c];continue}if(o===0&&e.default!==void 0&&e.default!==n&&c in e.default){a=e.default,n=e.default[c];continue}throw new Error(`Package export not found: ${t.join(".")}`)}return{target:n,receiver:a}}function se(e,t,n){return new Promise((a,o)=>{let c=`cb_${++V}`;b.set(c,{resolve:a,reject:o,taskId:e});try{process.send?.({type:"pkgCallbackCall",id:c,taskId:e,callbackId:t,argsJson:JSON.stringify(n.map(f=>p(e,f)))})}catch(f){b.delete(c),o(f)}})}async function fe(e){let t=te(e);if(e.op==="handleCall"){let c=y.get(e.handleId);if(!c)throw new Error(`Package handle not found: ${e.handleId}`);let{target:f,receiver:s}=w(c,e.path||[]);if(typeof f!="function")return p(e.taskId,f);let r=await f.apply(s||c,t);return p(e.taskId,r)}if(e.op==="handleGet"){let c=y.get(e.handleId);if(!c)throw new Error(`Package handle not found: ${e.handleId}`);let{target:f,receiver:s}=w(c,e.path||[]);return p(e.taskId,typeof f=="function"&&s?f.bind(s):f)}let n=await ie(e.package),{target:a,receiver:o}=w(n,e.path||[]);if(e.op==="construct"){if(typeof a!="function")throw new Error(`Package export is not constructable: ${e.packageName}.${(e.path||[]).join(".")}`);return ne(e.taskId,new a(...t))}return typeof a=="function"?p(e.taskId,await a.apply(o,t)):p(e.taskId,a)}function le(e,t,n){return new Promise((a,o)=>{let c=`stream_${++W}`;h.set(c,{resolve:a,reject:o});try{process.send?.({type:"pkgStreamChunk",id:e,ackId:c,taskId:t,chunk:Buffer.from(n).toString("base64")},f=>{f&&(h.delete(c),o(f))})}catch(f){h.delete(c),o(f)}})}function P(e,t,n){let a=new Error(e);return a.code=t,a.details=n,a}function j(e,t){let n=y.get(e);if(!n)throw new Error(`Package handle not found: ${e}`);let{target:a}=w(n,t||[]),o=a||n;if(!o||typeof o[Symbol.asyncIterator]!="function"&&typeof o.next!="function")throw new Error(`Package handle is not a readable stream: ${e}`);if(x.has(o))throw P("Package readable stream already has a consumer","ERR_PACKAGE_STREAM_ALREADY_CONSUMED");return x.add(o),{stream:o,iterator:typeof o[Symbol.asyncIterator]=="function"?o[Symbol.asyncIterator]():o}}function R(e,t){try{typeof e.stream.destroy=="function"&&e.stream.destroy(t)}catch{}try{typeof e.iterator?.return=="function"&&Promise.resolve(e.iterator.return()).catch(()=>{})}catch{}}function ue(e){let t=j(e.handleId,e.path||[]),n=`${e.taskId}:stream_${++Y}`;return d.set(n,{...t,taskId:e.taskId}),{streamId:n}}async function de(e){let t=d.get(e.streamId);if(!t||t.taskId!==e.taskId)throw P(`Package stream session not found: ${e.streamId}`,"ERR_PACKAGE_STREAM_SESSION_NOT_FOUND");if(t.pending)throw P("Concurrent package stream next() calls are not supported","ERR_PACKAGE_STREAM_CONCURRENT_NEXT");t.pending=!0;let n=Number(e.streamTimeoutMs),a;try{let o=Promise.resolve().then(()=>t.iterator.next()),c=Number.isFinite(n)&&n>0?await Promise.race([o,new Promise((f,s)=>{a=setTimeout(()=>{s(P(`Package stream timed out after ${Math.trunc(n)}ms`,"ERR_PACKAGE_STREAM_TIMEOUT",{streamScoped:!0,retryable:!0}))},Math.max(1,Math.trunc(n)))})]):await o;return c.done?(d.delete(e.streamId),{done:!0}):{done:!1,chunk:Buffer.from(c.value).toString("base64")}}catch(o){throw d.delete(e.streamId),R(t,o),o}finally{t.pending=!1,a&&clearTimeout(a)}}function pe(e){let t=d.get(e.streamId);return!t||t.taskId!==e.taskId?{done:!0}:(d.delete(e.streamId),R(t),{done:!0})}async function _e(e){let{stream:t,iterator:n}=j(e.handleId,e.path||[]);A.set(e.id,{taskId:e.taskId,stream:t,iterator:n});try{for(;;){let a=await n.next();if(a.done)break;await le(e.id,e.taskId,a.value)}}finally{A.delete(e.id)}}function ye(e){T(e),g.delete(e);for(let t of y.keys())t.startsWith(`${e}:`)&&y.delete(t)}process.on("message",async e=>{if(!e)return;if(e.type==="pkgStreamAck"||e.type==="pkgStreamError"){let o=h.get(e.ackId);if(!o)return;h.delete(e.ackId),e.type==="pkgStreamAck"?o.resolve(!0):o.reject(new Error(e.error?.message||"Package stream failed"));return}if(e.type==="pkgCallbackResult"||e.type==="pkgCallbackError"){let o=b.get(e.id);if(!o)return;b.delete(e.id),e.type==="pkgCallbackResult"?o.resolve(ae(o.taskId,e.value)):o.reject(new Error(e.error?.message||"Package callback failed"));return}if(e.op==="cancelTask"){T(e.taskId),v(e.id,e.taskId);return}if(!e.op)return;let t=!1,n=X(e.timeoutMs),a=setTimeout(()=>{if(t)return;t=!0;let o=[e.op?`op=${e.op}`:null,e.packageName?`package=${e.packageName}`:null,e.handleId?`handle=${e.handleId}`:null,Array.isArray(e.path)?`path=${e.path.join(".")||"<root>"}`:null].filter(Boolean).join(" "),c=`Package runtime call timed out after ${n}ms${o?` (${o})`:""}`;re(e.id,e.taskId,c)},n);try{if(e.op==="releaseTask"){t=!0,clearTimeout(a),ye(e.taskId),e.fire||process.send?.({id:e.id,ok:!0,value:!0});return}Q(e.taskId);let o=await O.run(e.taskId,()=>e.op==="streamHandle"?_e(e):e.op==="streamIteratorOpen"?ue(e):e.op==="streamIteratorNext"?de(e):e.op==="streamIteratorReturn"?pe(e):fe(e));if(t)return;t=!0,clearTimeout(a),process.send?.({id:e.id,ok:!0,value:o})}catch(o){if(t)return;t=!0,clearTimeout(a);let c=[e.op?`op=${e.op}`:null,e.packageName?`package=${e.packageName}`:null,e.handleId?`handle=${e.handleId}`:null,Array.isArray(e.path)?`path=${e.path.join(".")||"<root>"}`:null].filter(Boolean).join(" ");process.send?.({id:e.id,ok:!1,error:{message:c?`${o.message} (${c})`:o.message,stack:o.stack,code:o.code,details:o.details}})}finally{e.op!=="releaseTask"&&Z(e.taskId)}});process.on("disconnect",()=>{process.exit(1)});
@@ -1,4 +1,4 @@
1
- "use strict";var ne=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ae=ne((Ye,re)=>{"use strict";var{fork:ve}=require("child_process"),be=require("path");function xe({workerDir:e,activeTaskContexts:t}){let s=new Map,n=new Map,r=new Map,i=new Map,o=null,y=0,f=1e3;function w(l){return Math.max(1,Math.trunc(Number(l)||3e4))}function b(l,a,c){let p=new Error(l);return p.code=a,p.details=c,p}function R(l,a){for(let[c,p]of n)p.child===l&&(clearTimeout(p.timer),n.delete(c),r.delete(c),p.reject(a))}function d(l){for(let[a,c]of i)c.child===l&&(clearTimeout(c.timer),i.delete(a))}function u(l,a){if(!l.connected)return;let c=`cancel_${++y}`,p=setTimeout(()=>{i.delete(c);try{l.kill()}catch{}},f);p.unref?.(),i.set(c,{child:l,timer:p});try{l.send({op:"cancelTask",taskId:a,id:c})}catch{clearTimeout(p),i.delete(c);try{l.kill()}catch{}}}function m(l){let a=typeof l=="string"?JSON.parse(l):l;if(a?.error)throw new Error(a.error);return a?.value}async function v(l){let a=t.get(l.taskId);if(!a)throw new Error(`Package callback context not found: ${l.taskId}`);let c=JSON.stringify(l.callbackId),p=JSON.stringify(l.argsJson||"[]"),h=await a.evalClosure(`return __invokeRuntimeCallback(${c}, ${p});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return m(h)}function k(){if(o&&o.connected)return o;let l=be.join(e,"package-runtime.child.js"),a=ve(l,[],{stdio:["ignore","ignore","ignore","ipc"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",NODE_ENV:process.env.NODE_ENV||"production",TMPDIR:process.env.TMPDIR||"",LANG:process.env.LANG||""}});return o=a,a.on("message",c=>{if(!c||!c.id)return;if(c.type==="pkgStreamChunk"){let h=r.get(c.id);if(!h)return;h.onChunk(Buffer.from(c.chunk||"","base64")).then(()=>{try{a.send({type:"pkgStreamAck",ackId:c.ackId})}catch{}}).catch(M=>{try{a.send({type:"pkgStreamError",ackId:c.ackId,error:{message:M.message,stack:M.stack}})}catch{}});return}if(c.type==="taskCancelled"){let h=i.get(c.id);if(!h||h.child!==a)return;clearTimeout(h.timer),i.delete(c.id);return}if(c.type==="pkgCallbackCall"){v(c).then(h=>{try{a.send({type:"pkgCallbackResult",id:c.id,value:h})}catch{}}).catch(h=>{try{a.send({type:"pkgCallbackError",id:c.id,error:{message:h.message,stack:h.stack}})}catch{}});return}let p=n.get(c.id);if(p)if(clearTimeout(p.timer),n.delete(c.id),r.delete(c.id),c.ok)p.resolve(c.value);else{c.error?.code==="ERR_PACKAGE_RUNTIME_TIMEOUT"&&u(a,p.taskId);let h=b(c.error?.message||"Package runtime call failed",c.error?.code,c.error?.details);h.stack=c.error?.stack||h.stack,p.reject(h)}}),a.on("exit",(c,p)=>{o===a&&(o=null),d(a),R(a,b(`Package runtime exited${p?` with signal ${p}`:` with code ${c}`}`,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),a.on("error",c=>{o===a&&(o=null),d(a),R(a,b(c.message,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),a}function P(l){return new Promise((a,c)=>{let p=k(),h=`pkg_${++y}`,M=w(l.timeoutMs),J=setTimeout(()=>{n.delete(h),r.delete(h),u(p,l.taskId),c(b(`Package runtime call timed out after ${M}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},M);n.set(h,{child:p,taskId:l.taskId,resolve:a,reject:c,timer:J});try{p.send({...l,id:h},I=>{I&&(clearTimeout(J),n.delete(h),c(I))})}catch(I){clearTimeout(J),n.delete(h),c(I)}})}function C(l,a,c,p=[],h=3e4){return new Promise((M,J)=>{let I=k(),N=`pkg_${++y}`,Q=w(h),ee=setTimeout(()=>{n.delete(N),r.delete(N),u(I,l),J(b(`Package runtime stream timed out after ${Q}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},Q);n.set(N,{child:I,taskId:l,resolve:M,reject:J,timer:ee}),r.set(N,{onChunk:c});try{I.send({op:"streamHandle",taskId:l,handleId:a,path:p,id:N,timeoutMs:Q},G=>{G&&(clearTimeout(ee),n.delete(N),r.delete(N),J(G))})}catch(G){clearTimeout(ee),n.delete(N),r.delete(N),J(G)}})}function D(l){try{if(!o||!o.connected)return;o.send({...l,id:`pkg_${++y}`,fire:!0})}catch{}}function _(l){try{if(!o||!o.connected)return;u(o,l)}catch{}}async function H(l,a){let c=s.get(l);if(!c)throw new Error("Package context is not available");if(a.handleId)return P({op:a.kind==="get"?"handleGet":"handleCall",taskId:l,handleId:a.handleId,path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs});let p=c.get(a.packageName);if(!p)throw new Error(`Package "${a.packageName}" is not available`);return P({op:a.kind==="construct"?"construct":"call",taskId:l,packageName:a.packageName,package:{name:p.name,fileUrl:p.fileUrl},path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs})}function g(l,a){s.set(l,a)}function x(l){s.delete(l),D({op:"releaseTask",taskId:l})}function $(){if(o){try{o.kill()}catch{}o=null}}return{cleanupTaskPackages:x,cancelTask:_,executePackageRuntimeCall:H,setTaskPackages:g,streamPackageHandle:C,shutdownPackageRuntime:$}}re.exports={createPackageRuntimeBridge:xe}});var oe=ne((Ze,se)=>{"use strict";var Pe=`
1
+ "use strict";var ne=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var se=ne((Ze,ae)=>{"use strict";var{fork:be}=require("child_process"),xe=require("path");function Pe({workerDir:e,activeTaskContexts:t}){let o=new Map,r=new Map,a=new Map,l=new Map,i=null,y=0,f=1e3;function v(s){return Math.max(1,Math.trunc(Number(s)||3e4))}function b(s,n,c){let _=new Error(s);return _.code=n,_.details=c,_}function R(s,n){for(let[c,_]of r)_.child===s&&(clearTimeout(_.timer),r.delete(c),a.delete(c),_.reject(n))}function d(s){for(let[n,c]of l)c.child===s&&(clearTimeout(c.timer),l.delete(n))}function u(s,n){if(!s.connected)return;let c=`cancel_${++y}`,_=setTimeout(()=>{l.delete(c);try{s.kill()}catch{}},f);_.unref?.(),l.set(c,{child:s,timer:_});try{s.send({op:"cancelTask",taskId:n,id:c})}catch{clearTimeout(_),l.delete(c);try{s.kill()}catch{}}}function k(s){let n=typeof s=="string"?JSON.parse(s):s;if(n?.error)throw new Error(n.error);return n?.value}async function w(s){let n=t.get(s.taskId);if(!n)throw new Error(`Package callback context not found: ${s.taskId}`);let c=JSON.stringify(s.callbackId),_=JSON.stringify(s.argsJson||"[]"),h=await n.evalClosure(`return __invokeRuntimeCallback(${c}, ${_});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return k(h)}function g(){if(i&&i.connected)return i;let s=xe.join(e,"package-runtime.child.js"),n=be(s,[],{stdio:["ignore","ignore","ignore","ipc"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",NODE_ENV:process.env.NODE_ENV||"production",TMPDIR:process.env.TMPDIR||"",LANG:process.env.LANG||""}});return i=n,n.on("message",c=>{if(!c||!c.id)return;if(c.type==="pkgStreamChunk"){let h=a.get(c.id);if(!h)return;h.onChunk(Buffer.from(c.chunk||"","base64")).then(()=>{try{n.send({type:"pkgStreamAck",ackId:c.ackId})}catch{}}).catch(L=>{try{n.send({type:"pkgStreamError",ackId:c.ackId,error:{message:L.message,stack:L.stack}})}catch{}});return}if(c.type==="taskCancelled"){let h=l.get(c.id);if(!h||h.child!==n)return;clearTimeout(h.timer),l.delete(c.id);return}if(c.type==="pkgCallbackCall"){w(c).then(h=>{try{n.send({type:"pkgCallbackResult",id:c.id,value:h})}catch{}}).catch(h=>{try{n.send({type:"pkgCallbackError",id:c.id,error:{message:h.message,stack:h.stack}})}catch{}});return}let _=r.get(c.id);if(_)if(clearTimeout(_.timer),r.delete(c.id),a.delete(c.id),c.ok)_.resolve(c.value);else{c.error?.code==="ERR_PACKAGE_RUNTIME_TIMEOUT"&&u(n,_.taskId);let h=b(c.error?.message||"Package runtime call failed",c.error?.code,c.error?.details);h.stack=c.error?.stack||h.stack,_.reject(h)}}),n.on("exit",(c,_)=>{i===n&&(i=null),d(n),R(n,b(`Package runtime exited${_?` with signal ${_}`:` with code ${c}`}`,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),n.on("error",c=>{i===n&&(i=null),d(n),R(n,b(c.message,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),n}function x(s){return new Promise((n,c)=>{let _=g(),h=`pkg_${++y}`,L=v(s.timeoutMs),O=setTimeout(()=>{r.delete(h),a.delete(h),u(_,s.taskId),c(b(`Package runtime call timed out after ${L}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},L);r.set(h,{child:_,taskId:s.taskId,resolve:n,reject:c,timer:O});try{_.send({...s,id:h},J=>{J&&(clearTimeout(O),r.delete(h),c(J))})}catch(J){clearTimeout(O),r.delete(h),c(J)}})}function C(s,n,c,_=[],h=3e4){return new Promise((L,O)=>{let J=g(),$=`pkg_${++y}`,ee=v(h),te=setTimeout(()=>{r.delete($),a.delete($),u(J,s),O(b(`Package runtime stream timed out after ${ee}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},ee);r.set($,{child:J,taskId:s,resolve:L,reject:O,timer:te}),a.set($,{onChunk:c});try{J.send({op:"streamHandle",taskId:s,handleId:n,path:_,id:$,timeoutMs:ee},V=>{V&&(clearTimeout(te),r.delete($),a.delete($),O(V))})}catch(V){clearTimeout(te),r.delete($),a.delete($),O(V)}})}function F(s){try{if(!i||!i.connected)return;i.send({...s,id:`pkg_${++y}`,fire:!0})}catch{}}function p(s){try{if(!i||!i.connected)return;u(i,s)}catch{}}async function j(s,n){let c=o.get(s);if(!c)throw new Error("Package context is not available");if(n.handleId)return x({op:n.kind==="get"?"handleGet":"handleCall",taskId:s,handleId:n.handleId,path:n.path||[],argsJson:n.argsJson||"[]",timeoutMs:n.timeoutMs});let _=c.get(n.packageName);if(!_)throw new Error(`Package "${n.packageName}" is not available`);return x({op:n.kind==="construct"?"construct":"call",taskId:s,packageName:n.packageName,package:{name:_.name,fileUrl:_.fileUrl},path:n.path||[],argsJson:n.argsJson||"[]",timeoutMs:n.timeoutMs})}function m(s,n){if(!o.get(s))throw new Error("Package context is not available");if(n.method==="open")return x({op:"streamIteratorOpen",taskId:s,handleId:n.handleId,path:n.path||[],timeoutMs:n.timeoutMs});if(n.method==="next")return x({op:"streamIteratorNext",taskId:s,streamId:n.streamId,streamTimeoutMs:n.streamTimeoutMs,timeoutMs:n.timeoutMs});if(n.method==="return")return x({op:"streamIteratorReturn",taskId:s,streamId:n.streamId,timeoutMs:n.timeoutMs});throw new Error(`Unsupported package stream method: ${n.method}`)}function P(s,n){o.set(s,n)}function M(s){o.delete(s),F({op:"releaseTask",taskId:s})}function H(){if(i){try{i.kill()}catch{}i=null}}return{cleanupTaskPackages:M,cancelTask:p,executePackageRuntimeCall:j,executePackageStreamCall:m,setTaskPackages:P,streamPackageHandle:C,shutdownPackageRuntime:H}}ae.exports={createPackageRuntimeBridge:Pe}});var ie=ne((Qe,oe)=>{"use strict";var Se=`
2
2
  "use strict";
3
3
  let $ctx = {};
4
4
  let $pkgs = {};
@@ -118,6 +118,25 @@ function __bytesToBase64(bytes) {
118
118
  return out;
119
119
  }
120
120
 
121
+ function __base64ToBytes(value) {
122
+ const input = String(value || '').replace(/=+$/, '');
123
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
124
+ const out = [];
125
+ let bits = 0;
126
+ let bitCount = 0;
127
+ for (const char of input) {
128
+ const index = chars.indexOf(char);
129
+ if (index < 0) continue;
130
+ bits = (bits << 6) | index;
131
+ bitCount += 6;
132
+ if (bitCount >= 8) {
133
+ bitCount -= 8;
134
+ out.push((bits >> bitCount) & 255);
135
+ }
136
+ }
137
+ return Uint8Array.from(out);
138
+ }
139
+
121
140
  function __streamChunkToBytes(chunk) {
122
141
  if (chunk === undefined || chunk === null) return new Uint8Array();
123
142
  if (typeof chunk === 'string') return new TextEncoder().encode(chunk);
@@ -386,6 +405,7 @@ const __ctxChangeProtectedKeys = new Set([
386
405
  '$throw',
387
406
  '$trigger',
388
407
  '$pkgs',
408
+ '$streams',
389
409
  '$env',
390
410
  ]);
391
411
 
@@ -558,10 +578,16 @@ function __createPkgHandleProxy(handlePromise, path) {
558
578
  };
559
579
  return new Proxy(fn, {
560
580
  get: (_, prop) => {
581
+ if (prop === Symbol.asyncIterator) {
582
+ return () => __createPkgStreamIterator(
583
+ handlePromise.then((handleId) => ({ handleId, path })),
584
+ );
585
+ }
561
586
  if (typeof prop === 'symbol') return undefined;
562
587
  if (prop === 'then') return undefined;
563
588
  if (prop === '__pkgHandle') return undefined;
564
589
  if (prop === '__pkgHandlePromise') return handlePromise;
590
+ if (prop === '__pkgHandlePath') return path;
565
591
  if (prop === '__enfyraLocalReadable') return undefined;
566
592
  return __createAsyncPkgResultProxy(
567
593
  handlePromise.then((handleId) =>
@@ -620,6 +646,18 @@ function __createAsyncPkgResultProxy(valuePromise, path) {
620
646
 
621
647
  return new Proxy(fn, {
622
648
  get: (_target, prop) => {
649
+ if (prop === Symbol.asyncIterator) {
650
+ return () => __createPkgStreamIterator(
651
+ promiseForPath().then(async (value) => {
652
+ const handlePromise = value && value.__pkgHandlePromise;
653
+ if (!handlePromise) throw new Error('Package result is not an async iterable');
654
+ return {
655
+ handleId: await handlePromise,
656
+ path: value.__pkgHandlePath || [],
657
+ };
658
+ }),
659
+ );
660
+ }
623
661
  if (typeof prop === 'symbol') return undefined;
624
662
  if (prop === '__pkgHandle') return undefined;
625
663
  if (prop === '__enfyraLocalReadable') return undefined;
@@ -661,6 +699,193 @@ function __createAsyncPkgResultProxy(valuePromise, path) {
661
699
  });
662
700
  }
663
701
 
702
+ const __pkgStreamNextWithTimeout = Symbol('enfyra.packageStreamNextWithTimeout');
703
+
704
+ function __createPackageStreamError(message, code, details) {
705
+ const error = new Error(message);
706
+ if (code) error.code = code;
707
+ if (details !== undefined) error.details = details;
708
+ return error;
709
+ }
710
+
711
+ function __unwrapPackageStreamResult(result) {
712
+ if (result && result.__pkgStreamError) {
713
+ const payload = result.__pkgStreamError;
714
+ throw __createPackageStreamError(payload.message, payload.code, payload.details);
715
+ }
716
+ return result;
717
+ }
718
+
719
+ function __createPkgStreamIterator(descriptorPromise) {
720
+ let sessionPromise = null;
721
+ let closed = false;
722
+ let pending = false;
723
+
724
+ const call = async (method, data) => {
725
+ const result = await __call('pkgStreamCall', JSON.stringify({
726
+ method,
727
+ ...(data || {}),
728
+ timeoutMs: __remainingTaskTimeoutMs(),
729
+ }));
730
+ return __unwrapPackageStreamResult(result);
731
+ };
732
+ const open = () => {
733
+ if (!sessionPromise) {
734
+ sessionPromise = descriptorPromise.then(({ handleId, path }) =>
735
+ call('open', { handleId, path: path || [] }).then((value) => value.streamId),
736
+ );
737
+ }
738
+ return sessionPromise;
739
+ };
740
+
741
+ const iterator = {
742
+ async next() {
743
+ return iterator[__pkgStreamNextWithTimeout]();
744
+ },
745
+ async [__pkgStreamNextWithTimeout](timeoutMs) {
746
+ if (closed) return { done: true, value: undefined };
747
+ if (pending) {
748
+ throw __createPackageStreamError(
749
+ 'Concurrent package stream next() calls are not supported',
750
+ 'ERR_PACKAGE_STREAM_CONCURRENT_NEXT',
751
+ );
752
+ }
753
+ pending = true;
754
+ try {
755
+ const streamId = await open();
756
+ const result = await call('next', {
757
+ streamId,
758
+ streamTimeoutMs: timeoutMs,
759
+ });
760
+ if (result.done) {
761
+ closed = true;
762
+ return { done: true, value: undefined };
763
+ }
764
+ return { done: false, value: __base64ToBytes(result.chunk) };
765
+ } catch (error) {
766
+ closed = true;
767
+ throw error;
768
+ } finally {
769
+ pending = false;
770
+ }
771
+ },
772
+ async return() {
773
+ if (closed) return { done: true, value: undefined };
774
+ closed = true;
775
+ const streamId = await open();
776
+ await call('return', { streamId });
777
+ return { done: true, value: undefined };
778
+ },
779
+ [Symbol.asyncIterator]() {
780
+ return this;
781
+ },
782
+ };
783
+ return iterator;
784
+ }
785
+
786
+ function __getStreamIterator(readable) {
787
+ if (!readable || typeof readable[Symbol.asyncIterator] !== 'function') {
788
+ throw new Error('$streams requires an async iterable readable stream');
789
+ }
790
+ return readable[Symbol.asyncIterator]();
791
+ }
792
+
793
+ function __normalizeStreamOptions(options) {
794
+ const timeoutMs = Math.max(1, Math.trunc(Number(options?.timeoutMs) || 30000));
795
+ const requestedMaxBytes = Number(options?.maxBytes);
796
+ const maxBytes = Number.isFinite(requestedMaxBytes) && requestedMaxBytes > 0
797
+ ? Math.trunc(requestedMaxBytes)
798
+ : 8 * 1024 * 1024;
799
+ return { timeoutMs, maxBytes };
800
+ }
801
+
802
+ async function __nextStreamChunk(iterator, deadlineMs) {
803
+ const remainingMs = Math.max(1, Math.ceil(deadlineMs - Date.now()));
804
+ if (typeof iterator[__pkgStreamNextWithTimeout] === 'function') {
805
+ return iterator[__pkgStreamNextWithTimeout](remainingMs);
806
+ }
807
+ return iterator.next();
808
+ }
809
+
810
+ async function __preflightStream(readable, options) {
811
+ const iterator = __getStreamIterator(readable);
812
+ const { timeoutMs } = __normalizeStreamOptions(options);
813
+ const deadlineMs = Date.now() + Math.min(timeoutMs, __remainingTaskTimeoutMs());
814
+ let firstChunk;
815
+ while (firstChunk === undefined) {
816
+ const next = await __nextStreamChunk(iterator, deadlineMs);
817
+ if (next.done) {
818
+ throw __createPackageStreamError(
819
+ 'Package stream ended before yielding bytes',
820
+ 'ERR_PACKAGE_STREAM_EMPTY',
821
+ );
822
+ }
823
+ const bytes = __streamChunkToBytes(next.value);
824
+ if (bytes.byteLength > 0) firstChunk = bytes;
825
+ }
826
+
827
+ let consumed = false;
828
+ const stream = {
829
+ __enfyraLocalReadable: true,
830
+ async *[Symbol.asyncIterator]() {
831
+ if (consumed) {
832
+ throw __createPackageStreamError(
833
+ 'Preflight stream already has a consumer',
834
+ 'ERR_PACKAGE_STREAM_ALREADY_CONSUMED',
835
+ );
836
+ }
837
+ consumed = true;
838
+ yield firstChunk;
839
+ while (true) {
840
+ const next = await iterator.next();
841
+ if (next.done) return;
842
+ yield next.value;
843
+ }
844
+ },
845
+ };
846
+ return { stream, firstChunk: new Uint8Array(firstChunk) };
847
+ }
848
+
849
+ async function __readStream(readable, options, asText) {
850
+ const iterator = __getStreamIterator(readable);
851
+ const { timeoutMs, maxBytes } = __normalizeStreamOptions(options);
852
+ const deadlineMs = Date.now() + Math.min(timeoutMs, __remainingTaskTimeoutMs());
853
+ const chunks = [];
854
+ const text = [];
855
+ const decoder = asText ? new TextDecoder('utf-8') : null;
856
+ let totalBytes = 0;
857
+ while (true) {
858
+ const next = await __nextStreamChunk(iterator, deadlineMs);
859
+ if (next.done) break;
860
+ const bytes = __streamChunkToBytes(next.value);
861
+ totalBytes += bytes.byteLength;
862
+ if (totalBytes > maxBytes) {
863
+ try { await iterator.return?.(); } catch {}
864
+ throw __createPackageStreamError(
865
+ 'Package stream exceeded maxBytes (' + maxBytes + ')',
866
+ 'ERR_PACKAGE_STREAM_MAX_BYTES',
867
+ { maxBytes },
868
+ );
869
+ }
870
+ if (decoder) {
871
+ text.push(decoder.decode(bytes, { stream: true }));
872
+ } else {
873
+ chunks.push(bytes);
874
+ }
875
+ }
876
+ if (decoder) {
877
+ text.push(decoder.decode());
878
+ return text.join('');
879
+ }
880
+ const output = new Uint8Array(totalBytes);
881
+ let offset = 0;
882
+ for (const chunk of chunks) {
883
+ output.set(chunk, offset);
884
+ offset += chunk.byteLength;
885
+ }
886
+ return output;
887
+ }
888
+
664
889
  function __createAsyncMainResultProxy(valuePromise, path) {
665
890
  const resolveValue = () => valuePromise;
666
891
  const resolvePath = () =>
@@ -807,6 +1032,11 @@ function __resetTask(snapshot, taskId, timeoutMs, deadlineMs) {
807
1032
  __pendingRuntimeTasks = [];
808
1033
  %%PKG_SETUP%%
809
1034
  $ctx.$pkgs = $pkgs;
1035
+ $ctx.$streams = {
1036
+ preflight: __preflightStream,
1037
+ readBytes: (readable, options) => __readStream(readable, options, false),
1038
+ readText: (readable, options) => __readStream(readable, options, true),
1039
+ };
810
1040
  $ctx.$share = $ctx.$share || {};
811
1041
  $ctx.$share.$logs = __logs;
812
1042
  const __createRepoProxy = (table, access) => new Proxy({}, {
@@ -960,48 +1190,48 @@ function __cleanupTask() {
960
1190
  __pendingRuntimeTasks = [];
961
1191
  return true;
962
1192
  }
963
- `;function Se(e){return Pe.replace("%%PKG_SETUP%%",e)}se.exports={buildSetupCode:Se}});var{parentPort:Ce}=require("worker_threads"),S=Ce||{on(e,t){e==="message"&&process.on("message",t)},postMessage(e){process.send?.(e)}},ie=require("fs"),{fileURLToPath:Re}=require("url"),{createPackageRuntimeBridge:$e}=ae(),{buildSetupCode:Te}=oe(),q;try{q=require("isolated-vm")}catch(e){S.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var K=new Map,pe=0,O=new Map,E=new Map,j=new Map,U=$e({workerDir:__dirname,activeTaskContexts:O}),Me=500,Ne=5e3,ce=new WeakMap,_e=new WeakMap,W={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function B(e){let t=j.get(e);return Math.max(1,Math.ceil((t??Date.now()+3e4)-Date.now()))}var A=null,le=0,ue=0,de=0;async function Ae(){let e=Date.now();if(e-ue<Ne)return de;if(ue=e,!A)return 0;let t=0;for(let s of A){let n=s?.isolate;if(!(!n||n.isDisposed))try{let r=await n.getHeapStatistics(),i=r.heap_size_limit||1,o=r.used_heap_size/i;o>t&&(t=o)}catch{}}return de=t,t}async function F(e){e.heapRatio=await Ae(),e.runnerRssBytes=process.memoryUsage().rss,e.contextStats=Ee(),S.postMessage(e)}function Ee(){return{...W,idle:0}}function ge(e,t,s){if(!A){let n=Math.max(1,Math.trunc(Number(t)||8));A=new Array(n).fill(null)}for(let n=0;n<A.length;n++){let r=(le+n)%A.length,i=A[r];if((!i||!i.isolate||i.isolate.isDisposed)&&(i={isolate:new q.Isolate({memoryLimit:e}),taskIds:new Set},A[r]=i),i.taskIds.size<s)return le=(r+1)%A.length,i}throw new Error("No isolate lane is available")}function z(e,t,s){for(let n of[...e.taskIds])n!==t&&(e.taskIds.delete(n),E.delete(n),O.delete(n),j.delete(n),U.cancelTask(n),V(n),S.postMessage({type:"result",id:n,success:!1,error:{message:"Isolate was disposed because a sibling task could not continue",code:"ERR_EXECUTOR_ISOLATE_LOST",details:{outcome:"unknown_outcome",retryable:!1,reason:s}}}),S.postMessage({type:"taskReleased",id:n}));try{e.isolate.dispose()}catch{}}function Oe(e){let t=E.get(e);if(!t){S.postMessage({type:"taskCancelled",id:e});return}z(t,e,"sibling_cancelled"),U.cancelTask(e),E.delete(e),O.delete(e),j.delete(e),t.taskIds.delete(e),V(e),S.postMessage({type:"taskCancelled",id:e})}function ye(e,t){t.taskIds.delete(e)&&(O.delete(e),E.delete(e),j.delete(e),V(e),S.postMessage({type:"taskReleased",id:e}))}async function T(e,t,s){let n=ce.get(e);n||(n=new Map,ce.set(e,n));let r=n.get(t);if(r)return r;let i;try{i=await e.compileScript(t,{filename:s})}catch(o){throw o&&typeof o=="object"&&(o.executionStage="compile"),o}if(n.set(t,i),n.size>Me){let o=n.keys().next().value;n.delete(o)}return i}S.on("message",async e=>{if(e.type==="execute")Ge(e).catch(async t=>{await F({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")We(e).catch(async t=>{await F({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="invokeRuntimeCallback")Je(e).catch(t=>{S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:t?.message||String(t)})});else if(e.type==="callResult"){let t=K.get(e.callId);t&&(K.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=K.get(e.callId);t&&(K.delete(e.callId),t.reject(new Error(e.error)))}else e.type==="cancelTask"&&Oe(e.id)});async function Je(e){let t=O.get(e.id);if(!t){S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:`Runtime callback context not found: ${e.id}`});return}let s=await t.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(e.callbackId)}, ${JSON.stringify(e.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),n=JSON.parse(s);S.postMessage({type:"runtimeCallbackResult",callId:e.callId,...n})}function L(e,t,s){return new Promise((n,r)=>{let i=`cb_${++pe}`;K.set(i,{resolve:n,reject:r}),S.postMessage({type:t,id:e,callId:i,...s})})}function Ie(e,t,s){S.postMessage({type:t,id:e,callId:`f_${++pe}`,...s})}async function je(e,t){if(t?.method!=="stream")return L(e,"resCall",t);let s=JSON.parse(t.argsJson||"[]"),n=s[0],r=s[1]||{},i=n?.__pkgHandleArg;if(!i)return L(e,"resCall",t);let o=r.observer&&typeof r.observer=="object"?r.observer.__fnRef:null,y=r.transform&&typeof r.transform=="object"?r.transform.__fnRef:null,f=o||y?new TextDecoder("utf-8"):null;delete r.observer,delete r.transform;let w={...r};await L(e,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,w])});let b=async(u,m,v)=>{if(!u)return;let k=O.get(e);if(!k)return;let P=await k.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(u)}, ${JSON.stringify(JSON.stringify([m,v]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),C=JSON.parse(P);if(C?.error)throw new Error(C.error);if(C?.value?.__e!=="u")return C?.value},R=async(u,m)=>{if(o)try{await b(o,u,m)}catch{}},d=async(u,m,v)=>{let k=u;if(y){let C=await b(y,v,m);if(C===null)return;C!==void 0&&(k=Buffer.from(String(C)))}let P=Buffer.from(k);P.length!==0&&await L(e,"resCall",{method:"streamChunk",chunk:P.toString("base64")})};try{await U.streamPackageHandle(e,i,async m=>{let v="";try{v=f?f.decode(Buffer.from(m),{stream:!0}):""}catch{}await R(v,"chunk"),await d(m,"chunk",v)},[],B(e));let u="";try{u=f?f.decode():""}catch{}await R(u,"end"),await d("","end",u),await L(e,"resCall",{method:"streamEnd"})}catch(u){try{await L(e,"resCall",{method:"streamError",error:{message:u.message,stack:u.stack}})}catch{}throw await R("","error"),u}return JSON.stringify({__e:"u"})}function Ue(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=Re(e.fileUrl)),!t||!ie.existsSync(t)?null:ie.readFileSync(t,"utf8")}async function He(e,t,s){try{let n=Ue(s);if(!n)return null;let r=await e.compileModule(n,{filename:`pkg:${s.safeName}`});await r.instantiate(t,o=>{throw new Error(`Unresolved import in package ${s.safeName}: ${o}`)}),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 he(e,t){let s=new Set(t.map(f=>f.name)),n=new Set,r=String(e||""),i=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,o=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,y=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let f of[i,o])for(let w of r.matchAll(f)){let b=w[2];s.has(b)&&n.add(b)}for(let f of r.matchAll(y)){let w=f[1];s.has(w)&&n.add(w)}return n}async function Le(e,t,s,n){let r=await e.createContext(),i=r.global;await i.set("global",i.derefInto());let o=[],y=[],f=new Map;for(let d of s){f.set(d.name,d);let u=n.has(d.name)?await He(e,r,d):null;u!==null?(await i.set(`__pkg_${d.safeName}`,u),o.push(d)):y.push(d)}U.setTaskPackages(t,f),await i.set("__callRef",new q.Reference(async(d,u,m)=>{let v=JSON.parse(m);if(u==="pkgCall")try{return JSON.stringify(await U.executePackageRuntimeCall(d,v))}catch(k){throw new Error(JSON.stringify({__userThrow:!0,message:k.message,code:k.code,details:k.details}))}return u==="resCall"?je(d,v):L(d,u,v)})),await i.set("__fireRef",new q.Reference((d,u,m)=>{let v=JSON.parse(m);Ie(d,u,v)}));let w=o.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __pkg_${d.safeName};`).concat(y.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __createPkgProxy(${JSON.stringify(d.name)}, []);`)).join(`
964
- `),b=Te(w);return await(await T(e,b,"setup.js")).run(r,{timeout:B(t)}),_e.set(r,f),r}async function me(e,t,s,n,r,i,o){let y=e.isolate,f=await Le(y,t,s,r);W.created++,U.setTaskPackages(t,_e.get(f)||new Map);let w=f.global;return await w.set("__snapshot",new q.ExternalCopy(n).copyInto()),await w.set("__nextTaskId",t),await w.set("__nextTaskTimeoutMs",i),await w.set("__nextTaskDeadlineMs",o),await(await T(y,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs, __nextTaskDeadlineMs);","reset-task.js")).run(f,{timeout:B(t)}),f}async function ke(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await T(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{W.scrubFailed++;try{t.release()}catch{}return}try{t.release()}catch{}W.released++}}function Fe(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var De=3,Be=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Ke(e){if(!e)return null;let t=e.split(`
965
- `);for(let s of t){let n=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!n)continue;let r=n[1].trim();if(Be.includes(r)||r!=="handler.js"&&!r.startsWith("preHook #")&&!r.startsWith("postHook #"))continue;let o=parseInt(n[2])-De;if(!(o<=0))return{line:o,column:parseInt(n[3]),phase:r.replace(".js","")}}return null}function qe(e,t,s){if(!e||!t)return;let n=String(e).split(/\r?\n/),r=Math.max(1,t-1),i=Math.min(n.length,t+1),o=String(i).length,y=[];for(let f=r;f<=i;f++){let w=f===t?">":" ";y.push(`${w} ${String(f).padStart(o," ")}. ${n[f-1]??""}`),f===t&&s&&s>0&&y.push(` ${" ".repeat(o)} ${" ".repeat(Math.max(0,s-1))}^`)}return y.join(`
966
- `)}function Ve(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 te(e,t){let s=Fe(e);if(s)return{message:s.message,statusCode:s.statusCode,errorPath:s.errorPath,code:s.code??(Number.isInteger(s.statusCode)?`HTTP_${s.statusCode}`:void 0),details:s.details};let n=Ke(e.stack),r=e.message||"Unknown error",i=n?`${r} (${n.phase}, line ${n.line})`:r,o=Ve(n,t),y=n?qe(o,n.line,n.column):void 0;return{message:i,statusCode:e.statusCode||null,details:{errorName:e.name||null,executionStage:e.executionStage||"runtime",...n?{...n,codeFrame:y}:{}}}}function X(e){return e?.message==="Script execution timed out."}function Y(e){return e?.message==="Isolate was disposed during execution due to memory limit"}function we(e){X(e)&&e?.code==null&&(e.code="ERR_SCRIPT_EXECUTION_TIMEOUT"),Y(e)&&e?.code==null&&(e.code="ERR_ISOLATE_MEMORY_LIMIT",e.details={outcome:"unknown_outcome",retryable:!1})}async function Z(e,t,s){we(t);let n=te(t,s);t.details&&(n.details={...n.details,...t.details});let r,i=O.get(e),o=E.get(e);if(i&&o&&!o.isolate.isDisposed)try{let y=await T(o.isolate,"JSON.stringify({logs: __logs, truncated: $ctx.$share.$logsTruncated === true})","extract-diagnostic-logs.js");r=JSON.parse(await y.run(i,{timeout:100}))}catch{}await F({type:"result",id:e,success:!1,diagnosticLogs:r,error:{...n,stack:t.stack,code:n.code??t.code}})}async function Ge(e){let{id:t,code:s,pkgSources:n,snapshot:r,memoryLimitMb:i,isolatePoolSize:o,tasksPerIsolate:y}=e,f={handler:e.sourceCode||s||""},w=n||[],b=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),R=Date.now()+b;j.set(t,R);let d=he(s,w),u=ge(i,o,Math.max(1,Math.trunc(Number(y)||1)));u.taskIds.add(t),E.set(t,u);let m=u.isolate,v;try{v=await me(u,t,w,r,d,b,R)}catch(k){j.delete(t),E.delete(t),u.taskIds.delete(t),V(t),await Z(t,k,f),S.postMessage({type:"taskReleased",id:t});return}O.set(t,v);try{let k=`
1193
+ `;function Ce(e){return Se.replace("%%PKG_SETUP%%",e)}oe.exports={buildSetupCode:Ce}});var{parentPort:Re}=require("worker_threads"),S=Re||{on(e,t){e==="message"&&process.on("message",t)},postMessage(e){process.send?.(e)}},ce=require("fs"),{fileURLToPath:Me}=require("url"),{createPackageRuntimeBridge:Te}=se(),{buildSetupCode:$e}=ie(),W;try{W=require("isolated-vm")}catch(e){S.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var q=new Map,pe=0,I=new Map,A=new Map,U=new Map,N=Te({workerDir:__dirname,activeTaskContexts:I}),Ee=500,Ne=5e3,le=new WeakMap,ge=new WeakMap,z={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function K(e){let t=U.get(e);return Math.max(1,Math.ceil((t??Date.now()+3e4)-Date.now()))}var E=null,ue=0,de=0,fe=0;async function Ae(){let e=Date.now();if(e-de<Ne)return fe;if(de=e,!E)return 0;let t=0;for(let o of E){let r=o?.isolate;if(!(!r||r.isDisposed))try{let a=await r.getHeapStatistics(),l=a.heap_size_limit||1,i=a.used_heap_size/l;i>t&&(t=i)}catch{}}return fe=t,t}async function B(e){e.heapRatio=await Ae(),e.runnerRssBytes=process.memoryUsage().rss,e.contextStats=Ie(),S.postMessage(e)}function Ie(){return{...z,idle:0}}function me(e,t,o){if(!E){let r=Math.max(1,Math.trunc(Number(t)||8));E=new Array(r).fill(null)}for(let r=0;r<E.length;r++){let a=(ue+r)%E.length,l=E[a];if((!l||!l.isolate||l.isolate.isDisposed)&&(l={isolate:new W.Isolate({memoryLimit:e}),taskIds:new Set},E[a]=l),l.taskIds.size<o)return ue=(a+1)%E.length,l}throw new Error("No isolate lane is available")}function X(e,t,o){for(let r of[...e.taskIds])r!==t&&(e.taskIds.delete(r),A.delete(r),I.delete(r),U.delete(r),N.cancelTask(r),G(r),S.postMessage({type:"result",id:r,success:!1,error:{message:"Isolate was disposed because a sibling task could not continue",code:"ERR_EXECUTOR_ISOLATE_LOST",details:{outcome:"unknown_outcome",retryable:!1,reason:o}}}),S.postMessage({type:"taskReleased",id:r}));try{e.isolate.dispose()}catch{}}function Oe(e){let t=A.get(e);if(!t){S.postMessage({type:"taskCancelled",id:e});return}X(t,e,"sibling_cancelled"),N.cancelTask(e),A.delete(e),I.delete(e),U.delete(e),t.taskIds.delete(e),G(e),S.postMessage({type:"taskCancelled",id:e})}function ye(e,t){t.taskIds.delete(e)&&(I.delete(e),A.delete(e),U.delete(e),G(e),S.postMessage({type:"taskReleased",id:e}))}async function T(e,t,o){let r=le.get(e);r||(r=new Map,le.set(e,r));let a=r.get(t);if(a)return a;let l;try{l=await e.compileScript(t,{filename:o})}catch(i){throw i&&typeof i=="object"&&(i.executionStage="compile"),i}if(r.set(t,l),r.size>Ee){let i=r.keys().next().value;r.delete(i)}return l}S.on("message",async e=>{if(e.type==="execute")Ve(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")ze(e).catch(async t=>{await B({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="invokeRuntimeCallback")Je(e).catch(t=>{S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:t?.message||String(t)})});else if(e.type==="callResult"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.reject(new Error(e.error)))}else e.type==="cancelTask"&&Oe(e.id)});async function Je(e){let t=I.get(e.id);if(!t){S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:`Runtime callback context not found: ${e.id}`});return}let o=await t.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(e.callbackId)}, ${JSON.stringify(e.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),r=JSON.parse(o);S.postMessage({type:"runtimeCallbackResult",callId:e.callId,...r})}function D(e,t,o){return new Promise((r,a)=>{let l=`cb_${++pe}`;q.set(l,{resolve:r,reject:a}),S.postMessage({type:t,id:e,callId:l,...o})})}function Ue(e,t,o){S.postMessage({type:t,id:e,callId:`f_${++pe}`,...o})}async function je(e,t){if(t?.method!=="stream")return D(e,"resCall",t);let o=JSON.parse(t.argsJson||"[]"),r=o[0],a=o[1]||{},l=r?.__pkgHandleArg;if(!l)return D(e,"resCall",t);let i=a.observer&&typeof a.observer=="object"?a.observer.__fnRef:null,y=a.transform&&typeof a.transform=="object"?a.transform.__fnRef:null,f=i||y?new TextDecoder("utf-8"):null;delete a.observer,delete a.transform;let v={...a};await D(e,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,v])});let b=async(u,k,w)=>{if(!u)return;let g=I.get(e);if(!g)return;let x=await g.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(u)}, ${JSON.stringify(JSON.stringify([k,w]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),C=JSON.parse(x);if(C?.error)throw new Error(C.error);if(C?.value?.__e!=="u")return C?.value},R=async(u,k)=>{if(i)try{await b(i,u,k)}catch{}},d=async(u,k,w)=>{let g=u;if(y){let C=await b(y,w,k);if(C===null)return;C!==void 0&&(g=Buffer.from(String(C)))}let x=Buffer.from(g);x.length!==0&&await D(e,"resCall",{method:"streamChunk",chunk:x.toString("base64")})};try{await N.streamPackageHandle(e,l,async k=>{let w="";try{w=f?f.decode(Buffer.from(k),{stream:!0}):""}catch{}await R(w,"chunk"),await d(k,"chunk",w)},[],K(e));let u="";try{u=f?f.decode():""}catch{}await R(u,"end"),await d("","end",u),await D(e,"resCall",{method:"streamEnd"})}catch(u){try{await D(e,"resCall",{method:"streamError",error:{message:u.message,stack:u.stack}})}catch{}throw await R("","error"),u}return JSON.stringify({__e:"u"})}function He(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=Me(e.fileUrl)),!t||!ce.existsSync(t)?null:ce.readFileSync(t,"utf8")}async function Le(e,t,o){try{let r=He(o);if(!r)return null;let a=await e.compileModule(r,{filename:`pkg:${o.safeName}`});await a.instantiate(t,i=>{throw new Error(`Unresolved import in package ${o.safeName}: ${i}`)}),await a.evaluate({timeout:1e4});let l=await a.namespace.get("default");return l!==void 0&&l.typeof!=="undefined"?l.derefInto({release:!1}):a.namespace.derefInto({release:!1})}catch{return null}}function he(e,t){let o=new Set(t.map(f=>f.name)),r=new Set,a=String(e||""),l=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,i=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,y=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let f of[l,i])for(let v of a.matchAll(f)){let b=v[2];o.has(b)&&r.add(b)}for(let f of a.matchAll(y)){let v=f[1];o.has(v)&&r.add(v)}return r}async function De(e,t,o,r){let a=await e.createContext(),l=a.global;await l.set("global",l.derefInto());let i=[],y=[],f=new Map;for(let d of o){f.set(d.name,d);let u=r.has(d.name)?await Le(e,a,d):null;u!==null?(await l.set(`__pkg_${d.safeName}`,u),i.push(d)):y.push(d)}N.setTaskPackages(t,f),await l.set("__callRef",new W.Reference(async(d,u,k)=>{let w=JSON.parse(k);if(u==="pkgCall")try{return JSON.stringify(await N.executePackageRuntimeCall(d,w))}catch(g){throw new Error(JSON.stringify({__userThrow:!0,message:g.message,code:g.code,details:g.details}))}if(u==="pkgStreamCall")try{return JSON.stringify(await N.executePackageStreamCall(d,w))}catch(g){return JSON.stringify({__pkgStreamError:{message:g.message,code:g.code,details:g.details}})}return u==="resCall"?je(d,w):D(d,u,w)})),await l.set("__fireRef",new W.Reference((d,u,k)=>{let w=JSON.parse(k);Ue(d,u,w)}));let v=i.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __pkg_${d.safeName};`).concat(y.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __createPkgProxy(${JSON.stringify(d.name)}, []);`)).join(`
1194
+ `),b=$e(v);return await(await T(e,b,"setup.js")).run(a,{timeout:K(t)}),ge.set(a,f),a}async function ke(e,t,o,r,a,l,i){let y=e.isolate,f=await De(y,t,o,a);z.created++,N.setTaskPackages(t,ge.get(f)||new Map);let v=f.global;return await v.set("__snapshot",new W.ExternalCopy(r).copyInto()),await v.set("__nextTaskId",t),await v.set("__nextTaskTimeoutMs",l),await v.set("__nextTaskDeadlineMs",i),await(await T(y,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs, __nextTaskDeadlineMs);","reset-task.js")).run(f,{timeout:K(t)}),f}async function we(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await T(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{z.scrubFailed++;try{t.release()}catch{}return}try{t.release()}catch{}z.released++}}function Be(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var Fe=3,Ke=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function qe(e){if(!e)return null;let t=e.split(`
1195
+ `);for(let o of t){let r=o.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let a=r[1].trim();if(Ke.includes(a)||a!=="handler.js"&&!a.startsWith("preHook #")&&!a.startsWith("postHook #"))continue;let i=parseInt(r[2])-Fe;if(!(i<=0))return{line:i,column:parseInt(r[3]),phase:a.replace(".js","")}}return null}function We(e,t,o){if(!e||!t)return;let r=String(e).split(/\r?\n/),a=Math.max(1,t-1),l=Math.min(r.length,t+1),i=String(l).length,y=[];for(let f=a;f<=l;f++){let v=f===t?">":" ";y.push(`${v} ${String(f).padStart(i," ")}. ${r[f-1]??""}`),f===t&&o&&o>0&&y.push(` ${" ".repeat(i)} ${" ".repeat(Math.max(0,o-1))}^`)}return y.join(`
1196
+ `)}function Ge(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 re(e,t){let o=Be(e);if(o)return{message:o.message,statusCode:o.statusCode,errorPath:o.errorPath,code:o.code??(Number.isInteger(o.statusCode)?`HTTP_${o.statusCode}`:void 0),details:o.details};let r=qe(e.stack),a=e.message||"Unknown error",l=r?`${a} (${r.phase}, line ${r.line})`:a,i=Ge(r,t),y=r?We(i,r.line,r.column):void 0;return{message:l,statusCode:e.statusCode||null,details:{errorName:e.name||null,executionStage:e.executionStage||"runtime",...r?{...r,codeFrame:y}:{}}}}function Y(e){return e?.message==="Script execution timed out."}function Z(e){return e?.message==="Isolate was disposed during execution due to memory limit"}function ve(e){Y(e)&&e?.code==null&&(e.code="ERR_SCRIPT_EXECUTION_TIMEOUT"),Z(e)&&e?.code==null&&(e.code="ERR_ISOLATE_MEMORY_LIMIT",e.details={outcome:"unknown_outcome",retryable:!1})}async function Q(e,t,o){ve(t);let r=re(t,o);t.details&&(r.details={...r.details,...t.details});let a,l=I.get(e),i=A.get(e);if(l&&i&&!i.isolate.isDisposed)try{let y=await T(i.isolate,"JSON.stringify({logs: __logs, truncated: $ctx.$share.$logsTruncated === true})","extract-diagnostic-logs.js");a=JSON.parse(await y.run(l,{timeout:100}))}catch{}await B({type:"result",id:e,success:!1,diagnosticLogs:a,error:{...r,stack:t.stack,code:r.code??t.code}})}async function Ve(e){let{id:t,code:o,pkgSources:r,snapshot:a,memoryLimitMb:l,isolatePoolSize:i,tasksPerIsolate:y}=e,f={handler:e.sourceCode||o||""},v=r||[],b=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),R=Date.now()+b;U.set(t,R);let d=he(o,v),u=me(l,i,Math.max(1,Math.trunc(Number(y)||1)));u.taskIds.add(t),A.set(t,u);let k=u.isolate,w;try{w=await ke(u,t,v,a,d,b,R)}catch(g){U.delete(t),A.delete(t),u.taskIds.delete(t),G(t),await Q(t,g,f),S.postMessage({type:"taskReleased",id:t});return}I.set(t,w);try{let g=`
967
1197
  (async () => {
968
1198
  "use strict";
969
- ${s}
1199
+ ${o}
970
1200
  })().then((__result) => __extractResult(__result, __result === undefined));
971
- `,C=await(await T(m,k,"handler.js")).run(v,{timeout:B(t),promise:!0}),D=JSON.parse(C);await F({type:"result",id:t,success:!0,...D})}catch(k){u.taskIds.has(t)&&(await Z(t,k,f),(X(k)||Y(k))&&z(u,t,"sibling_execution_failure"))}finally{await ke(u,v),ye(t,u)}}async function We(e){let{id:t,codeBlocks:s,pkgSources:n,snapshot:r,memoryLimitMb:i,isolatePoolSize:o,tasksPerIsolate:y}=e,f=n||[],w=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),b=Date.now()+w;j.set(t,b);let R=he((s||[]).map(_=>_.code||"").join(`
972
- `),f),d=ge(i,o,Math.max(1,Math.trunc(Number(y)||1)));d.taskIds.add(t),E.set(t,d);let u=d.isolate,m;try{m=await me(d,t,f,r,R,w,b)}catch(_){j.delete(t),E.delete(t),d.taskIds.delete(t),V(t),await Z(t,_),S.postMessage({type:"taskReleased",id:t});return}O.set(t,m);let v=[],k=[],P={},C=0,D=0;for(let _ of s){let H=_.type||"handler",g=_.sourceCode||_.code||"";H==="postHook"?(D++,P[`postHook #${D}`]=g,P.postHook=g,k.push(_)):(H==="handler"?P.handler=g:(C++,P[`${H} #${C}`]=g,P.preHook=g),v.push(_))}try{let _=null;for(let g=0;g<v.length;g++){let x=v[g],$=x.type||"handler",l=$==="handler"?"handler":`${$} #${g+1}`,a;$==="preHook"?a=`
1201
+ `,C=await(await T(k,g,"handler.js")).run(w,{timeout:K(t),promise:!0}),F=JSON.parse(C);await B({type:"result",id:t,success:!0,...F})}catch(g){u.taskIds.has(t)&&(await Q(t,g,f),(Y(g)||Z(g))&&X(u,t,"sibling_execution_failure"))}finally{await we(u,w),ye(t,u)}}async function ze(e){let{id:t,codeBlocks:o,pkgSources:r,snapshot:a,memoryLimitMb:l,isolatePoolSize:i,tasksPerIsolate:y}=e,f=r||[],v=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),b=Date.now()+v;U.set(t,b);let R=he((o||[]).map(p=>p.code||"").join(`
1202
+ `),f),d=me(l,i,Math.max(1,Math.trunc(Number(y)||1)));d.taskIds.add(t),A.set(t,d);let u=d.isolate,k;try{k=await ke(d,t,f,a,R,v,b)}catch(p){U.delete(t),A.delete(t),d.taskIds.delete(t),G(t),await Q(t,p),S.postMessage({type:"taskReleased",id:t});return}I.set(t,k);let w=[],g=[],x={},C=0,F=0;for(let p of o){let j=p.type||"handler",m=p.sourceCode||p.code||"";j==="postHook"?(F++,x[`postHook #${F}`]=m,x.postHook=m,g.push(p)):(j==="handler"?x.handler=m:(C++,x[`${j} #${C}`]=m,x.preHook=m),w.push(p))}try{let p=null;for(let m=0;m<w.length;m++){let P=w[m],M=P.type||"handler",H=M==="handler"?"handler":`${M} #${m+1}`,s;M==="preHook"?s=`
973
1203
  (async () => {
974
1204
  "use strict";
975
- ${x.code}
1205
+ ${P.code}
976
1206
  })().then((__r) => {
977
1207
  if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
978
1208
  return JSON.stringify({ __shortCircuit: false });
979
- });`:a=`
1209
+ });`:s=`
980
1210
  (async () => {
981
1211
  "use strict";
982
- ${x.code}
1212
+ ${P.code}
983
1213
  })().then((__r) => {
984
1214
  $ctx.$data = __r;
985
1215
  return "__handler_done__";
986
- });`;try{let p=await(await T(u,a,`${l}.js`)).run(m,{timeout:B(t),promise:!0});if($==="preHook"&&typeof p=="string"){let h=JSON.parse(p);if(h.__shortCircuit){let M=await fe(u,m,h.value);await F({type:"result",id:t,success:!0,...M,shortCircuit:!0});return}}}catch(c){_=c;break}}if(!_&&k.length>0&&await(await T(u,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(m,{timeout:5e3}),_&&k.length>0){let g=te(_,P),x={message:g.message||"Unknown error",name:_.constructor?.name||"Error",stack:_.stack||"",statusCode:g.statusCode||500,details:g.details||{},timestamp:new Date().toISOString()},$=`
987
- $ctx.$error = ${JSON.stringify(x)};
1216
+ });`;try{let c=await(await T(u,s,`${H}.js`)).run(k,{timeout:K(t),promise:!0});if(M==="preHook"&&typeof c=="string"){let _=JSON.parse(c);if(_.__shortCircuit){let h=await _e(u,k,_.value);await B({type:"result",id:t,success:!0,...h,shortCircuit:!0});return}}}catch(n){p=n;break}}if(!p&&g.length>0&&await(await T(u,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(k,{timeout:5e3}),p&&g.length>0){let m=re(p,x),P={message:m.message||"Unknown error",name:p.constructor?.name||"Error",stack:p.stack||"",statusCode:m.statusCode||500,details:m.details||{},timestamp:new Date().toISOString()},M=`
1217
+ $ctx.$error = ${JSON.stringify(P)};
988
1218
  $ctx.$data = null;
989
- $ctx.$statusCode = ${x.statusCode};
1219
+ $ctx.$statusCode = ${P.statusCode};
990
1220
  if ($ctx.$api) {
991
- $ctx.$api.error = ${JSON.stringify(x)};
1221
+ $ctx.$api.error = ${JSON.stringify(P)};
992
1222
  $ctx.$api.response = {
993
- statusCode: ${x.statusCode},
1223
+ statusCode: ${P.statusCode},
994
1224
  responseTime: $ctx.$api.request && $ctx.$api.request.timestamp
995
1225
  ? Date.now() - new Date($ctx.$api.request.timestamp).getTime()
996
1226
  : 0,
997
- timestamp: ${JSON.stringify(x.timestamp)},
1227
+ timestamp: ${JSON.stringify(P.timestamp)},
998
1228
  };
999
1229
  }
1000
- "__error_populated__";`;await(await u.compileScript($,{filename:"populate-error.js"})).run(m,{timeout:5e3})}for(let g=0;g<k.length;g++){let x=k[g],$=`postHook #${g+1}`,l=`
1230
+ "__error_populated__";`;await(await u.compileScript(M,{filename:"populate-error.js"})).run(k,{timeout:5e3})}for(let m=0;m<g.length;m++){let P=g[m],M=`postHook #${m+1}`,H=`
1001
1231
  (async () => {
1002
1232
  "use strict";
1003
- ${x.code}
1233
+ ${P.code}
1004
1234
  })().then((__r) => {
1005
1235
  if (__r !== undefined) $ctx.$data = __r;
1006
1236
  return "__posthook_done__";
1007
- });`;try{await(await T(u,l,`${$}.js`)).run(m,{timeout:B(t),promise:!0})}catch(a){S.postMessage({type:"executionError",id:t,sourceKind:"postHook",scriptId:x.scriptId,error:{message:a.message,stack:a.stack,code:a.code}})}}if(_){we(_);let g=te(_,P);_.details&&(g.details={...g.details,..._.details});let x;try{let a=await(await T(u,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(m,{timeout:5e3,promise:!0});x=JSON.parse(a)}catch{}await F({type:"result",id:t,success:!1,error:{message:g.message,statusCode:g.statusCode,errorPath:g.errorPath,stack:_.stack,code:g.code??_.code,details:g.details},ctxChanges:x}),(X(_)||Y(_))&&z(d,t,"sibling_execution_failure");return}let H=await fe(u,m);await F({type:"result",id:t,success:!0,...H})}catch(_){d.taskIds.has(t)&&(await Z(t,_),(X(_)||Y(_))&&z(d,t,"sibling_execution_failure"))}finally{await ke(d,m),ye(t,d)}}function V(e){U.cleanupTaskPackages(e)}function ze(){U.shutdownPackageRuntime()}process.on("exit",ze);async function fe(e,t,s){if(s!==void 0){let o=`__extractResult(${JSON.stringify(s)}, false)`,f=await(await e.compileScript(o,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(f)}let i=await(await T(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(i)}
1237
+ });`;try{await(await T(u,H,`${M}.js`)).run(k,{timeout:K(t),promise:!0})}catch(s){S.postMessage({type:"executionError",id:t,sourceKind:"postHook",scriptId:P.scriptId,error:{message:s.message,stack:s.stack,code:s.code}})}}if(p){ve(p);let m=re(p,x);p.details&&(m.details={...m.details,...p.details});let P;try{let s=await(await T(u,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(k,{timeout:5e3,promise:!0});P=JSON.parse(s)}catch{}await B({type:"result",id:t,success:!1,error:{message:m.message,statusCode:m.statusCode,errorPath:m.errorPath,stack:p.stack,code:m.code??p.code,details:m.details},ctxChanges:P}),(Y(p)||Z(p))&&X(d,t,"sibling_execution_failure");return}let j=await _e(u,k);await B({type:"result",id:t,success:!0,...j})}catch(p){d.taskIds.has(t)&&(await Q(t,p),(Y(p)||Z(p))&&X(d,t,"sibling_execution_failure"))}finally{await we(d,k),ye(t,d)}}function G(e){N.cleanupTaskPackages(e)}function Xe(){N.shutdownPackageRuntime()}process.on("exit",Xe);async function _e(e,t,o){if(o!==void 0){let i=`__extractResult(${JSON.stringify(o)}, false)`,f=await(await e.compileScript(i,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(f)}let l=await(await T(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(l)}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var pi=Object.create;var zt=Object.defineProperty;var gi=Object.getOwnPropertyDescriptor;var hi=Object.getOwnPropertyNames;var yi=Object.getPrototypeOf,mi=Object.prototype.hasOwnProperty;var U=(r,e)=>()=>(r&&(e=r(r=0)),e);var In=(r,e)=>{for(var t in e)zt(r,t,{get:e[t],enumerable:!0})},hr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of hi(e))!mi.call(r,i)&&i!==t&&zt(r,i,{get:()=>e[i],enumerable:!(n=gi(e,i))||n.enumerable});return r};var xe=(r,e,t)=>(t=r!=null?pi(yi(r)):{},hr(e||!r||!r.__esModule?zt(t,"default",{value:r,enumerable:!0}):t,r)),bi=r=>hr(zt({},"__esModule",{value:!0}),r);function Rr(r){return Pn.createHash("md5").update(r).digest("hex").substring(0,8)}function xr(r){return r.length<=kr-3?`${r}_pk`:`j_${Rr(r)}_pk`}function Fr(r,e,t){let n=`${r}_${e}_foreign`;return n.length<=kr?n:`j_${Rr(r)}_${t}_fk`}function Ft(r,e,t){let n=`${r}:${e}:${t}`;return`j_${Pn.createHash("sha1").update(n).digest("hex").slice(0,12)}`}function z(r){return`${r}Id`}function vt(r,e,t){return{sourceColumn:"sourceId",targetColumn:"targetId"}}function vr(r){return r.replace(/_([a-z])/g,e=>e[1].toUpperCase())}function Ir(r){return r.replace(/([A-Z])/g,"_$1").toLowerCase()}function Nr(r,e,t){return`${r}_${e}_${t}_fk`}function Er(r,e,t){return`${r}_${e}_${t}_idx`}var Pn,kr,Ke=U(()=>{"use strict";Pn=xe(require("crypto")),kr=63});function on(r){return ro[r]??null}var _e,Dn,Nt,ro,sn=U(()=>{"use strict";_e=new Set(["_eq","_neq","_gt","_gte","_lt","_lte","_in","_not_in","_nin","_contains","_starts_with","_ends_with","_between","_is_null","_is_not_null"]),Dn=new Set(["_and","_or","_not"]),Nt=[...Array.from(Dn),...Array.from(_e)],ro={_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 I,ue=U(()=>{"use strict";I=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 Pr(){let r=process.env.DB_URI||"";return r.startsWith("mongodb://")||r.startsWith("mongodb+srv://")}var jr=U(()=>{"use strict"});function Ee(r,e,t){throw new I({message:`Unsupported filter operator "${r}" on field "${e}"${t?` (table "${t}")`:""}. Supported operators: ${Nt.join(", ")}.`,error:"UnsupportedFilterOperator",operator:r,field:e,supportedOperators:Nt})}function an(r,e,t){if(!e||typeof e!="object"||Array.isArray(e))return;let n=Pr();for(let i of Object.keys(e))if(i.startsWith("_")&&!_e.has(i)){if(n&&i==="_id")continue;Ee(i,r,t)}}function re(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(io.has(s)){if(Array.isArray(a))for(let c of a)re(c,e,t);else a&&typeof a=="object"&&re(a,e,t);continue}let u=o.get(s);if(u){if(a&&typeof a=="object"&&!Array.isArray(a)){an(s,a,e);let c=u.targetTableName||u.targetTable;if(c){let d=Object.keys(a).filter(l=>!l.startsWith("_"));if(d.length>0){let l={};for(let f of d)l[f]=a[f];re(l,c,t)}}}continue}s.startsWith("_")&&!i.has(s)&&s!=="_id"&&Ee(s,s,e),a&&typeof a=="object"&&!Array.isArray(a)&&an(s,a,e)}}var io,Je=U(()=>{"use strict";ue();sn();jr();io=new Set(["_and","_or","_not"])});function de(r,e,t,n){return!r||typeof r!="object"?{node:null,hasRelationFilters:!1}:ln(r,{tableName:e,metadata:t,registry:n,parentJoinId:null,currentJoinId:null,currentTable:e})}function ln(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=oo(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 oo(r,e,t){if(r==="_and")return Br("and",e,t);if(r==="_or")return Br("or",e,t);if(r==="_not"){let c=ln(e,t);return c.node?{node:{kind:"not",child:c.node},hasRelationFilters:c.hasRelationFilters}:{node:null,hasRelationFilters:c.hasRelationFilters}}let n=t.metadata?.tables?.get(t.currentTable),i=n?.columns?.some(c=>c.name==="_id"&&c.isPrimary),o=n?.columns?.some(c=>c.name==="id"),a=r==="id"?i&&!o?"_id":"id":r,u=n?.relations?.find(c=>c.propertyName===a);return u?so(a,e,u,t):n&&!n.columns?.find(d=>d.name===a)?(r.startsWith("_")&&r!=="_id"&&Ee(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}):ao(a,e,t)}function Br(r,e,t){if(!Array.isArray(e))return{node:null,hasRelationFilters:!1};let n=[],i=!1;for(let o of e){let s=ln(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 so(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},c=new Set(["_eq","_neq","_in","_not_in","_nin","_gt","_gte","_lt","_lte"]),l=i.length>0&&i.every(p=>c.has(p))?{id:e}:e;return{node:ln(l,u).node,hasRelationFilters:!0}}function ao(r,e,t){let n={joinId:t.currentJoinId,fieldName:r,isUuid:co(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("_")&&!_e.has(s)&&Ee(s,r,t.tableName);let i=Object.entries(e).filter(([s])=>_e.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=lo(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 lo(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=on(e);return n?{kind:"compare",field:r,op:n,value:t}:null}function co(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 Et=U(()=>{"use strict";sn();Je()});var ie,Mt=U(()=>{"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,i="left",o=null,s="data"){let a=o?`${o}.${t}`:t;if(this.map.has(a)){let f=this.map.get(a);return i==="inner"&&(f.joinType="inner"),f.purposes.includes(s)||f.purposes.push(s),a}let u=n?.tables?.get(e);if(!u)return null;let c=u.relations?.find(f=>f.propertyName===t);if(!c)return null;let d=c.targetTableName||c.targetTable;if(!d)return null;let l={id:a,propertyName:t,parentTable:e,targetTable:d,relationType:c.type,parentJoinId:o,joinType:i,relationMeta:c,purposes:[s]};return this.map.set(a,l),a}}});async function K(r,e,t=oe){if(!Number.isInteger(t)||t<1)throw new Error("Batch fetch chunk size must be a positive integer");if(r.length<=t)return e(r);let n=[];for(let u=0;u<r.length;u+=t)n.push(r.slice(u,u+t));let i=[],o=0;async function s(){for(;o<n.length;){let u=o++;i[u]=await e(n[u])}}let a=Math.min(Vn,n.length);return await Promise.all(Array.from({length:a},s)),i.flat()}function He(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 Me,oe,Vn,Hn,Te,Ge=U(()=>{"use strict";ue();Me=16,oe=5e3,Vn=4,Hn=10;Te=class{constructor(e,t,n){this.adapter=e;this.metadataGetter=t;this.trace=n}enrichNestedDescs(e,t,n){if(!t||Object.keys(t).length===0)return e;let i=e.map(s=>{let a=t[s.relationName];if(!a)return s;let u=a.fields!=null?Array.isArray(a.fields)?a.fields:String(a.fields).split(",").map(c=>c.trim()).filter(Boolean):["*"];return{...s,fields:u,userFilter:a.filter??s.userFilter,userSort:a.sort??s.userSort,userLimit:a.limit!==void 0?Number(a.limit):s.userLimit,userPage:a.page!==void 0?Number(a.page):s.userPage,nestedDeep:a.deep??s.nestedDeep}}),o=new Set(i.map(s=>s.relationName));for(let[s,a]of Object.entries(t)){if(o.has(s))continue;let u=n?.relations?.find(d=>d.propertyName===s);if(!u)continue;let c=a.fields!=null?Array.isArray(a.fields)?a.fields:String(a.fields).split(",").map(d=>d.trim()).filter(Boolean):["*"];i.push({relationName:s,type:u.type,targetTable:u.targetTableName||u.targetTable,fields:c,isInverse:u.isInverse,fkColumn:u.foreignKeyColumn,mappedBy:u.mappedBy,junctionTableName:u.junctionTableName,junctionSourceColumn:u.junctionSourceColumn,junctionTargetColumn:u.junctionTargetColumn,userFilter:a.filter,userSort:a.sort,userLimit:a.limit!==void 0?Number(a.limit):void 0,userPage:a.page!==void 0?Number(a.page):void 0,nestedDeep:a.deep})}return i}withDefaultToManyLimit(e){return e.userLimit===void 0&&(e.type==="one-to-many"||e.type==="many-to-many")?{...e,userLimit:Hn}:e}fieldsForNestedResolution(e,t){if(!t||Object.keys(t).length===0)return e;let n=new Set(e.filter(o=>o!=="*").map(o=>o.split(".")[0])),i=[...e];for(let o of Object.keys(t))n.has(o)||i.push(o);return i}uniqueValues(e){let t=new Set,n=[];for(let i of e){if(i==null)continue;let o=this.adapter.keyOf(i);t.has(o)||(t.add(o),n.push(i))}return n}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 I(`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 I(`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 w of e){let C=w[o];if(C==null)continue;let T=this.adapter.keyOf(C);s.has(T)||(s.add(T),a.push(C))}if(a.length===0){for(let w of e)w[t.relationName]=null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[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:c,nestedDescs:d,fetchSpec:l}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),u),f=this.adapter.getTargetPkField(u);if(c){for(let w of e){let C=w[o];w[t.relationName]=C!=null?this.adapter.buildScalarRef(C,f):null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[t.fkColumn]}return}let p=performance.now(),y=await this.adapter.fetchOwner(t.targetTable,a,l,t),g=Array.isArray(y)?y:y.docs,h=Array.isArray(y)?void 0:y.stats;this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,p,{relationType:t.type,targetTable:t.targetTable,strategy:h?.strategy??"batch-in",roundtrips:h?.roundtrips??(Math.ceil(a.length/oe)||1),concurrencyWaves:h?.concurrencyWaves,ioConcurrency:h?.ioConcurrency,rowsTransferred:h?.rowsTransferred??g.length,rowsReturned:g.length,rowsDiscarded:0,userFilter:!!t.userFilter,userSort:!!t.userSort});let m=this.enrichNestedDescs(d,t.nestedDeep,u);m.length>0&&await this.execute(g,m,n,i+1,t.targetTable);let b=new Map;for(let w of g)b.set(this.adapter.keyOf(w[f]),w);for(let w of e){let C=w[o];w[t.relationName]=C!=null&&b.get(this.adapter.keyOf(C))||null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[t.fkColumn]}}async fetchInverseRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=this.uniqueValues(e.map(v=>v[s]));if(a.length===0)return;let u=this.adapter.resolveInverseFkField(t),c=await this.metadataGetter(t.targetTable);if(!c)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,c);let{nestedDescs:d,fetchSpec:l}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),c),f=performance.now(),{docs:p,groupKeyField:y,stats:g}=await this.adapter.fetchInverse(t.targetTable,u,a,l,t),h=new Map,m=t.fields.includes(u)||t.fields.includes("*");for(let v of p){let j=v[y],S=this.adapter.keyOf(j);h.has(S)||h.set(S,[]),h.get(S).push(v)}let b=t.userLimit!==void 0&&t.userLimit>0,w=b?"per-parent-c16":"batch-in",C=b?a.length:Math.ceil(a.length/oe)||1,T=b?Math.ceil(a.length/Me):void 0,k=Array.from(h.values()).reduce((v,j)=>v+j.length,0);if(this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,f,{relationType:t.type,targetTable:t.targetTable,strategy:g?.strategy??w,roundtrips:g?.roundtrips??C,concurrencyWaves:g?.concurrencyWaves??T,ioConcurrency:g?.ioConcurrency,rowsTransferred:g?.rowsTransferred??p.length,rowsReturned:k,rowsDiscarded:Math.max(0,(g?.rowsTransferred??p.length)-k),userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort}),this.adapter.postProcessInverseChild)for(let v of p)this.adapter.postProcessInverseChild(v,u,m);let x=this.enrichNestedDescs(d,t.nestedDeep,c);x.length>0&&await this.execute(p,x,n,i+1,t.targetTable);let _=t.type==="one-to-one";for(let v of e){let j=this.adapter.keyOf(v[s]),S=h.get(j)||[];v[t.relationName]=_?S[0]||null:S}}async fetchM2MRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=this.uniqueValues(e.map(T=>T[s]));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:c,fetchSpec:d}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),u),l=performance.now(),{grouped:f,docs:p,stats:y}=await this.adapter.fetchM2M(e,t,o,u,d),g=t.userLimit!==void 0&&t.userLimit>0,h=g?"m2m-per-parent-c16":"m2m-batch",m=g?a.length:Math.ceil(a.length/oe)||1,b=g?Math.ceil(a.length/Me):void 0,w=Array.from(f.values()).reduce((T,k)=>T+k.length,0);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,l,{relationType:t.type,targetTable:t.targetTable,strategy:y?.strategy??h,roundtrips:y?.roundtrips??m,concurrencyWaves:y?.concurrencyWaves??b,ioConcurrency:y?.ioConcurrency,rowsTransferred:y?.rowsTransferred??p.length,rowsReturned:w,rowsDiscarded:y?.rowsDiscarded??Math.max(0,(y?.rowsTransferred??p.length)-w),userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort});let C=this.enrichNestedDescs(c,t.nestedDeep,u);C.length>0&&p.length>0&&await this.execute(p,C,n,i+1,t.targetTable);for(let T of e){let k=this.adapter.keyOf(T[s]);T[t.relationName]=f.get(k)||[]}}}});var Jr,Se,hn=U(()=>{"use strict";Jr=2,Se=class{constructor(e=2){this.concurrency=e;this.active=0;this.waiters=[];if(!Number.isInteger(e)||e<1)throw new Error("Batch execution concurrency must be a positive integer")}async run(e){await this.acquire();try{return await e()}catch(t){throw this.cancel(t),t}finally{this.release()}}async acquire(){if(this.failure!==void 0)throw this.failure;if(this.active<this.concurrency){this.active+=1;return}if(await new Promise(e=>this.waiters.push(e)),this.failure!==void 0)throw this.failure;this.active+=1}release(){this.active-=1,this.failure===void 0&&this.waiters.shift()?.()}cancel(e){if(this.failure===void 0){this.failure=e;for(let t of this.waiters.splice(0))t()}}}});function F(r,e){let t=e==="mysql"?r.replace(/`/g,"``"):r.replace(/"/g,'""');switch(e){case"mysql":return`\`${t}\``;case"postgres":case"pg":case"sqlite":return`"${t}"`;case"mongodb":return r;default:return`\`${t}\``}}function ke(r,e){return r.split(".").map(t=>t==="*"||t.startsWith('"')&&t.endsWith('"')||t.startsWith("`")&&t.endsWith("`")?t:F(t,e)).join(".")}var ae=U(()=>{"use strict"});function ce(r,e,t){e&&Sn(r,e,t,"and")}function Sn(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(){Sn(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(){Sn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"not":{let i=function(){this.whereNot(function(){Sn(this,e.child,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"compare":Do(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 Do(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=Wo(e.field,t),o=ke(i,t.dbType),s=!!e.field.isUuid,a=t.dbType==="postgres",u=n==="or"?"orWhere":"where",c=n==="or"?"orWhereRaw":"whereRaw",d=n==="or"?"orWhereIn":"whereIn",l=n==="or"?"orWhereNotIn":"whereNotIn",f=n==="or"?"orWhereBetween":"whereBetween",p=n==="or"?"orWhereNull":"whereNull",y=n==="or"?"orWhereNotNull":"whereNotNull";switch(e.op){case"eq":s&&a&&typeof e.value=="string"?r[c](`${o} = ?::uuid`,[e.value]):r[u](i,"=",e.value);return;case"neq":s&&a&&typeof e.value=="string"?r[c](`${o} != ?::uuid`,[e.value]):r[u](i,"!=",e.value);return;case"gt":s&&a&&typeof e.value=="string"?r[c](`${o} > ?::uuid`,[e.value]):r[u](i,">",e.value);return;case"gte":s&&a&&typeof e.value=="string"?r[c](`${o} >= ?::uuid`,[e.value]):r[u](i,">=",e.value);return;case"lt":s&&a&&typeof e.value=="string"?r[c](`${o} < ?::uuid`,[e.value]):r[u](i,"<",e.value);return;case"lte":s&&a&&typeof e.value=="string"?r[c](`${o} <= ?::uuid`,[e.value]):r[u](i,"<=",e.value);return;case"in":{let g=ri(e.value);s&&a&&g.every(h=>typeof h=="string")?r[c](`${o} = ANY(?::uuid[])`,[g]):r[d](i,g);return}case"not_in":{let g=ri(e.value);s&&a&&g.every(h=>typeof h=="string")?r[c](`${o} != ALL(?::uuid[])`,[g]):r[l](i,g);return}case"contains":sr(r,o,e.value,"contains",t,n);return;case"starts_with":sr(r,o,e.value,"starts_with",t,n);return;case"ends_with":sr(r,o,e.value,"ends_with",t,n);return;case"between":Array.isArray(e.value)&&e.value.length===2&&r[f](i,[e.value[0],e.value[1]]);return;case"is_null":e.value===!0?r[p](i):r[y](i);return}}function sr(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 Wo(r,e){return r.fieldName.includes(".")?r.fieldName:`${e.rootTable}.${r.fieldName}`}function ri(r){return Array.isArray(r)?r:typeof r=="string"&&r.includes(",")?r.split(",").map(e=>e.trim()):[r]}var ar=U(()=>{"use strict";ae()});function G(r){return r.columns.find(e=>e.isPrimary)||null}var qt=U(()=>{"use strict"});var ii={};In(ii,{expandFieldsToJoinsAndSelect:()=>lr});async function lr(r,e,t,n,i,o){let s=[],a=[],u=await t(r);if(!u)return{select:[],batchFetchDescriptors:[]};let c=new Map;for(let l of e)if(l==="*"||!l.includes("."))c.has("")||c.set("",[]),c.get("").push(l);else{let f=l.split("."),p=f[0],y=f.slice(1).join(".");c.has(p)||c.set(p,[]),c.get(p).push(y)}if(o&&typeof o=="object")for(let[l,f]of Object.entries(o)){if(c.has(l))continue;let p=f&&typeof f=="object"&&f.fields!=null?Array.isArray(f.fields)?f.fields:String(f.fields).split(",").map(y=>y.trim()).filter(Boolean):["*"];c.set(l,p)}let d=c.get("")||[];for(let l of d){if(l==="*"){let y=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||z(h.propertyName);m&&y.add(m)}let g=new Set;for(let h of u.columns)y.has(h.name)||(s.push(`${r}.${h.name}`),g.add(h.name));for(let h of u.relations||[])!c.has(h.propertyName)&&!g.has(h.propertyName)&&c.set(h.propertyName,["id"]);continue}if(l.includes(".")){s.push(`${r}.${l}`);continue}if(u.columns?.find(y=>y.name===l)){s.push(`${r}.${l}`);continue}if(u.relations?.find(y=>y.propertyName===l)){c.has(l)||c.set(l,["id"]);continue}}return c.forEach((l,f)=>{if(f==="")return;let p=u.relations?.find(b=>b.propertyName===f);if(!p)return;if(p.type==="many-to-one"||p.type==="one-to-one"&&!p.isInverse){let b=p.foreignKeyColumn||z(p.propertyName),w=F(r,n),C=F(b,n),T=F(f,n);s.push(`${w}.${C} as ${T}`)}let g=p.targetTableName||p.targetTable,h=o?.[f],m=h?.fields!=null?Array.isArray(h.fields)?h.fields:String(h.fields).split(",").map(b=>b.trim()).filter(Boolean):l;a.push({relationName:f,type:p.type,targetTable:g,fields:m,isInverse:p.isInverse,fkColumn:p.foreignKeyColumn,mappedBy:p.mappedBy,junctionTableName:p.junctionTableName,junctionSourceColumn:p.junctionSourceColumn,junctionTargetColumn:p.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 cr=U(()=>{"use strict";Ke();ae()});var Ut,Qt,Cn,ot,Ko,st,dr=U(()=>{"use strict";Ke();ae();qt();Ge();hn();ar();Mt();Et();Ut="__enfyra_row_number__",Qt="__sourceId__",Cn="__targetId__",ot="__enfyra_partitioned__",Ko=5e4,st=class{constructor(e,t="postgres",n,i=new Se){this.knex=e;this.dbType=t;this.metadata=n;this.executionBudget=i;this.pkField="id"}chunkCount(e,t=oe){return Math.ceil(e.length/t)||1}m2mTargetChunkSize(){return this.dbType==="postgres"?Ko:oe}uniqueValues(e){return Array.from(new Map(e.filter(t=>t!=null).map(t=>[this.keyOf(t),t])).values())}runQuery(e){return this.executionBudget.run(()=>e)}buildPartitionRowNumber(e,t,n){let i=[...t];i.some(s=>s.column===n)||i.push({column:n,order:"asc"});let o=i.map(s=>`?? ${s.order.toUpperCase()}`).join(", ");return this.knex.raw(`ROW_NUMBER() OVER (PARTITION BY ?? ORDER BY ${o}) as ??`,[e,...i.map(s=>s.column),Ut])}buildPartitionSlice(e,t,n,i){return this.knex.from(e.as(ot)).select(`${ot}.*`).where(`${ot}.${Ut}`,">",n).andWhere(`${ot}.${Ut}`,"<=",n+i).orderBy(`${ot}.${t}`,"asc").orderBy(`${ot}.${Ut}`,"asc")}removePartitionFields(e){for(let t of e)delete t[Ut]}buildFilterTree(e,t){if(!e||!this.metadata)return null;let n=new ie,i=this.metadata?.tables?this.metadata:{tables:new Map(Object.entries(this.metadata))},{node:o}=de(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 c=u[u.length-1];return{column:`${`__sort_${u.slice(0,-1).join("_")}`}.${c}`,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 c=(a.startsWith("-")?a.slice(1):a).split(".");if(c.length<=1)continue;let d=n,l=i||n;for(let f=0;f<c.length-1;f++){let p=c[f],y=this.metadata?.tables?.get(d);if(!y)break;let g=y.relations?.find(b=>b.propertyName===p);if(!g)break;let h=g.targetTableName||g.targetTable,m=`__sort_${c.slice(0,f+1).join("_")}`;if(!s.has(m)){s.add(m);let b=g.foreignKeyColumn||z(g.propertyName),w=this.metadata?.tables?.get(h),C=w&&G(w)?.name||"id";e.leftJoin(`${h} as ${m}`,`${m}.${C}`,`${l}.${b}`)}d=h,l=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 G(e)?.name||"id"}resolveOwnerFkKey(e){return e.relationName}resolveInverseFkField(e){let t=e.fkColumn;return!t&&e.mappedBy&&(t=z(e.mappedBy)),t||(t=z(e.targetTable)),t}resolveParentPk(e){return e&&G(e)?.name||"id"}resolveFields(e,t){let{rootFields:n,subRelations:i}=He(e),o=[];if(n.includes("*")){let c=new Set;for(let d of t.relations||[])if(d.type==="many-to-one"||d.type==="one-to-one"&&!d.isInverse){let l=d.foreignKeyColumn||z(d.propertyName);l&&c.add(l)}for(let d of t.columns)c.has(d.name)||o.push(d.name);for(let d of t.relations||[])i.has(d.propertyName)||i.set(d.propertyName,["id"])}else for(let c of n){let d=t.columns.find(l=>l.name===c);d?o.push(d.name):t.relations?.find(f=>f.propertyName===c)&&!i.has(c)&&i.set(c,["id"])}let s=G(t)?.name||"id";o.includes(s)||o.push(s),i.forEach((c,d)=>{let l=t.relations?.find(f=>f.propertyName===d);if(l&&(l.type==="many-to-one"||l.type==="one-to-one"&&!l.isInverse)){let f=l.foreignKeyColumn||z(l.propertyName);f&&o.push(`${f} as ${d}`)}});let a=[];return i.forEach((c,d)=>{let l=t.relations?.find(p=>p.propertyName===d);if(!l)return;let f=l.targetTableName||l.targetTable;f&&a.push({relationName:d,type:l.type,targetTable:f,fields:c,isInverse:l.isInverse,fkColumn:l.foreignKeyColumn,mappedBy:l.mappedBy,junctionTableName:l.junctionTableName,junctionSourceColumn:l.junctionSourceColumn,junctionTargetColumn:l.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(c=>this.toKnexSelect(c)),u=await K(t,c=>{let d=this.knex(e).select(a).whereIn(n.pkCol,c);if(o&&ce(d,o,{dbType:this.dbType,rootTable:e}),s.length>0){this.applySortJoins(d,i.userSort,e);for(let l of s)d.orderBy(l.column,l.order)}return this.runQuery(d)});return{docs:u,stats:{strategy:"batch-in",roundtrips:this.chunkCount(t),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:u.length}}}async fetchInverse(e,t,n,i,o){let s=t,a=i.selectCols.find(y=>y.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,c=o?.userSort?this.parseSortTokens(o.userSort,e):[],d=o?.userLimit,l=o?.userPage;if(d!==void 0&&d>0){let y=l?(l-1)*d:0,g=i.selectCols.map(m=>this.toKnexSelect(m)),h=await K(n,async m=>{let b=this.knex(e).select(g).select(this.buildPartitionRowNumber(`${e}.${t}`,c,`${e}.${i.pkCol}`)).whereIn(`${e}.${t}`,m);u&&ce(b,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(b,o.userSort,e);let w=await this.runQuery(this.buildPartitionSlice(b,s,y,d));return this.removePartitionFields(w),w});return{docs:h,groupKeyField:s,stats:{strategy:"partitioned-top-k",roundtrips:this.chunkCount(n),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:h.length}}}let f=i.selectCols.map(y=>this.toKnexSelect(y)),p=await K(n,y=>{let g=this.knex(e).select(f).whereIn(t,y);if(u&&ce(g,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(g,o?.userSort,e),c.length>0)for(let h of c)g.orderBy(h.column,h.order);else g.orderBy(i.pkCol,"asc");return this.runQuery(g)});return{docs:p,groupKeyField:s,stats:{strategy:"batch-in",roundtrips:this.chunkCount(n),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length}}}postProcessInverseChild(e,t,n){n||delete e[t]}async selectM2MEdges(e,t,n,i,o,s,a,u){let c=`t.${s}`,d=!!a||u.some(g=>g.column!==c),l=d?u:u.map(g=>({...g,column:`${n}.${o}`})),f=t.userLimit,p=t.userPage;if(f!==void 0&&f>0){let g=p?(p-1)*f:0;return(await K(e,async m=>{let b=this.knex(n).select({[Qt]:`${n}.${i}`,[Cn]:`${n}.${o}`}).whereIn(`${n}.${i}`,m);d&&(b=b.join(`${t.targetTable} as t`,`${n}.${o}`,`t.${s}`),a&&ce(b,a,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(b,t.userSort,t.targetTable,"t")),b.select(this.buildPartitionRowNumber(`${n}.${i}`,l,d?c:`${n}.${o}`));let w=await this.runQuery(this.buildPartitionSlice(b,Qt,g,f));return this.removePartitionFields(w),w})).map(m=>({sourceId:m[Qt],targetId:m[Cn]}))}return(await K(e,g=>{let h=this.knex(n).select({[Qt]:`${n}.${i}`,[Cn]:`${n}.${o}`}).whereIn(`${n}.${i}`,g);if(d&&(h=h.join(`${t.targetTable} as t`,`${n}.${o}`,`t.${s}`),a&&ce(h,a,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(h,t.userSort,t.targetTable,"t")),h.orderBy(`${n}.${i}`,"asc"),l.length>0){for(let m of l)h.orderBy(m.column,m.order);d&&!l.some(m=>m.column===c)&&h.orderBy(c,"asc")}else h.orderBy(`${n}.${o}`,"asc");return this.runQuery(h)})).map(g=>({sourceId:g[Qt],targetId:g[Cn]}))}async loadM2MTargets(e,t,n){if(t.length===0)return[];let i=n.selectCols.map(o=>this.toKnexSelect(o));return K(t,o=>this.runQuery(this.knex(e).select(i).whereIn(n.pkCol,o)),this.m2mTargetChunkSize())}async fetchM2M(e,t,n,i,o){let s=this.resolveParentPk(n),a=this.uniqueValues(e.map(x=>x[s]));if(a.length===0)return{grouped:new Map,docs:[]};let u=t.junctionTableName,c=t.junctionSourceColumn,d=t.junctionTargetColumn;if(!u||!c||!d)throw new Error(`Missing junction table config for relation: ${t.relationName}`);let l=t.userFilter?this.buildFilterTree(t.userFilter,t.targetTable):null,f=t.userSort?this.parseSortTokens(t.userSort,t.targetTable,"t"):[],p=await this.selectM2MEdges(a,t,u,c,d,o.pkCol,l,f),y=new Map;for(let x of a)y.set(this.keyOf(x),[]);let g=o.selectCols.length===1&&o.selectCols[0]===o.pkCol,h=t.userLimit!==void 0&&t.userLimit>0,m=this.chunkCount(a),b=`t.${o.pkCol}`,w=!l&&f.every(x=>x.column===b);if(g){let x=new Map;for(let _ of p){let v=this.keyOf(_.targetId);x.has(v)||x.set(v,{[o.pkCol]:_.targetId}),y.get(this.keyOf(_.sourceId))?.push(x.get(v))}return{grouped:y,docs:[],stats:{strategy:w?h?"m2m-junction-partitioned-top-k":"m2m-junction-batch":h?"m2m-filtered-edge-top-k":"m2m-filtered-edge-batch",roundtrips:m,ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length,rowsDiscarded:0}}}let C=this.uniqueValues(p.map(x=>x.targetId)),T=await this.loadM2MTargets(t.targetTable,C,o),k=new Map(T.map(x=>[this.keyOf(x[o.pkCol]),x]));for(let x of p){let _=k.get(this.keyOf(x.targetId));_&&y.get(this.keyOf(x.sourceId))?.push(_)}return{grouped:y,docs:T,stats:{strategy:h?"m2m-partitioned-edge-loader":"m2m-edge-loader",roundtrips:m+(C.length>0?this.chunkCount(C,this.m2mTargetChunkSize()):0),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length+T.length,rowsDiscarded:0}}}}});var li={};In(li,{executeBatchFetches:()=>fr});async function fr(r,e,t,n,i=3,o=0,s,a="postgres",u,c){let d=new st(r,a,u);await new Te(d,n,c).execute(e,t,i,o,s)}var pr=U(()=>{"use strict";Ge();dr()});var Jo={};In(Jo,{ALL_SUPPORTED_OPERATORS:()=>Nt,AuthenticationException:()=>gt,AuthorizationException:()=>ht,BadRequestException:()=>I,BatchExecutionBudget:()=>Se,BatchFetchEngine:()=>Te,BusinessLogicException:()=>ut,CHUNKED_FETCH_CONCURRENCY:()=>Vn,ConfigurationException:()=>$t,DEEP_TO_MANY_DEFAULT_LIMIT:()=>Hn,DEFAULT_BATCH_FETCH_IO_CONCURRENCY:()=>Jr,DEFAULT_TIMEOUT_MS:()=>Vt,DOTTED_PATH_MAX_HOPS:()=>Fn,DatabaseException:()=>Le,DuplicateResourceException:()=>pt,ErrorHandler:()=>Fe,ExecutorEngineService:()=>Be,ExternalServiceException:()=>bt,FIELD_OPERATORS:()=>_e,FileNotFoundException:()=>St,FileSizeExceededException:()=>Ct,FileUploadException:()=>Tt,HttpException:()=>P,InvalidTokenException:()=>mt,IsolatedExecutorService:()=>We,JoinRegistry:()=>ie,LOGICAL_OPERATORS:()=>Dn,MongoBatchAdapter:()=>Xe,MongoQueryExecutor:()=>Ae,PER_PARENT_CONCURRENCY:()=>Me,QueryBuilderService:()=>at,QueryPlanner:()=>ee,ResourceNotFoundException:()=>ft,SchemaException:()=>wt,ScriptContractService:()=>Xt,ScriptExecutionException:()=>ye,ScriptTimeoutException:()=>he,ServiceUnavailableException:()=>_t,SqlBatchAdapter:()=>st,SqlQueryExecutor:()=>je,TokenExpiredException:()=>yt,ValidationException:()=>dt,WHERE_IN_CHUNK_SIZE:()=>oe,WorkerPool:()=>Rt,applyOperatorToMatch:()=>rn,applyRelationFilters:()=>Lt,applyWhereToKnex:()=>it,assertFieldOperatorValueIsClean:()=>an,buildMongoCharFoldMapJson:()=>Bn,buildMongoFoldTextSearchJs:()=>Zt,buildRelationSubquery:()=>Bt,buildSqlWherePartsFromFieldAst:()=>Wt,buildWhereClause:()=>le,camelToSnake:()=>Ir,chunkedFetch:()=>K,compileScriptSource:()=>Ji,computeEngineTuning:()=>Mn,createEnfyraKernel:()=>Qo,dslOpToCompareOp:()=>on,encodeMainThreadToIsolate:()=>An,escapeSqlValue:()=>Kt,executeBatchFetches:()=>fr,executeMongoBatchFetches:()=>mn,expandFieldsToJoinsAndSelect:()=>lr,getEffectiveCpuCount:()=>En,getEffectiveMemoryBytes:()=>kt,getEngineTuning:()=>Yt,getExecutableScript:()=>Gi,getForeignKeyColumnName:()=>z,getIoAbortSignal:()=>Sr,getJunctionColumnNames:()=>vt,getJunctionTableName:()=>Ft,getPrimaryKeyColumn:()=>G,getScriptLegacyField:()=>qi,getShortFkConstraintName:()=>Fr,getShortFkName:()=>Nr,getShortIndexName:()=>Er,getShortPkName:()=>xr,hasLogicalOperators:()=>ge,isExecutableJavaScript:()=>zi,isScriptTable:()=>Ui,normalizeAggregateQuery:()=>tt,normalizeFlowStepScriptConfig:()=>Xi,normalizeScriptLanguage:()=>Qi,normalizeScriptPatch:()=>Hi,normalizeScriptRecord:()=>Vi,parseBatchFields:()=>He,parseFields:()=>bn,parseFilter:()=>de,perParentRun:()=>yn,quoteIdentifier:()=>F,quoteQualifiedIdentifier:()=>ke,resolveExecutableScript:()=>Yi,rewriteFilterDenyingFields:()=>di,rewriteSortDroppingDenied:()=>fi,runWithIoAbortSignal:()=>Cr,scriptContractService:()=>te,separateFilters:()=>H,snakeToCamel:()=>vr,throwUnsupportedFieldOperator:()=>Ee,validateDeepOptions:()=>gr,validateFilterShape:()=>re,whereToMongoFilter:()=>Qe});module.exports=bi(Jo);var Vt=3e4,Be=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,n={}){let i=e.routeData.__codeBlocks||[];return i.length===0?{value:void 0,shortCircuit:!1}:this.isolatedExecutorService.runBatch(i,e.routeData.context,t??Vt,n)}async run(e,t,n=Vt,i={}){return this.isolatedExecutorService.run(e,t,n,i)}};var Ht=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 wr=require("async_hooks"),$r=xe(require("path")),Tr=require("stream");var yr=require("child_process"),_i=["PATH","HOME","NODE_ENV","TMPDIR","LANG"];function wi(){let r={};for(let e of _i){let t=process.env[e];t!==void 0&&(r[e]=t)}return r}var Gt=class{constructor(e){this.terminated=!1;this.stderrTail="";this.child=(0,yr.fork)(e,[],{stdio:["ignore","ignore","pipe","ipc"],env:wi(),serialization:"advanced"}),this.child.stderr?.on("data",t=>{this.stderrTail=(this.stderrTail+t.toString("utf8")).slice(-8192)})}get stderr(){return this.stderrTail}get pid(){return this.child.pid}on(e,t){return this.child.on(e,t),this}off(e,t){return this.child.off(e,t),this}postMessage(e){if(!this.child.connected)throw new Error("Executor runner IPC is closed");this.child.send(e)}terminate(){if(this.terminated)return;this.terminated=!0;try{this.child.disconnect()}catch{}try{this.child.kill("SIGTERM")}catch{}setTimeout(()=>{if(!(this.child.exitCode!==null||this.child.signalCode!==null))try{this.child.kill("SIGKILL")}catch{}},250).unref?.()}};var he=class extends Error{constructor(t=0,n,i){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,...i}}},ye=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}}},L=class extends Error{constructor(t,n,i,o){super(t);this.statusCode=n;this.errorCode=i;this.name=this.constructor.name,this.details=o}},P=class extends L{constructor(e,t,n){super(e,t,`HTTP_${t}`,n)}},ut=class extends L{constructor(e,t){super(e,400,"BUSINESS_LOGIC_ERROR",t)}},dt=class extends L{constructor(e,t){super(e,422,"VALIDATION_ERROR",t)}},ft=class extends L{constructor(e,t){super(t?`${e} with identifier '${t}' not found`:`${e} not found`,404,"RESOURCE_NOT_FOUND",{resource:e,identifier:t})}},pt=class extends L{constructor(e,t,n){super(`${e} with ${t} '${n}' already exists`,409,"DUPLICATE_RESOURCE",{resource:e,field:t,value:n})}},gt=class extends L{constructor(e="Authentication failed",t){super(e,401,"AUTHENTICATION_ERROR",t)}},ht=class extends L{constructor(e="Insufficient permissions",t){super(e,403,"AUTHORIZATION_ERROR",t)}},yt=class extends L{constructor(){super("Token has expired",401,"TOKEN_EXPIRED")}},mt=class extends L{constructor(){super("Invalid token provided",401,"INVALID_TOKEN")}},Le=class extends L{constructor(e,t){super(e,500,"DATABASE_ERROR",t)}},bt=class extends L{constructor(e,t,n){super(`External service '${e}' error: ${t}`,502,"EXTERNAL_SERVICE_ERROR",{service:e,details:n})}},_t=class extends L{constructor(e){super(`Service '${e}' is currently unavailable`,503,"SERVICE_UNAVAILABLE",{service:e})}},wt=class extends L{constructor(e,t){super(e,400,"SCHEMA_ERROR",t)}},$t=class extends L{constructor(e,t){super(e,500,"CONFIGURATION_ERROR",t)}},Tt=class extends L{constructor(e,t){super(e,400,"FILE_UPLOAD_ERROR",t)}},St=class extends L{constructor(e="File not found"){super(e,404,"FILE_NOT_FOUND")}},Ct=class extends L{constructor(e,t){super("File size exceeded",413,"FILE_SIZE_EXCEEDED",{maxSize:e,actualSize:t})}};var Fe=class{static createException(e,t,n,i,o){if(e?.includes("$throw"))switch(e){case"$throw.http":return new P(n||"Error",t||500,o);case"$throw.businessLogic":return new ut(n||"Bad request",o);case"$throw.validation":return new dt(n||"Validation failed",o);case"$throw.notFound":return new ft(o?.resource||n||"Resource",o?.identifier);case"$throw.duplicate":return new pt(o?.resource||n||"Resource",o?.field||"field",o?.value||"value");case"$throw.unauthorized":return new gt(n||"Unauthorized");case"$throw.forbidden":return new ht(n||"Forbidden");case"$throw.tokenExpired":return new yt;case"$throw.invalidToken":return new mt;case"$throw.database":return new Le(n||"Database error",o);case"$throw.dbQuery":return new Le(n||"Query error",o);case"$throw.externalService":return new bt(n||"Service",n||"Error",o);case"$throw.serviceUnavailable":return new _t(n||"Service");case"$throw.rateLimit":return new P(n||"Rate limit exceeded",429);case"$throw.scriptError":return new ye(n||"Script error",i,o);case"$throw.scriptTimeout":return new he(o?.timeout||5e3,i);case"$throw.schema":return new wt(n||"Schema error",o);case"$throw.config":return new $t(n||"Configuration error",o);case"$throw.fileUpload":return new Tt(n||"File upload error",o);case"$throw.fileNotFound":return new St(n||"File not found");case"$throw.fileSizeExceeded":return new Ct(o?.maxSize||"unknown",o?.actualSize||"unknown");case"$throw.400":return new P(n||"Bad request",400,o);case"$throw.401":return new P(n||"Authentication required",401,o);case"$throw.403":return new P(n||"Insufficient permissions",403,o);case"$throw.404":return new P(n||"Not found",404,o);case"$throw.409":return new P(n||"Conflict",409,o);case"$throw.422":return new P(n||"Validation failed",422,o);case"$throw.429":return new P(n||"Rate limit exceeded",429,o);case"$throw.500":return new P(n||"Internal server error",500,o);case"$throw.503":return new P(n||"Service unavailable",503,o);default:return new ye(n||"Unknown error",i)}if(t)switch(t){case 400:return new P(n||"Bad request",400,o);case 401:return new P(n||"Authentication required",401,o);case 403:return new P(n||"Insufficient permissions",403,o);case 404:return new P(n||"Not found",404,o);case 409:return new P(n||"Conflict",409,o);case 422:return new P(n||"Validation failed",422,o);case 429:return new P(n||"Rate limit exceeded",429,o);case 500:return new P(n||"Internal server error",500,o);case 503:return new P(n||"Service unavailable",503,o);default:return new ye(n||"Unknown error",i,o)}return new ye(n||"Unknown error",i,o)}};var me=xe(require("os")),De=xe(require("fs"));function kt(){try{let r=De.readFileSync("/sys/fs/cgroup/memory.max","utf8").trim();if(r!=="max"){let e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<me.totalmem())return e}}catch{}try{let r=De.readFileSync("/sys/fs/cgroup/memory/memory.limit_in_bytes","utf8").trim(),e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<me.totalmem())return e}catch{}return me.totalmem()}function En(){let r=me.availableParallelism?.()||me.cpus()?.length||1;try{let e=De.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(De.readFileSync("/sys/fs/cgroup/cpu/cpu.cfs_quota_us","utf8").trim(),10),t=parseInt(De.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 $i=.25,Nn=128,Ti=2,Si=4,Ci=6,ki=8,Ri=2048,xi=40,Fi=128,vi=32;function Ii(r){let e=Math.trunc(Number(r));if(!(!Number.isFinite(e)||e<1))return Math.min(Nn,e)}function Ni(r){let e=Math.trunc(Number(r));return!Number.isFinite(e)||e<1?Ci:Math.min(ki,e)}function mr(r){return 2**Math.ceil(Math.log2(Math.max(1,r)))}function Mn(r){let e=Math.max(1,Math.trunc(r.logicalCpuCount)||1),t=Math.max(1,r.totalMemoryBytes/(1024*1024)),n=Math.min(Fi,Math.max(xi,Math.round(t/vi))),i=t*$i,o=Math.max(1,Math.floor(i/n)),s=Math.max(1,Math.min(e,2,o)),a=Math.max(1,Math.floor(i/(s*n))),u=Math.min(Nn,mr(e*Ti)),c=Math.min(Nn,mr(e*Si)),d=Math.max(u,Math.min(c,a)),l=Ii(r.maxLanesPerRunner)??d,f=t<Ri?1:l,p=Math.max(1,Math.min(f,a)),y=Ni(r.tasksPerIsolate),g=p*y;return{maxConcurrentWorkers:s,isolateMemoryLimitMb:n,tasksPerWorkerCap:g,isolatePoolSize:p,tasksPerIsolate:y}}function Yt(){return Mn({logicalCpuCount:En(),totalMemoryBytes:kt()})}var Wi=$r.join(__dirname,"execution/worker.js"),Ki=1e3,On=new wr.AsyncLocalStorage;function Sr(){return On.getStore()}function Cr(r,e){return On.run(r,e)}var Rt=class{constructor(e,t,n,i,o,s,a,u=6e4){this.scriptPath=o;this.onCrash=s;this.onRotate=a;this.entries=[];this.waiting=[];this.cachedMemoryOk=!0;this.lastMemoryCheckMs=0;this.memorySampleIntervalMs=200;this.destroying=!1;this.entryCounter=0;this.max=e,this.effectiveMemory=t,this.rssCeiling=n,this.tasksCap=i,this.drainTimeoutMs=u;for(let c=0;c<e;c++)this.spawnEntry()}getEntries(){return this.entries}spawnEntry(){let e=new Gt(this.scriptPath),t={id:++this.entryCounter,worker:e,tasks:new Map,reservations:0,draining:!1,spawnedAt:Date.now()};return e.on("message",n=>{let i=t.tasks.get(n.id);i&&(n.type==="taskReleased"?i.onRelease?.():n.type==="result"||n.type==="taskCancelled"?(typeof n.heapRatio=="number"&&(t.lastHeapRatio=n.heapRatio),typeof n.runnerRssBytes=="number"&&(t.lastRssBytes=n.runnerRssBytes),n.contextStats&&(t.contextStats=n.contextStats),i.onResult(n.type==="taskCancelled"?{type:"result",id:n.id,success:!1,taskCancelled:!0,error:{message:"Task cancelled",code:"ERR_TASK_CANCELLED"}}:n),!t.draining&&typeof n.heapRatio=="number"&&n.heapRatio>=.8&&this.rotateEntry(t,`heap=${Math.round(n.heapRatio*100)}%`)):i.onIoCall(n))}),e.on("exit",(n,i)=>{let o=t.draining,s=this.destroying,a={entryId:t.id,pid:t.worker.pid,exitCode:n,exitSignal:i??null,lastError:t.lastError||t.worker.stderr||void 0,terminationReason:t.terminationReason,lastHeapRatio:t.lastHeapRatio,lastRssBytes:t.lastRssBytes,activeTasks:[...t.tasks.values()].map(c=>c.diagnostics)};t.drainTimeout&&(clearTimeout(t.drainTimeout),t.drainTimeout=void 0);for(let[,c]of t.tasks)c.abortController.abort(),c.onResult({type:"result",success:!1,error:{message:s?"Worker terminated":t.lastError?`Worker crashed: ${t.lastError}`:"Worker crashed",code:s?void 0:"ERR_EXECUTOR_RUNNER_LOST",details:s?void 0:{outcome:"unknown_outcome",retryable:!1}}});t.tasks.clear();let u=this.entries.indexOf(t);u!==-1&&this.entries.splice(u,1),!o&&!s&&(this.onCrash?.(a),this.entries.length<this.max&&this.spawnEntry()),this.drainWaiting()}),e.on("error",n=>{t.lastError=n.message}),this.entries.push(t),t}rotateEntry(e,t){if(e.draining)return;e.draining=!0;let n=Date.now()-e.spawnedAt;if(this.onRotate&&this.onRotate({reason:t,ageMs:n}),this.spawnEntry(),e.tasks.size===0){e.worker.terminate();return}e.drainTimeout=setTimeout(()=>{e.drainTimeout=void 0,e.worker.terminate()},this.drainTimeoutMs)}isMemoryAvailable(){let e=Date.now();return e-this.lastMemoryCheckMs>=this.memorySampleIntervalMs&&(this.cachedMemoryOk=process.memoryUsage().rss/this.effectiveMemory<this.rssCeiling,this.lastMemoryCheckMs=e),this.cachedMemoryOk}findLeastBusy(){let e=null;for(let t of this.entries){if(t.draining)continue;let n=t.tasks.size+t.reservations;n<this.tasksCap&&(!e||n<e.tasks.size+e.reservations)&&(e=t)}return e}dispatch(){let e=this.findLeastBusy();return e&&(e.tasks.size+e.reservations===0||this.isMemoryAvailable())?(e.reservations++,Promise.resolve(e)):new Promise(t=>this.waiting.push(t))}registerTask(e,t,n){e.reservations=Math.max(0,e.reservations-1),e.tasks.set(t,n)}releaseReservation(e){e.reservations=Math.max(0,e.reservations-1),this.drainWaiting()}unregisterTask(e,t){e.tasks.delete(t),e.draining&&e.tasks.size===0&&(e.drainTimeout&&(clearTimeout(e.drainTimeout),e.drainTimeout=void 0),e.worker.terminate()),this.drainWaiting()}drainWaiting(){for(;this.waiting.length>0;){let e=this.findLeastBusy();if(e&&(e.tasks.size+e.reservations===0||this.isMemoryAvailable()))e.reservations++,this.waiting.shift()(e);else break}}terminateEntry(e,t="host_requested"){e.terminationReason=t,e.worker.terminate()}resize(e){for(this.max=Math.max(1,e);this.entries.length<this.max;)this.spawnEntry()}getMax(){return this.max}getWaitingCount(){return this.waiting.length}getTotalActiveTasks(){let e=0;for(let t of this.entries)e+=t.tasks.size;return e}getMetrics(){return{max:this.max,activeTasks:this.getTotalActiveTasks(),waitingTasks:this.waiting.length,workers:this.entries.map(e=>({id:e.id,pid:e.worker.pid,activeTasks:e.tasks.size,reservations:e.reservations,draining:e.draining,ageMs:Date.now()-e.spawnedAt,lastHeapRatio:e.lastHeapRatio??0,lastRssBytes:e.lastRssBytes??0,contextStats:e.contextStats??{}}))}}destroyAll(){this.destroying=!0;for(let e of this.entries)e.worker.terminate();this.entries.length=0,this.waiting.length=0}},_r=new Set(["$helpers","$cache","$transaction","$repos","$req","$res","$socket","$storage","$logs","$throw","$trigger","$pkgs","$debug"]);function An(r){if(r===void 0)return JSON.stringify({__e:"u"});try{return JSON.stringify({__e:"v",d:r},(e,t)=>typeof t=="bigint"?t.toString():t)}catch{return JSON.stringify({__e:"v",d:{__serializationError:!0,message:"Result is not JSON-serializable"}})}}var We=class r{constructor(e){this.logger=new Ht(r.name);this.effectiveMemory=kt();this.prevCpuUsage=process.cpuUsage();this.prevCpuTime=process.hrtime.bigint();this.pressureTicks=0;this.recoveryTicks=0;this.taskCounter=0;this.taskDoneTotal=0;this.taskErrorTotal=0;this.taskTimeoutTotal=0;this.rotationsTotal=0;this.crashesTotal=0;this.responseStreams=new Map;this.taskCancellers=new Map;this.taskDurationsMs=[];this.queueWaitDurationsMs=[];this.runtimeCallbackCounter=0;this.packageCacheService=e.packageCacheService,this.onExecutionFinished=e.onExecutionFinished,this.packageCdnLoaderService=e.packageCdnLoaderService,this.isolationTuning=e.tuning??Yt(),this.ceiling=this.isolationTuning.maxConcurrentWorkers,this.pool=new Rt(this.isolationTuning.maxConcurrentWorkers,this.effectiveMemory,.9,this.isolationTuning.tasksPerWorkerCap,Wi,t=>{this.crashesTotal++;let n={event:"executor_worker_crashed",occurredAt:new Date().toISOString(),...t};this.logger.warn(n);try{e.onExecutorWorkerCrash?.(n)}catch(i){this.logger.warn({event:"executor_worker_crash_report_failed",error:i instanceof Error?i.message:String(i)})}},({reason:t,ageMs:n})=>{this.rotationsTotal++,this.logger.log(`Worker rotation: reason=${t} age=${Math.round(n/1e3)}s`)}),this.logger.log(`Worker pool started: ${this.isolationTuning.maxConcurrentWorkers} workers, ${this.isolationTuning.isolateMemoryLimitMb}MB per isolate, ${this.isolationTuning.isolatePoolSize} isolates/worker, ${this.isolationTuning.tasksPerIsolate} tasks/isolate, ${this.isolationTuning.tasksPerWorkerCap} tasks/worker cap`),this.tuneTimer=setInterval(()=>this.autoTune(),3e4)}onDestroy(){this.tuneTimer&&clearInterval(this.tuneTimer),this.pool.destroyAll()}autoTune(){let t=process.memoryUsage().rss/this.effectiveMemory,n=process.hrtime.bigint(),i=process.cpuUsage(this.prevCpuUsage),o=Number(n-this.prevCpuTime)/1e3,s=o>0?(i.user+i.system)/o:0;this.prevCpuUsage=process.cpuUsage(),this.prevCpuTime=n;let a=this.pool.getMax(),u=this.pool.getWaitingCount(),c=t>.85||s>.7,d=t<.7&&s<.5,l=u>0,f=a;c?(this.recoveryTicks=0,this.pressureTicks++,this.pressureTicks>=3&&(f=Math.max(1,a-1))):d&&l?(this.pressureTicks=0,this.recoveryTicks++,this.recoveryTicks>=3&&(f=Math.min(this.ceiling,a+2))):(this.pressureTicks=0,this.recoveryTicks=0),f!==a&&(this.pool.resize(f),this.pressureTicks=0,this.recoveryTicks=0,this.logger.log(`Worker pool adjusted: ${a} -> ${f} (rss=${Math.round(t*100)}% cpu=${Math.round(s*100)}% queue=${u})`))}createSnapshot(e){let t={$body:e.$body,$query:e.$query,$params:e.$params,$user:e.$user,$share:e.$share,$data:e.$data,$api:{request:e.$api?.request},$uploadedFile:e.$uploadedFile,$req:this.cloneSnapshotValue(e.$req)};for(let i of Object.keys(e)){if(!i.startsWith("$")||i in t||_r.has(i))continue;let o=this.cloneSnapshotValue(e[i]);o!==void 0&&(t[i]=o)}let n=e.$flow;if(n!=null)try{t.$flow=this.cloneSnapshotValue(n)??{}}catch{t.$flow={}}return t}cloneSnapshotValue(e){if(typeof e!="function")try{return JSON.parse(JSON.stringify(e,(t,n)=>{if(typeof n=="bigint")return String(n);if(typeof n!="function")return n}))}catch{return}}mergeCtxChanges(e,t){if(t){t.$body!==void 0&&(e.$body=t.$body),t.$query!==void 0&&(e.$query=t.$query),t.$params!==void 0&&(e.$params=t.$params),t.$data!==void 0&&(e.$data=t.$data),t.$error!==void 0&&(e.$error=t.$error),t.$statusCode!==void 0&&(e.$statusCode=t.$statusCode),t.$share!==void 0&&(e.$share=t.$share),t.$api!==void 0&&e.$api&&(t.$api.error&&(e.$api.error=t.$api.error),t.$api.response&&(e.$api.response=t.$api.response)),t.$flow!==void 0&&t.$flow!==null&&typeof t.$flow=="object"&&e.$flow!=null&&typeof e.$flow=="object"&&Object.assign(e.$flow,t.$flow);for(let[n,i]of Object.entries(t))n.startsWith("$")&&(n==="$body"||n==="$query"||n==="$params"||n==="$data"||n==="$error"||n==="$statusCode"||n==="$share"||n==="$api"||n==="$flow"||_r.has(n)||n==="$env"||(e[n]=i));delete e.$pkgs}}spawnAndExecute(e,t,n,i,o){return(async()=>{let s=Date.now(),a=await this.pool.dispatch();if(this.recordQueueWait(Date.now()-s),o?.aborted){this.pool.releaseReservation(a);let d=new Error("Execution aborted after client disconnect");return d.code="ERR_EXECUTION_ABORTED",d.isAbort=!0,Promise.reject(d)}let u=`t_${++this.taskCounter}`,c=Date.now();return new Promise((d,l)=>{let f=!1,p=new AbortController,y=!1,g,h=()=>{let _=new Error("Execution aborted after client disconnect");return _.code="ERR_EXECUTION_ABORTED",_.isAbort=!0,_},m=()=>{let _=new Error(`Script execution timed out after ${i}ms`);return _.code="ERR_SCRIPT_EXECUTION_TIMEOUT",_.isTimeout=!0,_},b,w=_=>{if(!(f||y)){y=!0,g=_,p.abort(),this.cleanupResponseStream(u,_);try{a.worker.postMessage({type:"cancelTask",id:u})}catch{}b=setTimeout(()=>{f||(f=!0,clearTimeout(x),k(),this.taskCancellers.delete(u),this.pool.unregisterTask(a,u),this.taskErrorTotal++,this.pool.terminateEntry(a,_.isTimeout?"timeout_cancel_grace":"client_abort_cancel_grace"),_.details={..._.details??{},outcome:"unknown_outcome",retryable:!1,escalation:"runner_terminated_after_cancel_grace"},l(_))},Ki),b.unref?.()}},C=()=>w(h());this.taskCancellers.set(u,C);let T=()=>C(),k=()=>{o?.removeEventListener("abort",T)};o&&o.addEventListener("abort",T,{once:!0});let x=setTimeout(()=>{f||(this.taskTimeoutTotal++,w(m()))},i);this.pool.registerTask(a,u,{abortController:p,diagnostics:this.createWorkerTaskDiagnostics(e,t,n,i),onResult:_=>{if(!f){try{this.onExecutionFinished?.({diagnostics:this.createWorkerTaskDiagnostics(e,t,n,i),logs:Array.isArray(_.diagnosticLogs?.logs)?_.diagnosticLogs.logs:Array.isArray(_.ctxChanges?.$share?.$logs)?_.ctxChanges.$share.$logs:[],logsTruncated:_.diagnosticLogs?.truncated===!0||_.ctxChanges?.$share?.$logsTruncated===!0,statusCode:_.error?.statusCode??_.ctxChanges?.$statusCode,error:_.success||y?void 0:_.error})}catch(v){this.logger.error("Executor diagnostic callback failed",v)}if(_.taskCancelled===!0&&this.pool.unregisterTask(a,u),f=!0,clearTimeout(x),b&&clearTimeout(b),this.taskCancellers.delete(u),k(),this.cleanupResponseStream(u),this.recordTaskDuration(Date.now()-c),y){p.abort(),this.taskErrorTotal++,l(g??h());return}if(_.success){this.taskDoneTotal++;let v={value:_.value,valueAbsent:_.valueAbsent===!0,ctxChanges:_.ctxChanges};_.shortCircuit&&(v.shortCircuit=!0),d(v)}else{this.taskErrorTotal++;let v=new Error(_.error?.message||"Handler execution failed");v.statusCode=_.error?.statusCode,v.code=_.error?.code,v.errorCode=_.error?.code,v.details=_.error?.details,_.error?.stack&&(v.stack=_.error.stack),_.ctxChanges&&(v.ctxChanges=_.ctxChanges),this.cleanupResponseStream(u,v),l(v)}}},onRelease:()=>{this.pool.unregisterTask(a,u)},onIoCall:_=>{if(f)return;if(_.type==="executionError"){try{this.onExecutionFinished?.({diagnostics:{...this.createWorkerTaskDiagnostics(e,t,n,i),scriptBlocks:[{type:_.sourceKind,scriptId:_.scriptId==null?void 0:String(_.scriptId)}]},logs:[],logsTruncated:!1,error:_.error})}catch(j){this.logger.error("Executor diagnostic callback failed",j)}return}let v=p.signal;_.type==="repoCall"?this.handleIoCall(()=>this.execRepoCall(_,n),a.worker,_.callId,v):_.type==="transactionCall"?this.handleIoCall(()=>this.execTransactionCall(_,n,a.worker),a.worker,_.callId,v):_.type==="helpersCall"?this.handleIoCall(()=>this.execHelpersCall(_,n),a.worker,_.callId,v):_.type==="socketCall"?this.handleIoCall(()=>this.execSocketCall(_,n),a.worker,_.callId,v):_.type==="cacheCall"?this.handleIoCall(()=>this.execCacheCall(_,n),a.worker,_.callId,v):_.type==="storageCall"?this.handleIoCall(()=>this.execStorageCall(_,n,a.worker),a.worker,_.callId,v):_.type==="dispatchCall"?this.handleIoCall(()=>this.execDispatchCall(_,n),a.worker,_.callId,v):_.type==="resCall"&&this.handleIoCall(()=>this.execResCall(_,n),a.worker,_.callId,v)}}),a.worker.postMessage({type:e,id:u,...t}),o?.aborted&&C()})})()}postAbortedCallError(e,t){try{e.postMessage({type:"callError",callId:t,error:JSON.stringify({__userThrow:!0,message:"Execution aborted after client disconnect",code:"ERR_EXECUTION_ABORTED"})})}catch{}}async handleIoCall(e,t,n,i){if(i?.aborted){this.postAbortedCallError(t,n);return}try{let o=await(i?On.run(i,e):e());if(i?.aborted){this.postAbortedCallError(t,n);return}try{t.postMessage({type:"callResult",callId:n,result:An(o)})}catch{}}catch(o){if(i?.aborted){this.postAbortedCallError(t,n);return}try{let s={__userThrow:!0,message:o.message,statusCode:o.statusCode,code:o.errorCode??o.code,errorPath:o.errorPath,details:o.details,messages:o.messages};t.postMessage({type:"callError",callId:n,error:JSON.stringify(s)})}catch{}}}async execRepoCall(e,t){let n=JSON.parse(e.argsJson),i=e.access==="secure"?t?.$repos?.secure?.[e.table]:t?.$repos?.[e.table];if(!i||typeof i[e.method]!="function"){let o=e.access==="secure"?"secure.":"";throw new Error(`Repo method not found: ${o}${e.table}.${e.method}`)}return i[e.method](...n)}async execTransactionCall(e,t,n){let o=JSON.parse(e.argsJson||"[]").map(a=>a?.__fnRef&&typeof a.__fnRef=="string"?(...u)=>this.invokeRuntimeCallback(n,e.id,a.__fnRef,u):a)[0];if(typeof o!="function")throw new Error("$transaction.run requires a callback");let s=t?.$transaction?.run;if(typeof s!="function")throw new Error("$transaction is not available");return await s.call(t.$transaction,o)}async execHelpersCall(e,t){let n=JSON.parse(e.argsJson),i=e.name.split("."),o=t?.$helpers;for(let s of i)o=o?.[s];if(typeof o!="function")throw new Error(`Helper not found: ${e.name}`);return o(...n)}async execSocketCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$socket?.[e.method];if(typeof i!="function")throw new Error(`Socket method not found: ${e.method}`);return i(...n)}async execCacheCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$cache?.[e.method];if(typeof i!="function")throw new Error(`Cache method not found: ${e.method}`);return i(...n)}async execStorageCall(e,t,n){let i=this.parseStorageArgs(e.argsJson,n,e.id),o=t?.$storage?.[e.method];if(typeof o!="function")throw new Error(`Storage method not found: ${e.method}`);return o(...i)}parseStorageArgs(e,t,n){return JSON.parse(e,(i,o)=>{if(o?.__fnRef&&typeof o.__fnRef=="string"){let s=o.__fnRef;return(...a)=>this.invokeRuntimeCallback(t,n,s,a)}return o})}invokeRuntimeCallback(e,t,n,i){let o=`rtcb_${++this.runtimeCallbackCounter}`;return new Promise((s,a)=>{let u=setTimeout(()=>{d(),a(new Error(`Runtime callback timed out: ${n}`))},3e4),c=l=>{if(!(l?.type!=="runtimeCallbackResult"||l.callId!==o)){if(d(),l.error){let f=new Error(String(l.error));try{let p=JSON.parse(String(l.error));p?.__userThrow&&(f.message=String(p.message??f.message),f.statusCode=p.statusCode,f.code=p.code??(Number.isInteger(p.statusCode)?`HTTP_${p.statusCode}`:void 0),f.errorCode=f.code,f.errorPath=p.errorPath,f.details=p.details,f.messages=p.messages)}catch{}a(f);return}s(l.value)}},d=()=>{clearTimeout(u),e.off("message",c)};e.on("message",c),e.postMessage({type:"invokeRuntimeCallback",id:t,callId:o,callbackId:n,argsJson:JSON.stringify(i)})})}async execDispatchCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$trigger;if(typeof i!="function")throw new Error("$trigger is not available");return i(...n)}cancelTask(e){this.taskCancellers.get(e)?.()}async execResCall(e,t){if(e.method==="streamStart"){let s=JSON.parse(e.argsJson||"[]")[1]||{},a=t?.$res?.stream;if(typeof a!="function")throw new Error("Response method not found: stream");let u=new Tr.PassThrough,c={stream:u};this.responseStreams.set(e.id,c);let d=t?.$res;if(d&&typeof d.once=="function"){let f=()=>{d.writableEnded!==!0&&this.cancelTask(e.id)};d.once("close",f),c.closeCleanup=()=>{typeof d.off=="function"?d.off("close",f):typeof d.removeListener=="function"&&d.removeListener("close",f)}}let l=a.call(t.$res,u,s);return l&&typeof l.catch=="function"&&l.catch(()=>{}),!0}if(e.method==="streamChunk"){let o=this.responseStreams.get(e.id);if(!o)throw new Error(`Response stream not found: ${e.id}`);let s=Buffer.from(e.chunk||"","base64");return o.stream.write(s)||await new Promise((a,u)=>{let c=()=>{l(),a()},d=f=>{l(),u(f)},l=()=>{o.stream.off("drain",c),o.stream.off("error",d)};o.stream.once("drain",c),o.stream.once("error",d)}),!0}if(e.method==="streamEnd"){let o=this.responseStreams.get(e.id);return o&&(o.closeCleanup?.(),o.stream.end(),this.responseStreams.delete(e.id)),!0}if(e.method==="streamError"){let o=this.responseStreams.get(e.id);if(o){o.closeCleanup?.();let s=e.error?.message||"Response stream failed";o.stream.destroy(new Error(s)),this.responseStreams.delete(e.id)}return!0}let n=JSON.parse(e.argsJson||"[]"),i=t?.$res?.[e.method];if(typeof i!="function")throw new Error(`Response method not found: ${e.method}`);return i.apply(t.$res,n)}cleanupResponseStream(e,t){let n=this.responseStreams.get(e);n&&(this.responseStreams.delete(e),n.closeCleanup?.(),t?n.stream.destroy(t):n.stream.end())}toWorkerCodeBlock(e){return{code:e.code,sourceCode:e.sourceCode,scriptLanguage:e.scriptLanguage,scriptId:e.scriptId,type:e.type}}createWorkerTaskDiagnostics(e,t,n,i){let o=n?.$api?.request?.correlationId,s=Array.isArray(t.codeBlocks)?t.codeBlocks.map(a=>({type:a?.type==="preHook"||a?.type==="postHook"||a?.type==="handler"?a.type:"run",...a?.scriptId!==void 0&&a?.scriptId!==null?{scriptId:String(a.scriptId)}:{}})):[{type:typeof t.sourceKind=="string"?t.sourceKind:"run",...t.scriptId==null?{}:{scriptId:String(t.scriptId)}}];return{...typeof o=="string"&&o?{correlationId:o}:{},timeoutMs:i,isolateMemoryLimitMb:Number(t.memoryLimitMb||0),isolatePoolSize:Number(t.isolatePoolSize||0),tasksPerIsolate:Number(t.tasksPerIsolate||0),scriptBlocks:s}}async run(e,t,n,i={}){let o=Math.max(1,Math.trunc(Number(n)||3e4)),s=await this.packageCacheService.getPackages(),a=this.packageCdnLoaderService.getPackageSources(s),u=this.createSnapshot(t),c;try{let d={code:e,scriptId:i.scriptId,sourceKind:i.sourceKind,sourceCode:i.sourceCode??e,pkgSources:a,snapshot:u,timeoutMs:o,memoryLimitMb:this.isolationTuning.isolateMemoryLimitMb,isolatePoolSize:this.isolationTuning.isolatePoolSize,tasksPerIsolate:this.isolationTuning.tasksPerIsolate};c=await this.spawnAndExecute("execute",d,t,o)}catch(d){let l=d;if(l.code==="ERR_EXECUTION_ABORTED"||l.isAbort)throw l;if(l.isTimeout||l.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")throw new he(o,e,l.details);l.code&&l.details&&(l.details.executorCode=l.code);let f=l.statusCode??(typeof l.status=="number"?l.status:void 0);throw Fe.createException(l.errorPath,f,l.message||"Unknown error",e,l.details||{})}return this.mergeCtxChanges(t,c.ctxChanges||{}),c.valueAbsent?void 0:c.value}async runBatch(e,t,n,i={}){let o=Math.max(1,Math.trunc(Number(n)||3e4)),s=await this.packageCacheService.getPackages(),a=this.packageCdnLoaderService.getPackageSources(s),u=this.createSnapshot(t),c;try{let l={codeBlocks:e.map(f=>this.toWorkerCodeBlock(f)),pkgSources:a,snapshot:u,timeoutMs:o,memoryLimitMb:this.isolationTuning.isolateMemoryLimitMb,isolatePoolSize:this.isolationTuning.isolatePoolSize,tasksPerIsolate:this.isolationTuning.tasksPerIsolate};c=await this.spawnAndExecute("executeBatch",l,t,o,i.signal)}catch(d){let l=d;if(l.ctxChanges&&this.mergeCtxChanges(t,l.ctxChanges),l.code==="ERR_EXECUTION_ABORTED"||l.isAbort)throw l;if(l.isTimeout||l.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")throw new he(o,"(batch execution)",l.details);l.code&&l.details&&(l.details.executorCode=l.code);let f=l.statusCode??(typeof l.status=="number"?l.status:void 0);throw Fe.createException(l.errorPath,f,l.message||"Unknown error","(batch execution)",l.details||{})}return this.mergeCtxChanges(t,c.ctxChanges||{}),{value:c.valueAbsent?void 0:c.value,shortCircuit:c.shortCircuit===!0}}recordTaskDuration(e){this.taskDurationsMs.push(e),this.taskDurationsMs.length>512&&this.taskDurationsMs.shift()}recordQueueWait(e){this.queueWaitDurationsMs.push(e),this.queueWaitDurationsMs.length>512&&this.queueWaitDurationsMs.shift()}percentile(e,t){if(e.length===0)return 0;let n=[...e].sort((o,s)=>o-s),i=Math.min(n.length-1,Math.max(0,Math.ceil(t/100*n.length)-1));return n[i]}getMetrics(){let e=this.pool.getMetrics(),t=this.taskDurationsMs,n=t.length===0?0:t.reduce((s,a)=>s+a,0)/t.length,i=this.queueWaitDurationsMs,o=i.length===0?0:i.reduce((s,a)=>s+a,0)/i.length;return{tuning:this.isolationTuning,pool:e,taskDoneTotal:this.taskDoneTotal,taskErrorTotal:this.taskErrorTotal,taskTimeoutTotal:this.taskTimeoutTotal,rotationsTotal:this.rotationsTotal,crashesTotal:this.crashesTotal,avgTaskMs:n,p95TaskMs:this.percentile(t,95),p99TaskMs:this.percentile(t,99),avgQueueWaitMs:o,p95QueueWaitMs:this.percentile(i,95),p99QueueWaitMs:this.percentile(i,99),maxHeapRatio:Math.max(0,...e.workers.map(s=>s.lastHeapRatio||0)),runnerRssBytes:e.workers.reduce((s,a)=>s+(a.lastRssBytes||0),0)}}};var ve=xe(require("typescript")),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 qi(r){return te.getLegacyField(r)}function Ui(r){return te.isScriptTable(r)}function Qi(r){return te.normalizeLanguage(r)}var Xt=class{getLegacyField(e){return xt[e]}isScriptTable(e){return e in xt}normalizeLanguage(e){return e==="javascript"?"javascript":"typescript"}compileSource(e,t){if(e==null||e==="")return null;let n=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,c={...t};return o&&(c.sourceCode=a??null),c.scriptLanguage=this.normalizeLanguage(u),c.compiledCode=this.compileSource(a,c.scriptLanguage),i&&i in c&&delete c[i],c}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(xt).find(n=>xt[n]in e);if(t){let n=e[xt[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=ve.default.transpileModule(e,{compilerOptions:{target:ve.default.ScriptTarget.ES2022,module:ve.default.ModuleKind.CommonJS,importsNotUsedAsValues:ve.default.ImportsNotUsedAsValues.Remove,sourceMap:!1,inlineSourceMap:!1,inlineSources:!1},reportDiagnostics:!0}),n=t.diagnostics?.find(i=>i.category===ve.default.DiagnosticCategory.Error);if(n)throw new Error(ve.default.flattenDiagnosticMessageText(n.messageText,`
1
+ "use strict";var pi=Object.create;var zt=Object.defineProperty;var gi=Object.getOwnPropertyDescriptor;var hi=Object.getOwnPropertyNames;var yi=Object.getPrototypeOf,mi=Object.prototype.hasOwnProperty;var U=(r,e)=>()=>(r&&(e=r(r=0)),e);var In=(r,e)=>{for(var t in e)zt(r,t,{get:e[t],enumerable:!0})},hr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of hi(e))!mi.call(r,i)&&i!==t&&zt(r,i,{get:()=>e[i],enumerable:!(n=gi(e,i))||n.enumerable});return r};var xe=(r,e,t)=>(t=r!=null?pi(yi(r)):{},hr(e||!r||!r.__esModule?zt(t,"default",{value:r,enumerable:!0}):t,r)),bi=r=>hr(zt({},"__esModule",{value:!0}),r);function Rr(r){return Pn.createHash("md5").update(r).digest("hex").substring(0,8)}function xr(r){return r.length<=kr-3?`${r}_pk`:`j_${Rr(r)}_pk`}function Fr(r,e,t){let n=`${r}_${e}_foreign`;return n.length<=kr?n:`j_${Rr(r)}_${t}_fk`}function Ft(r,e,t){let n=`${r}:${e}:${t}`;return`j_${Pn.createHash("sha1").update(n).digest("hex").slice(0,12)}`}function z(r){return`${r}Id`}function vt(r,e,t){return{sourceColumn:"sourceId",targetColumn:"targetId"}}function vr(r){return r.replace(/_([a-z])/g,e=>e[1].toUpperCase())}function Ir(r){return r.replace(/([A-Z])/g,"_$1").toLowerCase()}function Nr(r,e,t){return`${r}_${e}_${t}_fk`}function Er(r,e,t){return`${r}_${e}_${t}_idx`}var Pn,kr,Ke=U(()=>{"use strict";Pn=xe(require("crypto")),kr=63});function on(r){return ro[r]??null}var _e,Dn,Nt,ro,sn=U(()=>{"use strict";_e=new Set(["_eq","_neq","_gt","_gte","_lt","_lte","_in","_not_in","_nin","_contains","_starts_with","_ends_with","_between","_is_null","_is_not_null"]),Dn=new Set(["_and","_or","_not"]),Nt=[...Array.from(Dn),...Array.from(_e)],ro={_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 I,ue=U(()=>{"use strict";I=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 Pr(){let r=process.env.DB_URI||"";return r.startsWith("mongodb://")||r.startsWith("mongodb+srv://")}var jr=U(()=>{"use strict"});function Ee(r,e,t){throw new I({message:`Unsupported filter operator "${r}" on field "${e}"${t?` (table "${t}")`:""}. Supported operators: ${Nt.join(", ")}.`,error:"UnsupportedFilterOperator",operator:r,field:e,supportedOperators:Nt})}function an(r,e,t){if(!e||typeof e!="object"||Array.isArray(e))return;let n=Pr();for(let i of Object.keys(e))if(i.startsWith("_")&&!_e.has(i)){if(n&&i==="_id")continue;Ee(i,r,t)}}function re(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(io.has(s)){if(Array.isArray(a))for(let c of a)re(c,e,t);else a&&typeof a=="object"&&re(a,e,t);continue}let u=o.get(s);if(u){if(a&&typeof a=="object"&&!Array.isArray(a)){an(s,a,e);let c=u.targetTableName||u.targetTable;if(c){let d=Object.keys(a).filter(l=>!l.startsWith("_"));if(d.length>0){let l={};for(let f of d)l[f]=a[f];re(l,c,t)}}}continue}s.startsWith("_")&&!i.has(s)&&s!=="_id"&&Ee(s,s,e),a&&typeof a=="object"&&!Array.isArray(a)&&an(s,a,e)}}var io,Je=U(()=>{"use strict";ue();sn();jr();io=new Set(["_and","_or","_not"])});function de(r,e,t,n){return!r||typeof r!="object"?{node:null,hasRelationFilters:!1}:ln(r,{tableName:e,metadata:t,registry:n,parentJoinId:null,currentJoinId:null,currentTable:e})}function ln(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=oo(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 oo(r,e,t){if(r==="_and")return Br("and",e,t);if(r==="_or")return Br("or",e,t);if(r==="_not"){let c=ln(e,t);return c.node?{node:{kind:"not",child:c.node},hasRelationFilters:c.hasRelationFilters}:{node:null,hasRelationFilters:c.hasRelationFilters}}let n=t.metadata?.tables?.get(t.currentTable),i=n?.columns?.some(c=>c.name==="_id"&&c.isPrimary),o=n?.columns?.some(c=>c.name==="id"),a=r==="id"?i&&!o?"_id":"id":r,u=n?.relations?.find(c=>c.propertyName===a);return u?so(a,e,u,t):n&&!n.columns?.find(d=>d.name===a)?(r.startsWith("_")&&r!=="_id"&&Ee(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}):ao(a,e,t)}function Br(r,e,t){if(!Array.isArray(e))return{node:null,hasRelationFilters:!1};let n=[],i=!1;for(let o of e){let s=ln(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 so(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},c=new Set(["_eq","_neq","_in","_not_in","_nin","_gt","_gte","_lt","_lte"]),l=i.length>0&&i.every(p=>c.has(p))?{id:e}:e;return{node:ln(l,u).node,hasRelationFilters:!0}}function ao(r,e,t){let n={joinId:t.currentJoinId,fieldName:r,isUuid:co(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("_")&&!_e.has(s)&&Ee(s,r,t.tableName);let i=Object.entries(e).filter(([s])=>_e.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=lo(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 lo(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=on(e);return n?{kind:"compare",field:r,op:n,value:t}:null}function co(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 Et=U(()=>{"use strict";sn();Je()});var ie,Mt=U(()=>{"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,i="left",o=null,s="data"){let a=o?`${o}.${t}`:t;if(this.map.has(a)){let f=this.map.get(a);return i==="inner"&&(f.joinType="inner"),f.purposes.includes(s)||f.purposes.push(s),a}let u=n?.tables?.get(e);if(!u)return null;let c=u.relations?.find(f=>f.propertyName===t);if(!c)return null;let d=c.targetTableName||c.targetTable;if(!d)return null;let l={id:a,propertyName:t,parentTable:e,targetTable:d,relationType:c.type,parentJoinId:o,joinType:i,relationMeta:c,purposes:[s]};return this.map.set(a,l),a}}});async function K(r,e,t=oe){if(!Number.isInteger(t)||t<1)throw new Error("Batch fetch chunk size must be a positive integer");if(r.length<=t)return e(r);let n=[];for(let u=0;u<r.length;u+=t)n.push(r.slice(u,u+t));let i=[],o=0;async function s(){for(;o<n.length;){let u=o++;i[u]=await e(n[u])}}let a=Math.min(Vn,n.length);return await Promise.all(Array.from({length:a},s)),i.flat()}function He(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 Me,oe,Vn,Hn,Te,Ge=U(()=>{"use strict";ue();Me=16,oe=5e3,Vn=4,Hn=10;Te=class{constructor(e,t,n){this.adapter=e;this.metadataGetter=t;this.trace=n}enrichNestedDescs(e,t,n){if(!t||Object.keys(t).length===0)return e;let i=e.map(s=>{let a=t[s.relationName];if(!a)return s;let u=a.fields!=null?Array.isArray(a.fields)?a.fields:String(a.fields).split(",").map(c=>c.trim()).filter(Boolean):["*"];return{...s,fields:u,userFilter:a.filter??s.userFilter,userSort:a.sort??s.userSort,userLimit:a.limit!==void 0?Number(a.limit):s.userLimit,userPage:a.page!==void 0?Number(a.page):s.userPage,nestedDeep:a.deep??s.nestedDeep}}),o=new Set(i.map(s=>s.relationName));for(let[s,a]of Object.entries(t)){if(o.has(s))continue;let u=n?.relations?.find(d=>d.propertyName===s);if(!u)continue;let c=a.fields!=null?Array.isArray(a.fields)?a.fields:String(a.fields).split(",").map(d=>d.trim()).filter(Boolean):["*"];i.push({relationName:s,type:u.type,targetTable:u.targetTableName||u.targetTable,fields:c,isInverse:u.isInverse,fkColumn:u.foreignKeyColumn,mappedBy:u.mappedBy,junctionTableName:u.junctionTableName,junctionSourceColumn:u.junctionSourceColumn,junctionTargetColumn:u.junctionTargetColumn,userFilter:a.filter,userSort:a.sort,userLimit:a.limit!==void 0?Number(a.limit):void 0,userPage:a.page!==void 0?Number(a.page):void 0,nestedDeep:a.deep})}return i}withDefaultToManyLimit(e){return e.userLimit===void 0&&(e.type==="one-to-many"||e.type==="many-to-many")?{...e,userLimit:Hn}:e}fieldsForNestedResolution(e,t){if(!t||Object.keys(t).length===0)return e;let n=new Set(e.filter(o=>o!=="*").map(o=>o.split(".")[0])),i=[...e];for(let o of Object.keys(t))n.has(o)||i.push(o);return i}uniqueValues(e){let t=new Set,n=[];for(let i of e){if(i==null)continue;let o=this.adapter.keyOf(i);t.has(o)||(t.add(o),n.push(i))}return n}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 I(`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 I(`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 w of e){let C=w[o];if(C==null)continue;let T=this.adapter.keyOf(C);s.has(T)||(s.add(T),a.push(C))}if(a.length===0){for(let w of e)w[t.relationName]=null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[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:c,nestedDescs:d,fetchSpec:l}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),u),f=this.adapter.getTargetPkField(u);if(c){for(let w of e){let C=w[o];w[t.relationName]=C!=null?this.adapter.buildScalarRef(C,f):null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[t.fkColumn]}return}let p=performance.now(),y=await this.adapter.fetchOwner(t.targetTable,a,l,t),g=Array.isArray(y)?y:y.docs,h=Array.isArray(y)?void 0:y.stats;this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,p,{relationType:t.type,targetTable:t.targetTable,strategy:h?.strategy??"batch-in",roundtrips:h?.roundtrips??(Math.ceil(a.length/oe)||1),concurrencyWaves:h?.concurrencyWaves,ioConcurrency:h?.ioConcurrency,rowsTransferred:h?.rowsTransferred??g.length,rowsReturned:g.length,rowsDiscarded:0,userFilter:!!t.userFilter,userSort:!!t.userSort});let m=this.enrichNestedDescs(d,t.nestedDeep,u);m.length>0&&await this.execute(g,m,n,i+1,t.targetTable);let b=new Map;for(let w of g)b.set(this.adapter.keyOf(w[f]),w);for(let w of e){let C=w[o];w[t.relationName]=C!=null&&b.get(this.adapter.keyOf(C))||null,o!==t.relationName&&delete w[o],t.fkColumn&&t.fkColumn!==t.relationName&&delete w[t.fkColumn]}}async fetchInverseRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=this.uniqueValues(e.map(v=>v[s]));if(a.length===0)return;let u=this.adapter.resolveInverseFkField(t),c=await this.metadataGetter(t.targetTable);if(!c)throw new Error(`Metadata not found for target table: ${t.targetTable}`);this.assertLocalSortFields(t,c);let{nestedDescs:d,fetchSpec:l}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),c),f=performance.now(),{docs:p,groupKeyField:y,stats:g}=await this.adapter.fetchInverse(t.targetTable,u,a,l,t),h=new Map,m=t.fields.includes(u)||t.fields.includes("*");for(let v of p){let j=v[y],S=this.adapter.keyOf(j);h.has(S)||h.set(S,[]),h.get(S).push(v)}let b=t.userLimit!==void 0&&t.userLimit>0,w=b?"per-parent-c16":"batch-in",C=b?a.length:Math.ceil(a.length/oe)||1,T=b?Math.ceil(a.length/Me):void 0,k=Array.from(h.values()).reduce((v,j)=>v+j.length,0);if(this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,f,{relationType:t.type,targetTable:t.targetTable,strategy:g?.strategy??w,roundtrips:g?.roundtrips??C,concurrencyWaves:g?.concurrencyWaves??T,ioConcurrency:g?.ioConcurrency,rowsTransferred:g?.rowsTransferred??p.length,rowsReturned:k,rowsDiscarded:Math.max(0,(g?.rowsTransferred??p.length)-k),userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort}),this.adapter.postProcessInverseChild)for(let v of p)this.adapter.postProcessInverseChild(v,u,m);let x=this.enrichNestedDescs(d,t.nestedDeep,c);x.length>0&&await this.execute(p,x,n,i+1,t.targetTable);let _=t.type==="one-to-one";for(let v of e){let j=this.adapter.keyOf(v[s]),S=h.get(j)||[];v[t.relationName]=_?S[0]||null:S}}async fetchM2MRelation(e,t,n,i,o){let s=this.adapter.resolveParentPk(o),a=this.uniqueValues(e.map(T=>T[s]));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:c,fetchSpec:d}=this.adapter.resolveFields(this.fieldsForNestedResolution(t.fields,t.nestedDeep),u),l=performance.now(),{grouped:f,docs:p,stats:y}=await this.adapter.fetchM2M(e,t,o,u,d),g=t.userLimit!==void 0&&t.userLimit>0,h=g?"m2m-per-parent-c16":"m2m-batch",m=g?a.length:Math.ceil(a.length/oe)||1,b=g?Math.ceil(a.length/Me):void 0,w=Array.from(f.values()).reduce((T,k)=>T+k.length,0);this.trace?.dur(`batch_fetch_L${i}_${t.relationName}`,l,{relationType:t.type,targetTable:t.targetTable,strategy:y?.strategy??h,roundtrips:y?.roundtrips??m,concurrencyWaves:y?.concurrencyWaves??b,ioConcurrency:y?.ioConcurrency,rowsTransferred:y?.rowsTransferred??p.length,rowsReturned:w,rowsDiscarded:y?.rowsDiscarded??Math.max(0,(y?.rowsTransferred??p.length)-w),userLimit:t.userLimit,userFilter:!!t.userFilter,userSort:!!t.userSort});let C=this.enrichNestedDescs(c,t.nestedDeep,u);C.length>0&&p.length>0&&await this.execute(p,C,n,i+1,t.targetTable);for(let T of e){let k=this.adapter.keyOf(T[s]);T[t.relationName]=f.get(k)||[]}}}});var Jr,Se,hn=U(()=>{"use strict";Jr=2,Se=class{constructor(e=2){this.concurrency=e;this.active=0;this.waiters=[];if(!Number.isInteger(e)||e<1)throw new Error("Batch execution concurrency must be a positive integer")}async run(e){await this.acquire();try{return await e()}catch(t){throw this.cancel(t),t}finally{this.release()}}async acquire(){if(this.failure!==void 0)throw this.failure;if(this.active<this.concurrency){this.active+=1;return}if(await new Promise(e=>this.waiters.push(e)),this.failure!==void 0)throw this.failure;this.active+=1}release(){this.active-=1,this.failure===void 0&&this.waiters.shift()?.()}cancel(e){if(this.failure===void 0){this.failure=e;for(let t of this.waiters.splice(0))t()}}}});function F(r,e){let t=e==="mysql"?r.replace(/`/g,"``"):r.replace(/"/g,'""');switch(e){case"mysql":return`\`${t}\``;case"postgres":case"pg":case"sqlite":return`"${t}"`;case"mongodb":return r;default:return`\`${t}\``}}function ke(r,e){return r.split(".").map(t=>t==="*"||t.startsWith('"')&&t.endsWith('"')||t.startsWith("`")&&t.endsWith("`")?t:F(t,e)).join(".")}var ae=U(()=>{"use strict"});function ce(r,e,t){e&&Sn(r,e,t,"and")}function Sn(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(){Sn(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(){Sn(this,o,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"not":{let i=function(){this.whereNot(function(){Sn(this,e.child,t,"and")})};n==="or"?r.orWhere(i):r.where(i);return}case"compare":Do(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 Do(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=Wo(e.field,t),o=ke(i,t.dbType),s=!!e.field.isUuid,a=t.dbType==="postgres",u=n==="or"?"orWhere":"where",c=n==="or"?"orWhereRaw":"whereRaw",d=n==="or"?"orWhereIn":"whereIn",l=n==="or"?"orWhereNotIn":"whereNotIn",f=n==="or"?"orWhereBetween":"whereBetween",p=n==="or"?"orWhereNull":"whereNull",y=n==="or"?"orWhereNotNull":"whereNotNull";switch(e.op){case"eq":s&&a&&typeof e.value=="string"?r[c](`${o} = ?::uuid`,[e.value]):r[u](i,"=",e.value);return;case"neq":s&&a&&typeof e.value=="string"?r[c](`${o} != ?::uuid`,[e.value]):r[u](i,"!=",e.value);return;case"gt":s&&a&&typeof e.value=="string"?r[c](`${o} > ?::uuid`,[e.value]):r[u](i,">",e.value);return;case"gte":s&&a&&typeof e.value=="string"?r[c](`${o} >= ?::uuid`,[e.value]):r[u](i,">=",e.value);return;case"lt":s&&a&&typeof e.value=="string"?r[c](`${o} < ?::uuid`,[e.value]):r[u](i,"<",e.value);return;case"lte":s&&a&&typeof e.value=="string"?r[c](`${o} <= ?::uuid`,[e.value]):r[u](i,"<=",e.value);return;case"in":{let g=ri(e.value);s&&a&&g.every(h=>typeof h=="string")?r[c](`${o} = ANY(?::uuid[])`,[g]):r[d](i,g);return}case"not_in":{let g=ri(e.value);s&&a&&g.every(h=>typeof h=="string")?r[c](`${o} != ALL(?::uuid[])`,[g]):r[l](i,g);return}case"contains":sr(r,o,e.value,"contains",t,n);return;case"starts_with":sr(r,o,e.value,"starts_with",t,n);return;case"ends_with":sr(r,o,e.value,"ends_with",t,n);return;case"between":Array.isArray(e.value)&&e.value.length===2&&r[f](i,[e.value[0],e.value[1]]);return;case"is_null":e.value===!0?r[p](i):r[y](i);return}}function sr(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 Wo(r,e){return r.fieldName.includes(".")?r.fieldName:`${e.rootTable}.${r.fieldName}`}function ri(r){return Array.isArray(r)?r:typeof r=="string"&&r.includes(",")?r.split(",").map(e=>e.trim()):[r]}var ar=U(()=>{"use strict";ae()});function G(r){return r.columns.find(e=>e.isPrimary)||null}var qt=U(()=>{"use strict"});var ii={};In(ii,{expandFieldsToJoinsAndSelect:()=>lr});async function lr(r,e,t,n,i,o){let s=[],a=[],u=await t(r);if(!u)return{select:[],batchFetchDescriptors:[]};let c=new Map;for(let l of e)if(l==="*"||!l.includes("."))c.has("")||c.set("",[]),c.get("").push(l);else{let f=l.split("."),p=f[0],y=f.slice(1).join(".");c.has(p)||c.set(p,[]),c.get(p).push(y)}if(o&&typeof o=="object")for(let[l,f]of Object.entries(o)){if(c.has(l))continue;let p=f&&typeof f=="object"&&f.fields!=null?Array.isArray(f.fields)?f.fields:String(f.fields).split(",").map(y=>y.trim()).filter(Boolean):["*"];c.set(l,p)}let d=c.get("")||[];for(let l of d){if(l==="*"){let y=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||z(h.propertyName);m&&y.add(m)}let g=new Set;for(let h of u.columns)y.has(h.name)||(s.push(`${r}.${h.name}`),g.add(h.name));for(let h of u.relations||[])!c.has(h.propertyName)&&!g.has(h.propertyName)&&c.set(h.propertyName,["id"]);continue}if(l.includes(".")){s.push(`${r}.${l}`);continue}if(u.columns?.find(y=>y.name===l)){s.push(`${r}.${l}`);continue}if(u.relations?.find(y=>y.propertyName===l)){c.has(l)||c.set(l,["id"]);continue}}return c.forEach((l,f)=>{if(f==="")return;let p=u.relations?.find(b=>b.propertyName===f);if(!p)return;if(p.type==="many-to-one"||p.type==="one-to-one"&&!p.isInverse){let b=p.foreignKeyColumn||z(p.propertyName),w=F(r,n),C=F(b,n),T=F(f,n);s.push(`${w}.${C} as ${T}`)}let g=p.targetTableName||p.targetTable,h=o?.[f],m=h?.fields!=null?Array.isArray(h.fields)?h.fields:String(h.fields).split(",").map(b=>b.trim()).filter(Boolean):l;a.push({relationName:f,type:p.type,targetTable:g,fields:m,isInverse:p.isInverse,fkColumn:p.foreignKeyColumn,mappedBy:p.mappedBy,junctionTableName:p.junctionTableName,junctionSourceColumn:p.junctionSourceColumn,junctionTargetColumn:p.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 cr=U(()=>{"use strict";Ke();ae()});var Ut,Qt,Cn,ot,Ko,st,dr=U(()=>{"use strict";Ke();ae();qt();Ge();hn();ar();Mt();Et();Ut="__enfyra_row_number__",Qt="__sourceId__",Cn="__targetId__",ot="__enfyra_partitioned__",Ko=5e4,st=class{constructor(e,t="postgres",n,i=new Se){this.knex=e;this.dbType=t;this.metadata=n;this.executionBudget=i;this.pkField="id"}chunkCount(e,t=oe){return Math.ceil(e.length/t)||1}m2mTargetChunkSize(){return this.dbType==="postgres"?Ko:oe}uniqueValues(e){return Array.from(new Map(e.filter(t=>t!=null).map(t=>[this.keyOf(t),t])).values())}runQuery(e){return this.executionBudget.run(()=>e)}buildPartitionRowNumber(e,t,n){let i=[...t];i.some(s=>s.column===n)||i.push({column:n,order:"asc"});let o=i.map(s=>`?? ${s.order.toUpperCase()}`).join(", ");return this.knex.raw(`ROW_NUMBER() OVER (PARTITION BY ?? ORDER BY ${o}) as ??`,[e,...i.map(s=>s.column),Ut])}buildPartitionSlice(e,t,n,i){return this.knex.from(e.as(ot)).select(`${ot}.*`).where(`${ot}.${Ut}`,">",n).andWhere(`${ot}.${Ut}`,"<=",n+i).orderBy(`${ot}.${t}`,"asc").orderBy(`${ot}.${Ut}`,"asc")}removePartitionFields(e){for(let t of e)delete t[Ut]}buildFilterTree(e,t){if(!e||!this.metadata)return null;let n=new ie,i=this.metadata?.tables?this.metadata:{tables:new Map(Object.entries(this.metadata))},{node:o}=de(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 c=u[u.length-1];return{column:`${`__sort_${u.slice(0,-1).join("_")}`}.${c}`,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 c=(a.startsWith("-")?a.slice(1):a).split(".");if(c.length<=1)continue;let d=n,l=i||n;for(let f=0;f<c.length-1;f++){let p=c[f],y=this.metadata?.tables?.get(d);if(!y)break;let g=y.relations?.find(b=>b.propertyName===p);if(!g)break;let h=g.targetTableName||g.targetTable,m=`__sort_${c.slice(0,f+1).join("_")}`;if(!s.has(m)){s.add(m);let b=g.foreignKeyColumn||z(g.propertyName),w=this.metadata?.tables?.get(h),C=w&&G(w)?.name||"id";e.leftJoin(`${h} as ${m}`,`${m}.${C}`,`${l}.${b}`)}d=h,l=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 G(e)?.name||"id"}resolveOwnerFkKey(e){return e.relationName}resolveInverseFkField(e){let t=e.fkColumn;return!t&&e.mappedBy&&(t=z(e.mappedBy)),t||(t=z(e.targetTable)),t}resolveParentPk(e){return e&&G(e)?.name||"id"}resolveFields(e,t){let{rootFields:n,subRelations:i}=He(e),o=[];if(n.includes("*")){let c=new Set;for(let d of t.relations||[])if(d.type==="many-to-one"||d.type==="one-to-one"&&!d.isInverse){let l=d.foreignKeyColumn||z(d.propertyName);l&&c.add(l)}for(let d of t.columns)c.has(d.name)||o.push(d.name);for(let d of t.relations||[])i.has(d.propertyName)||i.set(d.propertyName,["id"])}else for(let c of n){let d=t.columns.find(l=>l.name===c);d?o.push(d.name):t.relations?.find(f=>f.propertyName===c)&&!i.has(c)&&i.set(c,["id"])}let s=G(t)?.name||"id";o.includes(s)||o.push(s),i.forEach((c,d)=>{let l=t.relations?.find(f=>f.propertyName===d);if(l&&(l.type==="many-to-one"||l.type==="one-to-one"&&!l.isInverse)){let f=l.foreignKeyColumn||z(l.propertyName);f&&o.push(`${f} as ${d}`)}});let a=[];return i.forEach((c,d)=>{let l=t.relations?.find(p=>p.propertyName===d);if(!l)return;let f=l.targetTableName||l.targetTable;f&&a.push({relationName:d,type:l.type,targetTable:f,fields:c,isInverse:l.isInverse,fkColumn:l.foreignKeyColumn,mappedBy:l.mappedBy,junctionTableName:l.junctionTableName,junctionSourceColumn:l.junctionSourceColumn,junctionTargetColumn:l.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(c=>this.toKnexSelect(c)),u=await K(t,c=>{let d=this.knex(e).select(a).whereIn(n.pkCol,c);if(o&&ce(d,o,{dbType:this.dbType,rootTable:e}),s.length>0){this.applySortJoins(d,i.userSort,e);for(let l of s)d.orderBy(l.column,l.order)}return this.runQuery(d)});return{docs:u,stats:{strategy:"batch-in",roundtrips:this.chunkCount(t),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:u.length}}}async fetchInverse(e,t,n,i,o){let s=t,a=i.selectCols.find(y=>y.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,c=o?.userSort?this.parseSortTokens(o.userSort,e):[],d=o?.userLimit,l=o?.userPage;if(d!==void 0&&d>0){let y=l?(l-1)*d:0,g=i.selectCols.map(m=>this.toKnexSelect(m)),h=await K(n,async m=>{let b=this.knex(e).select(g).select(this.buildPartitionRowNumber(`${e}.${t}`,c,`${e}.${i.pkCol}`)).whereIn(`${e}.${t}`,m);u&&ce(b,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(b,o.userSort,e);let w=await this.runQuery(this.buildPartitionSlice(b,s,y,d));return this.removePartitionFields(w),w});return{docs:h,groupKeyField:s,stats:{strategy:"partitioned-top-k",roundtrips:this.chunkCount(n),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:h.length}}}let f=i.selectCols.map(y=>this.toKnexSelect(y)),p=await K(n,y=>{let g=this.knex(e).select(f).whereIn(t,y);if(u&&ce(g,u,{dbType:this.dbType,rootTable:e}),this.applySortJoins(g,o?.userSort,e),c.length>0)for(let h of c)g.orderBy(h.column,h.order);else g.orderBy(i.pkCol,"asc");return this.runQuery(g)});return{docs:p,groupKeyField:s,stats:{strategy:"batch-in",roundtrips:this.chunkCount(n),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length}}}postProcessInverseChild(e,t,n){n||delete e[t]}async selectM2MEdges(e,t,n,i,o,s,a,u){let c=`t.${s}`,d=!!a||u.some(g=>g.column!==c),l=d?u:u.map(g=>({...g,column:`${n}.${o}`})),f=t.userLimit,p=t.userPage;if(f!==void 0&&f>0){let g=p?(p-1)*f:0;return(await K(e,async m=>{let b=this.knex(n).select({[Qt]:`${n}.${i}`,[Cn]:`${n}.${o}`}).whereIn(`${n}.${i}`,m);d&&(b=b.join(`${t.targetTable} as t`,`${n}.${o}`,`t.${s}`),a&&ce(b,a,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(b,t.userSort,t.targetTable,"t")),b.select(this.buildPartitionRowNumber(`${n}.${i}`,l,d?c:`${n}.${o}`));let w=await this.runQuery(this.buildPartitionSlice(b,Qt,g,f));return this.removePartitionFields(w),w})).map(m=>({sourceId:m[Qt],targetId:m[Cn]}))}return(await K(e,g=>{let h=this.knex(n).select({[Qt]:`${n}.${i}`,[Cn]:`${n}.${o}`}).whereIn(`${n}.${i}`,g);if(d&&(h=h.join(`${t.targetTable} as t`,`${n}.${o}`,`t.${s}`),a&&ce(h,a,{dbType:this.dbType,rootTable:"t"}),this.applySortJoins(h,t.userSort,t.targetTable,"t")),h.orderBy(`${n}.${i}`,"asc"),l.length>0){for(let m of l)h.orderBy(m.column,m.order);d&&!l.some(m=>m.column===c)&&h.orderBy(c,"asc")}else h.orderBy(`${n}.${o}`,"asc");return this.runQuery(h)})).map(g=>({sourceId:g[Qt],targetId:g[Cn]}))}async loadM2MTargets(e,t,n){if(t.length===0)return[];let i=n.selectCols.map(o=>this.toKnexSelect(o));return K(t,o=>this.runQuery(this.knex(e).select(i).whereIn(n.pkCol,o)),this.m2mTargetChunkSize())}async fetchM2M(e,t,n,i,o){let s=this.resolveParentPk(n),a=this.uniqueValues(e.map(x=>x[s]));if(a.length===0)return{grouped:new Map,docs:[]};let u=t.junctionTableName,c=t.junctionSourceColumn,d=t.junctionTargetColumn;if(!u||!c||!d)throw new Error(`Missing junction table config for relation: ${t.relationName}`);let l=t.userFilter?this.buildFilterTree(t.userFilter,t.targetTable):null,f=t.userSort?this.parseSortTokens(t.userSort,t.targetTable,"t"):[],p=await this.selectM2MEdges(a,t,u,c,d,o.pkCol,l,f),y=new Map;for(let x of a)y.set(this.keyOf(x),[]);let g=o.selectCols.length===1&&o.selectCols[0]===o.pkCol,h=t.userLimit!==void 0&&t.userLimit>0,m=this.chunkCount(a),b=`t.${o.pkCol}`,w=!l&&f.every(x=>x.column===b);if(g){let x=new Map;for(let _ of p){let v=this.keyOf(_.targetId);x.has(v)||x.set(v,{[o.pkCol]:_.targetId}),y.get(this.keyOf(_.sourceId))?.push(x.get(v))}return{grouped:y,docs:[],stats:{strategy:w?h?"m2m-junction-partitioned-top-k":"m2m-junction-batch":h?"m2m-filtered-edge-top-k":"m2m-filtered-edge-batch",roundtrips:m,ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length,rowsDiscarded:0}}}let C=this.uniqueValues(p.map(x=>x.targetId)),T=await this.loadM2MTargets(t.targetTable,C,o),k=new Map(T.map(x=>[this.keyOf(x[o.pkCol]),x]));for(let x of p){let _=k.get(this.keyOf(x.targetId));_&&y.get(this.keyOf(x.sourceId))?.push(_)}return{grouped:y,docs:T,stats:{strategy:h?"m2m-partitioned-edge-loader":"m2m-edge-loader",roundtrips:m+(C.length>0?this.chunkCount(C,this.m2mTargetChunkSize()):0),ioConcurrency:this.executionBudget.concurrency,rowsTransferred:p.length+T.length,rowsDiscarded:0}}}}});var li={};In(li,{executeBatchFetches:()=>fr});async function fr(r,e,t,n,i=3,o=0,s,a="postgres",u,c){let d=new st(r,a,u);await new Te(d,n,c).execute(e,t,i,o,s)}var pr=U(()=>{"use strict";Ge();dr()});var Jo={};In(Jo,{ALL_SUPPORTED_OPERATORS:()=>Nt,AuthenticationException:()=>gt,AuthorizationException:()=>ht,BadRequestException:()=>I,BatchExecutionBudget:()=>Se,BatchFetchEngine:()=>Te,BusinessLogicException:()=>ut,CHUNKED_FETCH_CONCURRENCY:()=>Vn,ConfigurationException:()=>$t,DEEP_TO_MANY_DEFAULT_LIMIT:()=>Hn,DEFAULT_BATCH_FETCH_IO_CONCURRENCY:()=>Jr,DEFAULT_TIMEOUT_MS:()=>Vt,DOTTED_PATH_MAX_HOPS:()=>Fn,DatabaseException:()=>Le,DuplicateResourceException:()=>pt,ErrorHandler:()=>Fe,ExecutorEngineService:()=>Be,ExternalServiceException:()=>bt,FIELD_OPERATORS:()=>_e,FileNotFoundException:()=>St,FileSizeExceededException:()=>Ct,FileUploadException:()=>Tt,HttpException:()=>P,InvalidTokenException:()=>mt,IsolatedExecutorService:()=>We,JoinRegistry:()=>ie,LOGICAL_OPERATORS:()=>Dn,MongoBatchAdapter:()=>Xe,MongoQueryExecutor:()=>Ae,PER_PARENT_CONCURRENCY:()=>Me,QueryBuilderService:()=>at,QueryPlanner:()=>ee,ResourceNotFoundException:()=>ft,SchemaException:()=>wt,ScriptContractService:()=>Xt,ScriptExecutionException:()=>ye,ScriptTimeoutException:()=>he,ServiceUnavailableException:()=>_t,SqlBatchAdapter:()=>st,SqlQueryExecutor:()=>je,TokenExpiredException:()=>yt,ValidationException:()=>dt,WHERE_IN_CHUNK_SIZE:()=>oe,WorkerPool:()=>Rt,applyOperatorToMatch:()=>rn,applyRelationFilters:()=>Lt,applyWhereToKnex:()=>it,assertFieldOperatorValueIsClean:()=>an,buildMongoCharFoldMapJson:()=>Bn,buildMongoFoldTextSearchJs:()=>Zt,buildRelationSubquery:()=>Bt,buildSqlWherePartsFromFieldAst:()=>Wt,buildWhereClause:()=>le,camelToSnake:()=>Ir,chunkedFetch:()=>K,compileScriptSource:()=>Ji,computeEngineTuning:()=>Mn,createEnfyraKernel:()=>Qo,dslOpToCompareOp:()=>on,encodeMainThreadToIsolate:()=>An,escapeSqlValue:()=>Kt,executeBatchFetches:()=>fr,executeMongoBatchFetches:()=>mn,expandFieldsToJoinsAndSelect:()=>lr,getEffectiveCpuCount:()=>En,getEffectiveMemoryBytes:()=>kt,getEngineTuning:()=>Yt,getExecutableScript:()=>Gi,getForeignKeyColumnName:()=>z,getIoAbortSignal:()=>Sr,getJunctionColumnNames:()=>vt,getJunctionTableName:()=>Ft,getPrimaryKeyColumn:()=>G,getScriptLegacyField:()=>qi,getShortFkConstraintName:()=>Fr,getShortFkName:()=>Nr,getShortIndexName:()=>Er,getShortPkName:()=>xr,hasLogicalOperators:()=>ge,isExecutableJavaScript:()=>zi,isScriptTable:()=>Ui,normalizeAggregateQuery:()=>tt,normalizeFlowStepScriptConfig:()=>Xi,normalizeScriptLanguage:()=>Qi,normalizeScriptPatch:()=>Hi,normalizeScriptRecord:()=>Vi,parseBatchFields:()=>He,parseFields:()=>bn,parseFilter:()=>de,perParentRun:()=>yn,quoteIdentifier:()=>F,quoteQualifiedIdentifier:()=>ke,resolveExecutableScript:()=>Yi,rewriteFilterDenyingFields:()=>di,rewriteSortDroppingDenied:()=>fi,runWithIoAbortSignal:()=>Cr,scriptContractService:()=>te,separateFilters:()=>H,snakeToCamel:()=>vr,throwUnsupportedFieldOperator:()=>Ee,validateDeepOptions:()=>gr,validateFilterShape:()=>re,whereToMongoFilter:()=>Qe});module.exports=bi(Jo);var Vt=3e4,Be=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,n={}){let i=e.routeData.__codeBlocks||[];return i.length===0?{value:void 0,shortCircuit:!1}:this.isolatedExecutorService.runBatch(i,e.routeData.context,t??Vt,n)}async run(e,t,n=Vt,i={}){return this.isolatedExecutorService.run(e,t,n,i)}};var Ht=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 wr=require("async_hooks"),$r=xe(require("path")),Tr=require("stream");var yr=require("child_process"),_i=["PATH","HOME","NODE_ENV","TMPDIR","LANG"];function wi(){let r={};for(let e of _i){let t=process.env[e];t!==void 0&&(r[e]=t)}return r}var Gt=class{constructor(e){this.terminated=!1;this.stderrTail="";this.child=(0,yr.fork)(e,[],{stdio:["ignore","ignore","pipe","ipc"],env:wi(),serialization:"advanced"}),this.child.stderr?.on("data",t=>{this.stderrTail=(this.stderrTail+t.toString("utf8")).slice(-8192)})}get stderr(){return this.stderrTail}get pid(){return this.child.pid}on(e,t){return this.child.on(e,t),this}off(e,t){return this.child.off(e,t),this}postMessage(e){if(!this.child.connected)throw new Error("Executor runner IPC is closed");this.child.send(e)}terminate(){if(this.terminated)return;this.terminated=!0;try{this.child.disconnect()}catch{}try{this.child.kill("SIGTERM")}catch{}setTimeout(()=>{if(!(this.child.exitCode!==null||this.child.signalCode!==null))try{this.child.kill("SIGKILL")}catch{}},250).unref?.()}};var he=class extends Error{constructor(t=0,n,i){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,...i}}},ye=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}}},L=class extends Error{constructor(t,n,i,o){super(t);this.statusCode=n;this.errorCode=i;this.name=this.constructor.name,this.details=o}},P=class extends L{constructor(e,t,n){super(e,t,`HTTP_${t}`,n)}},ut=class extends L{constructor(e,t){super(e,400,"BUSINESS_LOGIC_ERROR",t)}},dt=class extends L{constructor(e,t){super(e,422,"VALIDATION_ERROR",t)}},ft=class extends L{constructor(e,t){super(t?`${e} with identifier '${t}' not found`:`${e} not found`,404,"RESOURCE_NOT_FOUND",{resource:e,identifier:t})}},pt=class extends L{constructor(e,t,n){super(`${e} with ${t} '${n}' already exists`,409,"DUPLICATE_RESOURCE",{resource:e,field:t,value:n})}},gt=class extends L{constructor(e="Authentication failed",t){super(e,401,"AUTHENTICATION_ERROR",t)}},ht=class extends L{constructor(e="Insufficient permissions",t){super(e,403,"AUTHORIZATION_ERROR",t)}},yt=class extends L{constructor(){super("Token has expired",401,"TOKEN_EXPIRED")}},mt=class extends L{constructor(){super("Invalid token provided",401,"INVALID_TOKEN")}},Le=class extends L{constructor(e,t){super(e,500,"DATABASE_ERROR",t)}},bt=class extends L{constructor(e,t,n){super(`External service '${e}' error: ${t}`,502,"EXTERNAL_SERVICE_ERROR",{service:e,details:n})}},_t=class extends L{constructor(e){super(`Service '${e}' is currently unavailable`,503,"SERVICE_UNAVAILABLE",{service:e})}},wt=class extends L{constructor(e,t){super(e,400,"SCHEMA_ERROR",t)}},$t=class extends L{constructor(e,t){super(e,500,"CONFIGURATION_ERROR",t)}},Tt=class extends L{constructor(e,t){super(e,400,"FILE_UPLOAD_ERROR",t)}},St=class extends L{constructor(e="File not found"){super(e,404,"FILE_NOT_FOUND")}},Ct=class extends L{constructor(e,t){super("File size exceeded",413,"FILE_SIZE_EXCEEDED",{maxSize:e,actualSize:t})}};var Fe=class{static createException(e,t,n,i,o){if(e?.includes("$throw"))switch(e){case"$throw.http":return new P(n||"Error",t||500,o);case"$throw.businessLogic":return new ut(n||"Bad request",o);case"$throw.validation":return new dt(n||"Validation failed",o);case"$throw.notFound":return new ft(o?.resource||n||"Resource",o?.identifier);case"$throw.duplicate":return new pt(o?.resource||n||"Resource",o?.field||"field",o?.value||"value");case"$throw.unauthorized":return new gt(n||"Unauthorized");case"$throw.forbidden":return new ht(n||"Forbidden");case"$throw.tokenExpired":return new yt;case"$throw.invalidToken":return new mt;case"$throw.database":return new Le(n||"Database error",o);case"$throw.dbQuery":return new Le(n||"Query error",o);case"$throw.externalService":return new bt(n||"Service",n||"Error",o);case"$throw.serviceUnavailable":return new _t(n||"Service");case"$throw.rateLimit":return new P(n||"Rate limit exceeded",429);case"$throw.scriptError":return new ye(n||"Script error",i,o);case"$throw.scriptTimeout":return new he(o?.timeout||5e3,i);case"$throw.schema":return new wt(n||"Schema error",o);case"$throw.config":return new $t(n||"Configuration error",o);case"$throw.fileUpload":return new Tt(n||"File upload error",o);case"$throw.fileNotFound":return new St(n||"File not found");case"$throw.fileSizeExceeded":return new Ct(o?.maxSize||"unknown",o?.actualSize||"unknown");case"$throw.400":return new P(n||"Bad request",400,o);case"$throw.401":return new P(n||"Authentication required",401,o);case"$throw.403":return new P(n||"Insufficient permissions",403,o);case"$throw.404":return new P(n||"Not found",404,o);case"$throw.409":return new P(n||"Conflict",409,o);case"$throw.422":return new P(n||"Validation failed",422,o);case"$throw.429":return new P(n||"Rate limit exceeded",429,o);case"$throw.500":return new P(n||"Internal server error",500,o);case"$throw.503":return new P(n||"Service unavailable",503,o);default:return new ye(n||"Unknown error",i)}if(t)switch(t){case 400:return new P(n||"Bad request",400,o);case 401:return new P(n||"Authentication required",401,o);case 403:return new P(n||"Insufficient permissions",403,o);case 404:return new P(n||"Not found",404,o);case 409:return new P(n||"Conflict",409,o);case 422:return new P(n||"Validation failed",422,o);case 429:return new P(n||"Rate limit exceeded",429,o);case 500:return new P(n||"Internal server error",500,o);case 503:return new P(n||"Service unavailable",503,o);default:return new ye(n||"Unknown error",i,o)}return new ye(n||"Unknown error",i,o)}};var me=xe(require("os")),De=xe(require("fs"));function kt(){try{let r=De.readFileSync("/sys/fs/cgroup/memory.max","utf8").trim();if(r!=="max"){let e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<me.totalmem())return e}}catch{}try{let r=De.readFileSync("/sys/fs/cgroup/memory/memory.limit_in_bytes","utf8").trim(),e=parseInt(r,10);if(Number.isFinite(e)&&e>0&&e<me.totalmem())return e}catch{}return me.totalmem()}function En(){let r=me.availableParallelism?.()||me.cpus()?.length||1;try{let e=De.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(De.readFileSync("/sys/fs/cgroup/cpu/cpu.cfs_quota_us","utf8").trim(),10),t=parseInt(De.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 $i=.25,Nn=128,Ti=2,Si=4,Ci=6,ki=8,Ri=2048,xi=40,Fi=128,vi=32;function Ii(r){let e=Math.trunc(Number(r));if(!(!Number.isFinite(e)||e<1))return Math.min(Nn,e)}function Ni(r){let e=Math.trunc(Number(r));return!Number.isFinite(e)||e<1?Ci:Math.min(ki,e)}function mr(r){return 2**Math.ceil(Math.log2(Math.max(1,r)))}function Mn(r){let e=Math.max(1,Math.trunc(r.logicalCpuCount)||1),t=Math.max(1,r.totalMemoryBytes/(1024*1024)),n=Math.min(Fi,Math.max(xi,Math.round(t/vi))),i=t*$i,o=Math.max(1,Math.floor(i/n)),s=Math.max(1,Math.min(e,2,o)),a=Math.max(1,Math.floor(i/(s*n))),u=Math.min(Nn,mr(e*Ti)),c=Math.min(Nn,mr(e*Si)),d=Math.max(u,Math.min(c,a)),l=Ii(r.maxLanesPerRunner)??d,f=t<Ri?1:l,p=Math.max(1,Math.min(f,a)),y=Ni(r.tasksPerIsolate),g=p*y;return{maxConcurrentWorkers:s,isolateMemoryLimitMb:n,tasksPerWorkerCap:g,isolatePoolSize:p,tasksPerIsolate:y}}function Yt(){return Mn({logicalCpuCount:En(),totalMemoryBytes:kt()})}var Wi=$r.join(__dirname,"execution/worker.js"),Ki=1e3,On=new wr.AsyncLocalStorage;function Sr(){return On.getStore()}function Cr(r,e){return On.run(r,e)}var Rt=class{constructor(e,t,n,i,o,s,a,u=6e4){this.scriptPath=o;this.onCrash=s;this.onRotate=a;this.entries=[];this.waiting=[];this.cachedMemoryOk=!0;this.lastMemoryCheckMs=0;this.memorySampleIntervalMs=200;this.destroying=!1;this.entryCounter=0;this.max=e,this.effectiveMemory=t,this.rssCeiling=n,this.tasksCap=i,this.drainTimeoutMs=u;for(let c=0;c<e;c++)this.spawnEntry()}getEntries(){return this.entries}spawnEntry(){let e=new Gt(this.scriptPath),t={id:++this.entryCounter,worker:e,tasks:new Map,reservations:0,draining:!1,spawnedAt:Date.now()};return e.on("message",n=>{let i=t.tasks.get(n.id);i&&(n.type==="taskReleased"?i.onRelease?.():n.type==="result"||n.type==="taskCancelled"?(typeof n.heapRatio=="number"&&(t.lastHeapRatio=n.heapRatio),typeof n.runnerRssBytes=="number"&&(t.lastRssBytes=n.runnerRssBytes),n.contextStats&&(t.contextStats=n.contextStats),i.onResult(n.type==="taskCancelled"?{type:"result",id:n.id,success:!1,taskCancelled:!0,error:{message:"Task cancelled",code:"ERR_TASK_CANCELLED"}}:n),!t.draining&&typeof n.heapRatio=="number"&&n.heapRatio>=.8&&this.rotateEntry(t,`heap=${Math.round(n.heapRatio*100)}%`)):i.onIoCall(n))}),e.on("exit",(n,i)=>{let o=t.draining,s=this.destroying,a={entryId:t.id,pid:t.worker.pid,exitCode:n,exitSignal:i??null,lastError:t.lastError||t.worker.stderr||void 0,terminationReason:t.terminationReason,lastHeapRatio:t.lastHeapRatio,lastRssBytes:t.lastRssBytes,activeTasks:[...t.tasks.values()].map(c=>c.diagnostics)};t.drainTimeout&&(clearTimeout(t.drainTimeout),t.drainTimeout=void 0);for(let[,c]of t.tasks)c.abortController.abort(),c.onResult({type:"result",success:!1,error:{message:s?"Worker terminated":t.lastError?`Worker crashed: ${t.lastError}`:"Worker crashed",code:s?void 0:"ERR_EXECUTOR_RUNNER_LOST",details:s?void 0:{outcome:"unknown_outcome",retryable:!1}}});t.tasks.clear();let u=this.entries.indexOf(t);u!==-1&&this.entries.splice(u,1),!o&&!s&&(this.onCrash?.(a),this.entries.length<this.max&&this.spawnEntry()),this.drainWaiting()}),e.on("error",n=>{t.lastError=n.message}),this.entries.push(t),t}rotateEntry(e,t){if(e.draining)return;e.draining=!0;let n=Date.now()-e.spawnedAt;if(this.onRotate&&this.onRotate({reason:t,ageMs:n}),this.spawnEntry(),e.tasks.size===0){e.worker.terminate();return}e.drainTimeout=setTimeout(()=>{e.drainTimeout=void 0,e.worker.terminate()},this.drainTimeoutMs)}isMemoryAvailable(){let e=Date.now();return e-this.lastMemoryCheckMs>=this.memorySampleIntervalMs&&(this.cachedMemoryOk=process.memoryUsage().rss/this.effectiveMemory<this.rssCeiling,this.lastMemoryCheckMs=e),this.cachedMemoryOk}findLeastBusy(){let e=null;for(let t of this.entries){if(t.draining)continue;let n=t.tasks.size+t.reservations;n<this.tasksCap&&(!e||n<e.tasks.size+e.reservations)&&(e=t)}return e}dispatch(){let e=this.findLeastBusy();return e&&(e.tasks.size+e.reservations===0||this.isMemoryAvailable())?(e.reservations++,Promise.resolve(e)):new Promise(t=>this.waiting.push(t))}registerTask(e,t,n){e.reservations=Math.max(0,e.reservations-1),e.tasks.set(t,n)}releaseReservation(e){e.reservations=Math.max(0,e.reservations-1),this.drainWaiting()}unregisterTask(e,t){e.tasks.delete(t),e.draining&&e.tasks.size===0&&(e.drainTimeout&&(clearTimeout(e.drainTimeout),e.drainTimeout=void 0),e.worker.terminate()),this.drainWaiting()}drainWaiting(){for(;this.waiting.length>0;){let e=this.findLeastBusy();if(e&&(e.tasks.size+e.reservations===0||this.isMemoryAvailable()))e.reservations++,this.waiting.shift()(e);else break}}terminateEntry(e,t="host_requested"){e.terminationReason=t,e.worker.terminate()}resize(e){for(this.max=Math.max(1,e);this.entries.length<this.max;)this.spawnEntry()}getMax(){return this.max}getWaitingCount(){return this.waiting.length}getTotalActiveTasks(){let e=0;for(let t of this.entries)e+=t.tasks.size;return e}getMetrics(){return{max:this.max,activeTasks:this.getTotalActiveTasks(),waitingTasks:this.waiting.length,workers:this.entries.map(e=>({id:e.id,pid:e.worker.pid,activeTasks:e.tasks.size,reservations:e.reservations,draining:e.draining,ageMs:Date.now()-e.spawnedAt,lastHeapRatio:e.lastHeapRatio??0,lastRssBytes:e.lastRssBytes??0,contextStats:e.contextStats??{}}))}}destroyAll(){this.destroying=!0;for(let e of this.entries)e.worker.terminate();this.entries.length=0,this.waiting.length=0}},_r=new Set(["$helpers","$cache","$transaction","$repos","$req","$res","$socket","$storage","$logs","$throw","$trigger","$pkgs","$streams","$debug"]);function An(r){if(r===void 0)return JSON.stringify({__e:"u"});try{return JSON.stringify({__e:"v",d:r},(e,t)=>typeof t=="bigint"?t.toString():t)}catch{return JSON.stringify({__e:"v",d:{__serializationError:!0,message:"Result is not JSON-serializable"}})}}var We=class r{constructor(e){this.logger=new Ht(r.name);this.effectiveMemory=kt();this.prevCpuUsage=process.cpuUsage();this.prevCpuTime=process.hrtime.bigint();this.pressureTicks=0;this.recoveryTicks=0;this.taskCounter=0;this.taskDoneTotal=0;this.taskErrorTotal=0;this.taskTimeoutTotal=0;this.rotationsTotal=0;this.crashesTotal=0;this.responseStreams=new Map;this.taskCancellers=new Map;this.taskDurationsMs=[];this.queueWaitDurationsMs=[];this.runtimeCallbackCounter=0;this.packageCacheService=e.packageCacheService,this.onExecutionFinished=e.onExecutionFinished,this.packageCdnLoaderService=e.packageCdnLoaderService,this.isolationTuning=e.tuning??Yt(),this.ceiling=this.isolationTuning.maxConcurrentWorkers,this.pool=new Rt(this.isolationTuning.maxConcurrentWorkers,this.effectiveMemory,.9,this.isolationTuning.tasksPerWorkerCap,Wi,t=>{this.crashesTotal++;let n={event:"executor_worker_crashed",occurredAt:new Date().toISOString(),...t};this.logger.warn(n);try{e.onExecutorWorkerCrash?.(n)}catch(i){this.logger.warn({event:"executor_worker_crash_report_failed",error:i instanceof Error?i.message:String(i)})}},({reason:t,ageMs:n})=>{this.rotationsTotal++,this.logger.log(`Worker rotation: reason=${t} age=${Math.round(n/1e3)}s`)}),this.logger.log(`Worker pool started: ${this.isolationTuning.maxConcurrentWorkers} workers, ${this.isolationTuning.isolateMemoryLimitMb}MB per isolate, ${this.isolationTuning.isolatePoolSize} isolates/worker, ${this.isolationTuning.tasksPerIsolate} tasks/isolate, ${this.isolationTuning.tasksPerWorkerCap} tasks/worker cap`),this.tuneTimer=setInterval(()=>this.autoTune(),3e4)}onDestroy(){this.tuneTimer&&clearInterval(this.tuneTimer),this.pool.destroyAll()}autoTune(){let t=process.memoryUsage().rss/this.effectiveMemory,n=process.hrtime.bigint(),i=process.cpuUsage(this.prevCpuUsage),o=Number(n-this.prevCpuTime)/1e3,s=o>0?(i.user+i.system)/o:0;this.prevCpuUsage=process.cpuUsage(),this.prevCpuTime=n;let a=this.pool.getMax(),u=this.pool.getWaitingCount(),c=t>.85||s>.7,d=t<.7&&s<.5,l=u>0,f=a;c?(this.recoveryTicks=0,this.pressureTicks++,this.pressureTicks>=3&&(f=Math.max(1,a-1))):d&&l?(this.pressureTicks=0,this.recoveryTicks++,this.recoveryTicks>=3&&(f=Math.min(this.ceiling,a+2))):(this.pressureTicks=0,this.recoveryTicks=0),f!==a&&(this.pool.resize(f),this.pressureTicks=0,this.recoveryTicks=0,this.logger.log(`Worker pool adjusted: ${a} -> ${f} (rss=${Math.round(t*100)}% cpu=${Math.round(s*100)}% queue=${u})`))}createSnapshot(e){let t={$body:e.$body,$query:e.$query,$params:e.$params,$user:e.$user,$share:e.$share,$data:e.$data,$api:{request:e.$api?.request},$uploadedFile:e.$uploadedFile,$req:this.cloneSnapshotValue(e.$req)};for(let i of Object.keys(e)){if(!i.startsWith("$")||i in t||_r.has(i))continue;let o=this.cloneSnapshotValue(e[i]);o!==void 0&&(t[i]=o)}let n=e.$flow;if(n!=null)try{t.$flow=this.cloneSnapshotValue(n)??{}}catch{t.$flow={}}return t}cloneSnapshotValue(e){if(typeof e!="function")try{return JSON.parse(JSON.stringify(e,(t,n)=>{if(typeof n=="bigint")return String(n);if(typeof n!="function")return n}))}catch{return}}mergeCtxChanges(e,t){if(t){t.$body!==void 0&&(e.$body=t.$body),t.$query!==void 0&&(e.$query=t.$query),t.$params!==void 0&&(e.$params=t.$params),t.$data!==void 0&&(e.$data=t.$data),t.$error!==void 0&&(e.$error=t.$error),t.$statusCode!==void 0&&(e.$statusCode=t.$statusCode),t.$share!==void 0&&(e.$share=t.$share),t.$api!==void 0&&e.$api&&(t.$api.error&&(e.$api.error=t.$api.error),t.$api.response&&(e.$api.response=t.$api.response)),t.$flow!==void 0&&t.$flow!==null&&typeof t.$flow=="object"&&e.$flow!=null&&typeof e.$flow=="object"&&Object.assign(e.$flow,t.$flow);for(let[n,i]of Object.entries(t))n.startsWith("$")&&(n==="$body"||n==="$query"||n==="$params"||n==="$data"||n==="$error"||n==="$statusCode"||n==="$share"||n==="$api"||n==="$flow"||_r.has(n)||n==="$env"||(e[n]=i));delete e.$pkgs}}spawnAndExecute(e,t,n,i,o){return(async()=>{let s=Date.now(),a=await this.pool.dispatch();if(this.recordQueueWait(Date.now()-s),o?.aborted){this.pool.releaseReservation(a);let d=new Error("Execution aborted after client disconnect");return d.code="ERR_EXECUTION_ABORTED",d.isAbort=!0,Promise.reject(d)}let u=`t_${++this.taskCounter}`,c=Date.now();return new Promise((d,l)=>{let f=!1,p=new AbortController,y=!1,g,h=()=>{let _=new Error("Execution aborted after client disconnect");return _.code="ERR_EXECUTION_ABORTED",_.isAbort=!0,_},m=()=>{let _=new Error(`Script execution timed out after ${i}ms`);return _.code="ERR_SCRIPT_EXECUTION_TIMEOUT",_.isTimeout=!0,_},b,w=_=>{if(!(f||y)){y=!0,g=_,p.abort(),this.cleanupResponseStream(u,_);try{a.worker.postMessage({type:"cancelTask",id:u})}catch{}b=setTimeout(()=>{f||(f=!0,clearTimeout(x),k(),this.taskCancellers.delete(u),this.pool.unregisterTask(a,u),this.taskErrorTotal++,this.pool.terminateEntry(a,_.isTimeout?"timeout_cancel_grace":"client_abort_cancel_grace"),_.details={..._.details??{},outcome:"unknown_outcome",retryable:!1,escalation:"runner_terminated_after_cancel_grace"},l(_))},Ki),b.unref?.()}},C=()=>w(h());this.taskCancellers.set(u,C);let T=()=>C(),k=()=>{o?.removeEventListener("abort",T)};o&&o.addEventListener("abort",T,{once:!0});let x=setTimeout(()=>{f||(this.taskTimeoutTotal++,w(m()))},i);this.pool.registerTask(a,u,{abortController:p,diagnostics:this.createWorkerTaskDiagnostics(e,t,n,i),onResult:_=>{if(!f){try{this.onExecutionFinished?.({diagnostics:this.createWorkerTaskDiagnostics(e,t,n,i),logs:Array.isArray(_.diagnosticLogs?.logs)?_.diagnosticLogs.logs:Array.isArray(_.ctxChanges?.$share?.$logs)?_.ctxChanges.$share.$logs:[],logsTruncated:_.diagnosticLogs?.truncated===!0||_.ctxChanges?.$share?.$logsTruncated===!0,statusCode:_.error?.statusCode??_.ctxChanges?.$statusCode,error:_.success||y?void 0:_.error})}catch(v){this.logger.error("Executor diagnostic callback failed",v)}if(_.taskCancelled===!0&&this.pool.unregisterTask(a,u),f=!0,clearTimeout(x),b&&clearTimeout(b),this.taskCancellers.delete(u),k(),this.cleanupResponseStream(u),this.recordTaskDuration(Date.now()-c),y){p.abort(),this.taskErrorTotal++,l(g??h());return}if(_.success){this.taskDoneTotal++;let v={value:_.value,valueAbsent:_.valueAbsent===!0,ctxChanges:_.ctxChanges};_.shortCircuit&&(v.shortCircuit=!0),d(v)}else{this.taskErrorTotal++;let v=new Error(_.error?.message||"Handler execution failed");v.statusCode=_.error?.statusCode,v.code=_.error?.code,v.errorCode=_.error?.code,v.details=_.error?.details,_.error?.stack&&(v.stack=_.error.stack),_.ctxChanges&&(v.ctxChanges=_.ctxChanges),this.cleanupResponseStream(u,v),l(v)}}},onRelease:()=>{this.pool.unregisterTask(a,u)},onIoCall:_=>{if(f)return;if(_.type==="executionError"){try{this.onExecutionFinished?.({diagnostics:{...this.createWorkerTaskDiagnostics(e,t,n,i),scriptBlocks:[{type:_.sourceKind,scriptId:_.scriptId==null?void 0:String(_.scriptId)}]},logs:[],logsTruncated:!1,error:_.error})}catch(j){this.logger.error("Executor diagnostic callback failed",j)}return}let v=p.signal;_.type==="repoCall"?this.handleIoCall(()=>this.execRepoCall(_,n),a.worker,_.callId,v):_.type==="transactionCall"?this.handleIoCall(()=>this.execTransactionCall(_,n,a.worker),a.worker,_.callId,v):_.type==="helpersCall"?this.handleIoCall(()=>this.execHelpersCall(_,n),a.worker,_.callId,v):_.type==="socketCall"?this.handleIoCall(()=>this.execSocketCall(_,n),a.worker,_.callId,v):_.type==="cacheCall"?this.handleIoCall(()=>this.execCacheCall(_,n),a.worker,_.callId,v):_.type==="storageCall"?this.handleIoCall(()=>this.execStorageCall(_,n,a.worker),a.worker,_.callId,v):_.type==="dispatchCall"?this.handleIoCall(()=>this.execDispatchCall(_,n),a.worker,_.callId,v):_.type==="resCall"&&this.handleIoCall(()=>this.execResCall(_,n),a.worker,_.callId,v)}}),a.worker.postMessage({type:e,id:u,...t}),o?.aborted&&C()})})()}postAbortedCallError(e,t){try{e.postMessage({type:"callError",callId:t,error:JSON.stringify({__userThrow:!0,message:"Execution aborted after client disconnect",code:"ERR_EXECUTION_ABORTED"})})}catch{}}async handleIoCall(e,t,n,i){if(i?.aborted){this.postAbortedCallError(t,n);return}try{let o=await(i?On.run(i,e):e());if(i?.aborted){this.postAbortedCallError(t,n);return}try{t.postMessage({type:"callResult",callId:n,result:An(o)})}catch{}}catch(o){if(i?.aborted){this.postAbortedCallError(t,n);return}try{let s={__userThrow:!0,message:o.message,statusCode:o.statusCode,code:o.errorCode??o.code,errorPath:o.errorPath,details:o.details,messages:o.messages};t.postMessage({type:"callError",callId:n,error:JSON.stringify(s)})}catch{}}}async execRepoCall(e,t){let n=JSON.parse(e.argsJson),i=e.access==="secure"?t?.$repos?.secure?.[e.table]:t?.$repos?.[e.table];if(!i||typeof i[e.method]!="function"){let o=e.access==="secure"?"secure.":"";throw new Error(`Repo method not found: ${o}${e.table}.${e.method}`)}return i[e.method](...n)}async execTransactionCall(e,t,n){let o=JSON.parse(e.argsJson||"[]").map(a=>a?.__fnRef&&typeof a.__fnRef=="string"?(...u)=>this.invokeRuntimeCallback(n,e.id,a.__fnRef,u):a)[0];if(typeof o!="function")throw new Error("$transaction.run requires a callback");let s=t?.$transaction?.run;if(typeof s!="function")throw new Error("$transaction is not available");return await s.call(t.$transaction,o)}async execHelpersCall(e,t){let n=JSON.parse(e.argsJson),i=e.name.split("."),o=t?.$helpers;for(let s of i)o=o?.[s];if(typeof o!="function")throw new Error(`Helper not found: ${e.name}`);return o(...n)}async execSocketCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$socket?.[e.method];if(typeof i!="function")throw new Error(`Socket method not found: ${e.method}`);return i(...n)}async execCacheCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$cache?.[e.method];if(typeof i!="function")throw new Error(`Cache method not found: ${e.method}`);return i(...n)}async execStorageCall(e,t,n){let i=this.parseStorageArgs(e.argsJson,n,e.id),o=t?.$storage?.[e.method];if(typeof o!="function")throw new Error(`Storage method not found: ${e.method}`);return o(...i)}parseStorageArgs(e,t,n){return JSON.parse(e,(i,o)=>{if(o?.__fnRef&&typeof o.__fnRef=="string"){let s=o.__fnRef;return(...a)=>this.invokeRuntimeCallback(t,n,s,a)}return o})}invokeRuntimeCallback(e,t,n,i){let o=`rtcb_${++this.runtimeCallbackCounter}`;return new Promise((s,a)=>{let u=setTimeout(()=>{d(),a(new Error(`Runtime callback timed out: ${n}`))},3e4),c=l=>{if(!(l?.type!=="runtimeCallbackResult"||l.callId!==o)){if(d(),l.error){let f=new Error(String(l.error));try{let p=JSON.parse(String(l.error));p?.__userThrow&&(f.message=String(p.message??f.message),f.statusCode=p.statusCode,f.code=p.code??(Number.isInteger(p.statusCode)?`HTTP_${p.statusCode}`:void 0),f.errorCode=f.code,f.errorPath=p.errorPath,f.details=p.details,f.messages=p.messages)}catch{}a(f);return}s(l.value)}},d=()=>{clearTimeout(u),e.off("message",c)};e.on("message",c),e.postMessage({type:"invokeRuntimeCallback",id:t,callId:o,callbackId:n,argsJson:JSON.stringify(i)})})}async execDispatchCall(e,t){let n=JSON.parse(e.argsJson),i=t?.$trigger;if(typeof i!="function")throw new Error("$trigger is not available");return i(...n)}cancelTask(e){this.taskCancellers.get(e)?.()}async execResCall(e,t){if(e.method==="streamStart"){let s=JSON.parse(e.argsJson||"[]")[1]||{},a=t?.$res?.stream;if(typeof a!="function")throw new Error("Response method not found: stream");let u=new Tr.PassThrough,c={stream:u};this.responseStreams.set(e.id,c);let d=t?.$res;if(d&&typeof d.once=="function"){let f=()=>{d.writableEnded!==!0&&this.cancelTask(e.id)};d.once("close",f),c.closeCleanup=()=>{typeof d.off=="function"?d.off("close",f):typeof d.removeListener=="function"&&d.removeListener("close",f)}}let l=a.call(t.$res,u,s);return l&&typeof l.catch=="function"&&l.catch(()=>{}),!0}if(e.method==="streamChunk"){let o=this.responseStreams.get(e.id);if(!o)throw new Error(`Response stream not found: ${e.id}`);let s=Buffer.from(e.chunk||"","base64");return o.stream.write(s)||await new Promise((a,u)=>{let c=()=>{l(),a()},d=f=>{l(),u(f)},l=()=>{o.stream.off("drain",c),o.stream.off("error",d)};o.stream.once("drain",c),o.stream.once("error",d)}),!0}if(e.method==="streamEnd"){let o=this.responseStreams.get(e.id);return o&&(o.closeCleanup?.(),o.stream.end(),this.responseStreams.delete(e.id)),!0}if(e.method==="streamError"){let o=this.responseStreams.get(e.id);if(o){o.closeCleanup?.();let s=e.error?.message||"Response stream failed";o.stream.destroy(new Error(s)),this.responseStreams.delete(e.id)}return!0}let n=JSON.parse(e.argsJson||"[]"),i=t?.$res?.[e.method];if(typeof i!="function")throw new Error(`Response method not found: ${e.method}`);return i.apply(t.$res,n)}cleanupResponseStream(e,t){let n=this.responseStreams.get(e);n&&(this.responseStreams.delete(e),n.closeCleanup?.(),t?n.stream.destroy(t):n.stream.end())}toWorkerCodeBlock(e){return{code:e.code,sourceCode:e.sourceCode,scriptLanguage:e.scriptLanguage,scriptId:e.scriptId,type:e.type}}createWorkerTaskDiagnostics(e,t,n,i){let o=n?.$api?.request?.correlationId,s=Array.isArray(t.codeBlocks)?t.codeBlocks.map(a=>({type:a?.type==="preHook"||a?.type==="postHook"||a?.type==="handler"?a.type:"run",...a?.scriptId!==void 0&&a?.scriptId!==null?{scriptId:String(a.scriptId)}:{}})):[{type:typeof t.sourceKind=="string"?t.sourceKind:"run",...t.scriptId==null?{}:{scriptId:String(t.scriptId)}}];return{...typeof o=="string"&&o?{correlationId:o}:{},timeoutMs:i,isolateMemoryLimitMb:Number(t.memoryLimitMb||0),isolatePoolSize:Number(t.isolatePoolSize||0),tasksPerIsolate:Number(t.tasksPerIsolate||0),scriptBlocks:s}}async run(e,t,n,i={}){let o=Math.max(1,Math.trunc(Number(n)||3e4)),s=await this.packageCacheService.getPackages(),a=this.packageCdnLoaderService.getPackageSources(s),u=this.createSnapshot(t),c;try{let d={code:e,scriptId:i.scriptId,sourceKind:i.sourceKind,sourceCode:i.sourceCode??e,pkgSources:a,snapshot:u,timeoutMs:o,memoryLimitMb:this.isolationTuning.isolateMemoryLimitMb,isolatePoolSize:this.isolationTuning.isolatePoolSize,tasksPerIsolate:this.isolationTuning.tasksPerIsolate};c=await this.spawnAndExecute("execute",d,t,o)}catch(d){let l=d;if(l.code==="ERR_EXECUTION_ABORTED"||l.isAbort)throw l;if(l.isTimeout||l.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")throw new he(o,e,l.details);l.code&&l.details&&(l.details.executorCode=l.code);let f=l.statusCode??(typeof l.status=="number"?l.status:void 0);throw Fe.createException(l.errorPath,f,l.message||"Unknown error",e,l.details||{})}return this.mergeCtxChanges(t,c.ctxChanges||{}),c.valueAbsent?void 0:c.value}async runBatch(e,t,n,i={}){let o=Math.max(1,Math.trunc(Number(n)||3e4)),s=await this.packageCacheService.getPackages(),a=this.packageCdnLoaderService.getPackageSources(s),u=this.createSnapshot(t),c;try{let l={codeBlocks:e.map(f=>this.toWorkerCodeBlock(f)),pkgSources:a,snapshot:u,timeoutMs:o,memoryLimitMb:this.isolationTuning.isolateMemoryLimitMb,isolatePoolSize:this.isolationTuning.isolatePoolSize,tasksPerIsolate:this.isolationTuning.tasksPerIsolate};c=await this.spawnAndExecute("executeBatch",l,t,o,i.signal)}catch(d){let l=d;if(l.ctxChanges&&this.mergeCtxChanges(t,l.ctxChanges),l.code==="ERR_EXECUTION_ABORTED"||l.isAbort)throw l;if(l.isTimeout||l.code==="ERR_SCRIPT_EXECUTION_TIMEOUT")throw new he(o,"(batch execution)",l.details);l.code&&l.details&&(l.details.executorCode=l.code);let f=l.statusCode??(typeof l.status=="number"?l.status:void 0);throw Fe.createException(l.errorPath,f,l.message||"Unknown error","(batch execution)",l.details||{})}return this.mergeCtxChanges(t,c.ctxChanges||{}),{value:c.valueAbsent?void 0:c.value,shortCircuit:c.shortCircuit===!0}}recordTaskDuration(e){this.taskDurationsMs.push(e),this.taskDurationsMs.length>512&&this.taskDurationsMs.shift()}recordQueueWait(e){this.queueWaitDurationsMs.push(e),this.queueWaitDurationsMs.length>512&&this.queueWaitDurationsMs.shift()}percentile(e,t){if(e.length===0)return 0;let n=[...e].sort((o,s)=>o-s),i=Math.min(n.length-1,Math.max(0,Math.ceil(t/100*n.length)-1));return n[i]}getMetrics(){let e=this.pool.getMetrics(),t=this.taskDurationsMs,n=t.length===0?0:t.reduce((s,a)=>s+a,0)/t.length,i=this.queueWaitDurationsMs,o=i.length===0?0:i.reduce((s,a)=>s+a,0)/i.length;return{tuning:this.isolationTuning,pool:e,taskDoneTotal:this.taskDoneTotal,taskErrorTotal:this.taskErrorTotal,taskTimeoutTotal:this.taskTimeoutTotal,rotationsTotal:this.rotationsTotal,crashesTotal:this.crashesTotal,avgTaskMs:n,p95TaskMs:this.percentile(t,95),p99TaskMs:this.percentile(t,99),avgQueueWaitMs:o,p95QueueWaitMs:this.percentile(i,95),p99QueueWaitMs:this.percentile(i,99),maxHeapRatio:Math.max(0,...e.workers.map(s=>s.lastHeapRatio||0)),runnerRssBytes:e.workers.reduce((s,a)=>s+(a.lastRssBytes||0),0)}}};var ve=xe(require("typescript")),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 qi(r){return te.getLegacyField(r)}function Ui(r){return te.isScriptTable(r)}function Qi(r){return te.normalizeLanguage(r)}var Xt=class{getLegacyField(e){return xt[e]}isScriptTable(e){return e in xt}normalizeLanguage(e){return e==="javascript"?"javascript":"typescript"}compileSource(e,t){if(e==null||e==="")return null;let n=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,c={...t};return o&&(c.sourceCode=a??null),c.scriptLanguage=this.normalizeLanguage(u),c.compiledCode=this.compileSource(a,c.scriptLanguage),i&&i in c&&delete c[i],c}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(xt).find(n=>xt[n]in e);if(t){let n=e[xt[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=ve.default.transpileModule(e,{compilerOptions:{target:ve.default.ScriptTarget.ES2022,module:ve.default.ModuleKind.CommonJS,importsNotUsedAsValues:ve.default.ImportsNotUsedAsValues.Remove,sourceMap:!1,inlineSourceMap:!1,inlineSources:!1},reportDiagnostics:!0}),n=t.diagnostics?.find(i=>i.category===ve.default.DiagnosticCategory.Error);if(n)throw new Error(ve.default.flattenDiagnosticMessageText(n.messageText,`
2
2
  `));return t.outputText.trimEnd()}assertExecutableJavaScript(e){e&&new Function(`return (async () => {
3
3
  "use strict";
4
4
  ${e}
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@enfyra/kernel",
3
- "version": "1.1.63",
3
+ "version": "1.1.64",
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.1.63",
3
+ "version": "1.1.64",
4
4
  "description": "Closed-distribution Enfyra kernel runtime",
5
5
  "license": "Elastic-2.0",
6
6
  "packageManager": "yarn@4.17.0",