@enfyra/kernel 1.1.47 → 1.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/execution/worker.js +12 -37
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/package-metadata.json +1 -1
- package/package.json +1 -1
package/dist/execution/worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var W=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var G=W((De,z)=>{"use strict";var{fork:
|
|
1
|
+
"use strict";var W=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var G=W((De,z)=>{"use strict";var{fork:de}=require("child_process"),fe=require("path");function pe({workerDir:t,activeTaskContexts:e}){let s=new Map,r=new Map,n=new Map,o=null,c=0;function g(d){return Math.max(1,Math.trunc(Number(d)||3e4))}function f(d){for(let a of r.values())clearTimeout(a.timer),a.reject(d);r.clear()}function h(d){let a=typeof d=="string"?JSON.parse(d):d;if(a?.error)throw new Error(a.error);return a?.value}async function w(d){let a=e.get(d.taskId);if(!a)throw new Error(`Package callback context not found: ${d.taskId}`);let i=JSON.stringify(d.callbackId),p=JSON.stringify(d.argsJson||"[]"),_=await a.evalClosure(`return __invokeRuntimeCallback(${i}, ${p});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return h(_)}function b(){if(o&&o.connected)return o;let d=fe.join(t,"package-runtime.child.js"),a=de(d,[],{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",i=>{if(!i||!i.id)return;if(i.type==="pkgStreamChunk"){let _=n.get(i.id);if(!_)return;_.onChunk(Buffer.from(i.chunk||"","base64")).then(()=>{try{a.send({type:"pkgStreamAck",ackId:i.ackId})}catch{}}).catch(x=>{try{a.send({type:"pkgStreamError",ackId:i.ackId,error:{message:x.message,stack:x.stack}})}catch{}});return}if(i.type==="pkgCallbackCall"){w(i).then(_=>{try{a.send({type:"pkgCallbackResult",id:i.id,value:_})}catch{}}).catch(_=>{try{a.send({type:"pkgCallbackError",id:i.id,error:{message:_.message,stack:_.stack}})}catch{}});return}let p=r.get(i.id);if(p)if(clearTimeout(p.timer),r.delete(i.id),n.delete(i.id),i.ok)p.resolve(i.value);else{let _=new Error(i.error?.message||"Package runtime call failed");_.stack=i.error?.stack||_.stack,p.reject(_)}}),a.on("exit",(i,p)=>{o===a&&(o=null),f(new Error(`Package runtime exited${p?` with signal ${p}`:` with code ${i}`}`))}),a.on("error",i=>{o===a&&(o=null),f(i)}),a}function l(d){return new Promise((a,i)=>{let p=b(),_=`pkg_${++c}`,x=g(d.timeoutMs),$=setTimeout(()=>{r.delete(_),n.delete(_);try{p.kill()}catch{}i(new Error(`Package runtime call timed out after ${x}ms`))},x);r.set(_,{resolve:a,reject:i,timer:$});try{p.send({...d,id:_},R=>{R&&(clearTimeout($),r.delete(_),i(R))})}catch(R){clearTimeout($),r.delete(_),i(R)}})}function u(d,a,i,p=[],_=3e4){return new Promise((x,$)=>{let R=b(),S=`pkg_${++c}`,F=g(_),q=setTimeout(()=>{r.delete(S),n.delete(S);try{R.kill()}catch{}$(new Error(`Package runtime stream timed out after ${F}ms`))},F);r.set(S,{resolve:x,reject:$,timer:q}),n.set(S,{onChunk:i});try{R.send({op:"streamHandle",taskId:d,handleId:a,path:p,id:S,timeoutMs:F},L=>{L&&(clearTimeout(q),r.delete(S),n.delete(S),$(L))})}catch(L){clearTimeout(q),r.delete(S),n.delete(S),$(L)}})}function k(d){try{if(!o||!o.connected)return;o.send({...d,id:`pkg_${++c}`,fire:!0})}catch{}}function y(d){try{let a=b();if(!a.connected)return;a.send({op:"cancelTask",taskId:d,id:`pkg_${++c}`,fire:!0})}catch{}}async function v(d,a){let i=s.get(d);if(!i)throw new Error("Package context is not available");if(a.handleId)return l({op:a.kind==="get"?"handleGet":"handleCall",taskId:d,handleId:a.handleId,path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs});let p=i.get(a.packageName);if(!p)throw new Error(`Package "${a.packageName}" is not available`);return l({op:a.kind==="construct"?"construct":"call",taskId:d,packageName:a.packageName,package:{name:p.name,fileUrl:p.fileUrl},path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs})}function C(d,a){s.set(d,a)}function P(d){s.delete(d),k({op:"releaseTask",taskId:d})}function m(){if(o){try{o.kill()}catch{}o=null}}return{cleanupTaskPackages:P,cancelTask:y,executePackageRuntimeCall:v,setTaskPackages:C,streamPackageHandle:u,shutdownPackageRuntime:m}}z.exports={createPackageRuntimeBridge:pe}});var Z=W((Le,X)=>{"use strict";var _e=`
|
|
2
2
|
"use strict";
|
|
3
3
|
let $ctx = {};
|
|
4
4
|
let $pkgs = {};
|
|
@@ -245,11 +245,7 @@ async function __streamResponseFromLocalReadable(stream, options) {
|
|
|
245
245
|
const relayChunk = async (chunk, kind, text) => {
|
|
246
246
|
let output = chunk;
|
|
247
247
|
if (transform) {
|
|
248
|
-
const transformed = await transform(
|
|
249
|
-
text,
|
|
250
|
-
kind,
|
|
251
|
-
kind === 'chunk' ? __bytesToBase64(__streamChunkToBytes(chunk)) : '',
|
|
252
|
-
);
|
|
248
|
+
const transformed = await transform(text, kind);
|
|
253
249
|
if (transformed === null) return;
|
|
254
250
|
if (transformed !== undefined) output = String(transformed);
|
|
255
251
|
}
|
|
@@ -423,27 +419,6 @@ if (typeof TextEncoder === 'undefined') {
|
|
|
423
419
|
};
|
|
424
420
|
}
|
|
425
421
|
|
|
426
|
-
if (typeof atob === 'undefined') {
|
|
427
|
-
globalThis.atob = (input = '') => {
|
|
428
|
-
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
429
|
-
const source = String(input).replace(/=+$/, '');
|
|
430
|
-
let out = '';
|
|
431
|
-
let value = 0;
|
|
432
|
-
let bits = 0;
|
|
433
|
-
for (const char of source) {
|
|
434
|
-
const index = chars.indexOf(char);
|
|
435
|
-
if (index < 0) continue;
|
|
436
|
-
value = (value << 6) | index;
|
|
437
|
-
bits += 6;
|
|
438
|
-
if (bits >= 8) {
|
|
439
|
-
bits -= 8;
|
|
440
|
-
out += String.fromCharCode((value >> bits) & 0xff);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
return out;
|
|
444
|
-
};
|
|
445
|
-
}
|
|
446
|
-
|
|
447
422
|
if (typeof TextDecoder === 'undefined') {
|
|
448
423
|
globalThis.TextDecoder = class TextDecoder {
|
|
449
424
|
constructor() {
|
|
@@ -974,30 +949,30 @@ function __cleanupTask() {
|
|
|
974
949
|
__pendingRuntimeTasks = [];
|
|
975
950
|
return true;
|
|
976
951
|
}
|
|
977
|
-
`;function ge(t){return _e.replace("%%PKG_SETUP%%",t)}X.exports={buildSetupCode:ge}});var{parentPort:A}=require("worker_threads"),Q=require("fs"),{fileURLToPath:ye}=require("url"),{createPackageRuntimeBridge:he}=G(),{buildSetupCode:me}=Z(),D;try{D=require("isolated-vm")}catch(t){A.postMessage({type:"error",message:"isolated-vm not available: "+t.message}),process.exit(1)}var U=new Map,ne=0,E=new Map,O=new Map,I=he({workerDir:__dirname,activeTaskContexts:E}),ke=500,we=5e3,ve=32,Y=new WeakMap,ae=new WeakMap,se=new WeakMap,j={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function H(t){let e=O.get(t);return Math.max(1,Math.ceil((e??Date.now()+3e4)-Date.now()))}var M=null,be=0,ee=0,te=0;async function Pe(){let t=Date.now();if(t-ee<we)return te;if(ee=t,!M)return 0;let e=0;for(let s of M){let r=s?.isolate;if(!(!r||r.isDisposed))try{let n=await r.getHeapStatistics(),o=n.heap_size_limit||1,c=n.used_heap_size/o;c>e&&(e=c)}catch{}}return te=e,e}async function J(t){t.heapRatio=await Pe(),t.contextStats=xe(),A.postMessage(t)}function xe(){let t=0;if(M)for(let e of M)t+=e?.idleContexts?.length||0;return{...j,idle:t}}function oe(t,e){if(!M){let n=Math.max(1,Math.trunc(Number(e)||8));M=new Array(n).fill(null)}let s=be++%M.length,r=M[s];return(!r||!r.isolate||r.isolate.isDisposed)&&(r={isolate:new D.Isolate({memoryLimit:t}),idleContexts:[]},M[s]=r),r}async function T(t,e,s){let r=Y.get(t);r||(r=new Map,Y.set(t,r));let n=r.get(e);if(n)return n;let o;try{o=await t.compileScript(e,{filename:s})}catch(c){throw c&&typeof c=="object"&&(c.executionStage="compile"),c}if(r.set(e,o),r.size>ke){let c=r.keys().next().value;r.delete(c)}return o}A.on("message",async t=>{if(t.type==="execute")je(t).catch(async e=>{await J({type:"result",id:t.id,success:!1,error:{message:e.message,stack:e.stack}})});else if(t.type==="executeBatch")He(t).catch(async e=>{await J({type:"result",id:t.id,success:!1,error:{message:e.message,stack:e.stack}})});else if(t.type==="invokeRuntimeCallback")Se(t).catch(e=>{A.postMessage({type:"runtimeCallbackResult",callId:t.callId,error:e?.message||String(e)})});else if(t.type==="callResult"){let e=U.get(t.callId);e&&(U.delete(t.callId),e.resolve(t.result))}else if(t.type==="callError"){let e=U.get(t.callId);e&&(U.delete(t.callId),e.reject(new Error(t.error)))}else t.type==="cancelTask"&&I.cancelTask(t.id)});async function Se(t){let e=E.get(t.id);if(!e){A.postMessage({type:"runtimeCallbackResult",callId:t.callId,error:`Runtime callback context not found: ${t.id}`});return}let s=await e.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(t.callbackId)}, ${JSON.stringify(t.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),r=JSON.parse(s);A.postMessage({type:"runtimeCallbackResult",callId:t.callId,...r})}function N(t,e,s){return new Promise((r,n)=>{let o=`cb_${++ne}`;U.set(o,{resolve:r,reject:n}),A.postMessage({type:e,id:t,callId:o,...s})})}function Ce(t,e,s){A.postMessage({type:e,id:t,callId:`f_${++ne}`,...s})}async function $e(t,e){if(e?.method!=="stream")return N(t,"resCall",e);let s=JSON.parse(e.argsJson||"[]"),r=s[0],n=s[1]||{},o=r?.__pkgHandleArg;if(!o)return N(t,"resCall",e);let c=n.observer&&typeof n.observer=="object"?n.observer.__fnRef:null,
|
|
978
|
-
`),w=me(
|
|
979
|
-
`);for(let s of e){let r=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let n=r[1].trim();if(Oe.includes(n))continue;let c=parseInt(r[2])-Ne;if(!(c<=0))return{line:c,column:parseInt(r[3]),phase:n.replace(".js","")}}return null}function Ee(t,e,s){if(!t||!e)return;let r=String(t).split(/\r?\n/),n=Math.max(1,e-1),o=Math.min(r.length,e+1),c=String(o).length,
|
|
980
|
-
`)}function Ie(t,e){if(!(!t||!e)){if(e[t.phase])return e[t.phase];if(t.phase?.startsWith("preHook"))return e.preHook;if(t.phase?.startsWith("postHook"))return e.postHook}}function V(t,e){let s=Ae(t);if(s)return{message:s.message,statusCode:s.statusCode,errorPath:s.errorPath,details:s.details};let r=Je(t.stack),n=t.message||"Unknown error",o=r?`${n} (${r.phase}, line ${r.line})`:n,c=Ie(r,e),
|
|
952
|
+
`;function ge(t){return _e.replace("%%PKG_SETUP%%",t)}X.exports={buildSetupCode:ge}});var{parentPort:A}=require("worker_threads"),Q=require("fs"),{fileURLToPath:ye}=require("url"),{createPackageRuntimeBridge:he}=G(),{buildSetupCode:me}=Z(),D;try{D=require("isolated-vm")}catch(t){A.postMessage({type:"error",message:"isolated-vm not available: "+t.message}),process.exit(1)}var U=new Map,ne=0,E=new Map,O=new Map,I=he({workerDir:__dirname,activeTaskContexts:E}),ke=500,we=5e3,ve=32,Y=new WeakMap,ae=new WeakMap,se=new WeakMap,j={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function H(t){let e=O.get(t);return Math.max(1,Math.ceil((e??Date.now()+3e4)-Date.now()))}var M=null,be=0,ee=0,te=0;async function Pe(){let t=Date.now();if(t-ee<we)return te;if(ee=t,!M)return 0;let e=0;for(let s of M){let r=s?.isolate;if(!(!r||r.isDisposed))try{let n=await r.getHeapStatistics(),o=n.heap_size_limit||1,c=n.used_heap_size/o;c>e&&(e=c)}catch{}}return te=e,e}async function J(t){t.heapRatio=await Pe(),t.contextStats=xe(),A.postMessage(t)}function xe(){let t=0;if(M)for(let e of M)t+=e?.idleContexts?.length||0;return{...j,idle:t}}function oe(t,e){if(!M){let n=Math.max(1,Math.trunc(Number(e)||8));M=new Array(n).fill(null)}let s=be++%M.length,r=M[s];return(!r||!r.isolate||r.isolate.isDisposed)&&(r={isolate:new D.Isolate({memoryLimit:t}),idleContexts:[]},M[s]=r),r}async function T(t,e,s){let r=Y.get(t);r||(r=new Map,Y.set(t,r));let n=r.get(e);if(n)return n;let o;try{o=await t.compileScript(e,{filename:s})}catch(c){throw c&&typeof c=="object"&&(c.executionStage="compile"),c}if(r.set(e,o),r.size>ke){let c=r.keys().next().value;r.delete(c)}return o}A.on("message",async t=>{if(t.type==="execute")je(t).catch(async e=>{await J({type:"result",id:t.id,success:!1,error:{message:e.message,stack:e.stack}})});else if(t.type==="executeBatch")He(t).catch(async e=>{await J({type:"result",id:t.id,success:!1,error:{message:e.message,stack:e.stack}})});else if(t.type==="invokeRuntimeCallback")Se(t).catch(e=>{A.postMessage({type:"runtimeCallbackResult",callId:t.callId,error:e?.message||String(e)})});else if(t.type==="callResult"){let e=U.get(t.callId);e&&(U.delete(t.callId),e.resolve(t.result))}else if(t.type==="callError"){let e=U.get(t.callId);e&&(U.delete(t.callId),e.reject(new Error(t.error)))}else t.type==="cancelTask"&&I.cancelTask(t.id)});async function Se(t){let e=E.get(t.id);if(!e){A.postMessage({type:"runtimeCallbackResult",callId:t.callId,error:`Runtime callback context not found: ${t.id}`});return}let s=await e.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(t.callbackId)}, ${JSON.stringify(t.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),r=JSON.parse(s);A.postMessage({type:"runtimeCallbackResult",callId:t.callId,...r})}function N(t,e,s){return new Promise((r,n)=>{let o=`cb_${++ne}`;U.set(o,{resolve:r,reject:n}),A.postMessage({type:e,id:t,callId:o,...s})})}function Ce(t,e,s){A.postMessage({type:e,id:t,callId:`f_${++ne}`,...s})}async function $e(t,e){if(e?.method!=="stream")return N(t,"resCall",e);let s=JSON.parse(e.argsJson||"[]"),r=s[0],n=s[1]||{},o=r?.__pkgHandleArg;if(!o)return N(t,"resCall",e);let c=n.observer&&typeof n.observer=="object"?n.observer.__fnRef:null,g=n.transform&&typeof n.transform=="object"?n.transform.__fnRef:null,f=c||g?new TextDecoder("utf-8"):null;delete n.observer,delete n.transform;let h={...n};await N(t,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,h])});let w=async(u,k,y)=>{if(!u)return;let v=E.get(t);if(!v)return;let C=await v.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(u)}, ${JSON.stringify(JSON.stringify([k,y]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),P=JSON.parse(C);if(P?.error)throw new Error(P.error);if(P?.value?.__e!=="u")return P?.value},b=async(u,k)=>{if(c)try{await w(c,u,k)}catch{}},l=async(u,k,y)=>{let v=u;if(g){let P=await w(g,y,k);if(P===null)return;P!==void 0&&(v=Buffer.from(String(P)))}let C=Buffer.from(v);C.length!==0&&await N(t,"resCall",{method:"streamChunk",chunk:C.toString("base64")})};try{await I.streamPackageHandle(t,o,async k=>{let y="";try{y=f?f.decode(Buffer.from(k),{stream:!0}):""}catch{}await b(y,"chunk"),await l(k,"chunk",y)},[],H(t));let u="";try{u=f?f.decode():""}catch{}await b(u,"end"),await l("","end",u),await N(t,"resCall",{method:"streamEnd"})}catch(u){try{await N(t,"resCall",{method:"streamError",error:{message:u.message,stack:u.stack}})}catch{}throw await b("","error"),u}return JSON.stringify({__e:"u"})}function Re(t){if(typeof t.sourceCode=="string"&&t.sourceCode.length>0)return t.sourceCode;let e=t.filePath;return!e&&typeof t.fileUrl=="string"&&t.fileUrl.startsWith("file://")&&(e=ye(t.fileUrl)),!e||!Q.existsSync(e)?null:Q.readFileSync(e,"utf8")}async function Me(t,e,s){try{let r=Re(s);if(!r)return null;let n=await t.compileModule(r,{filename:`pkg:${s.safeName}`});await n.instantiate(e,c=>{throw new Error(`Unresolved import in package ${s.safeName}: ${c}`)}),await n.evaluate({timeout:1e4});let o=await n.namespace.get("default");return o!==void 0&&o.typeof!=="undefined"?o.derefInto({release:!1}):n.namespace.derefInto({release:!1})}catch{return null}}function ie(t,e){let s=n=>{let o=2166136261;for(let c=0;c<n.length;c++)o^=n.charCodeAt(c),o=Math.imul(o,16777619);return(o>>>0).toString(36)},r=new Set(e||[]);return t.map(n=>{let o=n.cacheKey||`${n.filePath||""}:${n.fileUrl||""}:${n.mtimeMs||""}:${n.size||""}:${s(n.sourceCode||"")}`,c=r.has(n.name)?"isolate":"proxy";return`${n.name}:${n.version||""}:${o}:${c}`}).join("|")}function ce(t,e){let s=new Set(e.map(f=>f.name)),r=new Set,n=String(t||""),o=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,c=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,g=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let f of[o,c])for(let h of n.matchAll(f)){let w=h[2];s.has(w)&&r.add(w)}for(let f of n.matchAll(g)){let h=f[1];s.has(h)&&r.add(h)}return r}async function Te(t,e,s,r){let n=await t.createContext(),o=n.global;await o.set("global",o.derefInto());let c=[],g=[],f=new Map;for(let l of s){f.set(l.name,l);let u=r.has(l.name)?await Me(t,n,l):null;u!==null?(await o.set(`__pkg_${l.safeName}`,u),c.push(l)):g.push(l)}I.setTaskPackages(e,f),await o.set("__callRef",new D.Reference(async(l,u,k)=>{let y=JSON.parse(k);return u==="pkgCall"?JSON.stringify(await I.executePackageRuntimeCall(l,y)):u==="resCall"?$e(l,y):N(l,u,y)})),await o.set("__fireRef",new D.Reference((l,u,k)=>{let y=JSON.parse(k);Ce(l,u,y)}));let h=c.map(l=>`$pkgs[${JSON.stringify(l.name)}] = __pkg_${l.safeName};`).concat(g.map(l=>`$pkgs[${JSON.stringify(l.name)}] = __createPkgProxy(${JSON.stringify(l.name)}, []);`)).join(`
|
|
953
|
+
`),w=me(h);return await(await T(t,w,"setup.js")).run(n,{timeout:H(e)}),ae.set(n,ie(s,r)),se.set(n,f),n}async function le(t,e,s,r,n,o,c){let g=t.isolate,f=ie(s,n),h=null;for(let l=t.idleContexts.length-1;l>=0;l--){let u=t.idleContexts[l];if(t.idleContexts.splice(l,1),ae.get(u)===f){h=u,j.reused++;break}try{u.release()}catch{}}h||(h=await Te(g,e,s,n),j.created++),I.setTaskPackages(e,se.get(h)||new Map);let w=h.global;return await w.set("__snapshot",new D.ExternalCopy(r).copyInto()),await w.set("__nextTaskId",e),await w.set("__nextTaskTimeoutMs",o),await w.set("__nextTaskDeadlineMs",c),await(await T(g,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs, __nextTaskDeadlineMs);","reset-task.js")).run(h,{timeout:H(e)}),h}async function ue(t,e){if(!(!e||t.isolate.isDisposed)){try{await(await T(t.isolate,"__cleanupTask();","cleanup-task.js")).run(e,{timeout:5e3})}catch{j.scrubFailed++;try{e.release()}catch{}return}if(t.idleContexts.length>=ve){try{e.release()}catch{}j.evicted++;return}t.idleContexts.push(e),j.released++}}function Ae(t){try{let e=JSON.parse(t.message);if(e&&e.__userThrow)return{...e,message:e.message??t.message}}catch{}return null}var Ne=3,Oe=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Je(t){if(!t)return null;let e=t.split(`
|
|
954
|
+
`);for(let s of e){let r=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let n=r[1].trim();if(Oe.includes(n))continue;let c=parseInt(r[2])-Ne;if(!(c<=0))return{line:c,column:parseInt(r[3]),phase:n.replace(".js","")}}return null}function Ee(t,e,s){if(!t||!e)return;let r=String(t).split(/\r?\n/),n=Math.max(1,e-1),o=Math.min(r.length,e+1),c=String(o).length,g=[];for(let f=n;f<=o;f++){let h=f===e?">":" ";g.push(`${h} ${String(f).padStart(c," ")}. ${r[f-1]??""}`),f===e&&s&&s>0&&g.push(` ${" ".repeat(c)} ${" ".repeat(Math.max(0,s-1))}^`)}return g.join(`
|
|
955
|
+
`)}function Ie(t,e){if(!(!t||!e)){if(e[t.phase])return e[t.phase];if(t.phase?.startsWith("preHook"))return e.preHook;if(t.phase?.startsWith("postHook"))return e.postHook}}function V(t,e){let s=Ae(t);if(s)return{message:s.message,statusCode:s.statusCode,errorPath:s.errorPath,details:s.details};let r=Je(t.stack),n=t.message||"Unknown error",o=r?`${n} (${r.phase}, line ${r.line})`:n,c=Ie(r,e),g=r?Ee(c,r.line,r.column):void 0;return{message:o,statusCode:t.statusCode||null,details:{errorName:t.name||null,executionStage:t.executionStage||"runtime",...r?{...r,codeFrame:g}:{}}}}async function B(t,e,s){let r=V(e,s);await J({type:"result",id:t,success:!1,error:{...r,stack:e.stack,code:e.code}})}async function je(t){let{id:e,code:s,pkgSources:r,snapshot:n,memoryLimitMb:o,isolatePoolSize:c}=t,g={handler:t.sourceCode||s||""},f=r||[],h=Math.max(1,Math.trunc(Number(t.timeoutMs)||3e4)),w=Date.now()+h;O.set(e,w);let b=ce(s,f),l=oe(o,c),u=l.isolate,k;try{k=await le(l,e,f,n,b,h,w)}catch(y){O.delete(e),K(e),await B(e,y,g);return}E.set(e,k);try{let y=`
|
|
981
956
|
(async () => {
|
|
982
957
|
"use strict";
|
|
983
958
|
${s}
|
|
984
959
|
})().then((__result) => __extractResult(__result, __result === undefined));
|
|
985
|
-
`,
|
|
986
|
-
`),
|
|
960
|
+
`,C=await(await T(u,y,"handler.js")).run(k,{timeout:H(e),promise:!0}),P=JSON.parse(C);await J({type:"result",id:e,success:!0,...P})}catch(y){await B(e,y,g)}finally{E.delete(e),O.delete(e),await ue(l,k),K(e)}}async function He(t){let{id:e,codeBlocks:s,pkgSources:r,snapshot:n,memoryLimitMb:o,isolatePoolSize:c}=t,g=r||[],f=Math.max(1,Math.trunc(Number(t.timeoutMs)||3e4)),h=Date.now()+f;O.set(e,h);let w=ce((s||[]).map(m=>m.code||"").join(`
|
|
961
|
+
`),g),b=oe(o,c),l=b.isolate,u;try{u=await le(b,e,g,n,w,f,h)}catch(m){O.delete(e),K(e),await B(e,m);return}E.set(e,u);let k=[],y=[],v={},C=0,P=0;for(let m of s){let d=m.type||"handler",a=m.sourceCode||m.code||"";d==="postHook"?(P++,v[`postHook #${P}`]=a,v.postHook=a,y.push(m)):(d==="handler"?v.handler=a:(C++,v[`${d} #${C}`]=a,v.preHook=a),k.push(m))}try{let m=null;for(let a=0;a<k.length;a++){let i=k[a],p=i.type||"handler",_=p==="handler"?"handler":`${p} #${a+1}`,x;p==="preHook"?x=`
|
|
987
962
|
(async () => {
|
|
988
963
|
"use strict";
|
|
989
964
|
${i.code}
|
|
990
965
|
})().then((__r) => {
|
|
991
966
|
if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
|
|
992
967
|
return JSON.stringify({ __shortCircuit: false });
|
|
993
|
-
});`:
|
|
968
|
+
});`:x=`
|
|
994
969
|
(async () => {
|
|
995
970
|
"use strict";
|
|
996
971
|
${i.code}
|
|
997
972
|
})().then((__r) => {
|
|
998
973
|
$ctx.$data = __r;
|
|
999
974
|
return "__handler_done__";
|
|
1000
|
-
});`;try{let R=await(await T(
|
|
975
|
+
});`;try{let R=await(await T(l,x,`${_}.js`)).run(u,{timeout:H(e),promise:!0});if(p==="preHook"&&typeof R=="string"){let S=JSON.parse(R);if(S.__shortCircuit){let F=await re(l,u,S.value);await J({type:"result",id:e,success:!0,...F,shortCircuit:!0});return}}}catch($){m=$;break}}if(!m&&y.length>0&&await(await T(l,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(u,{timeout:5e3}),m&&y.length>0){let a=V(m,v),i={message:a.message||"Unknown error",name:m.constructor?.name||"Error",stack:m.stack||"",statusCode:a.statusCode||500,details:a.details||{},timestamp:new Date().toISOString()},p=`
|
|
1001
976
|
$ctx.$error = ${JSON.stringify(i)};
|
|
1002
977
|
$ctx.$data = null;
|
|
1003
978
|
$ctx.$statusCode = ${i.statusCode};
|
|
@@ -1011,11 +986,11 @@ if ($ctx.$api) {
|
|
|
1011
986
|
timestamp: ${JSON.stringify(i.timestamp)},
|
|
1012
987
|
};
|
|
1013
988
|
}
|
|
1014
|
-
"__error_populated__";`;await(await
|
|
989
|
+
"__error_populated__";`;await(await l.compileScript(p,{filename:"populate-error.js"})).run(u,{timeout:5e3})}for(let a=0;a<y.length;a++){let i=y[a],p=`postHook #${a+1}`,_=`
|
|
1015
990
|
(async () => {
|
|
1016
991
|
"use strict";
|
|
1017
992
|
${i.code}
|
|
1018
993
|
})().then((__r) => {
|
|
1019
994
|
if (__r !== undefined) $ctx.$data = __r;
|
|
1020
995
|
return "__posthook_done__";
|
|
1021
|
-
});`;try{await(await T(
|
|
996
|
+
});`;try{await(await T(l,_,`${p}.js`)).run(u,{timeout:H(e),promise:!0})}catch{}}if(m){let a=V(m,v),i;try{let x=await(await T(l,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(u,{timeout:5e3,promise:!0});i=JSON.parse(x)}catch{}await J({type:"result",id:e,success:!1,error:{message:a.message,statusCode:a.statusCode,errorPath:a.errorPath,stack:m.stack,code:m.code,details:a.details},ctxChanges:i});return}let d=await re(l,u);await J({type:"result",id:e,success:!0,...d})}catch(m){await B(e,m)}finally{E.delete(e),O.delete(e),await ue(b,u),K(e)}}function K(t){I.cleanupTaskPackages(t)}function Fe(){I.shutdownPackageRuntime()}process.on("exit",Fe);async function re(t,e,s){if(s!==void 0){let c=`__extractResult(${JSON.stringify(s)}, false)`,f=await(await t.compileScript(c,{filename:"extract.js"})).run(e,{timeout:5e3,promise:!0});return JSON.parse(f)}let o=await(await T(t,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(e,{timeout:5e3,promise:!0});return JSON.parse(o)}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export function createEnfyraKernel(
|
|
|
27
27
|
export class QueryBuilderService {
|
|
28
28
|
constructor(...args: any[]);
|
|
29
29
|
find(...args: any[]): Promise<any>;
|
|
30
|
+
aggregate(...args: any[]): Promise<any>;
|
|
30
31
|
findOne(...args: any[]): Promise<any>;
|
|
31
32
|
insertWithOptions(...args: any[]): Promise<any>;
|
|
32
33
|
updateWithOptions(...args: any[]): Promise<any>;
|
|
@@ -300,7 +301,6 @@ export type PoolEntry = any;
|
|
|
300
301
|
|
|
301
302
|
export const applyOperatorToMatch: any;
|
|
302
303
|
export const applyWhereToKnex: any;
|
|
303
|
-
export const buildAggregateFilter: any;
|
|
304
304
|
export const buildMongoCharFoldMapJson: any;
|
|
305
305
|
export const buildMongoFoldTextSearchJs: any;
|
|
306
306
|
export const buildWhereClause: any;
|