@yuno-payments/sdk-event-log 0.2.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.
Files changed (93) hide show
  1. package/dist/cjs/api/__tests__/api.test.d.ts +1 -0
  2. package/dist/cjs/api/__tests__/api.test.js +49 -0
  3. package/dist/cjs/api/__tests__/api.utils.test.d.ts +1 -0
  4. package/dist/cjs/api/__tests__/api.utils.test.js +35 -0
  5. package/dist/cjs/api/api.d.ts +10 -0
  6. package/dist/cjs/api/api.js +41 -0
  7. package/dist/cjs/api/api.utils.d.ts +1 -0
  8. package/dist/cjs/api/api.utils.js +18 -0
  9. package/dist/cjs/api/index.d.ts +1 -0
  10. package/dist/cjs/api/index.js +17 -0
  11. package/dist/cjs/cron/cron.d.ts +10 -0
  12. package/dist/cjs/cron/cron.js +46 -0
  13. package/dist/cjs/cron/cron.test.d.ts +1 -0
  14. package/dist/cjs/cron/cron.test.js +52 -0
  15. package/dist/cjs/cron/index.d.ts +1 -0
  16. package/dist/cjs/cron/index.js +17 -0
  17. package/dist/cjs/database/database.d.ts +3 -0
  18. package/dist/cjs/database/database.js +31 -0
  19. package/dist/cjs/database/database.test.d.ts +1 -0
  20. package/dist/cjs/database/database.test.js +25 -0
  21. package/dist/cjs/database/database.types.d.ts +8 -0
  22. package/dist/cjs/database/database.types.js +2 -0
  23. package/dist/cjs/database/index.d.ts +1 -0
  24. package/dist/cjs/database/index.js +17 -0
  25. package/dist/cjs/database/local-storage/index.d.ts +1 -0
  26. package/dist/cjs/database/local-storage/index.js +17 -0
  27. package/dist/cjs/database/local-storage/local-storage.d.ts +11 -0
  28. package/dist/cjs/database/local-storage/local-storage.js +65 -0
  29. package/dist/cjs/database/local-storage/local-storage.test.d.ts +1 -0
  30. package/dist/cjs/database/local-storage/local-storage.test.js +39 -0
  31. package/dist/cjs/database/memory-storage/index.d.ts +1 -0
  32. package/dist/cjs/database/memory-storage/index.js +17 -0
  33. package/dist/cjs/database/memory-storage/memory-storage.d.ts +11 -0
  34. package/dist/cjs/database/memory-storage/memory-storage.js +51 -0
  35. package/dist/cjs/database/memory-storage/memory-storage.test.d.ts +1 -0
  36. package/dist/cjs/database/memory-storage/memory-storage.test.js +34 -0
  37. package/dist/cjs/index.d.ts +15 -0
  38. package/dist/cjs/index.js +52 -0
  39. package/dist/cjs/index.test.d.ts +1 -0
  40. package/dist/cjs/index.test.js +113 -0
  41. package/dist/cjs/index.types.d.ts +7 -0
  42. package/dist/cjs/index.types.js +2 -0
  43. package/dist/cjs/index.utils.d.ts +2 -0
  44. package/dist/cjs/index.utils.js +12 -0
  45. package/dist/cjs/types/index.d.ts +41 -0
  46. package/dist/cjs/types/index.js +14 -0
  47. package/dist/esm/api/__tests__/api.test.d.ts +1 -0
  48. package/dist/esm/api/__tests__/api.test.js +40 -0
  49. package/dist/esm/api/__tests__/api.utils.test.d.ts +1 -0
  50. package/dist/esm/api/__tests__/api.utils.test.js +35 -0
  51. package/dist/esm/api/api.d.ts +10 -0
  52. package/dist/esm/api/api.js +41 -0
  53. package/dist/esm/api/api.utils.d.ts +1 -0
  54. package/dist/esm/api/api.utils.js +18 -0
  55. package/dist/esm/api/index.d.ts +1 -0
  56. package/dist/esm/api/index.js +17 -0
  57. package/dist/esm/cron/cron.d.ts +10 -0
  58. package/dist/esm/cron/cron.js +46 -0
  59. package/dist/esm/cron/cron.test.d.ts +1 -0
  60. package/dist/esm/cron/cron.test.js +43 -0
  61. package/dist/esm/cron/index.d.ts +1 -0
  62. package/dist/esm/cron/index.js +17 -0
  63. package/dist/esm/database/database.d.ts +3 -0
  64. package/dist/esm/database/database.js +31 -0
  65. package/dist/esm/database/database.test.d.ts +1 -0
  66. package/dist/esm/database/database.test.js +25 -0
  67. package/dist/esm/database/database.types.d.ts +8 -0
  68. package/dist/esm/database/database.types.js +2 -0
  69. package/dist/esm/database/index.d.ts +1 -0
  70. package/dist/esm/database/index.js +17 -0
  71. package/dist/esm/database/local-storage/index.d.ts +1 -0
  72. package/dist/esm/database/local-storage/index.js +17 -0
  73. package/dist/esm/database/local-storage/local-storage.d.ts +11 -0
  74. package/dist/esm/database/local-storage/local-storage.js +52 -0
  75. package/dist/esm/database/local-storage/local-storage.test.d.ts +1 -0
  76. package/dist/esm/database/local-storage/local-storage.test.js +30 -0
  77. package/dist/esm/database/memory-storage/index.d.ts +1 -0
  78. package/dist/esm/database/memory-storage/index.js +17 -0
  79. package/dist/esm/database/memory-storage/memory-storage.d.ts +11 -0
  80. package/dist/esm/database/memory-storage/memory-storage.js +38 -0
  81. package/dist/esm/database/memory-storage/memory-storage.test.d.ts +1 -0
  82. package/dist/esm/database/memory-storage/memory-storage.test.js +25 -0
  83. package/dist/esm/index.d.ts +15 -0
  84. package/dist/esm/index.js +52 -0
  85. package/dist/esm/index.test.d.ts +1 -0
  86. package/dist/esm/index.test.js +104 -0
  87. package/dist/esm/index.types.d.ts +7 -0
  88. package/dist/esm/index.types.js +2 -0
  89. package/dist/esm/index.utils.d.ts +2 -0
  90. package/dist/esm/index.utils.js +12 -0
  91. package/dist/esm/types/index.d.ts +41 -0
  92. package/dist/esm/types/index.js +14 -0
  93. package/package.json +51 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cron"), exports);
