@deeksha2309/sunbird-collection-editor 8.0.7

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 (204) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
  3. package/esm2022/lib/collection-editor-library.component.mjs +16 -0
  4. package/esm2022/lib/collection-editor-library.module.mjs +137 -0
  5. package/esm2022/lib/components/answer/answer.component.mjs +43 -0
  6. package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
  7. package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
  8. package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
  9. package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
  10. package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
  11. package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
  12. package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
  13. package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
  14. package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
  15. package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
  16. package/esm2022/lib/components/header/header.component.mjs +123 -0
  17. package/esm2022/lib/components/library/library.component.mjs +242 -0
  18. package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
  19. package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
  20. package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
  21. package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
  22. package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
  23. package/esm2022/lib/components/options/options.component.mjs +144 -0
  24. package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
  25. package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
  26. package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
  27. package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
  28. package/esm2022/lib/components/question/question.component.mjs +1360 -0
  29. package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
  30. package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
  31. package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
  32. package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
  33. package/esm2022/lib/components/template/template.component.mjs +42 -0
  34. package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
  35. package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
  36. package/esm2022/lib/interfaces/McqForm.mjs +29 -0
  37. package/esm2022/lib/interfaces/editor.mjs +2 -0
  38. package/esm2022/lib/interfaces/framework.mjs +2 -0
  39. package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
  40. package/esm2022/lib/interfaces/requestParam.mjs +2 -0
  41. package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
  42. package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
  43. package/esm2022/lib/services/config/category.config.json +8 -0
  44. package/esm2022/lib/services/config/config.service.mjs +27 -0
  45. package/esm2022/lib/services/config/editor.config.json +31 -0
  46. package/esm2022/lib/services/config/label.config.json +314 -0
  47. package/esm2022/lib/services/config/player.config.json +96 -0
  48. package/esm2022/lib/services/config/url.config.json +69 -0
  49. package/esm2022/lib/services/data/data.service.mjs +192 -0
  50. package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
  51. package/esm2022/lib/services/editor/editor.service.mjs +682 -0
  52. package/esm2022/lib/services/framework/framework.service.mjs +106 -0
  53. package/esm2022/lib/services/helper/helper.service.mjs +160 -0
  54. package/esm2022/lib/services/player/player.service.mjs +99 -0
  55. package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
  56. package/esm2022/lib/services/question/question.service.mjs +167 -0
  57. package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
  58. package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
  59. package/esm2022/lib/services/tree/tree.service.mjs +284 -0
  60. package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
  61. package/esm2022/public-api.mjs +4 -0
  62. package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
  63. package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
  64. package/index.d.ts +6 -0
  65. package/lib/assets/.gitkeep +0 -0
  66. package/lib/assets/images/MCQ.png +0 -0
  67. package/lib/assets/images/Spin.gif +0 -0
  68. package/lib/assets/images/bulkuploadfile.png +0 -0
  69. package/lib/assets/images/cancel-sign copy.png +0 -0
  70. package/lib/assets/images/cancel-sign.png +0 -0
  71. package/lib/assets/images/emptyResult.svg +1 -0
  72. package/lib/assets/images/icons-rtl.gif +0 -0
  73. package/lib/assets/images/icons.gif +0 -0
  74. package/lib/assets/images/imageicon.svg +16 -0
  75. package/lib/assets/images/imageicon_blue.svg +16 -0
  76. package/lib/assets/images/layoutoneicon.svg +16 -0
  77. package/lib/assets/images/layoutoneicon_blue.svg +16 -0
  78. package/lib/assets/images/layoutthreeicon.svg +18 -0
  79. package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
  80. package/lib/assets/images/layouttwoicon.svg +18 -0
  81. package/lib/assets/images/layouttwoicon_blue.svg +18 -0
  82. package/lib/assets/images/leftalignicon.svg +17 -0
  83. package/lib/assets/images/leftalignicon_blue.svg +17 -0
  84. package/lib/assets/images/loader.gif +0 -0
  85. package/lib/assets/images/loader.svg +1 -0
  86. package/lib/assets/images/loading.gif +0 -0
  87. package/lib/assets/images/middlealignicon.svg +17 -0
  88. package/lib/assets/images/middlealignicon_blue.svg +17 -0
  89. package/lib/assets/images/question_collection.svg +18 -0
  90. package/lib/assets/images/rightalignicon.svg +17 -0
  91. package/lib/assets/images/rightalignicon_blue.svg +17 -0
  92. package/lib/assets/images/vline-rtl.gif +0 -0
  93. package/lib/assets/images/vline.gif +0 -0
  94. package/lib/assets/images/writing.png +0 -0
  95. package/lib/collection-editor-cursor.service.d.ts +5 -0
  96. package/lib/collection-editor-cursor.service.d.ts.map +1 -0
  97. package/lib/collection-editor-library.component.d.ts +9 -0
  98. package/lib/collection-editor-library.component.d.ts.map +1 -0
  99. package/lib/collection-editor-library.module.d.ts +50 -0
  100. package/lib/collection-editor-library.module.d.ts.map +1 -0
  101. package/lib/components/answer/answer.component.d.ts +24 -0
  102. package/lib/components/answer/answer.component.d.ts.map +1 -0
  103. package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
  104. package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
  105. package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
  106. package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
  107. package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
  108. package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
  109. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
  110. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
  111. package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
  112. package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
  113. package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
  114. package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
  115. package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
  116. package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
  117. package/lib/components/dialcode/dialcode.component.d.ts +48 -0
  118. package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
  119. package/lib/components/editor/editor.component.d.ts +146 -0
  120. package/lib/components/editor/editor.component.d.ts.map +1 -0
  121. package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
  122. package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
  123. package/lib/components/header/header.component.d.ts +46 -0
  124. package/lib/components/header/header.component.d.ts.map +1 -0
  125. package/lib/components/library/library.component.d.ts +69 -0
  126. package/lib/components/library/library.component.d.ts.map +1 -0
  127. package/lib/components/library-filter/library-filter.component.d.ts +47 -0
  128. package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
  129. package/lib/components/library-list/library-list.component.d.ts +32 -0
  130. package/lib/components/library-list/library-list.component.d.ts.map +1 -0
  131. package/lib/components/library-player/library-player.component.d.ts +24 -0
  132. package/lib/components/library-player/library-player.component.d.ts.map +1 -0
  133. package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
  134. package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
  135. package/lib/components/meta-form/meta-form.component.d.ts +51 -0
  136. package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
  137. package/lib/components/options/options.component.d.ts +53 -0
  138. package/lib/components/options/options.component.d.ts.map +1 -0
  139. package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
  140. package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
  141. package/lib/components/progress-status/progress-status.component.d.ts +25 -0
  142. package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
  143. package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
  144. package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
  145. package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
  146. package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
  147. package/lib/components/question/question.component.d.ts +215 -0
  148. package/lib/components/question/question.component.d.ts.map +1 -0
  149. package/lib/components/quml-player/quml-player.component.d.ts +26 -0
  150. package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
  151. package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
  152. package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
  153. package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
  154. package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
  155. package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
  156. package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  157. package/lib/components/template/template.component.d.ts +21 -0
  158. package/lib/components/template/template.component.d.ts.map +1 -0
  159. package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
  160. package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
  161. package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
  162. package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
  163. package/lib/interfaces/McqForm.d.ts +32 -0
  164. package/lib/interfaces/McqForm.d.ts.map +1 -0
  165. package/lib/interfaces/editor.d.ts +78 -0
  166. package/lib/interfaces/editor.d.ts.map +1 -0
  167. package/lib/interfaces/framework.d.ts +46 -0
  168. package/lib/interfaces/framework.d.ts.map +1 -0
  169. package/lib/interfaces/httpOptions.d.ts +35 -0
  170. package/lib/interfaces/httpOptions.d.ts.map +1 -0
  171. package/lib/interfaces/requestParam.d.ts +24 -0
  172. package/lib/interfaces/requestParam.d.ts.map +1 -0
  173. package/lib/interfaces/serverResponse.d.ts +38 -0
  174. package/lib/interfaces/serverResponse.d.ts.map +1 -0
  175. package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
  176. package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
  177. package/lib/services/config/config.service.d.ts +13 -0
  178. package/lib/services/config/config.service.d.ts.map +1 -0
  179. package/lib/services/data/data.service.d.ts +85 -0
  180. package/lib/services/data/data.service.d.ts.map +1 -0
  181. package/lib/services/dialcode/dialcode.service.d.ts +36 -0
  182. package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
  183. package/lib/services/editor/editor.service.d.ts +150 -0
  184. package/lib/services/editor/editor.service.d.ts.map +1 -0
  185. package/lib/services/framework/framework.service.d.ts +35 -0
  186. package/lib/services/framework/framework.service.d.ts.map +1 -0
  187. package/lib/services/helper/helper.service.d.ts +41 -0
  188. package/lib/services/helper/helper.service.d.ts.map +1 -0
  189. package/lib/services/player/player.service.d.ts +33 -0
  190. package/lib/services/player/player.service.d.ts.map +1 -0
  191. package/lib/services/public-data/public-data.service.d.ts +15 -0
  192. package/lib/services/public-data/public-data.service.d.ts.map +1 -0
  193. package/lib/services/question/question.service.d.ts +30 -0
  194. package/lib/services/question/question.service.d.ts.map +1 -0
  195. package/lib/services/telemetry/telemetry.service.d.ts +45 -0
  196. package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
  197. package/lib/services/toaster/toaster.service.d.ts +50 -0
  198. package/lib/services/toaster/toaster.service.d.ts.map +1 -0
  199. package/lib/services/tree/tree.service.d.ts +51 -0
  200. package/lib/services/tree/tree.service.d.ts.map +1 -0
  201. package/package.json +32 -0
  202. package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
  203. package/public-api.d.ts +4 -0
  204. package/public-api.d.ts.map +1 -0
