@eyevinn/player-analytics-shared 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.
- package/.github/workflows/build-test.yml +19 -0
- package/.github/workflows/release-gh-package.yml +24 -0
- package/.github/workflows/release-npmjs-package.yml +21 -0
- package/README.md +2 -0
- package/adapters/db/DynamoDBAdapter.ts +147 -0
- package/adapters/db/MongoDBAdapter.ts +79 -0
- package/adapters/queue/BeanstalkdAdapter.ts +41 -0
- package/adapters/queue/RedisAdapter.ts +34 -0
- package/adapters/queue/SqsQueueAdapter.ts +127 -0
- package/build/adapters/db/DynamoDBAdapter.d.ts +14 -0
- package/build/adapters/db/DynamoDBAdapter.js +138 -0
- package/build/adapters/db/DynamoDBAdapter.js.map +1 -0
- package/build/adapters/db/MongoDBAdapter.d.ts +16 -0
- package/build/adapters/db/MongoDBAdapter.js +98 -0
- package/build/adapters/db/MongoDBAdapter.js.map +1 -0
- package/build/adapters/queue/BeanstalkdAdapter.d.ts +13 -0
- package/build/adapters/queue/BeanstalkdAdapter.js +55 -0
- package/build/adapters/queue/BeanstalkdAdapter.js.map +1 -0
- package/build/adapters/queue/RedisAdapter.d.ts +12 -0
- package/build/adapters/queue/RedisAdapter.js +44 -0
- package/build/adapters/queue/RedisAdapter.js.map +1 -0
- package/build/adapters/queue/SqsQueueAdapter.d.ts +12 -0
- package/build/adapters/queue/SqsQueueAdapter.js +122 -0
- package/build/adapters/queue/SqsQueueAdapter.js.map +1 -0
- package/build/index.d.ts +6 -0
- package/build/index.js +19 -0
- package/build/index.js.map +1 -0
- package/build/types/db.d.ts +32 -0
- package/build/types/db.js +12 -0
- package/build/types/db.js.map +1 -0
- package/build/types/interfaces.d.ts +2 -0
- package/build/types/interfaces.js +15 -0
- package/build/types/interfaces.js.map +1 -0
- package/build/types/queue.d.ts +15 -0
- package/build/types/queue.js +7 -0
- package/build/types/queue.js.map +1 -0
- package/build/util/constants.d.ts +1 -0
- package/build/util/constants.js +5 -0
- package/build/util/constants.js.map +1 -0
- package/build/util/logger.d.ts +3 -0
- package/build/util/logger.js +37 -0
- package/build/util/logger.js.map +1 -0
- package/index.ts +8 -0
- package/package.json +43 -0
- package/spec/adapters/DynamoDBAdapter.spec.ts +275 -0
- package/spec/adapters/MongoDBAdapter.spec.ts +170 -0
- package/spec/adapters/SqsQueueAdapter.spec.ts +149 -0
- package/spec/support/jasmine.json +11 -0
- package/tsconfig-build.json +6 -0
- package/tsconfig.json +21 -0
- package/tslint.json +9 -0
- package/types/db.ts +39 -0
- package/types/interfaces.ts +2 -0
- package/types/queue.ts +17 -0
- package/util/constants.ts +1 -0
- package/util/logger.ts +45 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MongoDBAdapter = void 0;
|
|
13
|
+
const interfaces_1 = require("../../types/interfaces");
|
|
14
|
+
const mongodb_1 = require("mongodb");
|
|
15
|
+
const DB_NAME = "EPAS";
|
|
16
|
+
class MongoDBAdapter {
|
|
17
|
+
constructor(logger) {
|
|
18
|
+
const connectionString = process.env.MONGODB_URI || "mongodb://localhost";
|
|
19
|
+
this.dbClient = new mongodb_1.MongoClient(connectionString);
|
|
20
|
+
this.connect();
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
}
|
|
23
|
+
isConnected() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return !!(yield this.dbClient.db("admin").command({ ping: 1 }));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
connect() {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
yield this.dbClient.connect();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
tableExists(tableName) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
if (!(yield this.isConnected()))
|
|
36
|
+
yield this.connect();
|
|
37
|
+
const collections = yield this.dbClient.db().collections();
|
|
38
|
+
const tableNames = collections.map((collection) => collection.collectionName);
|
|
39
|
+
return tableNames.includes(tableName);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
putItem({ tableName, data }) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
try {
|
|
45
|
+
const collection = yield this.dbClient.db().collection(tableName);
|
|
46
|
+
const result = yield collection.insertOne(data);
|
|
47
|
+
return result.acknowledged;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw this.handleError(error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
getItem({ sessionId, tableName, timestamp }) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
try {
|
|
57
|
+
const collection = yield this.dbClient.db().collection(tableName);
|
|
58
|
+
const result = yield collection.findOne({ sessionId: sessionId, timestamp: timestamp });
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw this.handleError(error);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
deleteItem({ sessionId, tableName, timestamp }) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
try {
|
|
69
|
+
const collection = yield this.dbClient.db().collection(tableName);
|
|
70
|
+
const result = yield collection.deleteOne({ sessionId: sessionId, timestamp: timestamp });
|
|
71
|
+
return result.acknowledged;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw this.handleError(error);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
getItemsBySession({ tableName, sessionId }) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
try {
|
|
81
|
+
const collection = yield this.dbClient.db().collection(tableName);
|
|
82
|
+
return yield collection.find({ sessionId: sessionId }).toArray();
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw this.handleError(error);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
handleError(error) {
|
|
90
|
+
this.logger.error(error);
|
|
91
|
+
return {
|
|
92
|
+
errorType: interfaces_1.ErrorType.ABORT,
|
|
93
|
+
error: error,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.MongoDBAdapter = MongoDBAdapter;
|
|
98
|
+
//# sourceMappingURL=MongoDBAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/MongoDBAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Client } from "node-beanstalk";
|
|
2
|
+
import winston from "winston";
|
|
3
|
+
import { AbstractQueueAdapter } from "../../types/interfaces";
|
|
4
|
+
export declare class BeanstalkdAdapter implements AbstractQueueAdapter {
|
|
5
|
+
logger: winston.Logger;
|
|
6
|
+
client: Client;
|
|
7
|
+
constructor(logger: winston.Logger);
|
|
8
|
+
private connect;
|
|
9
|
+
pushToQueue(body: Object): Promise<Object>;
|
|
10
|
+
pullFromQueue(): Promise<Object>;
|
|
11
|
+
removeFromQueue(body: Record<string, any>): Promise<boolean>;
|
|
12
|
+
getEventJSONsFromMessages(body: any[]): Object[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BeanstalkdAdapter = void 0;
|
|
13
|
+
const node_beanstalk_1 = require("node-beanstalk");
|
|
14
|
+
class BeanstalkdAdapter {
|
|
15
|
+
constructor(logger) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.client = new node_beanstalk_1.Client();
|
|
18
|
+
}
|
|
19
|
+
connect() {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
yield this.client.connect();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
pushToQueue(body) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (!this.client.isConnected)
|
|
27
|
+
yield this.connect();
|
|
28
|
+
const result = yield this.client.put(body);
|
|
29
|
+
return result;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
pullFromQueue() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if (!this.client.isConnected)
|
|
35
|
+
yield this.connect();
|
|
36
|
+
const job = yield this.client.reserveWithTimeout(1);
|
|
37
|
+
return job || {};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
removeFromQueue(body) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
if (!this.client.isConnected)
|
|
43
|
+
yield this.connect();
|
|
44
|
+
const jobId = body.id;
|
|
45
|
+
const result = yield this.client.delete(jobId);
|
|
46
|
+
return result;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
getEventJSONsFromMessages(body) {
|
|
50
|
+
this.logger.warn("Method not implemented.");
|
|
51
|
+
return body;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.BeanstalkdAdapter = BeanstalkdAdapter;
|
|
55
|
+
//# sourceMappingURL=BeanstalkdAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BeanstalkdAdapter.js","sourceRoot":"","sources":["../../../adapters/queue/BeanstalkdAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAwC;AAIxC,MAAa,iBAAiB;IAI5B,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAM,EAAE,CAAC;IAC7B,CAAC;IAEa,OAAO;;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;KAAA;IAEK,WAAW,CAAC,IAAY;;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEK,aAAa;;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,GAAG,IAAI,EAAE,CAAC;QACnB,CAAC;KAAA;IAEK,eAAe,CAAC,IAAyB;;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAED,yBAAyB,CAAC,IAAW;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApCD,8CAoCC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import RedisTaskQueue = require("redis-task-queue");
|
|
2
|
+
import winston from "winston";
|
|
3
|
+
import { AbstractQueueAdapter } from "../../types/interfaces";
|
|
4
|
+
export declare class RedisAdapter implements AbstractQueueAdapter {
|
|
5
|
+
logger: winston.Logger;
|
|
6
|
+
client: RedisTaskQueue;
|
|
7
|
+
constructor(logger: winston.Logger);
|
|
8
|
+
pushToQueue(body: Object): Promise<Object>;
|
|
9
|
+
pullFromQueue(): Promise<Object>;
|
|
10
|
+
removeFromQueue(body: Record<string, any>): Promise<boolean>;
|
|
11
|
+
getEventJSONsFromMessages(body: any[]): Object[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RedisAdapter = void 0;
|
|
13
|
+
const RedisTaskQueue = require("redis-task-queue");
|
|
14
|
+
class RedisAdapter {
|
|
15
|
+
constructor(logger) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.client = new RedisTaskQueue();
|
|
18
|
+
}
|
|
19
|
+
pushToQueue(body) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const result = yield this.client.add({ data: body });
|
|
22
|
+
return result;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
pullFromQueue() {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const job = yield this.client.get();
|
|
28
|
+
return job || {};
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
removeFromQueue(body) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const jobId = body.id;
|
|
34
|
+
const result = yield this.client.getStatus(jobId);
|
|
35
|
+
return result === 'completed';
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
getEventJSONsFromMessages(body) {
|
|
39
|
+
this.logger.warn("Method not implemented.");
|
|
40
|
+
return body;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.RedisAdapter = RedisAdapter;
|
|
44
|
+
//# sourceMappingURL=RedisAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisAdapter.js","sourceRoot":"","sources":["../../../adapters/queue/RedisAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAoD;AAIpD,MAAa,YAAY;IAIvB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,CAAC;IAEK,WAAW,CAAC,IAAY;;YAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEK,aAAa;;YACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACpC,OAAO,GAAG,IAAI,EAAE,CAAC;QACnB,CAAC;KAAA;IAEK,eAAe,CAAC,IAAyB;;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,MAAM,KAAK,WAAW,CAAC;QAChC,CAAC;KAAA;IAED,yBAAyB,CAAC,IAAW;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA7BD,oCA6BC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SQSClient, Message } from '@aws-sdk/client-sqs';
|
|
2
|
+
import { AbstractQueueAdapter } from '../../types/interfaces';
|
|
3
|
+
import winston from 'winston';
|
|
4
|
+
export declare class SqsQueueAdapter implements AbstractQueueAdapter {
|
|
5
|
+
logger: winston.Logger;
|
|
6
|
+
client: SQSClient;
|
|
7
|
+
constructor(logger: winston.Logger);
|
|
8
|
+
pushToQueue(event: Object): Promise<any>;
|
|
9
|
+
pullFromQueue(): Promise<any>;
|
|
10
|
+
removeFromQueue(queueMsg: Message): Promise<any>;
|
|
11
|
+
getEventJSONsFromMessages(messages: Message[]): any[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SqsQueueAdapter = void 0;
|
|
13
|
+
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
14
|
+
class SqsQueueAdapter {
|
|
15
|
+
constructor(logger) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
let region;
|
|
18
|
+
if ('QUEUE_REGION' in process.env) {
|
|
19
|
+
region = process.env.QUEUE_REGION;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
region = process.env.AWS_REGION;
|
|
23
|
+
}
|
|
24
|
+
this.logger.info(`SQS Region: ${region}`);
|
|
25
|
+
this.client = new client_sqs_1.SQSClient({ region: region });
|
|
26
|
+
}
|
|
27
|
+
pushToQueue(event) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (process.env.SQS_QUEUE_URL === 'undefined') {
|
|
30
|
+
return { message: 'SQS_QUEUE_URL is undefined' };
|
|
31
|
+
}
|
|
32
|
+
const params = {
|
|
33
|
+
MessageAttributes: {
|
|
34
|
+
Event: {
|
|
35
|
+
DataType: 'String',
|
|
36
|
+
StringValue: event['event'],
|
|
37
|
+
},
|
|
38
|
+
Time: {
|
|
39
|
+
DataType: 'String',
|
|
40
|
+
StringValue: event['timestamp']
|
|
41
|
+
? event['timestamp']
|
|
42
|
+
: new Date().toISOString(),
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
QueueUrl: process.env.SQS_QUEUE_URL,
|
|
46
|
+
MessageBody: JSON.stringify(event),
|
|
47
|
+
};
|
|
48
|
+
const sendMessageCommand = new client_sqs_1.SendMessageCommand(params);
|
|
49
|
+
try {
|
|
50
|
+
const sendMessageResult = yield this.client.send(sendMessageCommand);
|
|
51
|
+
this.logger.info(`Response from SQS: ${JSON.stringify(sendMessageResult)}`);
|
|
52
|
+
return sendMessageResult;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
this.logger.error(err);
|
|
56
|
+
return err;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
pullFromQueue() {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (process.env.SQS_QUEUE_URL === 'undefined') {
|
|
63
|
+
return { message: 'SQS_QUEUE_URL is undefined' };
|
|
64
|
+
}
|
|
65
|
+
let maxMessages = 10;
|
|
66
|
+
if (typeof process.env.SQS_MAX_MESSAGES === 'number') {
|
|
67
|
+
maxMessages = process.env.SQS_MAX_MESSAGES;
|
|
68
|
+
}
|
|
69
|
+
let waitTime = 20;
|
|
70
|
+
if (typeof process.env.SQS_WAIT_TIME === 'number') {
|
|
71
|
+
waitTime = process.env.SQS_WAIT_TIME;
|
|
72
|
+
}
|
|
73
|
+
const params = {
|
|
74
|
+
QueueUrl: process.env.SQS_QUEUE_URL,
|
|
75
|
+
MaxNumberOfMessages: maxMessages,
|
|
76
|
+
MessageAttributeNames: ['All'],
|
|
77
|
+
WaitTimeSeconds: waitTime,
|
|
78
|
+
};
|
|
79
|
+
const receiveMessageCommand = new client_sqs_1.ReceiveMessageCommand(params);
|
|
80
|
+
try {
|
|
81
|
+
const receiveMessageResult = yield this.client.send(receiveMessageCommand);
|
|
82
|
+
this.logger.info(`Reserved Messages From SQS Count: ${receiveMessageResult.Messages
|
|
83
|
+
? receiveMessageResult.Messages.length
|
|
84
|
+
: 0}`);
|
|
85
|
+
if (!receiveMessageResult.Messages) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
return receiveMessageResult.Messages;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.logger.error(err);
|
|
92
|
+
return err;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
removeFromQueue(queueMsg) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
if (process.env.SQS_QUEUE_URL === 'undefined') {
|
|
99
|
+
return { message: 'SQS_QUEUE_URL is undefined' };
|
|
100
|
+
}
|
|
101
|
+
const params = {
|
|
102
|
+
QueueUrl: process.env.SQS_QUEUE_URL,
|
|
103
|
+
ReceiptHandle: queueMsg.ReceiptHandle,
|
|
104
|
+
};
|
|
105
|
+
const deleteMessageCommand = new client_sqs_1.DeleteMessageCommand(params);
|
|
106
|
+
try {
|
|
107
|
+
const deleteMessageResult = yield this.client.send(deleteMessageCommand);
|
|
108
|
+
this.logger.info(`Response from SQS: ${JSON.stringify(deleteMessageResult)}`);
|
|
109
|
+
return deleteMessageResult;
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
this.logger.error(JSON.stringify(err));
|
|
113
|
+
return err;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
getEventJSONsFromMessages(messages) {
|
|
118
|
+
return messages.map((item) => (item.Body ? JSON.parse(item.Body) : {}));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.SqsQueueAdapter = SqsQueueAdapter;
|
|
122
|
+
//# sourceMappingURL=SqsQueueAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqsQueueAdapter.js","sourceRoot":"","sources":["../../../adapters/queue/SqsQueueAdapter.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './adapters/queue/SqsQueueAdapter';
|
|
2
|
+
export * from './adapters/queue/BeanstalkdAdapter';
|
|
3
|
+
export * from './adapters/queue/RedisAdapter';
|
|
4
|
+
export * from './adapters/db/DynamoDBAdapter';
|
|
5
|
+
export * from './adapters/db/MongoDBAdapter';
|
|
6
|
+
export * from './util/constants';
|
package/build/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./adapters/queue/SqsQueueAdapter"), exports);
|
|
14
|
+
__exportStar(require("./adapters/queue/BeanstalkdAdapter"), exports);
|
|
15
|
+
__exportStar(require("./adapters/queue/RedisAdapter"), exports);
|
|
16
|
+
__exportStar(require("./adapters/db/DynamoDBAdapter"), exports);
|
|
17
|
+
__exportStar(require("./adapters/db/MongoDBAdapter"), exports);
|
|
18
|
+
__exportStar(require("./util/constants"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAAiD;AACjD,qEAAmD;AACnD,gEAA8C;AAE9C,gEAA8C;AAC9C,+DAA6C;AAE7C,mDAAiC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import winston from 'winston';
|
|
2
|
+
export declare enum ErrorType {
|
|
3
|
+
'ABORT' = 0,
|
|
4
|
+
'CONTINUE' = 1
|
|
5
|
+
}
|
|
6
|
+
export interface IHandleErrorOutput {
|
|
7
|
+
errorType: ErrorType;
|
|
8
|
+
error: Object;
|
|
9
|
+
}
|
|
10
|
+
export interface IPutItemInput {
|
|
11
|
+
tableName: string;
|
|
12
|
+
data: Object;
|
|
13
|
+
}
|
|
14
|
+
export interface IGetItems {
|
|
15
|
+
sessionId: string;
|
|
16
|
+
tableName: string;
|
|
17
|
+
}
|
|
18
|
+
export interface IGetItemInput {
|
|
19
|
+
tableName: string;
|
|
20
|
+
sessionId: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class AbstractDBAdapter {
|
|
24
|
+
logger: winston.Logger;
|
|
25
|
+
dbClient: any;
|
|
26
|
+
abstract tableExists(name: string): Promise<boolean>;
|
|
27
|
+
abstract putItem(params: IPutItemInput): Promise<boolean>;
|
|
28
|
+
abstract getItem(params: IGetItemInput): Promise<any>;
|
|
29
|
+
abstract deleteItem(params: IGetItemInput): Promise<boolean>;
|
|
30
|
+
abstract getItemsBySession(params: IGetItems): Promise<any[]>;
|
|
31
|
+
abstract handleError(error: any): IHandleErrorOutput;
|
|
32
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractDBAdapter = exports.ErrorType = void 0;
|
|
4
|
+
var ErrorType;
|
|
5
|
+
(function (ErrorType) {
|
|
6
|
+
ErrorType[ErrorType["ABORT"] = 0] = "ABORT";
|
|
7
|
+
ErrorType[ErrorType["CONTINUE"] = 1] = "CONTINUE";
|
|
8
|
+
})(ErrorType = exports.ErrorType || (exports.ErrorType = {}));
|
|
9
|
+
class AbstractDBAdapter {
|
|
10
|
+
}
|
|
11
|
+
exports.AbstractDBAdapter = AbstractDBAdapter;
|
|
12
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../types/db.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,2CAAW,CAAA;IACX,iDAAc,CAAA;AAChB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAuBD,MAAsB,iBAAiB;CAUtC;AAVD,8CAUC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./db"), exports);
|
|
14
|
+
__exportStar(require("./queue"), exports);
|
|
15
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../types/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAqB;AACrB,0CAAwB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import winston from 'winston';
|
|
2
|
+
export interface EventValidator {
|
|
3
|
+
logger: winston.Logger;
|
|
4
|
+
eventSchema: any;
|
|
5
|
+
validateEvent(event: Object): any;
|
|
6
|
+
validateEventList(eventList: Array<Object>): any;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class AbstractQueueAdapter {
|
|
9
|
+
logger: winston.Logger;
|
|
10
|
+
client: any;
|
|
11
|
+
abstract pushToQueue(body: Object): Promise<Object>;
|
|
12
|
+
abstract pullFromQueue(): Promise<Object>;
|
|
13
|
+
abstract removeFromQueue(body: Object): Promise<Object>;
|
|
14
|
+
abstract getEventJSONsFromMessages(body: any[]): Object[];
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../types/queue.ts"],"names":[],"mappings":";;;AASA,MAAsB,oBAAoB;CAOzC;AAPD,oDAOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TABLE_PREFIX = "epas_";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../util/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const winston_1 = __importDefault(require("winston"));
|
|
7
|
+
const levels = {
|
|
8
|
+
error: 0,
|
|
9
|
+
warn: 1,
|
|
10
|
+
info: 2,
|
|
11
|
+
http: 3,
|
|
12
|
+
debug: 4,
|
|
13
|
+
};
|
|
14
|
+
const level = () => {
|
|
15
|
+
const env = process.env.NODE_ENV || 'development';
|
|
16
|
+
const isDevEnv = env === 'development';
|
|
17
|
+
return isDevEnv ? 'debug' : 'info';
|
|
18
|
+
};
|
|
19
|
+
const colors = {
|
|
20
|
+
error: 'red',
|
|
21
|
+
warn: 'yellow',
|
|
22
|
+
info: 'green',
|
|
23
|
+
http: 'magenta',
|
|
24
|
+
debug: 'white',
|
|
25
|
+
};
|
|
26
|
+
winston_1.default.addColors(colors);
|
|
27
|
+
const format = winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston_1.default.format.colorize({ all: true }), winston_1.default.format.printf((info) => `${info.timestamp} ${info.level}: ${info.message}`));
|
|
28
|
+
const transports = [new winston_1.default.transports.Console()];
|
|
29
|
+
const Logger = winston_1.default.createLogger({
|
|
30
|
+
level: level(),
|
|
31
|
+
levels,
|
|
32
|
+
format,
|
|
33
|
+
transports,
|
|
34
|
+
silent: process.env.JEST_WORKER_ID !== undefined,
|
|
35
|
+
});
|
|
36
|
+
exports.default = Logger;
|
|
37
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../util/logger.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAE9B,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,KAAK,GAAG,GAAG,EAAE;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;IAClD,MAAM,QAAQ,GAAG,GAAG,KAAK,aAAa,CAAC;IACvC,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,iBAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE1B,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,CAAC,OAAO,CACnC,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,EAC9D,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EACtC,iBAAO,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAC7D,CACF,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAEtD,MAAM,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IAClC,KAAK,EAAE,KAAK,EAAE;IACd,MAAM;IACN,MAAM;IACN,UAAU;IACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS;CACjD,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
package/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './adapters/queue/SqsQueueAdapter';
|
|
2
|
+
export * from './adapters/queue/BeanstalkdAdapter';
|
|
3
|
+
export * from './adapters/queue/RedisAdapter';
|
|
4
|
+
|
|
5
|
+
export * from './adapters/db/DynamoDBAdapter';
|
|
6
|
+
export * from './adapters/db/MongoDBAdapter';
|
|
7
|
+
|
|
8
|
+
export * from './util/constants';
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eyevinn/player-analytics-shared",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Shared modules & adapters for EPAS components",
|
|
5
|
+
"source": "index.ts",
|
|
6
|
+
"main": "./build/index.js",
|
|
7
|
+
"types": "./build/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"test": "ts-node node_modules/jasmine/bin/jasmine",
|
|
10
|
+
"build": "rm -rf build/ && tsc -p tsconfig-build.json",
|
|
11
|
+
"postversion": "git push && git push --tags"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/Eyevinn/player-analytics-shared.git"
|
|
16
|
+
},
|
|
17
|
+
"author": "Eyevinn Technology AB (work@eyevinn.se)",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/Eyevinn/player-analytics-shared/issues"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/Eyevinn/player-analytics-shared#readme",
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"eslint": "^6.1.3",
|
|
25
|
+
"ts-node": "^10.4.0",
|
|
26
|
+
"typescript": "^4.3.5"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@aws-sdk/client-dynamodb": "^3.44.0",
|
|
30
|
+
"@aws-sdk/client-sqs": "^3.42.0",
|
|
31
|
+
"@aws-sdk/util-dynamodb": "^3.44.0",
|
|
32
|
+
"@types/jasmine": "^3.10.2",
|
|
33
|
+
"@types/node": "^16.6.1",
|
|
34
|
+
"aws-sdk-client-mock": "^0.5.6",
|
|
35
|
+
"jasmine": "^3.10.0",
|
|
36
|
+
"jasmine-ts": "^0.4.0",
|
|
37
|
+
"mongodb": "^4.2.2",
|
|
38
|
+
"mongodb-memory-server": "^8.1.0",
|
|
39
|
+
"node-beanstalk": "^1.6.7",
|
|
40
|
+
"redis-task-queue": "^0.3.0",
|
|
41
|
+
"winston": "^3.3.3"
|
|
42
|
+
}
|
|
43
|
+
}
|