From 7f92938a4373fea88ab086304605406cfaeaab89 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Thu, 30 Nov 2023 20:52:53 -0500 Subject: [PATCH] Implemented client in node. Still relies on train.sh. Will consider rewriting it but it works for the moment. --- dist/client.js | 174 ++++++++++++++++++++++++++++++++++++++++ dist/client.js.map | 1 + dist/index.js | 3 +- dist/index.js.map | 2 +- package-lock.json | 122 ++++++---------------------- package.json | 3 +- src/client.ts | 194 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 398 insertions(+), 101 deletions(-) create mode 100644 dist/client.js create mode 100644 dist/client.js.map create mode 100644 src/client.ts diff --git a/dist/client.js b/dist/client.js new file mode 100644 index 0000000..88261ad --- /dev/null +++ b/dist/client.js @@ -0,0 +1,174 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const node_fetch_1 = __importDefault(require("node-fetch")); +const log_1 = require("./log"); +const dotenv_1 = __importDefault(require("dotenv")); +const child_process_1 = require("child_process"); +dotenv_1.default.config(); +const log = (0, log_1.createLog)('client'); +class Client { + constructor() { + this.maxJobs = 1; + this.url = 'http://localhost:3333'; + this.jobs = []; + if (typeof process.env.YOLO_WEB_URL !== 'undefined') { + this.url = process.env.YOLO_WEB_URL; + } + this.cron(); + } + cron() { + this.job(); + setInterval(this.job.bind(this), 60 * 1000); + } + job() { + if (this.jobs.length >= this.maxJobs) { + return; + } + this.poll(); + } + async poll() { + const options = { + method: 'GET' + }; + const url = `${this.url}/job`; + let res; + let json; + try { + log.info('Checking for new jobs...'); + res = await (0, node_fetch_1.default)(url, options); + } + catch (err) { + log.error(`ERROR getting ${url}`); + log.error(err); + process.exit(1); + return; + } + try { + json = await res.json(); + } + catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + if (json === null || json.length === 0) { + log.info('No jobs found.'); + return; + } + await this.claim(json[0]); + } + async claim(id) { + const options = { + method: 'POST' + }; + const url = `${this.url}/job/claim/${id}`; + let res; + let json; + try { + log.info(`Claiming job ${id}...`); + res = await (0, node_fetch_1.default)(url, options); + } + catch (err) { + log.error(`ERROR posting to ${url}`); + log.error(err); + process.exit(1); + return; + } + try { + json = await res.json(); + log.info(json); + } + catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + if (this.jobs.indexOf(id) === -1) { + this.jobs.push(id); + log.info(`Claimed job ${id}`); + this.train(json); + } + } + async train(job) { + const cmd = 'bash'; + const args = ['./scripts/train.sh', JSON.stringify(job)]; + const child = (0, child_process_1.spawn)(cmd, args); + child.stdout.on('data', (data) => { + const line = data.toString().trim(); + if (line === '') + return; + log.info(line); + }); + child.stderr.on('data', (data) => { + const line = data.toString().trim(); + if (line === '') + return; + log.info(line); + }); + /*child.on('close', (code : number) => { + log.info(`child process close all stdio with code ${code}`); + });*/ + child.on('exit', (code) => { + log.info(`Train job completed with code ${code}`); + if (code !== 0) { + this.fail(job.id, `Train script exited with code ${code}`); + } + }); + child.on('error', (err) => { + log.error('train job errored out'); + log.error(err); + this.fail(job.id, err.toString()); + }); + } + async fail(id, reason) { + const meta = { + meta: reason + }; + const options = { + method: 'POST', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify(meta) + }; + const url = `${this.url}/job/fail/${id}`; + let res; + let json; + this.removeJob(id); + try { + log.info(`Failed job ${id}...`); + res = await (0, node_fetch_1.default)(url, options); + } + catch (err) { + log.error(`ERROR posting to ${url}`); + log.error(err); + process.exit(1); + return; + } + try { + json = await res.json(); + log.info(json); + } + catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + log.info(json); + } + removeJob(id) { + const index = this.jobs.indexOf(id); + if (index !== -1) { + this.jobs.splice(index, 1); + } + } +} +new Client(); +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/dist/client.js.map b/dist/client.js.map new file mode 100644 index 0000000..b3b4b4f --- /dev/null +++ b/dist/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index eb8ac70..930b19f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -21,7 +21,7 @@ const dbPath = (0, path_1.join)(data, 'queue.sqlite'); const app = (0, express_1.default)(); const tmp = (0, os_1.tmpdir)(); const db = new sqlite3_1.Database(dbPath); -let log; +let log = (0, log_1.createLog)('server'); const accepted = ['application/zip', 'application/x-zip-compressed']; const storage = multer_1.default.diskStorage({ destination: function (req, file, cb) { @@ -467,7 +467,6 @@ app.post('/job/fail/:id', async (req, res, next) => { res.json(true); }); app.listen(port, () => { - log = (0, log_1.createLog)('server'); log.info(`yolo_web running on port ${port}`); }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 3b2f508..3edd445 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAE9B,2DAA6B;AAC7B,2BAAsC;AACtC,2BAA4B;AAC5B,+BAA4B;AAC5B,mCAA0C;AAC1C,qCAAmC;AACnC,8DAAqC;AACrC,oDAA4B;AAC5B,+BAAkC;AAClC,+BAA+B;AAC/B,+BAAiC;AAGjC,MAAM,IAAI,GAAY,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5G,MAAM,IAAI,GAAY,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxG,MAAM,MAAM,GAAY,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnD,MAAM,GAAG,GAAa,IAAA,iBAAO,GAAE,CAAC;AAChC,MAAM,GAAG,GAAY,IAAA,WAAM,GAAE,CAAC;AAC9B,MAAM,EAAE,GAAc,IAAI,kBAAQ,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAI,GAAY,CAAC;AAEjB,MAAM,QAAQ,GAAc,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;AAEhF,MAAM,OAAO,GAAG,gBAAM,CAAC,WAAW,CAAC;IAClC,WAAW,EAAE,UAAU,GAAS,EAAE,IAAU,EAAE,EAAQ;QAC/C,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;IACD,QAAQ,EAAE,UAAU,GAAQ,EAAE,IAAS,EAAE,EAAO;QAC5C,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IACnD,CAAC;CACJ,CAAC,CAAC;AAEH,SAAS,UAAU,CAAE,GAAQ,EAAE,IAAS,EAAE,EAAO;IAC7C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAC9C,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACf;SAAM;QACN,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,qBAAqB,CAAC,CAAC;QACzD,EAAE,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD;AACF,CAAC;AAED,MAAM,SAAS,GAAS,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACxD,MAAM,UAAU,GAAS,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AAEzD,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEnD,SAAS,IAAI,CAAE,IAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAU,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAS,IAAA,qBAAgB,EAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM,CAAE,IAAa;IACnC,IAAI;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;KACZ;IAAC,MAAM;QACP,OAAO,KAAK,CAAC;KACb;AACF,CAAC;AAED,KAAK,UAAU,GAAG,CAAE,KAAc,EAAE,IAAa,EAAE,OAAgB,EAAE,KAAc;IAClF,MAAM,KAAK,GAAY;;2BAEG,CAAC;IAC3B,MAAM,EAAE,GAAY,IAAA,SAAI,GAAE,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE;YAClF,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM,CAAE,EAAW;IACjC,MAAM,KAAK,GAAY,uFAAuF,CAAC;IAC/G,IAAI,SAAS,GAAY,SAAS,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACtD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;aAC1B;YACD,MAAM,GAAG,GAAS,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE;gBAC7B,SAAS,GAAG,iBAAiB,CAAA;aAC7B;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;gBACnC,SAAS,GAAG,sBAAsB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;aACvD;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,EAAE;gBACtC,SAAS,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,oBAAoB,EAAE,gBAAgB,CAAC;aACjF;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE;gBACpC,SAAS,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACzC;YACD,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,SAAS,EAAE,CAAC,CAAC;YACnD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI,CAAE,EAAW;IAC/B,MAAM,KAAK,GAAY,oDAAoD,CAAC;IAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACtD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;aACrD;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAE,EAAW;IAClC,MAAM,KAAK,GAAY,iDAAiD,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACtD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;aACzD;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,GAAG;IACjB,MAAM,KAAK,GAAY;;;;;WAKb,CAAC;IACX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACpD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;aACnB;YACD,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,MAAM,KAAK,GAAY;;;;wBAIA,CAAC;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACpD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAE,EAAW;IAChC,MAAM,KAAK,GAAY,2CAA2C,CAAC;IACnE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,IAAU,EAAE,EAAE;YACtD,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;aACzD;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE;gBAC7B,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;aACzD;YACD,MAAM,UAAU,GAAY,4DAA4D,CAAC;YACzF,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE;gBAC1D,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI,CAAE,EAAW,EAAE,IAAoB;IACrD,MAAM,KAAK,GAAY,qEAAqE,CAAC;IAC7F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE;YAC5D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAE,EAAW,EAAE,IAAoB;IACzD,MAAM,KAAK,GAAY,wEAAwE,CAAC;IAChG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkB,EAAE,MAAiB,EAAE,EAAE;QAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAE,IAAI,EAAE,EAAE,CAAE,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE;YAC7D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAa,EAAE,GAAc,EAAE,IAAmB,EAAE,EAAE;IACzE,IAAI,IAAa,CAAC;IAClB,IAAI;QACH,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;KACvD;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;KACjB;IACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAa,EAAE,GAAc,EAAE,IAAmB,EAAE,EAAE;IACvG,IAAI,QAAiB,CAAC;IACtB,IAAI,QAAiB,CAAC;IACtB,IAAI,UAAoB,CAAC;IACzB,IAAI,EAAW,CAAC;IAEhB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAElB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;QACzD,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,0CAA0C,CAAC,CAAC;KACxD;IAED,IAAI;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KAC3D;IAED,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;IACzC,IAAI;QACH,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;KACpC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACf;IAED,IAAI,CAAC,UAAU,EAAE;QAChB,IAAI;YACH,MAAM,kBAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;SAChD;QAAC,OAAO,GAAG,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;SACjB;KACD;SAAM;QACN,GAAG,CAAC,IAAI,CAAC,qBAAqB,QAAQ,oBAAoB,CAAC,CAAC;KAC5D;IAED,IAAI;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACf;IAED,IAAI;QACH,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxE;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,6BAA6B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC1D;IAED,GAAG,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,IAAI,CAAC,IAAI,oKAAoK,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACzP,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAa,EAAE,GAAc,EAAE,IAAmB,EAAE,EAAE;IAC7G,IAAI,QAAiB,CAAC;IACtB,IAAI,IAAI,GAAY,IAAI,CAAC;IACzB,IAAI,EAAW,CAAC;IAEhB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAElB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;QACzD,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,iCAAiC,CAAC,CAAC;KAC/C;IAED,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;QACzC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KACrB;IAED,IAAI;QACH,MAAM,kBAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;KACtC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;KACjB;IAED,IAAI;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACf;IAED,IAAI;QACH,MAAM,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzB;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;KACnD;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAa,EAAE,GAAc,EAAE,IAAmB,EAAE,EAAE;IAChF,IAAI,SAAkB,CAAC;IAEvB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;QACnE,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/B;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,EAAE;QAChC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC9B;IAED,IAAI;QACH,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACxC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,0BAA0B,CAAC,CAAC;KACxC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,SAAS,gBAAgB,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IACjF,IAAI,QAAiB,CAAC;IACtB,IAAI,UAAU,GAAa,KAAK,CAAC;IACjC,IAAI,EAAW,CAAC;IAChB,IAAI,QAAiB,CAAC;IACtB,IAAI,UAAgB,CAAA;IACpB,IAAI,QAAiB,CAAC;IACtB,IAAI,MAAY,CAAC;IAEjB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;QACnE,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/B;IAED,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI;QACH,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;KACpC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;KACjE;IACD,IAAI,CAAC,UAAU,EAAE;QAChB,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;KAClD;IACD,IAAI;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1B;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;KACvC;IACD,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAE7B,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,wBAAwB,QAAQ,MAAM,CAAC,CAAC;IAC7E,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAExC,MAAM,GAAG,IAAA,qBAAgB,EAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IACnF,IAAI,QAAiB,CAAC;IACtB,IAAI,UAAU,GAAa,KAAK,CAAC;IACjC,IAAI,EAAW,CAAC;IAChB,IAAI,WAAoB,CAAC;IACzB,IAAI,UAAgB,CAAA;IACpB,IAAI,QAAiB,CAAC;IACtB,IAAI,MAAY,CAAC;IAEjB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;QACnE,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/B;IAED,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAEnB,IAAI;QACH,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;KAChC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;KACnD;IAED,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,WAAW,MAAM,CAAC,CAAC;IAE5C,IAAI;QACH,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;KACpC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,0CAA0C,EAAE,SAAS,CAAC,CAAC;KACnE;IACD,IAAI,CAAC,UAAU,EAAE;QAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;KACpD;IAED,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAE7B,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAE,wBAAwB,WAAW,MAAM,CAAC,CAAC;IAChF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAExC,MAAM,GAAG,IAAA,qBAAgB,EAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IAC3E,IAAI,MAAiB,CAAC;IAEtB,IAAI;QACH,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;KACrB;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACjC;IAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IAC5E,IAAI,MAAiB,CAAC;IAEtB,IAAI;QACH,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;KACtB;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACjC;IAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IACtF,IAAI,EAAW,CAAC;IAChB,IAAI,MAAY,CAAC;IACjB,IAAI,MAAM,GAAS,EAAE,CAAC;IAEtB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;QACnE,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/B;IAED,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAEnB,IAAI;QACH,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAClC;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAClC;IAED,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAa,EAAE,GAAa,EAAE,IAAmB,EAAE,EAAE;IACrF,IAAI,EAAW,CAAC;IAChB,IAAI,IAAI,GAAY,IAAI,CAAC;IAEzB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE;QACnE,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/B;IAED,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;QACzC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KACrB;IAED,IAAI;QACH,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KAC7B;IAAC,OAAO,GAAG,EAAE;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACjC;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACrB,GAAG,GAAG,IAAA,eAAS,EAAC,QAAQ,CAAC,CAAC;IAC1B,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ea273d8..2940fde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,12 @@ "license": "ISC", "dependencies": { "body-parser": "^1.20.2", + "dotenv": "^16.3.1", "express": "^4.18.2", "lodash": "^4.17.21", "mime": "^3.0.0", "multer": "^1.4.5-lts.1", - "node-fetch": "^3.3.2", + "node-fetch": "^2.7.0", "sqlite3": "^5.1.6", "triple-beam": "^1.4.1", "uuid": "^9.0.0", @@ -74,25 +75,6 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/@npmcli/fs": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", @@ -687,14 +669,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -742,6 +716,17 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -897,28 +882,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -955,17 +918,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -1609,39 +1561,23 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "4.x || >=6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-gyp": { @@ -2348,14 +2284,6 @@ "node": ">= 0.8" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index 1d00520..4257196 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,12 @@ }, "dependencies": { "body-parser": "^1.20.2", + "dotenv": "^16.3.1", "express": "^4.18.2", "lodash": "^4.17.21", "mime": "^3.0.0", "multer": "^1.4.5-lts.1", - "node-fetch": "^3.3.2", + "node-fetch": "^2.7.0", "sqlite3": "^5.1.6", "triple-beam": "^1.4.1", "uuid": "^9.0.0", diff --git a/src/client.ts b/src/client.ts new file mode 100644 index 0000000..c004b29 --- /dev/null +++ b/src/client.ts @@ -0,0 +1,194 @@ +import fetch, { + Request, + Response, +} from 'node-fetch' +import { createLog } from './log'; +import type { Logger } from 'winston'; +import dotenv from 'dotenv'; +import fs from 'fs/promises'; +import { spawn } from 'child_process'; +import type { ChildProcess } from 'child_process'; + +dotenv.config(); + +const log : Logger = createLog('client'); + +class Client { + private maxJobs : number = 1; + private url : string = 'http://localhost:3333'; + private jobs : string[] = []; + + constructor () { + if (typeof process.env.YOLO_WEB_URL !== 'undefined') { + this.url = process.env.YOLO_WEB_URL; + } + this.cron(); + } + + public cron () { + this.job(); + setInterval(this.job.bind(this), 60 * 1000); + } + + private job () { + if (this.jobs.length >= this.maxJobs) { + return; + } + this.poll(); + } + + private async poll () { + const options : any = { + method : 'GET' + }; + const url : string = `${this.url}/job`; + let res : Response; + let json : any; + + try { + log.info('Checking for new jobs...'); + res = await fetch(url, options); + } catch (err) { + log.error(`ERROR getting ${url}`); + log.error(err); + process.exit(1); + return; + } + + try { + json = await res.json(); + } catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + + if (json === null || json.length === 0) { + log.info('No jobs found.'); + return; + } + + await this.claim(json[0]); + } + + private async claim (id : string) { + const options : any = { + method : 'POST' + }; + const url : string = `${this.url}/job/claim/${id}`; + let res : Response; + let json : any; + + try { + log.info(`Claiming job ${id}...`); + res = await fetch(url, options); + } catch (err) { + log.error(`ERROR posting to ${url}`); + log.error(err); + process.exit(1); + return; + } + + try { + json = await res.json(); + log.info(json); + } catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + + if (this.jobs.indexOf(id) === -1) { + this.jobs.push(id); + log.info(`Claimed job ${id}`); + this.train(json); + } + } + + private async train (job : any) { + const cmd : string = 'bash'; + const args : string[] = ['./scripts/train.sh', JSON.stringify(job)]; + const child : ChildProcess = spawn(cmd, args); + + child.stdout.on('data', (data : Buffer) => { + const line : string = data.toString().trim(); + if (line === '') return; + log.info(line); + }); + + child.stderr.on('data', (data : Buffer) => { + const line : string = data.toString().trim(); + if (line === '') return; + log.info(line); + }); + + /*child.on('close', (code : number) => { + log.info(`child process close all stdio with code ${code}`); + });*/ + + child.on('exit', (code : number) => { + log.info(`Train job completed with code ${code}`); + if (code !== 0) { + this.fail(job.id, `Train script exited with code ${code}`) + } + }); + + child.on('error', (err : Error) => { + log.error('train job errored out'); + log.error(err); + this.fail(job.id, err.toString()); + }); + } + + private async fail (id : string, reason : string) { + const meta : any = { + meta : reason + }; + const options : any = { + method : 'POST', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify(meta) + }; + const url : string = `${this.url}/job/fail/${id}`; + let res : Response; + let json : any; + + this.removeJob(id); + + try { + log.info(`Failed job ${id}...`); + res = await fetch(url, options); + } catch (err) { + log.error(`ERROR posting to ${url}`); + log.error(err); + process.exit(1); + return; + } + + try { + json = await res.json(); + log.info(json); + } catch (err) { + log.error('ERROR parsing JSON'); + log.error(err); + process.exit(2); + return; + } + + log.info(json); + } + + private removeJob (id : string) { + const index : number = this.jobs.indexOf(id); + if (index !== -1) { + this.jobs.splice(index, 1); + } + } +} + +new Client() \ No newline at end of file