UNPKG

@openzeppelin/defender-as-code

Version:
50 lines (49 loc) 2.1 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.getActionClient)(this.teamKey); const list = (await client.list()).items; const defenderAction = (0, utils_1.getEquivalentResourceByKey)(this.options.function, list); if (defenderAction) { const response = await client.runAction(defenderAction.actionId, { actionId: defenderAction.actionId, data: 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 actions with identifier: ${this.options.function} found.`); } this.log.notice('========================================================'); } catch (e) { this.log.tryLogDefenderError(e); } } } exports.default = DefenderInvoke;