@rolatech/angular-comment 17.1.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 (30) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +4 -0
  3. package/esm2022/lib/components/comment-action/comment-action.component.mjs +66 -0
  4. package/esm2022/lib/components/comment-item/comment-item.component.mjs +107 -0
  5. package/esm2022/lib/components/comment-replies/comment-replies.component.mjs +51 -0
  6. package/esm2022/lib/components/comments/comments.component.mjs +61 -0
  7. package/esm2022/lib/components/comments-header/comments-header.component.mjs +84 -0
  8. package/esm2022/lib/components/index.mjs +5 -0
  9. package/esm2022/lib/components/reply-item/reply-item.component.mjs +69 -0
  10. package/esm2022/lib/interfaces/comment.interface.mjs +6 -0
  11. package/esm2022/lib/interfaces/index.mjs +2 -0
  12. package/esm2022/lib/services/comment.service.mjs +200 -0
  13. package/esm2022/lib/services/index.mjs +2 -0
  14. package/esm2022/rolatech-angular-comment.mjs +5 -0
  15. package/fesm2022/rolatech-angular-comment.mjs +581 -0
  16. package/fesm2022/rolatech-angular-comment.mjs.map +1 -0
  17. package/index.d.ts +3 -0
  18. package/lib/components/comment-action/comment-action.component.d.ts +21 -0
  19. package/lib/components/comment-item/comment-item.component.d.ts +20 -0
  20. package/lib/components/comment-replies/comment-replies.component.d.ts +19 -0
  21. package/lib/components/comments/comments.component.d.ts +19 -0
  22. package/lib/components/comments-header/comments-header.component.d.ts +21 -0
  23. package/lib/components/index.d.ts +4 -0
  24. package/lib/components/reply-item/reply-item.component.d.ts +16 -0
  25. package/lib/interfaces/comment.interface.d.ts +43 -0
  26. package/lib/interfaces/index.d.ts +1 -0
  27. package/lib/services/comment.service.d.ts +37 -0
  28. package/lib/services/index.d.ts +1 -0
  29. package/package.json +31 -0
  30. package/themes/_default.scss +1 -0
