@contrast/reporter
TypeScript icon, indicating that this package has built-in type declarations

1.38.0 • Public • Published

@contrast/reporter

Set up agent IO.

Reporting in the agent follows the PUB-SUB model. Reporters are nothing more than subscribers of messages published by the various agent components. Reporters can collect messages of interest and do with them what they will.

If a reporter want's to communicate with the agent, e.g. send it new settings to update feature behaviors, then it will publish the appropirate message to which the agent component is listening.

Main Ideas

  • Like other services, core will compose @contrast/reporters into the dependency container object.

    const { reporters } require('@contrast/core')();
  • Clients can than await any reporter initialization code and respond to any errors.

    try {
      await reporters.install();
    } catch (error) {
      // maybe we failed to connect to teamserver or something?
      // decide what to do.
    }
  • Other than that, it's just plugging into the agent's event stream.

    // e.g. teamserver Protect reporter pseudocode
    module.exports = function(deps) {
      return {
        async install() {
          await this.startup(deps);
          await this.appCreate(deps);
          ['InputAnalysis', 'BlockAtPerimeter', 'SinkEvent', 'HTTPRequest'].forEach((msgName) => {
             deps.messages.on(msgName, (msg) => {
               putInQueueAndReportLater(msgName, msg);
             });
          });
        }
      };
    };

Readme

Keywords

none

Package Sidebar

Install

npm i @contrast/reporter

Weekly Downloads

17,666

Version

1.38.0

License

SEE LICENSE IN LICENSE

Unpacked Size

306 kB

Total Files

120

Last publish

Collaborators

  • planetlevel
  • contrastsec
  • tough-griff
  • michaelwitz
  • chrisdunne
  • contrast_admin
  • jcolekaplan
  • bmacnaughton