UNPKG

dbmaster-cli

Version:

Tool for converting tables between Fifa Soccer Games

48 lines (47 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.actionFactory = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const interfaces_1 = require("./interfaces"); const stream_builder_1 = require("./stream-builder"); exports.actionFactory = async (opts) => { const list = []; return new Promise(async (resolve, reject) => { const exists = fs_1.existsSync(path_1.join(opts.input.folder, `${opts.table}.txt`)); if (!exists) { resolve([]); } else { let str = new stream_builder_1.StreamBuilder(opts.input.folder, opts.table, opts.input.fields); let fields = opts.input.fields; for (const action of opts.actions) { switch (action.type) { case interfaces_1.ActionType.ActionFilter: str = str.actionFilter(action.filterFn); break; case interfaces_1.ActionType.ActionValidate: str = str.actionValidate(fields); break; case interfaces_1.ActionType.ActionExtendContract: str = str.actionExtendContract(fields); break; case interfaces_1.ActionType.ActionAppendDefault: fields = opts.output ? opts.output.fields : opts.input.fields; str = str.actionAppendDefault(fields); break; case interfaces_1.ActionType.ActionOnData: str = str.actionOnData(action.onDataFn); break; default: break; } } str = str.onData((buffer) => list.push(JSON.parse(buffer.toString()))); if (opts.output) { str = str.actionWrite(opts.output.folder, opts.output.fields, opts.output.format); } str = str.onFinish(() => resolve(list)).onError(() => reject(list)); } }); };