@@ -0,0 +1,6 @@
1
+ export var ThumbStatus;
2
+ (function (ThumbStatus) {
3
+ ThumbStatus[ThumbStatus["UP"] = 'Like'] = "UP";
4
+ ThumbStatus[ThumbStatus["DOWN"] = 'Dislike'] = "DOWN";
5
+ })(ThumbStatus || (ThumbStatus = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2ludGVyZmFjZXMvY29tbWVudC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUNBLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsZ0NBQVUsTUFBTSxRQUFBLENBQUE7SUFDaEIsa0NBQVksU0FBUyxVQUFBLENBQUE7QUFDdkIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb21tZW50IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGl0ZW1JZDogc3RyaW5nO1xuICByZXBsaWVzOiBSZXBseVtdO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXNlcjogQ29tbWVudFVzZXI7XG4gIHJlcGxpZXNDb3VudDogbnVtYmVyO1xuICB0aHVtYnNVcENvdW50OiBudW1iZXI7XG4gIHRodW1ic0Rvd25Db3VudDogbnVtYmVyO1xuICBsaWtlOiBib29sZWFuO1xuICBkaXNsaWtlOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBSZXBseSB7XG4gIGlkPzogc3RyaW5nO1xuICBjb21tZW50SWQ6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBzZW5kZXJJZDogc3RyaW5nO1xuICByZXBseUlkPzogc3RyaW5nO1xuICByZWNpcGllbnRJZDogc3RyaW5nO1xuICByZXBsaWVzPzogUmVwbHlbXTtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVzZXI6IENvbW1lbnRVc2VyO1xuICB0aHVtYnNVcENvdW50OiBudW1iZXI7XG4gIHRodW1ic0Rvd25Db3VudDogbnVtYmVyO1xuICBsaWtlOiBib29sZWFuO1xuICBkaXNsaWtlOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50VXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGF2YXRhcj86IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGh1bWIge1xuICBpZDogc3RyaW5nO1xuICBzdGF0dXM6IFRodW1iU3RhdHVzIHwgc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbn1cbmV4cG9ydCBlbnVtIFRodW1iU3RhdHVzIHtcbiAgVVAgPSA8YW55PidMaWtlJyxcbiAgRE9XTiA9IDxhbnk+J0Rpc2xpa2UnLFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbW1lbnQsIFJlcGx5LCBDb21tZW50VXNlciB9IGZyb20gJy4vY29tbWVudC5pbnRlcmZhY2UnO1xuIl19
@@ -0,0 +1,200 @@
1
+ import { EventEmitter, Injectable, inject } from '@angular/core';
2
+ import { AuthService, AuthUserService } from '@rolatech/angular-auth';
3
+ import { BaseService } from '@rolatech/angular-services';
4
+ import _ from 'lodash';
5
+ import { map, of, switchMap } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export class CommentService extends BaseService {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.authService = inject(AuthService);
11
+ this.authUserService = inject(AuthUserService);
12
+ this.onCommentLoading = new EventEmitter();
13
+ this.onComment = new EventEmitter();
14
+ this.onCommentReply = new EventEmitter();
15
+ }
16
+ init() {
17
+ this.endpoint = 'comments';
18
+ super.init();
19
+ }
20
+ findComments(options) {
21
+ options = {
22
+ sort: 'createdAt desc',
23
+ };
24
+ return this.http.get(`${this.actionUrl}`, { params: options }).pipe(map((res) => {
25
+ const userIds = _.uniq(_.map(res.data, 'userId')); // [12, 14, 16, 18]
26
+ this.findCommentsUser(userIds);
27
+ return res;
28
+ }));
29
+ }
30
+ findCommentsByItemId(itemId) {
31
+ const options = {
32
+ sort: 'createdAt desc',
33
+ filter: `itemId:${itemId}`,
34
+ };
35
+ return this.http.get(`${this.actionUrl}`, { params: options }).pipe(switchMap((comments) => {
36
+ const userIds = _.uniq(_.map(comments.data, 'userId')); // [12, 14, 16, 18]
37
+ return this.findCommentsUser(userIds).pipe(map((users) => {
38
+ comments.data?.forEach((item) => {
39
+ const matchingUser = _.find(users.data, { id: item.userId });
40
+ item.user = matchingUser;
41
+ });
42
+ return comments;
43
+ }));
44
+ }), switchMap((comments) => {
45
+ const ids = _.uniq(_.map(comments.data, 'id')); // [12, 14, 16, 18]
46
+ return this.authService.introspect().pipe(switchMap((res) => {
47
+ if (res.authenticated) {
48
+ return this.findMyCommentsThumbs(ids).pipe(map((thumbs) => {
49
+ comments.data?.forEach((item) => {
50
+ const matchingComment = _.find(thumbs.data, (obj) => _.get(obj, `comment.id`) === item.id);
51
+ item.like = matchingComment?.status === 'UP';
52
+ item.dislike = matchingComment?.status === 'DOWN';
53
+ });
54
+ return comments;
55
+ }));
56
+ }
57
+ else {
58
+ return of(comments);
59
+ }
60
+ }));
61
+ }));
62
+ }
63
+ createComment(data) {
64
+ return this.http
65
+ .post(`${this.actionUrl}`, data, {
66
+ withCredentials: true,
67
+ })
68
+ .pipe(map((res) => {
69
+ res.data.repliesCount = 0;
70
+ this.getUserInfo(res.data);
71
+ return res.data;
72
+ }));
73
+ }
74
+ countCommnentsByItemId(itemId) {
75
+ return this.http.get(`${this.actionUrl}/count/by`, { params: { itemId } });
76
+ }
77
+ countRepliesByCommentId(commentId) {
78
+ return this.http.get(`${this.actionUrl}/replies/count/by`, { params: { commentId } });
79
+ }
80
+ reply(id, data) {
81
+ return this.http
82
+ .post(`${this.actionUrl}/${id}/replies`, data, {
83
+ withCredentials: true,
84
+ })
85
+ .pipe(map((res) => {
86
+ this.getReplyUserInfo(res.data);
87
+ return res.data;
88
+ }));
89
+ }
90
+ findRepliesByCommentId(commentId) {
91
+ return this.http.get(`${this.actionUrl}/${commentId}/replies`).pipe(switchMap((replies) => {
92
+ const userIds = _.uniq(_.map(replies.data, 'senderId')); // [12, 14, 16, 18]
93
+ return this.findRepliesUser(userIds).pipe(map((users) => {
94
+ replies.data?.forEach((item) => {
95
+ const matchingUser = _.find(users.data, { id: item.senderId });
96
+ item.user = matchingUser;
97
+ });
98
+ return replies;
99
+ }));
100
+ }), switchMap((replies) => {
101
+ const ids = _.uniq(_.map(replies.data, 'id'));
102
+ return this.authService.introspect().pipe(switchMap((res) => {
103
+ if (res.authenticated) {
104
+ return this.findMyRepliesThumbs(ids).pipe(map((thumbs) => {
105
+ replies.data?.forEach((reply) => {
106
+ const matchingReply = _.find(thumbs.data, (obj) => _.get(obj, `reply.id`) === reply.id);
107
+ reply.like = matchingReply?.status === 'UP';
108
+ reply.dislike = matchingReply?.status === 'DOWN';
109
+ });
110
+ return replies;
111
+ }));
112
+ }
113
+ else {
114
+ return of(replies);
115
+ }
116
+ }));
117
+ }));
118
+ }
119
+ commentThumbsUp(commentId) {
120
+ return this.http.post(`${this.actionUrl}/${commentId}/thumbs/up`, {}, {
121
+ withCredentials: true,
122
+ });
123
+ }
124
+ commentThumbsDown(commentId) {
125
+ return this.http.post(`${this.actionUrl}/${commentId}/thumbs/down`, {}, {
126
+ withCredentials: true,
127
+ });
128
+ }
129
+ deleteCommentThumbsUp(commentId) {
130
+ return this.http.delete(`${this.actionUrl}/${commentId}/thumbs/up`, {
131
+ withCredentials: true,
132
+ });
133
+ }
134
+ deleteCommentThumbsDown(commentId) {
135
+ return this.http.delete(`${this.actionUrl}/${commentId}/thumbs/down`, {
136
+ withCredentials: true,
137
+ });
138
+ }
139
+ replyThumbsUp(replyId) {
140
+ return this.http.post(`${this.actionUrl}/replies/${replyId}/thumbs/up`, {}, {
141
+ withCredentials: true,
142
+ });
143
+ }
144
+ replyThumbsDown(replyId) {
145
+ return this.http.post(`${this.actionUrl}/replies/${replyId}/thumbs/down`, {}, {
146
+ withCredentials: true,
147
+ });
148
+ }
149
+ deleteReplyThumbsUp(replyId) {
150
+ return this.http.delete(`${this.actionUrl}/${replyId}/thumbs/up`, {
151
+ withCredentials: true,
152
+ });
153
+ }
154
+ deleteReplyThumbsDown(replyId) {
155
+ return this.http.delete(`${this.actionUrl}/${replyId}/thumbs/down`, {
156
+ withCredentials: true,
157
+ });
158
+ }
159
+ getReplyUserInfo(reply) {
160
+ this.authUserService.getPublicUserInfo(reply.senderId).subscribe({
161
+ next: (res) => {
162
+ reply.user = res;
163
+ },
164
+ });
165
+ }
166
+ getUserInfo(comment) {
167
+ this.authUserService.getPublicUserInfo(comment.userId).subscribe({
168
+ next: (res) => {
169
+ comment.user = res;
170
+ },
171
+ });
172
+ }
173
+ findRepliesUser(ids) {
174
+ return this.authUserService.findPublicInfoByIds(ids);
175
+ }
176
+ findCommentsUser(ids) {
177
+ return this.authUserService.findPublicInfoByIds(ids);
178
+ }
179
+ findMyCommentsThumbs(ids) {
180
+ const params = { ids: ids.join(',') };
181
+ return this.http.get(`${this.actionUrl}/thumbs/me`, {
182
+ params: params,
183
+ withCredentials: true,
184
+ });
185
+ }
186
+ findMyRepliesThumbs(ids) {
187
+ const params = { ids: ids.join(',') };
188
+ return this.http.get(`${this.actionUrl}/replies/thumbs/me`, {
189
+ params: params,
190
+ withCredentials: true,
191
+ });
192
+ }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CommentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
194
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CommentService, providedIn: 'root' }); }
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CommentService, decorators: [{
197
+ type: Injectable,
198
+ args: [{ providedIn: 'root' }]
199
+ }] });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9jb21tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQWMsR0FBRyxFQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSWhFLE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUQvQzs7UUFFRSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxjQUFTLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTZOMUQ7SUEzTlUsSUFBSTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBWTtRQUN2QixPQUFPLEdBQUc7WUFDUixJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFF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UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksRUFBRTtZQUNsRCxNQUFNLEVBQUUsTUFBTTtZQUNkLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxHQUFrQjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLG9CQUFvQixFQUFFO1lBQzFELE1BQU0sRUFBRSxNQUFNO1lBQ2QsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FqT1UsY0FBYztrSEFBZCxjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgbWVyZ2VNYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbW1lbnQsIFJlcGx5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ29tbWVudFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIG9uQ29tbWVudExvYWRpbmc6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgb25Db21tZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uQ29tbWVudFJlcGx5OiBFdmVudEVtaXR0ZXI8UmVwbHk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG92ZXJyaWRlIGluaXQoKSB7XG4gICAgdGhpcy5lbmRwb2ludCA9ICdjb21tZW50cyc7XG4gICAgc3VwZXIuaW5pdCgpO1xuICB9XG4gIGZpbmRDb21tZW50cyhvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICBzb3J0OiAnY3JlYXRlZEF0IGRlc2MnLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hY3Rpb25Vcmx9YCwgeyBwYXJhbXM6IG9wdGlvbnMgfSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlcklkcyA9IF8udW5pcShfLm1hcChyZXMuZGF0YSwgJ3VzZXJJZCcpKTsgLy8gWzEyLCAxNCwgMTYsIDE4XVxuICAgICAgICB0aGlzLmZpbmRDb21tZW50c1VzZXIodXNlcklkcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG4gIGZpbmRDb21tZW50c0J5SXRlbUlkKGl0ZW1JZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgc29ydDogJ2NyZWF0ZWRBdCBkZXNjJyxcbiAgICAgIGZpbHRlcjogYGl0ZW1JZDoke2l0ZW1JZH1gLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hY3Rpb25Vcmx9YCwgeyBwYXJhbXM6IG9wdGlvbnMgfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY29tbWVudHM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VySWRzID0gXy51bmlxKF8ubWFwKGNvbW1lbnRzLmRhdGEsICd1c2VySWQnKSk7IC8vIFsxMiwgMTQsIDE2LCAxOF1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZENvbW1lbnRzVXNlcih1c2VySWRzKS5waXBlKFxuICAgICAgICAgIG1hcCgodXNlcnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29tbWVudHMuZGF0YT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ1VzZXIgPSBfLmZpbmQodXNlcnMuZGF0YSwgeyBpZDogaXRlbS51c2VySWQgfSk7XG4gICAgICAgICAgICAgIGl0ZW0udXNlciA9IG1hdGNoaW5nVXNlcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnRzO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKGNvbW1lbnRzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaWRzID0gXy51bmlxKF8ubWFwKGNvbW1lbnRzLmRhdGEsICdpZCcpKTsgLy8gWzEyLCAxNCwgMTYsIDE4XVxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pbnRyb3NwZWN0KCkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNeUNvbW1lbnRzVGh1bWJzKGlkcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRodW1iczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb21tZW50cy5kYXRhPy5mb3JFYWNoKChpdGVtOiBDb21tZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tbWVudCA9IF8uZmluZCh0aHVtYnMuZGF0YSwgKG9iaikgPT4gXy5nZXQob2JqLCBgY29tbWVudC5pZGApID09PSBpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5saWtlID0gbWF0Y2hpbmdDb21tZW50Py5zdGF0dXMgPT09ICdVUCc7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzbGlrZSA9IG1hdGNoaW5nQ29tbWVudD8uc3RhdHVzID09PSAnRE9XTic7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjb21tZW50cztcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihjb21tZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlQ29tbWVudChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMuYWN0aW9uVXJsfWAsIGRhdGEsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcmVzLmRhdGEucmVwbGllc0NvdW50ID0gMDtcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvKHJlcy5kYXRhKTtcbiAgICAgICAgICByZXR1cm4gcmVzLmRhdGE7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuICBjb3VudENvbW1uZW50c0J5SXRlbUlkKGl0ZW1JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFjdGlvblVybH0vY291bnQvYnlgLCB7IHBhcmFtczogeyBpdGVtSWQgfSB9KTtcbiAgfVxuICBjb3VudFJlcGxpZXNCeUNvbW1lbnRJZChjb21tZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hY3Rpb25Vcmx9L3JlcGxpZXMvY291bnQvYnlgLCB7IHBhcmFtczogeyBjb21tZW50SWQgfSB9KTtcbiAgfVxuXG4gIHJlcGx5KGlkOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoYCR7dGhpcy5hY3Rpb25Vcmx9LyR7aWR9L3JlcGxpZXNgLCBkYXRhLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0UmVwbHlVc2VySW5mbyhyZXMuZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbiAgZmluZFJlcGxpZXNCeUNvbW1lbnRJZChjb21tZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hY3Rpb25Vcmx9LyR7Y29tbWVudElkfS9yZXBsaWVzYCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVwbGllczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXJJZHMgPSBfLnVuaXEoXy5tYXAocmVwbGllcy5kYXRhLCAnc2VuZGVySWQnKSk7IC8vIFsxMiwgMTQsIDE2LCAxOF1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFJlcGxpZXNVc2VyKHVzZXJJZHMpLnBpcGUoXG4gICAgICAgICAgbWFwKCh1c2VycykgPT4ge1xuICAgICAgICAgICAgcmVwbGllcy5kYXRhPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nVXNlciA9IF8uZmluZCh1c2Vycy5kYXRhLCB7IGlkOiBpdGVtLnNlbmRlcklkIH0pO1xuICAgICAgICAgICAgICBpdGVtLnVzZXIgPSBtYXRjaGluZ1VzZXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXBsaWVzO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKHJlcGxpZXMpID0+IHtcbiAgICAgICAgY29uc3QgaWRzID0gXy51bmlxKF8ubWFwKHJlcGxpZXMuZGF0YSwgJ2lkJykpO1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pbnRyb3NwZWN0KCkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNeVJlcGxpZXNUaHVtYnMoaWRzKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGh1bWJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXBsaWVzLmRhdGE/LmZvckVhY2goKHJlcGx5OiBSZXBseSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ1JlcGx5ID0gXy5maW5kKHRodW1icy5kYXRhLCAob2JqKSA9PiBfLmdldChvYmosIGByZXBseS5pZGApID09PSByZXBseS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcGx5Lmxpa2UgPSBtYXRjaGluZ1JlcGx5Py5zdGF0dXMgPT09ICdVUCc7XG4gICAgICAgICAgICAgICAgICAgIHJlcGx5LmRpc2xpa2UgPSBtYXRjaGluZ1JlcGx5Py5zdGF0dXMgPT09ICdET1dOJztcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxpZXM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YocmVwbGllcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG4gIGNvbW1lbnRUaHVtYnNVcChjb21tZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hY3Rpb25Vcmx9LyR7Y29tbWVudElkfS90aHVtYnMvdXBgLFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuICBjb21tZW50VGh1bWJzRG93bihjb21tZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hY3Rpb25Vcmx9LyR7Y29tbWVudElkfS90aHVtYnMvZG93bmAsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG4gIGRlbGV0ZUNvbW1lbnRUaHVtYnNVcChjb21tZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5hY3Rpb25Vcmx9LyR7Y29tbWVudElkfS90aHVtYnMvdXBgLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSk7XG4gIH1cbiAgZGVsZXRlQ29tbWVudFRodW1ic0Rvd24oY29tbWVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuYWN0aW9uVXJsfS8ke2NvbW1lbnRJZH0vdGh1bWJzL2Rvd25gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSk7XG4gIH1cbiAgcmVwbHlUaHVtYnNVcChyZXBseUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke3RoaXMuYWN0aW9uVXJsfS9yZXBsaWVzLyR7cmVwbHlJZH0vdGh1bWJzL3VwYCxcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG4gIH1cbiAgcmVwbHlUaHVtYnNEb3duKHJlcGx5SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hY3Rpb25Vcmx9L3JlcGxpZXMvJHtyZXBseUlkfS90aHVtYnMvZG93bmAsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlUmVwbHlUaHVtYnNVcChyZXBseUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuYWN0aW9uVXJsfS8ke3JlcGx5SWR9L3RodW1icy91cGAsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuICBkZWxldGVSZXBseVRodW1ic0Rvd24ocmVwbHlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmFjdGlvblVybH0vJHtyZXBseUlkfS90aHVtYnMvZG93bmAsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJlcGx5VXNlckluZm8ocmVwbHk6IGFueSkge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLmdldFB1YmxpY1VzZXJJbmZvKHJlcGx5LnNlbmRlcklkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICByZXBseS51c2VyID0gcmVzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBnZXRVc2VySW5mbyhjb21tZW50OiBhbnkpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5nZXRQdWJsaWNVc2VySW5mbyhjb21tZW50LnVzZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgY29tbWVudC51c2VyID0gcmVzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kUmVwbGllc1VzZXIoaWRzOiBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoVXNlclNlcnZpY2UuZmluZFB1YmxpY0luZm9CeUlkcyhpZHMpO1xuICB9XG4gIGZpbmRDb21tZW50c1VzZXIoaWRzOiBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoVXNlclNlcnZpY2UuZmluZFB1YmxpY0luZm9CeUlkcyhpZHMpO1xuICB9XG4gIGZpbmRNeUNvbW1lbnRzVGh1bWJzKGlkczogQXJyYXk8c3RyaW5nPik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcGFyYW1zID0geyBpZHM6IGlkcy5qb2luKCcsJykgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFjdGlvblVybH0vdGh1bWJzL21lYCwge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSk7XG4gIH1cbiAgZmluZE15UmVwbGllc1RodW1icyhpZHM6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHsgaWRzOiBpZHMuam9pbignLCcpIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hY3Rpb25Vcmx9L3JlcGxpZXMvdGh1bWJzL21lYCwge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { CommentService } from './comment.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tbWVudC9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sYXRlY2gtYW5ndWxhci1jb21tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWNvbW1lbnQvc3JjL3JvbGF0ZWNoLWFuZ3VsYXItY29tbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==