@gleif-it/vlei-verifier-workflows
Version:
Workflows for vLEI users and vLEI credentials for the vLEI-verifier service
55 lines (54 loc) • 3.03 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorkflowRunner = void 0;
const workflow_state_js_1 = require("../workflow-state.js");
const workflow_step_runners_js_1 = require("./workflow-step-runners.js");
class WorkflowRunner {
constructor(workflow, configJson) {
this.stepRunners = new Map();
this.executedSteps = new Set();
this.configJson = configJson;
this.workflow = workflow;
workflow_state_js_1.WorkflowState.getInstance(this.configJson);
this.registerPredefinedRunners();
}
registerPredefinedRunners() {
this.registerRunner('create_client', new workflow_step_runners_js_1.CreateClientStepRunner());
this.registerRunner('create_aid', new workflow_step_runners_js_1.CreateAidStepRunner());
this.registerRunner('create_registry', new workflow_step_runners_js_1.CreateRegistryStepRunner());
this.registerRunner('issue_credential', new workflow_step_runners_js_1.IssueCredentialStepRunner());
this.registerRunner('revoke_credential', new workflow_step_runners_js_1.RevokeCredentialStepRunner());
this.registerRunner('add_root_of_trust', new workflow_step_runners_js_1.AddRootOfTrustStepRunner());
this.registerRunner('notify_credential_issuee', new workflow_step_runners_js_1.NotifyCredentialIssueeStepRunner());
this.registerRunner('credential_verification', new workflow_step_runners_js_1.CredentialVerificationStepRunner());
}
registerRunner(name, runner) {
this.stepRunners.set(name, runner);
}
runWorkflow() {
return __awaiter(this, void 0, void 0, function* () {
for (const [stepName, step] of Object.entries(this.workflow.workflow.steps)) {
console.log(`Executing: ${step.description}`);
const runner = this.stepRunners.get(step.type);
if (!runner) {
console.log(`No step runner was registered for step '${step.type}'`);
return false;
}
yield runner.run(stepName, step, this.configJson);
this.executedSteps.add(step.id);
}
console.log(`Workflow steps execution finished successfully`);
return true;
});
}
}
exports.WorkflowRunner = WorkflowRunner;