zorigami
Version:
a package for managing web workers
52 lines • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var provide_sibling_ports_1 = require("../worker_api/provide_sibling_ports");
var provide_name_1 = require("../shared/provide_name");
var provide_api_config_1 = require("../shared/provide_api_config");
var zorigami_types_1 = require("../zorigami_types");
var default_handler = function (event, respond) {
console.warn('default_handler: throwing error', event.data, provide_name_1.default.getWorkerName());
throw new Error(JSON.stringify(event));
};
var generic_worker_api = {};
function dispatchMessage(event) {
var worker_name = event.data.worker_name || 'Error: worker name not found';
var response_provider = provide_sibling_ports_1.default.getPortInterface(worker_name);
if (zorigami_types_1.isCustomPort(response_provider)) {
// console.log('found response_provider', event);
var respond = response_provider.createResponse(event);
var built_in_handler = generic_worker_api[event.data.type];
try {
if (built_in_handler) {
console.log('calling built_in_handler for ', event.data);
built_in_handler(event, respond);
}
else {
console.log('dispatching custom worker registered event', event.data);
provide_api_config_1.default[event.data.type](event, respond);
}
}
catch (error) {
console.warn('dispatchMessage failed with error', error);
/* re-throw the error */
throw error;
}
/*
this throws in the new version because the response function
is undefined. normally the 'worker_accept_and_trade_api_with_main'
method would just ignore the undefined response function but
in the TS version it just never gets called
*/
}
else {
var respond = function () { return undefined; };
try {
generic_worker_api[event.data.type](event, respond);
}
catch (inner_error) {
throw new Error(JSON.stringify(provide_name_1.default.getWorkerName()) + " ICustomWorkerPort\n for worker_name: " + JSON.stringify(event.data.worker_name) + " not found\n " + JSON.stringify(event.data) + "\n " + JSON.stringify(inner_error) + "\n ");
}
}
}
exports.default = dispatchMessage;
//# sourceMappingURL=dispatch_message.js.map