@sam-senior/sam-utils 2.0.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/lib/has-integrated-role.model.mjs +2 -0
  2. package/esm2022/lib/sam-utils.service.mjs +216 -0
  3. package/esm2022/lib/tenant-information.mjs +2 -0
  4. package/esm2022/lib/user-roles.model.mjs +4 -0
  5. package/esm2022/lib/user.model.mjs +2 -0
  6. package/esm2022/public-api.mjs +5 -0
  7. package/esm2022/sam-senior-sam-utils.mjs +5 -0
  8. package/fesm2022/sam-senior-sam-utils.mjs +227 -0
  9. package/fesm2022/sam-senior-sam-utils.mjs.map +1 -0
  10. package/{sam-senior-sam-utils.d.ts → index.d.ts} +5 -4
  11. package/lib/has-integrated-role.model.d.ts +3 -3
  12. package/lib/sam-utils.service.d.ts +29 -26
  13. package/lib/tenant-information.d.ts +3 -3
  14. package/lib/user-roles.model.d.ts +3 -3
  15. package/lib/user.model.d.ts +16 -16
  16. package/package.json +21 -14
  17. package/public-api.d.ts +1 -1
  18. package/bundles/sam-senior-sam-utils.umd.js +0 -549
  19. package/bundles/sam-senior-sam-utils.umd.js.map +0 -1
  20. package/bundles/sam-senior-sam-utils.umd.min.js +0 -2
  21. package/bundles/sam-senior-sam-utils.umd.min.js.map +0 -1
  22. package/esm2015/lib/has-integrated-role.model.js +0 -13
  23. package/esm2015/lib/sam-utils.service.js +0 -351
  24. package/esm2015/lib/tenant-information.js +0 -13
  25. package/esm2015/lib/user-roles.model.js +0 -11
  26. package/esm2015/lib/user.model.js +0 -39
  27. package/esm2015/public-api.js +0 -9
  28. package/esm2015/sam-senior-sam-utils.js +0 -9
  29. package/esm5/lib/has-integrated-role.model.js +0 -13
  30. package/esm5/lib/sam-utils.service.js +0 -435
  31. package/esm5/lib/tenant-information.js +0 -13
  32. package/esm5/lib/user-roles.model.js +0 -15
  33. package/esm5/lib/user.model.js +0 -39
  34. package/esm5/public-api.js +0 -9
  35. package/esm5/sam-senior-sam-utils.js +0 -9
  36. package/fesm2015/sam-senior-sam-utils.js +0 -351
  37. package/fesm2015/sam-senior-sam-utils.js.map +0 -1
  38. package/fesm5/sam-senior-sam-utils.js +0 -434
  39. package/fesm5/sam-senior-sam-utils.js.map +0 -1
  40. package/sam-senior-sam-utils.metadata.json +0 -1
