@emuanalytics/flow-engine-client 1.3.67 → 1.3.71

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,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  exports.WebSocketGateway = exports.WebSocketChannel = void 0;
4
15
  var socket_io_client_1 = require("socket.io-client");
@@ -24,16 +35,14 @@ var WebSocketGateway = /** @class */ (function () {
24
35
  });
25
36
  WebSocketGateway.prototype.initialize = function () {
26
37
  var _this = this;
27
- var websocketHeaders = {};
38
+ var authHeaders = {};
28
39
  if (this.client.apiKey) {
29
- websocketHeaders['x-api-key'] = this.client.apiKey;
40
+ authHeaders['x-api-key'] = this.client.apiKey;
30
41
  }
31
42
  if (this.client.accessToken) {
32
- websocketHeaders['x-socket-token'] = "Bearer ".concat(this.client.accessToken);
43
+ authHeaders['x-socket-token'] = "Bearer ".concat(this.client.accessToken);
33
44
  }
34
- var socket = (0, socket_io_client_1.io)(this.client.baseUrl, {
35
- extraHeaders: websocketHeaders
36
- });
45
+ var socket = (0, socket_io_client_1.io)(this.client.baseUrl, __assign(__assign({}, this.options), { auth: authHeaders }));
37
46
  socket.on('connect', function () {
38
47
  _this.client.debug("Socket connected: ".concat(socket.id));
39
48
  if (_this.subscribedChannels.size) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-gateway.js","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"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","sourcesContent":["import { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\nimport { Client } from './client';\n\nexport enum WebSocketChannel {\n System = 'system',\n AppConfig = 'appconfig',\n Dataset = 'dataset/'\n}\n\nexport interface WebSocketPublishMessage {\n channel: string;\n messageType?: string;\n payload: unknown;\n}\n\nexport interface WebSocketSubscribeMessage {\n channel: string;\n}\n\nexport interface WebSocketErrorResponse {\n status: 'error';\n code: string;\n message: string;\n}\n\nexport interface WebSocketOkResponse {\n status: 'ok';\n}\n\nexport type WebSocketResponse = WebSocketOkResponse | WebSocketErrorResponse;\nexport type WebSocketManagerOptions = Partial<ManagerOptions & SocketOptions>;\nexport type WebSocketSubscribeCallback = (err: Error | null, msg?: WebSocketPublishMessage) => void;\nexport type WebSocketUnsubscribeCallback = (err: Error | null) => void;\nexport type WebSocketUnsubscriber = (cb?: WebSocketUnsubscribeCallback) => void;\n\nexport class WebSocketGateway {\n private initialized = false;\n private subscribedChannels = new Set<string>();\n\n socket!: Socket;\n\n get isInitialized(): boolean {\n return this.initialized;\n }\n\n constructor(public readonly client: Client, private readonly options?: WebSocketManagerOptions) {}\n\n initialize() {\n const websocketHeaders: Record<string, string> = {};\n\n if (this.client.apiKey) {\n websocketHeaders['x-api-key'] = this.client.apiKey;\n }\n\n if (this.client.accessToken) {\n websocketHeaders['x-socket-token'] = `Bearer ${this.client.accessToken}`;\n }\n\n const socket = io(this.client.baseUrl, {\n extraHeaders: websocketHeaders\n });\n\n socket.on('connect', () => {\n this.client.debug(`Socket connected: ${socket.id}`);\n\n if (this.subscribedChannels.size) {\n this.subscribedChannels.forEach(channel => {\n socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error re-subscribeingto channel '${channel}`, resp);\n }\n\n this.client.debug(`Resubscribed to channel '${channel}`);\n });\n });\n }\n });\n\n socket.io.on('reconnect_attempt', (attempt: number) => {\n this.client.debug(`Socket reconnect attempt: ${attempt}`);\n });\n\n socket.io.on('reconnect_error', (error: Error) => {\n this.client.debug(`Socket reconnect error: ${error.message}`);\n });\n\n socket.io.on('reconnect_failed', () => {\n this.client.debug(`Socket reconnect failed`);\n });\n\n socket.io.on('reconnect', () => {\n this.client.debug(`Socket reconnected`);\n });\n\n socket.on('disconnect', reason => {\n this.client.debug(`Socket disconnected: ${reason}`);\n });\n\n this.socket = socket;\n\n this.initialized = true;\n }\n\n subscribe(channel: string, cb: WebSocketSubscribeCallback): WebSocketUnsubscriber {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Subscribing to channel '${channel}`);\n\n // Discriminating 'message' event listener that only responds to messages sent to 'channel'\n const listener = (msg: WebSocketPublishMessage) => {\n if (msg.channel === channel) {\n cb(null, msg);\n }\n };\n\n // Unsubscriber\n const unsubscribe = (unsubscribeCb?: WebSocketUnsubscribeCallback) => {\n this.socket.on('message', listener);\n this.unsubscribe(channel, unsubscribeCb);\n };\n\n // Subscribe and bind listener\n this.socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error subscribed to channel '${channel}`, resp);\n return cb(new Error(resp.message));\n }\n\n this.subscribedChannels.add(channel);\n this.client.debug(`Subscribed to channel '${channel}`);\n this.socket.on('message', listener);\n });\n\n return unsubscribe;\n }\n\n unsubscribe(channel: string, cb?: WebSocketUnsubscribeCallback) {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Unsubscribing from channel '${channel}`);\n this.socket.emit('unsubscribe', { channel }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error unsubscribing from channel '${channel}`, resp);\n if (cb) {\n cb(new Error(resp.message));\n }\n } else {\n this.subscribedChannels.delete(channel);\n this.client.debug(`Unsubscribed from channel '${channel}`);\n if (cb) {\n cb(null);\n }\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"web-socket-gateway.js","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"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","sourcesContent":["import { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\nimport { Client } from './client';\n\nexport enum WebSocketChannel {\n System = 'system',\n AppConfig = 'appconfig',\n Dataset = 'dataset/'\n}\n\nexport interface WebSocketPublishMessage {\n channel: string;\n messageType?: string;\n payload: unknown;\n}\n\nexport interface WebSocketSubscribeMessage {\n channel: string;\n}\n\nexport interface WebSocketErrorResponse {\n status: 'error';\n code: string;\n message: string;\n}\n\nexport interface WebSocketOkResponse {\n status: 'ok';\n}\n\nexport type WebSocketResponse = WebSocketOkResponse | WebSocketErrorResponse;\nexport type WebSocketManagerOptions = Partial<ManagerOptions & SocketOptions>;\nexport type WebSocketSubscribeCallback = (err: Error | null, msg?: WebSocketPublishMessage) => void;\nexport type WebSocketUnsubscribeCallback = (err: Error | null) => void;\nexport type WebSocketUnsubscriber = (cb?: WebSocketUnsubscribeCallback) => void;\n\nexport class WebSocketGateway {\n private initialized = false;\n private subscribedChannels = new Set<string>();\n\n socket!: Socket;\n\n get isInitialized(): boolean {\n return this.initialized;\n }\n\n constructor(public readonly client: Client, private readonly options?: WebSocketManagerOptions) {}\n\n initialize() {\n const authHeaders: Record<string, string> = {};\n\n if (this.client.apiKey) {\n authHeaders['x-api-key'] = this.client.apiKey;\n }\n\n if (this.client.accessToken) {\n authHeaders['x-socket-token'] = `Bearer ${this.client.accessToken}`;\n }\n\n const socket = io(this.client.baseUrl, {\n ...this.options,\n auth: authHeaders\n });\n\n socket.on('connect', () => {\n this.client.debug(`Socket connected: ${socket.id}`);\n\n if (this.subscribedChannels.size) {\n this.subscribedChannels.forEach(channel => {\n socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error re-subscribeingto channel '${channel}`, resp);\n }\n\n this.client.debug(`Resubscribed to channel '${channel}`);\n });\n });\n }\n });\n\n socket.io.on('reconnect_attempt', (attempt: number) => {\n this.client.debug(`Socket reconnect attempt: ${attempt}`);\n });\n\n socket.io.on('reconnect_error', (error: Error) => {\n this.client.debug(`Socket reconnect error: ${error.message}`);\n });\n\n socket.io.on('reconnect_failed', () => {\n this.client.debug(`Socket reconnect failed`);\n });\n\n socket.io.on('reconnect', () => {\n this.client.debug(`Socket reconnected`);\n });\n\n socket.on('disconnect', reason => {\n this.client.debug(`Socket disconnected: ${reason}`);\n });\n\n this.socket = socket;\n\n this.initialized = true;\n }\n\n subscribe(channel: string, cb: WebSocketSubscribeCallback): WebSocketUnsubscriber {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Subscribing to channel '${channel}`);\n\n // Discriminating 'message' event listener that only responds to messages sent to 'channel'\n const listener = (msg: WebSocketPublishMessage) => {\n if (msg.channel === channel) {\n cb(null, msg);\n }\n };\n\n // Unsubscriber\n const unsubscribe = (unsubscribeCb?: WebSocketUnsubscribeCallback) => {\n this.socket.on('message', listener);\n this.unsubscribe(channel, unsubscribeCb);\n };\n\n // Subscribe and bind listener\n this.socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error subscribed to channel '${channel}`, resp);\n return cb(new Error(resp.message));\n }\n\n this.subscribedChannels.add(channel);\n this.client.debug(`Subscribed to channel '${channel}`);\n this.socket.on('message', listener);\n });\n\n return unsubscribe;\n }\n\n unsubscribe(channel: string, cb?: WebSocketUnsubscribeCallback) {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Unsubscribing from channel '${channel}`);\n this.socket.emit('unsubscribe', { channel }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error unsubscribing from channel '${channel}`, resp);\n if (cb) {\n cb(new Error(resp.message));\n }\n } else {\n this.subscribedChannels.delete(channel);\n this.client.debug(`Unsubscribed from channel '${channel}`);\n if (cb) {\n cb(null);\n }\n }\n });\n }\n}\n"]}
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  import { io } from 'socket.io-client';
2
13
  export var WebSocketChannel;
3
14
  (function (WebSocketChannel) {
@@ -21,16 +32,14 @@ var WebSocketGateway = /** @class */ (function () {
21
32
  });
22
33
  WebSocketGateway.prototype.initialize = function () {
23
34
  var _this = this;
24
- var websocketHeaders = {};
35
+ var authHeaders = {};
25
36
  if (this.client.apiKey) {
26
- websocketHeaders['x-api-key'] = this.client.apiKey;
37
+ authHeaders['x-api-key'] = this.client.apiKey;
27
38
  }
28
39
  if (this.client.accessToken) {
29
- websocketHeaders['x-socket-token'] = "Bearer ".concat(this.client.accessToken);
40
+ authHeaders['x-socket-token'] = "Bearer ".concat(this.client.accessToken);
30
41
  }
31
- var socket = io(this.client.baseUrl, {
32
- extraHeaders: websocketHeaders
33
- });
42
+ var socket = io(this.client.baseUrl, __assign(__assign({}, this.options), { auth: authHeaders }));
34
43
  socket.on('connect', function () {
35
44
  _this.client.debug("Socket connected: ".concat(socket.id));
36
45
  if (_this.subscribedChannels.size) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-gateway.js","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"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","sourcesContent":["import { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\nimport { Client } from './client';\n\nexport enum WebSocketChannel {\n System = 'system',\n AppConfig = 'appconfig',\n Dataset = 'dataset/'\n}\n\nexport interface WebSocketPublishMessage {\n channel: string;\n messageType?: string;\n payload: unknown;\n}\n\nexport interface WebSocketSubscribeMessage {\n channel: string;\n}\n\nexport interface WebSocketErrorResponse {\n status: 'error';\n code: string;\n message: string;\n}\n\nexport interface WebSocketOkResponse {\n status: 'ok';\n}\n\nexport type WebSocketResponse = WebSocketOkResponse | WebSocketErrorResponse;\nexport type WebSocketManagerOptions = Partial<ManagerOptions & SocketOptions>;\nexport type WebSocketSubscribeCallback = (err: Error | null, msg?: WebSocketPublishMessage) => void;\nexport type WebSocketUnsubscribeCallback = (err: Error | null) => void;\nexport type WebSocketUnsubscriber = (cb?: WebSocketUnsubscribeCallback) => void;\n\nexport class WebSocketGateway {\n private initialized = false;\n private subscribedChannels = new Set<string>();\n\n socket!: Socket;\n\n get isInitialized(): boolean {\n return this.initialized;\n }\n\n constructor(public readonly client: Client, private readonly options?: WebSocketManagerOptions) {}\n\n initialize() {\n const websocketHeaders: Record<string, string> = {};\n\n if (this.client.apiKey) {\n websocketHeaders['x-api-key'] = this.client.apiKey;\n }\n\n if (this.client.accessToken) {\n websocketHeaders['x-socket-token'] = `Bearer ${this.client.accessToken}`;\n }\n\n const socket = io(this.client.baseUrl, {\n extraHeaders: websocketHeaders\n });\n\n socket.on('connect', () => {\n this.client.debug(`Socket connected: ${socket.id}`);\n\n if (this.subscribedChannels.size) {\n this.subscribedChannels.forEach(channel => {\n socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error re-subscribeingto channel '${channel}`, resp);\n }\n\n this.client.debug(`Resubscribed to channel '${channel}`);\n });\n });\n }\n });\n\n socket.io.on('reconnect_attempt', (attempt: number) => {\n this.client.debug(`Socket reconnect attempt: ${attempt}`);\n });\n\n socket.io.on('reconnect_error', (error: Error) => {\n this.client.debug(`Socket reconnect error: ${error.message}`);\n });\n\n socket.io.on('reconnect_failed', () => {\n this.client.debug(`Socket reconnect failed`);\n });\n\n socket.io.on('reconnect', () => {\n this.client.debug(`Socket reconnected`);\n });\n\n socket.on('disconnect', reason => {\n this.client.debug(`Socket disconnected: ${reason}`);\n });\n\n this.socket = socket;\n\n this.initialized = true;\n }\n\n subscribe(channel: string, cb: WebSocketSubscribeCallback): WebSocketUnsubscriber {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Subscribing to channel '${channel}`);\n\n // Discriminating 'message' event listener that only responds to messages sent to 'channel'\n const listener = (msg: WebSocketPublishMessage) => {\n if (msg.channel === channel) {\n cb(null, msg);\n }\n };\n\n // Unsubscriber\n const unsubscribe = (unsubscribeCb?: WebSocketUnsubscribeCallback) => {\n this.socket.on('message', listener);\n this.unsubscribe(channel, unsubscribeCb);\n };\n\n // Subscribe and bind listener\n this.socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error subscribed to channel '${channel}`, resp);\n return cb(new Error(resp.message));\n }\n\n this.subscribedChannels.add(channel);\n this.client.debug(`Subscribed to channel '${channel}`);\n this.socket.on('message', listener);\n });\n\n return unsubscribe;\n }\n\n unsubscribe(channel: string, cb?: WebSocketUnsubscribeCallback) {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Unsubscribing from channel '${channel}`);\n this.socket.emit('unsubscribe', { channel }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error unsubscribing from channel '${channel}`, resp);\n if (cb) {\n cb(new Error(resp.message));\n }\n } else {\n this.subscribedChannels.delete(channel);\n this.client.debug(`Unsubscribed from channel '${channel}`);\n if (cb) {\n cb(null);\n }\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"web-socket-gateway.js","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"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","sourcesContent":["import { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\nimport { Client } from './client';\n\nexport enum WebSocketChannel {\n System = 'system',\n AppConfig = 'appconfig',\n Dataset = 'dataset/'\n}\n\nexport interface WebSocketPublishMessage {\n channel: string;\n messageType?: string;\n payload: unknown;\n}\n\nexport interface WebSocketSubscribeMessage {\n channel: string;\n}\n\nexport interface WebSocketErrorResponse {\n status: 'error';\n code: string;\n message: string;\n}\n\nexport interface WebSocketOkResponse {\n status: 'ok';\n}\n\nexport type WebSocketResponse = WebSocketOkResponse | WebSocketErrorResponse;\nexport type WebSocketManagerOptions = Partial<ManagerOptions & SocketOptions>;\nexport type WebSocketSubscribeCallback = (err: Error | null, msg?: WebSocketPublishMessage) => void;\nexport type WebSocketUnsubscribeCallback = (err: Error | null) => void;\nexport type WebSocketUnsubscriber = (cb?: WebSocketUnsubscribeCallback) => void;\n\nexport class WebSocketGateway {\n private initialized = false;\n private subscribedChannels = new Set<string>();\n\n socket!: Socket;\n\n get isInitialized(): boolean {\n return this.initialized;\n }\n\n constructor(public readonly client: Client, private readonly options?: WebSocketManagerOptions) {}\n\n initialize() {\n const authHeaders: Record<string, string> = {};\n\n if (this.client.apiKey) {\n authHeaders['x-api-key'] = this.client.apiKey;\n }\n\n if (this.client.accessToken) {\n authHeaders['x-socket-token'] = `Bearer ${this.client.accessToken}`;\n }\n\n const socket = io(this.client.baseUrl, {\n ...this.options,\n auth: authHeaders\n });\n\n socket.on('connect', () => {\n this.client.debug(`Socket connected: ${socket.id}`);\n\n if (this.subscribedChannels.size) {\n this.subscribedChannels.forEach(channel => {\n socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error re-subscribeingto channel '${channel}`, resp);\n }\n\n this.client.debug(`Resubscribed to channel '${channel}`);\n });\n });\n }\n });\n\n socket.io.on('reconnect_attempt', (attempt: number) => {\n this.client.debug(`Socket reconnect attempt: ${attempt}`);\n });\n\n socket.io.on('reconnect_error', (error: Error) => {\n this.client.debug(`Socket reconnect error: ${error.message}`);\n });\n\n socket.io.on('reconnect_failed', () => {\n this.client.debug(`Socket reconnect failed`);\n });\n\n socket.io.on('reconnect', () => {\n this.client.debug(`Socket reconnected`);\n });\n\n socket.on('disconnect', reason => {\n this.client.debug(`Socket disconnected: ${reason}`);\n });\n\n this.socket = socket;\n\n this.initialized = true;\n }\n\n subscribe(channel: string, cb: WebSocketSubscribeCallback): WebSocketUnsubscriber {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Subscribing to channel '${channel}`);\n\n // Discriminating 'message' event listener that only responds to messages sent to 'channel'\n const listener = (msg: WebSocketPublishMessage) => {\n if (msg.channel === channel) {\n cb(null, msg);\n }\n };\n\n // Unsubscriber\n const unsubscribe = (unsubscribeCb?: WebSocketUnsubscribeCallback) => {\n this.socket.on('message', listener);\n this.unsubscribe(channel, unsubscribeCb);\n };\n\n // Subscribe and bind listener\n this.socket.emit('subscribe', { channel: 'appconfig' }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error subscribed to channel '${channel}`, resp);\n return cb(new Error(resp.message));\n }\n\n this.subscribedChannels.add(channel);\n this.client.debug(`Subscribed to channel '${channel}`);\n this.socket.on('message', listener);\n });\n\n return unsubscribe;\n }\n\n unsubscribe(channel: string, cb?: WebSocketUnsubscribeCallback) {\n if (!this.isInitialized) {\n throw new Error('WebSocketGateway is not initialized');\n }\n\n this.client.debug(`Unsubscribing from channel '${channel}`);\n this.socket.emit('unsubscribe', { channel }, (resp: WebSocketResponse) => {\n if (resp.status === 'error') {\n this.client.debug(`Error unsubscribing from channel '${channel}`, resp);\n if (cb) {\n cb(new Error(resp.message));\n }\n } else {\n this.subscribedChannels.delete(channel);\n this.client.debug(`Unsubscribed from channel '${channel}`);\n if (cb) {\n cb(null);\n }\n }\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"web-socket-gateway.d.ts","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC;CACd;AAED,oBAAY,iBAAiB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAC7E,oBAAY,uBAAuB,GAAG,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;AAC9E,oBAAY,0BAA0B,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;AACpG,oBAAY,4BAA4B,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AACvE,oBAAY,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,4BAA4B,KAAK,IAAI,CAAC;AAEhF,qBAAa,gBAAgB;aAUC,MAAM,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IATrE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,MAAM,EAAG,MAAM,CAAC;IAEhB,IAAI,aAAa,IAAI,OAAO,CAE3B;gBAE2B,MAAM,EAAE,MAAM,EAAmB,OAAO,CAAC,qDAAyB;IAE9F,UAAU;IAwDV,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,0BAA0B,GAAG,qBAAqB;IAmCjF,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,4BAA4B;CAqB/D"}
1
+ {"version":3,"file":"web-socket-gateway.d.ts","sourceRoot":"","sources":["../../../src/lib/web-socket-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC;CACd;AAED,oBAAY,iBAAiB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAC7E,oBAAY,uBAAuB,GAAG,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;AAC9E,oBAAY,0BAA0B,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;AACpG,oBAAY,4BAA4B,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AACvE,oBAAY,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,4BAA4B,KAAK,IAAI,CAAC;AAEhF,qBAAa,gBAAgB;aAUC,MAAM,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IATrE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,MAAM,EAAG,MAAM,CAAC;IAEhB,IAAI,aAAa,IAAI,OAAO,CAE3B;gBAE2B,MAAM,EAAE,MAAM,EAAmB,OAAO,CAAC,qDAAyB;IAE9F,UAAU;IAyDV,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,0BAA0B,GAAG,qBAAqB;IAmCjF,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,4BAA4B;CAqB/D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emuanalytics/flow-engine-client",
3
- "version": "1.3.67",
3
+ "version": "1.3.71",
4
4
  "description": "Flow Engine Client",
5
5
  "author": "Robin Summerhill <robin.summerhill@emu-analytics.com>",
6
6
  "license": "Copyright 2018 Emu Analytics Limited",
@@ -61,5 +61,5 @@
61
61
  "git add"
62
62
  ]
63
63
  },
64
- "gitHead": "08a8db7a0344b4159cb13fa3946c94fbf73d20fd"
64
+ "gitHead": "200155cb697be11eb6c79d5617a1659a7cba661f"
65
65
  }