{"version":3,"file":"cisstech-nge-utils.mjs","sources":["../../../projects/nge/utils/src/copy.ts","../../../projects/nge/utils/src/builder.ts","../../../projects/nge/utils/src/colors.ts","../../../projects/nge/utils/src/compare.ts","../../../projects/nge/utils/src/contracts.ts","../../../projects/nge/utils/src/dates.ts","../../../projects/nge/utils/src/extensions.ts","../../../projects/nge/utils/src/strings.ts","../../../projects/nge/utils/cisstech-nge-utils.ts"],"sourcesContent":["export function deepCopy<T>(obj: T): T {\n  if (obj === null || typeof obj !== 'object') {\n    return obj\n  }\n  const copy = obj instanceof Array ? [] : {}\n  for (const key in obj) {\n    if ((obj as any).hasOwnProperty(key)) {\n      ;(copy as any)[key] = deepCopy(obj[key])\n    }\n  }\n  return copy as T\n}\n","import { deepCopy } from './copy'\n\ninterface ClassInfo {\n  resolver?: (props: Record<string, any>) => Function\n}\n\ninterface PropertyInfo {\n  type?: Function\n  indexed?: boolean\n  aliases?: string[]\n}\n\nclass Serializer {\n  static serialize(instance: any): Record<string, any> {\n    const record: Record<string, any> = {}\n    const prototype = instance.constructor.prototype\n    const properties: Record<string, PropertyInfo> = prototype.__properties_infos__\n\n    Object.keys(properties).forEach((propertyName) => {\n      if (!(propertyName in instance)) {\n        return\n      }\n\n      const property = properties[propertyName]\n      const exportName = (property.aliases ?? []).pop() ?? propertyName\n\n      const value = instance[propertyName]\n      if (value == null) {\n        return\n      }\n      switch (typeof value) {\n        case 'string':\n        case 'number':\n        case 'boolean':\n          if (value != null) {\n            record[exportName] = value\n          }\n          break\n        case 'object':\n          if (property.type) {\n            if (Array.isArray(value)) {\n              record[exportName] = value\n                .map((e) => {\n                  return Serializer.serialize(e)\n                })\n                .filter((e) => e != null)\n            } else if (property.indexed) {\n              record[exportName] = Object.keys(value).reduce(\n                (obj, key) => {\n                  if (value[key] === undefined) {\n                    return obj\n                  }\n                  obj[key] = Serializer.serialize(value[key])\n                  return obj\n                },\n                {} as Record<string, any>\n              )\n            } else {\n              record[exportName] = Serializer.serialize(value)\n            }\n          } else {\n            if (Array.isArray(value)) {\n              record[exportName] = value.filter((obj) => obj != null)\n            } else {\n              record[exportName] = deepCopy(value)\n            }\n          }\n          break\n      }\n    })\n    return record\n  }\n\n  static deserialize(target: any, props: Record<string, any>) {\n    const record: Record<string, any> = {\n      ...props,\n    }\n    const prototype = target.prototype\n    const info: ClassInfo = prototype.__class_info__\n    if (info.resolver) {\n      target = info.resolver(props)\n    }\n\n    const properties: Record<string, PropertyInfo> = prototype.__properties_infos__\n    Object.keys(properties).forEach((propertyName) => {\n      const property = properties[propertyName]\n      const aliases = property.aliases ?? []\n      const value =\n        props[propertyName] ??\n        Object.keys(props).find((k) => {\n          return !!aliases.find((alias) => alias === k)\n        })\n\n      if (value == null) {\n        return\n      }\n\n      switch (typeof value) {\n        case 'object':\n          if (property.type) {\n            if (Array.isArray(value)) {\n              record[propertyName] = value.map((e) => {\n                return Serializer.deserialize(property.type, e)\n              })\n            } else if (property.indexed) {\n              Object.keys(value).forEach((k) => {\n                value[k] = Serializer.deserialize(property.type, value[k])\n              })\n              record[propertyName] = value\n            } else {\n              record[propertyName] = Serializer.deserialize(property.type, value)\n            }\n          } else {\n            record[propertyName] = value\n          }\n          break\n        default:\n          record[propertyName] = value\n          break\n      }\n    })\n    return new target(record)\n  }\n}\n\nexport class Builder<T> {\n  /**\n   * Creates new instance of `T` class.\n   * @param props properties to pass to the constructor of the instance.\n   * @returns new instance of `T`\n   */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  static create<T>(props: Partial<T>): T {\n    throw new Error('This is an abstract method. It needs to be overridden.')\n  }\n\n  save(): Record<keyof T, any> {\n    throw new Error('This is an abstract method. It needs to be overridden.')\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  with(props: Partial<T>): T {\n    throw new Error('This is an abstract method. It needs to be overridden.')\n  }\n}\n\nexport function Entity(info?: ClassInfo): ClassDecorator {\n  return function (target: any) {\n    const prototype = target.prototype\n    info = info ?? {}\n    prototype.__class_info__ = prototype.__class_info__ ?? info\n    prototype.__class_info__ = {\n      ...prototype.__class_info__,\n      ...info,\n    }\n\n    prototype.save = function () {\n      return Serializer.serialize(this)\n    }\n\n    prototype.with = function (props: any) {\n      return new target({\n        ...this,\n        ...props,\n      })\n    }\n\n    target.create = function (props: Record<string, any>) {\n      return Serializer.deserialize(target, props)\n    }\n    return target\n  }\n}\n\nexport function Property(info?: PropertyInfo): PropertyDecorator {\n  return (instance: any, name: string | symbol) => {\n    info = info ?? {\n      aliases: [],\n    }\n\n    const prototype = instance.constructor.prototype\n    prototype.__properties_infos__ = prototype.__properties_infos__ ?? {}\n    prototype.__properties_infos__[name] = info\n  }\n}\n","export function rgbFromHex(color: string) {\n  color = color.replace('#', '')\n  const n = color.length\n  if (n == 3) {\n    // convert rgb to rrggbb\n    const r = color[0]\n    const g = color[1]\n    const b = color[2]\n    color = `${r}${r}${g}${g}${b}${b}`\n  }\n\n  const rgb = parseInt(color, 16) // convert rrggbb to decimal\n  return {\n    r: (rgb >> 16) & 0xff, // extract red\n    g: (rgb >> 8) & 0xff, // extract green\n    b: (rgb >> 0) & 0xff, // extract blue\n  }\n}\n\nexport function rgbToHex(r: number, g: number, b: number) {\n  r = Math.round(r)\n  g = Math.round(g)\n  b = Math.round(b)\n  const componentToHex = (c: number) => {\n    const hex = c.toString(16)\n    return hex.length == 1 ? '0' + hex : hex\n  }\n  return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b)\n}\n\nexport function colorContrast(color: string) {\n  const { r, g, b } = rgbFromHex(color)\n  const contrast = (Math.round(r * 299) + Math.round(g * 587) + Math.round(b * 114)) / 1000\n  return contrast >= 128 ? 'black' : 'white'\n}\n\n// https://maketintsandshades.com/about\nexport function colorTint(color: string, factor = 0.1 /* 10% */) {\n  let { r, g, b } = rgbFromHex(color)\n  r += (255 - r) * factor\n  g += (255 - g) * factor\n  b += (255 - b) * factor\n  return rgbToHex(r, g, b)\n}\n\nexport function colorShade(color: string, factor = 0.88 /* 12% */) {\n  let { r, g, b } = rgbFromHex(color)\n  r *= factor\n  g *= factor\n  b *= factor\n  return rgbToHex(r, g, b)\n}\n","export function deepEqual(a: any, b: any): boolean {\n  if (a === b) return true\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false\n\n    var length, i, keys\n    if (Array.isArray(a)) {\n      length = a.length\n      if (length != b.length) return false\n      for (i = length; i-- !== 0; ) if (!deepEqual(a[i], b[i])) return false\n      return true\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\n    keys = Object.keys(a)\n    length = keys.length\n    if (length !== Object.keys(b).length) return false\n\n    for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\n    for (i = length; i-- !== 0; ) {\n      var key = keys[i]\n\n      if (!deepEqual(a[key], b[key])) return false\n    }\n\n    return true\n  }\n\n  // true if both NaN, false otherwise\n  return a !== a && b !== b\n}\n","export function ensuresNonNull<T>(value?: T, message?: string): value is T {\n  if (value == null) {\n    throw new ReferenceError(message)\n  }\n  return true\n}\n\nexport function ensuresNonNullArray<T>(value?: T[], message?: string): value is T[] {\n  if (value == null) {\n    throw new ReferenceError(message)\n  }\n  value.forEach((v) => {\n    if (v == null) {\n      throw ReferenceError(message)\n    }\n  })\n  return true\n}\n\nexport function ensuresNonNullString(value?: string, message?: string): value is string {\n  if (value == null || value.trim().length === 0) {\n    message = message || `'require non null|empty string`\n    throw new ReferenceError(message)\n  }\n  return true\n}\n\nexport function ensures(condition: any, message?: string): asserts condition {\n  if (!condition) {\n    throw new Error(message)\n  }\n}\n","export function epoch(): Date {\n  return new Date('01/01/1970')\n}\n\nexport function addDays(date: Date, days: number) {\n  date = new Date(date.valueOf())\n  date.setDate(date.getDate() + days)\n  return date\n}\n\n/** Gets current value of unix timestamp */\nexport function timestamp(): number {\n  return new Date().getTime() / 1000\n}\n\n/**\n * Gets unix timestamp value of `date`\n * @param date the date.\n */\nexport function toTimestamp(date: Date): number {\n  return date.getTime() / 1000\n}\n\n/**\n * Converts an unix timestamp to a Date object\n * @param time an unix timestamp\n */\nexport function dateFromTimestamp(time: number): Date {\n  return new Date(time * 1000)\n}\n\n/**\n * Converts an unix timestamp to a date in the format 'day month hours mins'\n * @param time an unix timestamp.\n * @param locale target language locale tag.\n * @returns string representation of the date.\n */\nexport function fullDate(time: number, locale?: string): string {\n  const format: Intl.DateTimeFormatOptions = {\n    month: 'short',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n  }\n  return convertDate(time, format, locale)\n}\n\n/**\n * Converts an unix timestamp to a date in the format 'day month'\n * @param time an unix timestamp.\n * @param locale target language locale tag.\n * @returns string representation of the date.\n */\nexport function shortDate(time: number, locale?: string): string {\n  return convertDate(time, { month: 'short', day: 'numeric' }, locale)\n}\n\n/**\n * Converts an unix timestamp to a date in the format 'hours mins'\n * @param time an unix timestamp.\n * @returns string representation of the date.\n */\nexport function hours(time: number): string {\n  const date = dateFromTimestamp(time)\n  const minutes = date.getMinutes()\n  const minutesFormat = minutes >= 10 ? minutes : `0${minutes}`\n  return `${date.getHours()}:${minutesFormat}`\n}\n\n/**\n * Gets a value indicating whether the timestamp is today.\n * @param time an unix timestamp.\n */\nexport function isToday(time: number) {\n  return new Date().toLocaleDateString() === dateFromTimestamp(time).toLocaleDateString()\n}\n\n/**\n * Gets a value indicating whether the given dates representes the same year, month and day.\n * @param d1 the first date.\n * @param d2 the second date.\n */\nexport function compareDays(d1: Date, d2: Date) {\n  return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate()\n}\n\nexport function convertDate(time: number, format: Intl.DateTimeFormatOptions, locale?: string): string {\n  const date = dateFromTimestamp(time)\n  return date.toLocaleDateString(locale, format)\n}\n\nexport function weeksDiff(d1: Date, d2: Date) {\n  let diff = (d2.getTime() - d1.getTime()) / 1000\n  diff /= 60 * 60 * 24 * 7\n  return Math.abs(Math.round(diff))\n}\n\nexport function dateRangeOverlaps(a_start: Date, a_end: Date, b_start: Date, b_end: Date): boolean {\n  if (a_start < b_start && b_start < a_end) return true // b starts in a\n  if (a_start < b_end && b_end < a_end) return true // b ends in a\n  if (b_start < a_start && a_end < b_end) return true // a in b\n  return false\n}\n","export function isImage(extension: string): boolean {\n  extension = extension.toLowerCase()\n  if (!extension.startsWith('.')) {\n    extension = '.' + extension\n  }\n  return ['.ai', '.png', '.jpg', '.pjg', '.gif', '.svg', '.jpeg'].includes(extension)\n}\n\nexport function isPdf(extension: string): boolean {\n  extension = extension.toLowerCase()\n  if (!extension.startsWith('.')) {\n    extension = '.' + extension\n  }\n  return extension === '.pdf'\n}\n\nexport function isWordDoc(extension: string): boolean {\n  extension = extension.toLowerCase()\n  if (!extension.startsWith('.')) {\n    extension = '.' + extension\n  }\n  return ['.odt', '.doc', '.docx'].includes(extension)\n}\n\nexport function isText(extension: string): boolean {\n  extension = extension.toLowerCase()\n  return extension === 'txt' || extension === '.txt'\n}\n\nexport function isExcelDoc(extension: string): boolean {\n  extension = extension.toLowerCase()\n  if (!extension.startsWith('.')) {\n    extension = '.' + extension\n  }\n  return ['.xlsx', '.xlsm', '.xsl', '.xst'].includes(extension)\n}\n\nexport function isPowerPointDoc(extension: string): boolean {\n  extension = extension.toLowerCase()\n  if (!extension.startsWith('.')) {\n    extension = '.' + extension\n  }\n  return ['.ppt', '.pptm', '.pptx'].includes(extension)\n}\n\n/**\n * Gets the extension of the file (without the dot '.').\n * Throws an exception if the file is undefined.\n * @param file the file\n * @returns the extension of the file.\n */\nexport function extensionOf(file: File | Blob): string {\n  if (file instanceof File) {\n    const tmp1 = Math.max(0, file.name.lastIndexOf('.'))\n    return file.name.slice((tmp1 || Infinity) + 1).toLowerCase()\n  }\n  const tmp2 = Math.max(0, file.type.lastIndexOf('/'))\n  return file.type.slice((tmp2 || Infinity) + 1).toLowerCase()\n}\n","export function isNullOrEmpty(text: string) {\n  return text == null || text.trim() === ''\n}\n\nexport function anyNullOrEmpty(...args: string[]) {\n  if (args == null) {\n    return true\n  }\n  for (const e of args) {\n    if (isNullOrEmpty(e)) {\n      return true\n    }\n  }\n  return false\n}\n\nexport const urlPattern =\n  '^(https?:\\\\/\\\\/)?' + // protocol\n  '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n  '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n  '(\\\\:\\\\d+)?(\\\\/[@-a-z\\\\d%_.~+]*)*' + // port and path\n  '(\\\\?[;@&a-z\\\\d%_.~+=-]*)?' + // query string\n  '(\\\\#[@-a-z\\\\d_]*)?$'\n\nexport function isURL(str: string) {\n  // https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n  const pattern = new RegExp(urlPattern, 'i') // fragment locator\n  return !!pattern.test(str)\n}\n\nexport function hashCode(str: string) {\n  let hash = 0\n  if (str.length === 0) return hash\n  for (let i = 0; i < str.length; i++) {\n    const char = str.charCodeAt(i)\n    hash = (hash << 5) - hash + char\n    hash = hash & hash // Convert to 32bit integer\n  }\n  return hash\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}