@@ -1,351 +0,0 @@
1
- import { __awaiter } from 'tslib';
2
- import { Injectable, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
3
- import { Observable } from 'rxjs';
4
- import { HttpClient, HttpHeaders } from '@angular/common/http';
5
-
6
- /**
7
- * @fileoverview added by tsickle
8
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
9
- */
10
- class SamUtilsService {
11
- /**
12
- * @param {?} httpClient
13
- */
14
- constructor(httpClient) {
15
- this.httpClient = httpClient;
16
- }
17
- /**
18
- * @param {?} urlParts
19
- * @return {?}
20
- */
21
- getUrlWithoutIds(urlParts) {
22
- return urlParts.map((/**
23
- * @param {?} urlPart
24
- * @return {?}
25
- */
26
- urlPart => {
27
- /** @type {?} */
28
- let url = urlPart;
29
- try {
30
- /** @type {?} */
31
- const id = (/** @type {?} */ (parseFloat(urlPart)));
32
- if (id > 0 || id === 'new') {
33
- url = '{id}';
34
- }
35
- }
36
- catch (_) {
37
- url = urlPart;
38
- }
39
- return url;
40
- })).join('/');
41
- }
42
- /**
43
- * @param {?} product
44
- * @return {?}
45
- */
46
- setUserProperties(product) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- /** @type {?} */
49
- const user = yield this.getActiveUser().toPromise();
50
- gtag('set', 'user_properties', {
51
- product_g7: product,
52
- tenant: user.tenantName,
53
- username: user.username
54
- });
55
- });
56
- }
57
- /**
58
- * @param {?} page
59
- * @param {?} product
60
- * @return {?}
61
- */
62
- pageLoading(page, product) {
63
- if (!SamUtilsService.HAS_LOADED && window.performance) {
64
- SamUtilsService.HAS_LOADED = true;
65
- /** @type {?} */
66
- const timeSincePageLoad = Math.round(performance.now());
67
- this.sendToAnalytics('tempo_carregamento_tela', {
68
- time_value: (timeSincePageLoad / 1000),
69
- page: page
70
- }, product).then();
71
- }
72
- }
73
- /**
74
- * @return {?}
75
- */
76
- getBaseURL() {
77
- try {
78
- /** @type {?} */
79
- const cookie = document.cookie.split(';').filter((/**
80
- * @param {?} cookieStr
81
- * @return {?}
82
- */
83
- cookieStr => {
84
- return cookieStr.includes('com.senior.base.url');
85
- }));
86
- return decodeURIComponent(cookie[0].split('=')[1]).slice(0, -1);
87
- }
88
- catch (err) {
89
- throw Error('Platform G7 not configured in this app');
90
- }
91
- }
92
- /**
93
- * @param {?} eventName
94
- * @param {?} params
95
- * @param {?=} product
96
- * @return {?}
97
- */
98
- sendToAnalytics(eventName, params, product) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- /** @type {?} */
101
- const user = yield this.getActiveUser().toPromise();
102
- gtag('event', eventName, Object.assign(Object.assign({}, params), { environment: this.getBaseURL(), user: user.username, tentant: user.tenantName, product: product ? product : params.product, debug_mode: true }));
103
- });
104
- }
105
- /**
106
- * @template T
107
- * @param {?} value
108
- * @return {?}
109
- */
110
- createObservableWithValue(value) {
111
- return new Observable((/**
112
- * @param {?} observer
113
- * @return {?}
114
- */
115
- observer => {
116
- observer.next(value);
117
- observer.complete();
118
- }));
119
- }
120
- /* tslint:disable */
121
- /**
122
- * @return {?}
123
- */
124
- getBrowser() {
125
- if ((!!window['opr'] && !!window['opr'].addons) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0) { // Opera 8.0+
126
- return 'Opera';
127
- }
128
- else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+
129
- return 'Firefox';
130
- }
131
- else if (/constructor/i.test((/** @type {?} */ (window['HTMLElement']))) || ((/**
132
- * @param {?} p
133
- * @return {?}
134
- */
135
- function (p) { return p.toString() === "[object SafariRemoteNotification]"; }))(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))) { // Safari 3.0+ "[object HTMLElementConstructor]"
136
- return 'Safari';
137
- }
138
- else if ( /*@cc_on!@*/!!document['documentMode']) { // Internet Explorer 6-11
139
- return 'Internet Explorer';
140
- }
141
- else if (!( /*@cc_on!@*/!!document['documentMode']) && !!window['StyleMedia']) { //Edge 20+
142
- return 'Edge';
143
- }
144
- else if (!!window['chrome']) { // Chrome 1+
145
- return 'Chrome';
146
- }
147
- return 'unknown';
148
- }
149
- /* tslint:enable */
150
- /**
151
- * @return {?}
152
- */
153
- getG7BridgeURL() {
154
- try {
155
- /** @type {?} */
156
- const dt = document.cookie.split(';').filter((/**
157
- * @param {?} cookieStr
158
- * @return {?}
159
- */
160
- cookieStr => {
161
- return cookieStr.includes('com.senior.services.url');
162
- }));
163
- return decodeURIComponent(dt[0].split('=')[1]).slice(0, -1);
164
- }
165
- catch (err) {
166
- throw Error('Platform G7 not configured in this app');
167
- }
168
- }
169
- /**
170
- * @return {?}
171
- */
172
- getActiveUser() {
173
- return this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {
174
- headers: this.getHeaders()
175
- });
176
- }
177
- /**
178
- * @param {?} user
179
- * @return {?}
180
- */
181
- getRolesByActiveUser(user) {
182
- return this.httpClient.get(`${this.getG7BridgeURL()}/rest/platform/authorization/queries/getUserRoles?user=${user}`, {
183
- headers: this.getHeaders()
184
- });
185
- }
186
- /**
187
- * @param {?} schemaName
188
- * @return {?}
189
- */
190
- getTenatInformation(schemaName) {
191
- return this.httpClient.get(`${this.getG7BridgeURL()}/rest/sam/administration/queries/getErpCode`, {
192
- params: {
193
- schemaName: schemaName
194
- },
195
- headers: this.getHeaders()
196
- });
197
- }
198
- /**
199
- * @return {?}
200
- */
201
- hasIntegratedRole() {
202
- return this.httpClient.get(`${this.getG7BridgeURL()}/rest/sam/application/queries/hasIntegratedRole`, {
203
- headers: this.getHeaders()
204
- });
205
- }
206
- /**
207
- * @private
208
- * @return {?}
209
- */
210
- getHeaders() {
211
- /** @type {?} */
212
- const token = this.getG7Token();
213
- return new HttpHeaders().set('Authorization', `${token.token_type} ${token.access_token}`);
214
- }
215
- /**
216
- * @return {?}
217
- */
218
- getG7Token() {
219
- try {
220
- /** @type {?} */
221
- const seniorToken = document.cookie.split(';').filter((/**
222
- * @param {?} cookieStr
223
- * @return {?}
224
- */
225
- cookieStr => {
226
- return cookieStr.includes('com.senior.token');
227
- }));
228
- return JSON.parse(decodeURIComponent(seniorToken[0].split('=')[1]));
229
- }
230
- catch (err) {
231
- throw Error('Platform G7 not configured in this app');
232
- }
233
- }
234
- /**
235
- * @param {?} tracksaleKey
236
- * @param {?} tracksaleCampaign
237
- * @param {?} pageUrl
238
- * @return {?}
239
- */
240
- trackSale(tracksaleKey, tracksaleCampaign, pageUrl) {
241
- return __awaiter(this, void 0, void 0, function* () {
242
- if (!((/** @type {?} */ (window))).show_tacksale) {
243
- return;
244
- }
245
- /** @type {?} */
246
- const userInformation = yield this.getActiveUser().toPromise();
247
- /** @type {?} */
248
- let roles = '';
249
- if (((/** @type {?} */ (window))).can_capture_role) {
250
- /** @type {?} */
251
- const role = yield this.getRolesByActiveUser(userInformation.username).toPromise();
252
- roles = role.roles.join(', ');
253
- }
254
- /** @type {?} */
255
- const hasIntegratedRole = yield this.hasIntegratedRole().toPromise();
256
- /** @type {?} */
257
- const tenantInformation = yield this.getTenatInformation(userInformation.tenantName).toPromise();
258
- /** @type {?} */
259
- const browser = this.getBrowser();
260
- /** @type {?} */
261
- const fullname = userInformation.fullName.replace('+', ' ');
262
- /** @type {?} */
263
- const email = userInformation.email;
264
- ((/**
265
- * @param {?} f
266
- * @param {?} b
267
- * @param {?} g
268
- * @return {?}
269
- */
270
- function (f, b, g) {
271
- /** @type {?} */
272
- const a = {
273
- key: tracksaleKey,
274
- campaign: tracksaleCampaign,
275
- name: fullname,
276
- email: email,
277
- tags: {
278
- 'tenant': userInformation.tenantName,
279
- 'papel': roles,
280
- 'device': browser,
281
- 'uf': '',
282
- 'SAM': !hasIntegratedRole.hasIntegratedRole,
283
- 'GAS': hasIntegratedRole.hasIntegratedRole,
284
- 'GestaoIncidentes': '',
285
- 'Cameras': '',
286
- 'PortariaVirtual': '',
287
- 'Autoatendimento': '',
288
- 'pagina': pageUrl,
289
- 'ID ERP': tenantInformation.erpCode
290
- }
291
- };
292
- // Seguindo o exemplo da arquitera.
293
- // Fonte não será alterado nesta task;
294
- /** @type {?} */
295
- let e;
296
- /** @type {?} */
297
- const c = f.getElementsByTagName(b)[0];
298
- if (f.getElementById(g)) {
299
- return;
300
- }
301
- e = f.createElement(b);
302
- e.id = g;
303
- e.src = 'https://cdn.tracksale.co/tracksale-js/tracksale.js';
304
- e.type = 'text/javascript';
305
- e.async = true;
306
- e.onload = e.onreadystatechange = (/**
307
- * @return {?}
308
- */
309
- function () {
310
- /** @type {?} */
311
- const h = this.readyState;
312
- if (h && h !== 'complete' && h !== 'loaded') {
313
- return;
314
- }
315
- try {
316
- /** @type {?} */
317
- const d = new Tracksale();
318
- d.init(a);
319
- }
320
- catch (i) { }
321
- });
322
- c.parentNode.insertBefore(e, c);
323
- })(document, 'script', 'tracksale-js'));
324
- });
325
- }
326
- }
327
- SamUtilsService.HAS_LOADED = false;
328
- SamUtilsService.decorators = [
329
- { type: Injectable, args: [{
330
- providedIn: 'root'
331
- },] }
332
- ];
333
- /** @nocollapse */
334
- SamUtilsService.ctorParameters = () => [
335
- { type: HttpClient }
336
- ];
337
- /** @nocollapse */ SamUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function SamUtilsService_Factory() { return new SamUtilsService(ɵɵinject(HttpClient)); }, token: SamUtilsService, providedIn: "root" });
338
-
339
- /**
340
- * @fileoverview added by tsickle
341
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
342
- */
343
-
344
- /**
345
- * @fileoverview added by tsickle
346
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
347
- */
348
-
349
- export { SamUtilsService };
350
-
351
- //# sourceMappingURL=sam-senior-sam-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sam-senior-sam-utils.js.map","sources":["ng://@sam-senior/sam-utils/lib/sam-utils.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { User } from './user.model';\r\nimport { UserRoles } from './user-roles.model';\r\nimport { HasIntegratedRoleModel } from './has-integrated-role.model';\r\nimport { TenantInformation } from './tenant-information';\r\n\r\ndeclare const InstallTrigger: any;\r\ndeclare const safari: any;\r\ndeclare const Tracksale: any;\r\ndeclare let gtag: Function;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamUtilsService {\r\n\r\n private static HAS_LOADED = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n\r\n public getUrlWithoutIds(urlParts) {\r\n return urlParts.map(urlPart => {\r\n let url = urlPart;\r\n try {\r\n const id = parseFloat(urlPart) as any;\r\n if (id > 0 || id === 'new') {\r\n url = '{id}';\r\n }\r\n } catch (_) {\r\n url = urlPart;\r\n }\r\n return url;\r\n }).join('/');\r\n }\r\n\r\n public async setUserProperties(product: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('set', 'user_properties', {\r\n product_g7: product,\r\n tenant: user.tenantName,\r\n username: user.username\r\n });\r\n }\r\n\r\n public pageLoading(page: string, product: string) {\r\n if (!SamUtilsService.HAS_LOADED && window.performance) {\r\n SamUtilsService.HAS_LOADED = true;\r\n const timeSincePageLoad = Math.round(performance.now());\r\n this.sendToAnalytics('tempo_carregamento_tela', {\r\n time_value: (timeSincePageLoad / 1000),\r\n page: page\r\n }, product).then();\r\n }\r\n }\r\n\r\n public getBaseURL() {\r\n try {\r\n const cookie = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.base.url');\r\n });\r\n return decodeURIComponent(\r\n cookie[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async sendToAnalytics(eventName: string, params: any, product?: string) {\r\n const user = await this.getActiveUser().toPromise();\r\n gtag('event', eventName, {\r\n ...params,\r\n environment: this.getBaseURL(),\r\n user: user.username,\r\n tentant: user.tenantName,\r\n product: product ? product : params.product,\r\n debug_mode: true\r\n });\r\n }\r\n\r\n public createObservableWithValue<T>(value) {\r\n return new Observable<T>(observer => {\r\n observer.next(value);\r\n observer.complete();\r\n });\r\n }\r\n\r\n /* tslint:disable */\r\n public getBrowser(): string {\r\n if ((!!window['opr'] && !!window['opr'].addons) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0) { // Opera 8.0+\r\n return 'Opera';\r\n } else if (typeof InstallTrigger !== 'undefined') { // Firefox 1.0+\r\n return 'Firefox';\r\n } else if (/constructor/i.test(window['HTMLElement'] as any) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))) { // Safari 3.0+ \"[object HTMLElementConstructor]\"\r\n return 'Safari';\r\n } else if (/*@cc_on!@*/false || !!document['documentMode']) { // Internet Explorer 6-11\r\n return 'Internet Explorer';\r\n } else if (!(/*@cc_on!@*/false || !!document['documentMode']) && !!window['StyleMedia']) { //Edge 20+\r\n return 'Edge';\r\n } else if (!!window['chrome']) {// Chrome 1+\r\n return 'Chrome';\r\n }\r\n return 'unknown';\r\n }\r\n /* tslint:enable */\r\n\r\n public getG7BridgeURL() {\r\n try {\r\n const dt = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.services.url');\r\n });\r\n return decodeURIComponent(\r\n dt[0].split('=')[1]\r\n ).slice(0, -1);\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public getActiveUser() {\r\n return this.httpClient.get<User>(`${this.getG7BridgeURL()}/rest/platform/user/queries/getUser`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public getRolesByActiveUser(user) {\r\n return this.httpClient.get<UserRoles>(`${this.getG7BridgeURL()}/rest/platform/authorization/queries/getUserRoles?user=${user}`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public getTenatInformation(schemaName: string) {\r\n return this.httpClient.get<TenantInformation>(`${this.getG7BridgeURL()}/rest/sam/administration/queries/getErpCode`, {\r\n params: {\r\n schemaName: schemaName\r\n },\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public hasIntegratedRole() {\r\n return this.httpClient.get<HasIntegratedRoleModel>(`${this.getG7BridgeURL()}/rest/sam/application/queries/hasIntegratedRole`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n private getHeaders() {\r\n const token = this.getG7Token();\r\n return new HttpHeaders().set('Authorization', `${token.token_type} ${token.access_token}`);\r\n }\r\n\r\n public getG7Token() {\r\n try {\r\n const seniorToken = document.cookie.split(';').filter(cookieStr => {\r\n return cookieStr.includes('com.senior.token');\r\n });\r\n return JSON.parse(decodeURIComponent(seniorToken[0].split('=')[1]));\r\n } catch (err) {\r\n throw Error('Platform G7 not configured in this app');\r\n }\r\n }\r\n\r\n public async trackSale(tracksaleKey: string, tracksaleCampaign: string, pageUrl: string) {\r\n if (!(window as any).show_tacksale) {\r\n return;\r\n }\r\n\r\n const userInformation = await this.getActiveUser().toPromise();\r\n\r\n let roles = '';\r\n if ((window as any).can_capture_role) {\r\n const role = await this.getRolesByActiveUser(userInformation.username).toPromise();\r\n roles = role.roles.join(', ');\r\n }\r\n\r\n const hasIntegratedRole = await this.hasIntegratedRole().toPromise();\r\n const tenantInformation = await this.getTenatInformation(userInformation.tenantName).toPromise();\r\n const browser = this.getBrowser();\r\n const fullname = userInformation.fullName.replace('+', ' ');\r\n const email = userInformation.email;\r\n (function (f, b, g) {\r\n const a = {\r\n key: tracksaleKey,\r\n campaign: tracksaleCampaign,\r\n name: fullname,\r\n email: email,\r\n tags: {\r\n 'tenant': userInformation.tenantName,\r\n 'papel': roles,\r\n 'device': browser,\r\n 'uf': '',\r\n 'SAM': !hasIntegratedRole.hasIntegratedRole,\r\n 'GAS': hasIntegratedRole.hasIntegratedRole,\r\n 'GestaoIncidentes': '',\r\n 'Cameras': '',\r\n 'PortariaVirtual': '',\r\n 'Autoatendimento': '',\r\n 'pagina': pageUrl,\r\n 'ID ERP': tenantInformation.erpCode\r\n }\r\n };\r\n // Seguindo o exemplo da arquitera.\r\n // Fonte não será alterado nesta task;\r\n let e;\r\n const c = f.getElementsByTagName(b)[0];\r\n if (f.getElementById(g)) {\r\n return;\r\n }\r\n e = f.createElement(b);\r\n e.id = g;\r\n e.src = 'https://cdn.tracksale.co/tracksale-js/tracksale.js';\r\n e.type = 'text/javascript';\r\n e.async = true;\r\n e.onload = e.onreadystatechange = function () {\r\n const h = this.readyState;\r\n if (h && h !== 'complete' && h !== 'loaded') {\r\n return;\r\n }\r\n try {\r\n const d = new Tracksale();\r\n d.init(a);\r\n } catch (i) { }\r\n };\r\n c.parentNode.insertBefore(e, c);\r\n }(document, 'script', 'tracksale-js'));\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}