@doolehealth/service-lib 0.0.4 → 0.0.6

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 (90) hide show
  1. package/README.md +112 -13
  2. package/esm2022/lib/configuration.mjs +1 -1
  3. package/esm2022/lib/models/notifications/notification-options.mjs +192 -0
  4. package/esm2022/lib/models/shared-care-plan.mjs +223 -0
  5. package/esm2022/lib/models/user.mjs +1 -1
  6. package/esm2022/lib/service-lib.component.mjs +5 -5
  7. package/esm2022/lib/service-lib.module.mjs +4 -4
  8. package/esm2022/lib/services/analytics.service.mjs +20 -11
  9. package/esm2022/lib/services/api-endpoints.service.mjs +22 -6
  10. package/esm2022/lib/services/authentication.service.mjs +74 -52
  11. package/esm2022/lib/services/change-endpoints.service.mjs +46 -22
  12. package/esm2022/lib/services/date.service.mjs +106 -45
  13. package/esm2022/lib/services/doole.service.mjs +658 -221
  14. package/esm2022/lib/services/encryption.service.mjs +3 -3
  15. package/esm2022/lib/services/error.service.mjs +3 -3
  16. package/esm2022/lib/services/events.service.mjs +5 -5
  17. package/esm2022/lib/services/firebase/auth/firebase-auth.service.mjs +154 -0
  18. package/esm2022/lib/services/firebase/auth/firebase-profile.model.mjs +7 -0
  19. package/esm2022/lib/services/health.service.mjs +303 -0
  20. package/esm2022/lib/services/highcharts.service.mjs +37 -67
  21. package/esm2022/lib/services/http.service.mjs +14 -14
  22. package/esm2022/lib/services/language.model.mjs +3 -0
  23. package/esm2022/lib/services/language.service.mjs +6 -6
  24. package/esm2022/lib/services/loading.service.mjs +3 -3
  25. package/esm2022/lib/services/logging.service.mjs +4 -4
  26. package/esm2022/lib/services/navigation.service.mjs +108 -9
  27. package/esm2022/lib/services/network.service.mjs +7 -7
  28. package/esm2022/lib/services/notification.service.mjs +10 -96
  29. package/esm2022/lib/services/opentok.service.mjs +10 -7
  30. package/esm2022/lib/services/permission.service.mjs +94 -0
  31. package/esm2022/lib/services/roles.service.mjs +9 -8
  32. package/esm2022/lib/services/shared-care-plan/shared-care-plan.service.mjs +103 -0
  33. package/esm2022/lib/services/storage.service.mjs +3 -3
  34. package/esm2022/lib/services/token.service.mjs +7 -7
  35. package/esm2022/lib/utils/chatParameters.mjs +17 -0
  36. package/esm2022/lib/utils/data-store.mjs +62 -0
  37. package/esm2022/lib/utils/query-string-parameters.mjs +11 -0
  38. package/esm2022/lib/utils/url-builder.mjs +15 -0
  39. package/esm2022/public-api.mjs +8 -9
  40. package/fesm2022/doolehealth-service-lib.mjs +2055 -1228
  41. package/fesm2022/doolehealth-service-lib.mjs.map +1 -1
  42. package/lib/configuration.d.ts +4 -2
  43. package/lib/{util → models/notifications}/notification-options.d.ts +0 -32
  44. package/lib/models/shared-care-plan.d.ts +206 -0
  45. package/lib/models/user.d.ts +2 -0
  46. package/lib/service-lib.component.d.ts +1 -1
  47. package/lib/services/analytics.service.d.ts +6 -3
  48. package/lib/services/api-endpoints.service.d.ts +3 -0
  49. package/lib/services/authentication.service.d.ts +27 -25
  50. package/lib/services/change-endpoints.service.d.ts +1 -0
  51. package/lib/services/date.service.d.ts +15 -8
  52. package/lib/services/doole.service.d.ts +64 -23
  53. package/lib/services/{auth → firebase/auth}/firebase-auth.service.d.ts +1 -1
  54. package/lib/services/{auth → firebase/auth}/firebase-profile.model.d.ts +1 -1
  55. package/lib/services/health.service.d.ts +49 -0
  56. package/lib/services/highcharts.service.d.ts +1 -2
  57. package/lib/services/http.service.d.ts +1 -1
  58. package/lib/services/language.service.d.ts +1 -1
  59. package/lib/services/navigation.service.d.ts +6 -1
  60. package/lib/services/notification.service.d.ts +2 -7
  61. package/lib/services/permission.service.d.ts +33 -0
  62. package/lib/services/roles.service.d.ts +3 -2
  63. package/lib/services/shared-care-plan/shared-care-plan.service.d.ts +20 -0
  64. package/lib/{util → utils}/data-store.d.ts +3 -1
  65. package/package.json +2 -15
  66. package/public-api.d.ts +7 -8
  67. package/esm2022/lib/services/auth/firebase-auth.service.mjs +0 -155
  68. package/esm2022/lib/services/auth/firebase-profile.model.mjs +0 -7
  69. package/esm2022/lib/services/pusher/pusher-alarm.service.mjs +0 -39
  70. package/esm2022/lib/services/pusher/pusher-challenge-notifications.service.mjs +0 -110
  71. package/esm2022/lib/services/pusher/pusher-connection.service.mjs +0 -73
  72. package/esm2022/lib/services/pusher/pusher-message.service.mjs +0 -27
  73. package/esm2022/lib/services/pusher/pusher-notification.service.mjs +0 -116
  74. package/esm2022/lib/util/chatParameters.mjs +0 -17
  75. package/esm2022/lib/util/data-store.mjs +0 -54
  76. package/esm2022/lib/util/environment.mjs +0 -29
  77. package/esm2022/lib/util/language.model.mjs +0 -3
  78. package/esm2022/lib/util/notification-options.mjs +0 -245
  79. package/esm2022/lib/util/query-string-parameters.mjs +0 -11
  80. package/esm2022/lib/util/url-builder.mjs +0 -15
  81. package/lib/services/pusher/pusher-alarm.service.d.ts +0 -16
  82. package/lib/services/pusher/pusher-challenge-notifications.service.d.ts +0 -40
  83. package/lib/services/pusher/pusher-connection.service.d.ts +0 -24
  84. package/lib/services/pusher/pusher-message.service.d.ts +0 -13
  85. package/lib/services/pusher/pusher-notification.service.d.ts +0 -32
  86. package/lib/util/environment.d.ts +0 -18
  87. /package/lib/{util → services}/language.model.d.ts +0 -0
  88. /package/lib/{util → utils}/chatParameters.d.ts +0 -0
  89. /package/lib/{util → utils}/query-string-parameters.d.ts +0 -0
  90. /package/lib/{util → utils}/url-builder.d.ts +0 -0
package/README.md CHANGED
@@ -1,24 +1,123 @@
1
- # ServiceLib
1
+ # Guía para Compilar y Publicar la Librería `service-lib`
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
3
+ ## Introducción
4
+ Este documento detalla el proceso para compilar y publicar la librería interna `service-lib` de manera eficiente y organizada. Sigue estos pasos para garantizar que el paquete cumpla con los estándares de la empresa.
4
5
 
