@fraym/streams 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  import { ServiceClient } from "@fraym/proto/freym/streams/clientchannel";
2
2
  import { HandlerFunc } from "./event";
3
- export declare const getAllEvents: (includedTopics: string[], excludedTopics: string[], handler: HandlerFunc, serviceClient: ServiceClient) => Promise<void>;
3
+ export declare const getAllEvents: (tenantId: string, topic: string, includedEventTypes: string[], perPage: number, handler: HandlerFunc, serviceClient: ServiceClient) => Promise<void>;
@@ -2,24 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAllEvents = void 0;
4
4
  const event_1 = require("./event");
5
- const getAllEvents = async (includedTopics, excludedTopics, handler, serviceClient) => {
6
- const stream = serviceClient.getEventsFromStart({
7
- excludedTopics,
8
- includedTopics,
9
- });
10
- return new Promise((resolve, reject) => {
11
- stream.on("data", (data) => {
12
- const event = (0, event_1.getSubscriptionEvent)(data);
13
- if (event) {
14
- handler(event);
5
+ const getAllEvents = async (tenantId, topic, includedEventTypes, perPage, handler, serviceClient) => {
6
+ let page = 0;
7
+ let finished = false;
8
+ while (!finished) {
9
+ await serviceClient.paginateEvents({
10
+ tenantId,
11
+ topic,
12
+ includedEventTypes,
13
+ page: page.toString(),
14
+ perPage: perPage.toString(),
15
+ }, async (error, data) => {
16
+ if (error) {
17
+ throw error;
18
+ }
19
+ if (data.events.length === 0) {
20
+ finished = true;
21
+ return;
22
+ }
23
+ for (const eventData of data.events) {
24
+ const event = (0, event_1.getSubscriptionEvent)(eventData);
25
+ if (event) {
26
+ await handler(event);
27
+ }
15
28
  }
16
29
  });
17
- stream.on("end", () => {
18
- resolve();
19
- });
20
- stream.on("error", e => {
21
- reject(e);
22
- });
23
- });
30
+ page++;
31
+ }
24
32
  };
25
33
  exports.getAllEvents = getAllEvents;
@@ -2,10 +2,9 @@ import { ServiceClient } from "@fraym/proto/freym/streams/clientchannel";
2
2
  import { ClientConfig } from "./config";
3
3
  import { HandlerFunc, PublishEvent, SubscriptionEvent } from "./event";
4
4
  export interface Client {
5
- getAllEvents: (handler: HandlerFunc, includedTopics?: string[], excludedTopics?: string[]) => Promise<void>;
6
- getAllEventsFiltered: (handler: HandlerFunc, includedTopics: string[], includedEventTypes: string[]) => Promise<void>;
5
+ getAllEvents: (tenantId: string, topic: string, includedEventTypes: string[], perPage: number, handler: HandlerFunc) => Promise<void>;
7
6
  getEvent: (tenantId: string, topic: string, eventId: string) => Promise<SubscriptionEvent>;
8
- getStream: (tenantId: string, stream: string) => Promise<SubscriptionEvent[]>;
7
+ getStream: (tenantId: string, stream: string, perPage: number, handler: HandlerFunc) => Promise<void>;
9
8
  useEventHandler: (type: string, handler: HandlerFunc) => void;
10
9
  useEventHandlerForAllEventTypes: (handler: HandlerFunc) => void;
11
10
  subscribe: (includedTopics?: string[], excludedTopics?: string[]) => Promise<void>;
@@ -15,7 +15,6 @@ const stream_1 = require("./stream");
15
15
  const subscribe_1 = require("./subscribe");
16
16
  const getEvent_1 = require("./getEvent");
17
17
  const introduceGdpr_1 = require("./introduceGdpr");
18
- const allEventsFiltered_1 = require("./allEventsFiltered");
19
18
  const newClient = async (config) => {
20
19
  config = (0, config_1.useConfigDefaults)(config);
21
20
  const serviceClient = new clientchannel_1.ServiceClient(config.serverAddress, grpc_js_1.credentials.createInsecure(), {
@@ -27,17 +26,14 @@ const newClient = async (config) => {
27
26
  const eventHandler = (0, handler_1.initEventHandler)(stream);
28
27
  let hasSubscribed = false;
29
28
  return {
30
- getAllEvents: async (handler, includedTopics = [], excludedTopics = []) => {
31
- await (0, allEvents_1.getAllEvents)(includedTopics, excludedTopics, handler, serviceClient);
32
- },
33
- getAllEventsFiltered: async (handler, includedTopics, includedEventTypes) => {
34
- await (0, allEventsFiltered_1.getAllEventsFiltered)(includedTopics, includedEventTypes, handler, serviceClient);
29
+ getAllEvents: async (tenantId, topic, includedEventTypes, perPage, handler) => {
30
+ await (0, allEvents_1.getAllEvents)(tenantId, topic, includedEventTypes, perPage, handler, serviceClient);
35
31
  },
36
32
  getEvent: async (tenantId, topic, eventId) => {
37
33
  return await (0, getEvent_1.getEvent)(tenantId, topic, eventId, serviceClient);
38
34
  },
39
- getStream: async (tenantId, stream) => {
40
- return await (0, stream_1.getStream)(tenantId, stream, serviceClient);
35
+ getStream: async (tenantId, stream, perPage, handler) => {
36
+ return await (0, stream_1.getStream)(tenantId, stream, perPage, handler, serviceClient);
41
37
  },
42
38
  useEventHandler: (type, handler) => {
43
39
  eventHandler.addHandler(type, handler);
@@ -37,7 +37,7 @@ const getSubscriptionEvent = (eventEnvelope) => {
37
37
  topic: eventEnvelope.topic,
38
38
  tenantId: eventEnvelope.tenantId,
39
39
  payload,
40
- raisedAt: new Date(parseInt(event.raisedAt.toString().slice(0, -6))),
40
+ raisedAt: new Date(parseInt(event.raisedAt.slice(0, -6))),
41
41
  stream: event.stream || undefined,
42
42
  type: event.type || undefined,
43
43
  causationId: event.causationId || undefined,
@@ -49,7 +49,7 @@ const getEventEnvelopeFromPublishedEvent = (event) => {
49
49
  correlationId: (_f = event.correlationId) !== null && _f !== void 0 ? _f : "",
50
50
  causationId: (_g = event.causationId) !== null && _g !== void 0 ? _g : "",
51
51
  payload,
52
- raisedAt: 0,
52
+ raisedAt: "0",
53
53
  },
54
54
  };
55
55
  };
@@ -1,3 +1,3 @@
1
- import { SubscriptionEvent } from "./event";
1
+ import { HandlerFunc } from "./event";
2
2
  import { ServiceClient } from "@fraym/proto/freym/streams/clientchannel";
3
- export declare const getStream: (tenantId: string, stream: string, serviceClient: ServiceClient) => Promise<SubscriptionEvent[]>;
3
+ export declare const getStream: (tenantId: string, stream: string, perPage: number, handler: HandlerFunc, serviceClient: ServiceClient) => Promise<void>;
@@ -2,20 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getStream = void 0;
4
4
  const event_1 = require("./event");
5
- const getStream = async (tenantId, stream, serviceClient) => {
6
- return new Promise((resolve, reject) => {
7
- serviceClient.getStream({
8
- stream,
5
+ const getStream = async (tenantId, stream, perPage, handler, serviceClient) => {
6
+ let page = 0;
7
+ let finished = false;
8
+ while (!finished) {
9
+ await serviceClient.paginateStream({
9
10
  tenantId,
10
- }, (error, response) => {
11
+ stream,
12
+ page: page.toString(),
13
+ perPage: perPage.toString(),
14
+ }, async (error, data) => {
11
15
  if (error) {
12
- reject(error.message);
16
+ throw error;
17
+ }
18
+ if (data.events.length === 0) {
19
+ finished = true;
13
20
  return;
14
21
  }
15
- resolve(response.events
16
- .map(event_1.getSubscriptionEvent)
17
- .filter(event => event !== null));
22
+ for (const eventData of data.events) {
23
+ const event = (0, event_1.getSubscriptionEvent)(eventData);
24
+ if (event) {
25
+ await handler(event);
26
+ }
27
+ }
18
28
  });
19
- });
29
+ page++;
30
+ }
20
31
  };
21
32
  exports.getStream = getStream;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fraym/streams",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/fraym/streams-nodejs",
6
6
  "repository": {
@@ -26,15 +26,15 @@
26
26
  "main": "dist/index.js",
27
27
  "types": "dist/index.d.ts",
28
28
  "dependencies": {
29
- "@fraym/proto": "^0.5.3",
30
- "@grpc/grpc-js": "1.8.16",
31
- "uuid": "^9.0.0"
29
+ "@fraym/proto": "^0.7.0",
30
+ "@grpc/grpc-js": "^1.9.12",
31
+ "uuid": "^9.0.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@becklyn/prettier": "^1.0.2",
35
35
  "@types/uuid": "^8.3.4",
36
36
  "prettier": "^2.8.8",
37
- "ts-node": "^10.9.1",
37
+ "ts-node": "^10.9.2",
38
38
  "typescript": "^4.9.5"
39
39
  },
40
40
  "prettier": "@becklyn/prettier"
@@ -1,3 +0,0 @@
1
- import { ServiceClient } from "@fraym/proto/freym/streams/clientchannel";
2
- import { HandlerFunc } from "./event";
3
- export declare const getAllEventsFiltered: (includedTopics: string[], includedEventTypes: string[], handler: HandlerFunc, serviceClient: ServiceClient) => Promise<void>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAllEventsFiltered = void 0;
4
- const event_1 = require("./event");
5
- const getAllEventsFiltered = async (includedTopics, includedEventTypes, handler, serviceClient) => {
6
- const stream = serviceClient.getFilteredEventsFromStart({
7
- includedTopics,
8
- includedEventTypes,
9
- });
10
- return new Promise((resolve, reject) => {
11
- stream.on("data", (data) => {
12
- const event = (0, event_1.getSubscriptionEvent)(data);
13
- if (event) {
14
- handler(event);
15
- }
16
- });
17
- stream.on("end", () => {
18
- resolve();
19
- });
20
- stream.on("error", e => {
21
- reject(e);
22
- });
23
- });
24
- };
25
- exports.getAllEventsFiltered = getAllEventsFiltered;