@lenne.tech/ng-base 13.12.0 → 13.14.1
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/base-components/base-components.module.d.ts +5 -3
- package/base-components/components/model-form/model-form.component.d.ts +66 -0
- package/base-components/components/model-table/model-table.component.d.ts +55 -0
- package/base-components/public-api.d.ts +2 -0
- package/esm2020/base-components/base-components.module.mjs +11 -3
- package/esm2020/base-components/components/checkbox/checkbox.component.mjs +2 -2
- package/esm2020/base-components/components/input/input.component.mjs +2 -2
- package/esm2020/base-components/components/model-form/model-form.component.mjs +176 -0
- package/esm2020/base-components/components/model-table/model-table.component.mjs +137 -0
- package/esm2020/base-components/components/select/select.component.mjs +2 -2
- package/esm2020/base-components/components/tags/tags.component.mjs +2 -2
- package/esm2020/base-components/components/textarea/textarea.component.mjs +2 -2
- package/esm2020/base-components/public-api.mjs +3 -1
- package/esm2020/shared/classes/graphql-meta.class.mjs +59 -6
- package/esm2020/shared/classes/graphql-type.class.mjs +4 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +321 -16
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs +61 -6
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +319 -16
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs +61 -6
- package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/classes/graphql-meta.class.d.ts +1 -1
- package/shared/classes/graphql-type.class.d.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lenne.tech-ng-base-shared.mjs","sources":["../../../projects/ng-base/shared/classes/helper.class.ts","../../../projects/ng-base/shared/classes/standard.class.ts","../../../projects/ng-base/shared/classes/basic-user.class.ts","../../../projects/ng-base/shared/classes/graphql-enum.class.ts","../../../projects/ng-base/shared/classes/graphql-type.class.ts","../../../projects/ng-base/shared/classes/graphql-meta.class.ts","../../../projects/ng-base/shared/classes/auth.class.ts","../../../projects/ng-base/shared/interfaces/base-module-config.interface.ts","../../../projects/ng-base/shared/services/storage.service.ts","../../../projects/ng-base/shared/services/ws.service.ts","../../../projects/ng-base/shared/services/auth.service.ts","../../../projects/ng-base/shared/enums/graphql-request-type.enum.ts","../../../projects/ng-base/shared/services/graphql-meta.service.ts","../../../projects/ng-base/shared/services/graphql.service.ts","../../../projects/ng-base/shared/services/loader.service.ts","../../../projects/ng-base/shared/services/graphql-plus.service.ts","../../../projects/ng-base/shared/services/forms.service.ts","../../../projects/ng-base/shared/services/user.service.ts","../../../projects/ng-base/shared/services/image.service.ts","../../../projects/ng-base/shared/services/scroll.service.ts","../../../projects/ng-base/shared/services/toast.service.ts","../../../projects/ng-base/shared/services/breadcrumb.service.ts","../../../projects/ng-base/shared/enums/comparison-operator.enum.ts","../../../projects/ng-base/shared/enums/logical-operator.enum.ts","../../../projects/ng-base/shared/enums/sort-order.enum.ts","../../../projects/ng-base/shared/enums/toast-type.enum.ts","../../../projects/ng-base/shared/enums/skeleton-type.enum.ts","../../../projects/ng-base/shared/validators/match.validator.ts","../../../projects/ng-base/shared/functions/ws-client.function.ts","../../../projects/ng-base/shared/public-api.ts","../../../projects/ng-base/shared/lenne.tech-ng-base-shared.ts"],"sourcesContent":["import { Standard } from './standard.class';\n\n/**\n * Helper class\n */\nexport class Helper {\n /**\n * Simple filter function for plain objects\n */\n static filter<T = { [key: string]: any }>(objects: T[], filter: { [key: string]: any }): T[] {\n return (objects?.filter((element) => {\n for (const [key, value] of Object.entries(filter)) {\n if (Array.isArray(element[key])) {\n for (const item of element[key]) {\n if (!element[key].includs(value)) {\n return false;\n }\n }\n } else if (element[key] !== value) {\n return false;\n }\n }\n return true;\n }) || []) as any[];\n }\n\n /**\n * Convert to a url/uri conform string\n * Only:\n * - lower case\n * - chars, numbers and hyphens\n */\n static urlString(str: any, options: { allowAll?: boolean } = {}): string {\n // Config\n const config = {\n allowAll: false,\n ...options,\n };\n\n // To string\n str = str + '';\n\n // Trim\n str = str.trim();\n\n // Lower case\n str = str.toLowerCase();\n\n if (!config.allowAll) {\n // Replace spaces\n str = str.trim().replace(/\\s+/g, '-');\n\n // Replace some special chars\n str = str.replace('ä', 'ae');\n str = str.replace('ö', 'oe');\n str = str.replace('ü', 'ue');\n str = str.replace('ß', 'ss');\n\n // Remove other special chars\n str = str.replace(/[^a-zA-Z0-9-]/g, '');\n }\n\n // Return url conform string\n return encodeURI(str);\n }\n\n /**\n * Simple map function\n */\n public static map<T = { [key: string]: any }>(\n source: Partial<T> | { [key: string]: any },\n target: T,\n options: { funcAllowed?: boolean; dateStringToDate?: boolean | string[] } = {}\n ): T {\n // Set config\n const config = {\n funcAllowed: false,\n dateStringToDate: true,\n ...options,\n };\n\n // Check source\n if (!source || typeof source !== 'object' || Array.isArray(source)) {\n return target;\n }\n\n // Update properties\n for (const key of Object.keys(target)) {\n if (source[key] !== undefined && (config.funcAllowed || typeof (source[key] !== 'function'))) {\n if (typeof source[key] === 'string' && config.dateStringToDate) {\n if (Array.isArray(config.dateStringToDate)) {\n if (config.dateStringToDate.includes(key)) {\n target[key] = Helper.parseDate(source[key]);\n }\n } else {\n target[key] = Helper.parseDate(source[key]);\n }\n } else {\n target[key] = source[key];\n }\n }\n }\n\n // Return target\n return target;\n }\n\n /**\n * Create Object or Objects of specified type with specified data\n */\n public static maps<T extends Standard>(\n data: Partial<T> | Partial<T>[] | { [key: string]: any } | { [key: string]: any }[],\n targetClass: new (...args: any[]) => T\n ): T[] {\n // Check data\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n // Check array\n if (!Array.isArray(data)) {\n data = [data];\n }\n\n // Map\n return (data as any).map((item: any) => {\n return (targetClass as any).map(item);\n });\n }\n\n /**\n * Get plain parameter\n */\n public static getPlainParameter(parameter: string) {\n if (!parameter) {\n return parameter;\n }\n return parameter?.split('?')?.shift()?.split('#')?.shift();\n }\n\n /**\n * Get ID of an url parameter\n */\n public static getParameterId(parameter: string) {\n if (!parameter) {\n return parameter;\n }\n return Helper.getPlainParameter(parameter)?.split('-').pop();\n }\n\n /**\n * Delay\n */\n public static delay(ms: number) {\n const promise = new Promise((resolve) => setTimeout(resolve, ms));\n return promise;\n }\n\n /**\n * Deep freeze\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze\n */\n public static deepFreeze(object: any, preparedObjects = []) {\n // Prevent infinit regress\n if (preparedObjects.includes(object as never)) {\n return object;\n }\n preparedObjects.push(object as never);\n\n // Retrieve the property names defined on object\n const propNames = Object.getOwnPropertyNames(object);\n\n // Freeze properties before freezing self\n for (const name of propNames) {\n const value = object[name];\n\n if (value && typeof value === 'object') {\n Helper.deepFreeze(value, preparedObjects);\n }\n }\n\n return Object.freeze(object);\n }\n\n /**\n * Generates an unique identifier with 24 characters\n */\n public static getUID(): string {\n let dt = new Date().getTime();\n const uuid = 'xxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n // eslint-disable-next-line no-bitwise\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n return uuid;\n }\n\n /**\n * Parse date string to date object\n */\n public static parseDate(dateString: string) {\n const reISO = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*))(?:Z|(\\+|-)([\\d|:]*))?$/;\n const reMsAjax = /^\\/Date\\((d|-|.*)\\)[\\/|\\\\]$/;\n if (typeof dateString === 'string') {\n const isoExec = reISO.exec(dateString);\n if (isoExec) {\n return new Date(dateString);\n }\n const msAjaxExec = reMsAjax.exec(dateString);\n if (msAjaxExec) {\n const cleaned = msAjaxExec[1].split(/[-+,.]/);\n return new Date(cleaned[0] ? +cleaned[0] : 0 - +cleaned[1]);\n }\n }\n return dateString;\n }\n\n /**\n * Get browser name and version\n */\n public static getBrowser() {\n const userAgent = navigator.userAgent;\n let data = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n let version;\n if (/trident/i.test(data[1])) {\n version = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n return { name: 'IE', version: version[1] || '' };\n }\n if (data[1] === 'Chrome') {\n version = userAgent.match(/\\bOPR|Edge\\/(\\d+)/);\n if (version != null) {\n return { name: 'Opera', version: version[1] };\n }\n }\n data = data[2] ? [data[1], data[2]] : [navigator.appName, navigator.appVersion, '-?'];\n version = userAgent.match(/version\\/(\\d+)/i);\n if (version !== null) {\n data.splice(1, 1, version[1]);\n }\n return {\n name: data[0],\n version: data[1],\n };\n }\n\n /**\n * Whether first parameter is a deep subset of second parameter\n * Hint: functions will be ignored\n */\n static isSubset(a: any, b: any) {\n // Equal\n if (a === b) {\n return true;\n }\n\n // Different type\n if (typeof a !== typeof b) {\n return false;\n }\n\n // Process array\n if (Array.isArray(a)) {\n for (const [key, value] of Object.entries(a)) {\n if (Helper.isSubset(value, b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // Process object\n if (typeof a === 'object') {\n const plain = JSON.parse(JSON.stringify(a));\n for (const [key, value] of Object.entries(plain)) {\n if (Helper.isSubset(value, b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // Else\n return true;\n }\n\n /**\n * Whether parameters are equal (have equal properties)\n * Hint: functions will be ignored\n */\n static isEqual(a: any, b: any) {\n return Helper.isSubset(a, b) && Helper.isSubset(b, a);\n }\n\n /**\n * First level difference of two objects\n * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value\n *\n * @returns Record<string, any> Object with properties from first object\n */\n static getDiff(a: Record<string, any>, b: Record<string, any>, clone: boolean = true) {\n const result = {};\n let firstObject = a;\n if (clone) {\n firstObject = JSON.parse(JSON.stringify(a));\n }\n for (const [key, value] of Object.entries(firstObject)) {\n if (!Helper.isSubset(value, b[key])) {\n result[key] = value;\n }\n }\n return result;\n }\n\n /**\n * Check if propertie is type of HTMLCollection or NodeList\n * See https://stackoverflow.com/a/7238344\n *\n * @param nodes\n */\n static isNodeList(nodes) {\n try {\n const stringRepr = Object.prototype.toString.call(nodes);\n return (\n typeof nodes === 'object' &&\n /^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) &&\n typeof nodes.length === 'number' &&\n (nodes.length === 0 || (typeof nodes[0] === 'object' && nodes[0].nodeType > 0))\n );\n } catch (e) {\n return false;\n }\n }\n\n static arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return `data:image/*;base64, ${window.btoa(binary)}`;\n }\n}\n","import { Helper } from './helper.class';\n\n/**\n * Standard class\n * Other classes should extend the Standard class, if they offer own functions\n * If the extended class uses object properties with own map functions, it should implement its own map function\n */\nexport class Standard {\n /**\n * Static map method\n */\n public static map<T extends Standard>(\n this: new (...args: any[]) => T,\n data: Partial<T> | { [key: string]: any },\n item: T = new this()\n ): T {\n return (item as any).map(data);\n }\n\n /**\n * Map data into an object\n */\n public map(data: Partial<this> | { [key: string]: any }): this {\n return Helper.map(data, this);\n }\n\n /**\n * Clone object (and map additional data)\n */\n public clone(mapData?: Partial<this> | { [key: string]: any }): this {\n const current = JSON.parse(JSON.stringify(this));\n if (mapData) {\n Object.assign(current, mapData);\n }\n return new (this as any).constructor().map(current);\n }\n\n /**\n * Compare this with another object\n * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value\n *\n * @return Record<string, any> with properties of this object which are different\n */\n public getDiff(compare: Record<string, any>, clone: boolean = true) {\n return Helper.getDiff(this, compare, clone);\n }\n}\n","import { Standard } from './standard.class';\nimport { Helper } from './helper.class';\n\n/**\n * User class\n */\nexport class BasicUser extends Standard {\n id: string = undefined;\n email: string = undefined;\n firstName: string = undefined;\n lastName: string = undefined;\n roles: string[] = [];\n username: string = undefined;\n\n // ===================================================================================================================\n // Methods\n // ===================================================================================================================\n\n /**\n * Mapping\n */\n public map(data: Partial<this> | { [key: string]: any }): this {\n Helper.map(data, this);\n return this;\n }\n\n /**\n * Checks whether the user has at least one of the required roles\n */\n public hasRole(roles: string | string[]) {\n if (typeof roles === 'string') {\n roles = [roles];\n }\n if (!this.roles || this.roles.length < 1) {\n return false;\n }\n return !roles || roles.length < 1 ? true : this.roles.some((role) => roles.includes(role));\n }\n\n /**\n * Checks whether the user has all required roles\n */\n public hasAllRoles(roles: string | string[]) {\n if (typeof roles === 'string') {\n roles = [roles];\n }\n if (!this.roles || this.roles.length < 1) {\n return false;\n }\n return !roles ? true : roles.every((role) => this.roles.includes(role));\n }\n}\n","/**\n * GraphQL enum\n */\nexport class GraphQLEnum {\n value: string;\n\n constructor(value) {\n this.value = value;\n }\n}\n","import { Standard } from './standard.class';\n\n/**\n * GraphQL type\n */\nexport class GraphQLType extends Standard {\n type = '';\n isEnum = false;\n validEnums: string[] = [];\n}\n","import { GraphQLNamedType, GraphQLSchema } from 'graphql';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { Helper } from './helper.class';\nimport { GraphQLType } from './graphql-type.class';\nimport { IGraphQLTypeCollection } from '../interfaces/graphql-type-collection.interface';\nimport { GraphqlCrudType } from '../interfaces/graphql-crud-type.interface';\n\n/**\n * GraphQL meta\n */\nexport class GraphQLMeta {\n // Frozen caches\n protected args: Record<string, any> = {};\n protected fields: Record<string, any> = {};\n\n /**\n * Integrate schema\n */\n constructor(protected schema: GraphQLSchema) {\n if (!schema) {\n throw Error('Missing schema');\n }\n }\n\n /**\n * We're going to get the query and mutation types from the schema, then we're going to loop through the fields of each\n * type and check if the field name starts with `find`, `create`, `update`, or `delete`. If it does, we're going to add\n * the model name to the `possibleTypes` array\n *\n * @returns An array of objects with the name of the model, and the CRUD operations that are available for that model.\n */\n getTypes(): GraphqlCrudType[] {\n const possibleTypes: GraphqlCrudType[] = [] as any;\n const mutationType = this.schema.getMutationType();\n const queryType = this.schema.getQueryType();\n\n for (const [key, value] of Object.entries(queryType.getFields())) {\n if (key.startsWith('find')) {\n possibleTypes.push({\n name: key.split('find').pop().slice(0, -1),\n create: false,\n update: false,\n delete: false,\n });\n }\n }\n\n for (const [key, value] of Object.entries(mutationType.getFields())) {\n if (key.startsWith('create')) {\n const model = key.split('create').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).create = true;\n }\n }\n\n if (key.startsWith('update')) {\n const model = key.split('update').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).update = true;\n }\n }\n\n if (key.startsWith('delete')) {\n const model = key.split('delete').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).delete = true;\n }\n }\n }\n\n return possibleTypes;\n }\n\n /**\n * Get arguments of GraphQL function\n */\n getArgs(\n functionName: string,\n options: { cache?: boolean; freeze?: boolean; type?: GraphQLRequestType } = {}\n ): IGraphQLTypeCollection {\n const { cache, freeze, type } = {\n cache: true,\n freeze: true,\n type: undefined,\n ...options,\n };\n\n // Get cache\n if (cache && freeze) {\n const args = this.args[functionName + type];\n if (args) {\n return args;\n }\n }\n\n const func = this.getFunction(functionName, { type });\n const result = {};\n if (func?.args) {\n func.args.forEach((item) => {\n result[item.name] = this.getDeepType(item.type);\n });\n }\n\n // Set cache\n if (freeze) {\n this.args[functionName + type] = Helper.deepFreeze(result);\n }\n\n return result;\n }\n\n /**\n * Get fields of GraphQL function\n */\n getFields(\n functionName: string,\n options: { cache?: boolean; freeze?: boolean; type?: GraphQLRequestType } = {}\n ): IGraphQLTypeCollection {\n const { cache, freeze, type } = {\n cache: true,\n freeze: true,\n type: undefined,\n ...options,\n };\n\n // Get cache\n if (cache && freeze) {\n const args = this.fields[functionName + type];\n if (args) {\n return args;\n }\n }\n\n const func = this.getFunction(functionName, options);\n const result: IGraphQLTypeCollection = this.getDeepType(func.type) as IGraphQLTypeCollection;\n\n // Set cache\n if (freeze) {\n this.fields[functionName + type] = Helper.deepFreeze(result);\n }\n\n return result;\n }\n\n /**\n * Get GraphQL function\n */\n protected getFunction(name: string, options: { type?: GraphQLRequestType } = {}): Record<string, any> {\n // Set config\n const config = {\n ...options,\n };\n\n // Init possible functions\n let functions = {};\n\n // If function type is set\n if (config.type) {\n const graphQLType = config.type.charAt(0).toUpperCase() + config.type.slice(1);\n const type = this.schema.getType(graphQLType);\n if (type) {\n functions = (type as any).getFields();\n }\n }\n\n // If function type is not set\n else {\n ['Subscription', 'Mutation', 'Query'].forEach((item) => {\n const type: any = this.schema.getType(item);\n if (type) {\n functions = {\n ...functions,\n ...(type.getFields() || {}),\n };\n }\n });\n }\n\n // Get function via name\n return functions[name];\n }\n\n /**\n * Get type\n */\n protected getType(name: string): GraphQLNamedType | null | undefined {\n return this.schema.getType(name);\n }\n\n /**\n * Get deep type data\n */\n protected getDeepType(type: any, prepared: WeakMap<any, any> = new WeakMap()): IGraphQLTypeCollection | GraphQLType {\n // Check type\n if (!type) {\n return type;\n }\n\n // Infinite regress protection\n const preparedObject = {};\n\n // Check prepared\n if (typeof type === 'object') {\n const preparedType = prepared.get(type);\n if (preparedType) {\n return preparedType;\n }\n\n // Set prepared\n prepared.set(type, preparedObject);\n }\n\n // Search deeper\n if (type.ofType) {\n const ofTypeResult = this.getDeepType(type.ofType, prepared);\n Object.assign(preparedObject, ofTypeResult);\n return ofTypeResult;\n }\n\n // Process fields\n if (type._fields) {\n const result = {};\n for (const [key, value] of Object.entries(type._fields)) {\n result[key] = this.getDeepType(value, prepared);\n }\n Object.assign(preparedObject, result);\n return result;\n }\n\n // Get type name\n if (type.type) {\n const typeResult = this.getDeepType(type.type, prepared);\n Object.assign(preparedObject, typeResult);\n return typeResult;\n }\n\n // Initialize GraphQLType\n const graphqlType = GraphQLType.map({\n type: type.name,\n });\n\n // Set enum values\n if (!!type._values) {\n graphqlType.isEnum = true;\n for (const [key, value] of Object.entries(type._nameLookup)) {\n if (!(value as any).isDeprecated) {\n graphqlType.validEnums.push(key);\n }\n }\n }\n\n // Finish\n prepared.set(type, graphqlType);\n return graphqlType;\n }\n}\n","import { BasicUser } from './basic-user.class';\nimport { Helper } from './helper.class';\nimport { Standard } from './standard.class';\n\nexport class Auth extends Standard {\n token: string = undefined;\n user: BasicUser = undefined;\n\n public map(data: Partial<this> | { [key: string]: any }): this {\n Helper.map(data, this);\n this.user = data?.user ? BasicUser.map(data.user) : this.user;\n return this;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { StorageType } from '../types/storage.type';\n\n/**\n * Configuration for base module\n */\nexport interface BaseModuleConfig {\n /**\n * URL to server API\n * Default: 'localhost:3000'\n */\n apiUrl?: string;\n\n /**\n * Websocket URL to server API\n */\n wsUrl?: string;\n\n /**\n * Default redirect URL for AuthGuard\n * Default: '/auth'\n */\n authGuardRedirectUrl?: string;\n\n /**\n * Whether logging is enabled or not\n */\n logging?: boolean;\n\n /**\n * Version of the App (for storage handling)\n * Default: null\n */\n version?: string;\n\n /**\n * Prefix of the App (for storage handling)\n * Default: null\n */\n prefix?: string;\n\n /**\n * Scroll detection offset for ScrollService\n * Should be >= scrollOffset\n * Default: 200\n */\n scrollDetectionOffset?: number;\n\n /**\n * Scroll offset for ScrollService\n * Default: 100\n */\n scrollOffset?: number;\n\n /**\n * Sampling rate for scroll done detection\n * Default: 100\n */\n scrollSamplingRate?: number;\n\n /**\n * Type of storage: 'session' or 'local'\n * Default: 'local'\n */\n storageType?: StorageType;\n}\n\nexport const BASE_MODULE_CONFIG = new InjectionToken('BASE_MODULE_CONFIG');\n","import { Inject, Injectable } from '@angular/core';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\n\n/**\n * Storage service for local data storage\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService {\n /**\n * Storage\n */\n protected storage: any = null;\n\n /**\n * Prefix for storage keys\n */\n protected prefix = '';\n\n /**\n * Initializations\n */\n constructor(@Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig) {\n // Set storage\n const type = moduleConfig.storageType ? moduleConfig.storageType : 'local';\n if (window[type + 'Storage']) {\n this.storage = window[type + 'Storage'];\n }\n\n // Set prefix\n this.prefix = '';\n if (moduleConfig.prefix) {\n this.prefix += moduleConfig.prefix + '_';\n }\n if (moduleConfig.version) {\n this.prefix += moduleConfig.version + '_';\n }\n }\n\n /**\n * Save itemKeys\n *\n * If you want to save one item, use itemKeys and value parameters like these:\n * save('KEY_OF_THE_ITEM', ITEM)\n *\n * If you want to save multiple items, use itemKeys only (value parameter will be ignored):\n * save({'KEY_OF_ITEM_1': ITEM_1, 'KEY_OF_ITEM_2': ITEM_2, ...})\n */\n public save(itemKeys: string | { [key: string]: any }, value?: any): boolean {\n // Check local storage\n if (!this.storage) {\n return false;\n }\n\n // Check item keys and value\n if (\n !itemKeys ||\n (typeof itemKeys === 'object' && !Object.keys(itemKeys).length) ||\n (typeof itemKeys === 'string' && value === undefined)\n ) {\n return false;\n }\n\n if (typeof itemKeys === 'object') {\n for (const [itemKey, itemValue] of Object.entries(itemKeys)) {\n this.storage.setItem(this.prefix + itemKey, JSON.stringify(itemValue));\n }\n return true;\n }\n\n this.storage.setItem(this.prefix + itemKeys, JSON.stringify(value));\n return true;\n }\n\n /**\n * Load items via key(s)\n */\n public load(itemKeys: string | string[]): any {\n // Check local storage\n if (!this.storage) {\n return;\n }\n\n // Check item keys\n if (!itemKeys || (Array.isArray(itemKeys) && !itemKeys.length)) {\n return null;\n }\n\n if (Array.isArray(itemKeys)) {\n const back = {};\n itemKeys.forEach((itemKey) => {\n const loadedItem = this.storage.getItem(this.prefix + itemKey);\n if (loadedItem) {\n back[itemKey] = JSON.parse(loadedItem);\n } else {\n back[itemKey] = null;\n }\n });\n return back;\n }\n\n let value = this.storage.getItem(this.prefix + itemKeys);\n if (value) {\n value = JSON.parse(value);\n }\n\n return value;\n }\n\n /**\n * Remove item from storage\n *\n * @param itemKeys keys or key to remove\n */\n public remove(itemKeys: string | string[]): boolean {\n // Check local storage\n if (!this.storage) {\n return false;\n }\n\n if (Array.isArray(itemKeys)) {\n itemKeys.forEach((key) => {\n this.storage.removeItem(this.prefix + key);\n });\n return true;\n }\n\n this.storage.removeItem(this.prefix + itemKeys);\n return true;\n }\n\n /**\n * Clear local storage\n */\n public reset(): void {\n this.storage.clear();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { RestartableClient } from '../functions/ws-client.function';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WsService {\n client: RestartableClient;\n\n reconnect() {\n this.client?.restart();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\nimport { BasicUser } from '../classes/basic-user.class';\nimport { StorageService } from './storage.service';\nimport { WsService } from './ws.service';\n\n/**\n * Authentication service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n // Subjects\n private _currentUser: BehaviorSubject<BasicUser> = new BehaviorSubject<BasicUser>(null);\n private _token: BehaviorSubject<string> = new BehaviorSubject<string>(null);\n\n /**\n * Constructor\n */\n constructor(\n @Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig,\n private storageService: StorageService,\n private wsService: WsService\n ) {\n this.token = this.storageService.load('token') as string;\n this.currentUser = this.storageService.load('currentUser') as BasicUser;\n }\n\n /**\n * Logout\n */\n public logout() {\n this.storageService.remove(['token', 'currentUser']);\n this.currentUser = null;\n this.token = null;\n }\n\n // #################################################################\n // Current User\n // #################################################################\n\n get currentUser(): BasicUser {\n return this._currentUser.value;\n }\n\n set currentUser(user: BasicUser) {\n this._currentUser.next(user);\n this.storageService.save('currentUser', user);\n }\n\n get currentUserObservable(): Observable<BasicUser> {\n return this._currentUser.asObservable();\n }\n\n // #################################################################\n // Token\n // #################################################################\n\n get token(): string {\n return this._token.value;\n }\n\n set token(token: string) {\n this._token.next(token);\n this.storageService.save('token', token);\n this.wsService.reconnect();\n }\n\n get tokenObservable(): Observable<string> {\n return this._token.asObservable();\n }\n}\n","/**\n * GraphQL request type enum\n */\nexport enum GraphQLRequestType {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n","import { Apollo, gql } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { buildClientSchema, getIntrospectionQuery, GraphQLSchema, IntrospectionQuery } from 'graphql';\nimport { map } from 'rxjs/operators';\nimport { GraphQLMeta } from '../classes/graphql-meta.class';\nimport { Helper } from '../classes/helper.class';\n\n/**\n * GraphQL meta service\n *\n * For collecting meta information of the GraphQL API\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLMetaService {\n // Caches\n protected _frozenSchema: GraphQLSchema;\n protected _frozenSchemaObservable: Observable<GraphQLSchema>;\n protected _meta: GraphQLMeta;\n protected _metaObservable: Observable<GraphQLMeta>;\n protected _schemaObservable: Observable<GraphQLSchema>;\n\n // Private caches\n private _introspectionQuery: IntrospectionQuery;\n\n /**\n * Include services\n */\n constructor(protected apollo: Apollo) {}\n\n /**\n * Getter of introspectionQuery\n */\n get introspectionQuery(): IntrospectionQuery {\n return JSON.parse(JSON.stringify(this._introspectionQuery));\n }\n\n /**\n * Get schema for API\n * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d\n */\n public getSchema(options: { cache?: boolean; freeze?: boolean } = {}): Observable<GraphQLSchema> {\n // Get configurations\n const config = {\n cache: true,\n freeze: true,\n ...options,\n };\n\n // Use caching\n if (config.cache) {\n if (config.freeze && this._frozenSchema) {\n return of(this._frozenSchema);\n }\n if (this._introspectionQuery) {\n return of(buildClientSchema(this.introspectionQuery));\n }\n if (config.freeze && this._frozenSchemaObservable) {\n return this._frozenSchemaObservable;\n } else if (!config.freeze && this._schemaObservable) {\n return this._schemaObservable;\n }\n }\n\n // Request schema from server\n const observable = this.apollo\n .query({\n query: gql(getIntrospectionQuery({ descriptions: false })),\n })\n .pipe(\n map((schema: any) => {\n // Cache introspectionQuery\n this._introspectionQuery = schema.data;\n\n // Convert schema to GraphQLSchema\n this._frozenSchema = Helper.deepFreeze(buildClientSchema(this.introspectionQuery));\n\n // Return GraphQLSchema\n if (config.freeze) {\n return this._frozenSchema;\n }\n return buildClientSchema(schema.data);\n })\n );\n\n // Set observables\n if (config.freeze) {\n this._frozenSchemaObservable = observable;\n } else {\n this._schemaObservable = observable;\n }\n\n // Return result\n return observable;\n }\n\n /**\n * Get meta for API\n * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d\n */\n public getMeta(options: { cache?: boolean; log?: boolean } = {}): Observable<GraphQLMeta> {\n // Get configurations\n const config = {\n cache: true,\n log: false,\n ...options,\n };\n\n // Use caching\n if (config.cache) {\n if (this._meta) {\n return of(this._meta);\n } else if (this._metaObservable) {\n return this._metaObservable;\n }\n }\n\n // Request schema from server\n const observable = this.getSchema(options).pipe(\n map((schema: any) => {\n // Log\n if (config.log) {\n console.log({ schema });\n }\n\n this._meta = new GraphQLMeta(schema);\n return this._meta;\n })\n );\n\n // Set observables\n this._metaObservable = observable;\n\n // Return result\n return observable;\n }\n}\n","import { Apollo, gql } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { IGraphQLOptions } from '../interfaces/graphql-options.interface';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { Observable, throwError } from 'rxjs';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { GraphQLEnum } from '../classes/graphql-enum.class';\nimport { GraphQLType } from '../classes/graphql-type.class';\nimport { IGraphQLTypeCollection } from '../interfaces/graphql-type-collection.interface';\n\n/**\n * GraphQL service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLService {\n /**\n * Include services\n */\n constructor(protected apollo: Apollo, protected graphQLMetaService: GraphQLMetaService) {}\n\n /**\n * GraphQL request\n */\n public graphQl(graphql: string, options: IGraphQLOptions = {}): Observable<any> {\n // Check arguments\n if (!graphql) {\n throwError('Missing graphql argument');\n }\n\n // Get config\n const config = {\n arguments: null,\n fields: null,\n log: false,\n model: null,\n type: GraphQLRequestType.QUERY,\n ...options,\n };\n\n // Convert class to Object for arguments\n if (typeof config.arguments === 'function') {\n config.arguments = new config.arguments();\n }\n\n // Convert class to Object for fields\n if (typeof config.fields === 'function') {\n config.fields = new config.fields();\n }\n\n // Log\n if (config.log) {\n console.log({ config });\n }\n\n // Send request\n return new Observable((subscriber) => {\n // Get meta\n this.graphQLMetaService.getMeta({ log: config.log }).subscribe((meta) => {\n // Prepare fields\n let fields;\n let allowedFields;\n\n // Log meta\n if (config.log) {\n console.log({ meta });\n }\n\n if (config.fields) {\n allowedFields = meta.getFields(graphql, { type: config.type });\n\n // Log meta\n if (config.log) {\n console.log({ allowedFields });\n }\n\n const fieldsData = this.prepareFields(config.fields, {\n allowed: allowedFields,\n });\n\n // Log fields data\n if (config.log) {\n fieldsData.usedFields.sort();\n fieldsData.schemaFields.sort();\n const filtered = fieldsData.schemaFields.filter((field) => !fieldsData.usedFields.includes(field));\n const unused = this.graphQLTypeCollectionToStringArray(allowedFields).filter(\n (field) => !fieldsData.usedFields.includes(field)\n );\n console.log({ fieldsData, filtered, unused });\n }\n\n fields = fieldsData.fieldsString;\n }\n\n if (fields && !fields.startsWith('{')) {\n fields = '{' + fields + '\\n}';\n }\n\n // Log fields\n if (config.log) {\n console.log({ fields });\n }\n\n // Get allowed args\n const allowedArgs = meta.getArgs(graphql, { type: config.type });\n\n // Log allowed args\n if (config.log) {\n console.log({ allowedArgs });\n }\n\n const argsData = this.prepareArguments(config.arguments, {\n allowed: allowedArgs,\n });\n\n // Log args data\n if (config.log) {\n argsData.usedArgs.sort();\n argsData.schemaArgs.sort();\n const filtered = argsData.schemaArgs.filter((field) => !argsData.usedArgs.includes(field));\n const unused = this.graphQLTypeCollectionToStringArray(allowedArgs)\n .sort()\n .filter((field) => !argsData.usedArgs.includes(field));\n console.log({ argsData, filtered, unused });\n }\n\n const args = argsData?.argsString || '';\n\n // Log\n if (config.log) {\n console.log({ graphQL: graphql, args, fields, type: config.type });\n }\n\n // Prepare request\n const documentNode = fields\n ? gql(config.type + '{\\n' + graphql + args + fields + '\\n}')\n : gql(config.type + '{\\n' + graphql + args + '\\n}');\n\n // Log\n if (config.log) {\n console.log({ documentNode });\n }\n\n const request: any = {};\n request[config.type] = documentNode;\n\n // Log\n if (config.log) {\n console.log({ request });\n }\n\n let func;\n if (config.type === GraphQLRequestType.MUTATION) {\n func = 'mutate';\n request[config.type] = documentNode;\n } else if (config.type === GraphQLRequestType.SUBSCRIPTION) {\n func = 'subscribe';\n request.query = documentNode;\n } else {\n func = config.type;\n request[config.type] = documentNode;\n }\n\n (this.apollo as any)[func](request).subscribe(\n (result: any) => {\n const data = result?.data?.[graphql] !== undefined ? result.data[graphql] : result;\n\n // Direct data\n if (!config.model) {\n subscriber.next(data);\n }\n\n // Map data as array\n else if (Array.isArray(data)) {\n subscriber.next(\n data.map((item) => {\n return config.model.map(item);\n })\n );\n }\n\n // Map data\n else {\n subscriber.next(config.model.map(data));\n }\n\n if (config.type !== GraphQLRequestType.SUBSCRIPTION) {\n // Done\n subscriber.complete();\n }\n },\n (error: any) => {\n subscriber.error(error);\n subscriber.complete();\n }\n );\n });\n });\n }\n\n /**\n * Get fields / args from IGraphQLTypeCollection\n */\n protected graphQLTypeCollectionToStringArray(\n collection: IGraphQLTypeCollection,\n current = '',\n result = [],\n cacheNode = []\n ) {\n if (collection) {\n if (collection instanceof GraphQLType) {\n result.push(current);\n } else {\n if (current?.includes('.')) {\n cacheNode.push(current.split('.')[1]);\n } else if (current) {\n cacheNode.push(current);\n }\n for (const key of Object.keys(collection)) {\n if (current === key || cacheNode.includes(key)) {\n continue;\n }\n this.graphQLTypeCollectionToStringArray(\n collection[key] as IGraphQLTypeCollection,\n current ? current + '.' + key : key,\n result,\n cacheNode\n );\n }\n }\n }\n return result;\n }\n\n /**\n * Prepare arguments for GraphQL request\n */\n protected prepareArguments(\n args: any,\n options: {\n allowed?: any;\n level?: number;\n parent?: string;\n schemaArgs?: string[];\n usedArgs?: string[];\n } = {}\n ): { argsString: string; schemaArgs: string[]; usedArgs: string[] } {\n // Init config variables\n const { allowed, level, parent, schemaArgs, usedArgs } = {\n allowed: null,\n level: 1,\n parent: '',\n schemaArgs: [],\n usedArgs: [],\n ...options,\n };\n\n // Check args\n if (args === undefined || args === null) {\n return { argsString: '', schemaArgs, usedArgs };\n }\n\n // Init args\n const result = [];\n\n // Process array\n if (Array.isArray(args)) {\n const allowedKeys = allowed ? Object.keys(allowed) : null;\n for (const item of args) {\n let key = null;\n if (allowed) {\n if (allowed.length < 1) {\n break;\n }\n key = allowedKeys?.shift();\n }\n\n // Process value\n result.push(\n this.prepareArguments(item, {\n allowed: key ? allowed[key] : null,\n level: level + 1,\n parent: parent + key + '.',\n schemaArgs,\n usedArgs,\n }).argsString\n );\n }\n\n // Encapsulation of the array result\n if (result.length) {\n // Complete result, encapsulated via round brackets\n if (level === 1) {\n return { argsString: '(' + result.join(', ') + ')', schemaArgs, usedArgs };\n }\n\n // Deeper result part, encapsulated via square brackets\n else {\n return { argsString: '[' + result.join(', ') + ']', schemaArgs, usedArgs };\n }\n }\n }\n\n // Process object\n else if (typeof args === 'object') {\n // Check object is empty\n if (args && Object.keys(args).length === 0 && Object.getPrototypeOf(args) === Object.prototype) {\n return { argsString: '{}', schemaArgs, usedArgs };\n }\n // Process all object entries\n for (const [key, value] of Object.entries(args)) {\n // Init data for current entry\n const currentKey = parent + key;\n schemaArgs.push(currentKey);\n\n // If the allowed key handling is enabled and the current key is not included in the list of allowed keys,\n // the current key will be skipped\n if (allowed && !allowed[key]) {\n continue;\n }\n\n // Skip value if not exists\n if (value === undefined || value === null) {\n continue;\n }\n\n // Add current key to metadata\n usedArgs.push(currentKey);\n\n // Process GraphQLEnum\n if (value instanceof GraphQLEnum) {\n result.push(key + ':' + value.value);\n continue;\n }\n\n // Process array\n else if (Array.isArray(value)) {\n result.push(\n key +\n ': [' +\n value.map(\n (item) =>\n this.prepareArguments(item, {\n allowed: allowed[key],\n level: level + 1,\n parent: currentKey + '.',\n schemaArgs,\n usedArgs,\n }).argsString\n ) +\n ']'\n );\n continue;\n }\n\n // Prepare additional result string\n let additionalResult = key + ': ';\n\n // Value is a date object\n if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]') {\n additionalResult += `\"\"\"${(value as Date).toString()}\"\"\"`;\n }\n\n // Value is a string\n else if (typeof value === 'string') {\n // Enum (doesn't need quotation marks)\n if (allowed[key].isEnum) {\n additionalResult += value;\n }\n\n // String\n else {\n additionalResult += `\"${value.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n')}\"`;\n }\n }\n\n // Value is a simple boolean or a number\n else if (typeof value === 'boolean' || typeof value === 'number') {\n additionalResult += value;\n }\n\n // Others\n else {\n additionalResult += this.prepareArguments(value, {\n allowed: allowed[key],\n level: level + 1,\n parent: currentKey + '.',\n schemaArgs,\n usedArgs,\n }).argsString;\n }\n\n // Push deeper part into result array\n result.push(additionalResult);\n }\n\n // Encapsulation of the object result\n if (result.length) {\n // Complete result, encapsulated via round brackets\n if (level === 1) {\n return { argsString: '(' + result.join(', ') + ')', schemaArgs, usedArgs };\n }\n\n // Deeper result part, encapsulated via curly brackets\n else {\n return { argsString: '{' + result.join(', ') + '}', schemaArgs, usedArgs };\n }\n }\n }\n\n // Prepare and process other / unknown values as JSON\n else {\n return { argsString: JSON.stringify(args), schemaArgs, usedArgs };\n }\n }\n\n /**\n * Prepare fields for GraphQL request\n */\n protected prepareFields(\n fields: any,\n options: {\n allowed?: any;\n schemaFields?: string[];\n usedFields?: string[];\n parent?: string;\n spaces?: number;\n tab?: number;\n } = {}\n ): { schemaFields: string[]; fieldsString: string; usedFields: string[] } {\n // Config\n const { allowed, parent, schemaFields, spaces, tab, usedFields } = {\n allowed: null,\n parent: '',\n schemaFields: [],\n spaces: 2,\n tab: 1,\n usedFields: [],\n ...options,\n };\n\n // Init fields string\n let fieldsString = '';\n\n // Check fields\n if (!fields) {\n return { fieldsString, schemaFields, usedFields };\n }\n\n // Process string\n if (typeof fields === 'string') {\n if (\n allowed &&\n ((typeof allowed === 'string' && allowed !== fields) || (typeof allowed === 'object' && !allowed[fields]))\n ) {\n return { fieldsString, schemaFields, usedFields };\n }\n return { fieldsString: '\\n' + ' '.repeat(spaces).repeat(tab) + fields, schemaFields, usedFields };\n }\n\n // Process array\n else if (Array.isArray(fields)) {\n for (const item of fields) {\n if (typeof item === 'object') {\n fieldsString =\n fieldsString +\n this.prepareFields(item, {\n allowed,\n parent,\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString;\n continue;\n }\n const currentPath = parent + item;\n schemaFields.push(currentPath);\n if (allowed && !allowed?.[item]) {\n continue;\n }\n usedFields.push(currentPath);\n fieldsString =\n fieldsString +\n this.prepareFields(item, {\n allowed:\n typeof allowed?.[item] === 'object' && !(allowed?.[item] instanceof GraphQLType) ? allowed?.[item] : item,\n parent: currentPath + '.',\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString;\n }\n }\n\n // Process object\n else if (typeof fields === 'object') {\n for (const [key, val] of Object.entries(fields)) {\n const currentPath = parent + key;\n schemaFields.push(currentPath);\n if (allowed && !allowed[key]) {\n continue;\n }\n usedFields.push(currentPath);\n if (typeof val !== 'object' || !Object.keys(val).length) {\n fieldsString = fieldsString + '\\n' + ' '.repeat(spaces).repeat(tab) + key;\n } else {\n fieldsString =\n fieldsString +\n '\\n' +\n ' '.repeat(spaces).repeat(tab) +\n key +\n ' ' +\n '{' +\n this.prepareFields(val, {\n allowed:\n typeof allowed?.[key] === 'object' && !(allowed?.[key] instanceof GraphQLType) ? allowed?.[key] : key,\n parent: currentPath + '.',\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString +\n '\\n' +\n ' '.repeat(spaces).repeat(tab) +\n '}';\n }\n }\n }\n\n // Return result\n return { fieldsString, schemaFields, usedFields };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Loader service for loading indication\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n public isLoading = new BehaviorSubject(false);\n\n public start(): void {\n this.isLoading.next(true);\n }\n\n public stop(): void {\n this.isLoading.next(false);\n }\n\n public getAsObservable(): Observable<boolean> {\n return this.isLoading.asObservable();\n }\n}\n","import { Apollo } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GraphQLService } from './graphql.service';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { IGraphQLPlusOptions } from '../interfaces/graphql-plus-options.interfacen';\nimport { LoaderService } from './loader.service';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\n\n/**\n * GraphQL plus service, for extra error handling and loading indication\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLPlusService extends GraphQLService {\n /**\n * Include services\n */\n constructor(\n protected apollo: Apollo,\n protected graphqlMetaService: GraphQLMetaService,\n protected loaderService: LoaderService\n ) {\n super(apollo, graphqlMetaService);\n }\n\n public graphQl(graphql: string, options: IGraphQLPlusOptions = {}): Observable<any> {\n this.handleLoader('start', options);\n\n return new Observable((subscriber) => {\n super.graphQl(graphql, options).subscribe(\n (response) => {\n if (response && response.errors) {\n this.handleError(response.errors, options.excludedErrors);\n subscriber.error(response);\n this.handleLoader('stop', options);\n subscriber.complete();\n }\n\n subscriber.next(response);\n this.handleLoader('stop', options);\n if (options.type !== GraphQLRequestType.SUBSCRIPTION) {\n subscriber.complete();\n }\n },\n (error) => {\n if (!options.ignoreErrors) {\n this.handleError(error, options.excludedErrors);\n }\n subscriber.error(error);\n this.handleLoader('stop', options);\n subscriber.complete();\n }\n );\n });\n }\n\n handleLoader(state: 'start' | 'stop', options: IGraphQLPlusOptions): void {\n if (options.loading) {\n if (state === 'start') {\n this.loaderService.start();\n } else if (state === 'stop') {\n this.loaderService.stop();\n }\n }\n }\n\n handleError(error: Error, excludedErrors: any = null): void {\n if (excludedErrors) {\n if (Array.isArray(excludedErrors)) {\n excludedErrors.forEach((excludedError) => {\n if (error.message.includes(excludedError.toLowerCase())) {\n return;\n }\n });\n } else if (error.message.toLowerCase().includes(excludedErrors?.toLowerCase())) {\n return;\n }\n }\n\n this.displayError(error);\n }\n\n displayError(error: any): void {\n console.error(error);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormsService {\n public validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { map } from 'rxjs';\nimport { Auth } from '../classes/auth.class';\nimport { BasicUser } from '../classes/basic-user.class';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { AuthService } from './auth.service';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { GraphQLPlusService } from './graphql-plus.service';\nimport { LoaderService } from './loader.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService extends GraphQLPlusService {\n constructor(\n protected apollo: Apollo,\n protected graphqlMetaService: GraphQLMetaService,\n protected loaderService: LoaderService,\n protected authService: AuthService\n ) {\n super(apollo, graphqlMetaService, loaderService);\n }\n\n /**\n * Login\n *\n * @param input\n */\n login(input: { email: string; password: string }) {\n return this.graphQl('signIn', {\n arguments: { input },\n fields: ['token', { user: ['id', 'firstName', 'lastName', 'email', 'roles'] }],\n type: GraphQLRequestType.QUERY,\n loading: true,\n }).pipe(\n map((response: Auth) => {\n this.authService.token = response.token;\n this.authService.currentUser = BasicUser.map(response.user);\n\n return Auth.map({\n token: response.token,\n user: BasicUser.map(response.user),\n });\n })\n );\n }\n\n /**\n * Register\n *\n * @param input\n */\n register(input: { firstName: string; lastName: string; email: string; password: string }) {\n return this.graphQl('signUp', {\n arguments: { input },\n fields: ['token', { user: ['id', 'firstName', 'lastName', 'email', 'roles'] }],\n type: GraphQLRequestType.MUTATION,\n loading: true,\n }).pipe(\n map((response: Auth) => {\n this.authService.token = response.token;\n this.authService.currentUser = BasicUser.map(response.user);\n\n return Auth.map({\n token: response.token,\n user: BasicUser.map(response.user),\n });\n })\n );\n }\n\n /**\n * Request password reset mail\n *\n * @param email\n */\n requestPasswordResetMail(email: string) {\n return this.graphQl('requestPasswordResetMail', {\n arguments: { email },\n fields: [],\n type: GraphQLRequestType.QUERY,\n loading: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Helper } from '../classes/helper.class';\n\n/**\n * Image service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageService {\n /**\n * Preaload images (for lazy handling)\n *\n * @param options\n * @protected\n */\n public preLoadImages(options?: {\n doneFunction?: () => Promise<any> | any | void;\n elements?:\n | Element\n | Element[]\n | HTMLCollectionOf<Element>\n | Node\n | NodeList\n | Document\n | HTMLElement\n | HTMLElement[];\n regExp?: RegExp;\n }): Promise<any> {\n // Init configuration\n const config = {\n doneFunnction: undefined,\n elements: document,\n regExp: undefined,\n ...options,\n };\n\n return new Promise((resolve) => {\n // Convert element(s) into array\n if (!Array.isArray(config.elements)) {\n // NodeList or HTMLCollection\n if (Helper.isNodeList(config.elements)) {\n config.elements = Array.from(config.elements as HTMLCollection | NodeList) as Element[];\n }\n\n // Single element\n else {\n config.elements = [config.elements] as Element[];\n }\n }\n\n // Init loading\n const promises = [];\n\n // Get all images\n let images: HTMLImageElement[] = [];\n config.elements.forEach((element) => {\n images = images.concat(Array.from(element.getElementsByTagName('img')));\n });\n\n // Prepare images\n for (let image of images) {\n const src = image.getAttribute('src');\n\n // Check if changes are necessary and possible\n if (\n (image.complete && image.naturalHeight !== 0) || // already laoded\n !src || // Image has no src\n config.regExp?.test(src) // Test if src matches regular expression\n ) {\n continue;\n }\n\n // Replace lazy loading image with immediately loading image\n if (image.getAttribute('loading') === 'lazy') {\n const newImage = document.createElement('img');\n Array.from(image.attributes).forEach((attr) => {\n if (attr.name !== 'loading' && attr.name !== 'src') {\n newImage.setAttribute(attr.name, attr.value);\n }\n });\n image.replaceWith(newImage);\n image = newImage;\n }\n\n // Wait for laoding\n promises.push(this.loadImage(image, src));\n }\n\n // Wait until all images loaded\n Promise.all(promises)\n .catch((e) => console.error('Error during image loading', e))\n .finally(async () => {\n // Return result\n let result;\n if (config.doneFunnction) {\n result = await config.doneFunction();\n }\n resolve(result);\n });\n });\n }\n\n /**\n * Load image for image element\n *\n * @param imageElement\n * @param src\n * @protected\n */\n public async loadImage(imageElement: HTMLImageElement, src?: string) {\n src = src || imageElement.src;\n return new Promise((resolve, reject) => {\n imageElement.onload = () => resolve(imageElement);\n imageElement.onerror = reject;\n imageElement.src = src;\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\nimport { ImageService } from './image.service';\n\n/**\n * Scroll service for autoscroll to specific fragments\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollService {\n /**\n * Current scroll promise\n *\n * @protected\n */\n protected scrollPromise: Promise<void>;\n\n /**\n * Resolve function of current scroll promise\n *\n * @protected\n */\n protected scrollPromiseResolve: (value: void | PromiseLike<void>) => void;\n\n /**\n * Is a scroll listener set\n *\n * @protected\n */\n protected scrollListener = false;\n\n /**\n * Current scroll timer;\n *\n * @protected\n */\n protected scrollTimer = -1;\n\n /**\n * Scroll offset\n */\n protected readonly scrollOffset: number;\n\n /**\n * Detection offset\n * Should be >= scrollOffset\n */\n protected readonly detectionOffset: number;\n\n /**\n * Sampling rate for scroll done detection\n */\n protected readonly scrollSamplingRate: number;\n\n /**\n * Initializer\n */\n constructor(\n protected router: Router,\n @Inject(BASE_MODULE_CONFIG) protected moduleConfig: BaseModuleConfig,\n protected imageService: ImageService\n ) {\n const config = {\n scrollDetectionOffset: 200,\n scrollOffset: 100,\n scrollSamplingRate: 100,\n ...moduleConfig,\n };\n\n this.detectionOffset = config.scrollDetectionOffset;\n this.scrollOffset = config.scrollOffset;\n this.scrollSamplingRate = config.scrollSamplingRate;\n }\n\n /**\n * Scroll to structureElement with specific ID\n */\n async scrollTo(\n id: string,\n options: {\n checkUrl?: boolean;\n loadImagesBefore?: boolean;\n resetStyles?: boolean;\n setOverflow?: boolean;\n stopPropagation?: boolean;\n } = {}\n ) {\n // Prepare config\n const config = {\n checkUrl: false,\n loadImagesBefore: true,\n resetStyles: false,\n setOverflow: true,\n stopPropagation: true,\n ...options,\n };\n\n // Check current URL\n if (config.checkUrl && this.router.url !== '/' && !this.router.url.startsWith('/#')) {\n await this.router.navigate(['/'], { fragment: id });\n return !config.stopPropagation;\n }\n\n // Check if target element exits\n const el = document.getElementById(id);\n if (!el) {\n console.error('Missing scroll element with ID:', id);\n return !config.stopPropagation;\n }\n\n // Check if body overflow is visible\n // This is necessary for scroll handling\n const body = document.querySelector('body');\n let undoOverflowChanges = false;\n const scrollBodyStyles = JSON.parse(JSON.stringify(window.getComputedStyle(body)));\n if (config.setOverflow && (scrollBodyStyles.overflowX !== 'visible' || scrollBodyStyles.overflowY !== 'visible')) {\n // Set body overflow to visible\n console.warn('Style of body element for overflowX and overflowY will be set to \"visible\" for scrolling!');\n body.style.overflowX = 'visible';\n body.style.overflowY = 'visible';\n undoOverflowChanges = true;\n }\n\n // Load images before scrolling (once)\n if (config.loadImagesBefore) {\n await this.imageService.preLoadImages();\n }\n\n // Get get bounding rect of target element\n const cords = el.getBoundingClientRect();\n\n // Scroll to element\n window.scrollBy({ top: cords.top - this.scrollOffset, behavior: 'smooth' });\n await this.scrollDone({\n doneFunction: () => {\n // Undo changes\n if (undoOverflowChanges && config.resetStyles) {\n body.style.overflowX = scrollBodyStyles.overflowX;\n body.style.overflowY = scrollBodyStyles.overflowY;\n console.warn('Original style of body element for overflowX and overflowY is set.');\n }\n },\n });\n\n // Return stop propagation configuration\n return !config.stopPropagation;\n }\n\n /**\n * Get last active structureElement\n */\n getLastActiveElement(list?): string {\n const currentScrollPosition = window.scrollY;\n const elementsWithId = document.querySelectorAll('[id]');\n let lastId = null;\n let lastPosition = 0 - this.detectionOffset - 1;\n elementsWithId.forEach((element) => {\n const cords = element.getBoundingClientRect();\n const top = cords.top + window.pageYOffset - this.detectionOffset;\n if (\n (!list || !list.length || list.includes(element.id)) && // In list\n top < currentScrollPosition && // In active area\n lastPosition < top // Higher than the last one\n ) {\n lastId = element.id;\n lastPosition = top;\n }\n });\n return lastId;\n }\n\n /**\n * Check if ID is active\n */\n isActive(id, list?, isFirst?) {\n const lastActiveElement = this.getLastActiveElement(list);\n return id === lastActiveElement || (lastActiveElement === null && isFirst);\n }\n\n /**\n * Scroll done promise\n */\n public async scrollDone(options: { doneFunction?: () => any | void } = {}): Promise<any> {\n // Init configuration\n const config = {\n doneFunction: undefined,\n ...options,\n };\n\n // Wait for scroll done\n await this.scrollDoneDetection();\n\n // Get result\n if (config.doneFunction) {\n return config.doneFunction();\n }\n }\n\n /**\n * Scroll done detecton\n *\n * @protected\n */\n protected scrollDoneDetection(): Promise<void> {\n // Return current scroll promise (Singelton)\n if (this.scrollPromise) {\n return this.scrollPromise;\n }\n\n // Create current scroll promise\n this.scrollPromise = new Promise((resolve) => {\n this.scrollPromiseResolve = resolve;\n if (this.scrollTimer !== -1) {\n window.clearTimeout(this.scrollTimer);\n }\n this.scrollTimer = window.setTimeout(() => {\n window.removeEventListener('scroll', this.scrollDoneDetection.bind(this));\n this.scrollPromise = undefined;\n resolve();\n }, this.scrollSamplingRate);\n });\n\n // Lisitening to scroll event;\n window.addEventListener('scroll', this.scrollDoneDetection.bind(this));\n\n // Return promise\n return this.scrollPromise;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Toast } from '../interfaces/toast.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private toastsObservables = new BehaviorSubject<Toast[]>([]);\n\n get toastsAsObservable() {\n return this.toastsObservables.asObservable();\n }\n\n /**\n * Show new toast\n *\n * @param toast\n * @param duration\n */\n show(toast: Toast, duration?: number) {\n const value = this.toastsObservables.value;\n value.push(toast);\n this.toastsObservables.next(value);\n\n if (duration) {\n setTimeout(() => {\n const currentToasts = this.toastsObservables.value;\n const foundIndex = currentToasts.findIndex((e) => e.id === toast.id);\n\n if (foundIndex > -1) {\n currentToasts.splice(foundIndex, 1);\n this.toastsObservables.next(currentToasts);\n }\n }, duration);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { ActivatedRouteSnapshot, Data, NavigationEnd, Router } from '@angular/router';\nimport { Breadcrumb } from '../interfaces/breadcrumb.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreadcrumbService {\n private readonly _breadcrumbs = new BehaviorSubject<Breadcrumb[]>([]);\n\n set breadcrumbs(value: Breadcrumb[]) {\n this._breadcrumbs.next(value);\n }\n\n get breadcrumbsObservable() {\n return this._breadcrumbs.asObservable();\n }\n\n constructor(private router: Router) {\n this.subscribeToRouteChanges();\n }\n\n /**\n * Subscribe to route changes and add element to breadcrumb\n */\n subscribeToRouteChanges() {\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\n const root = this.router.routerState.snapshot.root;\n const breadcrumbs: Breadcrumb[] = [];\n this.addBreadcrumb(root, [], breadcrumbs);\n this.breadcrumbs = breadcrumbs;\n });\n }\n\n /**\n * Add element to breadcrumb\n *\n * @param route\n * @param parentUrl\n * @param breadcrumbs\n * @private\n */\n private addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\n if (route) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path));\n\n if (route.data?.breadcrumb) {\n const breadcrumb = {\n label: this.getLabel(route.data),\n url: '/' + routeUrl.join('/'),\n };\n breadcrumbs.push(breadcrumb);\n }\n\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n }\n }\n\n /**\n * Get label for breadcrumb\n *\n * @param data\n * @private\n */\n private getLabel(data: Data) {\n return typeof data.breadcrumb === 'function' ? data.breadcrumb(data) : data.breadcrumb;\n }\n}\n","/**\n * Comparison operator enum\n */\nexport enum ComparisonOperatorEnum {\n EQ = 'EQ',\n GT = 'GT',\n GTE = 'GTE',\n IN = 'IN',\n LT = 'LT',\n LTE = 'LTE',\n NE = 'NE',\n NIN = 'NIN',\n REGEX = 'REGEX',\n}\n","/**\n * Logical operator enum\n */\nexport enum LogicalOperatorEnum {\n AND = 'AND',\n NOR = 'NOR',\n OR = 'OR',\n}\n","export enum SortOrderEnum {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","export enum ToastType {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n}\n","export enum SkeletonType {\n LINE = 'LINE',\n RECTANGLE = 'RECTANGLE',\n AVATAR = 'AVATAR',\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class Validation {\n static match(controlName: string, checkControlName: string): ValidatorFn {\n return (controls: AbstractControl) => {\n const control = controls.get(controlName);\n const checkControl = controls.get(checkControlName);\n if (checkControl?.errors && !checkControl.errors?.matching) {\n return null;\n }\n if (control?.value !== checkControl?.value) {\n controls.get(checkControlName)?.setErrors({ matching: true });\n return { matching: true };\n } else {\n return null;\n }\n };\n }\n}\n","import { createClient, Client, ClientOptions } from 'graphql-ws';\n\nexport interface RestartableClient extends Client {\n restart(): void;\n}\n\nexport function createRestartableClient(options: ClientOptions): RestartableClient {\n let restartRequested = false;\n let restart = () => {\n restartRequested = true;\n };\n\n const { on = undefined } = options;\n\n const client = createClient({\n ...options,\n on: {\n ...on,\n connected: (socket: any) => {\n // @ts-ignore\n on?.connected?.(socket);\n\n restart = () => {\n if (socket.readyState === WebSocket.OPEN) {\n // if the socket is still open for the restart, do the restart\n socket.close(4205, 'Client Restart');\n } else {\n // otherwise the socket might've closed, indicate that you want\n // a restart on the next connected event\n restartRequested = true;\n }\n };\n\n // just in case you were eager to restart\n if (restartRequested) {\n restartRequested = false;\n restart();\n }\n },\n },\n });\n\n return {\n ...client,\n restart: () => restart(),\n };\n}\n","/**\n * Exports for public API\n */\n\n// Classes\nexport * from './classes/basic-user.class';\nexport * from './classes/graphql-enum.class';\nexport * from './classes/graphql-meta.class';\nexport * from './classes/graphql-type.class';\nexport * from './classes/helper.class';\nexport * from './classes/standard.class';\nexport * from './classes/auth.class';\n\n// Services\nexport * from './services/auth.service';\nexport * from './services/graphql.service';\nexport * from './services/graphql-meta.service';\nexport * from './services/graphql-plus.service';\nexport * from './services/forms.service';\nexport * from './services/storage.service';\nexport * from './services/ws.service';\nexport * from './services/user.service';\nexport * from './services/loader.service';\nexport * from './services/scroll.service';\nexport * from './services/image.service';\nexport * from './services/toast.service';\nexport * from './services/breadcrumb.service';\n\n// Enums\nexport * from './enums/comparison-operator.enum';\nexport * from './enums/graphql-request-type.enum';\nexport * from './enums/logical-operator.enum';\nexport * from './enums/sort-order.enum';\nexport * from './enums/toast-type.enum';\nexport * from './enums/skeleton-type.enum';\n\n// Interfaces\nexport * from './interfaces/base-module-config.interface';\nexport * from './interfaces/can-component-deactivate.interface';\nexport * from './interfaces/combined-filter-input.interface';\nexport * from './interfaces/field.interface';\nexport * from './interfaces/field-object.interface';\nexport * from './interfaces/filter-input.interface';\nexport * from './interfaces/graphql-options.interface';\nexport * from './interfaces/graphql-plus-options.interfacen';\nexport * from './interfaces/graphql-type-collection.interface';\nexport * from './interfaces/graphql-fields-object.interface';\nexport * from './interfaces/single-filter-input.interface';\nexport * from './interfaces/sort-input.interface';\nexport * from './interfaces/find-args.interface';\nexport * from './interfaces/time-components.interface';\nexport * from './interfaces/toast.interface';\nexport * from './interfaces/breadcrumb.interface';\nexport * from './interfaces/graphql-crud-type.interface';\n\n// Types\nexport * from './types/storage.type';\nexport * from './types/graphql-fields.type';\n\n// Validators\nexport * from './validators/match.validator';\n\n// Functions\nexport * from './functions/ws-client.function';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StorageService","i2.WsService","i2.GraphQLMetaService","i3.LoaderService","map","i4.AuthService","i2.ImageService","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lenne.tech-ng-base-shared.mjs","sources":["../../../projects/ng-base/shared/classes/helper.class.ts","../../../projects/ng-base/shared/classes/standard.class.ts","../../../projects/ng-base/shared/classes/basic-user.class.ts","../../../projects/ng-base/shared/classes/graphql-enum.class.ts","../../../projects/ng-base/shared/classes/graphql-type.class.ts","../../../projects/ng-base/shared/classes/graphql-meta.class.ts","../../../projects/ng-base/shared/classes/auth.class.ts","../../../projects/ng-base/shared/interfaces/base-module-config.interface.ts","../../../projects/ng-base/shared/services/storage.service.ts","../../../projects/ng-base/shared/services/ws.service.ts","../../../projects/ng-base/shared/services/auth.service.ts","../../../projects/ng-base/shared/enums/graphql-request-type.enum.ts","../../../projects/ng-base/shared/services/graphql-meta.service.ts","../../../projects/ng-base/shared/services/graphql.service.ts","../../../projects/ng-base/shared/services/loader.service.ts","../../../projects/ng-base/shared/services/graphql-plus.service.ts","../../../projects/ng-base/shared/services/forms.service.ts","../../../projects/ng-base/shared/services/user.service.ts","../../../projects/ng-base/shared/services/image.service.ts","../../../projects/ng-base/shared/services/scroll.service.ts","../../../projects/ng-base/shared/services/toast.service.ts","../../../projects/ng-base/shared/services/breadcrumb.service.ts","../../../projects/ng-base/shared/enums/comparison-operator.enum.ts","../../../projects/ng-base/shared/enums/logical-operator.enum.ts","../../../projects/ng-base/shared/enums/sort-order.enum.ts","../../../projects/ng-base/shared/enums/toast-type.enum.ts","../../../projects/ng-base/shared/enums/skeleton-type.enum.ts","../../../projects/ng-base/shared/validators/match.validator.ts","../../../projects/ng-base/shared/functions/ws-client.function.ts","../../../projects/ng-base/shared/public-api.ts","../../../projects/ng-base/shared/lenne.tech-ng-base-shared.ts"],"sourcesContent":["import { Standard } from './standard.class';\n\n/**\n * Helper class\n */\nexport class Helper {\n /**\n * Simple filter function for plain objects\n */\n static filter<T = { [key: string]: any }>(objects: T[], filter: { [key: string]: any }): T[] {\n return (objects?.filter((element) => {\n for (const [key, value] of Object.entries(filter)) {\n if (Array.isArray(element[key])) {\n for (const item of element[key]) {\n if (!element[key].includs(value)) {\n return false;\n }\n }\n } else if (element[key] !== value) {\n return false;\n }\n }\n return true;\n }) || []) as any[];\n }\n\n /**\n * Convert to a url/uri conform string\n * Only:\n * - lower case\n * - chars, numbers and hyphens\n */\n static urlString(str: any, options: { allowAll?: boolean } = {}): string {\n // Config\n const config = {\n allowAll: false,\n ...options,\n };\n\n // To string\n str = str + '';\n\n // Trim\n str = str.trim();\n\n // Lower case\n str = str.toLowerCase();\n\n if (!config.allowAll) {\n // Replace spaces\n str = str.trim().replace(/\\s+/g, '-');\n\n // Replace some special chars\n str = str.replace('ä', 'ae');\n str = str.replace('ö', 'oe');\n str = str.replace('ü', 'ue');\n str = str.replace('ß', 'ss');\n\n // Remove other special chars\n str = str.replace(/[^a-zA-Z0-9-]/g, '');\n }\n\n // Return url conform string\n return encodeURI(str);\n }\n\n /**\n * Simple map function\n */\n public static map<T = { [key: string]: any }>(\n source: Partial<T> | { [key: string]: any },\n target: T,\n options: { funcAllowed?: boolean; dateStringToDate?: boolean | string[] } = {}\n ): T {\n // Set config\n const config = {\n funcAllowed: false,\n dateStringToDate: true,\n ...options,\n };\n\n // Check source\n if (!source || typeof source !== 'object' || Array.isArray(source)) {\n return target;\n }\n\n // Update properties\n for (const key of Object.keys(target)) {\n if (source[key] !== undefined && (config.funcAllowed || typeof (source[key] !== 'function'))) {\n if (typeof source[key] === 'string' && config.dateStringToDate) {\n if (Array.isArray(config.dateStringToDate)) {\n if (config.dateStringToDate.includes(key)) {\n target[key] = Helper.parseDate(source[key]);\n }\n } else {\n target[key] = Helper.parseDate(source[key]);\n }\n } else {\n target[key] = source[key];\n }\n }\n }\n\n // Return target\n return target;\n }\n\n /**\n * Create Object or Objects of specified type with specified data\n */\n public static maps<T extends Standard>(\n data: Partial<T> | Partial<T>[] | { [key: string]: any } | { [key: string]: any }[],\n targetClass: new (...args: any[]) => T\n ): T[] {\n // Check data\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n // Check array\n if (!Array.isArray(data)) {\n data = [data];\n }\n\n // Map\n return (data as any).map((item: any) => {\n return (targetClass as any).map(item);\n });\n }\n\n /**\n * Get plain parameter\n */\n public static getPlainParameter(parameter: string) {\n if (!parameter) {\n return parameter;\n }\n return parameter?.split('?')?.shift()?.split('#')?.shift();\n }\n\n /**\n * Get ID of an url parameter\n */\n public static getParameterId(parameter: string) {\n if (!parameter) {\n return parameter;\n }\n return Helper.getPlainParameter(parameter)?.split('-').pop();\n }\n\n /**\n * Delay\n */\n public static delay(ms: number) {\n const promise = new Promise((resolve) => setTimeout(resolve, ms));\n return promise;\n }\n\n /**\n * Deep freeze\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze\n */\n public static deepFreeze(object: any, preparedObjects = []) {\n // Prevent infinit regress\n if (preparedObjects.includes(object as never)) {\n return object;\n }\n preparedObjects.push(object as never);\n\n // Retrieve the property names defined on object\n const propNames = Object.getOwnPropertyNames(object);\n\n // Freeze properties before freezing self\n for (const name of propNames) {\n const value = object[name];\n\n if (value && typeof value === 'object') {\n Helper.deepFreeze(value, preparedObjects);\n }\n }\n\n return Object.freeze(object);\n }\n\n /**\n * Generates an unique identifier with 24 characters\n */\n public static getUID(): string {\n let dt = new Date().getTime();\n const uuid = 'xxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n // eslint-disable-next-line no-bitwise\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n return uuid;\n }\n\n /**\n * Parse date string to date object\n */\n public static parseDate(dateString: string) {\n const reISO = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*))(?:Z|(\\+|-)([\\d|:]*))?$/;\n const reMsAjax = /^\\/Date\\((d|-|.*)\\)[\\/|\\\\]$/;\n if (typeof dateString === 'string') {\n const isoExec = reISO.exec(dateString);\n if (isoExec) {\n return new Date(dateString);\n }\n const msAjaxExec = reMsAjax.exec(dateString);\n if (msAjaxExec) {\n const cleaned = msAjaxExec[1].split(/[-+,.]/);\n return new Date(cleaned[0] ? +cleaned[0] : 0 - +cleaned[1]);\n }\n }\n return dateString;\n }\n\n /**\n * Get browser name and version\n */\n public static getBrowser() {\n const userAgent = navigator.userAgent;\n let data = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n let version;\n if (/trident/i.test(data[1])) {\n version = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n return { name: 'IE', version: version[1] || '' };\n }\n if (data[1] === 'Chrome') {\n version = userAgent.match(/\\bOPR|Edge\\/(\\d+)/);\n if (version != null) {\n return { name: 'Opera', version: version[1] };\n }\n }\n data = data[2] ? [data[1], data[2]] : [navigator.appName, navigator.appVersion, '-?'];\n version = userAgent.match(/version\\/(\\d+)/i);\n if (version !== null) {\n data.splice(1, 1, version[1]);\n }\n return {\n name: data[0],\n version: data[1],\n };\n }\n\n /**\n * Whether first parameter is a deep subset of second parameter\n * Hint: functions will be ignored\n */\n static isSubset(a: any, b: any) {\n // Equal\n if (a === b) {\n return true;\n }\n\n // Different type\n if (typeof a !== typeof b) {\n return false;\n }\n\n // Process array\n if (Array.isArray(a)) {\n for (const [key, value] of Object.entries(a)) {\n if (Helper.isSubset(value, b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // Process object\n if (typeof a === 'object') {\n const plain = JSON.parse(JSON.stringify(a));\n for (const [key, value] of Object.entries(plain)) {\n if (Helper.isSubset(value, b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // Else\n return true;\n }\n\n /**\n * Whether parameters are equal (have equal properties)\n * Hint: functions will be ignored\n */\n static isEqual(a: any, b: any) {\n return Helper.isSubset(a, b) && Helper.isSubset(b, a);\n }\n\n /**\n * First level difference of two objects\n * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value\n *\n * @returns Record<string, any> Object with properties from first object\n */\n static getDiff(a: Record<string, any>, b: Record<string, any>, clone: boolean = true) {\n const result = {};\n let firstObject = a;\n if (clone) {\n firstObject = JSON.parse(JSON.stringify(a));\n }\n for (const [key, value] of Object.entries(firstObject)) {\n if (!Helper.isSubset(value, b[key])) {\n result[key] = value;\n }\n }\n return result;\n }\n\n /**\n * Check if propertie is type of HTMLCollection or NodeList\n * See https://stackoverflow.com/a/7238344\n *\n * @param nodes\n */\n static isNodeList(nodes) {\n try {\n const stringRepr = Object.prototype.toString.call(nodes);\n return (\n typeof nodes === 'object' &&\n /^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) &&\n typeof nodes.length === 'number' &&\n (nodes.length === 0 || (typeof nodes[0] === 'object' && nodes[0].nodeType > 0))\n );\n } catch (e) {\n return false;\n }\n }\n\n static arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return `data:image/*;base64, ${window.btoa(binary)}`;\n }\n}\n","import { Helper } from './helper.class';\n\n/**\n * Standard class\n * Other classes should extend the Standard class, if they offer own functions\n * If the extended class uses object properties with own map functions, it should implement its own map function\n */\nexport class Standard {\n /**\n * Static map method\n */\n public static map<T extends Standard>(\n this: new (...args: any[]) => T,\n data: Partial<T> | { [key: string]: any },\n item: T = new this()\n ): T {\n return (item as any).map(data);\n }\n\n /**\n * Map data into an object\n */\n public map(data: Partial<this> | { [key: string]: any }): this {\n return Helper.map(data, this);\n }\n\n /**\n * Clone object (and map additional data)\n */\n public clone(mapData?: Partial<this> | { [key: string]: any }): this {\n const current = JSON.parse(JSON.stringify(this));\n if (mapData) {\n Object.assign(current, mapData);\n }\n return new (this as any).constructor().map(current);\n }\n\n /**\n * Compare this with another object\n * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value\n *\n * @return Record<string, any> with properties of this object which are different\n */\n public getDiff(compare: Record<string, any>, clone: boolean = true) {\n return Helper.getDiff(this, compare, clone);\n }\n}\n","import { Standard } from './standard.class';\nimport { Helper } from './helper.class';\n\n/**\n * User class\n */\nexport class BasicUser extends Standard {\n id: string = undefined;\n email: string = undefined;\n firstName: string = undefined;\n lastName: string = undefined;\n roles: string[] = [];\n username: string = undefined;\n\n // ===================================================================================================================\n // Methods\n // ===================================================================================================================\n\n /**\n * Mapping\n */\n public map(data: Partial<this> | { [key: string]: any }): this {\n Helper.map(data, this);\n return this;\n }\n\n /**\n * Checks whether the user has at least one of the required roles\n */\n public hasRole(roles: string | string[]) {\n if (typeof roles === 'string') {\n roles = [roles];\n }\n if (!this.roles || this.roles.length < 1) {\n return false;\n }\n return !roles || roles.length < 1 ? true : this.roles.some((role) => roles.includes(role));\n }\n\n /**\n * Checks whether the user has all required roles\n */\n public hasAllRoles(roles: string | string[]) {\n if (typeof roles === 'string') {\n roles = [roles];\n }\n if (!this.roles || this.roles.length < 1) {\n return false;\n }\n return !roles ? true : roles.every((role) => this.roles.includes(role));\n }\n}\n","/**\n * GraphQL enum\n */\nexport class GraphQLEnum {\n value: string;\n\n constructor(value) {\n this.value = value;\n }\n}\n","import { Standard } from './standard.class';\n\n/**\n * GraphQL type\n */\nexport class GraphQLType extends Standard {\n type = '';\n isRequired = false;\n isItemRequired = false;\n isList = false;\n isEnum = false;\n validEnums: string[] = [];\n}\n","import { GraphQLList, GraphQLNamedType, GraphQLNonNull, GraphQLSchema } from 'graphql';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { Helper } from './helper.class';\nimport { GraphQLType } from './graphql-type.class';\nimport { IGraphQLTypeCollection } from '../interfaces/graphql-type-collection.interface';\nimport { GraphqlCrudType } from '../interfaces/graphql-crud-type.interface';\nimport { cloneDeep } from '@apollo/client/utilities';\n\n/**\n * GraphQL meta\n */\nexport class GraphQLMeta {\n // Frozen caches\n protected args: Record<string, any> = {};\n protected fields: Record<string, any> = {};\n\n /**\n * Integrate schema\n */\n constructor(protected schema: GraphQLSchema) {\n if (!schema) {\n throw Error('Missing schema');\n }\n }\n\n /**\n * We're going to get the query and mutation types from the schema, then we're going to loop through the fields of each\n * type and check if the field name starts with `find`, `create`, `update`, or `delete`. If it does, we're going to add\n * the model name to the `possibleTypes` array\n *\n * @returns An array of objects with the name of the model, and the CRUD operations that are available for that model.\n */\n getTypes(): GraphqlCrudType[] {\n const possibleTypes: GraphqlCrudType[] = [] as any;\n const mutationType = this.schema.getMutationType();\n const queryType = this.schema.getQueryType();\n\n for (const [key, value] of Object.entries(queryType.getFields())) {\n if (key.startsWith('find')) {\n possibleTypes.push({\n name: key.split('find').pop().slice(0, -1),\n create: false,\n update: false,\n delete: false,\n });\n }\n }\n\n for (const [key, value] of Object.entries(mutationType.getFields())) {\n if (key.startsWith('create')) {\n const model = key.split('create').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).create = true;\n }\n }\n\n if (key.startsWith('update')) {\n const model = key.split('update').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).update = true;\n }\n }\n\n if (key.startsWith('delete')) {\n const model = key.split('delete').pop();\n if (possibleTypes.find((e) => e.name === model)) {\n possibleTypes.find((item) => item.name === model).delete = true;\n }\n }\n }\n\n return possibleTypes;\n }\n\n /**\n * Get arguments of GraphQL function\n */\n getArgs(\n functionName: string,\n options: { cache?: boolean; freeze?: boolean; type?: GraphQLRequestType } = {}\n ): IGraphQLTypeCollection {\n const { cache, freeze, type } = {\n cache: true,\n freeze: true,\n type: undefined,\n ...options,\n };\n\n // Get cache\n if (cache && freeze) {\n const args = this.args[functionName + type];\n if (args) {\n return args;\n }\n }\n\n const func = this.getFunction(functionName, { type });\n const result = {};\n if (func?.args) {\n func.args.forEach((item) => {\n result[item.name] = this.getDeepType(item.type);\n });\n }\n\n // Set cache\n if (freeze) {\n this.args[functionName + type] = Helper.deepFreeze(result);\n }\n\n return result;\n }\n\n /**\n * Get fields of GraphQL function\n */\n getFields(\n functionName: string,\n options: { cache?: boolean; freeze?: boolean; type?: GraphQLRequestType } = {}\n ): IGraphQLTypeCollection {\n const { cache, freeze, type } = {\n cache: true,\n freeze: true,\n type: undefined,\n ...options,\n };\n\n // Get cache\n if (cache && freeze) {\n const args = this.fields[functionName + type];\n if (args) {\n return args;\n }\n }\n\n const func = this.getFunction(functionName, options);\n const result: IGraphQLTypeCollection = this.getDeepType(func.type) as IGraphQLTypeCollection;\n\n // Set cache\n if (freeze) {\n this.fields[functionName + type] = Helper.deepFreeze(result);\n }\n\n return result;\n }\n\n /**\n * Get GraphQL function\n */\n protected getFunction(name: string, options: { type?: GraphQLRequestType } = {}): Record<string, any> {\n // Set config\n const config = {\n ...options,\n };\n\n // Init possible functions\n let functions = {};\n\n // If function type is set\n if (config.type) {\n const graphQLType = config.type.charAt(0).toUpperCase() + config.type.slice(1);\n const type = this.schema.getType(graphQLType);\n if (type) {\n functions = (type as any).getFields();\n }\n }\n\n // If function type is not set\n else {\n ['Subscription', 'Mutation', 'Query'].forEach((item) => {\n const type: any = this.schema.getType(item);\n if (type) {\n functions = {\n ...functions,\n ...(type.getFields() || {}),\n };\n }\n });\n }\n\n // Get function via name\n return functions[name];\n }\n\n /**\n * Get type\n */\n protected getType(name: string): GraphQLNamedType | null | undefined {\n return this.schema.getType(name);\n }\n\n /**\n * Get deep type data\n */\n protected getDeepType(\n type: any,\n prepared: WeakMap<any, any> = new WeakMap(),\n setMetaData = false\n ): IGraphQLTypeCollection | GraphQLType {\n // Check type\n if (!type) {\n return type;\n }\n\n // Infinite regress protection\n const preparedObject = {};\n\n // Check prepared\n if (typeof type === 'object') {\n const preparedType = prepared.get(type);\n if (preparedType) {\n const clone = cloneDeep(preparedType);\n\n if (type.type && setMetaData) {\n if (type.type instanceof GraphQLNonNull) {\n clone.isRequired = true;\n if (type.type.ofType instanceof GraphQLList) {\n clone.isList = true;\n clone.isItemRequired = type.type.ofType.ofType instanceof GraphQLNonNull;\n } else {\n clone.isList = false;\n clone.isItemRequired = false;\n }\n } else {\n clone.isRequired = false;\n\n // List first\n if (type.type instanceof GraphQLList) {\n clone.isList = true;\n clone.isItemRequired = type.ofType instanceof GraphQLNonNull;\n } else {\n clone.isList = false;\n clone.isItemRequired = false;\n }\n }\n }\n\n return clone;\n }\n\n // Set prepared\n prepared.set(type, preparedObject);\n }\n\n // Search deeper\n if (type.ofType) {\n const ofTypeResult = this.getDeepType(type.ofType, prepared, setMetaData);\n Object.assign(preparedObject, ofTypeResult);\n return ofTypeResult;\n }\n\n // Process fields\n if (type._fields) {\n const result = {};\n for (const [key, value] of Object.entries(type._fields)) {\n result[key] = this.getDeepType(value, prepared, true);\n }\n Object.assign(preparedObject, result);\n return result;\n }\n\n // Get type name\n if (type.type) {\n const typeResult = this.getDeepType(type.type, prepared, setMetaData);\n\n if (setMetaData) {\n if (type.type instanceof GraphQLNonNull) {\n typeResult.isRequired = true;\n if (type.type.ofType instanceof GraphQLList) {\n typeResult.isList = true;\n typeResult.isItemRequired = type.type.ofType.ofType instanceof GraphQLNonNull;\n } else {\n typeResult.isList = false;\n typeResult.isItemRequired = false;\n }\n } else {\n typeResult.isRequired = false;\n\n // List first\n if (type.type instanceof GraphQLList) {\n typeResult.isList = true;\n typeResult.isItemRequired = type.ofType instanceof GraphQLNonNull;\n } else {\n typeResult.isList = false;\n typeResult.isItemRequired = false;\n }\n }\n }\n\n Object.assign(preparedObject, typeResult);\n return typeResult;\n }\n\n // Initialize GraphQLType\n const graphqlType = GraphQLType.map({\n type: type.name,\n });\n\n // Set enum values\n if (!!type._values) {\n graphqlType.isEnum = true;\n for (const [key, value] of Object.entries(type._nameLookup)) {\n if (!(value as any).isDeprecated) {\n graphqlType.validEnums.push(key);\n }\n }\n }\n\n // Finish\n prepared.set(type, graphqlType);\n return graphqlType;\n }\n}\n","import { BasicUser } from './basic-user.class';\nimport { Helper } from './helper.class';\nimport { Standard } from './standard.class';\n\nexport class Auth extends Standard {\n token: string = undefined;\n user: BasicUser = undefined;\n\n public map(data: Partial<this> | { [key: string]: any }): this {\n Helper.map(data, this);\n this.user = data?.user ? BasicUser.map(data.user) : this.user;\n return this;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { StorageType } from '../types/storage.type';\n\n/**\n * Configuration for base module\n */\nexport interface BaseModuleConfig {\n /**\n * URL to server API\n * Default: 'localhost:3000'\n */\n apiUrl?: string;\n\n /**\n * Websocket URL to server API\n */\n wsUrl?: string;\n\n /**\n * Default redirect URL for AuthGuard\n * Default: '/auth'\n */\n authGuardRedirectUrl?: string;\n\n /**\n * Whether logging is enabled or not\n */\n logging?: boolean;\n\n /**\n * Version of the App (for storage handling)\n * Default: null\n */\n version?: string;\n\n /**\n * Prefix of the App (for storage handling)\n * Default: null\n */\n prefix?: string;\n\n /**\n * Scroll detection offset for ScrollService\n * Should be >= scrollOffset\n * Default: 200\n */\n scrollDetectionOffset?: number;\n\n /**\n * Scroll offset for ScrollService\n * Default: 100\n */\n scrollOffset?: number;\n\n /**\n * Sampling rate for scroll done detection\n * Default: 100\n */\n scrollSamplingRate?: number;\n\n /**\n * Type of storage: 'session' or 'local'\n * Default: 'local'\n */\n storageType?: StorageType;\n}\n\nexport const BASE_MODULE_CONFIG = new InjectionToken('BASE_MODULE_CONFIG');\n","import { Inject, Injectable } from '@angular/core';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\n\n/**\n * Storage service for local data storage\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService {\n /**\n * Storage\n */\n protected storage: any = null;\n\n /**\n * Prefix for storage keys\n */\n protected prefix = '';\n\n /**\n * Initializations\n */\n constructor(@Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig) {\n // Set storage\n const type = moduleConfig.storageType ? moduleConfig.storageType : 'local';\n if (window[type + 'Storage']) {\n this.storage = window[type + 'Storage'];\n }\n\n // Set prefix\n this.prefix = '';\n if (moduleConfig.prefix) {\n this.prefix += moduleConfig.prefix + '_';\n }\n if (moduleConfig.version) {\n this.prefix += moduleConfig.version + '_';\n }\n }\n\n /**\n * Save itemKeys\n *\n * If you want to save one item, use itemKeys and value parameters like these:\n * save('KEY_OF_THE_ITEM', ITEM)\n *\n * If you want to save multiple items, use itemKeys only (value parameter will be ignored):\n * save({'KEY_OF_ITEM_1': ITEM_1, 'KEY_OF_ITEM_2': ITEM_2, ...})\n */\n public save(itemKeys: string | { [key: string]: any }, value?: any): boolean {\n // Check local storage\n if (!this.storage) {\n return false;\n }\n\n // Check item keys and value\n if (\n !itemKeys ||\n (typeof itemKeys === 'object' && !Object.keys(itemKeys).length) ||\n (typeof itemKeys === 'string' && value === undefined)\n ) {\n return false;\n }\n\n if (typeof itemKeys === 'object') {\n for (const [itemKey, itemValue] of Object.entries(itemKeys)) {\n this.storage.setItem(this.prefix + itemKey, JSON.stringify(itemValue));\n }\n return true;\n }\n\n this.storage.setItem(this.prefix + itemKeys, JSON.stringify(value));\n return true;\n }\n\n /**\n * Load items via key(s)\n */\n public load(itemKeys: string | string[]): any {\n // Check local storage\n if (!this.storage) {\n return;\n }\n\n // Check item keys\n if (!itemKeys || (Array.isArray(itemKeys) && !itemKeys.length)) {\n return null;\n }\n\n if (Array.isArray(itemKeys)) {\n const back = {};\n itemKeys.forEach((itemKey) => {\n const loadedItem = this.storage.getItem(this.prefix + itemKey);\n if (loadedItem) {\n back[itemKey] = JSON.parse(loadedItem);\n } else {\n back[itemKey] = null;\n }\n });\n return back;\n }\n\n let value = this.storage.getItem(this.prefix + itemKeys);\n if (value) {\n value = JSON.parse(value);\n }\n\n return value;\n }\n\n /**\n * Remove item from storage\n *\n * @param itemKeys keys or key to remove\n */\n public remove(itemKeys: string | string[]): boolean {\n // Check local storage\n if (!this.storage) {\n return false;\n }\n\n if (Array.isArray(itemKeys)) {\n itemKeys.forEach((key) => {\n this.storage.removeItem(this.prefix + key);\n });\n return true;\n }\n\n this.storage.removeItem(this.prefix + itemKeys);\n return true;\n }\n\n /**\n * Clear local storage\n */\n public reset(): void {\n this.storage.clear();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { RestartableClient } from '../functions/ws-client.function';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WsService {\n client: RestartableClient;\n\n reconnect() {\n this.client?.restart();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\nimport { BasicUser } from '../classes/basic-user.class';\nimport { StorageService } from './storage.service';\nimport { WsService } from './ws.service';\n\n/**\n * Authentication service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n // Subjects\n private _currentUser: BehaviorSubject<BasicUser> = new BehaviorSubject<BasicUser>(null);\n private _token: BehaviorSubject<string> = new BehaviorSubject<string>(null);\n\n /**\n * Constructor\n */\n constructor(\n @Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig,\n private storageService: StorageService,\n private wsService: WsService\n ) {\n this.token = this.storageService.load('token') as string;\n this.currentUser = this.storageService.load('currentUser') as BasicUser;\n }\n\n /**\n * Logout\n */\n public logout() {\n this.storageService.remove(['token', 'currentUser']);\n this.currentUser = null;\n this.token = null;\n }\n\n // #################################################################\n // Current User\n // #################################################################\n\n get currentUser(): BasicUser {\n return this._currentUser.value;\n }\n\n set currentUser(user: BasicUser) {\n this._currentUser.next(user);\n this.storageService.save('currentUser', user);\n }\n\n get currentUserObservable(): Observable<BasicUser> {\n return this._currentUser.asObservable();\n }\n\n // #################################################################\n // Token\n // #################################################################\n\n get token(): string {\n return this._token.value;\n }\n\n set token(token: string) {\n this._token.next(token);\n this.storageService.save('token', token);\n this.wsService.reconnect();\n }\n\n get tokenObservable(): Observable<string> {\n return this._token.asObservable();\n }\n}\n","/**\n * GraphQL request type enum\n */\nexport enum GraphQLRequestType {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n","import { Apollo, gql } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { buildClientSchema, getIntrospectionQuery, GraphQLSchema, IntrospectionQuery } from 'graphql';\nimport { map } from 'rxjs/operators';\nimport { GraphQLMeta } from '../classes/graphql-meta.class';\nimport { Helper } from '../classes/helper.class';\n\n/**\n * GraphQL meta service\n *\n * For collecting meta information of the GraphQL API\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLMetaService {\n // Caches\n protected _frozenSchema: GraphQLSchema;\n protected _frozenSchemaObservable: Observable<GraphQLSchema>;\n protected _meta: GraphQLMeta;\n protected _metaObservable: Observable<GraphQLMeta>;\n protected _schemaObservable: Observable<GraphQLSchema>;\n\n // Private caches\n private _introspectionQuery: IntrospectionQuery;\n\n /**\n * Include services\n */\n constructor(protected apollo: Apollo) {}\n\n /**\n * Getter of introspectionQuery\n */\n get introspectionQuery(): IntrospectionQuery {\n return JSON.parse(JSON.stringify(this._introspectionQuery));\n }\n\n /**\n * Get schema for API\n * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d\n */\n public getSchema(options: { cache?: boolean; freeze?: boolean } = {}): Observable<GraphQLSchema> {\n // Get configurations\n const config = {\n cache: true,\n freeze: true,\n ...options,\n };\n\n // Use caching\n if (config.cache) {\n if (config.freeze && this._frozenSchema) {\n return of(this._frozenSchema);\n }\n if (this._introspectionQuery) {\n return of(buildClientSchema(this.introspectionQuery));\n }\n if (config.freeze && this._frozenSchemaObservable) {\n return this._frozenSchemaObservable;\n } else if (!config.freeze && this._schemaObservable) {\n return this._schemaObservable;\n }\n }\n\n // Request schema from server\n const observable = this.apollo\n .query({\n query: gql(getIntrospectionQuery({ descriptions: false })),\n })\n .pipe(\n map((schema: any) => {\n // Cache introspectionQuery\n this._introspectionQuery = schema.data;\n\n // Convert schema to GraphQLSchema\n this._frozenSchema = Helper.deepFreeze(buildClientSchema(this.introspectionQuery));\n\n // Return GraphQLSchema\n if (config.freeze) {\n return this._frozenSchema;\n }\n return buildClientSchema(schema.data);\n })\n );\n\n // Set observables\n if (config.freeze) {\n this._frozenSchemaObservable = observable;\n } else {\n this._schemaObservable = observable;\n }\n\n // Return result\n return observable;\n }\n\n /**\n * Get meta for API\n * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d\n */\n public getMeta(options: { cache?: boolean; log?: boolean } = {}): Observable<GraphQLMeta> {\n // Get configurations\n const config = {\n cache: true,\n log: false,\n ...options,\n };\n\n // Use caching\n if (config.cache) {\n if (this._meta) {\n return of(this._meta);\n } else if (this._metaObservable) {\n return this._metaObservable;\n }\n }\n\n // Request schema from server\n const observable = this.getSchema(options).pipe(\n map((schema: any) => {\n // Log\n if (config.log) {\n console.log({ schema });\n }\n\n this._meta = new GraphQLMeta(schema);\n return this._meta;\n })\n );\n\n // Set observables\n this._metaObservable = observable;\n\n // Return result\n return observable;\n }\n}\n","import { Apollo, gql } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { IGraphQLOptions } from '../interfaces/graphql-options.interface';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { Observable, throwError } from 'rxjs';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { GraphQLEnum } from '../classes/graphql-enum.class';\nimport { GraphQLType } from '../classes/graphql-type.class';\nimport { IGraphQLTypeCollection } from '../interfaces/graphql-type-collection.interface';\n\n/**\n * GraphQL service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLService {\n /**\n * Include services\n */\n constructor(protected apollo: Apollo, protected graphQLMetaService: GraphQLMetaService) {}\n\n /**\n * GraphQL request\n */\n public graphQl(graphql: string, options: IGraphQLOptions = {}): Observable<any> {\n // Check arguments\n if (!graphql) {\n throwError('Missing graphql argument');\n }\n\n // Get config\n const config = {\n arguments: null,\n fields: null,\n log: false,\n model: null,\n type: GraphQLRequestType.QUERY,\n ...options,\n };\n\n // Convert class to Object for arguments\n if (typeof config.arguments === 'function') {\n config.arguments = new config.arguments();\n }\n\n // Convert class to Object for fields\n if (typeof config.fields === 'function') {\n config.fields = new config.fields();\n }\n\n // Log\n if (config.log) {\n console.log({ config });\n }\n\n // Send request\n return new Observable((subscriber) => {\n // Get meta\n this.graphQLMetaService.getMeta({ log: config.log }).subscribe((meta) => {\n // Prepare fields\n let fields;\n let allowedFields;\n\n // Log meta\n if (config.log) {\n console.log({ meta });\n }\n\n if (config.fields) {\n allowedFields = meta.getFields(graphql, { type: config.type });\n\n // Log meta\n if (config.log) {\n console.log({ allowedFields });\n }\n\n const fieldsData = this.prepareFields(config.fields, {\n allowed: allowedFields,\n });\n\n // Log fields data\n if (config.log) {\n fieldsData.usedFields.sort();\n fieldsData.schemaFields.sort();\n const filtered = fieldsData.schemaFields.filter((field) => !fieldsData.usedFields.includes(field));\n const unused = this.graphQLTypeCollectionToStringArray(allowedFields).filter(\n (field) => !fieldsData.usedFields.includes(field)\n );\n console.log({ fieldsData, filtered, unused });\n }\n\n fields = fieldsData.fieldsString;\n }\n\n if (fields && !fields.startsWith('{')) {\n fields = '{' + fields + '\\n}';\n }\n\n // Log fields\n if (config.log) {\n console.log({ fields });\n }\n\n // Get allowed args\n const allowedArgs = meta.getArgs(graphql, { type: config.type });\n\n // Log allowed args\n if (config.log) {\n console.log({ allowedArgs });\n }\n\n const argsData = this.prepareArguments(config.arguments, {\n allowed: allowedArgs,\n });\n\n // Log args data\n if (config.log) {\n argsData.usedArgs.sort();\n argsData.schemaArgs.sort();\n const filtered = argsData.schemaArgs.filter((field) => !argsData.usedArgs.includes(field));\n const unused = this.graphQLTypeCollectionToStringArray(allowedArgs)\n .sort()\n .filter((field) => !argsData.usedArgs.includes(field));\n console.log({ argsData, filtered, unused });\n }\n\n const args = argsData?.argsString || '';\n\n // Log\n if (config.log) {\n console.log({ graphQL: graphql, args, fields, type: config.type });\n }\n\n // Prepare request\n const documentNode = fields\n ? gql(config.type + '{\\n' + graphql + args + fields + '\\n}')\n : gql(config.type + '{\\n' + graphql + args + '\\n}');\n\n // Log\n if (config.log) {\n console.log({ documentNode });\n }\n\n const request: any = {};\n request[config.type] = documentNode;\n\n // Log\n if (config.log) {\n console.log({ request });\n }\n\n let func;\n if (config.type === GraphQLRequestType.MUTATION) {\n func = 'mutate';\n request[config.type] = documentNode;\n } else if (config.type === GraphQLRequestType.SUBSCRIPTION) {\n func = 'subscribe';\n request.query = documentNode;\n } else {\n func = config.type;\n request[config.type] = documentNode;\n }\n\n (this.apollo as any)[func](request).subscribe(\n (result: any) => {\n const data = result?.data?.[graphql] !== undefined ? result.data[graphql] : result;\n\n // Direct data\n if (!config.model) {\n subscriber.next(data);\n }\n\n // Map data as array\n else if (Array.isArray(data)) {\n subscriber.next(\n data.map((item) => {\n return config.model.map(item);\n })\n );\n }\n\n // Map data\n else {\n subscriber.next(config.model.map(data));\n }\n\n if (config.type !== GraphQLRequestType.SUBSCRIPTION) {\n // Done\n subscriber.complete();\n }\n },\n (error: any) => {\n subscriber.error(error);\n subscriber.complete();\n }\n );\n });\n });\n }\n\n /**\n * Get fields / args from IGraphQLTypeCollection\n */\n protected graphQLTypeCollectionToStringArray(\n collection: IGraphQLTypeCollection,\n current = '',\n result = [],\n cacheNode = []\n ) {\n if (collection) {\n if (collection instanceof GraphQLType) {\n result.push(current);\n } else {\n if (current?.includes('.')) {\n cacheNode.push(current.split('.')[1]);\n } else if (current) {\n cacheNode.push(current);\n }\n for (const key of Object.keys(collection)) {\n if (current === key || cacheNode.includes(key)) {\n continue;\n }\n this.graphQLTypeCollectionToStringArray(\n collection[key] as IGraphQLTypeCollection,\n current ? current + '.' + key : key,\n result,\n cacheNode\n );\n }\n }\n }\n return result;\n }\n\n /**\n * Prepare arguments for GraphQL request\n */\n protected prepareArguments(\n args: any,\n options: {\n allowed?: any;\n level?: number;\n parent?: string;\n schemaArgs?: string[];\n usedArgs?: string[];\n } = {}\n ): { argsString: string; schemaArgs: string[]; usedArgs: string[] } {\n // Init config variables\n const { allowed, level, parent, schemaArgs, usedArgs } = {\n allowed: null,\n level: 1,\n parent: '',\n schemaArgs: [],\n usedArgs: [],\n ...options,\n };\n\n // Check args\n if (args === undefined || args === null) {\n return { argsString: '', schemaArgs, usedArgs };\n }\n\n // Init args\n const result = [];\n\n // Process array\n if (Array.isArray(args)) {\n const allowedKeys = allowed ? Object.keys(allowed) : null;\n for (const item of args) {\n let key = null;\n if (allowed) {\n if (allowed.length < 1) {\n break;\n }\n key = allowedKeys?.shift();\n }\n\n // Process value\n result.push(\n this.prepareArguments(item, {\n allowed: key ? allowed[key] : null,\n level: level + 1,\n parent: parent + key + '.',\n schemaArgs,\n usedArgs,\n }).argsString\n );\n }\n\n // Encapsulation of the array result\n if (result.length) {\n // Complete result, encapsulated via round brackets\n if (level === 1) {\n return { argsString: '(' + result.join(', ') + ')', schemaArgs, usedArgs };\n }\n\n // Deeper result part, encapsulated via square brackets\n else {\n return { argsString: '[' + result.join(', ') + ']', schemaArgs, usedArgs };\n }\n }\n }\n\n // Process object\n else if (typeof args === 'object') {\n // Check object is empty\n if (args && Object.keys(args).length === 0 && Object.getPrototypeOf(args) === Object.prototype) {\n return { argsString: '{}', schemaArgs, usedArgs };\n }\n // Process all object entries\n for (const [key, value] of Object.entries(args)) {\n // Init data for current entry\n const currentKey = parent + key;\n schemaArgs.push(currentKey);\n\n // If the allowed key handling is enabled and the current key is not included in the list of allowed keys,\n // the current key will be skipped\n if (allowed && !allowed[key]) {\n continue;\n }\n\n // Skip value if not exists\n if (value === undefined || value === null) {\n continue;\n }\n\n // Add current key to metadata\n usedArgs.push(currentKey);\n\n // Process GraphQLEnum\n if (value instanceof GraphQLEnum) {\n result.push(key + ':' + value.value);\n continue;\n }\n\n // Process array\n else if (Array.isArray(value)) {\n result.push(\n key +\n ': [' +\n value.map(\n (item) =>\n this.prepareArguments(item, {\n allowed: allowed[key],\n level: level + 1,\n parent: currentKey + '.',\n schemaArgs,\n usedArgs,\n }).argsString\n ) +\n ']'\n );\n continue;\n }\n\n // Prepare additional result string\n let additionalResult = key + ': ';\n\n // Value is a date object\n if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]') {\n additionalResult += `\"\"\"${(value as Date).toString()}\"\"\"`;\n }\n\n // Value is a string\n else if (typeof value === 'string') {\n // Enum (doesn't need quotation marks)\n if (allowed[key].isEnum) {\n additionalResult += value;\n }\n\n // String\n else {\n additionalResult += `\"${value.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n')}\"`;\n }\n }\n\n // Value is a simple boolean or a number\n else if (typeof value === 'boolean' || typeof value === 'number') {\n additionalResult += value;\n }\n\n // Others\n else {\n additionalResult += this.prepareArguments(value, {\n allowed: allowed[key],\n level: level + 1,\n parent: currentKey + '.',\n schemaArgs,\n usedArgs,\n }).argsString;\n }\n\n // Push deeper part into result array\n result.push(additionalResult);\n }\n\n // Encapsulation of the object result\n if (result.length) {\n // Complete result, encapsulated via round brackets\n if (level === 1) {\n return { argsString: '(' + result.join(', ') + ')', schemaArgs, usedArgs };\n }\n\n // Deeper result part, encapsulated via curly brackets\n else {\n return { argsString: '{' + result.join(', ') + '}', schemaArgs, usedArgs };\n }\n }\n }\n\n // Prepare and process other / unknown values as JSON\n else {\n return { argsString: JSON.stringify(args), schemaArgs, usedArgs };\n }\n }\n\n /**\n * Prepare fields for GraphQL request\n */\n protected prepareFields(\n fields: any,\n options: {\n allowed?: any;\n schemaFields?: string[];\n usedFields?: string[];\n parent?: string;\n spaces?: number;\n tab?: number;\n } = {}\n ): { schemaFields: string[]; fieldsString: string; usedFields: string[] } {\n // Config\n const { allowed, parent, schemaFields, spaces, tab, usedFields } = {\n allowed: null,\n parent: '',\n schemaFields: [],\n spaces: 2,\n tab: 1,\n usedFields: [],\n ...options,\n };\n\n // Init fields string\n let fieldsString = '';\n\n // Check fields\n if (!fields) {\n return { fieldsString, schemaFields, usedFields };\n }\n\n // Process string\n if (typeof fields === 'string') {\n if (\n allowed &&\n ((typeof allowed === 'string' && allowed !== fields) || (typeof allowed === 'object' && !allowed[fields]))\n ) {\n return { fieldsString, schemaFields, usedFields };\n }\n return { fieldsString: '\\n' + ' '.repeat(spaces).repeat(tab) + fields, schemaFields, usedFields };\n }\n\n // Process array\n else if (Array.isArray(fields)) {\n for (const item of fields) {\n if (typeof item === 'object') {\n fieldsString =\n fieldsString +\n this.prepareFields(item, {\n allowed,\n parent,\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString;\n continue;\n }\n const currentPath = parent + item;\n schemaFields.push(currentPath);\n if (allowed && !allowed?.[item]) {\n continue;\n }\n usedFields.push(currentPath);\n fieldsString =\n fieldsString +\n this.prepareFields(item, {\n allowed:\n typeof allowed?.[item] === 'object' && !(allowed?.[item] instanceof GraphQLType) ? allowed?.[item] : item,\n parent: currentPath + '.',\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString;\n }\n }\n\n // Process object\n else if (typeof fields === 'object') {\n for (const [key, val] of Object.entries(fields)) {\n const currentPath = parent + key;\n schemaFields.push(currentPath);\n if (allowed && !allowed[key]) {\n continue;\n }\n usedFields.push(currentPath);\n if (typeof val !== 'object' || !Object.keys(val).length) {\n fieldsString = fieldsString + '\\n' + ' '.repeat(spaces).repeat(tab) + key;\n } else {\n fieldsString =\n fieldsString +\n '\\n' +\n ' '.repeat(spaces).repeat(tab) +\n key +\n ' ' +\n '{' +\n this.prepareFields(val, {\n allowed:\n typeof allowed?.[key] === 'object' && !(allowed?.[key] instanceof GraphQLType) ? allowed?.[key] : key,\n parent: currentPath + '.',\n spaces,\n schemaFields,\n tab: tab + 1,\n usedFields,\n }).fieldsString +\n '\\n' +\n ' '.repeat(spaces).repeat(tab) +\n '}';\n }\n }\n }\n\n // Return result\n return { fieldsString, schemaFields, usedFields };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Loader service for loading indication\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n public isLoading = new BehaviorSubject(false);\n\n public start(): void {\n this.isLoading.next(true);\n }\n\n public stop(): void {\n this.isLoading.next(false);\n }\n\n public getAsObservable(): Observable<boolean> {\n return this.isLoading.asObservable();\n }\n}\n","import { Apollo } from 'apollo-angular';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GraphQLService } from './graphql.service';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { IGraphQLPlusOptions } from '../interfaces/graphql-plus-options.interfacen';\nimport { LoaderService } from './loader.service';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\n\n/**\n * GraphQL plus service, for extra error handling and loading indication\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GraphQLPlusService extends GraphQLService {\n /**\n * Include services\n */\n constructor(\n protected apollo: Apollo,\n protected graphqlMetaService: GraphQLMetaService,\n protected loaderService: LoaderService\n ) {\n super(apollo, graphqlMetaService);\n }\n\n public graphQl(graphql: string, options: IGraphQLPlusOptions = {}): Observable<any> {\n this.handleLoader('start', options);\n\n return new Observable((subscriber) => {\n super.graphQl(graphql, options).subscribe(\n (response) => {\n if (response && response.errors) {\n this.handleError(response.errors, options.excludedErrors);\n subscriber.error(response);\n this.handleLoader('stop', options);\n subscriber.complete();\n }\n\n subscriber.next(response);\n this.handleLoader('stop', options);\n if (options.type !== GraphQLRequestType.SUBSCRIPTION) {\n subscriber.complete();\n }\n },\n (error) => {\n if (!options.ignoreErrors) {\n this.handleError(error, options.excludedErrors);\n }\n subscriber.error(error);\n this.handleLoader('stop', options);\n subscriber.complete();\n }\n );\n });\n }\n\n handleLoader(state: 'start' | 'stop', options: IGraphQLPlusOptions): void {\n if (options.loading) {\n if (state === 'start') {\n this.loaderService.start();\n } else if (state === 'stop') {\n this.loaderService.stop();\n }\n }\n }\n\n handleError(error: Error, excludedErrors: any = null): void {\n if (excludedErrors) {\n if (Array.isArray(excludedErrors)) {\n excludedErrors.forEach((excludedError) => {\n if (error.message.includes(excludedError.toLowerCase())) {\n return;\n }\n });\n } else if (error.message.toLowerCase().includes(excludedErrors?.toLowerCase())) {\n return;\n }\n }\n\n this.displayError(error);\n }\n\n displayError(error: any): void {\n console.error(error);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormsService {\n public validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { map } from 'rxjs';\nimport { Auth } from '../classes/auth.class';\nimport { BasicUser } from '../classes/basic-user.class';\nimport { GraphQLRequestType } from '../enums/graphql-request-type.enum';\nimport { AuthService } from './auth.service';\nimport { GraphQLMetaService } from './graphql-meta.service';\nimport { GraphQLPlusService } from './graphql-plus.service';\nimport { LoaderService } from './loader.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService extends GraphQLPlusService {\n constructor(\n protected apollo: Apollo,\n protected graphqlMetaService: GraphQLMetaService,\n protected loaderService: LoaderService,\n protected authService: AuthService\n ) {\n super(apollo, graphqlMetaService, loaderService);\n }\n\n /**\n * Login\n *\n * @param input\n */\n login(input: { email: string; password: string }) {\n return this.graphQl('signIn', {\n arguments: { input },\n fields: ['token', { user: ['id', 'firstName', 'lastName', 'email', 'roles'] }],\n type: GraphQLRequestType.QUERY,\n loading: true,\n }).pipe(\n map((response: Auth) => {\n this.authService.token = response.token;\n this.authService.currentUser = BasicUser.map(response.user);\n\n return Auth.map({\n token: response.token,\n user: BasicUser.map(response.user),\n });\n })\n );\n }\n\n /**\n * Register\n *\n * @param input\n */\n register(input: { firstName: string; lastName: string; email: string; password: string }) {\n return this.graphQl('signUp', {\n arguments: { input },\n fields: ['token', { user: ['id', 'firstName', 'lastName', 'email', 'roles'] }],\n type: GraphQLRequestType.MUTATION,\n loading: true,\n }).pipe(\n map((response: Auth) => {\n this.authService.token = response.token;\n this.authService.currentUser = BasicUser.map(response.user);\n\n return Auth.map({\n token: response.token,\n user: BasicUser.map(response.user),\n });\n })\n );\n }\n\n /**\n * Request password reset mail\n *\n * @param email\n */\n requestPasswordResetMail(email: string) {\n return this.graphQl('requestPasswordResetMail', {\n arguments: { email },\n fields: [],\n type: GraphQLRequestType.QUERY,\n loading: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Helper } from '../classes/helper.class';\n\n/**\n * Image service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageService {\n /**\n * Preaload images (for lazy handling)\n *\n * @param options\n * @protected\n */\n public preLoadImages(options?: {\n doneFunction?: () => Promise<any> | any | void;\n elements?:\n | Element\n | Element[]\n | HTMLCollectionOf<Element>\n | Node\n | NodeList\n | Document\n | HTMLElement\n | HTMLElement[];\n regExp?: RegExp;\n }): Promise<any> {\n // Init configuration\n const config = {\n doneFunnction: undefined,\n elements: document,\n regExp: undefined,\n ...options,\n };\n\n return new Promise((resolve) => {\n // Convert element(s) into array\n if (!Array.isArray(config.elements)) {\n // NodeList or HTMLCollection\n if (Helper.isNodeList(config.elements)) {\n config.elements = Array.from(config.elements as HTMLCollection | NodeList) as Element[];\n }\n\n // Single element\n else {\n config.elements = [config.elements] as Element[];\n }\n }\n\n // Init loading\n const promises = [];\n\n // Get all images\n let images: HTMLImageElement[] = [];\n config.elements.forEach((element) => {\n images = images.concat(Array.from(element.getElementsByTagName('img')));\n });\n\n // Prepare images\n for (let image of images) {\n const src = image.getAttribute('src');\n\n // Check if changes are necessary and possible\n if (\n (image.complete && image.naturalHeight !== 0) || // already laoded\n !src || // Image has no src\n config.regExp?.test(src) // Test if src matches regular expression\n ) {\n continue;\n }\n\n // Replace lazy loading image with immediately loading image\n if (image.getAttribute('loading') === 'lazy') {\n const newImage = document.createElement('img');\n Array.from(image.attributes).forEach((attr) => {\n if (attr.name !== 'loading' && attr.name !== 'src') {\n newImage.setAttribute(attr.name, attr.value);\n }\n });\n image.replaceWith(newImage);\n image = newImage;\n }\n\n // Wait for laoding\n promises.push(this.loadImage(image, src));\n }\n\n // Wait until all images loaded\n Promise.all(promises)\n .catch((e) => console.error('Error during image loading', e))\n .finally(async () => {\n // Return result\n let result;\n if (config.doneFunnction) {\n result = await config.doneFunction();\n }\n resolve(result);\n });\n });\n }\n\n /**\n * Load image for image element\n *\n * @param imageElement\n * @param src\n * @protected\n */\n public async loadImage(imageElement: HTMLImageElement, src?: string) {\n src = src || imageElement.src;\n return new Promise((resolve, reject) => {\n imageElement.onload = () => resolve(imageElement);\n imageElement.onerror = reject;\n imageElement.src = src;\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BASE_MODULE_CONFIG, BaseModuleConfig } from '../interfaces/base-module-config.interface';\nimport { ImageService } from './image.service';\n\n/**\n * Scroll service for autoscroll to specific fragments\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollService {\n /**\n * Current scroll promise\n *\n * @protected\n */\n protected scrollPromise: Promise<void>;\n\n /**\n * Resolve function of current scroll promise\n *\n * @protected\n */\n protected scrollPromiseResolve: (value: void | PromiseLike<void>) => void;\n\n /**\n * Is a scroll listener set\n *\n * @protected\n */\n protected scrollListener = false;\n\n /**\n * Current scroll timer;\n *\n * @protected\n */\n protected scrollTimer = -1;\n\n /**\n * Scroll offset\n */\n protected readonly scrollOffset: number;\n\n /**\n * Detection offset\n * Should be >= scrollOffset\n */\n protected readonly detectionOffset: number;\n\n /**\n * Sampling rate for scroll done detection\n */\n protected readonly scrollSamplingRate: number;\n\n /**\n * Initializer\n */\n constructor(\n protected router: Router,\n @Inject(BASE_MODULE_CONFIG) protected moduleConfig: BaseModuleConfig,\n protected imageService: ImageService\n ) {\n const config = {\n scrollDetectionOffset: 200,\n scrollOffset: 100,\n scrollSamplingRate: 100,\n ...moduleConfig,\n };\n\n this.detectionOffset = config.scrollDetectionOffset;\n this.scrollOffset = config.scrollOffset;\n this.scrollSamplingRate = config.scrollSamplingRate;\n }\n\n /**\n * Scroll to structureElement with specific ID\n */\n async scrollTo(\n id: string,\n options: {\n checkUrl?: boolean;\n loadImagesBefore?: boolean;\n resetStyles?: boolean;\n setOverflow?: boolean;\n stopPropagation?: boolean;\n } = {}\n ) {\n // Prepare config\n const config = {\n checkUrl: false,\n loadImagesBefore: true,\n resetStyles: false,\n setOverflow: true,\n stopPropagation: true,\n ...options,\n };\n\n // Check current URL\n if (config.checkUrl && this.router.url !== '/' && !this.router.url.startsWith('/#')) {\n await this.router.navigate(['/'], { fragment: id });\n return !config.stopPropagation;\n }\n\n // Check if target element exits\n const el = document.getElementById(id);\n if (!el) {\n console.error('Missing scroll element with ID:', id);\n return !config.stopPropagation;\n }\n\n // Check if body overflow is visible\n // This is necessary for scroll handling\n const body = document.querySelector('body');\n let undoOverflowChanges = false;\n const scrollBodyStyles = JSON.parse(JSON.stringify(window.getComputedStyle(body)));\n if (config.setOverflow && (scrollBodyStyles.overflowX !== 'visible' || scrollBodyStyles.overflowY !== 'visible')) {\n // Set body overflow to visible\n console.warn('Style of body element for overflowX and overflowY will be set to \"visible\" for scrolling!');\n body.style.overflowX = 'visible';\n body.style.overflowY = 'visible';\n undoOverflowChanges = true;\n }\n\n // Load images before scrolling (once)\n if (config.loadImagesBefore) {\n await this.imageService.preLoadImages();\n }\n\n // Get get bounding rect of target element\n const cords = el.getBoundingClientRect();\n\n // Scroll to element\n window.scrollBy({ top: cords.top - this.scrollOffset, behavior: 'smooth' });\n await this.scrollDone({\n doneFunction: () => {\n // Undo changes\n if (undoOverflowChanges && config.resetStyles) {\n body.style.overflowX = scrollBodyStyles.overflowX;\n body.style.overflowY = scrollBodyStyles.overflowY;\n console.warn('Original style of body element for overflowX and overflowY is set.');\n }\n },\n });\n\n // Return stop propagation configuration\n return !config.stopPropagation;\n }\n\n /**\n * Get last active structureElement\n */\n getLastActiveElement(list?): string {\n const currentScrollPosition = window.scrollY;\n const elementsWithId = document.querySelectorAll('[id]');\n let lastId = null;\n let lastPosition = 0 - this.detectionOffset - 1;\n elementsWithId.forEach((element) => {\n const cords = element.getBoundingClientRect();\n const top = cords.top + window.pageYOffset - this.detectionOffset;\n if (\n (!list || !list.length || list.includes(element.id)) && // In list\n top < currentScrollPosition && // In active area\n lastPosition < top // Higher than the last one\n ) {\n lastId = element.id;\n lastPosition = top;\n }\n });\n return lastId;\n }\n\n /**\n * Check if ID is active\n */\n isActive(id, list?, isFirst?) {\n const lastActiveElement = this.getLastActiveElement(list);\n return id === lastActiveElement || (lastActiveElement === null && isFirst);\n }\n\n /**\n * Scroll done promise\n */\n public async scrollDone(options: { doneFunction?: () => any | void } = {}): Promise<any> {\n // Init configuration\n const config = {\n doneFunction: undefined,\n ...options,\n };\n\n // Wait for scroll done\n await this.scrollDoneDetection();\n\n // Get result\n if (config.doneFunction) {\n return config.doneFunction();\n }\n }\n\n /**\n * Scroll done detecton\n *\n * @protected\n */\n protected scrollDoneDetection(): Promise<void> {\n // Return current scroll promise (Singelton)\n if (this.scrollPromise) {\n return this.scrollPromise;\n }\n\n // Create current scroll promise\n this.scrollPromise = new Promise((resolve) => {\n this.scrollPromiseResolve = resolve;\n if (this.scrollTimer !== -1) {\n window.clearTimeout(this.scrollTimer);\n }\n this.scrollTimer = window.setTimeout(() => {\n window.removeEventListener('scroll', this.scrollDoneDetection.bind(this));\n this.scrollPromise = undefined;\n resolve();\n }, this.scrollSamplingRate);\n });\n\n // Lisitening to scroll event;\n window.addEventListener('scroll', this.scrollDoneDetection.bind(this));\n\n // Return promise\n return this.scrollPromise;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Toast } from '../interfaces/toast.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private toastsObservables = new BehaviorSubject<Toast[]>([]);\n\n get toastsAsObservable() {\n return this.toastsObservables.asObservable();\n }\n\n /**\n * Show new toast\n *\n * @param toast\n * @param duration\n */\n show(toast: Toast, duration?: number) {\n const value = this.toastsObservables.value;\n value.push(toast);\n this.toastsObservables.next(value);\n\n if (duration) {\n setTimeout(() => {\n const currentToasts = this.toastsObservables.value;\n const foundIndex = currentToasts.findIndex((e) => e.id === toast.id);\n\n if (foundIndex > -1) {\n currentToasts.splice(foundIndex, 1);\n this.toastsObservables.next(currentToasts);\n }\n }, duration);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { ActivatedRouteSnapshot, Data, NavigationEnd, Router } from '@angular/router';\nimport { Breadcrumb } from '../interfaces/breadcrumb.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BreadcrumbService {\n private readonly _breadcrumbs = new BehaviorSubject<Breadcrumb[]>([]);\n\n set breadcrumbs(value: Breadcrumb[]) {\n this._breadcrumbs.next(value);\n }\n\n get breadcrumbsObservable() {\n return this._breadcrumbs.asObservable();\n }\n\n constructor(private router: Router) {\n this.subscribeToRouteChanges();\n }\n\n /**\n * Subscribe to route changes and add element to breadcrumb\n */\n subscribeToRouteChanges() {\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\n const root = this.router.routerState.snapshot.root;\n const breadcrumbs: Breadcrumb[] = [];\n this.addBreadcrumb(root, [], breadcrumbs);\n this.breadcrumbs = breadcrumbs;\n });\n }\n\n /**\n * Add element to breadcrumb\n *\n * @param route\n * @param parentUrl\n * @param breadcrumbs\n * @private\n */\n private addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\n if (route) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path));\n\n if (route.data?.breadcrumb) {\n const breadcrumb = {\n label: this.getLabel(route.data),\n url: '/' + routeUrl.join('/'),\n };\n breadcrumbs.push(breadcrumb);\n }\n\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n }\n }\n\n /**\n * Get label for breadcrumb\n *\n * @param data\n * @private\n */\n private getLabel(data: Data) {\n return typeof data.breadcrumb === 'function' ? data.breadcrumb(data) : data.breadcrumb;\n }\n}\n","/**\n * Comparison operator enum\n */\nexport enum ComparisonOperatorEnum {\n EQ = 'EQ',\n GT = 'GT',\n GTE = 'GTE',\n IN = 'IN',\n LT = 'LT',\n LTE = 'LTE',\n NE = 'NE',\n NIN = 'NIN',\n REGEX = 'REGEX',\n}\n","/**\n * Logical operator enum\n */\nexport enum LogicalOperatorEnum {\n AND = 'AND',\n NOR = 'NOR',\n OR = 'OR',\n}\n","export enum SortOrderEnum {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","export enum ToastType {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n}\n","export enum SkeletonType {\n LINE = 'LINE',\n RECTANGLE = 'RECTANGLE',\n AVATAR = 'AVATAR',\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class Validation {\n static match(controlName: string, checkControlName: string): ValidatorFn {\n return (controls: AbstractControl) => {\n const control = controls.get(controlName);\n const checkControl = controls.get(checkControlName);\n if (checkControl?.errors && !checkControl.errors?.matching) {\n return null;\n }\n if (control?.value !== checkControl?.value) {\n controls.get(checkControlName)?.setErrors({ matching: true });\n return { matching: true };\n } else {\n return null;\n }\n };\n }\n}\n","import { createClient, Client, ClientOptions } from 'graphql-ws';\n\nexport interface RestartableClient extends Client {\n restart(): void;\n}\n\nexport function createRestartableClient(options: ClientOptions): RestartableClient {\n let restartRequested = false;\n let restart = () => {\n restartRequested = true;\n };\n\n const { on = undefined } = options;\n\n const client = createClient({\n ...options,\n on: {\n ...on,\n connected: (socket: any) => {\n // @ts-ignore\n on?.connected?.(socket);\n\n restart = () => {\n if (socket.readyState === WebSocket.OPEN) {\n // if the socket is still open for the restart, do the restart\n socket.close(4205, 'Client Restart');\n } else {\n // otherwise the socket might've closed, indicate that you want\n // a restart on the next connected event\n restartRequested = true;\n }\n };\n\n // just in case you were eager to restart\n if (restartRequested) {\n restartRequested = false;\n restart();\n }\n },\n },\n });\n\n return {\n ...client,\n restart: () => restart(),\n };\n}\n","/**\n * Exports for public API\n */\n\n// Classes\nexport * from './classes/basic-user.class';\nexport * from './classes/graphql-enum.class';\nexport * from './classes/graphql-meta.class';\nexport * from './classes/graphql-type.class';\nexport * from './classes/helper.class';\nexport * from './classes/standard.class';\nexport * from './classes/auth.class';\n\n// Services\nexport * from './services/auth.service';\nexport * from './services/graphql.service';\nexport * from './services/graphql-meta.service';\nexport * from './services/graphql-plus.service';\nexport * from './services/forms.service';\nexport * from './services/storage.service';\nexport * from './services/ws.service';\nexport * from './services/user.service';\nexport * from './services/loader.service';\nexport * from './services/scroll.service';\nexport * from './services/image.service';\nexport * from './services/toast.service';\nexport * from './services/breadcrumb.service';\n\n// Enums\nexport * from './enums/comparison-operator.enum';\nexport * from './enums/graphql-request-type.enum';\nexport * from './enums/logical-operator.enum';\nexport * from './enums/sort-order.enum';\nexport * from './enums/toast-type.enum';\nexport * from './enums/skeleton-type.enum';\n\n// Interfaces\nexport * from './interfaces/base-module-config.interface';\nexport * from './interfaces/can-component-deactivate.interface';\nexport * from './interfaces/combined-filter-input.interface';\nexport * from './interfaces/field.interface';\nexport * from './interfaces/field-object.interface';\nexport * from './interfaces/filter-input.interface';\nexport * from './interfaces/graphql-options.interface';\nexport * from './interfaces/graphql-plus-options.interfacen';\nexport * from './interfaces/graphql-type-collection.interface';\nexport * from './interfaces/graphql-fields-object.interface';\nexport * from './interfaces/single-filter-input.interface';\nexport * from './interfaces/sort-input.interface';\nexport * from './interfaces/find-args.interface';\nexport * from './interfaces/time-components.interface';\nexport * from './interfaces/toast.interface';\nexport * from './interfaces/breadcrumb.interface';\nexport * from './interfaces/graphql-crud-type.interface';\n\n// Types\nexport * from './types/storage.type';\nexport * from './types/graphql-fields.type';\n\n// Validators\nexport * from './validators/match.validator';\n\n// Functions\nexport * from './functions/ws-client.function';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StorageService","i2.WsService","i2.GraphQLMetaService","i3.LoaderService","map","i4.AuthService","i2.ImageService","i1"],"mappings":"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"}
|