5
- ## Code scaffolding
6
+ ---
6
7
 
7
- Run `ng generate component component-name --project service-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project service-lib`.
8
- > Note: Don't forget to add `--project service-lib` or else it will be added to the default project in your `angular.json` file.
8
+ ## 1. Compilar la Librería
9
9
 
10
- ## Build
10
+ ### Paso 1: Verificar la Configuración
11
+ Antes de comenzar, asegúrate de que el archivo `package.json` de tu librería tenga el formato correcto en el campo `name`:
11
12
 
12
- Run `ng build service-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+ ```json
14
+ {
15
+ "name": "@doolehealth/service-lib",
16
+ "version": "x.x.x", // Asegúrate de usar el formato correcto de versionado semántico
17
+ ...
18
+ }
19
+ ```
13
20
 
14
- ## Publishing
21
+ ### Paso 2: Ejecutar el Comando de Build
15
22
 
16
- After building your library with `ng build service-lib`, go to the dist folder `cd dist/service-lib` and run `npm publish`.
23
+ Para compilar la librería, utiliza el comando:
17
24
 
18
- ## Running unit tests
25
+ ```bash
26
+ ng build service-lib
27
+ ```
28
+ Esto generará un directorio `dist/service-lib` donde se encontrará la versión compilada de la librería.
19
29
 
20
- Run `ng test service-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
30
+ ---
21
31
 
22
- ## Further help
32
+ ## 2. Publicar la Librería en NPM
33
+
34
+ ### Paso 1: Verificar el Package Ready para Publicar
35
+
36
+ 1. Ve al directorio generado al compilar la librería:
37
+
38
+ ```bash
39
+ cd dist/service-lib
40
+ ```
41
+
42
+ 2. Asegúrate de que el archivo `package.json` tenga el nombre correcto, siguiendo el formato:
43
+
44
+ ```json
45
+ {
46
+ "name": "@doolehealth/service-lib",
47
+ "version": "x.x.x",
48
+ "main": "index.js",
49
+ ...
50
+ }
51
+ ```
52
+
53
+ ### Paso 2: Autenticarse en NPM
54
+ Si no estás autenticado en tu cuenta de NPM, ejecuta:
55
+
56
+ ```bash
57
+ npm login
58
+ ```
59
+ Esto te pedirá:
60
+ - Tu usuario de NPM.
61
+ - Contraseña.
62
+ - Correo electrónico asociado.
63
+
64
+ ### Paso 3: Publicar en NPM
65
+
66
+ Desde el directorio `dist/service-lib`, ejecuta:
67
+
68
+ ```bash
69
+ npm publish
70
+ ```
71
+
72
+ **Nota:** Asegúrate de que la versión de la librería no sea repetida. Si intentas publicar con una versión existente, NPM rechazará la publicación.
73
+
74
+ Si es necesario, actualiza la versión en el `package.json` antes de publicar. Por ejemplo, incrementa la versión en el formato **semántico** (major.minor.patch):
75
+
76
+ ```json
77
+ "version": "1.0.1"
78
+ ```
79
+
80
+ ### Paso 4: Confirmar la Publicación
81
+
82
+ Una vez publicada, puedes verificar que la librería esté disponible ejecutando:
83
+
84
+ ```bash
85
+ npm view @doolehealth/service-lib
86
+ ```
87
+ Esto mostrará información de la versión publicada y otros detalles.
88
+
89
+ ---
90
+
91
+ ## 3. Notas Importantes
92
+
93
+ 1. **Verificar Dependencias**: Antes de compilar y publicar, asegúrate de que todas las dependencias necesarias estén correctamente instaladas.
94
+ 2. **Evitar Versiones Duplicadas**: Cada nueva versión publicada debe tener un número único. Utiliza versionado semántico para mantener el control.
95
+ 3. **Publicación Interna**: Este proceso es para publicar librerías internas de la empresa y no deben ser accesibles al público general.
96
+
97
+ ---
98
+
99
+ ## Resumen de Comandos
100
+
101
+ 1. Compilar la librería:
102
+
103
+ ```bash
104
+ ng build service-lib
105
+ ```
106
+
107
+ 2. Acceder al directorio compilado:
108
+
109
+ ```bash
110
+ cd dist/service-lib
111
+ ```
112
+
113
+ 3. Publicar en NPM:
114
+
115
+ ```bash
116
+ npm publish
117
+ ```
118
+
119
+ ---
120
+
121
+ **ATENCIÓN:**
122
+ - La configuración del `name` en el `package.json` debe seguir el formato `@doolehealth/nombrelibreria`.
23
123
 
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
2
2
  export const CONFIGURACION_TOKEN = new InjectionToken('configuracion');
3
3
  export const PUSHERS_CONFIG_TOKEN = new InjectionToken('pushers.config');
