2.1.1 • Published 3 years ago

@guiabolsobr/events-protocol v2.1.1

Weekly downloads
85
License
Apache-2.0
Repository
github
Last release
3 years ago

Events Protocol JS

Esta é uma implementação em javascript que atende aos requisitos do Protocolo de eventos

Como usar

Client

Basta apenas intanciar um EventClient e enviar um evento.

import { EventsClient } from "@guiabolsobr/events-protocol/client/client";
import { isSuccess } from "src/client/response";

const event = {
    name: "test:event",
    version: 1,
    id: "some-id",
    flowId: "some-flow-id",
    payload: { data: "some data here" },
    identity: {},
    auth: {},
    metadata: {}
};

const client = new EventsClient("https://some.url", {
    defaultTimeout: 5000
});

const response = await client.sendEvent(event);
if (isSuccess(response)) {
    const responseEvent = response.event;
    // faça o que quiser com a resposta do evento aqui
}

As configurações mais úteis são

defaultTimeout = 30000;
fetchHandler = fetch;

Servidor

Para utilizar do lado do servidor é necessário dois passos:

O primeiro é registrar a função que deve ser chamada quando receber determinado evento, toda função deve receber e retornar um evento de resposta: Exemplo:

EventProcessor.addHandler("teste:event", 1, async (event: Event) => {
    return buildResponseEventFor(event);
});

Para processar o evento, após adicionar o handler basta apenas chamar o processador de evento. Exemplo:

EventProcessor.processEvent(event);

A seguir um exemplo completo de uma Aws Lambda Handler completo:

EventProcessor.addHandler("teste:event", 1, async (event: Event) => {
    //seu codigo aqui
    return buildResponseEventFor(event);
});

exports.handler = (event: any): Promise<Event> => {
    return EventProcessor.processEvent(event);
};

Monitoração

A lib já está pronta para usar o Aws Xray, basta apenas adicionar uma layer com esta dependência. Com isso a lib irá gerar esta entrada em cada execução:

"subsegments": [
{
	"id": "891e5565511668ef",
	"name": "NOME_DO_EVENTO:VERSAO_EVENTO",
	"start_time": 1584764490.606,
	"end_time": 1584764490.866,
	"annotations": {
		"Origin": "ORIGIN DO METADATA",
		"FlowID": "FlowID",
		"UserID": "USER_ID do Identity",
		"EventID": "ID"
	}
}]
2.1.1

3 years ago

2.1.0

3 years ago

2.0.7

3 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.1-2

4 years ago

1.0.1-1

4 years ago

1.0.1-0

4 years ago

1.0.0-10

4 years ago

1.0.0-9

4 years ago

1.0.0-8

4 years ago

1.0.0-7

4 years ago

1.0.0-8-ts

4 years ago

1.0.0-6

4 years ago

1.0.0-5

4 years ago

1.0.0-4

4 years ago

1.0.0-3

4 years ago

1.0.0-2

4 years ago

1.0.0-1

4 years ago

1.0.0-0

4 years ago