@enfyra/kernel 1.1.35 → 1.1.37
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
|
|
1
|
+
"use strict";var S=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var m=S((q,A)=>{"use strict";function C({handles:e,createHandleId:t,callIsolateCallback:n}){function o(f,r){if(r==null)return r;let d=typeof r;if(d==="string"||d==="number"||d==="boolean")return r;if(r instanceof Date)return{__date:r.toISOString()};if(r instanceof Set)return{__set:Array.from(r.values()).map(c=>o(f,c))};if(r instanceof Map)return{__map:Array.from(r.entries()).map(([c,u])=>[o(f,c),o(f,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 a(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(c=>o(f,c));if(d==="object"&&I(r)){let c={};for(let[u,w]of Object.entries(r))c[u]=o(f,w);return c}return a(f,r)}function a(f,r){let d=t(f);return e.set(d,r),{__pkgHandle:d}}function i(f,r){if(!r||typeof r!="object")return r;if(r.__fnRef)return(...c)=>n(f,r.__fnRef,c);if(r.__pkgHandleArg){let c=e.get(r.__pkgHandleArg);if(!c)throw new Error(`Package argument handle not found: ${r.__pkgHandleArg}`);return c}if(r.__date)return new Date(r.__date);if(r.__set)return new Set(r.__set.map(c=>i(f,c)));if(r.__map)return new Map(r.__map.map(([c,u])=>[i(f,c),i(f,u)]));if(r.__regexp)return new RegExp(r.__regexp.source,r.__regexp.flags||"");if(r.__error){let c=new Error(r.__error.message||"");return c.name=r.__error.name||"Error",r.__error.stack&&(c.stack=r.__error.stack),c}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 c=[Uint8Array.from(r.__file.data||[])],u={type:r.__file.type||"",lastModified:r.__file.lastModified};return typeof File<"u"?new File(c,r.__file.name||"file",u):new Blob(c,u)}if(r.__formData){let c=new FormData;for(let[u,w]of r.__formData)c.append(u,i(f,w));return c}if(r.__typedArray){let c=globalThis[r.__typedArray]||Uint8Array;return new c(r.data||[])}if(r.__arrayBuffer)return Uint8Array.from(r.__arrayBuffer).buffer;if(Array.isArray(r))return r.map(c=>i(f,c));let d={};for(let[c,u]of Object.entries(r))d[c]=i(f,u);return d}function s(f,r){return JSON.parse(r||"[]").map(d=>i(f,d))}return{createPackageHandle:a,deserializePackageArg:i,deserializePackageArgs:s,serializePackageValue:o}}function I(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")}A.exports={createPackageRuntimeCodec:C}});var{createPackageRuntimeCodec:x}=m(),b=new Map,p=new Map,k=new Map,_=new Map,P=new Map,h=new Map,E=0,j=0,M=0;function T(e){return Math.max(1,Math.trunc(Number(e)||3e4))}function g(e){let t=P.get(e);return t||(t=new AbortController,P.set(e,t)),t}function $(e){g(e).abort();for(let[t,n]of h)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{}h.delete(t)}}function B(e){let t=H(e.taskId,e.argsJson),n=(e.path||[]).join(".");if(e.packageName==="undici"&&(n==="request"||n==="fetch")){let o=t[1]&&typeof t[1]=="object"?t[1]:{};t[1]={...o,signal:g(e.taskId).signal}}return t}function R(e,t){let n=()=>process.exit(1);try{process.send?.({id:e,ok:!1,error:{message:t}},n),setTimeout(n,50).unref?.()}catch{n()}}var{createPackageHandle:U,deserializePackageArg:O,deserializePackageArgs:H,serializePackageValue:l}=x({handles:p,createHandleId:e=>`${e}:pkg_${++E}`,callIsolateCallback:z});async function N(e){let t=e.fileUrl||e.name;if(b.has(t))return b.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 o=await import(n);return b.set(t,o),o}function y(e,t){if(!t||t.length===0)return{target:e&&e.default!==void 0?e.default:e,receiver:void 0};let n=e,o;for(let a=0;a<t.length;a++){let i=t[a];if(n==null&&a===0&&e.default!==void 0&&(n=e.default),n!=null&&i in n){o=n,n=n[i];continue}if(a===0&&e.default!==void 0&&e.default!==n&&i in e.default){o=e.default,n=e.default[i];continue}throw new Error(`Package export not found: ${t.join(".")}`)}return{target:n,receiver:o}}function z(e,t,n){return new Promise((o,a)=>{let i=`cb_${++j}`;k.set(i,{resolve:o,reject:a,taskId:e});try{process.send?.({type:"pkgCallbackCall",id:i,taskId:e,callbackId:t,argsJson:JSON.stringify(n.map(s=>l(e,s)))})}catch(s){k.delete(i),a(s)}})}async function L(e){let t=B(e);if(e.op==="handleCall"){let i=p.get(e.handleId);if(!i)throw new Error(`Package handle not found: ${e.handleId}`);let{target:s,receiver:f}=y(i,e.path||[]);if(typeof s!="function")return l(e.taskId,s);let r=await s.apply(f||i,t);return l(e.taskId,r)}if(e.op==="handleGet"){let i=p.get(e.handleId);if(!i)throw new Error(`Package handle not found: ${e.handleId}`);let{target:s,receiver:f}=y(i,e.path||[]);return l(e.taskId,typeof s=="function"&&f?s.bind(f):s)}let n=await N(e.package),{target:o,receiver:a}=y(n,e.path||[]);if(e.op==="construct"){if(typeof o!="function")throw new Error(`Package export is not constructable: ${e.packageName}.${(e.path||[]).join(".")}`);return U(e.taskId,new o(...t))}return typeof o=="function"?l(e.taskId,await o.apply(a,t)):l(e.taskId,o)}function D(e,t,n){return new Promise((o,a)=>{let i=`stream_${++M}`;_.set(i,{resolve:o,reject:a});try{process.send?.({type:"pkgStreamChunk",id:e,ackId:i,taskId:t,chunk:Buffer.from(n).toString("base64")},s=>{s&&(_.delete(i),a(s))})}catch(s){_.delete(i),a(s)}})}async function J(e){let t=p.get(e.handleId);if(!t)throw new Error(`Package handle not found: ${e.handleId}`);let{target:n}=y(t,e.path||[]),o=n||t;if(!o||typeof o[Symbol.asyncIterator]!="function"&&typeof o.on!="function")throw new Error(`Package handle is not a readable stream: ${e.handleId}`);let a=typeof o[Symbol.asyncIterator]=="function"?o[Symbol.asyncIterator]():o;h.set(e.id,{taskId:e.taskId,stream:o,iterator:a});try{for(;;){let i=await a.next();if(i.done)break;await D(e.id,e.taskId,i.value)}}finally{h.delete(e.id)}}function F(e){$(e),P.delete(e);for(let t of p.keys())t.startsWith(`${e}:`)&&p.delete(t)}process.on("message",async e=>{if(!e)return;if(e.type==="pkgStreamAck"||e.type==="pkgStreamError"){let a=_.get(e.ackId);if(!a)return;_.delete(e.ackId),e.type==="pkgStreamAck"?a.resolve(!0):a.reject(new Error(e.error?.message||"Package stream failed"));return}if(e.type==="pkgCallbackResult"||e.type==="pkgCallbackError"){let a=k.get(e.id);if(!a)return;k.delete(e.id),e.type==="pkgCallbackResult"?a.resolve(O(a.taskId,e.value)):a.reject(new Error(e.error?.message||"Package callback failed"));return}if(e.op==="cancelTask"){$(e.taskId),e.fire||process.send?.({id:e.id,ok:!0,value:!0});return}if(!e.op)return;let t=!1,n=T(e.timeoutMs),o=setTimeout(()=>{if(t)return;t=!0;let a=[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(" "),i=`Package runtime call timed out after ${n}ms${a?` (${a})`:""}`;R(e.id,i)},n);try{if(e.op==="releaseTask"){t=!0,clearTimeout(o),F(e.taskId),e.fire||process.send?.({id:e.id,ok:!0,value:!0});return}let a=e.op==="streamHandle"?await J(e):await L(e);if(t)return;t=!0,clearTimeout(o),process.send?.({id:e.id,ok:!0,value:a})}catch(a){if(t)return;t=!0,clearTimeout(o);let i=[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:i?`${a.message} (${i})`:a.message,stack:a.stack}})}});process.on("disconnect",()=>{process.exit(1)});
|
package/dist/execution/worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var B=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var V=B((Ue,q)=>{"use strict";var{fork:ue}=require("child_process"),fe=require("path");function de({workerDir:e,activeTaskContexts:t}){let s=new Map,r=new Map,n=new Map,o=null,l=0;function y(i){return Math.max(1,Math.trunc(Number(i)||3e4))}function f(i){for(let a of r.values())clearTimeout(a.timer),a.reject(i);r.clear()}function _(i){let a=typeof i=="string"?JSON.parse(i):i;if(a?.error)throw new Error(a.error);return a?.value}async function v(i){let a=t.get(i.taskId);if(!a)throw new Error(`Package callback context not found: ${i.taskId}`);let c=JSON.stringify(i.callbackId),g=JSON.stringify(i.argsJson||"[]"),d=await a.evalClosure(`return __invokeRuntimeCallback(${c}, ${g});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return _(d)}function p(){if(o&&o.connected)return o;let i=fe.join(e,"package-runtime.child.js"),a=ue(i,[],{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 d=n.get(c.id);if(!d)return;d.onChunk(Buffer.from(c.chunk||"","base64")).then(()=>{try{a.send({type:"pkgStreamAck",ackId:c.ackId})}catch{}}).catch(x=>{try{a.send({type:"pkgStreamError",ackId:c.ackId,error:{message:x.message,stack:x.stack}})}catch{}});return}if(c.type==="pkgCallbackCall"){v(c).then(d=>{try{a.send({type:"pkgCallbackResult",id:c.id,value:d})}catch{}}).catch(d=>{try{a.send({type:"pkgCallbackError",id:c.id,error:{message:d.message,stack:d.stack}})}catch{}});return}let g=r.get(c.id);if(g)if(clearTimeout(g.timer),r.delete(c.id),n.delete(c.id),c.ok)g.resolve(c.value);else{let d=new Error(c.error?.message||"Package runtime call failed");d.stack=c.error?.stack||d.stack,g.reject(d)}}),a.on("exit",(c,g)=>{o===a&&(o=null),f(new Error(`Package runtime exited${g?` with signal ${g}`:` with code ${c}`}`))}),a.on("error",c=>{o===a&&(o=null),f(c)}),a}function u(i){return new Promise((a,c)=>{let g=p(),d=`pkg_${++l}`,x=y(i.timeoutMs),P=setTimeout(()=>{r.delete(d),n.delete(d);try{g.kill()}catch{}c(new Error(`Package runtime call timed out after ${x}ms`))},x);r.set(d,{resolve:a,reject:c,timer:P});try{g.send({...i,id:d},S=>{S&&(clearTimeout(P),r.delete(d),c(S))})}catch(S){clearTimeout(P),r.delete(d),c(S)}})}function m(i,a,c,g=[],d=3e4){return new Promise((x,P)=>{let S=p(),b=`pkg_${++l}`,K=y(d),L=setTimeout(()=>{r.delete(b),n.delete(b);try{S.kill()}catch{}P(new Error(`Package runtime stream timed out after ${K}ms`))},K);r.set(b,{resolve:x,reject:P,timer:L}),n.set(b,{onChunk:c});try{S.send({op:"streamHandle",taskId:i,handleId:a,path:g,id:b},U=>{U&&(clearTimeout(L),r.delete(b),n.delete(b),P(U))})}catch(U){clearTimeout(L),r.delete(b),n.delete(b),P(U)}})}function w(i){try{if(!o||!o.connected)return;o.send({...i,id:`pkg_${++l}`,fire:!0})}catch{}}function k(i){try{let a=p();if(!a.connected)return;a.send({op:"cancelTask",taskId:i,id:`pkg_${++l}`,fire:!0})}catch{}}async function J(i,a){let c=s.get(i);if(!c)throw new Error("Package context is not available");if(a.handleId)return u({op:a.kind==="get"?"handleGet":"handleCall",taskId:i,handleId:a.handleId,path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs});let g=c.get(a.packageName);if(!g)throw new Error(`Package "${a.packageName}" is not available`);return u({op:a.kind==="construct"?"construct":"call",taskId:i,packageName:a.packageName,package:{name:g.name,fileUrl:g.fileUrl},path:a.path||[],argsJson:a.argsJson||"[]",timeoutMs:a.timeoutMs})}function E(i,a){s.set(i,a)}function h(i){s.delete(i),w({op:"releaseTask",taskId:i})}function M(){if(o){try{o.kill()}catch{}o=null}}return{cleanupTaskPackages:h,cancelTask:k,executePackageRuntimeCall:J,setTaskPackages:E,streamPackageHandle:m,shutdownPackageRuntime:M}}q.exports={createPackageRuntimeBridge:de}});var z=B((Le,W)=>{"use strict";var _e=`
|
|
2
2
|
"use strict";
|
|
3
3
|
let $ctx = {};
|
|
4
4
|
let $pkgs = {};
|
|
@@ -226,18 +226,37 @@ async function __stringifyRuntimeArgs(args) {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
async function __streamResponseFromLocalReadable(stream, options) {
|
|
229
|
+
const observer = typeof options?.observer === 'function'
|
|
230
|
+
? options.observer
|
|
231
|
+
: null;
|
|
232
|
+
const relayOptions = { ...(options || {}) };
|
|
233
|
+
delete relayOptions.observer;
|
|
234
|
+
const notifyObserver = async (chunk, kind) => {
|
|
235
|
+
if (!observer) return;
|
|
236
|
+
let text;
|
|
237
|
+
try {
|
|
238
|
+
text = new TextDecoder().decode(__streamChunkToBytes(chunk));
|
|
239
|
+
} catch {
|
|
240
|
+
text = '';
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
await observer(text, kind);
|
|
244
|
+
} catch {}
|
|
245
|
+
};
|
|
229
246
|
await __call('resCall', JSON.stringify({
|
|
230
247
|
method: 'streamStart',
|
|
231
|
-
argsJson: JSON.stringify([null,
|
|
248
|
+
argsJson: JSON.stringify([null, relayOptions]),
|
|
232
249
|
}));
|
|
233
250
|
try {
|
|
234
251
|
for await (const chunk of stream) {
|
|
252
|
+
await notifyObserver(chunk, 'chunk');
|
|
235
253
|
await __call('resCall', JSON.stringify({
|
|
236
254
|
method: 'streamChunk',
|
|
237
255
|
chunk: __bytesToBase64(__streamChunkToBytes(chunk)),
|
|
238
256
|
}));
|
|
239
257
|
}
|
|
240
258
|
await __call('resCall', JSON.stringify({ method: 'streamEnd' }));
|
|
259
|
+
await notifyObserver('', 'end');
|
|
241
260
|
} catch (error) {
|
|
242
261
|
try {
|
|
243
262
|
await __call('resCall', JSON.stringify({
|
|
@@ -247,6 +266,7 @@ async function __streamResponseFromLocalReadable(stream, options) {
|
|
|
247
266
|
},
|
|
248
267
|
}));
|
|
249
268
|
} catch {}
|
|
269
|
+
await notifyObserver('', 'error');
|
|
250
270
|
throw error;
|
|
251
271
|
}
|
|
252
272
|
}
|
|
@@ -893,48 +913,48 @@ function __cleanupTask() {
|
|
|
893
913
|
__pendingRuntimeTasks = [];
|
|
894
914
|
return true;
|
|
895
915
|
}
|
|
896
|
-
`;function
|
|
897
|
-
`),v=
|
|
898
|
-
`);for(let s of t){let r=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let
|
|
899
|
-
`)}function
|
|
916
|
+
`;function pe(e){return _e.replace("%%PKG_SETUP%%",e)}W.exports={buildSetupCode:pe}});var{parentPort:R}=require("worker_threads"),G=require("fs"),{fileURLToPath:ge}=require("url"),{createPackageRuntimeBridge:ye}=V(),{buildSetupCode:he}=z(),H;try{H=require("isolated-vm")}catch(e){R.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var j=new Map,ee=0,T=new Map,F=new Map,O=ye({workerDir:__dirname,activeTaskContexts:T}),me=500,ke=5e3,ve=32,X=new WeakMap,te=new WeakMap,re=new WeakMap,I={created:0,reused:0,released:0,evicted:0,scrubFailed:0},C=null,we=0,Z=0,Q=0;async function Pe(){let e=Date.now();if(e-Z<ke)return Q;if(Z=e,!C)return 0;let t=0;for(let s of C){let r=s?.isolate;if(!(!r||r.isDisposed))try{let n=await r.getHeapStatistics(),o=n.heap_size_limit||1,l=n.used_heap_size/o;l>t&&(t=l)}catch{}}return Q=t,t}async function A(e){e.heapRatio=await Pe(),e.contextStats=be(),R.postMessage(e)}function be(){let e=0;if(C)for(let t of C)e+=t?.idleContexts?.length||0;return{...I,idle:e}}function ne(e,t){if(!C){let n=Math.max(1,Math.trunc(Number(t)||8));C=new Array(n).fill(null)}let s=we++%C.length,r=C[s];return(!r||!r.isolate||r.isolate.isDisposed)&&(r={isolate:new H.Isolate({memoryLimit:e}),idleContexts:[]},C[s]=r),r}async function $(e,t,s){let r=X.get(e);r||(r=new Map,X.set(e,r));let n=r.get(t);if(n)return n;let o=await e.compileScript(t,{filename:s});if(r.set(t,o),r.size>me){let l=r.keys().next().value;r.delete(l)}return o}R.on("message",async e=>{if(e.type==="execute")Ie(e).catch(async t=>{await A({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")je(e).catch(async t=>{await A({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="invokeRuntimeCallback")xe(e).catch(t=>{R.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:t?.message||String(t)})});else if(e.type==="callResult"){let t=j.get(e.callId);t&&(j.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=j.get(e.callId);t&&(j.delete(e.callId),t.reject(new Error(e.error)))}else e.type==="cancelTask"&&O.cancelTask(e.id)});async function xe(e){let t=T.get(e.id);if(!t){R.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}}),r=JSON.parse(s);R.postMessage({type:"runtimeCallbackResult",callId:e.callId,...r})}function N(e,t,s){return new Promise((r,n)=>{let o=`cb_${++ee}`;j.set(o,{resolve:r,reject:n}),R.postMessage({type:t,id:e,callId:o,...s})})}function Se(e,t,s){R.postMessage({type:t,id:e,callId:`f_${++ee}`,...s})}async function Ce(e,t){if(t?.method!=="stream")return N(e,"resCall",t);let s=JSON.parse(t.argsJson||"[]"),r=s[0],n=s[1]||{},o=r?.__pkgHandleArg;if(!o)return N(e,"resCall",t);let l=n.observer&&typeof n.observer=="object"?n.observer.__fnRef:null;delete n.observer;let y={...n};await N(e,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,y])});let f=async(_,v)=>{if(!l)return;let p=T.get(e);if(!p)return;let u;try{u=Buffer.from(_).toString("utf8")}catch{u=""}try{await p.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(l)}, ${JSON.stringify(JSON.stringify([u,v]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}})}catch{}};try{await O.streamPackageHandle(e,o,async _=>{await f(_,"chunk"),await N(e,"resCall",{method:"streamChunk",chunk:Buffer.from(_).toString("base64")})},[],Math.trunc(F.get(e)||3e4)),await N(e,"resCall",{method:"streamEnd"}),await f("","end")}catch(_){try{await N(e,"resCall",{method:"streamError",error:{message:_.message,stack:_.stack}})}catch{}throw await f("","error"),_}return JSON.stringify({__e:"u"})}function $e(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=ge(e.fileUrl)),!t||!G.existsSync(t)?null:G.readFileSync(t,"utf8")}async function Re(e,t,s){try{let r=$e(s);if(!r)return null;let n=await e.compileModule(r,{filename:`pkg:${s.safeName}`});await n.instantiate(t,l=>{throw new Error(`Unresolved import in package ${s.safeName}: ${l}`)}),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 ae(e,t){let s=n=>{let o=2166136261;for(let l=0;l<n.length;l++)o^=n.charCodeAt(l),o=Math.imul(o,16777619);return(o>>>0).toString(36)},r=new Set(t||[]);return e.map(n=>{let o=n.cacheKey||`${n.filePath||""}:${n.fileUrl||""}:${n.mtimeMs||""}:${n.size||""}:${s(n.sourceCode||"")}`,l=r.has(n.name)?"isolate":"proxy";return`${n.name}:${n.version||""}:${o}:${l}`}).join("|")}function se(e,t){let s=new Set(t.map(f=>f.name)),r=new Set,n=String(e||""),o=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,l=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,y=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let f of[o,l])for(let _ of n.matchAll(f)){let v=_[2];s.has(v)&&r.add(v)}for(let f of n.matchAll(y)){let _=f[1];s.has(_)&&r.add(_)}return r}async function Me(e,t,s,r){let n=await e.createContext(),o=n.global;await o.set("global",o.derefInto());let l=[],y=[],f=new Map;for(let u of s){f.set(u.name,u);let m=r.has(u.name)?await Re(e,n,u):null;m!==null?(await o.set(`__pkg_${u.safeName}`,m),l.push(u)):y.push(u)}O.setTaskPackages(t,f),await o.set("__callRef",new H.Reference(async(u,m,w)=>{let k=JSON.parse(w);return m==="pkgCall"?JSON.stringify(await O.executePackageRuntimeCall(u,k)):m==="resCall"?Ce(u,k):N(u,m,k)})),await o.set("__fireRef",new H.Reference((u,m,w)=>{let k=JSON.parse(w);Se(u,m,k)}));let _=l.map(u=>`$pkgs[${JSON.stringify(u.name)}] = __pkg_${u.safeName};`).concat(y.map(u=>`$pkgs[${JSON.stringify(u.name)}] = __createPkgProxy(${JSON.stringify(u.name)}, []);`)).join(`
|
|
917
|
+
`),v=he(_);return await(await $(e,v,"setup.js")).run(n,{timeout:5e3}),te.set(n,ae(s,r)),re.set(n,f),n}async function oe(e,t,s,r,n,o){let l=e.isolate,y=ae(s,n),f=null;for(let p=e.idleContexts.length-1;p>=0;p--){let u=e.idleContexts[p];if(e.idleContexts.splice(p,1),te.get(u)===y){f=u,I.reused++;break}try{u.release()}catch{}}f||(f=await Me(l,t,s,n),I.created++),O.setTaskPackages(t,re.get(f)||new Map);let _=f.global;return await _.set("__snapshot",new H.ExternalCopy(r).copyInto()),await _.set("__nextTaskId",t),await _.set("__nextTaskTimeoutMs",o),await(await $(l,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs);","reset-task.js")).run(f,{timeout:5e3}),f}async function ie(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await $(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{I.scrubFailed++;try{t.release()}catch{}return}if(e.idleContexts.length>=ve){try{t.release()}catch{}I.evicted++;return}e.idleContexts.push(t),I.released++}}function Ne(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var Ae=3,Te=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Oe(e){if(!e)return null;let t=e.split(`
|
|
918
|
+
`);for(let s of t){let r=s.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let n=r[1].trim();if(Te.includes(n))continue;let l=parseInt(r[2])-Ae;if(!(l<=0))return{line:l,column:parseInt(r[3]),phase:n.replace(".js","")}}return null}function Je(e,t,s){if(!e||!t)return;let r=String(e).split(/\r?\n/),n=Math.max(1,t-1),o=Math.min(r.length,t+1),l=String(o).length,y=[];for(let f=n;f<=o;f++){let _=f===t?">":" ";y.push(`${_} ${String(f).padStart(l," ")}. ${r[f-1]??""}`),f===t&&s&&s>0&&y.push(` ${" ".repeat(l)} ${" ".repeat(Math.max(0,s-1))}^`)}return y.join(`
|
|
919
|
+
`)}function Ee(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 D(e,t){let s=Ne(e);if(s)return{message:s.message,statusCode:s.statusCode,errorPath:s.errorPath,details:s.details};let r=Oe(e.stack),n=e.message||"Unknown error",o=r?`${n} (${r.phase}, line ${r.line})`:n,l=Ee(r,t),y=r?Je(l,r.line,r.column):void 0;return{message:o,statusCode:e.statusCode||null,details:{errorName:e.name||null,...r?{...r,codeFrame:y}:{}}}}async function ce(e,t,s){let r=D(t,s);await A({type:"result",id:e,success:!1,error:{...r,stack:t.stack,code:t.code}})}async function Ie(e){let{id:t,code:s,pkgSources:r,snapshot:n,memoryLimitMb:o,isolatePoolSize:l}=e,y={handler:e.sourceCode||s||""},f=r||[],_=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),v=se(s,f),p=ne(o,l),u=p.isolate,m=await oe(p,t,f,n,v,_);T.set(t,m),F.set(t,_);try{let w=`
|
|
900
920
|
(async () => {
|
|
901
921
|
"use strict";
|
|
902
922
|
${s}
|
|
903
923
|
})().then((__result) => __extractResult(__result, __result === undefined));
|
|
904
|
-
`,
|
|
905
|
-
`),
|
|
924
|
+
`,J=await(await $(u,w,"handler.js")).run(m,{timeout:_,promise:!0}),E=JSON.parse(J);await A({type:"result",id:t,success:!0,...E})}catch(w){await ce(t,w,y)}finally{T.delete(t),F.delete(t),await ie(p,m),le(t)}}async function je(e){let{id:t,codeBlocks:s,pkgSources:r,snapshot:n,memoryLimitMb:o,isolatePoolSize:l}=e,y=r||[],f=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),_=se((s||[]).map(h=>h.code||"").join(`
|
|
925
|
+
`),y),v=ne(o,l),p=v.isolate,u=await oe(v,t,y,n,_,f);T.set(t,u),F.set(t,f);let m=[],w=[],k={},J=0,E=0;for(let h of s){let M=h.type||"handler",i=h.sourceCode||h.code||"";M==="postHook"?(E++,k[`postHook #${E}`]=i,k.postHook=i,w.push(h)):(M==="handler"?k.handler=i:(J++,k[`${M} #${J}`]=i,k.preHook=i),m.push(h))}try{let h=null;for(let i=0;i<m.length;i++){let a=m[i],c=a.type||"handler",g=c==="handler"?"handler":`${c} #${i+1}`,d;c==="preHook"?d=`
|
|
906
926
|
(async () => {
|
|
907
927
|
"use strict";
|
|
908
|
-
${
|
|
928
|
+
${a.code}
|
|
909
929
|
})().then((__r) => {
|
|
910
930
|
if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
|
|
911
931
|
return JSON.stringify({ __shortCircuit: false });
|
|
912
|
-
});`:
|
|
932
|
+
});`:d=`
|
|
913
933
|
(async () => {
|
|
914
934
|
"use strict";
|
|
915
|
-
${
|
|
935
|
+
${a.code}
|
|
916
936
|
})().then((__r) => {
|
|
917
937
|
$ctx.$data = __r;
|
|
918
938
|
return "__handler_done__";
|
|
919
|
-
});`;try{let
|
|
920
|
-
$ctx.$error = ${JSON.stringify(
|
|
939
|
+
});`;try{let P=await(await $(p,d,`${g}.js`)).run(u,{timeout:f,promise:!0});if(c==="preHook"&&typeof P=="string"){let S=JSON.parse(P);if(S.__shortCircuit){let b=await Y(p,u,S.value);await A({type:"result",id:t,success:!0,...b,shortCircuit:!0});return}}}catch(x){h=x;break}}if(!h&&w.length>0&&await(await $(p,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(u,{timeout:5e3}),h&&w.length>0){let i=D(h,k),a={message:i.message||"Unknown error",name:h.constructor?.name||"Error",stack:h.stack||"",statusCode:i.statusCode||500,details:i.details||{},timestamp:new Date().toISOString()},c=`
|
|
940
|
+
$ctx.$error = ${JSON.stringify(a)};
|
|
921
941
|
$ctx.$data = null;
|
|
922
|
-
$ctx.$statusCode = ${
|
|
942
|
+
$ctx.$statusCode = ${a.statusCode};
|
|
923
943
|
if ($ctx.$api) {
|
|
924
|
-
$ctx.$api.error = ${JSON.stringify(
|
|
944
|
+
$ctx.$api.error = ${JSON.stringify(a)};
|
|
925
945
|
$ctx.$api.response = {
|
|
926
|
-
statusCode: ${
|
|
946
|
+
statusCode: ${a.statusCode},
|
|
927
947
|
responseTime: $ctx.$api.request && $ctx.$api.request.timestamp
|
|
928
948
|
? Date.now() - new Date($ctx.$api.request.timestamp).getTime()
|
|
929
949
|
: 0,
|
|
930
|
-
timestamp: ${JSON.stringify(
|
|
950
|
+
timestamp: ${JSON.stringify(a.timestamp)},
|
|
931
951
|
};
|
|
932
952
|
}
|
|
933
|
-
"__error_populated__";`;await(await
|
|
953
|
+
"__error_populated__";`;await(await p.compileScript(c,{filename:"populate-error.js"})).run(u,{timeout:5e3})}for(let i=0;i<w.length;i++){let a=w[i],c=`postHook #${i+1}`,g=`
|
|
934
954
|
(async () => {
|
|
935
955
|
"use strict";
|
|
936
|
-
${
|
|
956
|
+
${a.code}
|
|
937
957
|
})().then((__r) => {
|
|
938
958
|
if (__r !== undefined) $ctx.$data = __r;
|
|
939
959
|
return "__posthook_done__";
|
|
940
|
-
});`;try{await(await $(
|
|
960
|
+
});`;try{await(await $(p,g,`${c}.js`)).run(u,{timeout:f,promise:!0})}catch{}}if(h){let i=D(h,k),a;try{let d=await(await $(p,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(u,{timeout:5e3,promise:!0});a=JSON.parse(d)}catch{}await A({type:"result",id:t,success:!1,error:{message:i.message,statusCode:i.statusCode,errorPath:i.errorPath,stack:h.stack,code:h.code,details:i.details},ctxChanges:a});return}let M=await Y(p,u);await A({type:"result",id:t,success:!0,...M})}catch(h){await ce(t,h)}finally{T.delete(t),F.delete(t),await ie(v,u),le(t)}}function le(e){O.cleanupTaskPackages(e)}function He(){O.shutdownPackageRuntime()}process.on("exit",He);async function Y(e,t,s){if(s!==void 0){let l=`__extractResult(${JSON.stringify(s)}, false)`,f=await(await e.compileScript(l,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(f)}let o=await(await $(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(o)}
|