Files
boc/landvex/node_modules/bull/lib/process/sandbox.js
T
Bernt 6989a98d75 feat: Passwordless cross-device authentication
- Arkitektur: docs/auth/passwordless-architecture.md
- Backend: iom/quixzoom-auth-service/ (FastAPI + Redis)
- Webb: quixzoom-market-pages/se/login/ (QR-kod + polling)
- App: iom/quixzoom-app/src/features/auth/ (push + deep links)

Flöde: QR-kod → app-godkännande → webb-inloggad
2026-07-07 07:11:50 +00:00

69 lines
1.7 KiB
JavaScript

'use strict';
const { asyncSend } = require('./utils');
module.exports = function(processFile, childPool) {
return function process(job) {
return childPool.retain(processFile).then(async child => {
let msgHandler;
let exitHandler;
await asyncSend(child, {
cmd: 'start',
job: job
});
const done = new Promise((resolve, reject) => {
msgHandler = function(msg) {
switch (msg.cmd) {
case 'completed':
resolve(msg.value);
break;
case 'failed':
case 'error': {
const err = new Error();
Object.assign(err, msg.value);
reject(err);
break;
}
case 'progress':
job.progress(msg.value);
break;
case 'update':
job.update(msg.value);
break;
case 'discard':
job.discard();
break;
case 'log':
job.log(msg.value);
break;
}
};
exitHandler = (exitCode, signal) => {
reject(
new Error(
'Unexpected exit code: ' + exitCode + ' signal: ' + signal
)
);
};
child.on('message', msgHandler);
child.on('exit', exitHandler);
});
return done.finally(() => {
child.removeListener('message', msgHandler);
child.removeListener('exit', exitHandler);
if (child.exitCode !== null || /SIG.*/.test(child.signalCode)) {
childPool.remove(child);
} else {
childPool.release(child);
}
});
});
};
};