@eratu/common 1.0.19 → 1.0.21
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/build/__tests__/enum/roles.test.js +1 -1
- package/build/__tests__/errors/request-validation-error.test.js +1 -3
- package/build/__tests__/events/base-listener.test.js +4 -3
- package/build/__tests__/events/streams.test.js +1 -7
- package/build/__tests__/events/subjects.test.js +1 -1
- package/build/__tests__/middlewares/current-user.test.js +1 -1
- package/build/__tests__/middlewares/require-auth.test.js +2 -2
- package/build/__tests__/nats-wrapper.test.js +2 -1
- package/build/__tests__/redis-wrapper.test.js +2 -1
- package/build/enum/image.d.ts +14 -0
- package/build/enum/image.js +18 -0
- package/build/errors/conflict-error.d.ts +9 -0
- package/build/errors/conflict-error.js +16 -0
- package/build/errors/forbidden-error.d.ts +1 -1
- package/build/errors/forbidden-error.js +1 -1
- package/build/errors/internal-error.d.ts +9 -0
- package/build/errors/internal-error.js +16 -0
- package/build/errors/not-authorized-error.d.ts +1 -1
- package/build/errors/not-authorized-error.js +1 -1
- package/build/errors/not-found-error.d.ts +1 -1
- package/build/errors/not-found-error.js +2 -2
- package/build/errors/request-validation-error.js +1 -1
- package/build/events/event-types/auth/admin-deleted-event.d.ts +2 -2
- package/build/events/event-types/auth/admin-signed-up-event.d.ts +2 -2
- package/build/events/event-types/auth/admin-updated-event.d.ts +2 -2
- package/build/events/event-types/auth/author-deleted-event.d.ts +2 -2
- package/build/events/event-types/auth/author-signed-in-event.d.ts +2 -2
- package/build/events/event-types/auth/author-signed-out-event.d.ts +2 -2
- package/build/events/event-types/auth/author-signed-up-event.d.ts +2 -2
- package/build/events/event-types/auth/author-updated-event.d.ts +2 -2
- package/build/events/event-types/auth/author-verified-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-deleted-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-signed-in-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-signed-out-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-signed-up-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-updated-event.d.ts +2 -2
- package/build/events/event-types/auth/reader-verified-event.d.ts +2 -2
- package/build/events/event-types/books/book-created-event.d.ts +25 -2
- package/build/events/event-types/books/book-deleted-event.d.ts +2 -2
- package/build/events/event-types/books/book-updated-event.d.ts +26 -2
- package/build/events/event-types/books/chapter-created-event.d.ts +16 -0
- package/build/events/event-types/books/chapter-created-event.js +2 -0
- package/build/events/event-types/books/chapter-deleted-event.d.ts +10 -0
- package/build/events/event-types/books/chapter-deleted-event.js +2 -0
- package/build/events/event-types/books/chapter-updated-event.d.ts +17 -0
- package/build/events/event-types/books/chapter-updated-event.js +2 -0
- package/build/events/event-types/books/genre-created-event.d.ts +13 -0
- package/build/events/event-types/books/genre-created-event.js +2 -0
- package/build/events/event-types/books/genre-deleted-event.d.ts +9 -0
- package/build/events/event-types/books/genre-deleted-event.js +2 -0
- package/build/events/event-types/books/genre-updated-event.d.ts +13 -0
- package/build/events/event-types/books/genre-updated-event.js +2 -0
- package/build/events/event-types/books/subgenre-created-event.d.ts +14 -0
- package/build/events/event-types/books/subgenre-created-event.js +2 -0
- package/build/events/event-types/books/subgenre-deleted-event.d.ts +9 -0
- package/build/events/event-types/books/subgenre-deleted-event.js +2 -0
- package/build/events/event-types/books/subgenre-updated-event.d.ts +14 -0
- package/build/events/event-types/books/subgenre-updated-event.js +2 -0
- package/build/events/event-types/books/tag-created-event.d.ts +12 -0
- package/build/events/event-types/books/tag-created-event.js +2 -0
- package/build/events/event-types/books/tag-deleted-event.d.ts +9 -0
- package/build/events/event-types/books/tag-deleted-event.js +2 -0
- package/build/events/event-types/books/tag-updated-event.d.ts +12 -0
- package/build/events/event-types/books/tag-updated-event.js +2 -0
- package/build/events/event-types/books/trigger-created-event.d.ts +12 -0
- package/build/events/event-types/books/trigger-created-event.js +2 -0
- package/build/events/event-types/books/trigger-deleted-event.d.ts +9 -0
- package/build/events/event-types/books/trigger-deleted-event.js +2 -0
- package/build/events/event-types/books/trigger-updated-event.d.ts +12 -0
- package/build/events/event-types/books/trigger-updated-event.js +2 -0
- package/build/events/event-types/books/trope-created-event.d.ts +12 -0
- package/build/events/event-types/books/trope-created-event.js +2 -0
- package/build/events/event-types/books/trope-deleted-event.d.ts +9 -0
- package/build/events/event-types/books/trope-deleted-event.js +2 -0
- package/build/events/event-types/books/trope-updated-event.d.ts +12 -0
- package/build/events/event-types/books/trope-updated-event.js +2 -0
- package/build/events/event-types/media/avatar-uploaded-event.d.ts +14 -0
- package/build/events/event-types/media/avatar-uploaded-event.js +2 -0
- package/build/events/event-types/orders/order-created-event.d.ts +2 -2
- package/build/events/listeners/base-listener.d.ts +4 -4
- package/build/events/listeners/base-listener.js +2 -1
- package/build/events/publishers/base-publisher.d.ts +4 -4
- package/build/events/streams.d.ts +2 -3
- package/build/events/streams.js +1 -2
- package/build/events/subjects.d.ts +16 -0
- package/build/events/subjects.js +17 -0
- package/build/index.d.ts +60 -38
- package/build/index.js +29 -0
- package/build/middlewares/allow-roles.d.ts +2 -2
- package/build/middlewares/current-user.d.ts +4 -4
- package/build/middlewares/current-user.js +6 -4
- package/build/middlewares/error-handler.js +2 -1
- package/build/middlewares/validation.js +2 -2
- package/build/nats-wrapper.js +17 -5
- package/build/redis-wrapper.d.ts +1 -1
- package/build/redis-wrapper.js +11 -11
- package/package.json +12 -5
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface SubgenreCreatedEvent {
|
|
4
|
+
subject: Subjects.SubgenreCreated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
sortOrder: number;
|
|
11
|
+
isActive: boolean;
|
|
12
|
+
genreId: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface SubgenreUpdatedEvent {
|
|
4
|
+
subject: Subjects.SubgenreUpdated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
sortOrder: number;
|
|
11
|
+
isActive: boolean;
|
|
12
|
+
genreId: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TagCreatedEvent {
|
|
4
|
+
subject: Subjects.TagCreated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TagUpdatedEvent {
|
|
4
|
+
subject: Subjects.TagUpdated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TriggerCreatedEvent {
|
|
4
|
+
subject: Subjects.TriggerCreated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TriggerUpdatedEvent {
|
|
4
|
+
subject: Subjects.TriggerUpdated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TropeCreatedEvent {
|
|
4
|
+
subject: Subjects.TropeCreated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface TropeUpdatedEvent {
|
|
4
|
+
subject: Subjects.TropeUpdated;
|
|
5
|
+
stream: Streams.BookServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string | null;
|
|
10
|
+
isActive: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
|
+
export interface AvatarUploadedEvent {
|
|
4
|
+
subject: Subjects.AvatarUploaded;
|
|
5
|
+
stream: Streams.MediaServiceStream;
|
|
6
|
+
data: {
|
|
7
|
+
userId: string;
|
|
8
|
+
imageId: string;
|
|
9
|
+
variants: {
|
|
10
|
+
original: string;
|
|
11
|
+
thumbnail: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Streams } from
|
|
2
|
-
import { Subjects } from
|
|
1
|
+
import { Streams } from '../../streams';
|
|
2
|
+
import { Subjects } from '../../subjects';
|
|
3
3
|
export interface OrderCreatedEvent {
|
|
4
4
|
subject: Subjects.OrderCreated;
|
|
5
5
|
stream: Streams.OrderServiceStream;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { JetStreamManager, JsMsg, Consumer, JetStreamClient } from
|
|
1
|
+
import { JetStreamManager, JsMsg, Consumer, JetStreamClient } from 'nats';
|
|
2
2
|
interface Event {
|
|
3
3
|
subject: string;
|
|
4
4
|
stream: string;
|
|
5
5
|
data: any;
|
|
6
6
|
}
|
|
7
7
|
export declare abstract class Listener<T extends Event> {
|
|
8
|
-
abstract subject: T[
|
|
9
|
-
abstract stream: T[
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
abstract stream: T['stream'];
|
|
10
10
|
abstract durableName: string;
|
|
11
|
-
abstract onMessage(data: T[
|
|
11
|
+
abstract onMessage(data: T['data'], msg: JsMsg): void;
|
|
12
12
|
protected jsm: JetStreamManager;
|
|
13
13
|
protected js: JetStreamClient;
|
|
14
14
|
protected consumer: Consumer;
|
|
@@ -28,6 +28,7 @@ class Listener {
|
|
|
28
28
|
waitForStream() {
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
30
|
let retryCount = 0;
|
|
31
|
+
// eslint-disable-next-line no-constant-condition
|
|
31
32
|
while (true) {
|
|
32
33
|
try {
|
|
33
34
|
yield this.jsm.streams.info(this.stream);
|
|
@@ -36,7 +37,7 @@ class Listener {
|
|
|
36
37
|
}
|
|
37
38
|
catch (_a) {
|
|
38
39
|
console.log(`⏳ Waiting for stream "${this.stream}"...`);
|
|
39
|
-
yield new Promise(
|
|
40
|
+
yield new Promise(res => setTimeout(res, 2000));
|
|
40
41
|
}
|
|
41
42
|
retryCount++;
|
|
42
43
|
if (retryCount > 5) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { JetStreamClient } from
|
|
1
|
+
import { JetStreamClient } from 'nats';
|
|
2
2
|
export interface Event {
|
|
3
3
|
subject: string;
|
|
4
4
|
stream: string;
|
|
5
5
|
data: any;
|
|
6
6
|
}
|
|
7
7
|
export declare abstract class Publisher<T extends Event> {
|
|
8
|
-
abstract subject: T[
|
|
9
|
-
abstract stream: T[
|
|
8
|
+
abstract subject: T['subject'];
|
|
9
|
+
abstract stream: T['stream'];
|
|
10
10
|
protected jsClient: JetStreamClient;
|
|
11
11
|
protected codec: import("nats").Codec<unknown>;
|
|
12
12
|
constructor(js: JetStreamClient);
|
|
13
|
-
publish(data: T[
|
|
13
|
+
publish(data: T['data']): Promise<void>;
|
|
14
14
|
}
|
package/build/events/streams.js
CHANGED
|
@@ -5,7 +5,6 @@ var Streams;
|
|
|
5
5
|
(function (Streams) {
|
|
6
6
|
Streams["OrderServiceStream"] = "orders";
|
|
7
7
|
Streams["BookServiceStream"] = "books";
|
|
8
|
-
Streams["ReaderServiceStream"] = "readers";
|
|
9
|
-
Streams["AuthorServiceStream"] = "authors";
|
|
10
8
|
Streams["AuthServiceStream"] = "auth";
|
|
9
|
+
Streams["MediaServiceStream"] = "media";
|
|
11
10
|
})(Streams || (exports.Streams = Streams = {}));
|
|
@@ -14,9 +14,25 @@ export declare enum Subjects {
|
|
|
14
14
|
AdminSignedUp = "admin:signed-up",
|
|
15
15
|
AdminDeleted = "admin:deleted",
|
|
16
16
|
AdminUpdated = "admin:updated",
|
|
17
|
+
AvatarUploaded = "avatar:uploaded",
|
|
17
18
|
BookCreated = "book:created",
|
|
18
19
|
BookUpdated = "book:updated",
|
|
19
20
|
BookDeleted = "book:deleted",
|
|
21
|
+
GenreCreated = "genre:created",
|
|
22
|
+
GenreUpdated = "genre:updated",
|
|
23
|
+
GenreDeleted = "genre:deleted",
|
|
24
|
+
SubgenreCreated = "subgenre:created",
|
|
25
|
+
SubgenreUpdated = "subgenre:updated",
|
|
26
|
+
SubgenreDeleted = "subgenre:deleted",
|
|
27
|
+
TagCreated = "tag:created",
|
|
28
|
+
TagUpdated = "tag:updated",
|
|
29
|
+
TagDeleted = "tag:deleted",
|
|
30
|
+
TropeCreated = "trope:created",
|
|
31
|
+
TropeUpdated = "trope:updated",
|
|
32
|
+
TropeDeleted = "trope:deleted",
|
|
33
|
+
TriggerCreated = "trigger:created",
|
|
34
|
+
TriggerUpdated = "trigger:updated",
|
|
35
|
+
TriggerDeleted = "trigger:deleted",
|
|
20
36
|
ChapterCreated = "chapter:created",
|
|
21
37
|
ChapterUpdated = "chapter:updated",
|
|
22
38
|
ChapterDeleted = "chapter:deleted",
|
package/build/events/subjects.js
CHANGED
|
@@ -21,10 +21,27 @@ var Subjects;
|
|
|
21
21
|
Subjects["AdminSignedUp"] = "admin:signed-up";
|
|
22
22
|
Subjects["AdminDeleted"] = "admin:deleted";
|
|
23
23
|
Subjects["AdminUpdated"] = "admin:updated";
|
|
24
|
+
// Media event subjects
|
|
25
|
+
Subjects["AvatarUploaded"] = "avatar:uploaded";
|
|
24
26
|
// Books related event subjects
|
|
25
27
|
Subjects["BookCreated"] = "book:created";
|
|
26
28
|
Subjects["BookUpdated"] = "book:updated";
|
|
27
29
|
Subjects["BookDeleted"] = "book:deleted";
|
|
30
|
+
Subjects["GenreCreated"] = "genre:created";
|
|
31
|
+
Subjects["GenreUpdated"] = "genre:updated";
|
|
32
|
+
Subjects["GenreDeleted"] = "genre:deleted";
|
|
33
|
+
Subjects["SubgenreCreated"] = "subgenre:created";
|
|
34
|
+
Subjects["SubgenreUpdated"] = "subgenre:updated";
|
|
35
|
+
Subjects["SubgenreDeleted"] = "subgenre:deleted";
|
|
36
|
+
Subjects["TagCreated"] = "tag:created";
|
|
37
|
+
Subjects["TagUpdated"] = "tag:updated";
|
|
38
|
+
Subjects["TagDeleted"] = "tag:deleted";
|
|
39
|
+
Subjects["TropeCreated"] = "trope:created";
|
|
40
|
+
Subjects["TropeUpdated"] = "trope:updated";
|
|
41
|
+
Subjects["TropeDeleted"] = "trope:deleted";
|
|
42
|
+
Subjects["TriggerCreated"] = "trigger:created";
|
|
43
|
+
Subjects["TriggerUpdated"] = "trigger:updated";
|
|
44
|
+
Subjects["TriggerDeleted"] = "trigger:deleted";
|
|
28
45
|
// Chapters related event subjects
|
|
29
46
|
Subjects["ChapterCreated"] = "chapter:created";
|
|
30
47
|
Subjects["ChapterUpdated"] = "chapter:updated";
|
package/build/index.d.ts
CHANGED
|
@@ -1,38 +1,60 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
15
|
-
export * from
|
|
16
|
-
export * from
|
|
17
|
-
export * from
|
|
18
|
-
export * from
|
|
19
|
-
export * from
|
|
20
|
-
export * from
|
|
21
|
-
export * from
|
|
22
|
-
export * from
|
|
23
|
-
export * from
|
|
24
|
-
export * from
|
|
25
|
-
export * from
|
|
26
|
-
export * from
|
|
27
|
-
export * from
|
|
28
|
-
export * from
|
|
29
|
-
export * from
|
|
30
|
-
export * from
|
|
31
|
-
export * from
|
|
32
|
-
export * from
|
|
33
|
-
export * from
|
|
34
|
-
export * from
|
|
35
|
-
export * from
|
|
36
|
-
export * from
|
|
37
|
-
export * from
|
|
38
|
-
export * from
|
|
1
|
+
export * from './errors/bad-request-error';
|
|
2
|
+
export * from './errors/custom-error';
|
|
3
|
+
export * from './errors/database-connection-error';
|
|
4
|
+
export * from './errors/not-authorized-error';
|
|
5
|
+
export * from './errors/not-found-error';
|
|
6
|
+
export * from './errors/request-validation-error';
|
|
7
|
+
export * from './errors/forbidden-error';
|
|
8
|
+
export * from './errors/internal-error';
|
|
9
|
+
export * from './errors/conflict-error';
|
|
10
|
+
export * from './middlewares/current-user';
|
|
11
|
+
export * from './middlewares/require-auth';
|
|
12
|
+
export * from './middlewares/validation';
|
|
13
|
+
export * from './middlewares/error-handler';
|
|
14
|
+
export * from './middlewares/allow-roles';
|
|
15
|
+
export * from './enum/roles';
|
|
16
|
+
export * from './enum/image';
|
|
17
|
+
export * from './events/listeners/base-listener';
|
|
18
|
+
export * from './events/publishers/base-publisher';
|
|
19
|
+
export * from './events/event-types/books/book-created-event';
|
|
20
|
+
export * from './events/event-types/books/book-updated-event';
|
|
21
|
+
export * from './events/event-types/books/book-deleted-event';
|
|
22
|
+
export * from './events/event-types/books/genre-created-event';
|
|
23
|
+
export * from './events/event-types/books/genre-updated-event';
|
|
24
|
+
export * from './events/event-types/books/genre-deleted-event';
|
|
25
|
+
export * from './events/event-types/books/subgenre-created-event';
|
|
26
|
+
export * from './events/event-types/books/subgenre-updated-event';
|
|
27
|
+
export * from './events/event-types/books/subgenre-deleted-event';
|
|
28
|
+
export * from './events/event-types/books/tag-created-event';
|
|
29
|
+
export * from './events/event-types/books/tag-updated-event';
|
|
30
|
+
export * from './events/event-types/books/tag-deleted-event';
|
|
31
|
+
export * from './events/event-types/books/trope-created-event';
|
|
32
|
+
export * from './events/event-types/books/trope-updated-event';
|
|
33
|
+
export * from './events/event-types/books/trope-deleted-event';
|
|
34
|
+
export * from './events/event-types/books/trigger-created-event';
|
|
35
|
+
export * from './events/event-types/books/trigger-updated-event';
|
|
36
|
+
export * from './events/event-types/books/trigger-deleted-event';
|
|
37
|
+
export * from './events/event-types/books/chapter-created-event';
|
|
38
|
+
export * from './events/event-types/books/chapter-updated-event';
|
|
39
|
+
export * from './events/event-types/books/chapter-deleted-event';
|
|
40
|
+
export * from './events/event-types/auth/author-updated-event';
|
|
41
|
+
export * from './events/event-types/auth/author-deleted-event';
|
|
42
|
+
export * from './events/event-types/auth/author-verified-event';
|
|
43
|
+
export * from './events/event-types/auth/author-signed-up-event';
|
|
44
|
+
export * from './events/event-types/auth/author-signed-in-event';
|
|
45
|
+
export * from './events/event-types/auth/author-signed-out-event';
|
|
46
|
+
export * from './events/event-types/auth/reader-updated-event';
|
|
47
|
+
export * from './events/event-types/auth/reader-deleted-event';
|
|
48
|
+
export * from './events/event-types/auth/reader-signed-up-event';
|
|
49
|
+
export * from './events/event-types/auth/reader-signed-in-event';
|
|
50
|
+
export * from './events/event-types/auth/reader-signed-out-event';
|
|
51
|
+
export * from './events/event-types/auth/reader-verified-event';
|
|
52
|
+
export * from './events/event-types/auth/admin-signed-up-event';
|
|
53
|
+
export * from './events/event-types/auth/admin-deleted-event';
|
|
54
|
+
export * from './events/event-types/auth/admin-updated-event';
|
|
55
|
+
export * from './events/event-types/media/avatar-uploaded-event';
|
|
56
|
+
export * from './events/event-types/orders/order-created-event';
|
|
57
|
+
export * from './events/subjects';
|
|
58
|
+
export * from './events/streams';
|
|
59
|
+
export * from './nats-wrapper';
|
|
60
|
+
export * from './redis-wrapper';
|
package/build/index.js
CHANGED
|
@@ -22,6 +22,8 @@ __exportStar(require("./errors/not-authorized-error"), exports);
|
|
|
22
22
|
__exportStar(require("./errors/not-found-error"), exports);
|
|
23
23
|
__exportStar(require("./errors/request-validation-error"), exports);
|
|
24
24
|
__exportStar(require("./errors/forbidden-error"), exports);
|
|
25
|
+
__exportStar(require("./errors/internal-error"), exports);
|
|
26
|
+
__exportStar(require("./errors/conflict-error"), exports);
|
|
25
27
|
// Middlewares
|
|
26
28
|
__exportStar(require("./middlewares/current-user"), exports);
|
|
27
29
|
__exportStar(require("./middlewares/require-auth"), exports);
|
|
@@ -30,11 +32,36 @@ __exportStar(require("./middlewares/error-handler"), exports);
|
|
|
30
32
|
__exportStar(require("./middlewares/allow-roles"), exports);
|
|
31
33
|
// Enums
|
|
32
34
|
__exportStar(require("./enum/roles"), exports);
|
|
35
|
+
__exportStar(require("./enum/image"), exports);
|
|
33
36
|
__exportStar(require("./events/listeners/base-listener"), exports);
|
|
34
37
|
__exportStar(require("./events/publishers/base-publisher"), exports);
|
|
35
38
|
__exportStar(require("./events/event-types/books/book-created-event"), exports);
|
|
36
39
|
__exportStar(require("./events/event-types/books/book-updated-event"), exports);
|
|
37
40
|
__exportStar(require("./events/event-types/books/book-deleted-event"), exports);
|
|
41
|
+
// Genre events
|
|
42
|
+
__exportStar(require("./events/event-types/books/genre-created-event"), exports);
|
|
43
|
+
__exportStar(require("./events/event-types/books/genre-updated-event"), exports);
|
|
44
|
+
__exportStar(require("./events/event-types/books/genre-deleted-event"), exports);
|
|
45
|
+
// Subgenre events
|
|
46
|
+
__exportStar(require("./events/event-types/books/subgenre-created-event"), exports);
|
|
47
|
+
__exportStar(require("./events/event-types/books/subgenre-updated-event"), exports);
|
|
48
|
+
__exportStar(require("./events/event-types/books/subgenre-deleted-event"), exports);
|
|
49
|
+
// Tag events
|
|
50
|
+
__exportStar(require("./events/event-types/books/tag-created-event"), exports);
|
|
51
|
+
__exportStar(require("./events/event-types/books/tag-updated-event"), exports);
|
|
52
|
+
__exportStar(require("./events/event-types/books/tag-deleted-event"), exports);
|
|
53
|
+
// Trope events
|
|
54
|
+
__exportStar(require("./events/event-types/books/trope-created-event"), exports);
|
|
55
|
+
__exportStar(require("./events/event-types/books/trope-updated-event"), exports);
|
|
56
|
+
__exportStar(require("./events/event-types/books/trope-deleted-event"), exports);
|
|
57
|
+
// Trigger events
|
|
58
|
+
__exportStar(require("./events/event-types/books/trigger-created-event"), exports);
|
|
59
|
+
__exportStar(require("./events/event-types/books/trigger-updated-event"), exports);
|
|
60
|
+
__exportStar(require("./events/event-types/books/trigger-deleted-event"), exports);
|
|
61
|
+
// Chapter events
|
|
62
|
+
__exportStar(require("./events/event-types/books/chapter-created-event"), exports);
|
|
63
|
+
__exportStar(require("./events/event-types/books/chapter-updated-event"), exports);
|
|
64
|
+
__exportStar(require("./events/event-types/books/chapter-deleted-event"), exports);
|
|
38
65
|
// Author events
|
|
39
66
|
__exportStar(require("./events/event-types/auth/author-updated-event"), exports);
|
|
40
67
|
__exportStar(require("./events/event-types/auth/author-deleted-event"), exports);
|
|
@@ -53,6 +80,8 @@ __exportStar(require("./events/event-types/auth/reader-verified-event"), exports
|
|
|
53
80
|
__exportStar(require("./events/event-types/auth/admin-signed-up-event"), exports);
|
|
54
81
|
__exportStar(require("./events/event-types/auth/admin-deleted-event"), exports);
|
|
55
82
|
__exportStar(require("./events/event-types/auth/admin-updated-event"), exports);
|
|
83
|
+
// Media events
|
|
84
|
+
__exportStar(require("./events/event-types/media/avatar-uploaded-event"), exports);
|
|
56
85
|
__exportStar(require("./events/event-types/orders/order-created-event"), exports);
|
|
57
86
|
__exportStar(require("./events/subjects"), exports);
|
|
58
87
|
__exportStar(require("./events/streams"), exports);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { UserRoles } from
|
|
2
|
-
import { Request, Response, NextFunction } from
|
|
1
|
+
import { UserRoles } from '../enum/roles';
|
|
2
|
+
import { Request, Response, NextFunction } from 'express';
|
|
3
3
|
export declare const allowRoles: (roles: UserRoles[]) => (req: Request, res: Response, next: NextFunction) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Request, Response, NextFunction } from
|
|
2
|
-
import { UserRoles } from
|
|
3
|
-
import { RedisWrapper } from
|
|
4
|
-
import NodeCache from
|
|
1
|
+
import { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import { UserRoles } from '../enum/roles';
|
|
3
|
+
import { RedisWrapper } from '../redis-wrapper';
|
|
4
|
+
import NodeCache from 'node-cache';
|
|
5
5
|
export interface UserJwtPayload {
|
|
6
6
|
id: string;
|
|
7
7
|
email: string;
|
|
@@ -23,7 +23,7 @@ class CurrentUserMiddleware {
|
|
|
23
23
|
return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
24
24
|
var _a, _b, _c, _d;
|
|
25
25
|
try {
|
|
26
|
-
const token = (_a = req.headers[
|
|
26
|
+
const token = (_a = req.headers['authorization']) === null || _a === void 0 ? void 0 : _a.split(' ')[1];
|
|
27
27
|
if (!token) {
|
|
28
28
|
return next();
|
|
29
29
|
}
|
|
@@ -56,7 +56,7 @@ class CurrentUserMiddleware {
|
|
|
56
56
|
next();
|
|
57
57
|
}
|
|
58
58
|
catch (err) {
|
|
59
|
-
console.error(
|
|
59
|
+
console.error('Auth error:', err);
|
|
60
60
|
return next();
|
|
61
61
|
}
|
|
62
62
|
});
|
|
@@ -65,7 +65,7 @@ class CurrentUserMiddleware {
|
|
|
65
65
|
exports.CurrentUserMiddleware = CurrentUserMiddleware;
|
|
66
66
|
const currentUser = (req, res, next) => {
|
|
67
67
|
var _a;
|
|
68
|
-
const token = (_a = req.headers[
|
|
68
|
+
const token = (_a = req.headers['authorization']) === null || _a === void 0 ? void 0 : _a.split(' ')[1];
|
|
69
69
|
if (!token) {
|
|
70
70
|
return next();
|
|
71
71
|
}
|
|
@@ -80,7 +80,9 @@ const currentUser = (req, res, next) => {
|
|
|
80
80
|
};
|
|
81
81
|
req.currentUser = userData;
|
|
82
82
|
}
|
|
83
|
-
catch (err) {
|
|
83
|
+
catch (err) {
|
|
84
|
+
console.log(err);
|
|
85
|
+
}
|
|
84
86
|
next();
|
|
85
87
|
};
|
|
86
88
|
exports.currentUser = currentUser;
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.errorHandler = void 0;
|
|
4
4
|
const custom_error_1 = require("../errors/custom-error");
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
6
|
const errorHandler = (err, req, res, next) => {
|
|
6
7
|
if (err instanceof custom_error_1.CustomError) {
|
|
7
8
|
return res.status(err.statusCode).send({ errors: err.serializeErrors() });
|
|
8
9
|
}
|
|
9
10
|
res.status(400).send({
|
|
10
|
-
errors: [{ message: 'Something went wrong' }]
|
|
11
|
+
errors: [{ message: 'Something went wrong' }],
|
|
11
12
|
});
|
|
12
13
|
};
|
|
13
14
|
exports.errorHandler = errorHandler;
|
|
@@ -26,9 +26,9 @@ function validationMiddleware(type, field = 'body', skipMissingProperties = fals
|
|
|
26
26
|
if (errors.length > 0) {
|
|
27
27
|
// Transform validation errors to our format
|
|
28
28
|
const validationErrors = [];
|
|
29
|
-
errors.forEach(
|
|
29
|
+
errors.forEach(error => {
|
|
30
30
|
if (error.constraints) {
|
|
31
|
-
Object.values(error.constraints).forEach(
|
|
31
|
+
Object.values(error.constraints).forEach(message => {
|
|
32
32
|
validationErrors.push({
|
|
33
33
|
message,
|
|
34
34
|
field: error.property,
|