4
4
  export const FIREBASE_CONFIG_TOKEN = new InjectionToken('environment');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBa0QvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWdCLGdCQUFnQixDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYWNpb24ge1xuICBMSVNUX0VOUE9JTlQ6IEFycmF5PGFueT47XG4gIElOREVYOiBudW1iZXI7XG4gIEFQSV9ET09MRV9FTkRQT0lOVCA6IHN0cmluZztcbiAgRE9PTEVfRU5EUE9JTlQ6IHN0cmluZztcbiAgQVBJX0VORFBPSU5UX0RFVjogc3RyaW5nO1xuICBFTkRQT0lOVF9ERVY6IHN0cmluZztcbiAgYXBwbGVBcHBJZDogc3RyaW5nO1xuICBhbmRyb2lkQnVuZGxlSWQ6IHN0cmluZztcbiAgVklERU9DQUxMX1VSTDogc3RyaW5nO1xuICBQUklNQVJZX0NPTE9SOiBzdHJpbmc7XG4gIGdvb2dsZUZpdFBhY2thZ2VJRCA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXNoZXJzQ29uZmlnIHtcbiAgUFVTSEVSX0tFWV9QUk86IFB1c2hlcktleTtcbiAgUFVTSEVSX0tFWV9ERVY6IFB1c2hlcktleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXNoZXJLZXl7IFxuICBhcHBfaWQ6IHN0cmluZywgXG4gIGtleTogc3RyaW5nLCBcbiAgc2VjcmV0OiBzdHJpbmcsIFxuICBjbHVzdGVyOiBzdHJpbmcsIFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50eyBcbiAgcHJvZHVjdGlvbjogYm9vbGVhbiwgXG4gIGFwcFNoZWxsQ29uZmlnOiBBcHBTaGVsbENvbmZpZywgXG4gIGZpcmViYXNlOiBGaXJlYmFzZSwgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwU2hlbGxDb25maWd7IFxuICBkZWJ1ZzogYm9vbGVhbiwgXG4gIG5ldHdvcmtEZWxheTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2V7IFxuICBhcGlLZXk6IHN0cmluZywgXG4gIGF1dGhEb21haW46IHN0cmluZywgXG4gIGRhdGFiYXNlVVJMOiBzdHJpbmcsIFxuICBwcm9qZWN0SWQ6IHN0cmluZywgXG4gIHN0b3JhZ2VCdWNrZXQ6IHN0cmluZywgXG4gIG1lc3NhZ2luZ1NlbmRlcklkOiBzdHJpbmcsIFxuICBhcHBJZDogc3RyaW5nLCBcbiAgbWVhc3VyZW1lbnRJZDogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCBDT05GSUdVUkFDSU9OX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbmZpZ3VyYWNpb24+KCdjb25maWd1cmFjaW9uJyk7XG5leHBvcnQgY29uc3QgUFVTSEVSU19DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UHVzaGVyc0NvbmZpZz4oJ3B1c2hlcnMuY29uZmlnJyk7XG5leHBvcnQgY29uc3QgRklSRUJBU0VfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEVudmlyb25tZW50PignZW52aXJvbm1lbnQnKTsiXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0QvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWdCLGdCQUFnQixDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYWNpb24ge1xuICBMSVNUX0VOUE9JTlQ6IEFycmF5PGFueT47XG4gIElOREVYOiBudW1iZXI7XG4gIEFQSV9QUk9EX0VORFBPSU5UOnN0cmluZztcbiAgUFJPRF9FTkRQT0lOVDpzdHJpbmc7XG4gIEFQSV9QUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBQUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBBUElfRU5EUE9JTlRfREVWOiBzdHJpbmc7XG4gIEVORFBPSU5UX0RFVjogc3RyaW5nO1xuICBhcHBsZUFwcElkOiBzdHJpbmc7XG4gIGFuZHJvaWRCdW5kbGVJZDogc3RyaW5nO1xuICBWSURFT0NBTExfVVJMOiBzdHJpbmc7XG4gIFBSSU1BUllfQ09MT1I6IHN0cmluZztcbiAgZ29vZ2xlRml0UGFja2FnZUlEIDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcnNDb25maWcge1xuICBQVVNIRVJfS0VZX1BSTzogUHVzaGVyS2V5O1xuICBQVVNIRVJfS0VZX0RFVjogUHVzaGVyS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcktleXsgXG4gIGFwcF9pZDogc3RyaW5nLCBcbiAga2V5OiBzdHJpbmcsIFxuICBzZWNyZXQ6IHN0cmluZywgXG4gIGNsdXN0ZXI6IHN0cmluZywgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnR7IFxuICBwcm9kdWN0aW9uOiBib29sZWFuLCBcbiAgYXBwU2hlbGxDb25maWc6IEFwcFNoZWxsQ29uZmlnLCBcbiAgZmlyZWJhc2U6IEZpcmViYXNlLCBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTaGVsbENvbmZpZ3sgXG4gIGRlYnVnOiBib29sZWFuLCBcbiAgbmV0d29ya0RlbGF5OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZXsgXG4gIGFwaUtleTogc3RyaW5nLCBcbiAgYXV0aERvbWFpbjogc3RyaW5nLCBcbiAgZGF0YWJhc2VVUkw6IHN0cmluZywgXG4gIHByb2plY3RJZDogc3RyaW5nLCBcbiAgc3RvcmFnZUJ1Y2tldDogc3RyaW5nLCBcbiAgbWVzc2FnaW5nU2VuZGVySWQ6IHN0cmluZywgXG4gIGFwcElkOiBzdHJpbmcsIFxuICBtZWFzdXJlbWVudElkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IENPTkZJR1VSQUNJT05fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlndXJhY2lvbj4oJ2NvbmZpZ3VyYWNpb24nKTtcbmV4cG9ydCBjb25zdCBQVVNIRVJTX0NPTkZJR19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQdXNoZXJzQ29uZmlnPigncHVzaGVycy5jb25maWcnKTtcbmV4cG9ydCBjb25zdCBGSVJFQkFTRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnQ+KCdlbnZpcm9ubWVudCcpOyJdfQ==
