@openzeppelin/defender-as-code
Version:
Configure your Defender environment via code
50 lines (49 loc) • 2.1 kB
JavaScript
"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;