@@ -0,0 +1,167 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as _ from 'lodash-es';
3
+ import { v4 as uuidv4 } from 'uuid';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/data/data.service";
6
+ import * as i2 from "@angular/common/http";
7
+ import * as i3 from "../config/config.service";
8
+ import * as i4 from "../../services/public-data/public-data.service";
9
+ import * as i5 from "../editor/editor.service";
10
+ export class QuestionService {
11
+ constructor(dataService, http, configService, publicDataService, editorService) {
12
+ this.dataService = dataService;
13
+ this.configService = configService;
14
+ this.publicDataService = publicDataService;
15
+ this.editorService = editorService;
16
+ this.http = http;
17
+ }
18
+ readQuestion(questionId, leafFormConfigfields) {
19
+ // tslint:disable-next-line:max-line-length
20
+ let field = this.configService.editorConfig.readQuestionFields;
21
+ field = leafFormConfigfields ? field + leafFormConfigfields : field;
22
+ const option = {
23
+ url: `${this.configService.urlConFig.URLS.QUESTION.READ}${questionId}`,
24
+ param: {
25
+ fields: field
26
+ }
27
+ };
28
+ return this.publicDataService.get(option);
29
+ }
30
+ updateHierarchyQuestionCreate(hierarchyBody) {
31
+ const requestObj = {
32
+ data: hierarchyBody
33
+ };
34
+ const req = {
35
+ url: this.configService.urlConFig.URLS[this.editorService.editorConfig.config.objectType].HIERARCHY_UPDATE,
36
+ data: {
37
+ request: requestObj
38
+ }
39
+ };
40
+ return this.publicDataService.patch(req);
41
+ }
42
+ updateHierarchyQuestionUpdate(hierarchyBody) {
43
+ const requestObj = {
44
+ data: hierarchyBody
45
+ };
46
+ const req = {
47
+ url: this.configService.urlConFig.URLS[this.editorService.editorConfig.config.objectType].HIERARCHY_UPDATE,
48
+ data: {
49
+ request: requestObj
50
+ }
51
+ };
52
+ return this.publicDataService.patch(req);
53
+ }
54
+ getAssetMedia(req) {
55
+ const reqParam = {
56
+ url: _.get(this.configService.urlConFig, 'URLS.compositSearch'),
57
+ data: {
58
+ request: {
59
+ filters: {
60
+ contentType: 'Asset',
61
+ compatibilityLevel: {
62
+ min: 1,
63
+ max: 2
64
+ },
65
+ status: ['Live'],
66
+ },
67
+ limit: 50,
68
+ }
69
+ }
70
+ };
71
+ reqParam.data.request = req ? _.merge({}, reqParam.data.request, req) : reqParam;
72
+ return this.publicDataService.post(reqParam);
73
+ }
74
+ createMediaAsset(req) {
75
+ const reqParam = {
76
+ url: _.get(this.configService.urlConFig, 'URLS.CONTENT.CREATE'),
77
+ data: {
78
+ request: {
79
+ content: {
80
+ contentType: 'Asset',
81
+ language: ['English'],
82
+ code: uuidv4(),
83
+ }
84
+ }
85
+ }
86
+ };
87
+ reqParam.data.request = req ? _.merge({}, reqParam.data.request, req) : reqParam;
88
+ return this.publicDataService.post(reqParam);
89
+ }
90
+ uploadMedia(req, assetId) {
91
+ let reqParam = {
92
+ url: `${this.configService.urlConFig.URLS.CONTENT.UPLOAD}${assetId}`,
93
+ data: req.data
94
+ };
95
+ reqParam = req ? _.merge({}, reqParam, req) : reqParam;
96
+ return this.publicDataService.post(reqParam);
97
+ }
98
+ generatePreSignedUrl(req, contentId) {
99
+ const reqParam = {
100
+ url: `${this.configService.urlConFig.URLS.CONTENT.UPLOAD_URL}${contentId}`,
101
+ data: {
102
+ request: req
103
+ }
104
+ };
105
+ return this.publicDataService.post(reqParam);
106
+ }
107
+ getVideo(videoId) {
108
+ const reqParam = {
109
+ url: `${this.configService.urlConFig.URLS.CONTENT.READ}${videoId}`
110
+ };
111
+ return this.publicDataService.get(reqParam);
112
+ }
113
+ getQuestionList(req, field) {
114
+ const reqParam = {
115
+ url: this.configService.urlConFig.URLS.QuestionSet.QUESTION_LIST,
116
+ data: {
117
+ request: {
118
+ search: {
119
+ identifier: req
120
+ }
121
+ }
122
+ }
123
+ };
124
+ if (field) {
125
+ reqParam.param = { fields: field };
126
+ }
127
+ return this.publicDataService.post(reqParam);
128
+ }
129
+ updateQuestion(questionId, requestBody) {
130
+ const req = {
131
+ url: `${this.configService.urlConFig.URLS.QUESTION.UPDATE}${questionId}`,
132
+ data: {
133
+ request: requestBody
134
+ }
135
+ };
136
+ return this.publicDataService.patch(req);
137
+ }
138
+ upsertQuestion(questionId, requestBody) {
139
+ if (questionId) {
140
+ const req = {
141
+ url: `${this.configService.urlConFig.URLS.QUESTION.UPDATE}${questionId}`,
142
+ data: {
143
+ request: requestBody
144
+ }
145
+ };
146
+ return this.publicDataService.patch(req);
147
+ }
148
+ else {
149
+ const req = {
150
+ url: this.configService.urlConFig.URLS.QUESTION.CREATE,
151
+ data: {
152
+ request: requestBody
153
+ }
154
+ };
155
+ return this.publicDataService.post(req);
156
+ }
157
+ }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionService, deps: [{ token: i1.DataService }, { token: i2.HttpClient }, { token: i3.ConfigService }, { token: i4.PublicDataService }, { token: i5.EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionService, providedIn: 'root' }); }
160
+ }
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionService, decorators: [{
162
+ type: Injectable,
163
+ args: [{
164
+ providedIn: 'root'
165
+ }]
166
+ }], ctorParameters: function () { return [{ type: i1.DataService }, { type: i2.HttpClient }, { type: i3.ConfigService }, { type: i4.PublicDataService }, { type: i5.EditorService }]; } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9zZXJ2aWNlcy9xdWVzdGlvbi9xdWVzdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBbUIsV0FBd0IsRUFBRSxJQUFnQixFQUFVLGFBQTRCLEVBQ3pGLGlCQUFvQyxFQUFVLGFBQTRCO1FBRGpFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQTRCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3pGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNsRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQVUsRUFBRSxvQkFBcUI7UUFDNUMsMkNBQTJDO1FBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1FBQy9ELEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUc7WUFDYixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLEVBQUU7WUFDdEUsS0FBSyxFQUFFO2dCQUNMLE1BQU0sRUFB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QWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUN0RCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLFdBQVc7aUJBQ3JCO2FBQ0YsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7K0dBM0pVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B1YmxpYy1kYXRhL3B1YmxpYy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmVyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NlcnZlclJlc3BvbnNlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL2VkaXRvci9lZGl0b3Iuc2VydmljZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgaHR0cDogSHR0cENsaWVudDtcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSwgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHVibGljRGF0YVNlcnZpY2U6IFB1YmxpY0RhdGFTZXJ2aWNlLCBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UpIHtcbiAgICB0aGlzLmh0dHAgPSBodHRwO1xuICB9XG5cbiAgcmVhZFF1ZXN0aW9uKHF1ZXN0aW9uSWQsIGxlYWZGb3JtQ29uZmlnZmllbGRzPykge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZWRpdG9yQ29uZmlnLnJlYWRRdWVzdGlvbkZpZWxkcztcbiAgICBmaWVsZCA9IGxlYWZGb3JtQ29uZmlnZmllbGRzID8gZmllbGQgKyBsZWFmRm9ybUNvbmZpZ2ZpZWxkcyA6IGZpZWxkO1xuICAgIGNvbnN0IG9wdGlvbiA9IHtcbiAgICAgIHVybDogYCR7dGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZy5VUkxTLlFVRVNUSU9OLlJFQUR9JHtxdWVzdGlvbklkfWAsXG4gICAgICBwYXJhbToge1xuICAgICAgICBmaWVsZHM6IGZpZWxkXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5wdWJsaWNEYXRhU2VydmljZS5nZXQob3B0aW9uKTtcbiAgfVxuXG4gIHVwZGF0ZUhpZXJhcmNoeVF1ZXN0aW9uQ3JlYXRlKGhpZXJhcmNoeUJvZHkpOiBPYnNlcnZhYmxlPFNlcnZlclJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdE9iaiA9IHtcbiAgICAgIGRhdGE6IGhpZXJhcmNoeUJvZHlcbiAgICB9O1xuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIHVybDogdGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZy5VUkxTW3RoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcuY29uZmlnLm9iamVjdFR5cGVdLkhJRVJBUkNIWV9VUERBVEUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RPYmpcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnB1YmxpY0RhdGFTZXJ2aWNlLnBhdGNoKHJlcSk7XG4gIH1cblxuICB1cGRhdGVIaWVyYXJjaHlRdWVzdGlvblVwZGF0ZShoaWVyYXJjaHlCb2R5KTogT2JzZXJ2YWJsZTxTZXJ2ZXJSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3RPYmogPSB7XG4gICAgICBkYXRhOiBoaWVyYXJjaHlCb2R5XG4gICAgfTtcbiAgICBjb25zdCByZXEgPSB7XG4gICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMU1t0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXS5ISUVSQVJDSFlfVVBEQVRFLFxuICAgICAgZGF0YToge1xuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0T2JqXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5wdWJsaWNEYXRhU2VydmljZS5wYXRjaChyZXEpO1xuICB9XG5cbiAgZ2V0QXNzZXRNZWRpYShyZXE/OiBvYmplY3QpIHtcbiAgICBjb25zdCByZXFQYXJhbSA9IHtcbiAgICAgIHVybDogXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZywgJ1VSTFMuY29tcG9zaXRTZWFyY2gnKSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnQXNzZXQnLFxuICAgICAgICAgICAgY29tcGF0aWJpbGl0eUxldmVsOiB7XG4gICAgICAgICAgICAgIG1pbjogMSxcbiAgICAgICAgICAgICAgbWF4OiAyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdHVzOiBbJ0xpdmUnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbWl0OiA1MCxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmVxUGFyYW0uZGF0YS5yZXF1ZXN0ID0gcmVxID8gXy5tZXJnZSh7fSwgcmVxUGFyYW0uZGF0YS5yZXF1ZXN0LCByZXEpIDogcmVxUGFyYW07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucG9zdChyZXFQYXJhbSk7XG4gIH1cblxuICBjcmVhdGVNZWRpYUFzc2V0KHJlcT86IG9iamVjdCkge1xuICAgIGNvbnN0IHJlcVBhcmFtID0ge1xuICAgICAgdXJsOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UudXJsQ29uRmlnLCAnVVJMUy5DT05URU5ULkNSRUFURScpLFxuICAgICAgZGF0YToge1xuICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgY29udGVudFR5cGU6ICdBc3NldCcsXG4gICAgICAgICAgICBsYW5ndWFnZTogWydFbmdsaXNoJ10sXG4gICAgICAgICAgICBjb2RlOiB1dWlkdjQoKSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJlcVBhcmFtLmRhdGEucmVxdWVzdCA9IHJlcSA/IF8ubWVyZ2Uoe30sIHJlcVBhcmFtLmRhdGEucmVxdWVzdCwgcmVxKSA6IHJlcVBhcmFtO1xuICAgIHJldHVybiB0aGlzLnB1YmxpY0RhdGFTZXJ2aWNlLnBvc3QocmVxUGFyYW0pO1xuICB9XG5cbiAgdXBsb2FkTWVkaWEocmVxLCBhc3NldElkOiBhbnkpIHtcbiAgICBsZXQgcmVxUGFyYW0gPSB7XG4gICAgICB1cmw6IGAke3RoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5DT05URU5ULlVQTE9BRH0ke2Fzc2V0SWR9YCxcbiAgICAgIGRhdGE6IHJlcS5kYXRhXG4gICAgfTtcbiAgICByZXFQYXJhbSA9IHJlcSA/IF8ubWVyZ2Uoe30sIHJlcVBhcmFtLCByZXEpIDogcmVxUGFyYW07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucG9zdChyZXFQYXJhbSk7XG4gIH1cblxuICBnZW5lcmF0ZVByZVNpZ25lZFVybChyZXEsIGNvbnRlbnRJZDogYW55KSB7XG4gICAgY29uc3QgcmVxUGFyYW0gPSB7XG4gICAgICB1cmw6IGAke3RoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5DT05URU5ULlVQTE9BRF9VUkx9JHtjb250ZW50SWR9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcmVxdWVzdDogcmVxXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5wdWJsaWNEYXRhU2VydmljZS5wb3N0KHJlcVBhcmFtKTtcbiAgfVxuXG4gIGdldFZpZGVvKHZpZGVvSWQpIHtcbiAgICBjb25zdCByZXFQYXJhbSA9IHtcbiAgICAgIHVybDogYCR7dGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZy5VUkxTLkNPTlRFTlQuUkVBRH0ke3ZpZGVvSWR9YFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UuZ2V0KHJlcVBhcmFtKTtcbiAgfVxuXG4gIGdldFF1ZXN0aW9uTGlzdChyZXEsIGZpZWxkPzogYW55KSB7XG4gICAgY29uc3QgcmVxUGFyYW06IGFueSA9IHtcbiAgICAgIHVybDogdGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZy5VUkxTLlF1ZXN0aW9uU2V0LlFVRVNUSU9OX0xJU1QsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHJlcVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICByZXFQYXJhbS5wYXJhbSA9IHsgZmllbGRzOiBmaWVsZCB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wdWJsaWNEYXRhU2VydmljZS5wb3N0KHJlcVBhcmFtKTtcbiAgfVxuXG4gIHVwZGF0ZVF1ZXN0aW9uKHF1ZXN0aW9uSWQsIHJlcXVlc3RCb2R5KTogT2JzZXJ2YWJsZTxTZXJ2ZXJSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIHVybDogYCR7dGhpcy5jb25maWdTZXJ2aWNlLnVybENvbkZpZy5VUkxTLlFVRVNUSU9OLlVQREFURX0ke3F1ZXN0aW9uSWR9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdEJvZHlcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnB1YmxpY0RhdGFTZXJ2aWNlLnBhdGNoKHJlcSk7XG4gIH1cblxuICB1cHNlcnRRdWVzdGlvbihxdWVzdGlvbklkLCByZXF1ZXN0Qm9keSk6IE9ic2VydmFibGU8U2VydmVyUmVzcG9uc2U+IHtcbiAgICBpZiAocXVlc3Rpb25JZCkge1xuICAgICAgY29uc3QgcmVxID0ge1xuICAgICAgICB1cmw6IGAke3RoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5RVUVTVElPTi5VUERBVEV9JHtxdWVzdGlvbklkfWAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0Qm9keVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucGF0Y2gocmVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVxID0ge1xuICAgICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5RVUVTVElPTi5DUkVBVEUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0Qm9keVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucG9zdChyZXEpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,120 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import * as _ from 'lodash-es';
3
+ import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../helper/helper.service";
6
+ import * as i2 from "../config/config.service";
7
+ export class EditorTelemetryService {
8
+ constructor(helperService, configService) {
9
+ this.helperService = helperService;
10
+ this.configService = configService;
11
+ this.telemetryEvent = new EventEmitter();
12
+ }
13
+ initializeTelemetry(config) {
14
+ this.duration = new Date().getTime();
15
+ this.context = config.context;
16
+ this.channel = config.context.channel;
17
+ this.pdata = this.context.pdata;
18
+ this.sid = this.context.sid;
19
+ this.uid = this.context.uid;
20
+ this.env = this.context.env;
21
+ this.pdata.pid = `${this.context.pdata.pid}.${this.env}`;
22
+ this.rollup = this.context.contextRollup;
23
+ if (!CsTelemetryModule.instance.isInitialised) {
24
+ CsTelemetryModule.instance.init({});
25
+ CsTelemetryModule.instance.telemetryService.initTelemetry({
26
+ config: {
27
+ pdata: config.context.pdata,
28
+ env: config.context.env,
29
+ channel: config.context.channel,
30
+ did: config.context.did,
31
+ authtoken: config.context.authToken || '',
32
+ uid: config.context.uid || '',
33
+ sid: config.context.sid,
34
+ batchsize: 20,
35
+ mode: config.context.mode,
36
+ host: config.context.host || document.location.origin,
37
+ endpoint: config.context.endpoint || _.get(this.configService.urlConFig, 'URLS.telemetry'),
38
+ tags: config.context.tags,
39
+ cdata: this.context.cdata || []
40
+ },
41
+ userOrgDetails: {}
42
+ });
43
+ }
44
+ this.telemetryObject = {
45
+ id: config.context.identifier,
46
+ type: 'Content',
47
+ ver: '1.0',
48
+ rollup: this.context.objectRollup || {}
49
+ };
50
+ }
51
+ set telemetryPageId(value) {
52
+ this._telemetryPageId = value;
53
+ }
54
+ get telemetryPageId() {
55
+ return this._telemetryPageId;
56
+ }
57
+ getTelemetryInteractEdata(id, type, subtype, pageid, extra) {
58
+ return _.omitBy({
59
+ id,
60
+ type,
61
+ subtype,
62
+ pageid,
63
+ extra
64
+ }, _.isUndefined);
65
+ }
66
+ start(edata) {
67
+ CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({
68
+ options: this.getEventOptions(),
69
+ edata
70
+ });
71
+ }
72
+ end(edata) {
73
+ if (CsTelemetryModule.instance.isInitialised) {
74
+ CsTelemetryModule?.instance?.telemetryService?.raiseEndTelemetry({
75
+ edata,
76
+ options: this.getEventOptions()
77
+ });
78
+ }
79
+ }
80
+ interact(eventData) {
81
+ CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({
82
+ options: this.getEventOptions(),
83
+ edata: eventData.edata
84
+ });
85
+ }
86
+ impression(edata) {
87
+ CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry({
88
+ options: this.getEventOptions(),
89
+ edata
90
+ });
91
+ }
92
+ error(edata) {
93
+ CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({
94
+ edata
95
+ });
96
+ }
97
+ getEventOptions() {
98
+ return ({
99
+ object: this.telemetryObject,
100
+ context: {
101
+ channel: this.channel,
102
+ pdata: this.pdata,
103
+ env: this.env,
104
+ sid: this.sid,
105
+ uid: this.uid,
106
+ cdata: this.context.cdata || [],
107
+ rollup: this.rollup || {}
108
+ }
109
+ });
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorTelemetryService, deps: [{ token: i1.HelperService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorTelemetryService, providedIn: 'root' }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorTelemetryService, decorators: [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root'
118
+ }]
119
+ }], ctorParameters: function () { return [{ type: i1.HelperService }, { type: i2.ConfigService }]; } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvc2VydmljZXMvdGVsZW1ldHJ5L3RlbGVtZXRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7O0FBTy9FLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFBbUIsYUFBNEIsRUFBUyxhQUE0QjtRQUFqRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWHBGLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQVcrQyxDQUFDO0lBRXpGLG1CQUFtQixDQUFDLE1BQXFCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzVC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QUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDc1RlbGVtZXRyeU1vZHVsZSB9IGZyb20gJ0Bwcm9qZWN0LXN1bmJpcmQvY2xpZW50LXNlcnZpY2VzL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBJRWRpdG9yQ29uZmlnLCBDb250ZXh0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGl0b3InO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJy4uL2hlbHBlci9oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRvclRlbGVtZXRyeVNlcnZpY2Uge1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIHRlbGVtZXRyeUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHByaXZhdGUgY29udGV4dDogQ29udGV4dDtcbiAgcHJpdmF0ZSB0ZWxlbWV0cnlPYmplY3Q6IGFueTtcbiAgcHJpdmF0ZSBwZGF0YTogYW55O1xuICBwcml2YXRlIHNpZDogc3RyaW5nO1xuICBwcml2YXRlIHVpZDogc3RyaW5nO1xuICBwcml2YXRlIHJvbGx1cDogYW55O1xuICBwcml2YXRlIGVudjogc3RyaW5nO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIF90ZWxlbWV0cnlQYWdlSWQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaGVscGVyU2VydmljZTogSGVscGVyU2VydmljZSwgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIGluaXRpYWxpemVUZWxlbWV0cnkoY29uZmlnOiBJRWRpdG9yQ29uZmlnKSB7XG4gICAgdGhpcy5kdXJhdGlvbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHRoaXMuY29udGV4dCA9IGNvbmZpZy5jb250ZXh0O1xuICAgIHRoaXMuY2hhbm5lbCA9IGNvbmZpZy5jb250ZXh0LmNoYW5uZWw7XG4gICAgdGhpcy5wZGF0YSA9IHRoaXMuY29udGV4dC5wZGF0YTtcbiAgICB0aGlzLnNpZCA9IHRoaXMuY29udGV4dC5zaWQ7XG4gICAgdGhpcy51aWQgPSB0aGlzLmNvbnRleHQudWlkO1xuICAgIHRoaXMuZW52ID0gdGhpcy5jb250ZXh0LmVudjtcbiAgICB0aGlzLnBkYXRhLnBpZCA9IGAke3RoaXMuY29udGV4dC5wZGF0YS5waWR9LiR7dGhpcy5lbnZ9YDtcbiAgICB0aGlzLnJvbGx1cCA9IHRoaXMuY29udGV4dC5jb250ZXh0Um9sbHVwO1xuICAgIGlmICghQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaXNJbml0aWFsaXNlZCkge1xuICAgICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaW5pdCh7fSk7XG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLmluaXRUZWxlbWV0cnkoXG4gICAgICAgIHtcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIHBkYXRhOiBjb25maWcuY29udGV4dC5wZGF0YSxcbiAgICAgICAgICAgIGVudjogY29uZmlnLmNvbnRleHQuZW52LFxuICAgICAgICAgICAgY2hhbm5lbDogY29uZmlnLmNvbnRleHQuY2hhbm5lbCxcbiAgICAgICAgICAgIGRpZDogY29uZmlnLmNvbnRleHQuZGlkLFxuICAgICAgICAgICAgYXV0aHRva2VuOiBjb25maWcuY29udGV4dC5hdXRoVG9rZW4gfHwgJycsXG4gICAgICAgICAgICB1aWQ6IGNvbmZpZy5jb250ZXh0LnVpZCB8fCAnJyxcbiAgICAgICAgICAgIHNpZDogY29uZmlnLmNvbnRleHQuc2lkLFxuICAgICAgICAgICAgYmF0Y2hzaXplOiAyMCxcbiAgICAgICAgICAgIG1vZGU6IGNvbmZpZy5jb250ZXh0Lm1vZGUsXG4gICAgICAgICAgICBob3N0OiBjb25maWcuY29udGV4dC5ob3N0IHx8IGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbixcbiAgICAgICAgICAgIGVuZHBvaW50OiBjb25maWcuY29udGV4dC5lbmRwb2ludCB8fCBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UudXJsQ29uRmlnLCAnVVJMUy50ZWxlbWV0cnknKSxcbiAgICAgICAgICAgIHRhZ3M6IGNvbmZpZy5jb250ZXh0LnRhZ3MsXG4gICAgICAgICAgICBjZGF0YTogdGhpcy5jb250ZXh0LmNkYXRhIHx8IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1c2VyT3JnRGV0YWlsczoge31cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRlbGVtZXRyeU9iamVjdCA9IHtcbiAgICAgIGlkOiBjb25maWcuY29udGV4dC5pZGVudGlmaWVyLFxuICAgICAgdHlwZTogJ0NvbnRlbnQnLFxuICAgICAgdmVyOiAnMS4wJywgLy8gVE9ETyA6OiBjb25maWcubWV0YWRhdGEucGtnVmVyc2lvbiArICcnXG4gICAgICByb2xsdXA6IHRoaXMuY29udGV4dC5vYmplY3RSb2xsdXAgfHwge31cbiAgICB9O1xuICB9XG5cbiAgc2V0IHRlbGVtZXRyeVBhZ2VJZCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5UGFnZUlkID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdGVsZW1ldHJ5UGFnZUlkKCkge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlQYWdlSWQ7XG4gIH1cblxuICBnZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgc3VidHlwZTogc3RyaW5nLCBwYWdlaWQ6IHN0cmluZywgZXh0cmE/OiBhbnkpIHtcbiAgICByZXR1cm4gXy5vbWl0Qnkoe1xuICAgICAgaWQsXG4gICAgICB0eXBlLFxuICAgICAgc3VidHlwZSxcbiAgICAgIHBhZ2VpZCxcbiAgICAgIGV4dHJhXG4gICAgfSwgXy5pc1VuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnQoZWRhdGEpIHtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlU3RhcnRUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICAgIGVkYXRhXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICBwdWJsaWMgZW5kKGVkYXRhKSB7XG4gICAgaWYgKENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmlzSW5pdGlhbGlzZWQpIHtcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlPy5pbnN0YW5jZT8udGVsZW1ldHJ5U2VydmljZT8ucmFpc2VFbmRUZWxlbWV0cnkoe1xuICAgICAgICBlZGF0YSxcbiAgICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGludGVyYWN0KGV2ZW50RGF0YSkge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSh7XG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxuICAgICAgZWRhdGE6IGV2ZW50RGF0YS5lZGF0YVxuICAgIH0pO1xuICB9XG5cblxuICBwdWJsaWMgaW1wcmVzc2lvbihlZGF0YSkge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbXByZXNzaW9uVGVsZW1ldHJ5KHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVycm9yKGVkYXRhKSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUVycm9yVGVsZW1ldHJ5KHtcbiAgICAgIGVkYXRhXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXZlbnRPcHRpb25zKCkge1xuICAgIHJldHVybiAoe1xuICAgICAgb2JqZWN0OiB0aGlzLnRlbGVtZXRyeU9iamVjdCxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY2hhbm5lbDogdGhpcy5jaGFubmVsLFxuICAgICAgICBwZGF0YTogdGhpcy5wZGF0YSxcbiAgICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgICAgc2lkOiB0aGlzLnNpZCxcbiAgICAgICAgdWlkOiB0aGlzLnVpZCxcbiAgICAgICAgY2RhdGE6IHRoaXMuY29udGV4dC5jZGF0YSB8fCBbXSxcbiAgICAgICAgcm9sbHVwOiB0aGlzLnJvbGx1cCB8fCB7fVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,105 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Service to show toaster
5
+ *
6
+ */
7
+ export class ToasterService {
8
+ /**
9
+ * Constructor to create injected service(s) object
10
+ */
11
+ constructor() {
12
+ this.options = {
13
+ position: 'topCenter',
14
+ titleSize: '18',
15
+ timeout: 6000,
16
+ transitionIn: 'flipInX',
17
+ transitionOut: 'flipOutX'
18
+ };
19
+ this.iziToast = iziToast; // global object
20
+ }
21
+ InfoToasterCritical(title, message) {
22
+ iziToast.show({
23
+ title,
24
+ message,
25
+ class: 'sb-toaster sb-toast-success sb-toast-normal',
26
+ position: 'topCenter',
27
+ timeout: 6000,
28
+ transitionIn: 'flipInX',
29
+ transitionOut: 'flipOutX'
30
+ });
31
+ }
32
+ /**
33
+ * Format success message
34
+ * @memberOf Services.toasterService
35
+ * @param string message - Success message
36
+ */
37
+ success(title, message) {
38
+ this.iziToast.success({
39
+ title,
40
+ message: message ? message : '',
41
+ class: 'sb-toaster sb-toast-normal sb-toast-success',
42
+ ...this.options
43
+ });
44
+ }
45
+ /**
46
+ * Format information message
47
+ * @memberOf Services.toasterService
48
+ * @param string message - Info message
49
+ */
50
+ info(title, message) {
51
+ this.iziToast.info({
52
+ title,
53
+ message: message ? message : '',
54
+ class: 'sb-toaster sb-toast-normal sb-toast-info',
55
+ ...this.options
56
+ });
57
+ }
58
+ /**
59
+ * Format error message
60
+ * @memberOf Services.toasterService
61
+ * @param string message - Error message
62
+ */
63
+ error(title, message) {
64
+ this.iziToast.error({
65
+ title,
66
+ message: message ? message : '',
67
+ class: 'sb-toaster sb-toast-normal sb-toast-danger',
68
+ ...this.options
69
+ });
70
+ }
71
+ /**
72
+ * Format warning message
73
+ * @memberOf Services.toasterService
74
+ * @param string message - Warning message
75
+ */
76
+ warning(title, message) {
77
+ this.iziToast.warning({
78
+ title,
79
+ message: message ? message : '',
80
+ class: 'sb-toaster sb-toast-normal sb-toast-warning',
81
+ ...this.options
82
+ });
83
+ }
84
+ /**
85
+ * Simple info message
86
+ * @memberOf Services.toasterService
87
+ * @param string message - Simple info message
88
+ */
89
+ simpleInfo(title, position, message) {
90
+ this.iziToast.info({
91
+ title,
92
+ message: message ? message : '',
93
+ position: position ? position : 'topCenter'
94
+ });
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToasterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
97
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToasterService, providedIn: 'root' }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToasterService, decorators: [{
100
+ type: Injectable,
101
+ args: [{
102
+ providedIn: 'root'
103
+ }]
104
+ }], ctorParameters: function () { return []; } });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL3NlcnZpY2VzL3RvYXN0ZXIvdG9hc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBYXpCOztVQUVHO0lBQ0g7UUFWUSxZQUFPLEdBQUc7WUFDaEIsUUFBUSxFQUFFLFdBQVc7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLGFBQWEsRUFBRSxVQUFVO1NBQzFCLENBQUM7UUFLQSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQjtJQUM1QyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYSxFQUFFLE9BQWU7UUFDaEQsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNaLEtBQUs7WUFDTCxPQUFPO1lBQ1AsS0FBSyxFQUFFLDZDQUE2QztZQUNwRCxRQUFRLEVBQUUsV0FBVztZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLGFBQWEsRUFBRSxVQUFVO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEtBQWEsRUFBRSxPQUFnQjtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNsQixLQUFLO1lBQ0wsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9CLEtBQUssRUFBRSw2Q0FBNkM7WUFDbkQsR0FBRyxJQUFJLENBQUMsT0FBTztTQUNmLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLEtBQWEsRUFBRSxPQUFnQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixLQUFLO1lBQ0wsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9CLEtBQUssRUFBRSwwQ0FBMEM7WUFDaEQsR0FBRyxJQUFJLENBQUMsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFhLEVBQUUsT0FBZ0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDbEIsS0FBSztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvQixLQUFLLEVBQUUsNENBQTRDO1lBQ2xELEdBQUcsSUFBSSxDQUFDLE9BQU87U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsS0FBYSxFQUFFLE9BQWdCO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3BCLEtBQUs7WUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxFQUFFLDZDQUE2QztZQUNuRCxHQUFHLElBQUksQ0FBQyxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0EsVUFBVSxDQUFDLEtBQWEsRUFBRSxRQUFTLEVBQUUsT0FBZ0I7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsS0FBSztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVc7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyR1EsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5kZWNsYXJlIGNvbnN0IGl6aVRvYXN0OiBhbnk7XG4vKipcbiAqIFNlcnZpY2UgdG8gc2hvdyB0b2FzdGVyXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUb2FzdGVyU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFRvIHNob3cgdG9hc3RlciBtZXNzYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBpemlUb2FzdDogYW55O1xuICBwcml2YXRlIG9wdGlvbnMgPSB7XG4gICAgcG9zaXRpb246ICd0b3BDZW50ZXInLFxuICAgIHRpdGxlU2l6ZTogJzE4JyxcbiAgICB0aW1lb3V0OiA2MDAwLFxuICAgIHRyYW5zaXRpb25JbjogJ2ZsaXBJblgnLFxuICAgIHRyYW5zaXRpb25PdXQ6ICdmbGlwT3V0WCdcbiAgfTtcbiAgLyoqXG5cdCAgKiBDb25zdHJ1Y3RvciB0byBjcmVhdGUgaW5qZWN0ZWQgc2VydmljZShzKSBvYmplY3Rcblx0ICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLml6aVRvYXN0ID0gaXppVG9hc3Q7IC8vIGdsb2JhbCBvYmplY3RcbiAgfVxuXG4gIEluZm9Ub2FzdGVyQ3JpdGljYWwodGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaXppVG9hc3Quc2hvdyh7XG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBjbGFzczogJ3NiLXRvYXN0ZXIgc2ItdG9hc3Qtc3VjY2VzcyBzYi10b2FzdC1ub3JtYWwnLFxuICAgICAgcG9zaXRpb246ICd0b3BDZW50ZXInLFxuICAgICAgdGltZW91dDogNjAwMCxcbiAgICAgIHRyYW5zaXRpb25JbjogJ2ZsaXBJblgnLFxuICAgICAgdHJhbnNpdGlvbk91dDogJ2ZsaXBPdXRYJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBzdWNjZXNzIG1lc3NhZ2VcbiAgICogQG1lbWJlck9mIFNlcnZpY2VzLnRvYXN0ZXJTZXJ2aWNlXG4gICAqIEBwYXJhbSBzdHJpbmcgIG1lc3NhZ2UgLSBTdWNjZXNzIG1lc3NhZ2VcbiAgICovXG4gIHN1Y2Nlc3ModGl0bGU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuaXppVG9hc3Quc3VjY2Vzcyh7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8gbWVzc2FnZSA6ICcnLFxuICAgICAgICBjbGFzczogJ3NiLXRvYXN0ZXIgc2ItdG9hc3Qtbm9ybWFsIHNiLXRvYXN0LXN1Y2Nlc3MnLFxuICAgICAgICAgLi4udGhpcy5vcHRpb25zXG4gICAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBpbmZvcm1hdGlvbiBtZXNzYWdlXG4gICAqIEBtZW1iZXJPZiBTZXJ2aWNlcy50b2FzdGVyU2VydmljZVxuICAgKiBAcGFyYW0gc3RyaW5nICBtZXNzYWdlIC0gSW5mbyBtZXNzYWdlXG4gICAqL1xuICBpbmZvKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLml6aVRvYXN0LmluZm8oe1xuICAgICAgdGl0bGUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlID8gbWVzc2FnZSA6ICcnLFxuICAgICAgY2xhc3M6ICdzYi10b2FzdGVyIHNiLXRvYXN0LW5vcm1hbCBzYi10b2FzdC1pbmZvJyxcbiAgICAgICAuLi50aGlzLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRm9ybWF0IGVycm9yIG1lc3NhZ2VcbiAgICogQG1lbWJlck9mIFNlcnZpY2VzLnRvYXN0ZXJTZXJ2aWNlXG4gICAqIEBwYXJhbSBzdHJpbmcgIG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlXG4gICAqL1xuICBlcnJvcih0aXRsZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5pemlUb2FzdC5lcnJvcih7XG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPyBtZXNzYWdlIDogJycsXG4gICAgICBjbGFzczogJ3NiLXRvYXN0ZXIgc2ItdG9hc3Qtbm9ybWFsIHNiLXRvYXN0LWRhbmdlcicsXG4gICAgICAgLi4udGhpcy5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHdhcm5pbmcgbWVzc2FnZVxuICAgKiBAbWVtYmVyT2YgU2VydmljZXMudG9hc3RlclNlcnZpY2VcbiAgICogQHBhcmFtIHN0cmluZyAgbWVzc2FnZSAtIFdhcm5pbmcgbWVzc2FnZVxuICAgKi9cbiAgd2FybmluZyh0aXRsZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5pemlUb2FzdC53YXJuaW5nKHtcbiAgICAgIHRpdGxlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSA/IG1lc3NhZ2UgOiAnJyxcbiAgICAgIGNsYXNzOiAnc2ItdG9hc3RlciBzYi10b2FzdC1ub3JtYWwgc2ItdG9hc3Qtd2FybmluZycsXG4gICAgICAgLi4udGhpcy5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2ltcGxlIGluZm8gbWVzc2FnZVxuICAgKiBAbWVtYmVyT2YgU2VydmljZXMudG9hc3RlclNlcnZpY2VcbiAgICogQHBhcmFtIHN0cmluZyAgbWVzc2FnZSAtIFNpbXBsZSBpbmZvIG1lc3NhZ2VcbiAgICovXG4gICAgIHNpbXBsZUluZm8odGl0bGU6IHN0cmluZywgcG9zaXRpb24/LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICB0aGlzLml6aVRvYXN0LmluZm8oe1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA/IG1lc3NhZ2UgOiAnJyxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uID8gcG9zaXRpb24gOiAndG9wQ2VudGVyJ1xuICAgICAgfSk7XG4gICAgfVxufVxuIl19