valtech-components 2.0.838 → 2.0.840
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/update-banner/types.mjs +4 -4
- package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +5 -5
- package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +19 -22
- package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +5 -5
- package/esm2022/lib/config/company-footer.config.mjs +10 -3
- package/esm2022/lib/services/auth/auth.service.mjs +8 -3
- package/esm2022/lib/services/errors/index.mjs +9 -0
- package/esm2022/lib/services/errors/interpret-error.mjs +130 -0
- package/esm2022/lib/services/firebase/index.mjs +2 -2
- package/esm2022/lib/services/firebase/messaging.service.mjs +212 -3
- package/esm2022/lib/services/firebase/types.mjs +1 -1
- package/esm2022/lib/services/i18n/default-content.mjs +5 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/valtech-components.mjs +397 -36
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/update-banner/types.d.ts +3 -3
- package/lib/components/organisms/change-password-modal/change-password-modal.component.d.ts +0 -1
- package/lib/config/company-footer.config.d.ts +4 -0
- package/lib/services/errors/index.d.ts +9 -0
- package/lib/services/errors/interpret-error.d.ts +63 -0
- package/lib/services/firebase/index.d.ts +1 -1
- package/lib/services/firebase/messaging.service.d.ts +110 -1
- package/lib/services/firebase/types.d.ts +30 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error interpretation helper for the Valtech factory.
|
|
3
|
+
*
|
|
4
|
+
* Todos los frontends del factory consumen la misma API (backend Go) y la misma
|
|
5
|
+
* librería. La lógica de interpretar errores debe vivir una sola vez, acá.
|
|
6
|
+
*
|
|
7
|
+
* El backend Go (`apperrors`) SIEMPRE devuelve errores como JSON:
|
|
8
|
+
* { "code": string, "message": string, "operationId": string }
|
|
9
|
+
* donde `message` ya viene en español y es user-friendly.
|
|
10
|
+
*
|
|
11
|
+
* En Angular un error HTTP llega como `HttpErrorResponse` (body en `.error`).
|
|
12
|
+
* Un fallo de red es un `HttpErrorResponse` con `status === 0`.
|
|
13
|
+
*
|
|
14
|
+
* Además `AuthService.handleAuthError` aplana el `HttpErrorResponse` a un
|
|
15
|
+
* `AuthError { code, message }` (code/message al nivel superior). Por eso este
|
|
16
|
+
* helper acepta AMBAS formas — el crudo y el aplanado.
|
|
17
|
+
*/
|
|
18
|
+
/** Mensaje genérico para fallos de red (sin conexión / backend inalcanzable). */
|
|
19
|
+
const NETWORK_MESSAGE = 'Sin conexión. Verifica tu conexión a internet e inténtalo de nuevo.';
|
|
20
|
+
/** Mensaje genérico para errores no identificables. */
|
|
21
|
+
const UNKNOWN_MESSAGE = 'Ocurrió un error inesperado. Inténtalo de nuevo.';
|
|
22
|
+
/** Sentinel para fallos de red. */
|
|
23
|
+
const NETWORK_CODE = 'NETWORK';
|
|
24
|
+
/** Sentinel para errores no identificables. */
|
|
25
|
+
const UNKNOWN_CODE = 'UNKNOWN';
|
|
26
|
+
/** Type guard laxo: ¿el valor parece un `HttpErrorResponse`? */
|
|
27
|
+
function isHttpErrorResponse(err) {
|
|
28
|
+
return (typeof err === 'object' &&
|
|
29
|
+
err !== null &&
|
|
30
|
+
// No importamos HttpErrorResponse para mantener la fn libre de Angular;
|
|
31
|
+
// detectamos por shape: tiene `status` numérico y `name` reconocible o `error`.
|
|
32
|
+
('status' in err || err.name === 'HttpErrorResponse'));
|
|
33
|
+
}
|
|
34
|
+
/** Devuelve un string si el valor lo es y no está vacío; si no, `undefined`. */
|
|
35
|
+
function asNonEmptyString(value) {
|
|
36
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Normaliza CUALQUIER error a un `InterpretedError`.
|
|
40
|
+
*
|
|
41
|
+
* Función pura — sin dependencias de Angular DI, testeable y usable desde
|
|
42
|
+
* cualquier lado (componentes, servicios, interceptores, scripts).
|
|
43
|
+
*
|
|
44
|
+
* Nunca lanza: siempre devuelve un `InterpretedError` válido.
|
|
45
|
+
*
|
|
46
|
+
* Casos cubiertos:
|
|
47
|
+
* - `HttpErrorResponse` con `status === 0` (o sin respuesta) → fallo de red.
|
|
48
|
+
* - `HttpErrorResponse` con body `{ code, message, operationId }` del backend.
|
|
49
|
+
* - `AuthError` aplanado `{ code, message }` (code/message top-level).
|
|
50
|
+
* - `Error` plano de JS → `code: 'UNKNOWN'`, `message: err.message`.
|
|
51
|
+
* - Cualquier otra cosa (string, null, undefined, objeto raro) → genérico.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* try {
|
|
56
|
+
* await firstValueFrom(this.http.get(url));
|
|
57
|
+
* } catch (err) {
|
|
58
|
+
* const e = interpretError(err);
|
|
59
|
+
* if (e.isNetwork) {
|
|
60
|
+
* this.toast.show({ message: e.message, color: 'dark' });
|
|
61
|
+
* } else {
|
|
62
|
+
* this.errorCode.set(e.code);
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export function interpretError(err) {
|
|
68
|
+
// 1. HttpErrorResponse — el caso más común al hablar con el backend.
|
|
69
|
+
if (isHttpErrorResponse(err)) {
|
|
70
|
+
const status = typeof err.status === 'number' ? err.status : undefined;
|
|
71
|
+
// 1a. Fallo de red: status 0 o sin body de respuesta del servidor.
|
|
72
|
+
if (status === 0) {
|
|
73
|
+
return {
|
|
74
|
+
code: NETWORK_CODE,
|
|
75
|
+
message: NETWORK_MESSAGE,
|
|
76
|
+
status: 0,
|
|
77
|
+
isNetwork: true,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// 1b. Body del backend `{ code, message, operationId }`.
|
|
81
|
+
const body = err.error;
|
|
82
|
+
if (typeof body === 'object' && body !== null) {
|
|
83
|
+
const b = body;
|
|
84
|
+
return {
|
|
85
|
+
code: asNonEmptyString(b.code) ?? UNKNOWN_CODE,
|
|
86
|
+
message: asNonEmptyString(b.message) ?? UNKNOWN_MESSAGE,
|
|
87
|
+
operationId: asNonEmptyString(b.operationId),
|
|
88
|
+
status,
|
|
89
|
+
isNetwork: false,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// 1c. HttpErrorResponse sin body estructurado (ej. body string / null).
|
|
93
|
+
return {
|
|
94
|
+
code: UNKNOWN_CODE,
|
|
95
|
+
message: asNonEmptyString(err.message) ?? UNKNOWN_MESSAGE,
|
|
96
|
+
status,
|
|
97
|
+
isNetwork: false,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// 2. AuthError aplanado u objeto con `code`/`message` top-level.
|
|
101
|
+
if (typeof err === 'object' && err !== null) {
|
|
102
|
+
const o = err;
|
|
103
|
+
const code = asNonEmptyString(o.code);
|
|
104
|
+
const message = asNonEmptyString(o.message);
|
|
105
|
+
if (code || message) {
|
|
106
|
+
return {
|
|
107
|
+
code: code ?? UNKNOWN_CODE,
|
|
108
|
+
message: message ?? UNKNOWN_MESSAGE,
|
|
109
|
+
operationId: asNonEmptyString(o.operationId),
|
|
110
|
+
isNetwork: false,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// 2b. Error plano de JS (instancia de Error sin code) — `message` ya
|
|
114
|
+
// cubierto arriba; este branch atrapa Error con message vacío.
|
|
115
|
+
if (err instanceof Error) {
|
|
116
|
+
return {
|
|
117
|
+
code: UNKNOWN_CODE,
|
|
118
|
+
message: asNonEmptyString(err.message) ?? UNKNOWN_MESSAGE,
|
|
119
|
+
isNetwork: false,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// 3. Cualquier otra cosa: string, null, undefined, objeto raro.
|
|
124
|
+
return {
|
|
125
|
+
code: UNKNOWN_CODE,
|
|
126
|
+
message: UNKNOWN_MESSAGE,
|
|
127
|
+
isNetwork: false,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJwcmV0LWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lcnJvcnMvaW50ZXJwcmV0LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBbUJILGlGQUFpRjtBQUNqRixNQUFNLGVBQWUsR0FBRyxxRUFBcUUsQ0FBQztBQUU5Rix1REFBdUQ7QUFDdkQsTUFBTSxlQUFlLEdBQUcsa0RBQWtELENBQUM7QUFFM0UsbUNBQW1DO0FBQ25DLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztBQUUvQiwrQ0FBK0M7QUFDL0MsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBRS9CLGdFQUFnRTtBQUNoRSxTQUFTLG1CQUFtQixDQUFDLEdBQVk7SUFNdkMsT0FBTyxDQUNMLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDdkIsR0FBRyxLQUFLLElBQUk7UUFDWix3RUFBd0U7UUFDeEUsZ0ZBQWdGO1FBQ2hGLENBQUMsUUFBUSxJQUFJLEdBQUcsSUFBSyxHQUF5QixDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxDQUM3RSxDQUFDO0FBQ0osQ0FBQztBQUVELGdGQUFnRjtBQUNoRixTQUFTLGdCQUFnQixDQUFDLEtBQWM7SUFDdEMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBWTtJQUN6QyxxRUFBcUU7SUFDckUsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUV2RSxtRUFBbUU7UUFDbkUsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTztnQkFDTCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUM7UUFDSixDQUFDO1FBRUQseURBQXlEO1FBQ3pELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLElBSVQsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZO2dCQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWU7Z0JBQ3ZELFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxNQUFNO2dCQUNOLFNBQVMsRUFBRSxLQUFLO2FBQ2pCLENBQUM7UUFDSixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLE9BQU87WUFDTCxJQUFJLEVBQUUsWUFBWTtZQUNsQixPQUFPLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWU7WUFDekQsTUFBTTtZQUNOLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxHQUlULENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksSUFBSSxZQUFZO2dCQUMxQixPQUFPLEVBQUUsT0FBTyxJQUFJLGVBQWU7Z0JBQ25DLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxtRUFBbUU7UUFDbkUsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDekIsT0FBTztnQkFDTCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlO2dCQUN6RCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsT0FBTztRQUNMLElBQUksRUFBRSxZQUFZO1FBQ2xCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFcnJvciBpbnRlcnByZXRhdGlvbiBoZWxwZXIgZm9yIHRoZSBWYWx0ZWNoIGZhY3RvcnkuXG4gKlxuICogVG9kb3MgbG9zIGZyb250ZW5kcyBkZWwgZmFjdG9yeSBjb25zdW1lbiBsYSBtaXNtYSBBUEkgKGJhY2tlbmQgR28pIHkgbGEgbWlzbWFcbiAqIGxpYnJlcsOtYS4gTGEgbMOzZ2ljYSBkZSBpbnRlcnByZXRhciBlcnJvcmVzIGRlYmUgdml2aXIgdW5hIHNvbGEgdmV6LCBhY8OhLlxuICpcbiAqIEVsIGJhY2tlbmQgR28gKGBhcHBlcnJvcnNgKSBTSUVNUFJFIGRldnVlbHZlIGVycm9yZXMgY29tbyBKU09OOlxuICogICB7IFwiY29kZVwiOiBzdHJpbmcsIFwibWVzc2FnZVwiOiBzdHJpbmcsIFwib3BlcmF0aW9uSWRcIjogc3RyaW5nIH1cbiAqIGRvbmRlIGBtZXNzYWdlYCB5YSB2aWVuZSBlbiBlc3Bhw7FvbCB5IGVzIHVzZXItZnJpZW5kbHkuXG4gKlxuICogRW4gQW5ndWxhciB1biBlcnJvciBIVFRQIGxsZWdhIGNvbW8gYEh0dHBFcnJvclJlc3BvbnNlYCAoYm9keSBlbiBgLmVycm9yYCkuXG4gKiBVbiBmYWxsbyBkZSByZWQgZXMgdW4gYEh0dHBFcnJvclJlc3BvbnNlYCBjb24gYHN0YXR1cyA9PT0gMGAuXG4gKlxuICogQWRlbcOhcyBgQXV0aFNlcnZpY2UuaGFuZGxlQXV0aEVycm9yYCBhcGxhbmEgZWwgYEh0dHBFcnJvclJlc3BvbnNlYCBhIHVuXG4gKiBgQXV0aEVycm9yIHsgY29kZSwgbWVzc2FnZSB9YCAoY29kZS9tZXNzYWdlIGFsIG5pdmVsIHN1cGVyaW9yKS4gUG9yIGVzbyBlc3RlXG4gKiBoZWxwZXIgYWNlcHRhIEFNQkFTIGZvcm1hcyDigJQgZWwgY3J1ZG8geSBlbCBhcGxhbmFkby5cbiAqL1xuXG4vKipcbiAqIFJlc3VsdGFkbyBub3JtYWxpemFkbyBkZSBjdWFscXVpZXIgZXJyb3IuIEdhcmFudGl6YSB1bmEgZm9ybWEgZXN0YWJsZSB5XG4gKiBwcmVkZWNpYmxlIHBhcmEgcXVlIGxhcyB3ZWJhcHBzIG5vIHRlbmdhbiBxdWUgaGFjZXIgbmFycm93aW5nIG1hbnVhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcnByZXRlZEVycm9yIHtcbiAgLyoqIEPDs2RpZ28gZGVsIGJhY2tlbmQsIG8gZWwgc2VudGluZWwgYCdORVRXT1JLJ2AgLyBgJ1VOS05PV04nYC4gKi9cbiAgY29kZTogc3RyaW5nO1xuICAvKiogTWVuc2FqZSBkZWwgYmFja2VuZCAoZXNwYcOxb2wsIHVzZXItZnJpZW5kbHkpIG8gdW4gZ2Vuw6lyaWNvIGVuIGVzcGHDsW9sLiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBgb3BlcmF0aW9uSWRgIGRlbCBiYWNrZW5kLCBzaSB2aW5vLiDDmnRpbCBwYXJhIHNvcG9ydGUgLyB0cmFjaW5nLiAqL1xuICBvcGVyYXRpb25JZD86IHN0cmluZztcbiAgLyoqIEhUVFAgc3RhdHVzLCBzaSBhcGxpY2EgKGAwYCBwYXJhIGZhbGxvcyBkZSByZWQpLiAqL1xuICBzdGF0dXM/OiBudW1iZXI7XG4gIC8qKiBgdHJ1ZWAgc2kgZnVlIHVuIGZhbGxvIGRlIHJlZCAoc3RhdHVzIDAgLyBzaW4gcmVzcHVlc3RhKS4gKi9cbiAgaXNOZXR3b3JrOiBib29sZWFuO1xufVxuXG4vKiogTWVuc2FqZSBnZW7DqXJpY28gcGFyYSBmYWxsb3MgZGUgcmVkIChzaW4gY29uZXhpw7NuIC8gYmFja2VuZCBpbmFsY2FuemFibGUpLiAqL1xuY29uc3QgTkVUV09SS19NRVNTQUdFID0gJ1NpbiBjb25leGnDs24uIFZlcmlmaWNhIHR1IGNvbmV4acOzbiBhIGludGVybmV0IGUgaW50w6ludGFsbyBkZSBudWV2by4nO1xuXG4vKiogTWVuc2FqZSBnZW7DqXJpY28gcGFyYSBlcnJvcmVzIG5vIGlkZW50aWZpY2FibGVzLiAqL1xuY29uc3QgVU5LTk9XTl9NRVNTQUdFID0gJ09jdXJyacOzIHVuIGVycm9yIGluZXNwZXJhZG8uIEludMOpbnRhbG8gZGUgbnVldm8uJztcblxuLyoqIFNlbnRpbmVsIHBhcmEgZmFsbG9zIGRlIHJlZC4gKi9cbmNvbnN0IE5FVFdPUktfQ09ERSA9ICdORVRXT1JLJztcblxuLyoqIFNlbnRpbmVsIHBhcmEgZXJyb3JlcyBubyBpZGVudGlmaWNhYmxlcy4gKi9cbmNvbnN0IFVOS05PV05fQ09ERSA9ICdVTktOT1dOJztcblxuLyoqIFR5cGUgZ3VhcmQgbGF4bzogwr9lbCB2YWxvciBwYXJlY2UgdW4gYEh0dHBFcnJvclJlc3BvbnNlYD8gKi9cbmZ1bmN0aW9uIGlzSHR0cEVycm9yUmVzcG9uc2UoZXJyOiB1bmtub3duKTogZXJyIGlzIHtcbiAgc3RhdHVzPzogbnVtYmVyO1xuICBlcnJvcj86IHVua25vd247XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJlxuICAgIGVyciAhPT0gbnVsbCAmJlxuICAgIC8vIE5vIGltcG9ydGFtb3MgSHR0cEVycm9yUmVzcG9uc2UgcGFyYSBtYW50ZW5lciBsYSBmbiBsaWJyZSBkZSBBbmd1bGFyO1xuICAgIC8vIGRldGVjdGFtb3MgcG9yIHNoYXBlOiB0aWVuZSBgc3RhdHVzYCBudW3DqXJpY28geSBgbmFtZWAgcmVjb25vY2libGUgbyBgZXJyb3JgLlxuICAgICgnc3RhdHVzJyBpbiBlcnIgfHwgKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSkubmFtZSA9PT0gJ0h0dHBFcnJvclJlc3BvbnNlJylcbiAgKTtcbn1cblxuLyoqIERldnVlbHZlIHVuIHN0cmluZyBzaSBlbCB2YWxvciBsbyBlcyB5IG5vIGVzdMOhIHZhY8Otbzsgc2kgbm8sIGB1bmRlZmluZWRgLiAqL1xuZnVuY3Rpb24gYXNOb25FbXB0eVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemEgQ1VBTFFVSUVSIGVycm9yIGEgdW4gYEludGVycHJldGVkRXJyb3JgLlxuICpcbiAqIEZ1bmNpw7NuIHB1cmEg4oCUIHNpbiBkZXBlbmRlbmNpYXMgZGUgQW5ndWxhciBESSwgdGVzdGVhYmxlIHkgdXNhYmxlIGRlc2RlXG4gKiBjdWFscXVpZXIgbGFkbyAoY29tcG9uZW50ZXMsIHNlcnZpY2lvcywgaW50ZXJjZXB0b3Jlcywgc2NyaXB0cykuXG4gKlxuICogTnVuY2EgbGFuemE6IHNpZW1wcmUgZGV2dWVsdmUgdW4gYEludGVycHJldGVkRXJyb3JgIHbDoWxpZG8uXG4gKlxuICogQ2Fzb3MgY3ViaWVydG9zOlxuICogLSBgSHR0cEVycm9yUmVzcG9uc2VgIGNvbiBgc3RhdHVzID09PSAwYCAobyBzaW4gcmVzcHVlc3RhKSDihpIgZmFsbG8gZGUgcmVkLlxuICogLSBgSHR0cEVycm9yUmVzcG9uc2VgIGNvbiBib2R5IGB7IGNvZGUsIG1lc3NhZ2UsIG9wZXJhdGlvbklkIH1gIGRlbCBiYWNrZW5kLlxuICogLSBgQXV0aEVycm9yYCBhcGxhbmFkbyBgeyBjb2RlLCBtZXNzYWdlIH1gIChjb2RlL21lc3NhZ2UgdG9wLWxldmVsKS5cbiAqIC0gYEVycm9yYCBwbGFubyBkZSBKUyDihpIgYGNvZGU6ICdVTktOT1dOJ2AsIGBtZXNzYWdlOiBlcnIubWVzc2FnZWAuXG4gKiAtIEN1YWxxdWllciBvdHJhIGNvc2EgKHN0cmluZywgbnVsbCwgdW5kZWZpbmVkLCBvYmpldG8gcmFybykg4oaSIGdlbsOpcmljby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQodXJsKSk7XG4gKiB9IGNhdGNoIChlcnIpIHtcbiAqICAgY29uc3QgZSA9IGludGVycHJldEVycm9yKGVycik7XG4gKiAgIGlmIChlLmlzTmV0d29yaykge1xuICogICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IGUubWVzc2FnZSwgY29sb3I6ICdkYXJrJyB9KTtcbiAqICAgfSBlbHNlIHtcbiAqICAgICB0aGlzLmVycm9yQ29kZS5zZXQoZS5jb2RlKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnByZXRFcnJvcihlcnI6IHVua25vd24pOiBJbnRlcnByZXRlZEVycm9yIHtcbiAgLy8gMS4gSHR0cEVycm9yUmVzcG9uc2Ug4oCUIGVsIGNhc28gbcOhcyBjb23Dum4gYWwgaGFibGFyIGNvbiBlbCBiYWNrZW5kLlxuICBpZiAoaXNIdHRwRXJyb3JSZXNwb25zZShlcnIpKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdHlwZW9mIGVyci5zdGF0dXMgPT09ICdudW1iZXInID8gZXJyLnN0YXR1cyA6IHVuZGVmaW5lZDtcblxuICAgIC8vIDFhLiBGYWxsbyBkZSByZWQ6IHN0YXR1cyAwIG8gc2luIGJvZHkgZGUgcmVzcHVlc3RhIGRlbCBzZXJ2aWRvci5cbiAgICBpZiAoc3RhdHVzID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBORVRXT1JLX0NPREUsXG4gICAgICAgIG1lc3NhZ2U6IE5FVFdPUktfTUVTU0FHRSxcbiAgICAgICAgc3RhdHVzOiAwLFxuICAgICAgICBpc05ldHdvcms6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIDFiLiBCb2R5IGRlbCBiYWNrZW5kIGB7IGNvZGUsIG1lc3NhZ2UsIG9wZXJhdGlvbklkIH1gLlxuICAgIGNvbnN0IGJvZHkgPSBlcnIuZXJyb3I7XG4gICAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyAmJiBib2R5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBiID0gYm9keSBhcyB7XG4gICAgICAgIGNvZGU/OiB1bmtub3duO1xuICAgICAgICBtZXNzYWdlPzogdW5rbm93bjtcbiAgICAgICAgb3BlcmF0aW9uSWQ/OiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGFzTm9uRW1wdHlTdHJpbmcoYi5jb2RlKSA/PyBVTktOT1dOX0NPREUsXG4gICAgICAgIG1lc3NhZ2U6IGFzTm9uRW1wdHlTdHJpbmcoYi5tZXNzYWdlKSA/PyBVTktOT1dOX01FU1NBR0UsXG4gICAgICAgIG9wZXJhdGlvbklkOiBhc05vbkVtcHR5U3RyaW5nKGIub3BlcmF0aW9uSWQpLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGlzTmV0d29yazogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIDFjLiBIdHRwRXJyb3JSZXNwb25zZSBzaW4gYm9keSBlc3RydWN0dXJhZG8gKGVqLiBib2R5IHN0cmluZyAvIG51bGwpLlxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiBVTktOT1dOX0NPREUsXG4gICAgICBtZXNzYWdlOiBhc05vbkVtcHR5U3RyaW5nKGVyci5tZXNzYWdlKSA/PyBVTktOT1dOX01FU1NBR0UsXG4gICAgICBzdGF0dXMsXG4gICAgICBpc05ldHdvcms6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvLyAyLiBBdXRoRXJyb3IgYXBsYW5hZG8gdSBvYmpldG8gY29uIGBjb2RlYC9gbWVzc2FnZWAgdG9wLWxldmVsLlxuICBpZiAodHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiYgZXJyICE9PSBudWxsKSB7XG4gICAgY29uc3QgbyA9IGVyciBhcyB7XG4gICAgICBjb2RlPzogdW5rbm93bjtcbiAgICAgIG1lc3NhZ2U/OiB1bmtub3duO1xuICAgICAgb3BlcmF0aW9uSWQ/OiB1bmtub3duO1xuICAgIH07XG4gICAgY29uc3QgY29kZSA9IGFzTm9uRW1wdHlTdHJpbmcoby5jb2RlKTtcbiAgICBjb25zdCBtZXNzYWdlID0gYXNOb25FbXB0eVN0cmluZyhvLm1lc3NhZ2UpO1xuXG4gICAgaWYgKGNvZGUgfHwgbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogY29kZSA/PyBVTktOT1dOX0NPREUsXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gVU5LTk9XTl9NRVNTQUdFLFxuICAgICAgICBvcGVyYXRpb25JZDogYXNOb25FbXB0eVN0cmluZyhvLm9wZXJhdGlvbklkKSxcbiAgICAgICAgaXNOZXR3b3JrOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gMmIuIEVycm9yIHBsYW5vIGRlIEpTIChpbnN0YW5jaWEgZGUgRXJyb3Igc2luIGNvZGUpIOKAlCBgbWVzc2FnZWAgeWFcbiAgICAvLyAgICAgY3ViaWVydG8gYXJyaWJhOyBlc3RlIGJyYW5jaCBhdHJhcGEgRXJyb3IgY29uIG1lc3NhZ2UgdmFjw61vLlxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogVU5LTk9XTl9DT0RFLFxuICAgICAgICBtZXNzYWdlOiBhc05vbkVtcHR5U3RyaW5nKGVyci5tZXNzYWdlKSA/PyBVTktOT1dOX01FU1NBR0UsXG4gICAgICAgIGlzTmV0d29yazogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIDMuIEN1YWxxdWllciBvdHJhIGNvc2E6IHN0cmluZywgbnVsbCwgdW5kZWZpbmVkLCBvYmpldG8gcmFyby5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiBVTktOT1dOX0NPREUsXG4gICAgbWVzc2FnZTogVU5LTk9XTl9NRVNTQUdFLFxuICAgIGlzTmV0d29yazogZmFsc2UsXG4gIH07XG59XG4iXX0=
|
|
@@ -45,7 +45,7 @@ export { buildPath, extractPathParams, getCollectionPath, getDocumentId, isColle
|
|
|
45
45
|
// Storage
|
|
46
46
|
export { StorageService } from './storage.service';
|
|
47
47
|
// Messaging (FCM)
|
|
48
|
-
export { MessagingService } from './messaging.service';
|
|
48
|
+
export { MessagingService, } from './messaging.service';
|
|
49
49
|
// Notifications (Firestore)
|
|
50
50
|
export { NotificationsService } from './notifications.service';
|
|
51
51
|
// Analytics (GA4)
|
|
@@ -53,4 +53,4 @@ export { AnalyticsService } from './analytics.service';
|
|
|
53
53
|
export { AnalyticsRouterTracker } from './analytics-router-tracker';
|
|
54
54
|
export { AnalyticsErrorHandler } from './analytics-error-handler';
|
|
55
55
|
export * from './analytics-types';
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBRUgsUUFBUTtBQUNSLGNBQWMsU0FBUyxDQUFDO0FBRXhCLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpGLCtDQUErQztBQUMvQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsWUFBWSxHQUdiLE1BQU0saUJBQWlCLENBQUM7QUFFekIsWUFBWTtBQUNaLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsMENBQTBDO0FBQzFDLE9BQU8sRUFHTCwwQkFBMEIsRUFFMUIsZUFBZSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLGFBQWE7QUFDYixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsVUFBVTtBQUNWLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxrQkFBa0I7QUFDbEIsT0FBTyxFQUNMLGdCQUFnQixHQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLDRCQUE0QjtBQUM1QixPQUFPLEVBQXdCLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckYsa0JBQWtCO0FBQ2xCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZpcmViYXNlIFNlcnZpY2VzXG4gKlxuICogU2VydmljaW9zIHJldXRpbGl6YWJsZXMgcGFyYSBpbnRlZ3JhY2nDs24gY29uIEZpcmViYXNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBFbiBtYWluLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEZpcmViYXNlIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihBcHBDb21wb25lbnQsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSh7XG4gKiAgICAgICBmaXJlYmFzZTogZW52aXJvbm1lbnQuZmlyZWJhc2UsXG4gKiAgICAgICBwZXJzaXN0ZW5jZTogdHJ1ZSxcbiAqICAgICB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICpcbiAqIC8vIEVuIGNvbXBvbmVudGVzXG4gKiBpbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UsIEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBwcml2YXRlIGZpcmViYXNlID0gaW5qZWN0KEZpcmViYXNlU2VydmljZSk7XG4gKiAgIHByaXZhdGUgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZVNlcnZpY2UpO1xuICogfVxuICogYGBgXG4gKi9cblxuLy8gVGlwb3NcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4vLyBDb25maWd1cmFjacOzblxuZXhwb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcsIGhhc0VtdWxhdG9ycywgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSB9IGZyb20gJy4vY29uZmlnJztcblxuLy8gQ29uZmlndXJhY2nDs24gY29tcGFydGlkYSAoaGVscGVycyBnZW7DqXJpY29zKVxuZXhwb3J0IHtcbiAgY29sbGVjdGlvbnMsXG4gIGNyZWF0ZUZpcmViYXNlQ29uZmlnLFxuICBpc0VtdWxhdG9yTW9kZSxcbiAgc3RvcmFnZVBhdGhzLFxuICB0eXBlIEFwcElkLFxuICB0eXBlIENyZWF0ZUZpcmViYXNlQ29uZmlnT3B0aW9ucyxcbn0gZnJvbSAnLi9zaGFyZWQtY29uZmlnJztcblxuLy8gU2VydmljaW9zXG5leHBvcnQgeyBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICcuL2ZpcmViYXNlLnNlcnZpY2UnO1xuXG4vLyBGaXJlc3RvcmVcbmV4cG9ydCB7IEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICcuL2ZpcmVzdG9yZS5zZXJ2aWNlJztcblxuLy8gRmlyZXN0b3JlIENvbGxlY3Rpb25zIChGYWN0b3J5IFBhdHRlcm4pXG5leHBvcnQge1xuICBDb2xsZWN0aW9uT3B0aW9ucyxcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbixcbiAgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnksXG4gIFN1YkNvbGxlY3Rpb25SZWYsXG4gIFR5cGVkQ29sbGVjdGlvbixcbn0gZnJvbSAnLi9maXJlc3RvcmUtY29sbGVjdGlvbic7XG5cbi8vIFV0aWxpZGFkZXNcbmV4cG9ydCB7IFF1ZXJ5QnVpbGRlciwgcXVlcnkgfSBmcm9tICcuL3V0aWxzL3F1ZXJ5LWJ1aWxkZXInO1xuZXhwb3J0IHtcbiAgYnVpbGRQYXRoLFxuICBleHRyYWN0UGF0aFBhcmFtcyxcbiAgZ2V0Q29sbGVjdGlvblBhdGgsXG4gIGdldERvY3VtZW50SWQsXG4gIGlzQ29sbGVjdGlvblBhdGgsXG4gIGlzRG9jdW1lbnRQYXRoLFxuICBpc1ZhbGlkUGF0aCxcbiAgam9pblBhdGgsXG59IGZyb20gJy4vdXRpbHMvcGF0aC1idWlsZGVyJztcblxuLy8gU3RvcmFnZVxuZXhwb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbi8vIE1lc3NhZ2luZyAoRkNNKVxuZXhwb3J0IHtcbiAgTWVzc2FnaW5nU2VydmljZSxcbiAgdHlwZSBFbmFibGVQdXNoT3B0aW9ucyxcbiAgdHlwZSBSZWdpc3RlckRldmljZUZuLFxufSBmcm9tICcuL21lc3NhZ2luZy5zZXJ2aWNlJztcblxuLy8gTm90aWZpY2F0aW9ucyAoRmlyZXN0b3JlKVxuZXhwb3J0IHsgTm90aWZpY2F0aW9uRG9jdW1lbnQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xuXG4vLyBBbmFseXRpY3MgKEdBNClcbmV4cG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCB7IEFuYWx5dGljc1JvdXRlclRyYWNrZXIgfSBmcm9tICcuL2FuYWx5dGljcy1yb3V0ZXItdHJhY2tlcic7XG5leHBvcnQgeyBBbmFseXRpY3NFcnJvckhhbmRsZXIgfSBmcm9tICcuL2FuYWx5dGljcy1lcnJvci1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzLXR5cGVzJztcbiJdfQ==
|