@@ -0,0 +1,3 @@
1
+ import { Database } from './database.types';
2
+ export declare function databaseFactory(): Database;
3
+ export declare const database: Database;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.database = exports.databaseFactory = void 0;
4
+ const local_storage_1 = require("./local-storage");
5
+ const memory_storage_1 = require("./memory-storage");
6
+ function databaseFactory() {
7
+ const databaseType = isLocalStorageEnabled()
8
+ ? 'local-storage'
9
+ : 'memory-storage';
10
+ switch (databaseType) {
11
+ case 'local-storage':
12
+ return new local_storage_1.LocalStorage();
13
+ case 'memory-storage':
14
+ return new memory_storage_1.MemoryStorage();
15
+ default:
16
+ throw new Error(`Database type ${databaseType} not supported`);
17
+ }
18
+ }
19
+ exports.databaseFactory = databaseFactory;
20
+ function isLocalStorageEnabled() {
21
+ try {
22
+ const key = '__yuno_storage__test';
23
+ window.localStorage.setItem(key, 'test_value');
24
+ window.localStorage.removeItem(key);
25
+ return true;
26
+ }
27
+ catch (e) {
28
+ return false;
29
+ }
30
+ }
31
+ exports.database = databaseFactory();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const database_1 = require("./database");
4
+ const local_storage_1 = require("./local-storage");
5
+ const memory_storage_1 = require("./memory-storage");
6
+ describe('databaseFactory', () => {
7
+ beforeEach(() => {
8
+ // restore the spy created with spyOn
9
+ jest.restoreAllMocks();
10
+ });
11
+ it('should return a LocalStorage instance if local storage is enabled', () => {
12
+ jest.spyOn(Storage.prototype, 'setItem').mockImplementation(() => { });
13
+ jest.spyOn(Storage.prototype, 'removeItem').mockImplementation(() => { });
14
+ const result = (0, database_1.databaseFactory)();
15
+ expect(result).toBeInstanceOf(local_storage_1.LocalStorage);
16
+ });
17
+ it('should return a MemoryStorage instance if local storage is not enabled', () => {
18
+ jest.spyOn(Storage.prototype, 'setItem').mockImplementation(() => {
19
+ throw new Error('Local storage not available');
20
+ });
21
+ jest.spyOn(Storage.prototype, 'removeItem').mockImplementation(() => { });
22
+ const result = (0, database_1.databaseFactory)();
23
+ expect(result).toBeInstanceOf(memory_storage_1.MemoryStorage);
24
+ });
25
+ });
@@ -0,0 +1,8 @@
1
+ import { Batch } from '../types';
2
+ export interface Database {
3
+ setItem(item: Batch): Promise<void>;
4
+ getItem(id: string): Promise<Batch>;
5
+ removeItem(id: string): Promise<void>;
6
+ getAllItems(): Promise<Batch[]>;
7
+ reset(): Promise<void>;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export * from './database';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./database"), exports);
@@ -0,0 +1 @@
1
+ export * from './local-storage';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./local-storage"), exports);
@@ -0,0 +1,11 @@
1
+ import { Batch } from '../../types';
2
+ import { Database } from '../database.types';
3
+ export declare class LocalStorage implements Database {
4
+ #private;
5
+ constructor();
6
+ reset(): Promise<void>;
7
+ setItem(item: Batch): Promise<void>;
8
+ getItem(id: string): Promise<Batch>;
9
+ removeItem(id: string): Promise<void>;
10
+ getAllItems(): Promise<Batch[]>;
11
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _LocalStorage_instances, _LocalStorage_localStorage, _LocalStorage_databaseName, _LocalStorage_getDatabase;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LocalStorage = void 0;
16
+ class LocalStorage {
17
+ constructor() {
18
+ _LocalStorage_instances.add(this);
19
+ _LocalStorage_localStorage.set(this, void 0);
20
+ _LocalStorage_databaseName.set(this, 'YUNO_EVENT_LOGS');
21
+ __classPrivateFieldSet(this, _LocalStorage_localStorage, window.localStorage, "f");
22
+ const database = __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").getItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"));
23
+ if (database === null || database === undefined) {
24
+ __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").setItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"), JSON.stringify([]));
25
+ }
26
+ }
27
+ async reset() {
28
+ __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").setItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"), JSON.stringify([]));
29
+ }
30
+ async setItem(item) {
31
+ const database = __classPrivateFieldGet(this, _LocalStorage_instances, "m", _LocalStorage_getDatabase).call(this);
32
+ __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").setItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"), JSON.stringify([...database, item]));
33
+ }
34
+ getItem(id) {
35
+ throw new Error('Method not implemented.' + id);
36
+ }
37
+ removeItem(id) {
38
+ throw new Error('Method not implemented.' + id);
39
+ }
40
+ getAllItems() {
41
+ return Promise.resolve(__classPrivateFieldGet(this, _LocalStorage_instances, "m", _LocalStorage_getDatabase).call(this));
42
+ }
43
+ }
44
+ exports.LocalStorage = LocalStorage;
45
+ _LocalStorage_localStorage = new WeakMap(), _LocalStorage_databaseName = new WeakMap(), _LocalStorage_instances = new WeakSet(), _LocalStorage_getDatabase = function _LocalStorage_getDatabase() {
46
+ let database = __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").getItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"));
47
+ if (database === null || database === undefined) {
48
+ database = JSON.stringify([]);
49
+ __classPrivateFieldGet(this, _LocalStorage_localStorage, "f").setItem(__classPrivateFieldGet(this, _LocalStorage_databaseName, "f"), database);
50
+ }
51
+ return JSON.parse(database);
52
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("../../types");
4
+ const local_storage_1 = require("./local-storage");
5
+ const batch = {
6
+ source: 'test',
7
+ event: 'testEvent',
8
+ description: 'Test event',
9
+ original_created_at: new Date().toISOString(),
10
+ type: types_1.EventLogType.EVENT,
11
+ };
12
+ describe('LocalStorageDatabase', () => {
13
+ let localStorageDatabase;
14
+ beforeEach(() => {
15
+ localStorageDatabase = new local_storage_1.LocalStorage();
16
+ });
17
+ afterEach(() => {
18
+ localStorage.clear();
19
+ });
20
+ it('should set an item in the database', async () => {
21
+ await localStorageDatabase.setItem(batch);
22
+ const database = JSON.parse(localStorage.getItem('YUNO_EVENT_LOGS') || '[]');
23
+ expect(database).toContainEqual(batch);
24
+ });
25
+ it('should get an item from the database', async () => {
26
+ localStorage.setItem('YUNO_EVENT_LOGS', JSON.stringify([batch]));
27
+ const result = await localStorageDatabase.getAllItems();
28
+ expect(result).toEqual([batch]);
29
+ });
30
+ });
@@ -0,0 +1 @@
1
+ export * from './memory-storage';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./memory-storage"), exports);
@@ -0,0 +1,11 @@
1
+ import { Batch } from '../../types';
2
+ import { Database } from '../database.types';
3
+ export declare class MemoryStorage implements Database {
4
+ #private;
5
+ constructor();
6
+ reset(): Promise<void>;
7
+ setItem(item: Batch): Promise<void>;
8
+ getItem(id: string): Promise<Batch>;
9
+ removeItem(id: string): Promise<void>;
10
+ getAllItems(): Promise<Batch[]>;
11
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _MemoryStorage_items;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MemoryStorage = void 0;
16
+ class MemoryStorage {
17
+ constructor() {
18
+ _MemoryStorage_items.set(this, void 0);
19
+ __classPrivateFieldSet(this, _MemoryStorage_items, [], "f");
20
+ }
21
+ async reset() {
22
+ __classPrivateFieldSet(this, _MemoryStorage_items, [], "f");
23
+ }
24
+ async setItem(item) {
25
+ __classPrivateFieldGet(this, _MemoryStorage_items, "f").push(item);
26
+ }
27
+ getItem(id) {
28
+ throw new Error('Method not implemented.' + id);
29
+ }
30
+ removeItem(id) {
31
+ throw new Error('Method not implemented.' + id);
32
+ }
33
+ getAllItems() {
34
+ return Promise.resolve(__classPrivateFieldGet(this, _MemoryStorage_items, "f"));
35
+ }
36
+ }
37
+ exports.MemoryStorage = MemoryStorage;
38
+ _MemoryStorage_items = new WeakMap();
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("../../types");
4
+ const memory_storage_1 = require("./memory-storage");
5
+ const batch = {
6
+ source: 'test',
7
+ event: 'testEvent',
8
+ description: 'Test event',
9
+ original_created_at: new Date().toISOString(),
10
+ type: types_1.EventLogType.EVENT,
11
+ };
12
+ describe('MemoryStorage', () => {
13
+ let memoryStorage;
14
+ beforeEach(() => {
15
+ memoryStorage = new memory_storage_1.MemoryStorage();
16
+ });
17
+ afterEach(() => {
18
+ memoryStorage.reset();
19
+ });
20
+ it('should set an item in the database', async () => {
21
+ await memoryStorage.setItem(batch);
22
+ const database = await memoryStorage.getAllItems();
23
+ expect(database).toEqual([batch]);
24
+ });
25
+ });
@@ -0,0 +1,15 @@
1
+ import { InitArgs } from './index.types';
2
+ import './database';
3
+ import { Event, Log } from './types';
4
+ declare class EventLog {
5
+ #private;
6
+ init({ publicApiKey, platform, batchTime, enableEvents, enableLogs }: InitArgs): void;
7
+ event(eventArgs: Omit<Event, 'type'>): Promise<void> | undefined;
8
+ logger: {
9
+ error: (errorArgs: Omit<Log, 'level' | 'type'>) => Promise<void> | undefined;
10
+ debug: (debugArgs: Omit<Log, 'level' | 'type'>) => Promise<void> | undefined;
11
+ info: (infoArgs: Omit<Log, 'level' | 'type'>) => Promise<void> | undefined;
12
+ };
13
+ }
14
+ export declare const eventLog: EventLog;
15
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _EventLog_enableEvents, _EventLog_enableLogs;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.eventLog = void 0;
16
+ const api_1 = require("./api");
17
+ require("./database");
18
+ const cron_1 = require("./cron");
19
+ const types_1 = require("./types");
20
+ const database_1 = require("./database");
21
+ const index_utils_1 = require("./index.utils");
22
+ class EventLog {
23
+ constructor() {
24
+ _EventLog_enableEvents.set(this, false);
25
+ _EventLog_enableLogs.set(this, false);
26
+ this.logger = {
27
+ error: (errorArgs) => {
28
+ return (0, index_utils_1.setLog)(errorArgs, types_1.Level.ERROR, __classPrivateFieldGet(this, _EventLog_enableLogs, "f"));
29
+ },
30
+ debug: (debugArgs) => {
31
+ return (0, index_utils_1.setLog)(debugArgs, types_1.Level.DEBUG, __classPrivateFieldGet(this, _EventLog_enableLogs, "f"));
32
+ },
33
+ info: (infoArgs) => {
34
+ return (0, index_utils_1.setLog)(infoArgs, types_1.Level.INFO, __classPrivateFieldGet(this, _EventLog_enableLogs, "f"));
35
+ }
36
+ };
37
+ }
38
+ init({ publicApiKey, platform = 'web', batchTime, enableEvents, enableLogs }) {
39
+ __classPrivateFieldSet(this, _EventLog_enableEvents, enableEvents, "f");
40
+ __classPrivateFieldSet(this, _EventLog_enableLogs, enableLogs, "f");
41
+ api_1.api.init(publicApiKey, platform);
42
+ cron_1.cron.init(batchTime);
43
+ }
44
+ event(eventArgs) {
45
+ if (!__classPrivateFieldGet(this, _EventLog_enableEvents, "f")) {
46
+ return;
47
+ }
48
+ return database_1.database.setItem({ ...eventArgs, type: types_1.EventLogType.EVENT });
49
+ }
50
+ }
51
+ _EventLog_enableEvents = new WeakMap(), _EventLog_enableLogs = new WeakMap();
52
+ exports.eventLog = new EventLog();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ const database_1 = require("./database");
5
+ const cron_1 = require("./cron");
6
+ const PUBLIC_API_KEY = 'staging_gAAAAABj-NC2WEf3XA4lHnN6RfGbjETf6qL27jlU7c1tm01ERV-Y-E6ddee1QPyV_CA8cxjVlGy-qDNA2-mqa9msQlTJit-Fmbvv6f2AZdfbFd_CUo1stvixnF4_8MzM_IYVWYz7KK86VfEBvxNpjRCyp7BDef-QzrT1-yqa8HAYTuA1GU3Hjjo=';
7
+ const eventArgs = {
8
+ source: 'test',
9
+ event: 'testEvent',
10
+ description: 'Test event',
11
+ original_created_at: new Date().toISOString(),
12
+ };
13
+ const logArgs = {
14
+ sdk_version: '',
15
+ url: '',
16
+ method: '',
17
+ country: '',
18
+ original_created_at: new Date().toISOString()
19
+ };
20
+ describe('EventLog', () => {
21
+ beforeEach(() => {
22
+ // Reset the database before each test
23
+ // to ensure a clean slate
24
+ index_1.eventLog.init({
25
+ publicApiKey: PUBLIC_API_KEY,
26
+ batchTime: 500,
27
+ enableEvents: true,
28
+ enableLogs: true,
29
+ });
30
+ database_1.database.reset();
31
+ });
32
+ afterEach(async () => {
33
+ await new Promise((resolve) => setTimeout(resolve, 1000));
34
+ cron_1.cron.stop();
35
+ });
36
+ it('should add an event to the database', async () => {
37
+ index_1.eventLog.event(eventArgs);
38
+ const events = await database_1.database.getAllItems();
39
+ expect(events).toHaveLength(1);
40
+ expect(events[0]).toMatchObject(eventArgs);
41
+ });
42
+ it('should not add an event to the database if events are disabled', async () => {
43
+ index_1.eventLog.init({
44
+ publicApiKey: PUBLIC_API_KEY,
45
+ batchTime: 1000,
46
+ enableEvents: false,
47
+ enableLogs: true,
48
+ });
49
+ index_1.eventLog.event(eventArgs);
50
+ const events = await database_1.database.getAllItems();
51
+ expect(events).toHaveLength(0);
52
+ });
53
+ it('should log an error', async () => {
54
+ index_1.eventLog.logger.error(logArgs);
55
+ const events = await database_1.database.getAllItems();
56
+ expect(events).toHaveLength(1);
57
+ expect(events[0]).toMatchObject(logArgs);
58
+ });
59
+ it('should not log an error if logs are disabled', async () => {
60
+ index_1.eventLog.init({
61
+ publicApiKey: PUBLIC_API_KEY,
62
+ batchTime: 1000,
63
+ enableEvents: false,
64
+ enableLogs: false,
65
+ });
66
+ index_1.eventLog.logger.error(logArgs);
67
+ const events = await database_1.database.getAllItems();
68
+ expect(events).toHaveLength(0);
69
+ });
70
+ it('should log a debug message', async () => {
71
+ index_1.eventLog.logger.debug(logArgs);
72
+ const events = await database_1.database.getAllItems();
73
+ expect(events).toHaveLength(1);
74
+ expect(events[0]).toMatchObject(logArgs);
75
+ });
76
+ it('should not log a debug message if logs are disabled', async () => {
77
+ index_1.eventLog.init({
78
+ publicApiKey: PUBLIC_API_KEY,
79
+ batchTime: 1000,
80
+ enableEvents: false,
81
+ enableLogs: false,
82
+ });
83
+ index_1.eventLog.logger.debug(logArgs);
84
+ const events = await database_1.database.getAllItems();
85
+ expect(events).toHaveLength(0);
86
+ });
87
+ it('should log an info message', async () => {
88
+ index_1.eventLog.logger.info(logArgs);
89
+ const events = await database_1.database.getAllItems();
90
+ expect(events).toHaveLength(1);
91
+ expect(events[0]).toMatchObject(logArgs);
92
+ });
93
+ it('should not log an info message if logs are disabled', async () => {
94
+ index_1.eventLog.init({
95
+ publicApiKey: PUBLIC_API_KEY,
96
+ batchTime: 1000,
97
+ enableEvents: false,
98
+ enableLogs: false,
99
+ });
100
+ index_1.eventLog.logger.info(logArgs);
101
+ const events = await database_1.database.getAllItems();
102
+ expect(events).toHaveLength(0);
103
+ });
104
+ });
@@ -0,0 +1,7 @@
1
+ export type InitArgs = {
2
+ publicApiKey: string;
3
+ batchTime: number;
4
+ enableEvents: boolean;
5
+ enableLogs: boolean;
6
+ platform?: string;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { Level, Log } from './types';
2
+ export declare function setLog(logArgs: Omit<Log, 'level' | 'type'>, level: Level, enableLog: boolean): Promise<void> | undefined;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setLog = void 0;
4
+ const database_1 = require("./database");
5
+ const types_1 = require("./types");
6
+ function setLog(logArgs, level, enableLog) {
7
+ if (!enableLog) {
8
+ return;
9
+ }
10
+ return database_1.database.setItem({ ...logArgs, level, type: types_1.EventLogType.LOG });
11
+ }
12
+ exports.setLog = setLog;
@@ -0,0 +1,41 @@
1
+ export declare enum EventLogType {
2
+ LOG = "LOG",
3
+ EVENT = "EVENT"
4
+ }
5
+ export declare enum Level {
6
+ ERROR = "ERROR",
7
+ DEBUG = "DEBUG",
8
+ INFO = "INFO"
9
+ }
10
+ type BaseEventLog = {
11
+ type: EventLogType;
12
+ customer_session?: string;
13
+ checkout_session?: string;
14
+ original_created_at: string;
15
+ };
16
+ export type Log = BaseEventLog & {
17
+ sdk_version: string;
18
+ os?: string;
19
+ url: string;
20
+ method: string;
21
+ headers?: object;
22
+ request?: object;
23
+ response?: object;
24
+ status_code?: number;
25
+ trace_id?: string;
26
+ metadata?: unknown;
27
+ country: string;
28
+ organization_name?: string;
29
+ level: Level;
30
+ stack_trace?: string;
31
+ };
32
+ export type Event = BaseEventLog & {
33
+ source: string;
34
+ event: string;
35
+ entity_code?: string;
36
+ user_email?: string;
37
+ description: string;
38
+ headers?: object;
39
+ };
40
+ export type Batch = Log | Event;
41
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Level = exports.EventLogType = void 0;
4
+ var EventLogType;
5
+ (function (EventLogType) {
6
+ EventLogType["LOG"] = "LOG";
7
+ EventLogType["EVENT"] = "EVENT";
8
+ })(EventLogType || (exports.EventLogType = EventLogType = {}));
9
+ var Level;
10
+ (function (Level) {
11
+ Level["ERROR"] = "ERROR";
12
+ Level["DEBUG"] = "DEBUG";
13
+ Level["INFO"] = "INFO";
14
+ })(Level || (exports.Level = Level = {}));