@coherentglobal/wasm-runner 0.0.22
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/README.md +263 -0
- package/dist/browser/template/main.template.d.ts +1 -0
- package/dist/browser/template/main.template.js +13 -0
- package/dist/browser/template/main.template.js.map +1 -0
- package/dist/browser/template/runtime.template.d.ts +1 -0
- package/dist/browser/template/runtime.template.js +926 -0
- package/dist/browser/template/runtime.template.js.map +1 -0
- package/dist/browser/template/worker.template.d.ts +3 -0
- package/dist/browser/template/worker.template.js +39 -0
- package/dist/browser/template/worker.template.js.map +1 -0
- package/dist/browser/template.d.ts +1 -0
- package/dist/browser/template.js +14 -0
- package/dist/browser/template.js.map +1 -0
- package/dist/browser.d.ts +63 -0
- package/dist/browser.js +308 -0
- package/dist/browser.js.map +1 -0
- package/dist/error.d.ts +56 -0
- package/dist/error.js +112 -0
- package/dist/error.js.map +1 -0
- package/dist/node/template/main.template.ejs +70 -0
- package/dist/node.d.ts +66 -0
- package/dist/node.js +375 -0
- package/dist/node.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +15 -0
- package/dist/utils.js +122 -0
- package/dist/utils.js.map +1 -0
- package/package.json +79 -0
- package/tsconfig.json +22 -0
package/dist/error.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable no-useless-constructor */
|
|
4
|
+
/* eslint-disable max-classes-per-file */
|
|
5
|
+
class WasmError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
}
|
|
9
|
+
get v3() {
|
|
10
|
+
return {
|
|
11
|
+
error_category: this.name,
|
|
12
|
+
error_type: this.type,
|
|
13
|
+
message: this.message,
|
|
14
|
+
severity: this.severity,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
get modelInfo() {
|
|
18
|
+
return {
|
|
19
|
+
uuid: this.uuid,
|
|
20
|
+
input: this.input
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Model Errors
|
|
25
|
+
class ModelError extends WasmError {
|
|
26
|
+
constructor(message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.name = "model_error";
|
|
29
|
+
this.type = "error.MODEL_ERROR";
|
|
30
|
+
this.severity = "low";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class MissingModelError extends ModelError {
|
|
34
|
+
constructor(uuid) {
|
|
35
|
+
super(`Model ${uuid} cannot be found`);
|
|
36
|
+
this.name = "missing_model_error";
|
|
37
|
+
this.uuid = uuid;
|
|
38
|
+
this.type = "error.MISSING_MODEL_ERROR";
|
|
39
|
+
this.severity = "low";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
class ModelInitializationError extends ModelError {
|
|
43
|
+
constructor(uuid) {
|
|
44
|
+
super(`Model ${uuid} was not initialized`);
|
|
45
|
+
this.name = "model_not_initialized_error";
|
|
46
|
+
this.uuid = uuid;
|
|
47
|
+
this.type = "error.MODEL_NOT_INITIALIZED_ERROR";
|
|
48
|
+
this.severity = "low";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class ParameterRequiredError extends WasmError {
|
|
52
|
+
constructor(parameter, inputs = "") {
|
|
53
|
+
super(`WasmRunner failed to find ${parameter} parameter`);
|
|
54
|
+
this.name = "missing_parameter";
|
|
55
|
+
this.parameter = parameter;
|
|
56
|
+
this.type = "error.MISSING_PARAMETER";
|
|
57
|
+
this.severity = "low";
|
|
58
|
+
this.input = inputs;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Browser Errors
|
|
62
|
+
class BrowserError extends WasmError {
|
|
63
|
+
constructor(message) {
|
|
64
|
+
super(message);
|
|
65
|
+
this.name = "browser_error";
|
|
66
|
+
this.type = "error.BROWSER_ERROR";
|
|
67
|
+
this.severity = "low";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
class NotSupportedError extends BrowserError {
|
|
71
|
+
constructor(support, uuid = "", input = {}) {
|
|
72
|
+
super(`${support} support is required`);
|
|
73
|
+
this.name = "not_supported_error";
|
|
74
|
+
this.type = "error.NOT_SUPPORTED";
|
|
75
|
+
this.severity = "high";
|
|
76
|
+
this.uuid = uuid;
|
|
77
|
+
this.input = input;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
class ModelValidationError extends ModelError {
|
|
81
|
+
constructor(errors, uuid, results) {
|
|
82
|
+
super("Model validation error");
|
|
83
|
+
this.name = "validation_error";
|
|
84
|
+
this.type = "error.VALIDATION";
|
|
85
|
+
this.severity = "low";
|
|
86
|
+
this.errors = errors;
|
|
87
|
+
this.rawResult = results;
|
|
88
|
+
this.uuid = uuid;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
class ModelExecuteError extends ModelError {
|
|
92
|
+
constructor(errors, uuid, input) {
|
|
93
|
+
super("Model execution error");
|
|
94
|
+
this.name = "execution_error";
|
|
95
|
+
this.type = "error.EXECUTION";
|
|
96
|
+
this.severity = "low";
|
|
97
|
+
this.errors = errors;
|
|
98
|
+
this.input = input;
|
|
99
|
+
this.uuid = uuid;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.default = {
|
|
103
|
+
ModelError,
|
|
104
|
+
ModelExecuteError,
|
|
105
|
+
MissingModelError,
|
|
106
|
+
ModelValidationError,
|
|
107
|
+
ModelInitializationError,
|
|
108
|
+
ParameterRequiredError,
|
|
109
|
+
BrowserError,
|
|
110
|
+
NotSupportedError,
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const { parentPort, workerData } = require('worker_threads');
|
|
2
|
+
var model = require('<%= runtime %>')
|
|
3
|
+
|
|
4
|
+
let wasm;
|
|
5
|
+
let wb;
|
|
6
|
+
let modelName = '<%= modelName %>';
|
|
7
|
+
let isReady = false;
|
|
8
|
+
|
|
9
|
+
let execute = function (req) { return false }
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
model().then(instance => {
|
|
13
|
+
try {
|
|
14
|
+
execute = function (req) {
|
|
15
|
+
try {
|
|
16
|
+
if(req === "isReady") {
|
|
17
|
+
return isReady
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const enc = new TextEncoder();
|
|
21
|
+
const encoded = enc.encode(req)
|
|
22
|
+
|
|
23
|
+
var inBuffer = instance._malloc(encoded.length);
|
|
24
|
+
|
|
25
|
+
var bytes_per_element = encoded.BYTES_PER_ELEMENT;
|
|
26
|
+
instance.HEAP8.set(encoded, inBuffer / bytes_per_element);
|
|
27
|
+
|
|
28
|
+
const outBuffer = instance._malloc(8);
|
|
29
|
+
|
|
30
|
+
const outPtr = instance._node_calc_v3(wb, inBuffer, encoded.length, outBuffer);
|
|
31
|
+
|
|
32
|
+
var offset = instance.getValue(outBuffer, "i64");
|
|
33
|
+
|
|
34
|
+
var dnc = new TextDecoder("utf-8");
|
|
35
|
+
|
|
36
|
+
const resultData = new Uint8Array(instance.HEAPU8.subarray(outPtr, outPtr + offset));
|
|
37
|
+
|
|
38
|
+
const result = dnc.decode(resultData).slice()
|
|
39
|
+
|
|
40
|
+
instance._free(inBuffer);
|
|
41
|
+
instance._free(outBuffer);
|
|
42
|
+
instance._free(outPtr);
|
|
43
|
+
|
|
44
|
+
return result
|
|
45
|
+
} catch(err) {
|
|
46
|
+
throw err
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
wb = instance._construct();
|
|
51
|
+
console.log(`Worker ${modelName} initiated`);
|
|
52
|
+
isReady = true;
|
|
53
|
+
return Promise.resolve()
|
|
54
|
+
} catch (err) {
|
|
55
|
+
instance = undefined
|
|
56
|
+
console.log(`Worker ${modelName} failed to initiate`);
|
|
57
|
+
return Promise.reject(err)
|
|
58
|
+
}
|
|
59
|
+
}).catch(err => console.error(err))
|
|
60
|
+
} catch(err) {}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
parentPort.on('message', (param) => {
|
|
65
|
+
if (typeof param !== 'string' && param !== "isReady") {
|
|
66
|
+
throw new Error('Param must be a json string.');
|
|
67
|
+
}
|
|
68
|
+
const result = execute(param);
|
|
69
|
+
parentPort.postMessage(result);
|
|
70
|
+
});
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import tmp from "tmp";
|
|
2
|
+
import { NodeModel, RunnerConfig } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* WASM runner config
|
|
5
|
+
* @typedef {Object} RunnerConfig
|
|
6
|
+
* @property {string} id - Model id or version_uuid
|
|
7
|
+
* @property {string} url - Model url
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Input object
|
|
11
|
+
* @typedef {Object} InputObject
|
|
12
|
+
* @property {Object} request_data - Request input date
|
|
13
|
+
* @property {Object} request_meta - Request input meta
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* WasmRunner class, responsible for managing model and it's lifecycle
|
|
17
|
+
*
|
|
18
|
+
* @class
|
|
19
|
+
* @classdesc WasmRunner class, responsible for managing model and it's lifecycle
|
|
20
|
+
*/
|
|
21
|
+
export declare class WasmRunner {
|
|
22
|
+
_tempWorkerFolder: tmp.DirSyncObject;
|
|
23
|
+
_tempModelFolder: tmp.DirSyncObject;
|
|
24
|
+
license: string;
|
|
25
|
+
models: any[];
|
|
26
|
+
/**
|
|
27
|
+
* Create new Wasm Runner instance
|
|
28
|
+
*
|
|
29
|
+
* @param {RunnerConfig} wasmRunnerConfig
|
|
30
|
+
*/
|
|
31
|
+
constructor(wasmRunnerConfig: RunnerConfig, license?: string);
|
|
32
|
+
/**
|
|
33
|
+
* Initialize wasm runner fetching model from remote server
|
|
34
|
+
*
|
|
35
|
+
* @async
|
|
36
|
+
* @function initialize
|
|
37
|
+
*/
|
|
38
|
+
initialize(license?: string): Promise<void>;
|
|
39
|
+
_initializeModelInstance(m: NodeModel): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Append and initialized new model to runner
|
|
42
|
+
* @param {RunnerConfig} modelConfig
|
|
43
|
+
* @returns Promise
|
|
44
|
+
*/
|
|
45
|
+
append(modelConfig: RunnerConfig): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Remove model from runner
|
|
48
|
+
* @param {string} id Model id
|
|
49
|
+
*/
|
|
50
|
+
remove(id: string): void;
|
|
51
|
+
_parseError(rawResponse: any): Object;
|
|
52
|
+
_getModel(id: string): NodeModel;
|
|
53
|
+
/**
|
|
54
|
+
* Check if model existed
|
|
55
|
+
* @param {string} id Model id
|
|
56
|
+
* @returns boolean
|
|
57
|
+
*/
|
|
58
|
+
isExist(id: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Perform calculation. The runner will use request_meta.version_uuid of input argument to locate model
|
|
61
|
+
* @async
|
|
62
|
+
* @param {InputObject} input - Input data for calculation
|
|
63
|
+
* @returns {Promise<Object>} - Response model data
|
|
64
|
+
*/
|
|
65
|
+
execute(input: any, id?: string): Promise<Object>;
|
|
66
|
+
}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
31
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.WasmRunner = void 0;
|
|
35
|
+
/* eslint-disable consistent-return */
|
|
36
|
+
/* eslint-disable no-shadow */
|
|
37
|
+
/* eslint-disable camelcase */
|
|
38
|
+
/* eslint-disable no-param-reassign */
|
|
39
|
+
/* eslint-disable no-underscore-dangle */
|
|
40
|
+
const tmp_1 = __importDefault(require("tmp"));
|
|
41
|
+
const unzipper_1 = require("unzipper");
|
|
42
|
+
const ejs_1 = __importDefault(require("ejs"));
|
|
43
|
+
const stream_1 = __importDefault(require("stream"));
|
|
44
|
+
const fs_1 = __importStar(require("fs"));
|
|
45
|
+
const path_1 = __importDefault(require("path"));
|
|
46
|
+
const util_1 = require("util");
|
|
47
|
+
const got_1 = __importDefault(require("got"));
|
|
48
|
+
const node_worker_threads_pool_1 = require("node-worker-threads-pool");
|
|
49
|
+
const utils = __importStar(require("./utils"));
|
|
50
|
+
const error_1 = __importDefault(require("./error"));
|
|
51
|
+
const pipeline = (0, util_1.promisify)(stream_1.default.pipeline);
|
|
52
|
+
function replaceRegexInFile(file, search, replace) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
let contents = yield fs_1.default.promises.readFile(file, "utf8");
|
|
55
|
+
let replaced_contents = contents.replace(search, replace);
|
|
56
|
+
let tmpfile = `${file}.jstmpreplace`;
|
|
57
|
+
yield fs_1.default.promises.writeFile(tmpfile, replaced_contents, "utf8");
|
|
58
|
+
yield fs_1.default.promises.rename(tmpfile, file);
|
|
59
|
+
return true;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const unzipFiles = (id, url, workerFolder) => {
|
|
63
|
+
let js;
|
|
64
|
+
let wasm;
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
const stream = fs_1.default.createReadStream(url).pipe((0, unzipper_1.Parse)());
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
stream.on("entry", (entry) => {
|
|
69
|
+
const type = entry.type;
|
|
70
|
+
if (type === "File" && entry.path.indexOf("__MACOSX") === -1) {
|
|
71
|
+
const fileName = tmp_1.default.fileSync({
|
|
72
|
+
dir: workerFolder,
|
|
73
|
+
name: entry.path,
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
mode: 0o750,
|
|
76
|
+
});
|
|
77
|
+
const writeStream = fs_1.default.createWriteStream(fileName.name);
|
|
78
|
+
if (path_1.default.extname(entry.path) === ".js") {
|
|
79
|
+
js = fileName.name;
|
|
80
|
+
}
|
|
81
|
+
if (path_1.default.extname(entry.path) === ".wasm") {
|
|
82
|
+
wasm = fileName.name;
|
|
83
|
+
}
|
|
84
|
+
return entry.pipe(writeStream);
|
|
85
|
+
}
|
|
86
|
+
return entry.autodrain();
|
|
87
|
+
});
|
|
88
|
+
stream.on("finish", () => {
|
|
89
|
+
if (!js)
|
|
90
|
+
return reject(new Error("Missing runtime file"));
|
|
91
|
+
if (!wasm)
|
|
92
|
+
return reject(new Error("Missing engine file"));
|
|
93
|
+
if (js && wasm)
|
|
94
|
+
return resolve({
|
|
95
|
+
js,
|
|
96
|
+
wasm,
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
stream.on("error", (error) => reject(error));
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
const template = ejs_1.default.compile(fs_1.default.readFileSync(path_1.default.join(__dirname, "node/template/main.template.ejs"), {
|
|
103
|
+
encoding: "utf8",
|
|
104
|
+
flag: "r",
|
|
105
|
+
}), { async: false });
|
|
106
|
+
const createModelInstance = (id, url, workerFolder) => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
const tempFolder = tmp_1.default.dirSync({
|
|
108
|
+
dir: workerFolder,
|
|
109
|
+
name: `${id}-${Date.now()}`,
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
mode: 0o750,
|
|
112
|
+
});
|
|
113
|
+
const modelPack = yield unzipFiles(id, url, tempFolder.name);
|
|
114
|
+
const modelName = id;
|
|
115
|
+
yield replaceRegexInFile(modelPack.js, `wasmBinaryFile="${path_1.default.basename(modelPack.wasm)}"`,
|
|
116
|
+
// `scriptDirectory="";wasmBinaryFile="data:application/octet-stream;base64,${content}"`
|
|
117
|
+
`scriptDirectory="";wasmBinaryFile="${modelPack.wasm}"`);
|
|
118
|
+
const fileContent = template({
|
|
119
|
+
runtime: modelPack.js.replace(".js", ""),
|
|
120
|
+
model: modelPack.wasm,
|
|
121
|
+
modelName,
|
|
122
|
+
});
|
|
123
|
+
const workerPath = tmp_1.default.fileSync({
|
|
124
|
+
dir: tempFolder.name,
|
|
125
|
+
name: `worker-${id}.js`,
|
|
126
|
+
// @ts-ignore
|
|
127
|
+
mode: 0o750,
|
|
128
|
+
}).name;
|
|
129
|
+
yield fs_1.default.promises.writeFile(workerPath, fileContent);
|
|
130
|
+
const instancePool = new node_worker_threads_pool_1.StaticPool({
|
|
131
|
+
size: 1,
|
|
132
|
+
task: workerPath,
|
|
133
|
+
});
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
let limit = 0;
|
|
136
|
+
const checkModelStatus = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
const isReady = yield instancePool.exec("isReady");
|
|
138
|
+
if (isReady) {
|
|
139
|
+
resolve(instancePool);
|
|
140
|
+
}
|
|
141
|
+
else if (limit >= 2000) { // 1 second
|
|
142
|
+
reject(new Error("Model initialize issue"));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
setTimeout(checkModelStatus, 5);
|
|
146
|
+
// eslint-disable-next-line no-plusplus
|
|
147
|
+
limit++;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
setTimeout(checkModelStatus, 5);
|
|
151
|
+
});
|
|
152
|
+
// return {};
|
|
153
|
+
});
|
|
154
|
+
const createModelInstanceFromURL = (id, url, workerFolder, modelFolder) => __awaiter(void 0, void 0, void 0, function* () {
|
|
155
|
+
try {
|
|
156
|
+
const modelPath = path_1.default.join(modelFolder, `${id}.zip`);
|
|
157
|
+
const downloadStream = got_1.default.stream(url);
|
|
158
|
+
const fileWriterStream = (0, fs_1.createWriteStream)(modelPath);
|
|
159
|
+
yield pipeline(downloadStream, fileWriterStream);
|
|
160
|
+
const instance = yield createModelInstance(id, modelPath, workerFolder);
|
|
161
|
+
return instance;
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
throw new error_1.default.ModelError(`Error createModelInstanceFromURL: id:${id}, url:${url}, error:${err.message}`);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
/**
|
|
168
|
+
* WASM runner config
|
|
169
|
+
* @typedef {Object} RunnerConfig
|
|
170
|
+
* @property {string} id - Model id or version_uuid
|
|
171
|
+
* @property {string} url - Model url
|
|
172
|
+
*/
|
|
173
|
+
/**
|
|
174
|
+
* Input object
|
|
175
|
+
* @typedef {Object} InputObject
|
|
176
|
+
* @property {Object} request_data - Request input date
|
|
177
|
+
* @property {Object} request_meta - Request input meta
|
|
178
|
+
*/
|
|
179
|
+
/**
|
|
180
|
+
* WasmRunner class, responsible for managing model and it's lifecycle
|
|
181
|
+
*
|
|
182
|
+
* @class
|
|
183
|
+
* @classdesc WasmRunner class, responsible for managing model and it's lifecycle
|
|
184
|
+
*/
|
|
185
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
186
|
+
class WasmRunner {
|
|
187
|
+
/**
|
|
188
|
+
* Create new Wasm Runner instance
|
|
189
|
+
*
|
|
190
|
+
* @param {RunnerConfig} wasmRunnerConfig
|
|
191
|
+
*/
|
|
192
|
+
constructor(wasmRunnerConfig, license = "") {
|
|
193
|
+
this._tempWorkerFolder = tmp_1.default.dirSync({
|
|
194
|
+
prefix: "wasmserver_worker",
|
|
195
|
+
// @ts-ignore
|
|
196
|
+
mode: 0o750,
|
|
197
|
+
});
|
|
198
|
+
this._tempModelFolder = tmp_1.default.dirSync({
|
|
199
|
+
prefix: "wasmserver_model",
|
|
200
|
+
// @ts-ignore
|
|
201
|
+
mode: 0o750,
|
|
202
|
+
});
|
|
203
|
+
this.license = license;
|
|
204
|
+
this.models = [];
|
|
205
|
+
if (!utils.isEmpty(wasmRunnerConfig)) {
|
|
206
|
+
if (Array.isArray(wasmRunnerConfig)) {
|
|
207
|
+
this.models = wasmRunnerConfig.map((wsconfig) => ({
|
|
208
|
+
id: wsconfig.id,
|
|
209
|
+
url: wsconfig.url,
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
else if (typeof wasmRunnerConfig === "object") {
|
|
213
|
+
this.models = [
|
|
214
|
+
{
|
|
215
|
+
id: wasmRunnerConfig.id,
|
|
216
|
+
url: wasmRunnerConfig.url,
|
|
217
|
+
},
|
|
218
|
+
];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Initialize wasm runner fetching model from remote server
|
|
224
|
+
*
|
|
225
|
+
* @async
|
|
226
|
+
* @function initialize
|
|
227
|
+
*/
|
|
228
|
+
initialize(license = "") {
|
|
229
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
yield Promise.all(this.models.map((m) => __awaiter(this, void 0, void 0, function* () {
|
|
231
|
+
yield this._initializeModelInstance(m);
|
|
232
|
+
})));
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
_initializeModelInstance(m) {
|
|
236
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
+
if (utils.isHttpURL(m.url)) {
|
|
238
|
+
const instance = yield createModelInstanceFromURL(m.id, m.url, this._tempWorkerFolder.name, this._tempModelFolder.name);
|
|
239
|
+
m.ready = true;
|
|
240
|
+
m.worker = instance;
|
|
241
|
+
return Promise.resolve();
|
|
242
|
+
}
|
|
243
|
+
if (yield utils.isPath(m.url)) {
|
|
244
|
+
const instance = yield createModelInstance(m.id, m.url, this._tempWorkerFolder.name);
|
|
245
|
+
m.ready = true;
|
|
246
|
+
m.worker = instance;
|
|
247
|
+
return Promise.resolve();
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Append and initialized new model to runner
|
|
253
|
+
* @param {RunnerConfig} modelConfig
|
|
254
|
+
* @returns Promise
|
|
255
|
+
*/
|
|
256
|
+
append(modelConfig) {
|
|
257
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
258
|
+
if (this.isExist(modelConfig.id)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const model = {
|
|
262
|
+
id: modelConfig.id,
|
|
263
|
+
url: modelConfig.url,
|
|
264
|
+
};
|
|
265
|
+
yield this._initializeModelInstance(model);
|
|
266
|
+
this.models.push(model);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Remove model from runner
|
|
271
|
+
* @param {string} id Model id
|
|
272
|
+
*/
|
|
273
|
+
remove(id) {
|
|
274
|
+
if (this.isExist(id)) {
|
|
275
|
+
this.models.filter((m) => m.id !== id);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
_parseError(rawResponse) {
|
|
279
|
+
var _a;
|
|
280
|
+
let errors = (_a = rawResponse.response_data) === null || _a === void 0 ? void 0 : _a.errors.reduce((prev, curr) => {
|
|
281
|
+
const { source_path } = curr;
|
|
282
|
+
if (!source_path) {
|
|
283
|
+
return prev;
|
|
284
|
+
}
|
|
285
|
+
const keys = source_path.split(".");
|
|
286
|
+
let errProp;
|
|
287
|
+
const maxIndex = keys.length - 1;
|
|
288
|
+
keys.forEach((k, index) => {
|
|
289
|
+
if (index === 0) {
|
|
290
|
+
if (!prev[k]) {
|
|
291
|
+
prev[k] = {};
|
|
292
|
+
}
|
|
293
|
+
errProp = prev[k];
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
if (!errProp[k]) {
|
|
297
|
+
if (index === maxIndex) {
|
|
298
|
+
errProp[k] = [];
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
errProp[k] = {};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
errProp = errProp[k];
|
|
305
|
+
}
|
|
306
|
+
if (index === maxIndex) {
|
|
307
|
+
if (!Array.isArray(errProp)) {
|
|
308
|
+
const error = new error_1.default.BrowserError(`Parsing response error at errors ${source_path}`);
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
errProp.push({
|
|
313
|
+
message: curr.message,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
return prev;
|
|
319
|
+
}, {});
|
|
320
|
+
errors = { request_data: errors };
|
|
321
|
+
return errors;
|
|
322
|
+
}
|
|
323
|
+
_getModel(id) {
|
|
324
|
+
const model = this.models.find((m) => m.id === id);
|
|
325
|
+
if (!model)
|
|
326
|
+
throw new error_1.default.MissingModelError(id);
|
|
327
|
+
if (!model.ready)
|
|
328
|
+
throw new error_1.default.ModelInitializationError(id);
|
|
329
|
+
return model;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Check if model existed
|
|
333
|
+
* @param {string} id Model id
|
|
334
|
+
* @returns boolean
|
|
335
|
+
*/
|
|
336
|
+
isExist(id) {
|
|
337
|
+
try {
|
|
338
|
+
return !!this._getModel(id);
|
|
339
|
+
}
|
|
340
|
+
catch (err) {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Perform calculation. The runner will use request_meta.version_uuid of input argument to locate model
|
|
346
|
+
* @async
|
|
347
|
+
* @param {InputObject} input - Input data for calculation
|
|
348
|
+
* @returns {Promise<Object>} - Response model data
|
|
349
|
+
*/
|
|
350
|
+
execute(input, id = undefined) {
|
|
351
|
+
var _a;
|
|
352
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
353
|
+
console.log(`EXECUTING: ${id}, input: ${JSON.stringify(input)}`);
|
|
354
|
+
const version_uuid = id || ((_a = input.request_meta) === null || _a === void 0 ? void 0 : _a.version_uuid);
|
|
355
|
+
if (input) {
|
|
356
|
+
console.log(`EXECUTING: ${id}, input: ${JSON.stringify(input)}`);
|
|
357
|
+
const model = this._getModel(version_uuid);
|
|
358
|
+
try {
|
|
359
|
+
const result = yield model.worker.exec(JSON.stringify(input));
|
|
360
|
+
return JSON.parse(result);
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
console.log('ERROR---------');
|
|
364
|
+
console.log(err);
|
|
365
|
+
throw new error_1.default.ModelExecuteError(err.message, version_uuid, input);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
throw new error_1.default.ParameterRequiredError("request_meta.version_uuid", input);
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.WasmRunner = WasmRunner;
|
|
375
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StaticPool } from "node-worker-threads-pool";
|
|
2
|
+
export interface Files {
|
|
3
|
+
js: string;
|
|
4
|
+
wasm: string;
|
|
5
|
+
}
|
|
6
|
+
export interface RunnerConfig {
|
|
7
|
+
id: string;
|
|
8
|
+
url: string;
|
|
9
|
+
}
|
|
10
|
+
interface ZipContent {
|
|
11
|
+
path: string;
|
|
12
|
+
url: string;
|
|
13
|
+
}
|
|
14
|
+
export interface UnzippedFiles {
|
|
15
|
+
js: ZipContent;
|
|
16
|
+
wasm: ZipContent;
|
|
17
|
+
}
|
|
18
|
+
export interface NodeModel {
|
|
19
|
+
id: any;
|
|
20
|
+
url: any;
|
|
21
|
+
ready?: boolean;
|
|
22
|
+
worker?: StaticPool<any, any>;
|
|
23
|
+
results?: any;
|
|
24
|
+
}
|
|
25
|
+
export interface Model {
|
|
26
|
+
id: any;
|
|
27
|
+
url: any;
|
|
28
|
+
ready?: boolean;
|
|
29
|
+
worker?: Worker;
|
|
30
|
+
results?: any;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|