@cxra/routine-assistance
Version:
RA (Routine Assistance).
1 lines • 17.9 kB
Source Map (JSON)
{"version":3,"file":"cxra-routine-assistance.mjs","sources":["../../../../projects/routine-assistance/src/global/date.concept.ts","../../../../projects/routine-assistance/src/global/date.ts","../../../../projects/routine-assistance/src/global/object.ts","../../../../projects/routine-assistance/src/lib/decorators/can-defined.decorator.ts","../../../../projects/routine-assistance/src/lib/decorators/input.as.bool.decorator.ts","../../../../projects/routine-assistance/src/lib/operators/take-until.owner.operator.ts","../../../../projects/routine-assistance/src/lib/operators/switch-map.with-state.operator.ts","../../../../projects/routine-assistance/src/lib/pipes/is.defined.pipe.ts","../../../../projects/routine-assistance/src/lib/pipes/is.undefined.pipe.ts","../../../../projects/routine-assistance/src/lib/pipes/string.as.sanitized-html.pipe.ts","../../../../projects/routine-assistance/src/lib/destroy-event.emitter.ts","../../../../projects/routine-assistance/src/cxra-routine-assistance.ts"],"sourcesContent":["/** Тип описывает абстрагированные базовые понятия, для описания относительных значений типа @see Date */\r\nexport enum DateConcept {\r\n\tage = 'age',\r\n\tactual = 'actual',\r\n\tlastyear = 'lastyear',\r\n\tyesterday = 'yesterday',\r\n\tnow = 'now', \r\n\ttomorrow = 'tomorrow',\r\n\tnextyear = 'nextyear'\r\n}","/* eslint-disable */\r\n\r\nimport { DateConcept } from './date.concept';\r\n\r\nexport { };\r\n\r\ndeclare global {\r\n\t\r\n\tinterface DateConstructor {\r\n\t\tformats: {\r\n\t\t\t/** DD.MM.YYYY */\r\n\t\t\twithoutTime: string;\r\n\t\t\t/** HH:mm:ss */\r\n\t\t\twithoutDate: string;\r\n\t\t\t/** DD.MM.YYYY HH:mm */\r\n\t\t\twithHHMMTime: string;\r\n\t\t\t/** DD.MM.YYYY HH:mm:ss */\r\n\t\t\twithHHMMSSTime: string;\r\n\t\t};\r\n\t\tHOURS_PER_DAY: number;\r\n\t\tMINUTES_PER_HOUR: number;\r\n\t\tSECONDS_PER_MINUTE: number;\r\n\t\t/** Метод определения является значение абстрактным понятием даты */\r\n\t\tisConcept: (value: unknown) => boolean;\r\n\t\t/** Метод получения значения абстрактного понятия даты */\r\n\t\tgetConceptValue: (value: DateConcept) => Date;\r\n\t}\r\n\r\n\tinterface Date {\r\n\t\taddMilliseconds: (value: number) => Date;\r\n\t\taddSeconds: (value: number) => Date;\r\n\t\taddMinutes: (value: number) => Date;\r\n\t\taddHours: (value: number) => Date;\r\n\t\taddDays: (value: number) => Date;\r\n\t\taddWeeks: (value: number) => Date;\r\n\t\taddMonths: (value: number) => Date;\r\n\t\taddYears: (value: number) => Date;\r\n\t}\r\n\r\n}\r\n\r\nDate.formats = {\r\n\twithoutTime: 'DD.MM.YYYY',\r\n\twithHHMMTime: 'DD.MM.YYYY HH:mm',\r\n\twithHHMMSSTime: 'DD.MM.YYYY HH:mm:ss',\r\n\twithoutDate: 'HH:mm:ss'\r\n};\r\n\r\nDate.HOURS_PER_DAY = 24;\r\nDate.MINUTES_PER_HOUR = 60;\r\nDate.SECONDS_PER_MINUTE = 60;\r\n\r\nDate.isConcept = (value: unknown) => Object\r\n\t.values(DateConcept)\r\n\t.some(o => o === value);\r\n\t\r\nDate.getConceptValue = (value: DateConcept) => {\r\n\tswitch (value) {\r\n\t\tcase DateConcept.age:\r\n\t\t\treturn (new Date()).addYears(-110);\r\n\t\tcase DateConcept.lastyear:\r\n\t\t\treturn (new Date()).addYears(-1);\r\n\t\tcase DateConcept.yesterday:\r\n\t\t\treturn (new Date()).addDays(-1);\r\n\t\tcase DateConcept.now:\r\n\t\t\treturn new Date();\r\n\t\tcase DateConcept.tomorrow:\r\n\t\t\treturn (new Date()).addDays(1);\r\n\t\tcase DateConcept.nextyear:\r\n\t\t\treturn (new Date()).addYears(1);\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\nconst isLeapYear = (year: number) => (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\r\n\r\nconst getMonthLength = (date: Date) => {\r\n\treturn [31, (isLeapYear(date.getFullYear()) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][date.getMonth()];\r\n};\r\n\r\nDate.prototype.addMilliseconds = function(value) {\r\n\tconst result = new Date(this.valueOf());\r\n\tresult.setMilliseconds(result.getMilliseconds() + value);\r\n\treturn result;\r\n};\r\nDate.prototype.addSeconds = function(value) {\r\n\treturn this.addMilliseconds(value * 1000);\r\n};\r\nDate.prototype.addMinutes = function(value) {\r\n\treturn this.addMilliseconds(value * 60000);\r\n};\r\nDate.prototype.addHours = function(value) {\r\n\treturn this.addMilliseconds(value * 3600000);\r\n};\r\nDate.prototype.addDays = function(value) {\r\n\treturn this.addMilliseconds(value * 86400000);\r\n};\r\nDate.prototype.addWeeks = function(value) {\r\n\treturn this.addMilliseconds(value * 604800000);\r\n};\r\nDate.prototype.addMonths = function(value) {\r\n\tconst result = new Date(this.valueOf());\r\n\tresult.setDate(1);\r\n\tresult.setMonth(this.getMonth() + value);\r\n\tresult.setDate(Math.min(this.getDate(), getMonthLength(result)));\r\n\treturn result;\r\n};\r\nDate.prototype.addYears = function(value) {\r\n\treturn this.addMonths(value * 12);\r\n};","export {};\r\n\r\ndeclare global {\r\n\t\r\n\tinterface ObjectConstructor {\r\n\t\t/** Метод осуществляет не глубокое сравнение объектов */\r\n\t\tshallow: (a: unknown, b: unknown) => boolean;\r\n\t\t/** Проверка на null и undefined */\r\n\t\tisD: (value: unknown) => boolean;\r\n\t\t/** Проверка на null и undefined */\r\n\t\tisND: (value: unknown) => boolean;\r\n\t\t/** Метод осуществляет копирование объекта */\r\n\t\tgetClone: (o: unknown) => unknown;\r\n\t}\r\n\t\r\n}\r\n\r\nObject.shallow = (a, b): boolean => {\r\n\tconst keys1 = Object.keys(a);\r\n\tconst keys2 = Object.keys(b);\r\n\tif (keys1.length !== keys2.length) {\r\n\t\treturn false;\r\n\t}\r\n\tfor (const key of keys1) {\r\n\t\tif (a[key] !== b[key]) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n};\r\n\r\nObject.isD = (value): boolean => !Object.isND(value);\r\n\r\nObject.isND = (value): boolean => (value === undefined || value === null);\r\n\r\nObject.getClone = (o: unknown): string => JSON.parse(JSON.stringify(o));","/* eslint-disable @typescript-eslint/naming-convention */\r\n/* eslint-disable @typescript-eslint/require-await */\r\n\r\n/**\r\n * Декоратор, который оборачивает функцию setter'а в if (value),\r\n * то есть setter будет срабатывать только если значение не undefined и не null\r\n * \r\n * @example\r\n * \t@Input('id')\r\n * \t@ShouldByDefined()\r\n * \tprivate set _accountId(value: number) {\r\n * \t\tthis.id$.next(value);\r\n * \t}\r\n * \tТоже самое:\r\n * \t@Input('id')\r\n * \tprivate set _accountId(value: number) {\r\n * \t\tif(value) {\r\n * \t\t\tthis.id$.next(value);\r\n * \t\t}\r\n * \t}\r\n */\r\nexport const ShouldByDefined = () => (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\r\n\r\n\tconst setter = descriptor.set;\r\n\r\n\tdescriptor.set = async function(...args: unknown[]): Promise<unknown> {\r\n\t\tif (args[0]) {\r\n\t\t\treturn setter?.apply(this, args);\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\treturn descriptor;\r\n\r\n};","/* eslint-disable @typescript-eslint/naming-convention */\r\n/* eslint-disable @typescript-eslint/require-await */\r\n/**\r\n * Декоратор, который оборачивает функцию setter'а в обработчик, который входной аргумент поступивший\r\n * (например из шаблона) возможно в виде строки, пытается привести к @see bool\r\n * \r\n * @example\r\n *\t@Input('can')\r\n *\t@InputAsBool()\r\n *\tprivate set _can(value: boolean) {\r\n *\t\tthis.can$.next(value);\r\n *\t}\r\n */\r\nexport const InputAsBool = () => (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\r\n\r\n\tconst setter = descriptor.set;\r\n\r\n\tdescriptor.set = async function(...args: unknown[]): Promise<unknown> {\r\n\t\tconst _argument = args[0];\r\n\t\targs[0] =_argument === '' || _argument === 'true'\r\n\t\t\t? true\r\n\t\t\t: _argument === 'false'\r\n\t\t\t\t? false\r\n\t\t\t\t: _argument;\r\n\t\treturn setter?.apply(this, args);\r\n\t};\r\n\treturn descriptor;\r\n\r\n};","import { ChangeDetectorRef, inject, ViewRef } from '@angular/core';\r\nimport { Observable, Subject, UnaryFunction } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/** Operator to stop subscription with the owner destroyed */\r\nexport function takeUntilOwner<T>(): UnaryFunction<Observable<T>, Observable<T>> {\r\n\tconst _owner = inject(ChangeDetectorRef) as ViewRef;\r\n\tconst _destroyed$ = new Subject<void>();\r\n\t_owner.onDestroy(() => _destroyed$.next());\r\n\treturn (o: Observable<T>) => o.pipe(\r\n\t\ttakeUntil(_destroyed$)\r\n\t);\r\n}","import { Observable, pipe, UnaryFunction } from 'rxjs';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\n\r\n/** Оператор переключение на подписку с фиксацией состояния исполнения */\r\nexport const switchMapWithState = <T, R>(\r\n\t_predicate: (value: T, index: number) => Observable<R>,\r\n\t_monitor: { next(value: boolean): void }\r\n): UnaryFunction<Observable<T>, Observable<R>> => pipe(\r\n\ttap(() => _monitor.next(true)),\r\n\tswitchMap((value: T, index: number) => _predicate(value, index).pipe(\r\n\t\tfinalize(() => _monitor.next(false))\r\n\t))\r\n);","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** Проверяет является ли значение определенным */\r\n@Pipe({\r\n\tname: 'isD'\r\n})\r\nexport class IsDefinedPipe implements PipeTransform {\r\n\r\n\ttransform(value: unknown): boolean {\r\n\t\treturn Object.isD(value);\r\n\t}\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** Проверяет является ли значение неопределенным или null */\r\n@Pipe({\r\n\tname: 'isND'\r\n})\r\nexport class IsUndefinedPipe implements PipeTransform {\r\n\r\n\ttransform(value: unknown): boolean {\r\n\t\treturn Object.isND(value);\r\n\t}\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n/** Is meant to be sanitized to declarative html for use in a template */\r\n@Pipe({\r\n\tname: 'asSanitizedHtml'\r\n})\r\nexport class StringAsSanitizedHtmlPipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\tprivate sanitized: DomSanitizer\r\n\t) {}\r\n\r\n\ttransform(value: string): SafeHtml {\r\n\t\treturn this.sanitized.bypassSecurityTrustHtml(value);\r\n\t}\r\n\r\n}","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CXraDestroyEventEmitter extends Subject<void> implements OnDestroy {\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.next();\r\n\t\tthis.complete();\r\n\t}\r\n\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}