@geekbears/gb-ngrx-stack-base 17.0.5 → 20.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 (39) hide show
  1. package/fesm2022/geekbears-gb-ngrx-stack-base.mjs.map +1 -1
  2. package/index.d.ts +152 -4
  3. package/package.json +7 -5
  4. package/domain/entities/index.d.ts +0 -1
  5. package/domain/entities/user.d.ts +0 -9
  6. package/domain/index.d.ts +0 -1
  7. package/esm2022/domain/entities/index.mjs +0 -2
  8. package/esm2022/domain/entities/user.mjs +0 -2
  9. package/esm2022/domain/index.mjs +0 -2
  10. package/esm2022/geekbears-gb-ngrx-stack-base.mjs +0 -5
  11. package/esm2022/index.mjs +0 -5
  12. package/esm2022/infrastructure/index.mjs +0 -2
  13. package/esm2022/infrastructure/models/index.mjs +0 -3
  14. package/esm2022/infrastructure/models/loaded-data.model.mjs +0 -55
  15. package/esm2022/infrastructure/models/user.model.mjs +0 -16
  16. package/esm2022/types/api-response.type.mjs +0 -2
  17. package/esm2022/types/do-interface.type.mjs +0 -2
  18. package/esm2022/types/failure.type.mjs +0 -6
  19. package/esm2022/types/index.mjs +0 -4
  20. package/esm2022/utils/authentication-change-base-action-token.mjs +0 -7
  21. package/esm2022/utils/failure.helper.mjs +0 -44
  22. package/esm2022/utils/http-response-handle.helper.mjs +0 -41
  23. package/esm2022/utils/index.mjs +0 -6
  24. package/esm2022/utils/rxjs.helper.mjs +0 -62
  25. package/esm2022/utils/test.mjs +0 -6
  26. package/infrastructure/index.d.ts +0 -1
  27. package/infrastructure/models/index.d.ts +0 -2
  28. package/infrastructure/models/loaded-data.model.d.ts +0 -22
  29. package/infrastructure/models/user.model.d.ts +0 -12
  30. package/types/api-response.type.d.ts +0 -18
  31. package/types/do-interface.type.d.ts +0 -3
  32. package/types/failure.type.d.ts +0 -8
  33. package/types/index.d.ts +0 -3
  34. package/utils/authentication-change-base-action-token.d.ts +0 -14
  35. package/utils/failure.helper.d.ts +0 -17
  36. package/utils/http-response-handle.helper.d.ts +0 -9
  37. package/utils/index.d.ts +0 -5
  38. package/utils/rxjs.helper.d.ts +0 -30
  39. package/utils/test.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"geekbears-gb-ngrx-stack-base.mjs","sources":["../../../projects/gb-ngrx-stack-base/src/infrastructure/models/user.model.ts","../../../projects/gb-ngrx-stack-base/src/infrastructure/models/loaded-data.model.ts","../../../projects/gb-ngrx-stack-base/src/types/failure.type.ts","../../../projects/gb-ngrx-stack-base/src/utils/authentication-change-base-action-token.ts","../../../projects/gb-ngrx-stack-base/src/utils/failure.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/http-response-handle.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/rxjs.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/test.ts","../../../projects/gb-ngrx-stack-base/src/geekbears-gb-ngrx-stack-base.ts"],"sourcesContent":["import { IUser } from \"../../domain\";\n\nexport class UserModel implements IUser {\n email: string;\n firstName: string;\n lastName: string;\n roles: string[];\n permissions: string[];\n accountConfirmedAt?: Date | undefined;\n id: string;\n\n constructor(data: Partial<IUser>) {\n this.email = data.email ?? \"\";\n this.id = data.id ?? \"\";\n this.firstName = data.firstName ?? \"\";\n this.lastName = data.lastName ?? \"\";\n this.roles = data.permissions ?? [];\n this.permissions = data.permissions ?? [];\n this.accountConfirmedAt = data.accountConfirmedAt;\n }\n\n get fullName(): string {\n return `${this.firstName} ${this.lastName}`\n };\n}\n","import { isNil } from 'lodash-es';\nimport { Failure } from '../../types';\n\nexport interface ILoadedData<T> {\n loading: boolean;\n timestamp: Date | null;\n failure: Failure | null;\n value: T | null;\n}\n\nexport class LoadedData<T> {\n _class: 'LoadedData' = 'LoadedData';\n loading: boolean = false;\n timestamp: Date | null = null;\n failure: Failure | null = null;\n value: T | null = null;\n\n get errored(): boolean {\n return this.failure != undefined && this.failure != null;\n }\n\n constructor(data?: Partial<ILoadedData<T>>) {\n this.loading = data?.loading ?? this.loading;\n this.timestamp = data?.timestamp ?? !isNil(data?.value) ? new Date() : this.timestamp;\n this.value = data?.value ?? this.value;\n this.failure = data?.failure ?? this.failure;\n }\n\n equals(other: LoadedData<T>): boolean {\n if (this === other) return true;\n\n return (\n other instanceof LoadedData &&\n other.loading === this.loading &&\n other.timestamp === this.timestamp &&\n other.value === this.value &&\n other.failure?.code === this.failure?.code &&\n JSON.stringify(other.failure?.messages) === JSON.stringify(this.failure?.messages)\n );\n }\n\n copyWith(data: Partial<LoadedData<T>>): LoadedData<T> {\n return new LoadedData<T>(Object.assign({}, this, data));\n }\n\n copyWithData({ loading = false, value }: Partial<LoadedData<T>>): LoadedData<T> {\n return new LoadedData<T>({\n loading,\n timestamp: !isNil(value) ? new Date() : this.timestamp,\n value,\n failure: null,\n });\n }\n\n copyWithLoading(): LoadedData<T> {\n return this.copyWith({\n loading: true,\n });\n }\n\n toObject(): ILoadedData<T> {\n return {\n loading: this.loading,\n timestamp: this.timestamp,\n value: this.value,\n failure: this.failure,\n };\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n}\n","export interface Failure {\n code: FailureType | string;\n messages?: string[];\n}\n\nexport enum FailureType {\n RateLimitExceeded = 'RateLimitExceeded',\n}\n\nexport const UnkownFailureCode = \"unknown\";\n","import { InjectionToken } from '@angular/core';\nimport { Action, ActionCreator, Creator, NotAllowedCheck } from '@ngrx/store';\nimport { TypedAction } from '@ngrx/store/src/models';\nimport { IAuthenticationResponse } from '../types';\n\n/**\n * The idea of this token is to have a way to register a general action that deals with authentication changes\n * this way different libraries can rely on it either by subscribing it or dispatching it\n */\nexport const AuthenticationChangeBaseActionToken = new InjectionToken<AuthenticationChangeAction>(\n 'AuthenticationChangeBaseActionToken',\n);\n\nexport type AuthenticationChangeAction = ActionCreator<\n string,\n (\n props: AuthenticationChangeActionProps & NotAllowedCheck<AuthenticationChangeActionProps>,\n ) => AuthenticationChangeActionProps & TypedAction<string>\n>;\n\nexport interface AuthenticationChangeActionProps {\n authenticated: boolean;\n data: IAuthenticationResponse | null;\n}\n","import { get, has, isEmpty, isNil, isObject } from \"lodash-es\";\nimport { OperatorFunction } from \"rxjs\";\nimport { Failure } from \"../types\";\n\nexport type FailureMessageWrapper = (message: string) => string;\n\n/**\n * \n * @param failure The Failure as input\n * @param or If failure is null or couln't not retrieve any message from it, use this instead. Defaults to '' empty string\n * @param messageWrapper Failures often return an array of messages, this give you the oportunity to wrap each message between whatever you want\n * @param joiner The postfix that will join each message together, default behavior is to join by line break '\\n'\n * @returns A sigle string with the failure messages.\n */\nexport function getFailureMessageOr(failure: Failure | null | undefined, or: string = \"\", messageWrapper?: FailureMessageWrapper, joiner?: string): string {\n let messages: string[] = [];\n\n if(isNil(failure)) {\n return or;\n }\n\n if(!isNil(failure.messages) && !isEmpty(failure.messages)) {\n messages = failure.messages.map((message) => {\n if(isNil(messageWrapper)) {\n return message;\n }\n return messageWrapper(message);\n })\n } else if (!isNil(failure.code)) {\n messages = [failure.code];\n }\n\n if(isEmpty(messages)) {\n return or;\n }\n\n return messages.join(joiner?? \"\\n\");\n}\n\n/**\n * Since Failure is not a runtime type but just an interface this check if given object can be treated as a Failure\n * @param object Any object expected to be a Failure\n * @returns {boolean}\n */\nexport function maybeFailure(object: any): boolean {\n if(!isObject(object)) return false;\n\n if(has(object, \"code\")) {\n return true;\n }\n\n return false;\n}","import { HttpErrorResponse } from '@angular/common/http';\nimport { get, isEmpty, isNil, isObject, first, camelCase } from 'lodash-es';\nimport { Failure, UnkownFailureCode } from '../types';\n\nexport function httpResponseHandle(params: any) {}\n\n/**\n *\n * @param error Throwed error by a function on the call stack\n * @returns Returns a valid {Failure}\n */\nexport function httpResponseFailureHandle(error: Error | HttpErrorResponse): Failure {\n if (isObject(error) && error instanceof HttpErrorResponse) {\n let messages: string[] = get(error.error, 'messages', []);\n\n // to support old applications\n let singleMessage = get(error.error, 'message');\n if (isEmpty(messages) && !isNil(singleMessage)) {\n messages.push(singleMessage);\n }\n // to support old applications\n if (isNil(singleMessage) && !isNil(get(error.error, 'error'))) {\n let message = get(get(error.error, 'error'), 'message');\n if (!isNil(message)) messages.push(message);\n }\n return {\n code: get(error.error, 'errorCode') || camelCase(first(messages)) || error.message,\n messages: messages,\n };\n } else if (isObject(error) && error instanceof Error) {\n return {\n code: error.name,\n messages: !isNil(error.message) && !isEmpty(error.message) ? [error.message] : [],\n };\n } else {\n return {\n code: UnkownFailureCode,\n };\n }\n}\n","import { HttpErrorResponse } from \"@angular/common/http\"\nimport { isObject } from \"lodash-es\"\nimport { of, OperatorFunction, throwError } from \"rxjs\"\nimport { catchError, map } from \"rxjs/operators\"\nimport { Failure } from \"../types\"\nimport { FailureMessageWrapper, getFailureMessageOr, maybeFailure } from \"./failure.helper\"\nimport { httpResponseFailureHandle } from \"./http-response-handle.helper\"\n\n/**\n * This operator helps you catching any exception on your API call and tries to get a Failure form it and provides you with an easy way \n * of proccessing that failure into something else\n * @param converter Mapper function to dispatch given value instead of the Failure\n * @returns Returns any value provided ny the converter\n */\nexport function catchAndGetFromFailureRxOp<T>(converter: (failure: Failure) => T): OperatorFunction<any, T> {\n return catchError((error) => {\n let failure: Failure;\n if(isObject(error) && (error instanceof Error || error instanceof HttpErrorResponse)) {\n failure = httpResponseFailureHandle(error);\n } else if (maybeFailure(error)) {\n failure = error;\n } else {\n failure = httpResponseFailureHandle(error);\n }\n return of(\n converter(failure),\n );\n });\n}\n\n/**\n * Catch an error, throws a Failure in the onservabe pipeline\n * @returns Catch any error from the proccesed pipeline and throws a Failure instead\n */\nexport const catchAndThrowFailureRxOp = (): OperatorFunction<any, Failure> => {\n return catchError((error) => {\n let failure: Failure = httpResponseFailureHandle(error);\n return throwError(failure);\n });\n}\n\n/**\n * Catch an error and gets a Failure from it\n * @returns Returns a Failure\n */\nexport const catchGetFailureRxOp = (): OperatorFunction<any, Failure> => {\n return catchError((error) => {\n let failure: Failure = httpResponseFailureHandle(error);\n return of(failure);\n });\n}\n\n/**\n * This converts failure to a message using same logic as '[getFailureMessageOr]'\n * @see {@link getFailureMessageOr}\n * \n * @param or \n * @param messageWrapper \n * @param joiner \n * @returns \n */\nexport const getFailureMessageRxOp = (or: string = \"\", messageWrapper?: FailureMessageWrapper, joiner?: string): OperatorFunction<Failure | null | undefined, string> => {\n return map((failure) => {\n return getFailureMessageOr(failure, or, messageWrapper, joiner);\n });\n}","export function mockHttpResponse(data: object): object {\n return {\n data: data,\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geekbears-gb-ngrx-stack-base.mjs","sources":["../../../projects/gb-ngrx-stack-base/src/infrastructure/models/user.model.ts","../../../projects/gb-ngrx-stack-base/src/infrastructure/models/loaded-data.model.ts","../../../projects/gb-ngrx-stack-base/src/types/failure.type.ts","../../../projects/gb-ngrx-stack-base/src/utils/authentication-change-base-action-token.ts","../../../projects/gb-ngrx-stack-base/src/utils/failure.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/http-response-handle.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/rxjs.helper.ts","../../../projects/gb-ngrx-stack-base/src/utils/test.ts","../../../projects/gb-ngrx-stack-base/src/geekbears-gb-ngrx-stack-base.ts"],"sourcesContent":["import { IUser } from \"../../domain\";\n\nexport class UserModel implements IUser {\n email: string;\n firstName: string;\n lastName: string;\n roles: string[];\n permissions: string[];\n accountConfirmedAt?: Date | undefined;\n id: string;\n\n constructor(data: Partial<IUser>) {\n this.email = data.email ?? \"\";\n this.id = data.id ?? \"\";\n this.firstName = data.firstName ?? \"\";\n this.lastName = data.lastName ?? \"\";\n this.roles = data.permissions ?? [];\n this.permissions = data.permissions ?? [];\n this.accountConfirmedAt = data.accountConfirmedAt;\n }\n\n get fullName(): string {\n return `${this.firstName} ${this.lastName}`\n };\n}\n","import { isNil } from 'lodash-es';\nimport { Failure } from '../../types';\n\nexport interface ILoadedData<T> {\n loading: boolean;\n timestamp: Date | null;\n failure: Failure | null;\n value: T | null;\n}\n\nexport class LoadedData<T> {\n _class: 'LoadedData' = 'LoadedData';\n loading: boolean = false;\n timestamp: Date | null = null;\n failure: Failure | null = null;\n value: T | null = null;\n\n get errored(): boolean {\n return this.failure != undefined && this.failure != null;\n }\n\n constructor(data?: Partial<ILoadedData<T>>) {\n this.loading = data?.loading ?? this.loading;\n this.timestamp = data?.timestamp ?? !isNil(data?.value) ? new Date() : this.timestamp;\n this.value = data?.value ?? this.value;\n this.failure = data?.failure ?? this.failure;\n }\n\n equals(other: LoadedData<T>): boolean {\n if (this === other) return true;\n\n return (\n other instanceof LoadedData &&\n other.loading === this.loading &&\n other.timestamp === this.timestamp &&\n other.value === this.value &&\n other.failure?.code === this.failure?.code &&\n JSON.stringify(other.failure?.messages) === JSON.stringify(this.failure?.messages)\n );\n }\n\n copyWith(data: Partial<LoadedData<T>>): LoadedData<T> {\n return new LoadedData<T>(Object.assign({}, this, data));\n }\n\n copyWithData({ loading = false, value }: Partial<LoadedData<T>>): LoadedData<T> {\n return new LoadedData<T>({\n loading,\n timestamp: !isNil(value) ? new Date() : this.timestamp,\n value,\n failure: null,\n });\n }\n\n copyWithLoading(): LoadedData<T> {\n return this.copyWith({\n loading: true,\n });\n }\n\n toObject(): ILoadedData<T> {\n return {\n loading: this.loading,\n timestamp: this.timestamp,\n value: this.value,\n failure: this.failure,\n };\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n}\n","export interface Failure {\n code: FailureType | string;\n messages?: string[];\n}\n\nexport enum FailureType {\n RateLimitExceeded = 'RateLimitExceeded',\n}\n\nexport const UnkownFailureCode = \"unknown\";\n","import { InjectionToken } from '@angular/core';\nimport { Action, ActionCreator, NotAllowedCheck } from '@ngrx/store';\nexport interface TypedAction<T extends string> extends Action {\n readonly type: T;\n}\nimport { IAuthenticationResponse } from '../types';\n\n/**\n * The idea of this token is to have a way to register a general action that deals with authentication changes\n * this way different libraries can rely on it either by subscribing it or dispatching it\n */\nexport const AuthenticationChangeBaseActionToken = new InjectionToken<AuthenticationChangeAction>(\n 'AuthenticationChangeBaseActionToken',\n);\n\nexport type AuthenticationChangeAction = ActionCreator<\n string,\n (\n props: AuthenticationChangeActionProps & NotAllowedCheck<AuthenticationChangeActionProps>,\n ) => AuthenticationChangeActionProps & TypedAction<string>\n>;\n\nexport interface AuthenticationChangeActionProps {\n authenticated: boolean;\n data: IAuthenticationResponse | null;\n}\n","import { get, has, isEmpty, isNil, isObject } from \"lodash-es\";\nimport { OperatorFunction } from \"rxjs\";\nimport { Failure } from \"../types\";\n\nexport type FailureMessageWrapper = (message: string) => string;\n\n/**\n * \n * @param failure The Failure as input\n * @param or If failure is null or couln't not retrieve any message from it, use this instead. Defaults to '' empty string\n * @param messageWrapper Failures often return an array of messages, this give you the oportunity to wrap each message between whatever you want\n * @param joiner The postfix that will join each message together, default behavior is to join by line break '\\n'\n * @returns A sigle string with the failure messages.\n */\nexport function getFailureMessageOr(failure: Failure | null | undefined, or: string = \"\", messageWrapper?: FailureMessageWrapper, joiner?: string): string {\n let messages: string[] = [];\n\n if(isNil(failure)) {\n return or;\n }\n\n if(!isNil(failure.messages) && !isEmpty(failure.messages)) {\n messages = failure.messages.map((message) => {\n if(isNil(messageWrapper)) {\n return message;\n }\n return messageWrapper(message);\n })\n } else if (!isNil(failure.code)) {\n messages = [failure.code];\n }\n\n if(isEmpty(messages)) {\n return or;\n }\n\n return messages.join(joiner?? \"\\n\");\n}\n\n/**\n * Since Failure is not a runtime type but just an interface this check if given object can be treated as a Failure\n * @param object Any object expected to be a Failure\n * @returns {boolean}\n */\nexport function maybeFailure(object: any): boolean {\n if(!isObject(object)) return false;\n\n if(has(object, \"code\")) {\n return true;\n }\n\n return false;\n}","import { HttpErrorResponse } from '@angular/common/http';\nimport { get, isEmpty, isNil, isObject, first, camelCase } from 'lodash-es';\nimport { Failure, UnkownFailureCode } from '../types';\n\nexport function httpResponseHandle(params: any) {}\n\n/**\n *\n * @param error Throwed error by a function on the call stack\n * @returns Returns a valid {Failure}\n */\nexport function httpResponseFailureHandle(error: Error | HttpErrorResponse): Failure {\n if (isObject(error) && error instanceof HttpErrorResponse) {\n let messages: string[] = get(error.error, 'messages', []);\n\n // to support old applications\n let singleMessage = get(error.error, 'message');\n if (isEmpty(messages) && !isNil(singleMessage)) {\n messages.push(singleMessage);\n }\n // to support old applications\n if (isNil(singleMessage) && !isNil(get(error.error, 'error'))) {\n let message = get(get(error.error, 'error'), 'message');\n if (!isNil(message)) messages.push(message);\n }\n return {\n code: get(error.error, 'errorCode') || camelCase(first(messages)) || error.message,\n messages: messages,\n };\n } else if (isObject(error) && error instanceof Error) {\n return {\n code: error.name,\n messages: !isNil(error.message) && !isEmpty(error.message) ? [error.message] : [],\n };\n } else {\n return {\n code: UnkownFailureCode,\n };\n }\n}\n","import { HttpErrorResponse } from \"@angular/common/http\"\nimport { isObject } from \"lodash-es\"\nimport { of, OperatorFunction, throwError } from \"rxjs\"\nimport { catchError, map } from \"rxjs/operators\"\nimport { Failure } from \"../types\"\nimport { FailureMessageWrapper, getFailureMessageOr, maybeFailure } from \"./failure.helper\"\nimport { httpResponseFailureHandle } from \"./http-response-handle.helper\"\n\n/**\n * This operator helps you catching any exception on your API call and tries to get a Failure form it and provides you with an easy way \n * of proccessing that failure into something else\n * @param converter Mapper function to dispatch given value instead of the Failure\n * @returns Returns any value provided ny the converter\n */\nexport function catchAndGetFromFailureRxOp<T>(converter: (failure: Failure) => T): OperatorFunction<any, T> {\n return catchError((error) => {\n let failure: Failure;\n if(isObject(error) && (error instanceof Error || error instanceof HttpErrorResponse)) {\n failure = httpResponseFailureHandle(error);\n } else if (maybeFailure(error)) {\n failure = error;\n } else {\n failure = httpResponseFailureHandle(error);\n }\n return of(\n converter(failure),\n );\n });\n}\n\n/**\n * Catch an error, throws a Failure in the onservabe pipeline\n * @returns Catch any error from the proccesed pipeline and throws a Failure instead\n */\nexport const catchAndThrowFailureRxOp = (): OperatorFunction<any, Failure> => {\n return catchError((error) => {\n let failure: Failure = httpResponseFailureHandle(error);\n return throwError(failure);\n });\n}\n\n/**\n * Catch an error and gets a Failure from it\n * @returns Returns a Failure\n */\nexport const catchGetFailureRxOp = (): OperatorFunction<any, Failure> => {\n return catchError((error) => {\n let failure: Failure = httpResponseFailureHandle(error);\n return of(failure);\n });\n}\n\n/**\n * This converts failure to a message using same logic as '[getFailureMessageOr]'\n * @see {@link getFailureMessageOr}\n * \n * @param or \n * @param messageWrapper \n * @param joiner \n * @returns \n */\nexport const getFailureMessageRxOp = (or: string = \"\", messageWrapper?: FailureMessageWrapper, joiner?: string): OperatorFunction<Failure | null | undefined, string> => {\n return map((failure) => {\n return getFailureMessageOr(failure, or, messageWrapper, joiner);\n });\n}","export function mockHttpResponse(data: object): object {\n return {\n data: data,\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,4 +1,152 @@
1
- export * from "./domain";
2
- export * from "./infrastructure";
3
- export * from "./types";
4
- export * from "./utils";
1
+ import { InjectionToken } from '@angular/core';
2
+ import { Action, ActionCreator, NotAllowedCheck } from '@ngrx/store';
3
+ import { HttpErrorResponse } from '@angular/common/http';
4
+ import { OperatorFunction } from 'rxjs';
5
+
6
+ interface IUser {
7
+ id: string;
8
+ email: string;
9
+ firstName: string;
10
+ lastName: string;
11
+ roles: string[] | undefined;
12
+ permissions: string[] | undefined;
13
+ accountConfirmedAt?: Date;
14
+ }
15
+
16
+ declare class UserModel implements IUser {
17
+ email: string;
18
+ firstName: string;
19
+ lastName: string;
20
+ roles: string[];
21
+ permissions: string[];
22
+ accountConfirmedAt?: Date | undefined;
23
+ id: string;
24
+ constructor(data: Partial<IUser>);
25
+ get fullName(): string;
26
+ }
27
+
28
+ interface IAuthenticationResponse {
29
+ id: string;
30
+ token: string;
31
+ expired: boolean;
32
+ user?: IUser | null;
33
+ refreshToken?: string | null;
34
+ deviceInfo?: IAuthDeviceInfo;
35
+ copyWith(data: Partial<IAuthenticationResponse>): IAuthenticationResponse;
36
+ }
37
+ interface IAuthDeviceInfo {
38
+ id: string;
39
+ name: string;
40
+ toJson(): string;
41
+ toMap(): {
42
+ [key: string]: any;
43
+ };
44
+ }
45
+
46
+ interface Failure {
47
+ code: FailureType | string;
48
+ messages?: string[];
49
+ }
50
+ declare enum FailureType {
51
+ RateLimitExceeded = "RateLimitExceeded"
52
+ }
53
+ declare const UnkownFailureCode = "unknown";
54
+
55
+ type DoInterface<T, K extends PropertyKey = never> = Omit<{
56
+ [P in keyof T as T[P] extends Function ? never : P extends K ? never : P]: T[P];
57
+ }, '_class'>;
58
+
59
+ interface ILoadedData<T> {
60
+ loading: boolean;
61
+ timestamp: Date | null;
62
+ failure: Failure | null;
63
+ value: T | null;
64
+ }
65
+ declare class LoadedData<T> {
66
+ _class: 'LoadedData';
67
+ loading: boolean;
68
+ timestamp: Date | null;
69
+ failure: Failure | null;
70
+ value: T | null;
71
+ get errored(): boolean;
72
+ constructor(data?: Partial<ILoadedData<T>>);
73
+ equals(other: LoadedData<T>): boolean;
74
+ copyWith(data: Partial<LoadedData<T>>): LoadedData<T>;
75
+ copyWithData({ loading, value }: Partial<LoadedData<T>>): LoadedData<T>;
76
+ copyWithLoading(): LoadedData<T>;
77
+ toObject(): ILoadedData<T>;
78
+ toString(): string;
79
+ }
80
+
81
+ interface TypedAction<T extends string> extends Action {
82
+ readonly type: T;
83
+ }
84
+
85
+ /**
86
+ * The idea of this token is to have a way to register a general action that deals with authentication changes
87
+ * this way different libraries can rely on it either by subscribing it or dispatching it
88
+ */
89
+ declare const AuthenticationChangeBaseActionToken: InjectionToken<AuthenticationChangeAction>;
90
+ type AuthenticationChangeAction = ActionCreator<string, (props: AuthenticationChangeActionProps & NotAllowedCheck<AuthenticationChangeActionProps>) => AuthenticationChangeActionProps & TypedAction<string>>;
91
+ interface AuthenticationChangeActionProps {
92
+ authenticated: boolean;
93
+ data: IAuthenticationResponse | null;
94
+ }
95
+
96
+ type FailureMessageWrapper = (message: string) => string;
97
+ /**
98
+ *
99
+ * @param failure The Failure as input
100
+ * @param or If failure is null or couln't not retrieve any message from it, use this instead. Defaults to '' empty string
101
+ * @param messageWrapper Failures often return an array of messages, this give you the oportunity to wrap each message between whatever you want
102
+ * @param joiner The postfix that will join each message together, default behavior is to join by line break '\n'
103
+ * @returns A sigle string with the failure messages.
104
+ */
105
+ declare function getFailureMessageOr(failure: Failure | null | undefined, or?: string, messageWrapper?: FailureMessageWrapper, joiner?: string): string;
106
+ /**
107
+ * Since Failure is not a runtime type but just an interface this check if given object can be treated as a Failure
108
+ * @param object Any object expected to be a Failure
109
+ * @returns {boolean}
110
+ */
111
+ declare function maybeFailure(object: any): boolean;
112
+
113
+ declare function httpResponseHandle(params: any): void;
114
+ /**
115
+ *
116
+ * @param error Throwed error by a function on the call stack
117
+ * @returns Returns a valid {Failure}
118
+ */
119
+ declare function httpResponseFailureHandle(error: Error | HttpErrorResponse): Failure;
120
+
121
+ /**
122
+ * This operator helps you catching any exception on your API call and tries to get a Failure form it and provides you with an easy way
123
+ * of proccessing that failure into something else
124
+ * @param converter Mapper function to dispatch given value instead of the Failure
125
+ * @returns Returns any value provided ny the converter
126
+ */
127
+ declare function catchAndGetFromFailureRxOp<T>(converter: (failure: Failure) => T): OperatorFunction<any, T>;
128
+ /**
129
+ * Catch an error, throws a Failure in the onservabe pipeline
130
+ * @returns Catch any error from the proccesed pipeline and throws a Failure instead
131
+ */
132
+ declare const catchAndThrowFailureRxOp: () => OperatorFunction<any, Failure>;
133
+ /**
134
+ * Catch an error and gets a Failure from it
135
+ * @returns Returns a Failure
136
+ */
137
+ declare const catchGetFailureRxOp: () => OperatorFunction<any, Failure>;
138
+ /**
139
+ * This converts failure to a message using same logic as '[getFailureMessageOr]'
140
+ * @see {@link getFailureMessageOr}
141
+ *
142
+ * @param or
143
+ * @param messageWrapper
144
+ * @param joiner
145
+ * @returns
146
+ */
147
+ declare const getFailureMessageRxOp: (or?: string, messageWrapper?: FailureMessageWrapper, joiner?: string) => OperatorFunction<Failure | null | undefined, string>;
148
+
149
+ declare function mockHttpResponse(data: object): object;
150
+
151
+ export { AuthenticationChangeBaseActionToken, FailureType, LoadedData, UnkownFailureCode, UserModel, catchAndGetFromFailureRxOp, catchAndThrowFailureRxOp, catchGetFailureRxOp, getFailureMessageOr, getFailureMessageRxOp, httpResponseFailureHandle, httpResponseHandle, maybeFailure, mockHttpResponse };
152
+ export type { AuthenticationChangeAction, AuthenticationChangeActionProps, DoInterface, Failure, FailureMessageWrapper, IAuthDeviceInfo, IAuthenticationResponse, ILoadedData, IUser, TypedAction };
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@geekbears/gb-ngrx-stack-base",
3
- "version": "17.0.5",
3
+ "version": "20.0.0",
4
+ "license": "MIT",
4
5
  "peerDependencies": {
5
- "@angular/common": "^17.2.1",
6
- "@angular/core": "^17.2.1"
6
+ "@angular/common": "^20.0.0",
7
+ "@angular/core": "^20.0.0",
8
+ "@ngrx/store": "^20.0.0",
9
+ "lodash-es": "^4.17.0",
10
+ "rxjs": "^7.8.0"
7
11
  },
8
12
  "dependencies": {
9
13
  "tslib": "^2.3.0"
@@ -16,8 +20,6 @@
16
20
  },
17
21
  ".": {
18
22
  "types": "./index.d.ts",
19
- "esm2022": "./esm2022/geekbears-gb-ngrx-stack-base.mjs",
20
- "esm": "./esm2022/geekbears-gb-ngrx-stack-base.mjs",
21
23
  "default": "./fesm2022/geekbears-gb-ngrx-stack-base.mjs"
22
24
  }
23
25
  },
@@ -1 +0,0 @@
1
- export * from "./user";
@@ -1,9 +0,0 @@
1
- export interface IUser {
2
- id: string;
3
- email: string;
4
- firstName: string;
5
- lastName: string;
6
- roles: string[] | undefined;
7
- permissions: string[] | undefined;
8
- accountConfirmedAt?: Date;
9
- }
package/domain/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./entities";
@@ -1,2 +0,0 @@
1
- export * from "./user";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2RvbWFpbi9lbnRpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3VzZXJcIjsiXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2diLW5ncngtc3RhY2stYmFzZS9zcmMvZG9tYWluL2VudGl0aWVzL3VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVVzZXIge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xuICAgIHJvbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgYWNjb3VudENvbmZpcm1lZEF0PzogRGF0ZTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from "./entities";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2RvbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2VudGl0aWVzXCI7Il19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2Vla2JlYXJzLWdiLW5ncngtc3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2diLW5ncngtc3RhY2stYmFzZS9zcmMvZ2Vla2JlYXJzLWdiLW5ncngtc3RhY2stYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
package/esm2022/index.mjs DELETED
@@ -1,5 +0,0 @@
1
- export * from "./domain";
2
- export * from "./infrastructure";
3
- export * from "./types";
4
- export * from "./utils";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9kb21haW5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2luZnJhc3RydWN0dXJlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjsiXX0=
@@ -1,2 +0,0 @@
1
- export * from "./models";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2luZnJhc3RydWN0dXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzXCI7Il19
@@ -1,3 +0,0 @@
1
- export * from './user.model';
2
- export * from './loaded-data.model';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2luZnJhc3RydWN0dXJlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91c2VyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGVkLWRhdGEubW9kZWwnO1xuIl19
@@ -1,55 +0,0 @@
1
- import { isNil } from 'lodash-es';
2
- export class LoadedData {
3
- get errored() {
4
- return this.failure != undefined && this.failure != null;
5
- }
6
- constructor(data) {
7
- this._class = 'LoadedData';
8
- this.loading = false;
9
- this.timestamp = null;
10
- this.failure = null;
11
- this.value = null;
12
- this.loading = data?.loading ?? this.loading;
13
- this.timestamp = data?.timestamp ?? !isNil(data?.value) ? new Date() : this.timestamp;
14
- this.value = data?.value ?? this.value;
15
- this.failure = data?.failure ?? this.failure;
16
- }
17
- equals(other) {
18
- if (this === other)
19
- return true;
20
- return (other instanceof LoadedData &&
21
- other.loading === this.loading &&
22
- other.timestamp === this.timestamp &&
23
- other.value === this.value &&
24
- other.failure?.code === this.failure?.code &&
25
- JSON.stringify(other.failure?.messages) === JSON.stringify(this.failure?.messages));
26
- }
27
- copyWith(data) {
28
- return new LoadedData(Object.assign({}, this, data));
29
- }
30
- copyWithData({ loading = false, value }) {
31
- return new LoadedData({
32
- loading,
33
- timestamp: !isNil(value) ? new Date() : this.timestamp,
34
- value,
35
- failure: null,
36
- });
37
- }
38
- copyWithLoading() {
39
- return this.copyWith({
40
- loading: true,
41
- });
42
- }
43
- toObject() {
44
- return {
45
- loading: this.loading,
46
- timestamp: this.timestamp,
47
- value: this.value,
48
- failure: this.failure,
49
- };
50
- }
51
- toString() {
52
- return JSON.stringify(this);
53
- }
54
- }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVkLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL2luZnJhc3RydWN0dXJlL21vZGVscy9sb2FkZWQtZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBVWxDLE1BQU0sT0FBTyxVQUFVO0lBT25CLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQVksSUFBOEI7UUFWMUMsV0FBTSxHQUFpQixZQUFZLENBQUM7UUFDcEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQW1CLElBQUksQ0FBQztRQUMvQixVQUFLLEdBQWEsSUFBSSxDQUFDO1FBT25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFvQjtRQUN2QixJQUFJLElBQUksS0FBSyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFaEMsT0FBTyxDQUNILEtBQUssWUFBWSxVQUFVO1lBQzNCLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU87WUFDOUIsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUztZQUNsQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLO1lBQzFCLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSTtZQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUNyRixDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUE0QjtRQUNqQyxPQUFPLElBQUksVUFBVSxDQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBMEI7UUFDM0QsT0FBTyxJQUFJLFVBQVUsQ0FBSTtZQUNyQixPQUFPO1lBQ1AsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUztZQUN0RCxLQUFLO1lBQ0wsT0FBTyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3hCLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGYWlsdXJlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMb2FkZWREYXRhPFQ+IHtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIHRpbWVzdGFtcDogRGF0ZSB8IG51bGw7XG4gICAgZmFpbHVyZTogRmFpbHVyZSB8IG51bGw7XG4gICAgdmFsdWU6IFQgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgTG9hZGVkRGF0YTxUPiB7XG4gICAgX2NsYXNzOiAnTG9hZGVkRGF0YScgPSAnTG9hZGVkRGF0YSc7XG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHRpbWVzdGFtcDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGZhaWx1cmU6IEZhaWx1cmUgfCBudWxsID0gbnVsbDtcbiAgICB2YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgZ2V0IGVycm9yZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZhaWx1cmUgIT0gdW5kZWZpbmVkICYmIHRoaXMuZmFpbHVyZSAhPSBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBQYXJ0aWFsPElMb2FkZWREYXRhPFQ+Pikge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBkYXRhPy5sb2FkaW5nID8/IHRoaXMubG9hZGluZztcbiAgICAgICAgdGhpcy50aW1lc3RhbXAgPSBkYXRhPy50aW1lc3RhbXAgPz8gIWlzTmlsKGRhdGE/LnZhbHVlKSA/IG5ldyBEYXRlKCkgOiB0aGlzLnRpbWVzdGFtcDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGE/LnZhbHVlID8/IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMuZmFpbHVyZSA9IGRhdGE/LmZhaWx1cmUgPz8gdGhpcy5mYWlsdXJlO1xuICAgIH1cblxuICAgIGVxdWFscyhvdGhlcjogTG9hZGVkRGF0YTxUPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcyA9PT0gb3RoZXIpIHJldHVybiB0cnVlO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBvdGhlciBpbnN0YW5jZW9mIExvYWRlZERhdGEgJiZcbiAgICAgICAgICAgIG90aGVyLmxvYWRpbmcgPT09IHRoaXMubG9hZGluZyAmJlxuICAgICAgICAgICAgb3RoZXIudGltZXN0YW1wID09PSB0aGlzLnRpbWVzdGFtcCAmJlxuICAgICAgICAgICAgb3RoZXIudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgICAgIG90aGVyLmZhaWx1cmU/LmNvZGUgPT09IHRoaXMuZmFpbHVyZT8uY29kZSAmJlxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3RoZXIuZmFpbHVyZT8ubWVzc2FnZXMpID09PSBKU09OLnN0cmluZ2lmeSh0aGlzLmZhaWx1cmU/Lm1lc3NhZ2VzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvcHlXaXRoKGRhdGE6IFBhcnRpYWw8TG9hZGVkRGF0YTxUPj4pOiBMb2FkZWREYXRhPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2FkZWREYXRhPFQ+KE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIGRhdGEpKTtcbiAgICB9XG5cbiAgICBjb3B5V2l0aERhdGEoeyBsb2FkaW5nID0gZmFsc2UsIHZhbHVlIH06IFBhcnRpYWw8TG9hZGVkRGF0YTxUPj4pOiBMb2FkZWREYXRhPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2FkZWREYXRhPFQ+KHtcbiAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICB0aW1lc3RhbXA6ICFpc05pbCh2YWx1ZSkgPyBuZXcgRGF0ZSgpIDogdGhpcy50aW1lc3RhbXAsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGZhaWx1cmU6IG51bGwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvcHlXaXRoTG9hZGluZygpOiBMb2FkZWREYXRhPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29weVdpdGgoe1xuICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoKTogSUxvYWRlZERhdGE8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9hZGluZzogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgdGltZXN0YW1wOiB0aGlzLnRpbWVzdGFtcCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgZmFpbHVyZTogdGhpcy5mYWlsdXJlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- export class UserModel {
2
- constructor(data) {
3
- this.email = data.email ?? "";
4
- this.id = data.id ?? "";
5
- this.firstName = data.firstName ?? "";
6
- this.lastName = data.lastName ?? "";
7
- this.roles = data.permissions ?? [];
8
- this.permissions = data.permissions ?? [];
9
- this.accountConfirmedAt = data.accountConfirmedAt;
10
- }
11
- get fullName() {
12
- return `${this.firstName} ${this.lastName}`;
13
- }
14
- ;
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2diLW5ncngtc3RhY2stYmFzZS9zcmMvaW5mcmFzdHJ1Y3R1cmUvbW9kZWxzL3VzZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFNBQVM7SUFTbEIsWUFBWSxJQUFvQjtRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDN0MsQ0FBQztJQUFBLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElVc2VyIH0gZnJvbSBcIi4uLy4uL2RvbWFpblwiO1xuXG5leHBvcnQgY2xhc3MgVXNlck1vZGVsIGltcGxlbWVudHMgSVVzZXIge1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gICAgbGFzdE5hbWU6IHN0cmluZztcbiAgICByb2xlczogc3RyaW5nW107XG4gICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgIGFjY291bnRDb25maXJtZWRBdD86IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgaWQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFBhcnRpYWw8SVVzZXI+KSB7XG4gICAgICAgIHRoaXMuZW1haWwgPSBkYXRhLmVtYWlsID8/IFwiXCI7XG4gICAgICAgIHRoaXMuaWQgPSBkYXRhLmlkID8/IFwiXCI7XG4gICAgICAgIHRoaXMuZmlyc3ROYW1lID0gZGF0YS5maXJzdE5hbWUgPz8gXCJcIjtcbiAgICAgICAgdGhpcy5sYXN0TmFtZSA9IGRhdGEubGFzdE5hbWUgPz8gXCJcIjtcbiAgICAgICAgdGhpcy5yb2xlcyA9IGRhdGEucGVybWlzc2lvbnMgPz8gW107XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBkYXRhLnBlcm1pc3Npb25zID8/IFtdO1xuICAgICAgICB0aGlzLmFjY291bnRDb25maXJtZWRBdCA9IGRhdGEuYWNjb3VudENvbmZpcm1lZEF0O1xuICAgIH1cblxuICAgIGdldCBmdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YFxuICAgIH07XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlc3BvbnNlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3R5cGVzL2FwaS1yZXNwb25zZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVXNlciB9IGZyb20gJy4uJztcblxuZXhwb3J0IGludGVyZmFjZSBJQXV0aGVudGljYXRpb25SZXNwb25zZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIGV4cGlyZWQ6IGJvb2xlYW47XG4gICAgdXNlcj86IElVc2VyIHwgbnVsbDtcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgIGRldmljZUluZm8/OiBJQXV0aERldmljZUluZm87XG4gICAgY29weVdpdGgoZGF0YTogUGFydGlhbDxJQXV0aGVudGljYXRpb25SZXNwb25zZT4pOiBJQXV0aGVudGljYXRpb25SZXNwb25zZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXV0aERldmljZUluZm8ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgdG9Kc29uKCk6IHN0cmluZztcbiAgICB0b01hcCgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG8taW50ZXJmYWNlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3R5cGVzL2RvLWludGVyZmFjZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEb0ludGVyZmFjZTxULCBLIGV4dGVuZHMgUHJvcGVydHlLZXkgPSBuZXZlcj4gPSBPbWl0PFxuICAgIHtcbiAgICAgICAgW1AgaW4ga2V5b2YgVCBhcyBUW1BdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IFAgZXh0ZW5kcyBLID8gbmV2ZXIgOiBQXTogVFtQXTtcbiAgICB9LFxuICAgICdfY2xhc3MnXG4+O1xuIl19
@@ -1,6 +0,0 @@
1
- export var FailureType;
2
- (function (FailureType) {
3
- FailureType["RateLimitExceeded"] = "RateLimitExceeded";
4
- })(FailureType || (FailureType = {}));
5
- export const UnkownFailureCode = "unknown";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ItbmdyeC1zdGFjay1iYXNlL3NyYy90eXBlcy9mYWlsdXJlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixzREFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEI7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICAgIGNvZGU6IEZhaWx1cmVUeXBlIHwgc3RyaW5nO1xuICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBlbnVtIEZhaWx1cmVUeXBlIHtcbiAgUmF0ZUxpbWl0RXhjZWVkZWQgPSAnUmF0ZUxpbWl0RXhjZWVkZWQnLFxufVxuXG5leHBvcnQgY29uc3QgVW5rb3duRmFpbHVyZUNvZGUgPSBcInVua25vd25cIjtcbiJdfQ==
@@ -1,4 +0,0 @@
1
- export * from './api-response.type';
2
- export * from './failure.type';
3
- export * from './do-interface.type';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcGktcmVzcG9uc2UudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZhaWx1cmUudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2RvLWludGVyZmFjZS50eXBlJztcbiJdfQ==
@@ -1,7 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * The idea of this token is to have a way to register a general action that deals with authentication changes
4
- * this way different libraries can rely on it either by subscribing it or dispatching it
5
- */
6
- export const AuthenticationChangeBaseActionToken = new InjectionToken('AuthenticationChangeBaseActionToken');
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tY2hhbmdlLWJhc2UtYWN0aW9uLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ItbmdyeC1zdGFjay1iYXNlL3NyYy91dGlscy9hdXRoZW50aWNhdGlvbi1jaGFuZ2UtYmFzZS1hY3Rpb24tdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FDakUscUNBQXFDLENBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBBY3Rpb25DcmVhdG9yLCBDcmVhdG9yLCBOb3RBbGxvd2VkQ2hlY2sgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBUeXBlZEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuaW1wb3J0IHsgSUF1dGhlbnRpY2F0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGlkZWEgb2YgdGhpcyB0b2tlbiBpcyB0byBoYXZlIGEgd2F5IHRvIHJlZ2lzdGVyIGEgZ2VuZXJhbCBhY3Rpb24gdGhhdCBkZWFscyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNoYW5nZXNcbiAqIHRoaXMgd2F5IGRpZmZlcmVudCBsaWJyYXJpZXMgY2FuIHJlbHkgb24gaXQgZWl0aGVyIGJ5IHN1YnNjcmliaW5nIGl0IG9yIGRpc3BhdGNoaW5nIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYW5nZUJhc2VBY3Rpb25Ub2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoZW50aWNhdGlvbkNoYW5nZUFjdGlvbj4oXG4gICAgJ0F1dGhlbnRpY2F0aW9uQ2hhbmdlQmFzZUFjdGlvblRva2VuJyxcbik7XG5cbmV4cG9ydCB0eXBlIEF1dGhlbnRpY2F0aW9uQ2hhbmdlQWN0aW9uID0gQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKFxuICAgICAgICBwcm9wczogQXV0aGVudGljYXRpb25DaGFuZ2VBY3Rpb25Qcm9wcyAmIE5vdEFsbG93ZWRDaGVjazxBdXRoZW50aWNhdGlvbkNoYW5nZUFjdGlvblByb3BzPixcbiAgICApID0+IEF1dGhlbnRpY2F0aW9uQ2hhbmdlQWN0aW9uUHJvcHMgJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbmdlQWN0aW9uUHJvcHMge1xuICAgIGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XG4gICAgZGF0YTogSUF1dGhlbnRpY2F0aW9uUmVzcG9uc2UgfCBudWxsO1xufVxuIl19
@@ -1,44 +0,0 @@
1
- import { has, isEmpty, isNil, isObject } from "lodash-es";
2
- /**
3
- *
4
- * @param failure The Failure as input
5
- * @param or If failure is null or couln't not retrieve any message from it, use this instead. Defaults to '' empty string
6
- * @param messageWrapper Failures often return an array of messages, this give you the oportunity to wrap each message between whatever you want
7
- * @param joiner The postfix that will join each message together, default behavior is to join by line break '\n'
8
- * @returns A sigle string with the failure messages.
9
- */
10
- export function getFailureMessageOr(failure, or = "", messageWrapper, joiner) {
11
- let messages = [];
12
- if (isNil(failure)) {
13
- return or;
14
- }
15
- if (!isNil(failure.messages) && !isEmpty(failure.messages)) {
16
- messages = failure.messages.map((message) => {
17
- if (isNil(messageWrapper)) {
18
- return message;
19
- }
20
- return messageWrapper(message);
21
- });
22
- }
23
- else if (!isNil(failure.code)) {
24
- messages = [failure.code];
25
- }
26
- if (isEmpty(messages)) {
27
- return or;
28
- }
29
- return messages.join(joiner ?? "\n");
30
- }
31
- /**
32
- * Since Failure is not a runtime type but just an interface this check if given object can be treated as a Failure
33
- * @param object Any object expected to be a Failure
34
- * @returns {boolean}
35
- */
36
- export function maybeFailure(object) {
37
- if (!isObject(object))
38
- return false;
39
- if (has(object, "code")) {
40
- return true;
41
- }
42
- return false;
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3V0aWxzL2ZhaWx1cmUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFNL0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFtQyxFQUFFLEtBQWEsRUFBRSxFQUFFLGNBQXNDLEVBQUUsTUFBZTtJQUM3SSxJQUFJLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFFNUIsSUFBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN4RCxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN4QyxJQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLE9BQU8sQ0FBQztZQUNuQixDQUFDO1lBQ0QsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO1NBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QixRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBRyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBVztJQUNwQyxJQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRW5DLElBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0LCBoYXMsIGlzRW1wdHksIGlzTmlsLCBpc09iamVjdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRmFpbHVyZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBGYWlsdXJlTWVzc2FnZVdyYXBwZXIgPSAobWVzc2FnZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbi8qKlxuICogXG4gKiBAcGFyYW0gZmFpbHVyZSBUaGUgRmFpbHVyZSBhcyBpbnB1dFxuICogQHBhcmFtIG9yIElmIGZhaWx1cmUgaXMgbnVsbCBvciBjb3Vsbid0IG5vdCByZXRyaWV2ZSBhbnkgbWVzc2FnZSBmcm9tIGl0LCB1c2UgdGhpcyBpbnN0ZWFkLiBEZWZhdWx0cyB0byAnJyBlbXB0eSBzdHJpbmdcbiAqIEBwYXJhbSBtZXNzYWdlV3JhcHBlciBGYWlsdXJlcyBvZnRlbiByZXR1cm4gYW4gYXJyYXkgb2YgbWVzc2FnZXMsIHRoaXMgZ2l2ZSB5b3UgdGhlIG9wb3J0dW5pdHkgdG8gd3JhcCBlYWNoIG1lc3NhZ2UgYmV0d2VlbiB3aGF0ZXZlciB5b3Ugd2FudFxuICogQHBhcmFtIGpvaW5lciBUaGUgcG9zdGZpeCB0aGF0IHdpbGwgam9pbiBlYWNoIG1lc3NhZ2UgdG9nZXRoZXIsIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gam9pbiBieSBsaW5lIGJyZWFrICdcXG4nXG4gKiBAcmV0dXJucyBBIHNpZ2xlIHN0cmluZyB3aXRoIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFpbHVyZU1lc3NhZ2VPcihmYWlsdXJlOiBGYWlsdXJlIHwgbnVsbCB8IHVuZGVmaW5lZCwgb3I6IHN0cmluZyA9IFwiXCIsIG1lc3NhZ2VXcmFwcGVyPzogRmFpbHVyZU1lc3NhZ2VXcmFwcGVyLCBqb2luZXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmKGlzTmlsKGZhaWx1cmUpKSB7XG4gICAgICAgIHJldHVybiBvcjtcbiAgICB9XG5cbiAgICBpZighaXNOaWwoZmFpbHVyZS5tZXNzYWdlcykgJiYgIWlzRW1wdHkoZmFpbHVyZS5tZXNzYWdlcykpIHtcbiAgICAgICAgbWVzc2FnZXMgPSBmYWlsdXJlLm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYoaXNOaWwobWVzc2FnZVdyYXBwZXIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZVdyYXBwZXIobWVzc2FnZSk7XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIGlmICghaXNOaWwoZmFpbHVyZS5jb2RlKSkge1xuICAgICAgICBtZXNzYWdlcyA9IFtmYWlsdXJlLmNvZGVdO1xuICAgIH1cblxuICAgIGlmKGlzRW1wdHkobWVzc2FnZXMpKSB7XG4gICAgICAgIHJldHVybiBvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVzc2FnZXMuam9pbihqb2luZXI/PyBcIlxcblwiKTtcbn1cblxuLyoqXG4gKiBTaW5jZSBGYWlsdXJlIGlzIG5vdCBhIHJ1bnRpbWUgdHlwZSBidXQganVzdCBhbiBpbnRlcmZhY2UgdGhpcyBjaGVjayBpZiBnaXZlbiBvYmplY3QgY2FuIGJlIHRyZWF0ZWQgYXMgYSBGYWlsdXJlXG4gKiBAcGFyYW0gb2JqZWN0IEFueSBvYmplY3QgZXhwZWN0ZWQgdG8gYmUgYSBGYWlsdXJlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1heWJlRmFpbHVyZShvYmplY3Q6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmKCFpc09iamVjdChvYmplY3QpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZihoYXMob2JqZWN0LCBcImNvZGVcIikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufSJdfQ==
@@ -1,41 +0,0 @@
1
- import { HttpErrorResponse } from '@angular/common/http';
2
- import { get, isEmpty, isNil, isObject, first, camelCase } from 'lodash-es';
3
- import { UnkownFailureCode } from '../types';
4
- export function httpResponseHandle(params) { }
5
- /**
6
- *
7
- * @param error Throwed error by a function on the call stack
8
- * @returns Returns a valid {Failure}
9
- */
10
- export function httpResponseFailureHandle(error) {
11
- if (isObject(error) && error instanceof HttpErrorResponse) {
12
- let messages = get(error.error, 'messages', []);
13
- // to support old applications
14
- let singleMessage = get(error.error, 'message');
15
- if (isEmpty(messages) && !isNil(singleMessage)) {
16
- messages.push(singleMessage);
17
- }
18
- // to support old applications
19
- if (isNil(singleMessage) && !isNil(get(error.error, 'error'))) {
20
- let message = get(get(error.error, 'error'), 'message');
21
- if (!isNil(message))
22
- messages.push(message);
23
- }
24
- return {
25
- code: get(error.error, 'errorCode') || camelCase(first(messages)) || error.message,
26
- messages: messages,
27
- };
28
- }
29
- else if (isObject(error) && error instanceof Error) {
30
- return {
31
- code: error.name,
32
- messages: !isNil(error.message) && !isEmpty(error.message) ? [error.message] : [],
33
- };
34
- }
35
- else {
36
- return {
37
- code: UnkownFailureCode,
38
- };
39
- }
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXNwb25zZS1oYW5kbGUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ItbmdyeC1zdGFjay1iYXNlL3NyYy91dGlscy9odHRwLXJlc3BvbnNlLWhhbmRsZS5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVFLE9BQU8sRUFBVyxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBVyxJQUFHLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUFnQztJQUN0RSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztRQUN4RCxJQUFJLFFBQVEsR0FBYSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUQsOEJBQThCO1FBQzlCLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsOEJBQThCO1FBQzlCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTztZQUNILElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU87WUFDbEYsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQztJQUNOLENBQUM7U0FBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7UUFDbkQsT0FBTztZQUNILElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDcEYsQ0FBQztJQUNOLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTztZQUNILElBQUksRUFBRSxpQkFBaUI7U0FDMUIsQ0FBQztJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBnZXQsIGlzRW1wdHksIGlzTmlsLCBpc09iamVjdCwgZmlyc3QsIGNhbWVsQ2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGYWlsdXJlLCBVbmtvd25GYWlsdXJlQ29kZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBSZXNwb25zZUhhbmRsZShwYXJhbXM6IGFueSkge31cblxuLyoqXG4gKlxuICogQHBhcmFtIGVycm9yIFRocm93ZWQgZXJyb3IgYnkgYSBmdW5jdGlvbiBvbiB0aGUgY2FsbCBzdGFja1xuICogQHJldHVybnMgUmV0dXJucyBhIHZhbGlkIHtGYWlsdXJlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaHR0cFJlc3BvbnNlRmFpbHVyZUhhbmRsZShlcnJvcjogRXJyb3IgfCBIdHRwRXJyb3JSZXNwb25zZSk6IEZhaWx1cmUge1xuICAgIGlmIChpc09iamVjdChlcnJvcikgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICBsZXQgbWVzc2FnZXM6IHN0cmluZ1tdID0gZ2V0KGVycm9yLmVycm9yLCAnbWVzc2FnZXMnLCBbXSk7XG5cbiAgICAgICAgLy8gdG8gc3VwcG9ydCBvbGQgYXBwbGljYXRpb25zXG4gICAgICAgIGxldCBzaW5nbGVNZXNzYWdlID0gZ2V0KGVycm9yLmVycm9yLCAnbWVzc2FnZScpO1xuICAgICAgICBpZiAoaXNFbXB0eShtZXNzYWdlcykgJiYgIWlzTmlsKHNpbmdsZU1lc3NhZ2UpKSB7XG4gICAgICAgICAgICBtZXNzYWdlcy5wdXNoKHNpbmdsZU1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRvIHN1cHBvcnQgb2xkIGFwcGxpY2F0aW9uc1xuICAgICAgICBpZiAoaXNOaWwoc2luZ2xlTWVzc2FnZSkgJiYgIWlzTmlsKGdldChlcnJvci5lcnJvciwgJ2Vycm9yJykpKSB7XG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGdldChnZXQoZXJyb3IuZXJyb3IsICdlcnJvcicpLCAnbWVzc2FnZScpO1xuICAgICAgICAgICAgaWYgKCFpc05pbChtZXNzYWdlKSkgbWVzc2FnZXMucHVzaChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29kZTogZ2V0KGVycm9yLmVycm9yLCAnZXJyb3JDb2RlJykgfHwgY2FtZWxDYXNlKGZpcnN0KG1lc3NhZ2VzKSkgfHwgZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlcyxcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiBlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlOiBlcnJvci5uYW1lLFxuICAgICAgICAgICAgbWVzc2FnZXM6ICFpc05pbChlcnJvci5tZXNzYWdlKSAmJiAhaXNFbXB0eShlcnJvci5tZXNzYWdlKSA/IFtlcnJvci5tZXNzYWdlXSA6IFtdLFxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlOiBVbmtvd25GYWlsdXJlQ29kZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- export * from "./authentication-change-base-action-token";
2
- export * from "./failure.helper";
3
- export * from "./http-response-handle.helper";
4
- export * from "./rxjs.helper";
5
- export * from "./test";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXV0aGVudGljYXRpb24tY2hhbmdlLWJhc2UtYWN0aW9uLXRva2VuXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mYWlsdXJlLmhlbHBlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaHR0cC1yZXNwb25zZS1oYW5kbGUuaGVscGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yeGpzLmhlbHBlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVzdFwiOyJdfQ==
@@ -1,62 +0,0 @@
1
- import { HttpErrorResponse } from "@angular/common/http";
2
- import { isObject } from "lodash-es";
3
- import { of, throwError } from "rxjs";
4
- import { catchError, map } from "rxjs/operators";
5
- import { getFailureMessageOr, maybeFailure } from "./failure.helper";
6
- import { httpResponseFailureHandle } from "./http-response-handle.helper";
7
- /**
8
- * This operator helps you catching any exception on your API call and tries to get a Failure form it and provides you with an easy way
9
- * of proccessing that failure into something else
10
- * @param converter Mapper function to dispatch given value instead of the Failure
11
- * @returns Returns any value provided ny the converter
12
- */
13
- export function catchAndGetFromFailureRxOp(converter) {
14
- return catchError((error) => {
15
- let failure;
16
- if (isObject(error) && (error instanceof Error || error instanceof HttpErrorResponse)) {
17
- failure = httpResponseFailureHandle(error);
18
- }
19
- else if (maybeFailure(error)) {
20
- failure = error;
21
- }
22
- else {
23
- failure = httpResponseFailureHandle(error);
24
- }
25
- return of(converter(failure));
26
- });
27
- }
28
- /**
29
- * Catch an error, throws a Failure in the onservabe pipeline
30
- * @returns Catch any error from the proccesed pipeline and throws a Failure instead
31
- */
32
- export const catchAndThrowFailureRxOp = () => {
33
- return catchError((error) => {
34
- let failure = httpResponseFailureHandle(error);
35
- return throwError(failure);
36
- });
37
- };
38
- /**
39
- * Catch an error and gets a Failure from it
40
- * @returns Returns a Failure
41
- */
42
- export const catchGetFailureRxOp = () => {
43
- return catchError((error) => {
44
- let failure = httpResponseFailureHandle(error);
45
- return of(failure);
46
- });
47
- };
48
- /**
49
- * This converts failure to a message using same logic as '[getFailureMessageOr]'
50
- * @see {@link getFailureMessageOr}
51
- *
52
- * @param or
53
- * @param messageWrapper
54
- * @param joiner
55
- * @returns
56
- */
57
- export const getFailureMessageRxOp = (or = "", messageWrapper, joiner) => {
58
- return map((failure) => {
59
- return getFailureMessageOr(failure, or, messageWrapper, joiner);
60
- });
61
- };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nYi1uZ3J4LXN0YWNrLWJhc2Uvc3JjL3V0aWxzL3J4anMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEMsT0FBTyxFQUFFLEVBQUUsRUFBb0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFaEQsT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMzRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV6RTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBSSxTQUFrQztJQUM1RSxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hCLElBQUksT0FBZ0IsQ0FBQztRQUNyQixJQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxZQUFZLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNuRixPQUFPLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQ0wsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUNyQixDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBbUMsRUFBRTtJQUN6RSxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hCLElBQUksT0FBTyxHQUFZLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBbUMsRUFBRTtJQUNwRSxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hCLElBQUksT0FBTyxHQUFZLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLGNBQXNDLEVBQUUsTUFBZSxFQUF3RCxFQUFFO0lBQ3BLLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbkIsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSBcImxvZGFzaC1lc1wiXG5pbXBvcnQgeyBvZiwgT3BlcmF0b3JGdW5jdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gXCJyeGpzXCJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiXG5pbXBvcnQgeyBGYWlsdXJlIH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IEZhaWx1cmVNZXNzYWdlV3JhcHBlciwgZ2V0RmFpbHVyZU1lc3NhZ2VPciwgbWF5YmVGYWlsdXJlIH0gZnJvbSBcIi4vZmFpbHVyZS5oZWxwZXJcIlxuaW1wb3J0IHsgaHR0cFJlc3BvbnNlRmFpbHVyZUhhbmRsZSB9IGZyb20gXCIuL2h0dHAtcmVzcG9uc2UtaGFuZGxlLmhlbHBlclwiXG5cbi8qKlxuICogVGhpcyBvcGVyYXRvciBoZWxwcyB5b3UgY2F0Y2hpbmcgYW55IGV4Y2VwdGlvbiBvbiB5b3VyIEFQSSBjYWxsIGFuZCB0cmllcyB0byBnZXQgYSBGYWlsdXJlIGZvcm0gaXQgYW5kIHByb3ZpZGVzIHlvdSB3aXRoIGFuIGVhc3kgd2F5IFxuICogb2YgcHJvY2Nlc3NpbmcgdGhhdCBmYWlsdXJlIGludG8gc29tZXRoaW5nIGVsc2VcbiAqIEBwYXJhbSBjb252ZXJ0ZXIgTWFwcGVyIGZ1bmN0aW9uIHRvIGRpc3BhdGNoIGdpdmVuIHZhbHVlIGluc3RlYWQgb2YgdGhlIEZhaWx1cmVcbiAqIEByZXR1cm5zIFJldHVybnMgYW55IHZhbHVlIHByb3ZpZGVkIG55IHRoZSBjb252ZXJ0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhdGNoQW5kR2V0RnJvbUZhaWx1cmVSeE9wPFQ+KGNvbnZlcnRlcjogKGZhaWx1cmU6IEZhaWx1cmUpID0+IFQpOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgVD4ge1xuICAgIHJldHVybiBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBsZXQgZmFpbHVyZTogRmFpbHVyZTtcbiAgICAgICAgaWYoaXNPYmplY3QoZXJyb3IpICYmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICBmYWlsdXJlID0gaHR0cFJlc3BvbnNlRmFpbHVyZUhhbmRsZShlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAobWF5YmVGYWlsdXJlKGVycm9yKSkge1xuICAgICAgICAgICAgZmFpbHVyZSA9IGVycm9yO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmFpbHVyZSA9IGh0dHBSZXNwb25zZUZhaWx1cmVIYW5kbGUoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgIGNvbnZlcnRlcihmYWlsdXJlKSxcbiAgICAgICAgKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDYXRjaCBhbiBlcnJvciwgdGhyb3dzIGEgRmFpbHVyZSBpbiB0aGUgb25zZXJ2YWJlIHBpcGVsaW5lXG4gKiBAcmV0dXJucyBDYXRjaCBhbnkgZXJyb3IgZnJvbSB0aGUgcHJvY2Nlc2VkIHBpcGVsaW5lIGFuZCB0aHJvd3MgYSBGYWlsdXJlIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhdGNoQW5kVGhyb3dGYWlsdXJlUnhPcCA9ICgpOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgRmFpbHVyZT4gPT4ge1xuICAgIHJldHVybiBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBsZXQgZmFpbHVyZTogRmFpbHVyZSA9IGh0dHBSZXNwb25zZUZhaWx1cmVIYW5kbGUoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihmYWlsdXJlKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDYXRjaCBhbiBlcnJvciBhbmQgZ2V0cyBhIEZhaWx1cmUgZnJvbSBpdFxuICogQHJldHVybnMgUmV0dXJucyBhIEZhaWx1cmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNhdGNoR2V0RmFpbHVyZVJ4T3AgPSAoKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIEZhaWx1cmU+ID0+IHtcbiAgICByZXR1cm4gY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgbGV0IGZhaWx1cmU6IEZhaWx1cmUgPSBodHRwUmVzcG9uc2VGYWlsdXJlSGFuZGxlKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKGZhaWx1cmUpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29udmVydHMgZmFpbHVyZSB0byBhIG1lc3NhZ2UgdXNpbmcgc2FtZSBsb2dpYyBhcyAnW2dldEZhaWx1cmVNZXNzYWdlT3JdJ1xuICogQHNlZSB7QGxpbmsgZ2V0RmFpbHVyZU1lc3NhZ2VPcn1cbiAqIFxuICogQHBhcmFtIG9yIFxuICogQHBhcmFtIG1lc3NhZ2VXcmFwcGVyIFxuICogQHBhcmFtIGpvaW5lciBcbiAqIEByZXR1cm5zIFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmFpbHVyZU1lc3NhZ2VSeE9wID0gKG9yOiBzdHJpbmcgPSBcIlwiLCBtZXNzYWdlV3JhcHBlcj86IEZhaWx1cmVNZXNzYWdlV3JhcHBlciwgam9pbmVyPzogc3RyaW5nKTogT3BlcmF0b3JGdW5jdGlvbjxGYWlsdXJlIHwgbnVsbCB8IHVuZGVmaW5lZCwgc3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIG1hcCgoZmFpbHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0RmFpbHVyZU1lc3NhZ2VPcihmYWlsdXJlLCBvciwgbWVzc2FnZVdyYXBwZXIsIGpvaW5lcik7XG4gICAgfSk7XG59Il19
@@ -1,6 +0,0 @@
1
- export function mockHttpResponse(data) {
2
- return {
3
- data: data,
4
- };
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2diLW5ncngtc3RhY2stYmFzZS9zcmMvdXRpbHMvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBWTtJQUN6QyxPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUk7S0FDYixDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtb2NrSHR0cFJlc3BvbnNlKGRhdGE6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICB9XG59Il19
@@ -1 +0,0 @@
1
- export * from "./models";
@@ -1,2 +0,0 @@
1
- export * from './user.model';
2
- export * from './loaded-data.model';
@@ -1,22 +0,0 @@
1
- import { Failure } from '../../types';
2
- export interface ILoadedData<T> {
3
- loading: boolean;
4
- timestamp: Date | null;
5
- failure: Failure | null;
6
- value: T | null;
7
- }
8
- export declare class LoadedData<T> {
9
- _class: 'LoadedData';
10
- loading: boolean;
11
- timestamp: Date | null;
12
- failure: Failure | null;
13
- value: T | null;
14
- get errored(): boolean;
15
- constructor(data?: Partial<ILoadedData<T>>);
16
- equals(other: LoadedData<T>): boolean;
17
- copyWith(data: Partial<LoadedData<T>>): LoadedData<T>;
18
- copyWithData({ loading, value }: Partial<LoadedData<T>>): LoadedData<T>;
19
- copyWithLoading(): LoadedData<T>;
20
- toObject(): ILoadedData<T>;
21
- toString(): string;
22
- }
@@ -1,12 +0,0 @@
1
- import { IUser } from "../../domain";
2
- export declare class UserModel implements IUser {
3
- email: string;
4
- firstName: string;
5
- lastName: string;
6
- roles: string[];
7
- permissions: string[];
8
- accountConfirmedAt?: Date | undefined;
9
- id: string;
10
- constructor(data: Partial<IUser>);
11
- get fullName(): string;
12
- }
@@ -1,18 +0,0 @@
1
- import { IUser } from '..';
2
- export interface IAuthenticationResponse {
3
- id: string;
4
- token: string;
5
- expired: boolean;
6
- user?: IUser | null;
7
- refreshToken?: string | null;
8
- deviceInfo?: IAuthDeviceInfo;
9
- copyWith(data: Partial<IAuthenticationResponse>): IAuthenticationResponse;
10
- }
11
- export interface IAuthDeviceInfo {
12
- id: string;
13
- name: string;
14
- toJson(): string;
15
- toMap(): {
16
- [key: string]: any;
17
- };
18
- }
@@ -1,3 +0,0 @@
1
- export type DoInterface<T, K extends PropertyKey = never> = Omit<{
2
- [P in keyof T as T[P] extends Function ? never : P extends K ? never : P]: T[P];
3
- }, '_class'>;
@@ -1,8 +0,0 @@
1
- export interface Failure {
2
- code: FailureType | string;
3
- messages?: string[];
4
- }
5
- export declare enum FailureType {
6
- RateLimitExceeded = "RateLimitExceeded"
7
- }
8
- export declare const UnkownFailureCode = "unknown";
package/types/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './api-response.type';
2
- export * from './failure.type';
3
- export * from './do-interface.type';
@@ -1,14 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { ActionCreator, NotAllowedCheck } from '@ngrx/store';
3
- import { TypedAction } from '@ngrx/store/src/models';
4
- import { IAuthenticationResponse } from '../types';
5
- /**
6
- * The idea of this token is to have a way to register a general action that deals with authentication changes
7
- * this way different libraries can rely on it either by subscribing it or dispatching it
8
- */
9
- export declare const AuthenticationChangeBaseActionToken: InjectionToken<AuthenticationChangeAction>;
10
- export type AuthenticationChangeAction = ActionCreator<string, (props: AuthenticationChangeActionProps & NotAllowedCheck<AuthenticationChangeActionProps>) => AuthenticationChangeActionProps & TypedAction<string>>;
11
- export interface AuthenticationChangeActionProps {
12
- authenticated: boolean;
13
- data: IAuthenticationResponse | null;
14
- }
@@ -1,17 +0,0 @@
1
- import { Failure } from "../types";
2
- export type FailureMessageWrapper = (message: string) => string;
3
- /**
4
- *
5
- * @param failure The Failure as input
6
- * @param or If failure is null or couln't not retrieve any message from it, use this instead. Defaults to '' empty string
7
- * @param messageWrapper Failures often return an array of messages, this give you the oportunity to wrap each message between whatever you want
8
- * @param joiner The postfix that will join each message together, default behavior is to join by line break '\n'
9
- * @returns A sigle string with the failure messages.
10
- */
11
- export declare function getFailureMessageOr(failure: Failure | null | undefined, or?: string, messageWrapper?: FailureMessageWrapper, joiner?: string): string;
12
- /**
13
- * Since Failure is not a runtime type but just an interface this check if given object can be treated as a Failure
14
- * @param object Any object expected to be a Failure
15
- * @returns {boolean}
16
- */
17
- export declare function maybeFailure(object: any): boolean;
@@ -1,9 +0,0 @@
1
- import { HttpErrorResponse } from '@angular/common/http';
2
- import { Failure } from '../types';
3
- export declare function httpResponseHandle(params: any): void;
4
- /**
5
- *
6
- * @param error Throwed error by a function on the call stack
7
- * @returns Returns a valid {Failure}
8
- */
9
- export declare function httpResponseFailureHandle(error: Error | HttpErrorResponse): Failure;
package/utils/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from "./authentication-change-base-action-token";
2
- export * from "./failure.helper";
3
- export * from "./http-response-handle.helper";
4
- export * from "./rxjs.helper";
5
- export * from "./test";
@@ -1,30 +0,0 @@
1
- import { OperatorFunction } from "rxjs";
2
- import { Failure } from "../types";
3
- import { FailureMessageWrapper } from "./failure.helper";
4
- /**
5
- * This operator helps you catching any exception on your API call and tries to get a Failure form it and provides you with an easy way
6
- * of proccessing that failure into something else
7
- * @param converter Mapper function to dispatch given value instead of the Failure
8
- * @returns Returns any value provided ny the converter
9
- */
10
- export declare function catchAndGetFromFailureRxOp<T>(converter: (failure: Failure) => T): OperatorFunction<any, T>;
11
- /**
12
- * Catch an error, throws a Failure in the onservabe pipeline
13
- * @returns Catch any error from the proccesed pipeline and throws a Failure instead
14
- */
15
- export declare const catchAndThrowFailureRxOp: () => OperatorFunction<any, Failure>;
16
- /**
17
- * Catch an error and gets a Failure from it
18
- * @returns Returns a Failure
19
- */
20
- export declare const catchGetFailureRxOp: () => OperatorFunction<any, Failure>;
21
- /**
22
- * This converts failure to a message using same logic as '[getFailureMessageOr]'
23
- * @see {@link getFailureMessageOr}
24
- *
25
- * @param or
26
- * @param messageWrapper
27
- * @param joiner
28
- * @returns
29
- */
30
- export declare const getFailureMessageRxOp: (or?: string, messageWrapper?: FailureMessageWrapper, joiner?: string) => OperatorFunction<Failure | null | undefined, string>;
package/utils/test.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function mockHttpResponse(data: object): object;