@banta/sdk 4.9.1 → 5.0.1
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/{esm2020 → esm2022}/banta-sdk.mjs +4 -4
- package/{esm2020 → esm2022}/lib/attachment-scraper.mjs +1 -1
- package/esm2022/lib/banta/banta.component.mjs +204 -0
- package/{esm2020 → esm2022}/lib/banta-logo.component.mjs +11 -11
- package/esm2022/lib/banta-sdk.module.mjs +143 -0
- package/esm2022/lib/chat/banta-chat/banta-chat.component.mjs +187 -0
- package/esm2022/lib/chat/chat-message/chat-message.component.mjs +62 -0
- package/esm2022/lib/chat/chat-view/chat-view.component.mjs +170 -0
- package/{esm2020 → esm2022}/lib/chat/chat.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/chat/index.mjs +5 -5
- package/esm2022/lib/chat/live-chat-message.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/chat-backend-base.mjs +30 -30
- package/esm2022/lib/chat-backend.mjs +163 -0
- package/{esm2020 → esm2022}/lib/chat-source-base.mjs +1 -1
- package/esm2022/lib/chat-source.mjs +233 -0
- package/esm2022/lib/comments/attachment-button/attachment-button.component.mjs +76 -0
- package/esm2022/lib/comments/attachment-scraper.directive.mjs +107 -0
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +739 -0
- package/esm2022/lib/comments/comment/comment.component.mjs +175 -0
- package/esm2022/lib/comments/comment-field/comment-field.component.mjs +401 -0
- package/esm2022/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +470 -0
- package/esm2022/lib/comments/comments.module.mjs +111 -0
- package/{esm2020 → esm2022}/lib/comments/index.mjs +10 -10
- package/esm2022/lib/comments/live-comment.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/comments/reply-send-options.directive.mjs +13 -13
- package/esm2022/lib/common/attachment/attachment.component.mjs +112 -0
- package/{esm2020 → esm2022}/lib/common/attachments/attachments.component.mjs +75 -75
- package/{esm2020 → esm2022}/lib/common/common.module.mjs +68 -68
- package/{esm2020 → esm2022}/lib/common/index.mjs +10 -10
- package/{esm2020 → esm2022}/lib/common/lazy-connection.mjs +14 -14
- package/esm2022/lib/common/lightbox/lightbox.component.mjs +31 -0
- package/esm2022/lib/common/markdown-to-html.pipe.mjs +89 -0
- package/esm2022/lib/common/mention-linker.pipe.mjs +35 -0
- package/esm2022/lib/common/timer-pool.service.mjs +83 -0
- package/esm2022/lib/common/timestamp.component.mjs +123 -0
- package/{esm2020 → esm2022}/lib/common/trust-resource-url.pipe.mjs +22 -22
- package/esm2022/lib/emoji/emoji-selector-button.component.mjs +115 -0
- package/esm2022/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +98 -0
- package/{esm2020 → esm2022}/lib/emoji/emoji.module.mjs +55 -55
- package/{esm2020 → esm2022}/lib/emoji/emojis.mjs +6507 -6507
- package/{esm2020 → esm2022}/lib/emoji/index.mjs +4 -4
- package/esm2022/lib/giphy-attachments.mjs +16 -0
- package/{esm2020 → esm2022}/lib/index.mjs +19 -19
- package/{esm2020 → esm2022}/lib/live-message.component.mjs +61 -61
- package/{esm2020 → esm2022}/lib/message-menu-item.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sdk-options.mjs +1 -1
- package/esm2022/lib/static-chat-source.mjs +71 -0
- package/esm2022/lib/tweet-attachments.mjs +13 -0
- package/esm2022/lib/url-attachments.mjs +42 -0
- package/esm2022/lib/youtube-attachments.mjs +29 -0
- package/{esm2020 → esm2022}/public-api.mjs +4 -4
- package/{fesm2020 → fesm2022}/banta-sdk.mjs +10753 -10754
- package/fesm2022/banta-sdk.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/attachment-scraper.d.ts +15 -15
- package/lib/banta/banta.component.d.ts +58 -58
- package/lib/banta-logo.component.d.ts +5 -5
- package/lib/banta-sdk.module.d.ts +31 -31
- package/lib/chat/banta-chat/banta-chat.component.d.ts +70 -70
- package/lib/chat/chat-message/chat-message.component.d.ts +21 -21
- package/lib/chat/chat-view/chat-view.component.d.ts +52 -52
- package/lib/chat/chat.module.d.ts +15 -15
- package/lib/chat/index.d.ts +5 -5
- package/lib/chat/live-chat-message.component.d.ts +23 -23
- package/lib/chat-backend-base.d.ts +36 -36
- package/lib/chat-backend.d.ts +55 -55
- package/lib/chat-source-base.d.ts +44 -44
- package/lib/chat-source.d.ts +65 -65
- package/lib/comments/attachment-button/attachment-button.component.d.ts +17 -17
- package/lib/comments/attachment-scraper.directive.d.ts +21 -21
- package/lib/comments/banta-comments/banta-comments.component.d.ts +196 -196
- package/lib/comments/comment/comment.component.d.ts +72 -72
- package/lib/comments/comment-field/comment-field.component.d.ts +89 -89
- package/lib/comments/comment-sort/comment-sort.component.d.ts +12 -12
- package/lib/comments/comment-view/comment-view.component.d.ts +121 -121
- package/lib/comments/comments.module.d.ts +30 -30
- package/lib/comments/index.d.ts +10 -10
- package/lib/comments/live-comment.component.d.ts +23 -23
- package/lib/comments/reply-send-options.directive.d.ts +5 -5
- package/lib/common/attachment/attachment.component.d.ts +33 -33
- package/lib/common/attachments/attachments.component.d.ts +26 -26
- package/lib/common/common.module.d.ts +19 -19
- package/lib/common/index.d.ts +10 -10
- package/lib/common/lazy-connection.d.ts +6 -6
- package/lib/common/lightbox/lightbox.component.d.ts +14 -14
- package/lib/common/markdown-to-html.pipe.d.ts +15 -15
- package/lib/common/mention-linker.pipe.d.ts +13 -13
- package/lib/common/timer-pool.service.d.ts +15 -15
- package/lib/common/timestamp.component.d.ts +19 -19
- package/lib/common/trust-resource-url.pipe.d.ts +10 -10
- package/lib/emoji/emoji-selector-button.component.d.ts +30 -30
- package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +26 -26
- package/lib/emoji/emoji.module.d.ts +16 -16
- package/lib/emoji/emojis.d.ts +6507 -6507
- package/lib/emoji/index.d.ts +4 -4
- package/lib/giphy-attachments.d.ts +5 -5
- package/lib/index.d.ts +19 -19
- package/lib/live-message.component.d.ts +22 -22
- package/lib/message-menu-item.d.ts +6 -6
- package/lib/sdk-options.d.ts +5 -5
- package/lib/static-chat-source.d.ts +42 -42
- package/lib/tweet-attachments.d.ts +5 -5
- package/lib/url-attachments.d.ts +14 -14
- package/lib/youtube-attachments.d.ts +5 -5
- package/package.json +14 -20
- package/public-api.d.ts +1 -1
- package/esm2020/lib/banta/banta.component.mjs +0 -204
- package/esm2020/lib/banta-sdk.module.mjs +0 -143
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +0 -187
- package/esm2020/lib/chat/chat-message/chat-message.component.mjs +0 -62
- package/esm2020/lib/chat/chat-view/chat-view.component.mjs +0 -170
- package/esm2020/lib/chat/live-chat-message.component.mjs +0 -80
- package/esm2020/lib/chat-backend.mjs +0 -163
- package/esm2020/lib/chat-source.mjs +0 -233
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +0 -76
- package/esm2020/lib/comments/attachment-scraper.directive.mjs +0 -107
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +0 -740
- package/esm2020/lib/comments/comment/comment.component.mjs +0 -175
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +0 -401
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +0 -37
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +0 -470
- package/esm2020/lib/comments/comments.module.mjs +0 -111
- package/esm2020/lib/comments/live-comment.component.mjs +0 -80
- package/esm2020/lib/common/attachment/attachment.component.mjs +0 -112
- package/esm2020/lib/common/lightbox/lightbox.component.mjs +0 -31
- package/esm2020/lib/common/markdown-to-html.pipe.mjs +0 -89
- package/esm2020/lib/common/mention-linker.pipe.mjs +0 -35
- package/esm2020/lib/common/timer-pool.service.mjs +0 -83
- package/esm2020/lib/common/timestamp.component.mjs +0 -123
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +0 -116
- package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +0 -98
- package/esm2020/lib/giphy-attachments.mjs +0 -16
- package/esm2020/lib/static-chat-source.mjs +0 -71
- package/esm2020/lib/tweet-attachments.mjs +0 -13
- package/esm2020/lib/url-attachments.mjs +0 -42
- package/esm2020/lib/youtube-attachments.mjs +0 -29
- package/fesm2015/banta-sdk.mjs +0 -11181
- package/fesm2015/banta-sdk.mjs.map +0 -1
- package/fesm2020/banta-sdk.mjs.map +0 -1
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { ChatMessageComponent } from './chat-message/chat-message.component';
|
|
3
|
-
import { ChatViewComponent } from './chat-view/chat-view.component';
|
|
4
|
-
import { BantaChatComponent } from './banta-chat/banta-chat.component';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import { EmojiModule } from '../emoji';
|
|
8
|
-
import { LiveChatMessageComponent } from './live-chat-message.component';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
const COMPONENTS = [
|
|
13
|
-
ChatMessageComponent,
|
|
14
|
-
LiveChatMessageComponent,
|
|
15
|
-
ChatViewComponent,
|
|
16
|
-
BantaChatComponent
|
|
17
|
-
];
|
|
18
|
-
export class ChatModule {
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
-
type: NgModule,
|
|
39
|
-
args: [{
|
|
40
|
-
declarations: COMPONENTS,
|
|
41
|
-
imports: [
|
|
42
|
-
CommonModule,
|
|
43
|
-
FormsModule,
|
|
44
|
-
MatIconModule,
|
|
45
|
-
MatButtonModule,
|
|
46
|
-
EmojiModule
|
|
47
|
-
],
|
|
48
|
-
exports: COMPONENTS
|
|
49
|
-
}]
|
|
50
|
-
}] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { ChatMessageComponent } from './chat-message/chat-message.component';
|
|
3
|
+
import { ChatViewComponent } from './chat-view/chat-view.component';
|
|
4
|
+
import { BantaChatComponent } from './banta-chat/banta-chat.component';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import { EmojiModule } from '../emoji';
|
|
8
|
+
import { LiveChatMessageComponent } from './live-chat-message.component';
|
|
9
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
const COMPONENTS = [
|
|
13
|
+
ChatMessageComponent,
|
|
14
|
+
LiveChatMessageComponent,
|
|
15
|
+
ChatViewComponent,
|
|
16
|
+
BantaChatComponent
|
|
17
|
+
];
|
|
18
|
+
export class ChatModule {
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
20
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: ChatModule, declarations: [ChatMessageComponent,
|
|
21
|
+
LiveChatMessageComponent,
|
|
22
|
+
ChatViewComponent,
|
|
23
|
+
BantaChatComponent], imports: [CommonModule,
|
|
24
|
+
FormsModule,
|
|
25
|
+
MatIconModule,
|
|
26
|
+
MatButtonModule,
|
|
27
|
+
EmojiModule], exports: [ChatMessageComponent,
|
|
28
|
+
LiveChatMessageComponent,
|
|
29
|
+
ChatViewComponent,
|
|
30
|
+
BantaChatComponent] }); }
|
|
31
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatModule, imports: [CommonModule,
|
|
32
|
+
FormsModule,
|
|
33
|
+
MatIconModule,
|
|
34
|
+
MatButtonModule,
|
|
35
|
+
EmojiModule] }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatModule, decorators: [{
|
|
38
|
+
type: NgModule,
|
|
39
|
+
args: [{
|
|
40
|
+
declarations: COMPONENTS,
|
|
41
|
+
imports: [
|
|
42
|
+
CommonModule,
|
|
43
|
+
FormsModule,
|
|
44
|
+
MatIconModule,
|
|
45
|
+
MatButtonModule,
|
|
46
|
+
EmojiModule
|
|
47
|
+
],
|
|
48
|
+
exports: COMPONENTS
|
|
49
|
+
}]
|
|
50
|
+
}] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0L2NoYXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRXZELE1BQU0sVUFBVSxHQUFHO0lBQ2Ysb0JBQW9CO0lBQ3BCLHdCQUF3QjtJQUN4QixpQkFBaUI7SUFDakIsa0JBQWtCO0NBQ3JCLENBQUM7QUFhRixNQUFNLE9BQU8sVUFBVTs4R0FBVixVQUFVOytHQUFWLFVBQVUsaUJBakJuQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLGlCQUFpQjtZQUNqQixrQkFBa0IsYUFNZCxZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixlQUFlO1lBQ2YsV0FBVyxhQWJmLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsaUJBQWlCO1lBQ2pCLGtCQUFrQjsrR0FjVCxVQUFVLFlBUmYsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1lBQ2IsZUFBZTtZQUNmLFdBQVc7OzJGQUlOLFVBQVU7a0JBWHRCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixlQUFlO3dCQUNmLFdBQVc7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFLFVBQVU7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2hhdC12aWV3L2NoYXQtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYW50YUNoYXRDb21wb25lbnQgfSBmcm9tICcuL2JhbnRhLWNoYXQvYmFudGEtY2hhdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRW1vamlNb2R1bGUgfSBmcm9tICcuLi9lbW9qaSc7XHJcbmltcG9ydCB7IExpdmVDaGF0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vbGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICAgIENoYXRNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgTGl2ZUNoYXRNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgQ2hhdFZpZXdDb21wb25lbnQsXHJcbiAgICBCYW50YUNoYXRDb21wb25lbnRcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IENPTVBPTkVOVFMsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEVtb2ppTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogQ09NUE9ORU5UU1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdE1vZHVsZSB7XHJcbn0iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './chat-message/chat-message.component';
|
|
2
|
-
export * from './live-chat-message.component';
|
|
3
|
-
export * from './chat-view/chat-view.component';
|
|
4
|
-
export * from './banta-chat/banta-chat.component';
|
|
5
|
-
export * from './chat.module';
|
|
1
|
+
export * from './chat-message/chat-message.component';
|
|
2
|
+
export * from './live-chat-message.component';
|
|
3
|
+
export * from './chat-view/chat-view.component';
|
|
4
|
+
export * from './banta-chat/banta-chat.component';
|
|
5
|
+
export * from './chat.module';
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saXZlLWNoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoYXQtdmlldy9jaGF0LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYW50YS1jaGF0L2JhbnRhLWNoYXQuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY2hhdC5tb2R1bGUnOyJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../chat-backend-base";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "./chat-message/chat-message.component";
|
|
7
|
+
export class LiveChatMessageComponent {
|
|
8
|
+
constructor(backend) {
|
|
9
|
+
this.backend = backend;
|
|
10
|
+
this._upvoted = new Subject();
|
|
11
|
+
this._reported = new Subject();
|
|
12
|
+
this._selected = new Subject();
|
|
13
|
+
}
|
|
14
|
+
get upvoted() {
|
|
15
|
+
return this._upvoted;
|
|
16
|
+
}
|
|
17
|
+
get reported() {
|
|
18
|
+
return this._reported;
|
|
19
|
+
}
|
|
20
|
+
get selected() {
|
|
21
|
+
return this._selected;
|
|
22
|
+
}
|
|
23
|
+
get message() {
|
|
24
|
+
return this._message;
|
|
25
|
+
}
|
|
26
|
+
set message(value) {
|
|
27
|
+
let originalId = null;
|
|
28
|
+
if (this._message)
|
|
29
|
+
originalId = this._message.id;
|
|
30
|
+
this._message = value;
|
|
31
|
+
if (value && originalId === value.id) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (this.unsubscribe)
|
|
35
|
+
this.unsubscribe();
|
|
36
|
+
if (value) {
|
|
37
|
+
this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
report() {
|
|
41
|
+
this._reported.next();
|
|
42
|
+
}
|
|
43
|
+
upvote() {
|
|
44
|
+
this._upvoted.next();
|
|
45
|
+
}
|
|
46
|
+
select() {
|
|
47
|
+
this._selected.next();
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: LiveChatMessageComponent, deps: [{ token: i1.ChatBackendBase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: LiveChatMessageComponent, selector: "banta-live-chat-message", inputs: { message: "message" }, outputs: { upvoted: "upvoted", reported: "reported", selected: "selected" }, ngImport: i0, template: `
|
|
51
|
+
<banta-chat-message
|
|
52
|
+
*ngIf="message"
|
|
53
|
+
[message]="message"
|
|
54
|
+
(upvoted)="upvote()"
|
|
55
|
+
(reported)="report()"
|
|
56
|
+
(selected)="select()"
|
|
57
|
+
></banta-chat-message>
|
|
58
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ChatMessageComponent, selector: "banta-chat-message", inputs: ["message"], outputs: ["userSelected", "selected", "reported", "upvoted"] }] }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: LiveChatMessageComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'banta-live-chat-message', template: `
|
|
63
|
+
<banta-chat-message
|
|
64
|
+
*ngIf="message"
|
|
65
|
+
[message]="message"
|
|
66
|
+
(upvoted)="upvote()"
|
|
67
|
+
(reported)="report()"
|
|
68
|
+
(selected)="select()"
|
|
69
|
+
></banta-chat-message>
|
|
70
|
+
` }]
|
|
71
|
+
}], ctorParameters: () => [{ type: i1.ChatBackendBase }], propDecorators: { upvoted: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}], reported: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}], selected: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}], message: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC9saXZlLWNoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7O0FBZ0IzQyxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLFlBQ1ksT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFNN0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFMeEMsQ0FBQztJQU9ELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBSUQsSUFBSSxPQUFPLENBQUMsS0FBSztRQUNiLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQ2IsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXRCLElBQUksS0FBSyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOzhHQS9EUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw0S0FYdkI7Ozs7Ozs7O0tBUVQ7OzJGQUdRLHdCQUF3QjtrQkFicEMsU0FBUzsrQkFDSSx5QkFBeUIsWUFDekI7Ozs7Ozs7O0tBUVQ7b0ZBZ0JHLE9BQU87c0JBRFYsTUFBTTtnQkFNSCxRQUFRO3NCQURYLE1BQU07Z0JBTUgsUUFBUTtzQkFEWCxNQUFNO2dCQU1ILE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSB9IGZyb20gJy4uL2NoYXQtYmFja2VuZC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYW50YS1saXZlLWNoYXQtbWVzc2FnZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxiYW50YS1jaGF0LW1lc3NhZ2UgXHJcbiAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZVwiXHJcbiAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAodXB2b3RlZCk9XCJ1cHZvdGUoKVwiXHJcbiAgICAgICAgICAgIChyZXBvcnRlZCk9XCJyZXBvcnQoKVwiXHJcbiAgICAgICAgICAgIChzZWxlY3RlZCk9XCJzZWxlY3QoKVwiXHJcbiAgICAgICAgICAgID48L2JhbnRhLWNoYXQtbWVzc2FnZT5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpdmVDaGF0TWVzc2FnZUNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGJhY2tlbmQgOiBDaGF0QmFja2VuZEJhc2VcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlIDogQ2hhdE1lc3NhZ2U7XHJcbiAgICBwcml2YXRlIF91cHZvdGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX3JlcG9ydGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCB1cHZvdGVkKCkgOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXB2b3RlZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgcmVwb3J0ZWQoKSA6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBvcnRlZDtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCBzZWxlY3RlZCgpIDogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG1lc3NhZ2UoKSA6IENoYXRNZXNzYWdlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlIDogRnVuY3Rpb247XHJcblxyXG4gICAgc2V0IG1lc3NhZ2UodmFsdWUpIHtcclxuICAgICAgICBsZXQgb3JpZ2luYWxJZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuX21lc3NhZ2UpXHJcbiAgICAgICAgICAgIG9yaWdpbmFsSWQgPSB0aGlzLl9tZXNzYWdlLmlkO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlICYmIG9yaWdpbmFsSWQgPT09IHZhbHVlLmlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlKVxyXG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLmJhY2tlbmQud2F0Y2hNZXNzYWdlKHZhbHVlLCBtZXNzYWdlID0+IHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXBvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB1cHZvdGUoKSB7XHJcbiAgICAgICAgdGhpcy5fdXB2b3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0KCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQoKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
export class ChatBackendBase {
|
|
3
|
-
constructor() {
|
|
4
|
-
this._userChanged = new BehaviorSubject(null);
|
|
5
|
-
this._attachmentScrapers = [];
|
|
6
|
-
this._attachmentResolvers = [];
|
|
7
|
-
}
|
|
8
|
-
get userChanged() {
|
|
9
|
-
return this._userChanged;
|
|
10
|
-
}
|
|
11
|
-
set user(user) {
|
|
12
|
-
this._user = user;
|
|
13
|
-
this._userChanged.next(user);
|
|
14
|
-
}
|
|
15
|
-
get user() {
|
|
16
|
-
return this._user;
|
|
17
|
-
}
|
|
18
|
-
registerAttachmentScraper(scraper) {
|
|
19
|
-
this._attachmentScrapers.push(scraper);
|
|
20
|
-
}
|
|
21
|
-
registerAttachmentResolver(resolver) {
|
|
22
|
-
this._attachmentResolvers.push(resolver);
|
|
23
|
-
}
|
|
24
|
-
get attachmentScrapers() {
|
|
25
|
-
return this._attachmentScrapers.slice();
|
|
26
|
-
}
|
|
27
|
-
get attachmentResolvers() {
|
|
28
|
-
return this._attachmentResolvers.slice();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
export class ChatBackendBase {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._userChanged = new BehaviorSubject(null);
|
|
5
|
+
this._attachmentScrapers = [];
|
|
6
|
+
this._attachmentResolvers = [];
|
|
7
|
+
}
|
|
8
|
+
get userChanged() {
|
|
9
|
+
return this._userChanged;
|
|
10
|
+
}
|
|
11
|
+
set user(user) {
|
|
12
|
+
this._user = user;
|
|
13
|
+
this._userChanged.next(user);
|
|
14
|
+
}
|
|
15
|
+
get user() {
|
|
16
|
+
return this._user;
|
|
17
|
+
}
|
|
18
|
+
registerAttachmentScraper(scraper) {
|
|
19
|
+
this._attachmentScrapers.push(scraper);
|
|
20
|
+
}
|
|
21
|
+
registerAttachmentResolver(resolver) {
|
|
22
|
+
this._attachmentResolvers.push(resolver);
|
|
23
|
+
}
|
|
24
|
+
get attachmentScrapers() {
|
|
25
|
+
return this._attachmentScrapers.slice();
|
|
26
|
+
}
|
|
27
|
+
get attachmentResolvers() {
|
|
28
|
+
return this._attachmentResolvers.slice();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
31
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0LWJhY2tlbmQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBZW5ELE1BQU0sT0FBZ0IsZUFBZTtJQUNqQztRQWNRLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQU8sSUFBSSxDQUFDLENBQUM7UUFnQi9DLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFDOUMseUJBQW9CLEdBQXlCLEVBQUUsQ0FBQztJQTlCeEQsQ0FBQztJQWdCRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBS0QseUJBQXlCLENBQUMsT0FBMEI7UUFDaEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsUUFBNEI7UUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgVm90ZSwgQ29tbWVudHNPcmRlciwgTm90aWZpY2F0aW9uLCBVc2VyLCBVcmxDYXJkLCBGaWx0ZXJNb2RlIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VCYXNlIH0gZnJvbSAnLi9jaGF0LXNvdXJjZS1iYXNlJztcclxuaW1wb3J0IHsgQXR0YWNobWVudFJlc29sdmVyLCBBdHRhY2htZW50U2NyYXBlciB9IGZyb20gJy4vYXR0YWNobWVudC1zY3JhcGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNvdXJjZU9wdGlvbnMge1xyXG4gICAgc29ydE9yZGVyPzogQ29tbWVudHNPcmRlcjtcclxuICAgIGZpbHRlck1vZGU/OiBGaWx0ZXJNb2RlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG93IG1hbnkgbWVzc2FnZXMgc2hvdWxkIGJlIGxvYWRlZCBpbml0aWFsbHk/XHJcbiAgICAgKi9cclxuICAgIGluaXRpYWxNZXNzYWdlQ291bnQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDaGF0QmFja2VuZEJhc2Uge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGFic3RyYWN0IGdldFNvdXJjZUZvclRvcGljKHRvcGljSWQgOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucykgOiBQcm9taXNlPENoYXRTb3VyY2VCYXNlPjtcclxuICAgIGFic3RyYWN0IGdldFNvdXJjZUZvclRocmVhZCh0b3BpY0lkIDogc3RyaW5nLCBtZXNzYWdlSWQgOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucykgOiBQcm9taXNlPENoYXRTb3VyY2VCYXNlPjtcclxuICAgIGFic3RyYWN0IGdldFNvdXJjZUNvdW50Rm9yVG9waWModG9waWNJZDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+XHJcbiAgICBhYnN0cmFjdCByZWZyZXNoTWVzc2FnZShtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpOiBQcm9taXNlPENoYXRNZXNzYWdlPjtcclxuICAgIGFic3RyYWN0IGdldE1lc3NhZ2UodG9waWNJZCA6IHN0cmluZywgbWVzc2FnZUlkIDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT47XHJcbiAgICBhYnN0cmFjdCBnZXRTdWJNZXNzYWdlKHRvcGljSWQgOiBzdHJpbmcsIHBhcmVudE1lc3NhZ2VJZCA6IHN0cmluZywgbWVzc2FnZUlkIDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT47XHJcbiAgICBhYnN0cmFjdCB3YXRjaE1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlLCBoYW5kbGVyIDogKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCkgOiAoKSA9PiB2b2lkO1xyXG4gICAgYWJzdHJhY3QgZ2V0Q2FyZEZvclVybCh1cmw6IHN0cmluZyk6IFByb21pc2U8VXJsQ2FyZD47XHJcbiAgICByZWFkb25seSBub3RpZmljYXRpb25zQ2hhbmdlZCA6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uW10+O1xyXG4gICAgcmVhZG9ubHkgbmV3Tm90aWZpY2F0aW9uIDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+O1xyXG4gICAgXHJcbiAgICBwcml2YXRlIF91c2VyQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlcj4obnVsbCk7XHJcbiAgICBwcml2YXRlIF91c2VyIDogVXNlcjtcclxuICAgIFxyXG4gICAgZ2V0IHVzZXJDaGFuZ2VkKCkgOiBPYnNlcnZhYmxlPFVzZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlckNoYW5nZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHNldCB1c2VyKHVzZXIgOiBVc2VyKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IHVzZXI7XHJcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZWQubmV4dCh1c2VyKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdXNlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcHJpdmF0ZSBfYXR0YWNobWVudFNjcmFwZXJzOiBBdHRhY2htZW50U2NyYXBlcltdID0gW107XHJcbiAgICBwcml2YXRlIF9hdHRhY2htZW50UmVzb2x2ZXJzOiBBdHRhY2htZW50UmVzb2x2ZXJbXSA9IFtdO1xyXG5cclxuICAgIHJlZ2lzdGVyQXR0YWNobWVudFNjcmFwZXIoc2NyYXBlcjogQXR0YWNobWVudFNjcmFwZXIpIHtcclxuICAgICAgICB0aGlzLl9hdHRhY2htZW50U2NyYXBlcnMucHVzaChzY3JhcGVyKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlckF0dGFjaG1lbnRSZXNvbHZlcihyZXNvbHZlcjogQXR0YWNobWVudFJlc29sdmVyKSB7XHJcbiAgICAgICAgdGhpcy5fYXR0YWNobWVudFJlc29sdmVycy5wdXNoKHJlc29sdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYXR0YWNobWVudFNjcmFwZXJzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hdHRhY2htZW50U2NyYXBlcnMuc2xpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYXR0YWNobWVudFJlc29sdmVycygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXR0YWNobWVudFJlc29sdmVycy5zbGljZSgpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { CommentsOrder, DurableSocket, FilterMode, buildQuery } from "@banta/common";
|
|
3
|
+
import { ChatBackendBase } from "./chat-backend-base";
|
|
4
|
+
import { ChatSource } from "./chat-source";
|
|
5
|
+
import { BANTA_SDK_OPTIONS } from "./sdk-options";
|
|
6
|
+
import { PLATFORM_ID } from "@angular/core";
|
|
7
|
+
import { isPlatformServer } from "@angular/common";
|
|
8
|
+
import { StaticChatSource } from "./static-chat-source";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ChatBackend extends ChatBackendBase {
|
|
11
|
+
constructor(options, platformId) {
|
|
12
|
+
super();
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.platformId = platformId;
|
|
15
|
+
}
|
|
16
|
+
get serviceUrl() {
|
|
17
|
+
return `${this.options?.serviceUrl ?? 'http://localhost:3422'}`;
|
|
18
|
+
}
|
|
19
|
+
async connectToService() {
|
|
20
|
+
let socket = new DurableSocket(`${this.serviceUrl.replace(/^http/, 'ws')}/socket`);
|
|
21
|
+
await new Promise((resolve, reject) => {
|
|
22
|
+
socket.onopen = () => {
|
|
23
|
+
resolve();
|
|
24
|
+
};
|
|
25
|
+
socket.onclose = e => {
|
|
26
|
+
if (e.code === 503) {
|
|
27
|
+
console.error(`Failed to connect to chat service!`);
|
|
28
|
+
reject(e);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
socket.onerror = undefined;
|
|
33
|
+
return socket;
|
|
34
|
+
}
|
|
35
|
+
isServer() {
|
|
36
|
+
if (typeof localStorage !== 'undefined' && localStorage['banta:debug:useStaticSource'] === '1')
|
|
37
|
+
return true;
|
|
38
|
+
return isPlatformServer(this.platformId);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if we are currently running inside a Googlebot user agent or via the Google inspection tool in Search Console.
|
|
42
|
+
* We'll use this to avoid WebSockets so that comments can be indexable.
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
isGooglebot() {
|
|
46
|
+
return typeof navigator !== 'undefined' && (navigator.userAgent.includes('Googlebot')
|
|
47
|
+
|| navigator.userAgent.includes('Google-InspectionTool'));
|
|
48
|
+
}
|
|
49
|
+
async getSourceForTopic(topicId, options) {
|
|
50
|
+
// In some cases we need to do a single REST request to fetch the messages
|
|
51
|
+
// and not use Banta's socket RPC since the open ended lifetime of a WebSocket connection
|
|
52
|
+
// does not match the use case.
|
|
53
|
+
// - When running in SSR
|
|
54
|
+
// - When running in Googlebot (Googlebot also doesn't support WebSockets anyway)
|
|
55
|
+
if (this.isServer() || this.isGooglebot()) {
|
|
56
|
+
return new StaticChatSource(this, topicId, undefined, options);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return await new ChatSource(this, topicId, undefined, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })
|
|
60
|
+
.bind(await this.connectToService());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async getSourceForThread(topicId, messageId, options) {
|
|
64
|
+
// When running on the server platform, we're just going to do a single REST request to fetch the messages
|
|
65
|
+
// and not use Banta's socket RPC.
|
|
66
|
+
if (this.isServer()) {
|
|
67
|
+
return new StaticChatSource(this, topicId, messageId, options);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return await new ChatSource(this, topicId, messageId, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })
|
|
71
|
+
.bind(await this.connectToService());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the count of the given topic
|
|
76
|
+
* @param topicId
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
async getSourceCountForTopic(topicId) {
|
|
80
|
+
try {
|
|
81
|
+
let topic = await this.getTopic(topicId);
|
|
82
|
+
return topic.messageCount || 0;
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.error(`[Banta/${topicId}] Failed to get message count for topic:`);
|
|
86
|
+
console.error(e);
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get the count of the given topic
|
|
92
|
+
* @param topicId
|
|
93
|
+
* @returns
|
|
94
|
+
*/
|
|
95
|
+
async getTopic(topicId) {
|
|
96
|
+
let response = await fetch(`${this.serviceUrl}/topics/${topicId}`);
|
|
97
|
+
if (response.status >= 400)
|
|
98
|
+
throw new Error(`Failed to fetch topic: ${response.status}`);
|
|
99
|
+
return await response.json();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get a set of messages from the given topic.
|
|
103
|
+
* @param topicId
|
|
104
|
+
* @returns
|
|
105
|
+
*/
|
|
106
|
+
async getMessages(topicId, sort, filter, offset, limit) {
|
|
107
|
+
let response = await fetch(`${this.serviceUrl}/topics/${topicId}/messages?${buildQuery({ sort, filter, offset, limit })}`);
|
|
108
|
+
if (response.status >= 400)
|
|
109
|
+
throw new Error(`Failed to fetch messages for topic: ${response.status}`);
|
|
110
|
+
return await response.json();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get a set of messages from the given topic.
|
|
114
|
+
* @param topicId
|
|
115
|
+
* @returns
|
|
116
|
+
*/
|
|
117
|
+
async getReplies(parentMessageId, sort, filter, offset, limit) {
|
|
118
|
+
let response = await fetch(`${this.serviceUrl}/messages/${parentMessageId}/replies?${buildQuery({ sort, filter, offset, limit })}`);
|
|
119
|
+
if (response.status >= 400)
|
|
120
|
+
throw new Error(`Failed to fetch replies: ${response.status}`);
|
|
121
|
+
return await response.json();
|
|
122
|
+
}
|
|
123
|
+
refreshMessage(message) {
|
|
124
|
+
throw new Error("Method not implemented.");
|
|
125
|
+
}
|
|
126
|
+
getMessage(topicId, messageId) {
|
|
127
|
+
throw new Error("Method not implemented.");
|
|
128
|
+
}
|
|
129
|
+
getSubMessage(topicId, parentMessageId, messageId) {
|
|
130
|
+
throw new Error("Method not implemented.");
|
|
131
|
+
}
|
|
132
|
+
watchMessage(message, handler) {
|
|
133
|
+
throw new Error("Method not implemented.");
|
|
134
|
+
}
|
|
135
|
+
async getCardForUrl(url) {
|
|
136
|
+
let response = await fetch(`${this.serviceUrl}/urls`, {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: {
|
|
139
|
+
'Content-Type': 'application/json'
|
|
140
|
+
},
|
|
141
|
+
body: JSON.stringify({
|
|
142
|
+
url
|
|
143
|
+
})
|
|
144
|
+
});
|
|
145
|
+
if (response.status == 404)
|
|
146
|
+
return null;
|
|
147
|
+
if (response.status >= 400)
|
|
148
|
+
throw new Error(`Failed to retrieve URL card: ${response.status}. Body: '${await response.text()}'`);
|
|
149
|
+
return await response.json();
|
|
150
|
+
}
|
|
151
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatBackend, deps: [{ token: BANTA_SDK_OPTIONS }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatBackend }); }
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChatBackend, decorators: [{
|
|
155
|
+
type: Injectable
|
|
156
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
157
|
+
type: Inject,
|
|
158
|
+
args: [BANTA_SDK_OPTIONS]
|
|
159
|
+
}] }, { type: undefined, decorators: [{
|
|
160
|
+
type: Inject,
|
|
161
|
+
args: [PLATFORM_ID]
|
|
162
|
+
}] }] });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBZSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBNEMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVJLE9BQU8sRUFBRSxlQUFlLEVBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzVDLFlBQ3VDLE9BQW1CLEVBQ3pCLFVBQVU7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFIMkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFBO0lBRzNDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkYsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUE7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDcEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNkLENBQUM7WUFDTCxDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBRTNCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxRQUFRO1FBQ1osSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLElBQUksWUFBWSxDQUFDLDZCQUE2QixDQUFDLEtBQUssR0FBRztZQUMxRixPQUFPLElBQUksQ0FBQztRQUVoQixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFdBQVc7UUFDZixPQUFPLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxDQUN2QyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7ZUFDdEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FDM0QsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLE9BQTJCO1FBQ2hFLDJFQUEyRTtRQUMzRSwwRkFBMEY7UUFDMUYsK0JBQStCO1FBQy9CLHdCQUF3QjtRQUN4QixpRkFBaUY7UUFFakYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztpQkFDN0gsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFlLEVBQUUsU0FBaUIsRUFBRSxPQUEyQjtRQUNwRiwyR0FBMkc7UUFDM0csa0NBQWtDO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztpQkFDN0gsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBZTtRQUN4QyxJQUFJLENBQUM7WUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxPQUFPLDBDQUEwQyxDQUFDLENBQUM7WUFDM0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQWU7UUFDMUIsSUFBSSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDbEUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFaEUsT0FBZSxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2IsT0FBZSxFQUNmLElBQW9CLEVBQ3BCLE1BQW1CLEVBQ25CLE1BQWUsRUFDZixLQUFjO1FBRWQsSUFBSSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQ3RCLEdBQUcsSUFBSSxDQUFDLFVBQVUsV0FBVyxPQUFPLGFBQWMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUUsRUFBRSxDQUNuRyxDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFN0UsT0FBdUIsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUNaLGVBQXVCLEVBQ3ZCLElBQW9CLEVBQ3BCLE1BQW1CLEVBQ25CLE1BQWUsRUFDZixLQUFjO1FBRWQsSUFBSSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQ3RCLEdBQUcsSUFBSSxDQUFDLFVBQVUsYUFBYSxlQUFlLFlBQWEsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUUsRUFBRSxDQUM1RyxDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFbEUsT0FBdUIsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFvQjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlLEVBQUUsU0FBaUI7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBZSxFQUFFLGVBQXVCLEVBQUUsU0FBaUI7UUFDckUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBb0IsRUFBRSxPQUF1QztRQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUlELEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBVztRQUMzQixJQUFJLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLE9BQU8sRUFBRTtZQUNsRCxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0JBQWtCO2FBQ3JDO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2pCLEdBQUc7YUFDTixDQUFDO1NBQ0wsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsUUFBUSxDQUFDLE1BQU0sWUFBWSxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFekcsT0FBTyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzhHQXpMUSxXQUFXLGtCQUVSLGlCQUFpQixhQUNqQixXQUFXO2tIQUhkLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQUdGLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIER1cmFibGVTb2NrZXQsIEZpbHRlck1vZGUsIE5vdGlmaWNhdGlvbiwgVG9waWMsIFVybENhcmQsIFVzZXIsIFZvdGUsIGJ1aWxkUXVlcnkgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlLCBDaGF0U291cmNlT3B0aW9ucyB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgQkFOVEFfU0RLX09QVElPTlMsIFNka09wdGlvbnMgfSBmcm9tIFwiLi9zZGstb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFN0YXRpY0NoYXRTb3VyY2UgfSBmcm9tIFwiLi9zdGF0aWMtY2hhdC1zb3VyY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXRCYWNrZW5kIGV4dGVuZHMgQ2hhdEJhY2tlbmRCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoQkFOVEFfU0RLX09QVElPTlMpIHByaXZhdGUgb3B0aW9uczogU2RrT3B0aW9ucyxcclxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWRcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlcnZpY2VVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucz8uc2VydmljZVVybCA/PyAnaHR0cDovL2xvY2FsaG9zdDozNDIyJ31gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvU2VydmljZSgpIHtcclxuICAgICAgICBsZXQgc29ja2V0ID0gbmV3IER1cmFibGVTb2NrZXQoYCR7dGhpcy5zZXJ2aWNlVXJsLnJlcGxhY2UoL15odHRwLywgJ3dzJyl9L3NvY2tldGApO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc29ja2V0Lm9uY2xvc2UgPSBlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09IDUwMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0IHRvIGNoYXQgc2VydmljZSFgKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0Lm9uZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHJldHVybiBzb2NrZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1NlcnZlcigpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9jYWxTdG9yYWdlWydiYW50YTpkZWJ1Zzp1c2VTdGF0aWNTb3VyY2UnXSA9PT0gJzEnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGlmIHdlIGFyZSBjdXJyZW50bHkgcnVubmluZyBpbnNpZGUgYSBHb29nbGVib3QgdXNlciBhZ2VudCBvciB2aWEgdGhlIEdvb2dsZSBpbnNwZWN0aW9uIHRvb2wgaW4gU2VhcmNoIENvbnNvbGUuXHJcbiAgICAgKiBXZSdsbCB1c2UgdGhpcyB0byBhdm9pZCBXZWJTb2NrZXRzIHNvIHRoYXQgY29tbWVudHMgY2FuIGJlIGluZGV4YWJsZS5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzR29vZ2xlYm90KCkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAoXHJcbiAgICAgICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0dvb2dsZWJvdCcpXHJcbiAgICAgICAgICAgIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0dvb2dsZS1JbnNwZWN0aW9uVG9vbCcpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG5lZWQgdG8gZG8gYSBzaW5nbGUgUkVTVCByZXF1ZXN0IHRvIGZldGNoIHRoZSBtZXNzYWdlcyBcclxuICAgICAgICAvLyBhbmQgbm90IHVzZSBCYW50YSdzIHNvY2tldCBSUEMgc2luY2UgdGhlIG9wZW4gZW5kZWQgbGlmZXRpbWUgb2YgYSBXZWJTb2NrZXQgY29ubmVjdGlvbiBcclxuICAgICAgICAvLyBkb2VzIG5vdCBtYXRjaCB0aGUgdXNlIGNhc2UuXHJcbiAgICAgICAgLy8gLSBXaGVuIHJ1bm5pbmcgaW4gU1NSXHJcbiAgICAgICAgLy8gLSBXaGVuIHJ1bm5pbmcgaW4gR29vZ2xlYm90IChHb29nbGVib3QgYWxzbyBkb2Vzbid0IHN1cHBvcnQgV2ViU29ja2V0cyBhbnl3YXkpXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzU2VydmVyKCkgfHwgdGhpcy5pc0dvb2dsZWJvdCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCB1bmRlZmluZWQsIHsgc29ydE9yZGVyOiBDb21tZW50c09yZGVyLk5FV0VTVCwgZmlsdGVyTW9kZTogRmlsdGVyTW9kZS5BTEwsIC4uLm9wdGlvbnMgfSlcclxuICAgICAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlRm9yVGhyZWFkKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICAvLyBXaGVuIHJ1bm5pbmcgb24gdGhlIHNlcnZlciBwbGF0Zm9ybSwgd2UncmUganVzdCBnb2luZyB0byBkbyBhIHNpbmdsZSBSRVNUIHJlcXVlc3QgdG8gZmV0Y2ggdGhlIG1lc3NhZ2VzIFxyXG4gICAgICAgIC8vIGFuZCBub3QgdXNlIEJhbnRhJ3Mgc29ja2V0IFJQQy5cclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5pc1NlcnZlcigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCBtZXNzYWdlSWQsIHsgc29ydE9yZGVyOiBDb21tZW50c09yZGVyLk5FV0VTVCwgZmlsdGVyTW9kZTogRmlsdGVyTW9kZS5BTEwsIC4uLm9wdGlvbnMgfSlcclxuICAgICAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSBnaXZlbiB0b3BpY1xyXG4gICAgICogQHBhcmFtIHRvcGljSWQgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0U291cmNlQ291bnRGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0b3BpYyA9IGF3YWl0IHRoaXMuZ2V0VG9waWModG9waWNJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0b3BpYy5tZXNzYWdlQ291bnQgfHwgMDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCYW50YS8ke3RvcGljSWR9XSBGYWlsZWQgdG8gZ2V0IG1lc3NhZ2UgY291bnQgZm9yIHRvcGljOmApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCB0aGUgY291bnQgb2YgdGhlIGdpdmVuIHRvcGljXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRUb3BpYyh0b3BpY0lkOiBzdHJpbmcpOiBQcm9taXNlPFRvcGljPiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5zZXJ2aWNlVXJsfS90b3BpY3MvJHt0b3BpY0lkfWApXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHRvcGljOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxyXG5cclxuICAgICAgICByZXR1cm4gPFRvcGljPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYSBzZXQgb2YgbWVzc2FnZXMgZnJvbSB0aGUgZ2l2ZW4gdG9waWMuXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRNZXNzYWdlcyhcclxuICAgICAgICB0b3BpY0lkOiBzdHJpbmcsIFxyXG4gICAgICAgIHNvcnQ/OiBDb21tZW50c09yZGVyLCBcclxuICAgICAgICBmaWx0ZXI/OiBGaWx0ZXJNb2RlLCBcclxuICAgICAgICBvZmZzZXQ/OiBudW1iZXIsIFxyXG4gICAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICApOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcclxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJsfS90b3BpY3MvJHt0b3BpY0lkfS9tZXNzYWdlcz8keyBidWlsZFF1ZXJ5KHsgc29ydCwgZmlsdGVyLCBvZmZzZXQsIGxpbWl0IH0pIH1gXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIG1lc3NhZ2VzIGZvciB0b3BpYzogJHtyZXNwb25zZS5zdGF0dXN9YClcclxuXHJcbiAgICAgICAgcmV0dXJuIDxDaGF0TWVzc2FnZVtdPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYSBzZXQgb2YgbWVzc2FnZXMgZnJvbSB0aGUgZ2l2ZW4gdG9waWMuXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRSZXBsaWVzKFxyXG4gICAgICAgIHBhcmVudE1lc3NhZ2VJZDogc3RyaW5nLFxyXG4gICAgICAgIHNvcnQ/OiBDb21tZW50c09yZGVyLCBcclxuICAgICAgICBmaWx0ZXI/OiBGaWx0ZXJNb2RlLCBcclxuICAgICAgICBvZmZzZXQ/OiBudW1iZXIsIFxyXG4gICAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICApOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcclxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJsfS9tZXNzYWdlcy8ke3BhcmVudE1lc3NhZ2VJZH0vcmVwbGllcz8keyBidWlsZFF1ZXJ5KHsgc29ydCwgZmlsdGVyLCBvZmZzZXQsIGxpbWl0IH0pIH1gXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHJlcGxpZXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXHJcblxyXG4gICAgICAgIHJldHVybiA8Q2hhdE1lc3NhZ2VbXT4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBnZXRTdWJNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgd2F0Y2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBoYW5kbGVyOiAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIG5vdGlmaWNhdGlvbnNDaGFuZ2VkOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbltdPjtcclxuICAgIG5ld05vdGlmaWNhdGlvbjogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+O1xyXG4gICAgXHJcbiAgICBhc3luYyBnZXRDYXJkRm9yVXJsKHVybDogc3RyaW5nKTogUHJvbWlzZTxVcmxDYXJkPiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5zZXJ2aWNlVXJsfS91cmxzYCwge1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICB1cmxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSA0MDQpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBVUkwgY2FyZDogJHtyZXNwb25zZS5zdGF0dXN9LiBCb2R5OiAnJHthd2FpdCByZXNwb25zZS50ZXh0KCl9J2ApO1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NoYXQtc291cmNlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIENoYXRQZXJtaXNzaW9ucywgRmlsdGVyTW9kZSB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U291cmNlQmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b3BpYyBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCBjaGF0L2NvbW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGlkZW50aWZpZXI6IHN0cmluZztcclxuICAgIHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnM7XHJcbiAgICByZWFkeTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJRCBvZiB0aGUgcGFyZW50IG1lc3NhZ2UgdGhhdCB0aGlzIHRocmVhZCBjaGF0IHNvdXJjZSBpcyBmb3IuXHJcbiAgICAgKiBXaGVuIHRoaXMgaXMgbm90IHNldCwgdGhlIGNoYXQgc291cmNlIGlzIGEgdG9wLWxldmVsIChcInRvcGljXCIpIHNvdXJjZS5cclxuICAgICAqIFdoZW4gaXQgaXMgc2V0LCB0aGlzIGNoYXQgc291cmNlIGlzIGEgdGhyZWFkIHNvdXJjZSAoaWUgcmVwbGllcykuXHJcbiAgICAgKi9cclxuICAgIHBhcmVudElkZW50aWZpZXI/OiBzdHJpbmc7XHJcbiAgICBzb3J0T3JkZXI/OiBDb21tZW50c09yZGVyO1xyXG4gICAgZmlsdGVyTW9kZT86IEZpbHRlck1vZGU7XHJcbiAgICBtZXNzYWdlUmVjZWl2ZWQ6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgbWVzc2FnZU9ic2VydmVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VVcGRhdGVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VTZW50OiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdO1xyXG4gICAgc2VuZChtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgY2xvc2UoKTtcclxuICAgIGdldENvdW50KCk6IFByb21pc2U8bnVtYmVyPjtcclxuICAgIGdldEV4aXN0aW5nTWVzc2FnZXMoKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPjtcclxuICAgIGxvYWRBZnRlcihtZXNzYWdlOiBDaGF0TWVzc2FnZSwgY291bnQ6IG51bWJlcik6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT47XHJcbiAgICBnZXQoaWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgbGlrZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgdW5saWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XHJcbiAgICBlZGl0TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcclxuICAgIGRlbGV0ZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIGNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQ/OiBPYnNlcnZhYmxlPCdjb25uZWN0ZWQnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJz47XHJcbiAgICBzdGF0ZT86ICdjb25uZWN0aW5nJyB8ICdjb25uZWN0ZWQnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gdHJ1ZSwgdGhpcyBzb3VyY2UgaXMgcmVhZG9ubHksIHNvIG1lc3NhZ2VzIGNhbm5vdCBiZSBzZW50L2VkaXRlZC9kZWxldGVkLCBub3IgbGlrZWQvdW5saWtlZC5cclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB0cnVlL3VuZGVmaW5lZCwgdGhlIHNvdXJjZSBzdXBwb3J0cyBsb2FkaW5nIG1vcmUgbWVzc2FnZXMuIFdoZW4gZmFsc2UsIGl0IGRvZXMgbm90LlxyXG4gICAgICovXHJcbiAgICBjYW5Mb2FkTW9yZT86IGJvb2xlYW47XHJcblxyXG4gICAgZ2V0IGVycm9yU3RhdGUoKTtcclxufSJdfQ==
|