@ply-ct/ply
Version:
REST API Automated Testing
102 lines • 4.33 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExecFactory = void 0;
const process = __importStar(require("process"));
const path = __importStar(require("path"));
const request_1 = require("./request");
const start_1 = require("./start");
const stop_1 = require("./stop");
const decide_1 = require("./decide");
const delay_1 = require("./delay");
const value_1 = require("./value");
const subflow_1 = require("./subflow");
const websocket_1 = require("./websocket");
const log_1 = require("./log");
const sync_1 = require("./sync");
const legacy_1 = require("./legacy");
class ExecFactory {
static async create(context) {
var _a, _b;
const step = context.step;
if (step.path === 'start')
return new start_1.StartExec();
else if (step.path === 'stop')
return new stop_1.StopExec();
else if (step.path === 'request')
return new request_1.RequestExec();
else if (step.path === 'decide')
return new decide_1.DecideExec();
else if (step.path === 'delay')
return new delay_1.DelayExec();
else if (step.path === 'log')
return new log_1.LogExec();
else if (step.path === 'value')
return new value_1.ValueExec();
else if (step.path === 'subflow')
return new subflow_1.SubflowExec();
else if (step.path === 'websocket')
return new websocket_1.WebsocketExec();
else if (step.path === 'sync')
return new sync_1.SyncExec();
else if (step.path === 'typescript' || step.path.endsWith('.ts')) {
const type = step.path === 'typescript' ? 'TypeScript' : 'Custom';
let tsFile;
if (type === 'TypeScript') {
if (!((_a = step.attributes) === null || _a === void 0 ? void 0 : _a.tsFile)) {
throw new Error(`Step ${step.id} missing attribute: tsFile`);
}
tsFile = step.attributes.tsFile;
}
else {
tsFile = step.path;
}
if ((_b = context.runOptions) === null || _b === void 0 ? void 0 : _b.stepsBase) {
tsFile = `${context.runOptions.stepsBase}/${tsFile}`;
}
if (!path.isAbsolute(tsFile))
tsFile = path.join(process.cwd(), tsFile);
tsFile = path.normalize(tsFile);
const mod = await Promise.resolve().then(() => __importStar(require(tsFile)));
if (typeof mod.default !== 'function') {
throw new Error(`${type} step module must export PlyExec implementor class as default: ${tsFile}`);
}
let exec;
if (mod.default.legacy) {
exec = new legacy_1.LegacyExec(new mod.default(step, context.stepInstance, context.logger));
}
else {
exec = new mod.default();
}
if (typeof exec.run !== 'function') {
throw new Error(`${type} step module must implement run() method: ${tsFile}`);
}
return exec;
}
throw new Error(`Unsupported step: ${step.path}`);
}
}
exports.ExecFactory = ExecFactory;
//# sourceMappingURL=factory.js.map