UNPKG

@openzeppelin/defender-serverless

Version:
47 lines (46 loc) 2.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = __importDefault(require("../utils/logger")); const utils_1 = require("../utils"); class DefenderInvoke { constructor(serverless, options, logging) { this.serverless = serverless; this.options = options; this.logging = logging; this.log = logger_1.default.getInstance(); this.hooks = { 'before:invoke:invoke': () => this.validateKeys(), 'invoke:invoke': this.invoke.bind(this), }; } validateKeys() { this.teamKey = (0, utils_1.getTeamAPIkeysOrThrow)(this.serverless); } async invoke() { try { this.log.notice('========================================================'); this.log.progress('logs', `Running Defender Invoke on stack function: ${this.options.function}`); const payload = JSON.parse(this.options?.data ?? '{}'); const client = (0, utils_1.getAutotaskClient)(this.teamKey); const list = (await client.list()).items; const defenderAutotask = (0, utils_1.getEquivalentResourceByKey)(this.options.function, list); if (defenderAutotask) { const response = await client.runAutotask(defenderAutotask.autotaskId, payload); this.log.notice(JSON.stringify(response, null, 2)); if (!process.stdout.isTTY) this.log.stdOut(JSON.stringify(response, null, 2)); } else { this.log.error(`No autotask with identifier: ${this.options.function} found.`); } this.log.notice('========================================================'); } catch (e) { this.log.tryLogDefenderError(e); } } } exports.default = DefenderInvoke;