@@ -0,0 +1,192 @@
1
+ export var NotificationsType;
2
+ (function (NotificationsType) {
3
+ NotificationsType["ADVICES"] = "advices";
4
+ NotificationsType["AGENDA"] = "agenda";
5
+ NotificationsType["COMMUNICATIONS"] = "communications";
6
+ NotificationsType["DIETS"] = "diets";
7
+ NotificationsType["EXERCISES"] = "exercises";
8
+ NotificationsType["FORMS"] = "forms";
9
+ NotificationsType["GAMES"] = "games";
10
+ NotificationsType["GOALS"] = "goals";
11
+ NotificationsType["MEDICATIONS"] = "medication_plans";
12
+ NotificationsType["MESSAGES"] = "messages";
13
+ NotificationsType["NEWS"] = "news";
14
+ NotificationsType["OFFERS"] = "offers";
15
+ NotificationsType["PROMOTE_CONTENT"] = "promote-content";
16
+ NotificationsType["PROCEDURES"] = "medical_procedures";
17
+ NotificationsType["REMINDERS"] = "reminder";
18
+ //Shared care plan
19
+ NotificationsType["MONITORING"] = "monitoring";
20
+ NotificationsType["INFORMED_CONSENT"] = "informed_consent";
21
+ NotificationsType["LIFE_STILE_HABITS"] = "life_style_habits";
22
+ NotificationsType["SHARED_CARE_PLAN"] = "shared_care_plan";
23
+ NotificationsType["AddButtonMedicalTest"] = "add_document";
24
+ NotificationsType["TESTIMONIALS"] = "testimonials";
25
+ NotificationsType["AddButtonTodayDrug"] = "drugs-detail";
26
+ NotificationsType["AddButtonHealthCharts"] = "activity-goal";
27
+ })(NotificationsType || (NotificationsType = {}));
28
+ export var NotificationsTypeBO;
29
+ (function (NotificationsTypeBO) {
30
+ NotificationsTypeBO["ADVICES"] = "App\\Advice";
31
+ NotificationsTypeBO["AGENDA"] = "App\\Agenda";
32
+ NotificationsTypeBO["CHALLENGE_LEVEL"] = "App\\LevelAccomplishment";
33
+ NotificationsTypeBO["DIAGNOSTIC_TEST"] = "App\\DiagnosticTest";
34
+ NotificationsTypeBO["DIETS"] = "App\\Diet";
35
+ NotificationsTypeBO["DRUG"] = "App\\DrugIntake";
36
+ NotificationsTypeBO["EXERCISES"] = "App\\Exercise";
37
+ NotificationsTypeBO["FORMS"] = "App\\FormAnswer";
38
+ NotificationsTypeBO["GAMES"] = "App\\Game";
39
+ NotificationsTypeBO["GAME_PLAY"] = "App\\GamePlay";
40
+ //GOALS = "App\\Goalable",
41
+ NotificationsTypeBO["MEDICAL_PROCEDURE"] = "App\\MedicalProcedure";
42
+ NotificationsTypeBO["MEDICATIONS"] = "App\\MedicationPlan";
43
+ NotificationsTypeBO["MESSAGES"] = "App\\Message";
44
+ NotificationsTypeBO["NEWS"] = "App\\News";
45
+ NotificationsTypeBO["PROGRAMABLE_PLAY"] = "App\\ProgramablePlay";
46
+ NotificationsTypeBO["REMINDERS"] = "App\\Reminder";
47
+ NotificationsTypeBO["REMINDERS_EXECUTION"] = "App\\ReminderExecution";
48
+ NotificationsTypeBO["SHARED_CARE_PLAN"] = "App\\ShareCarePlan";
49
+ })(NotificationsTypeBO || (NotificationsTypeBO = {}));
50
+ export var NOTIFICATIONS_TYPE_BO;
51
+ (function (NOTIFICATIONS_TYPE_BO) {
52
+ NOTIFICATIONS_TYPE_BO["AGENDA"] = "App\\Notifications\\AgendaCreated";
53
+ NOTIFICATIONS_TYPE_BO["APPOINTMENTS_VISIT"] = "App\\Notifications\\VisitOnlineNotification";
54
+ NOTIFICATIONS_TYPE_BO["ADVICES"] = "App\\Notifications\\AdviceCreated";
55
+ NOTIFICATIONS_TYPE_BO["CHALLENGE_LEVEL"] = "App\\Notifications\\LevelAccomplishmentCompletedNotification";
56
+ NOTIFICATIONS_TYPE_BO["DIETS"] = "App\\Notifications\\DietCreated";
57
+ NOTIFICATIONS_TYPE_BO["DRUG"] = "App\\Notifications\\DrugIntakeTime";
58
+ NOTIFICATIONS_TYPE_BO["EXERCISES"] = "App\\Notifications\\ExerciseCreated";
59
+ NOTIFICATIONS_TYPE_BO["EXERCISES_PLAY"] = "App\\Notifications\\ExercisePlaySchedule";
60
+ NOTIFICATIONS_TYPE_BO["FORMS"] = "App\\Notifications\\FormAnswerSchedule";
61
+ NOTIFICATIONS_TYPE_BO["GAMES"] = "App\\Notifications\\GamePlaySchedule";
62
+ NOTIFICATIONS_TYPE_BO["MESSAGES"] = "App\\Notifications\\MessageNotification";
63
+ NOTIFICATIONS_TYPE_BO["NEWS"] = "App\\Notifications\\NewsNotification";
64
+ NOTIFICATIONS_TYPE_BO["REMINDERS"] = "App\\Notifications\\ReminderTime";
65
+ NOTIFICATIONS_TYPE_BO["SHARED_CARE_PLAN"] = "App\\Notifications\\SharedCarePlanAddContentNotification";
66
+ // MEDICATIONS = "",
67
+ // GOALS = "",
68
+ // MEDICAL_PROCEDURE = "",
69
+ // DIAGNOSTIC_TEST = "",
70
+ // PROGRAMABLE_PLAY = "",
71
+ })(NOTIFICATIONS_TYPE_BO || (NOTIFICATIONS_TYPE_BO = {}));
72
+ export var NotificationsTypeColor;
73
+ (function (NotificationsTypeColor) {
74
+ NotificationsTypeColor["ADVICES"] = "#2356f9";
75
+ NotificationsTypeColor["AGENDA"] = "#6950ce";
76
+ NotificationsTypeColor["CHALLENGE_LEVEL"] = "#BDC3C7";
77
+ NotificationsTypeColor["DIAGNOSTIC_TEST"] = "#1A8E92";
78
+ NotificationsTypeColor["DIETS"] = "#E67E22";
79
+ NotificationsTypeColor["DRUG"] = "#5AC445";
80
+ NotificationsTypeColor["EXERCISES"] = "#f53d3d";
81
+ NotificationsTypeColor["FORMS"] = "#2356f9";
82
+ NotificationsTypeColor["GAMES"] = "#9B59B6";
83
+ NotificationsTypeColor["GAME_PLAY"] = "#9B59B6";
84
+ //GOALS = '#1A8E92',
85
+ NotificationsTypeColor["MEDICAL_PROCEDURE"] = "#EC7579";
86
+ NotificationsTypeColor["MEDICATIONS"] = "#25CAD0";
87
+ NotificationsTypeColor["MESSAGES"] = "#25CAD0";
88
+ NotificationsTypeColor["NEWS"] = "#2356f9";
89
+ NotificationsTypeColor["PROGRAMABLE_PLAY"] = "#7F8C8D";
90
+ NotificationsTypeColor["REMINDERS"] = "#6950ce";
91
+ NotificationsTypeColor["REMINDERS_EXECUTION"] = "#6950ce";
92
+ NotificationsTypeColor["SHARED_CARE_PLAN"] = "#BA0186";
93
+ })(NotificationsTypeColor || (NotificationsTypeColor = {}));
94
+ export class NotificationOptions {
95
+ constructor() {
96
+ this.agenda = { type: NotificationsType.AGENDA, mail: 'agendaNotificationMail', app: 'agendaNotificationApp', old: null };
97
+ this.reminder = { type: NotificationsType.REMINDERS, mail: 'reminderNotificationMail', app: 'reminderNotificationApp', old: null };
98
+ this.diets = { type: NotificationsType.DIETS, mail: 'dietsNotificationMail', app: 'dietsNotificationApp', old: 'dietsNotificaton' };
99
+ this.medication = { type: NotificationsType.MEDICATIONS, mail: ['drugIntakeNotificationMail', 'medicationPlanExpiredNotificationEmail'], app: ['drugIntakeNotificationApp', 'medicationPlanExpiredNotificationApp'], old: null };
100
+ this.goals = { type: NotificationsType.GOALS, mail: 'goalsNotificationMail', app: 'goalsNotificationApp', old: 'goalsNotificaton' };
101
+ this.advices = { type: NotificationsType.ADVICES, mail: 'advicesNotificationMail', app: 'advicesNotificationApp', old: 'advicesNotificaton' };
102
+ this.forms = { type: NotificationsType.FORMS, mail: 'formNotificationMail', app: 'formNotificationApp', old: 'formNotificaton' };
103
+ this.messages = { type: NotificationsType.MESSAGES, mail: 'messagesNotificationMail', app: 'messagesNotificationApp', old: 'messagesNotificaton' };
104
+ this.news = { type: NotificationsType.NEWS, mail: 'newsNotificationMail', app: 'newsNotificationApp', old: null };
105
+ this.games = { type: NotificationsType.GAMES, mail: 'gamePlayNotificationMail', app: 'gamePlayNotificationApp', old: null };
106
+ this.exercises = { type: NotificationsType.EXERCISES, mail: 'exercisePlayNotificationMail', app: 'exercisePlayNotificationApp', old: null };
107
+ this.list_options = [];
108
+ //Aqui se añaden todas las notificaciones que queremos que aparezca en setting.page
109
+ this.options = [this.agenda, this.reminder, this.diets, this.medication, this.goals, this.advices, this.forms, this.messages, this.news, this.games, this.exercises];
110
+ this.setAllNotifications();
111
+ }
112
+ setAllNotifications() {
113
+ const ItembyRole = JSON.parse(localStorage.getItem('showItembyRole'));
114
+ const showItembyRole = Object.keys(ItembyRole);
115
+ showItembyRole.forEach(element => {
116
+ // resultado = this.options.filter(animal => animal != element);
117
+ for (let index = 0; index < this.options.length; index++) {
118
+ if (element === this.options[index].type) {
119
+ // delete(this.options[index])
120
+ this.options.splice(index, 1);
121
+ index--;
122
+ }
123
+ }
124
+ });
125
+ this.options.forEach(opt => {
126
+ opt['translate'] = this.setTranslate(opt);
127
+ opt['on_mail'] = false;
128
+ opt['on_app'] = false;
129
+ const notification = opt;
130
+ this.list_options.push(notification);
131
+ });
132
+ }
133
+ getListOptions() {
134
+ return this.list_options;
135
+ }
136
+ setTranslate(opt) {
137
+ switch (opt?.type) {
138
+ case NotificationsType.COMMUNICATIONS:
139
+ return 'setting.subtitle_communications';
140
+ case NotificationsType.AGENDA:
141
+ return 'setting.subtitle_appointment';
142
+ case NotificationsType.REMINDERS:
143
+ return 'setting.subtitle_reminders';
144
+ case NotificationsType.DIETS:
145
+ return 'setting.subtitle_diets';
146
+ case NotificationsType.MEDICATIONS:
147
+ return 'setting.subtitle_medication';
148
+ case NotificationsType.GOALS:
149
+ return 'setting.subtitle_goals';
150
+ case NotificationsType.ADVICES:
151
+ return 'setting.subtitle_advices';
152
+ case NotificationsType.NEWS:
153
+ return 'setting.subtitle_release';
154
+ case NotificationsType.PROCEDURES:
155
+ return 'setting.subtitle_procedure';
156
+ case NotificationsType.OFFERS:
157
+ return 'setting.subtitle_offers';
158
+ case NotificationsType.FORMS:
159
+ return 'setting.subtitle_form';
160
+ case NotificationsType.MESSAGES:
161
+ return 'setting.subtitle_messages';
162
+ case NotificationsType.GAMES:
163
+ return 'setting.subtitle_games';
164
+ case NotificationsType.PROMOTE_CONTENT:
165
+ return 'setting.subtitle_release'; // return 'setting.subtitle_promoteContent';
166
+ case NotificationsType.EXERCISES:
167
+ return 'setting.subtitle_exercises';
168
+ default:
169
+ return '';
170
+ }
171
+ }
172
+ setAppMailField(list, json) {
173
+ list.forEach(opt => {
174
+ opt.on_app = this.isOnApp(opt, json);
175
+ opt.on_mail = this.isOnMail(opt, json);
176
+ });
177
+ return list;
178
+ }
179
+ isOnApp(opt, json) {
180
+ if (typeof opt.app === 'string')
181
+ return json[opt.app] == '1' ? true : false;
182
+ else
183
+ return json[opt.app[0]] == '1' ? true : false;
184
+ }
185
+ isOnMail(opt, json) {
186
+ if (typeof opt.mail === 'string')
187
+ return json[opt.mail] == '1' ? true : false;
188
+ else
189
+ return json[opt.mail[0]] == '1' ? true : false;
190
+ }
191
+ }
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZXJ2aWNlLWxpYi9zcmMvbGliL21vZGVscy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sQ0FBTixJQUFZLGlCQXlCWDtBQXpCRCxXQUFZLGlCQUFpQjtJQUN6Qix3Q0FBbUIsQ0FBQTtJQUNuQixzQ0FBaUIsQ0FBQTtJQUNqQixzREFBaUMsQ0FBQTtJQUNqQyxvQ0FBZSxDQUFBO0lBQ2YsNENBQXVCLENBQUE7SUFDdkIsb0NBQWUsQ0FBQTtJQUNmLG9DQUFlLENBQUE7SUFDZixvQ0FBZSxDQUFBO0lBQ2YscURBQWdDLENBQUE7SUFDaEMsMENBQXFCLENBQUE7SUFDckIsa0NBQWEsQ0FBQTtJQUNiLHNDQUFpQixDQUFBO0lBQ2pCLHdEQUFtQyxDQUFBO0lBQ25DLHNEQUFpQyxDQUFBO0lBQ2pDLDJDQUFzQixDQUFBO0lBQ3RCLGtCQUFrQjtJQUNsQiw4Q0FBeUIsQ0FBQTtJQUN6QiwwREFBcUMsQ0FBQTtJQUNyQyw0REFBdUMsQ0FBQTtJQUN2QywwREFBcUMsQ0FBQTtJQUNyQywwREFBb0MsQ0FBQTtJQUNwQyxrREFBNEIsQ0FBQTtJQUM1Qix3REFBbUMsQ0FBQTtJQUNuQyw0REFBdUMsQ0FBQTtBQUMzQyxDQUFDLEVBekJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUF5QjVCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBb0JYO0FBcEJELFdBQVksbUJBQW1CO0lBQzNCLDhDQUF1QixDQUFBO0lBQ3ZCLDZDQUFzQixDQUFBO0lBQ3RCLG1FQUE0QyxDQUFBO0lBQzVDLDhEQUF1QyxDQUFBO0lBQ3ZDLDBDQUFtQixDQUFBO0lBQ25CLCtDQUF3QixDQUFBO0lBQ3hCLGtEQUEyQixDQUFBO0lBQzNCLGdEQUF5QixDQUFBO0lBQ3pCLDBDQUFtQixD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QUssQ0FBQTtJQUNuRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIG5vdGlmaWNhdGlvbk9wdCB7XG4gICAgdHJhbnNsYXRlPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBpdGVtX2V4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBtYWlsPzogYW55O1xuICAgIGFwcD86IGFueTtcbiAgICBvbl9tYWlsPzpib29sZWFuO1xuICAgIG9uX2FwcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvbnNUeXBlIHtcbiAgICBBRFZJQ0VTID0gJ2FkdmljZXMnLFxuICAgIEFHRU5EQSA9ICdhZ2VuZGEnLFxuICAgIENPTU1VTklDQVRJT05TID0gJ2NvbW11bmljYXRpb25zJyxcbiAgICBESUVUUyA9ICdkaWV0cycsXG4gICAgRVhFUkNJU0VTID0gJ2V4ZXJjaXNlcycsXG4gICAgRk9STVMgPSAnZm9ybXMnLFxuICAgIEdBTUVTID0gJ2dhbWVzJyxcbiAgICBHT0FMUyA9ICdnb2FscycsXG4gICAgTUVESUNBVElPTlMgPSAnbWVkaWNhdGlvbl9wbGFucycsXG4gICAgTUVTU0FHRVMgPSAnbWVzc2FnZXMnLFxuICAgIE5FV1MgPSAnbmV3cycsXG4gICAgT0ZGRVJTID0gJ29mZmVycycsXG4gICAgUFJPTU9URV9DT05URU5UID0gJ3Byb21vdGUtY29udGVudCcsXG4gICAgUFJPQ0VEVVJFUyA9ICdtZWRpY2FsX3Byb2NlZHVyZXMnLFxuICAgIFJFTUlOREVSUyA9ICdyZW1pbmRlcicsXG4gICAgLy9TaGFyZWQgY2FyZSBwbGFuXG4gICAgTU9OSVRPUklORyA9ICdtb25pdG9yaW5nJywgXG4gICAgSU5GT1JNRURfQ09OU0VOVCA9ICdpbmZvcm1lZF9jb25zZW50JyxcbiAgICBMSUZFX1NUSUxFX0hBQklUUyA9ICdsaWZlX3N0eWxlX2hhYml0cycsXG4gICAgU0hBUkVEX0NBUkVfUExBTiA9ICdzaGFyZWRfY2FyZV9wbGFuJyxcbiAgICBBZGRCdXR0b25NZWRpY2FsVGVzdD0gJ2FkZF9kb2N1bWVudCcsXG4gICAgVEVTVElNT05JQUxTPSAndGVzdGltb25pYWxzJyxcbiAgICBBZGRCdXR0b25Ub2RheURydWcgPSAnZHJ1Z3MtZGV0YWlsJyxcbiAgICBBZGRCdXR0b25IZWFsdGhDaGFydHMgPSAnYWN0aXZpdHktZ29hbCdcbn1cblxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uc1R5cGVCTyB7XG4gICAgQURWSUNFUyA9IFwiQXBwXFxcXEFkdmljZVwiLFxuICAgIEFHRU5EQSA9IFwiQXBwXFxcXEFnZW5kYVwiLFxuICAgIENIQUxMRU5HRV9MRVZFTCA9IFwiQXBwXFxcXExldmVsQWNjb21wbGlzaG1lbnRcIixcbiAgICBESUFHTk9TVElDX1RFU1QgPSBcIkFwcFxcXFxEaWFnbm9zdGljVGVzdFwiLFxuICAgIERJRVRTID0gXCJBcHBcXFxcRGlldFwiLFxuICAgIERSVUcgPSBcIkFwcFxcXFxEcnVnSW50YWtlXCIsXG4gICAgRVhFUkNJU0VTID0gXCJBcHBcXFxcRXhlcmNpc2VcIixcbiAgICBGT1JNUyA9IFwiQXBwXFxcXEZvcm1BbnN3ZXJcIixcbiAgICBHQU1FUyA9IFwiQXBwXFxcXEdhbWVcIixcbiAgICBHQU1FX1BMQVkgPSBcIkFwcFxcXFxHYW1lUGxheVwiLFxuICAgIC8vR09BTFMgPSBcIkFwcFxcXFxHb2FsYWJsZVwiLFxuICAgIE1FRElDQUxfUFJPQ0VEVVJFID0gXCJBcHBcXFxcTWVkaWNhbFByb2NlZHVyZVwiLFxuICAgIE1FRElDQVRJT05TID0gXCJBcHBcXFxcTWVkaWNhdGlvblBsYW5cIixcbiAgICBNRVNTQUdFUyA9IFwiQXBwXFxcXE1lc3NhZ2VcIixcbiAgICBORVdTID0gXCJBcHBcXFxcTmV3c1wiLFxuICAgIFBST0dSQU1BQkxFX1BMQVkgPSBcIkFwcFxcXFxQcm9ncmFtYWJsZVBsYXlcIixcbiAgICBSRU1JTkRFUlMgPSBcIkFwcFxcXFxSZW1pbmRlclwiLCBcbiAgICBSRU1JTkRFUlNfRVhFQ1VUSU9OID1cIkFwcFxcXFxSZW1pbmRlckV4ZWN1dGlvblwiLFxuICAgIFNIQVJFRF9DQVJFX1BMQU4gPSBcIkFwcFxcXFxTaGFyZUNhcmVQbGFuXCJcbn1cblxuZXhwb3J0IGVudW0gTk9USUZJQ0FUSU9OU19UWVBFX0JPIHtcbiAgICBBR0VOREEgPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXEFnZW5kYUNyZWF0ZWRcIixcbiAgICBBUFBPSU5UTUVOVFNfVklTSVQgPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXFZpc2l0T25saW5lTm90aWZpY2F0aW9uXCIsIFxuICAgIEFEVklDRVMgPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXEFkdmljZUNyZWF0ZWRcIixcbiAgICBDSEFMTEVOR0VfTEVWRUwgPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXExldmVsQWNjb21wbGlzaG1lbnRDb21wbGV0ZWROb3RpZmljYXRpb25cIixcbiAgICBESUVUUyA9IFwiQXBwXFxcXE5vdGlmaWNhdGlvbnNcXFxcRGlldENyZWF0ZWRcIixcbiAgICBEUlVHID0gXCJBcHBcXFxcTm90aWZpY2F0aW9uc1xcXFxEcnVnSW50YWtlVGltZVwiLFxuICAgIEVYRVJDSVNFUyA9IFwiQXBwXFxcXE5vdGlmaWNhdGlvbnNcXFxcRXhlcmNpc2VDcmVhdGVkXCIsXG4gICAgRVhFUkNJU0VTX1BMQVkgPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXEV4ZXJjaXNlUGxheVNjaGVkdWxlXCIsIFxuICAgIEZPUk1TID0gXCJBcHBcXFxcTm90aWZpY2F0aW9uc1xcXFxGb3JtQW5zd2VyU2NoZWR1bGVcIixcbiAgICBHQU1FUyA9IFwiQXBwXFxcXE5vdGlmaWNhdGlvbnNcXFxcR2FtZVBsYXlTY2hlZHVsZVwiLFxuICAgIE1FU1NBR0VTID0gXCJBcHBcXFxcTm90aWZpY2F0aW9uc1xcXFxNZXNzYWdlTm90aWZpY2F0aW9uXCIsXG4gICAgTkVXUyA9IFwiQXBwXFxcXE5vdGlmaWNhdGlvbnNcXFxcTmV3c05vdGlmaWNhdGlvblwiLFxuICAgIFJFTUlOREVSUyA9IFwiQXBwXFxcXE5vdGlmaWNhdGlvbnNcXFxcUmVtaW5kZXJUaW1lXCIsIFxuICAgIFNIQVJFRF9DQVJFX1BMQU4gPSBcIkFwcFxcXFxOb3RpZmljYXRpb25zXFxcXFNoYXJlZENhcmVQbGFuQWRkQ29udGVudE5vdGlmaWNhdGlvblwiXG4gICAgLy8gTUVESUNBVElPTlMgPSBcIlwiLFxuICAgIC8vIEdPQUxTID0gIFwiXCIsXG4gICAgLy8gTUVESUNBTF9QUk9DRURVUkUgPSBcIlwiLFxuICAgIC8vIERJQUdOT1NUSUNfVEVTVCA9IFwiXCIsXG4gICAgLy8gUFJPR1JBTUFCTEVfUExBWSA9IFwiXCIsXG59XG5cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvbnNUeXBlQ29sb3Ige1xuICAgIEFEVklDRVMgPSAgJyMyMzU2ZjknLFxuICAgIEFHRU5EQSA9ICcjNjk1MGNlJyxcbiAgICBDSEFMTEVOR0VfTEVWRUwgPSAnI0JEQzNDNycsXG4gICAgRElBR05PU1RJQ19URVNUID0gJyMxQThFOTInLFxuICAgIERJRVRTID0gJyNFNjdFMjInLFxuICAgIERSVUcgPSAnIzVBQzQ0NScsXG4gICAgRVhFUkNJU0VTID0gJyNmNTNkM2QnLFxuICAgIEZPUk1TID0gJyMyMzU2ZjknLFxuICAgIEdBTUVTID0gJyM5QjU5QjYnLFxuICAgIEdBTUVfUExBWSA9ICcjOUI1OUI2JyxcbiAgICAvL0dPQUxTID0gJyMxQThFOTInLFxuICAgIE1FRElDQUxfUFJPQ0VEVVJFID0gJyNFQzc1NzknLFxuICAgIE1FRElDQVRJT05TID0gJyMyNUNBRDAnLFxuICAgIE1FU1NBR0VTID0gJyMyNUNBRDAnLFxuICAgIE5FV1MgPSAnIzIzNTZmOScsXG4gICAgUFJPR1JBTUFCTEVfUExBWSA9ICcjN0Y4QzhEJyxcbiAgICBSRU1JTkRFUlMgPSAgJyM2OTUwY2UnLCBcbiAgICBSRU1JTkRFUlNfRVhFQ1VUSU9OID0gICcjNjk1MGNlJyxcbiAgICBTSEFSRURfQ0FSRV9QTEFOID0gJyNCQTAxODYnXG59XG5cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbk9wdGlvbnMge1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGFnZW5kYTogYW55ID0ge3R5cGU6ICBOb3RpZmljYXRpb25zVHlwZS5BR0VOREEsIG1haWw6ICdhZ2VuZGFOb3RpZmljYXRpb25NYWlsJywgYXBwOiAnYWdlbmRhTm90aWZpY2F0aW9uQXBwJywgb2xkOiBudWxsfTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVtaW5kZXI6IGFueSA9IHt0eXBlOiAgTm90aWZpY2F0aW9uc1R5cGUuUkVNSU5ERVJTLCBtYWlsOiAncmVtaW5kZXJOb3RpZmljYXRpb25NYWlsJywgYXBwOiAncmVtaW5kZXJOb3RpZmljYXRpb25BcHAnLCBvbGQ6IG51bGx9O1xuICAgIHB1YmxpYyByZWFkb25seSBkaWV0czogYW55ID0ge3R5cGU6IE5vdGlmaWNhdGlvbnNUeXBlLkRJRVRTLCBtYWlsOiAnZGlldHNOb3RpZmljYXRpb25NYWlsJywgYXBwOiAnZGlldHNOb3RpZmljYXRpb25BcHAnLCBvbGQ6ICdkaWV0c05vdGlmaWNhdG9uJ307XG4gICAgcHVibGljIHJlYWRvbmx5IG1lZGljYXRpb246IGFueSA9IHt0eXBlOiBOb3RpZmljYXRpb25zVHlwZS5NRURJQ0FUSU9OUywgbWFpbDogWydkcnVnSW50YWtlTm90aWZpY2F0aW9uTWFpbCcsICdtZWRpY2F0aW9uUGxhbkV4cGlyZWROb3RpZmljYXRpb25FbWFpbCddLCBhcHA6IFsnZHJ1Z0ludGFrZU5vdGlmaWNhdGlvbkFwcCcsICdtZWRpY2F0aW9uUGxhbkV4cGlyZWROb3RpZmljYXRpb25BcHAnXSwgb2xkOiBudWxsfTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZ29hbHM6IGFueSA9IHt0eXBlOiBOb3RpZmljYXRpb25zVHlwZS5HT0FMUywgbWFpbDogJ2dvYWxzTm90aWZpY2F0aW9uTWFpbCcsIGFwcDogJ2dvYWxzTm90aWZpY2F0aW9uQXBwJywgb2xkOiAnZ29hbHNOb3RpZmljYXRvbid9O1xuICAgIHB1YmxpYyByZWFkb25seSBhZHZpY2VzOiBhbnkgPSB7dHlwZTogTm90aWZpY2F0aW9uc1R5cGUuQURWSUNFUywgbWFpbDogJ2FkdmljZXNOb3RpZmljYXRpb25NYWlsJywgYXBwOiAnYWR2aWNlc05vdGlmaWNhdGlvbkFwcCcsIG9sZDogJ2FkdmljZXNOb3RpZmljYXRvbid9O1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtczogYW55ID0ge3R5cGU6IE5vdGlmaWNhdGlvbnNUeXBlLkZPUk1TLCBtYWlsOiAnZm9ybU5vdGlmaWNhdGlvbk1haWwnLCBhcHA6ICdmb3JtTm90aWZpY2F0aW9uQXBwJywgb2xkOiAnZm9ybU5vdGlmaWNhdG9uJ307XG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VzOiBhbnkgPSB7dHlwZTogTm90aWZpY2F0aW9uc1R5cGUuTUVTU0FHRVMsIG1haWw6ICdtZXNzYWdlc05vdGlmaWNhdGlvbk1haWwnLCBhcHA6ICdtZXNzYWdlc05vdGlmaWNhdGlvbkFwcCcsIG9sZDogJ21lc3NhZ2VzTm90aWZpY2F0b24nfTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV3czogYW55ID0ge3R5cGU6IE5vdGlmaWNhdGlvbnNUeXBlLk5FV1MsIG1haWw6ICduZXdzTm90aWZpY2F0aW9uTWFpbCcsIGFwcDogJ25ld3NOb3RpZmljYXRpb25BcHAnLCBvbGQ6IG51bGx9O1xuICAgIHB1YmxpYyByZWFkb25seSBnYW1lczogYW55ID0ge3R5cGU6IE5vdGlmaWNhdGlvbnNUeXBlLkdBTUVTLCBtYWlsOiAnZ2FtZVBsYXlOb3RpZmljYXRpb25NYWlsJywgYXBwOiAnZ2FtZVBsYXlOb3RpZmljYXRpb25BcHAnLCBvbGQ6IG51bGx9O1xuICAgIHB1YmxpYyByZWFkb25seSBleGVyY2lzZXM6IGFueSA9IHt0eXBlOiBOb3RpZmljYXRpb25zVHlwZS5FWEVSQ0lTRVMsIG1haWw6ICdleGVyY2lzZVBsYXlOb3RpZmljYXRpb25NYWlsJywgYXBwOiAnZXhlcmNpc2VQbGF5Tm90aWZpY2F0aW9uQXBwJywgb2xkOiBudWxsfTtcblxuICAgIFxuICAgIHByaXZhdGUgbGlzdF9vcHRpb25zOiBub3RpZmljYXRpb25PcHRbXSA9IFtdO1xuICAgIC8vQXF1aSBzZSBhw7FhZGVuIHRvZGFzIGxhcyBub3RpZmljYWNpb25lcyBxdWUgcXVlcmVtb3MgcXVlIGFwYXJlemNhIGVuIHNldHRpbmcucGFnZVxuICAgIHByaXZhdGUgb3B0aW9ucyA9IFsgdGhpcy5hZ2VuZGEsIHRoaXMucmVtaW5kZXIsIHRoaXMuZGlldHMsIHRoaXMubWVkaWNhdGlvbiwgdGhpcy5nb2FscywgdGhpcy5hZHZpY2VzLCB0aGlzLmZvcm1zLCB0aGlzLm1lc3NhZ2VzLCB0aGlzLm5ld3MsIHRoaXMuZ2FtZXMsIHRoaXMuZXhlcmNpc2VzXTtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zZXRBbGxOb3RpZmljYXRpb25zKClcbiAgICB9XG5cbiAgICBzZXRBbGxOb3RpZmljYXRpb25zKCl7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBJdGVtYnlSb2xlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2hvd0l0ZW1ieVJvbGUnKSk7XG4gICAgICAgIGNvbnN0IHNob3dJdGVtYnlSb2xlID0gT2JqZWN0LmtleXMoSXRlbWJ5Um9sZSk7IFxuICAgICAgICBzaG93SXRlbWJ5Um9sZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAvLyByZXN1bHRhZG8gPSB0aGlzLm9wdGlvbnMuZmlsdGVyKGFuaW1hbCA9PiBhbmltYWwgIT0gZWxlbWVudCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLmxlbmd0aDsgaW5kZXgrKyl7XG4gICAgICAgICAgICAgICAgaWYoZWxlbWVudCA9PT0gdGhpcy5vcHRpb25zW2luZGV4XS50eXBlKXtcbiAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUodGhpcy5vcHRpb25zW2luZGV4XSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcbiAgICAgICAgfSk7XG5cbiAgICAgIFxuICAgICAgICBcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0ID0+IHtcbiAgICAgICAgICAgIG9wdFsndHJhbnNsYXRlJ10gPSB0aGlzLnNldFRyYW5zbGF0ZShvcHQpO1xuICAgICAgICAgICAgb3B0Wydvbl9tYWlsJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIG9wdFsnb25fYXBwJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogbm90aWZpY2F0aW9uT3B0ID0gb3B0XG4gICAgICAgICAgICB0aGlzLmxpc3Rfb3B0aW9ucy5wdXNoKG5vdGlmaWNhdGlvbilcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRMaXN0T3B0aW9ucygpe1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0X29wdGlvbnNcbiAgICB9XG5cbiAgICBzZXRUcmFuc2xhdGUob3B0KXtcbiAgICAgICAgc3dpdGNoIChvcHQ/LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uc1R5cGUuQ09NTVVOSUNBVElPTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX2NvbW11bmljYXRpb25zJztcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uc1R5cGUuQUdFTkRBOlxuICAgICAgICAgICAgICAgIHJldHVybiAnc2V0dGluZy5zdWJ0aXRsZV9hcHBvaW50bWVudCc7XG4gICAgICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbnNUeXBlLlJFTUlOREVSUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NldHRpbmcuc3VidGl0bGVfcmVtaW5kZXJzJztcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uc1R5cGUuRElFVFM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX2RpZXRzJztcbiAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uc1R5cGUuTUVESUNBVElPTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX21lZGljYXRpb24nO1xuICAgICAgICAgICAgY2FzZSAgTm90aWZpY2F0aW9uc1R5cGUuR09BTFM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX2dvYWxzJztcbiAgICAgICAgICAgIGNhc2UgIE5vdGlmaWNhdGlvbnNUeXBlLkFEVklDRVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX2FkdmljZXMnOyAgICAgXG4gICAgICAgICAgICBjYXNlICBOb3RpZmljYXRpb25zVHlwZS5ORVdTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnc2V0dGluZy5zdWJ0aXRsZV9yZWxlYXNlJztcbiAgICAgICAgICAgIGNhc2UgIE5vdGlmaWNhdGlvbnNUeXBlLlBST0NFRFVSRVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX3Byb2NlZHVyZSc7XG4gICAgICAgICAgICBjYXNlICBOb3RpZmljYXRpb25zVHlwZS5PRkZFUlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX29mZmVycyc7XG4gICAgICAgICAgICBjYXNlICBOb3RpZmljYXRpb25zVHlwZS5GT1JNUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NldHRpbmcuc3VidGl0bGVfZm9ybSc7IFxuICAgICAgICAgICAgY2FzZSAgTm90aWZpY2F0aW9uc1R5cGUuTUVTU0FHRVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX21lc3NhZ2VzJztcbiAgICAgICAgICAgIGNhc2UgIE5vdGlmaWNhdGlvbnNUeXBlLkdBTUVTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnc2V0dGluZy5zdWJ0aXRsZV9nYW1lcyc7XG4gICAgICAgICAgICBjYXNlICBOb3RpZmljYXRpb25zVHlwZS5QUk9NT1RFX0NPTlRFTlQ6IFxuICAgICAgICAgICAgICAgIHJldHVybiAnc2V0dGluZy5zdWJ0aXRsZV9yZWxlYXNlJzsgICAgICAgLy8gICAgIHJldHVybiAnc2V0dGluZy5zdWJ0aXRsZV9wcm9tb3RlQ29udGVudCc7XG4gICAgICAgICAgICBjYXNlICBOb3RpZmljYXRpb25zVHlwZS5FWEVSQ0lTRVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzZXR0aW5nLnN1YnRpdGxlX2V4ZXJjaXNlcyc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEFwcE1haWxGaWVsZChsaXN0LCBqc29uKXtcbiAgICAgICAgbGlzdC5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICBvcHQub25fYXBwID0gdGhpcy5pc09uQXBwKG9wdCwganNvbilcbiAgICAgICAgICAgIG9wdC5vbl9tYWlsID0gdGhpcy5pc09uTWFpbChvcHQsIGpzb24pXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBsaXN0XG4gICAgfVxuXG5cbiAgICBpc09uQXBwKG9wdCwganNvbik6IGJvb2xlYW57XG4gICAgICAgIGlmKHR5cGVvZiBvcHQuYXBwID09PSAnc3RyaW5nJykgXG4gICAgICAgICAgICByZXR1cm4ganNvbltvcHQuYXBwXSA9PSAnMSc/IHRydWU6ZmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGpzb25bb3B0LmFwcFswXV0gPT0gJzEnPyB0cnVlOmZhbHNlXG4gICAgfVxuXG4gICAgaXNPbk1haWwob3B0LCBqc29uKTogYm9vbGVhbntcbiAgICAgICAgaWYodHlwZW9mIG9wdC5tYWlsID09PSAnc3RyaW5nJykgXG4gICAgICAgICAgICByZXR1cm4ganNvbltvcHQubWFpbF0gPT0gJzEnPyB0cnVlOmZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBqc29uW29wdC5tYWlsWzBdXSA9PSAnMSc/IHRydWU6ZmFsc2VcbiAgICB9XG59Il19