{"version":3,"file":"pvway-alpha-common.mjs","sources":["../../../projects/alpha-common/src/lib/utils/alpha-utils.ts","../../../projects/alpha-common/src/lib/utils/alpha-window.ts","../../../projects/alpha-common/src/lib/utils/alpha-ymd.ts","../../../projects/alpha-common/src/lib/http/alpha-severity-enum.ts","../../../projects/alpha-common/src/lib/http/alpha-mutation-enum.ts","../../../projects/alpha-common/src/lib/http/alpha-http-result-notification.ts","../../../projects/alpha-common/src/lib/http/alpha-http-result.ts","../../../projects/alpha-common/src/lib/api/alpha-upload-api.service.ts","../../../projects/alpha-common/src/lib/api/alpha-version-api.service.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems.service.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-uso-option-set.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-edit-container.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-base-api-event.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-base-api.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-base-form-model.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-form-result.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-base-component.ts","../../../projects/alpha-common/src/lib/ems/alpha-ems-form-input.ts","../../../projects/alpha-common/src/public-api.ts","../../../projects/alpha-common/src/pvway-alpha-common.ts"],"sourcesContent":["/**\r\n * Utility class for string, number, and binary operations.\r\n *\r\n * Provides static methods for:\r\n * - String checks (null/empty, contains)\r\n * - Null/undefined checks\r\n * - Number conversion and rounding\r\n * - Currency formatting\r\n * - Base64, Blob, and Uint8Array conversions\r\n * - Data URL utilities\r\n *\r\n * All methods are pure and stateless.\r\n */\r\nexport class AlphaUtils {\r\n\r\n  /**\r\n   * Check if a string is null or empty.\r\n   *\r\n   * @param {string | undefined} str - The string to evaluate.\r\n   * @returns {boolean} - True if the string is null or empty, false otherwise.\r\n   */\r\n  static eon(str: string | undefined): boolean {\r\n    return (!str || str.trim() === '');\r\n  }\r\n\r\n  /**\r\n   * Checks if a value is null or undefined.\r\n   * @param {any} val - The value to check.\r\n   * @return {boolean} - True if the value is null or undefined, otherwise false.\r\n   */\r\n  static isNull(val: any): boolean {\r\n    return (val == null);\r\n  }\r\n\r\n  /**\r\n   * Converts a string to a number. It returns null when the value is undefined\r\n   * or cannot be converted to a number.\r\n   *\r\n   * @param {string | undefined} val - The value to be converted to a number.\r\n   * @returns {number | null} - The converted number value or null if the value is\r\n   * undefined or cannot be converted to a number.\r\n   */\r\n  static toNumberOrNull(val: string | undefined): number | null {\r\n    return this.eon(val) ? null : Number(val);\r\n  }\r\n\r\n  /**\r\n   * returns true if the string to find is found in the string to evaluate\r\n   * @param strToCheck the string to evaluate\r\n   * @param stringToFind the string to find within the string to evaluate\r\n   * @note this method is case-sensitive\r\n   */\r\n  static contains(strToCheck: string, stringToFind: string): boolean {\r\n    return strToCheck.indexOf(stringToFind) >= 0;\r\n  }\r\n\r\n  /**\r\n   * Converts a numerical value to a currency representation with the specified locale,\r\n   * number of digits, and currency.\r\n   * @param {number} value - The numerical value to be converted.\r\n   * @param {string} [locale] - The optional locale code to be used for formatting the currency.\r\n   * @param {number} [nbDigits] - The optional number of digits to be shown after the decimal point.\r\n   * @param {string} [currency] - The optional currency code to be used for formatting the currency.\r\n   * @returns {string} - The converted currency representation of the value.\r\n   */\r\n  static toLocaleCurrency(\r\n    value: number,\r\n    locale?: string,\r\n    nbDigits?: number,\r\n    currency?: string): string {\r\n    if (nbDigits === undefined) {\r\n      nbDigits = 2;\r\n    }\r\n    if (currency === undefined) {\r\n      currency = \"EUR\";\r\n    }\r\n\r\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\r\n    return value.toLocaleString(\r\n      locale, {\r\n        style: \"currency\",\r\n        currencyDisplay: 'symbol',\r\n        currency: currency,\r\n        minimumFractionDigits: nbDigits,\r\n        maximumFractionDigits: nbDigits\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Rounds the given value to the specified precision.\r\n   *\r\n   * @param {number} value - The value to be rounded.\r\n   * @param {number} [precision=0] - The number of decimal places to round to.\r\n   * @returns {number} - The rounded value.\r\n   */\r\n  static round(value: number, precision?: number): number {\r\n    if (precision === undefined) {\r\n      precision = 0;\r\n    }\r\n    const str = value.toFixed(precision);\r\n    return Number(str);\r\n  }\r\n\r\n  /**\r\n   * Converts a data URL string to a Blob object.\r\n   *\r\n   * @param {string} dataUrl - The data URL to convert.\r\n   * @param {number} [sliceSize] - The slice size for splitting the base64 data. Optional, defaults to 512.\r\n   * @returns {Blob} - The converted Blob object.\r\n   */\r\n  static dataUrlToBlob(dataUrl: string, sliceSize?: number): Blob {\r\n    const scPos = dataUrl.indexOf(';')\r\n    const contentType = dataUrl.substring(5, scPos);\r\n    const header = `data:${contentType};base64,`;\r\n    const b64 = dataUrl.substring(header.length);\r\n    return this.b64ToBlob(b64, contentType, sliceSize);\r\n  }\r\n\r\n  /**\r\n   * Converts a data URL to Uint8Array.\r\n   *\r\n   * @param {string} dataUrl - The data URL to convert.\r\n   * @param {number} [sliceSize] - The slice size for dividing the base64 string into chunks. Optional.\r\n   * @return {Uint8Array} - The converted Uint8Array.\r\n   */\r\n  static dataUrlToUint8Array(dataUrl: string, sliceSize?: number): Uint8Array{\r\n    const scPos = dataUrl.indexOf(';')\r\n    const contentType = dataUrl.substring(5, scPos);\r\n    const header = `data:${contentType};base64,`;\r\n    const b64 = dataUrl.substring(header.length);\r\n    return this.b64ToUint8Array(b64, sliceSize);\r\n  }\r\n\r\n  /**\r\n   * Converts a base64 string to a Uint8Array.\r\n   *\r\n   * @param {string} b64Data - The base64 string to convert.\r\n   * @param {number} [sliceSize=512] - The size of each slice when converting the base64 string.\r\n   * @return {Uint8Array} - The converted Uint8Array.\r\n   */\r\n  static b64ToUint8Array(b64Data: string, sliceSize?: number): Uint8Array {\r\n    const byteCharacters = atob(b64Data);\r\n    if (sliceSize === undefined) {\r\n      sliceSize = 512;\r\n    }\r\n    let bytes: any[] = [];\r\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n      const slice = byteCharacters\r\n        .slice(offset, offset + sliceSize);\r\n      const len = slice.length;\r\n      const byteNumbers = new Array(len);\r\n      for (let i = 0; i < len; i++) {\r\n        byteNumbers[i] =  slice.charCodeAt(i);\r\n      }\r\n      bytes = bytes.concat(byteNumbers)\r\n    }\r\n    return new Uint8Array(bytes);\r\n  }\r\n\r\n  /**\r\n   * Converts a base64 string to a Blob object.\r\n   *\r\n   * @param {string} b64Data - The base64 string to convert.\r\n   * @param {string} [contentType] - Optional content type of the Blob.\r\n   * @param {number} [sliceSize] - Optional slice size for dividing the base64 data into chunks.\r\n   * @returns {Blob} - The resulting Blob object.\r\n   */\r\n  static b64ToBlob(\r\n    b64Data: string, contentType?: string,\r\n    sliceSize?: number): Blob {\r\n    const byteCharacters = atob(b64Data);\r\n    const byteArrays = [];\r\n    if (sliceSize === undefined) {\r\n      sliceSize = 512;\r\n    }\r\n    for (let offset = 0;\r\n         offset < byteCharacters.length;\r\n         offset += sliceSize) {\r\n      const slice = byteCharacters\r\n        .slice(offset, offset + sliceSize);\r\n      const len = slice.length;\r\n      const byteNumbers = new Array(len);\r\n      for (let i = 0; i < len; i++) {\r\n        byteNumbers[i] =  slice.charCodeAt(i);\r\n      }\r\n      const byteArray =\r\n        new Uint8Array(byteNumbers);\r\n      byteArrays.push(byteArray);\r\n    }\r\n    return new Blob(byteArrays, {type: contentType});\r\n  }\r\n\r\n  /**\r\n   * Get the URL of a blob from base64 data.\r\n   *\r\n   * @param {string} b64Data - The base64 encoded data.\r\n   * @param {string} [contentType] - The type of the data.\r\n   * @param {number} [sliceSize] - The size of each slice.\r\n   * @return {string} The URL of the blob.\r\n   */\r\n  static getBlobUrl(b64Data: string, contentType?:\r\n    string, sliceSize?: number): string {\r\n    const blob = this.b64ToBlob(\r\n      b64Data, contentType, sliceSize);\r\n    return URL.createObjectURL(blob);\r\n  }\r\n\r\n}\r\n","/**\r\n * Utility class for browser-related information and viewport analysis.\r\n *\r\n * Provides static getters for:\r\n * - navigatorLanguageCode: Retrieves the user's browser language code (2-letter, lowercase).\r\n * - mediaWidth: Returns the current viewport width category ('xs', 'sm', 'md', 'lg', 'xl').\r\n *\r\n * All methods are pure and stateless.\r\n */\r\nexport class AlphaWindow {\r\n\r\n  /**\r\n   * Retrieves the language code of the user's browser.\r\n   *\r\n   * @returns {string} The language code of the user's browser.\r\n   */\r\n  static get navigatorLanguageCode(): string {\r\n    const nav = window.navigator as any;\r\n    const userLang = (nav.language || nav.userLanguage) as string;\r\n    return userLang\r\n      ? userLang.substring(0, 2).toLowerCase()\r\n      : 'en';\r\n  }\r\n\r\n  /**\r\n   * Returns the media width based on the current viewport width.\r\n   * The returned value can be one of the following: 'xs', 'sm', 'md', 'lg', 'xl'.\r\n   *\r\n   * @return {string} The media width.\r\n   */\r\n  static get mediaWidth(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\r\n    const vw = Math\r\n      .max(document.documentElement.clientWidth || 0,\r\n        window.innerWidth || 0);\r\n    if (vw >= 1200) {\r\n      return 'xl';\r\n    } else if (vw >= 992) {\r\n      return 'lg';\r\n    } else if (vw >= 768) {\r\n      return 'md';\r\n    } else if (vw >= 576) {\r\n      return 'sm';\r\n    } else {\r\n      return 'xs';\r\n    }\r\n  }\r\n}\r\n","/**\r\n * Utility class for parsing, formatting, and comparing dates in various formats.\r\n *\r\n * Features:\r\n * - Parse date strings in \"yyyy-MM-dd\" format to Date objects\r\n * - Format Date objects to strings in multiple formats (YMD, DMY, MDY, DM) and separators (Slash, Dash)\r\n * - Format date ranges\r\n * - Check if a date is within a range\r\n * - Compare and check equality of dates by year, month, and day\r\n * - Convert dates to normalized \"YYYY-MM-DD\" format\r\n *\r\n * All methods are pure and stateless except for instance methods, which operate on the provided date.\r\n */\r\nexport class AlphaYmd {\r\n\r\n  constructor(private mDate: Date) { }\r\n\r\n  /**\r\n   * Parses a string representing a date in the format\r\n   * \"yyyy-MM-dd\" and returns a Date object.\r\n   *\r\n   * @param {string} ymd - The string representing the date in \"yyyy-MM-dd\" format.\r\n   * @return {Date} The parsed Date object.\r\n   */\r\n  static parse(ymd: string): Date {\r\n    return new Date(ymd);\r\n  }\r\n\r\n  stringify(): string {\r\n    return AlphaYmd.format(\r\n      this.mDate, 'YMD', 'Dash');\r\n  }\r\n  /**\r\n   * Takes a Date object and returns a formatted string representation of the date.\r\n   *\r\n   * @param {Date} date - The date to be converted to string.\r\n   * @return {string} - The formatted string representation of the date.\r\n   */\r\n  static stringify(date: Date): string {\r\n    return this.format(date, 'YMD', 'Dash');\r\n  }\r\n\r\n  /**\r\n   * Formats the date in the specified format and separator.\r\n   *\r\n   * @param {string} format - The format of the date. It can be 'YMD', 'DMY', 'MDY' or 'DM.\r\n   * @param {string} sep - The separator to use. It can be 'Slash' or 'Dash'.\r\n   * @returns {string} The formatted date.\r\n   */\r\n  format(format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n         sep?: 'Slash' | 'Dash'): string {\r\n    return AlphaYmd.format(this.mDate, format, sep);\r\n  }\r\n\r\n  /**\r\n   * Formats a date into a string based on the given format and separator.\r\n   *\r\n   * @param {Date} date - The date object to be formatted.\r\n   * @param {string} [format='DMY'] - The format of the date string. Possible values are 'YMD', 'DMY', 'MDY' or 'DM'.\r\n   * @param {string} [sep='Slash'] - The separator to be used in the date string. Possible values are 'Slash' and 'Dash'.\r\n   * @returns {string} The formatted date string.\r\n   */\r\n  static format(date: Date,\r\n                format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n                sep?: 'Slash' | 'Dash'): string {\r\n    if (!format) {\r\n      format = 'DMY';\r\n    }\r\n    if (!sep) {\r\n      sep = 'Slash';\r\n    }\r\n\r\n    const d = date.getDate();\r\n    const dd = d < 10 ? `0${d}`: `${d}`;\r\n    const m = date.getMonth() + 1;\r\n    const mm = m < 10 ? `0${m}`: `${m}`;\r\n    const yyyy =  date.getFullYear();\r\n    const s = sep === 'Slash' ? '/' : '-';\r\n\r\n    switch (format) {\r\n      case 'YMD':\r\n        return `${yyyy}${s}${mm}${s}${dd}`;\r\n      case 'DMY':\r\n        return `${dd}${s}${mm}${s}${yyyy}`;\r\n      case 'MDY':\r\n        return `${mm}${s}${dd}${s}${yyyy}`;\r\n      case 'DM':\r\n        return `${dd}${s}${mm}`;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Formats the range of two dates into a string.\r\n   *\r\n   * @param {Date} startDate - The start date of the range.\r\n   * @param {Date} endDate - The end date of the range.\r\n   * @param {string} [rangeSep] - The separator to use between the formatted dates. Default is '-'.\r\n   * @param {('YMD' | 'DMY' | 'MDY' | 'DM')} [format] - The format to use for the date. Default is 'YMD'.\r\n   * @param {('Slash' | 'Dash')} [sep] - The separator to use within the formatted date. Default is 'Slash'.\r\n   *\r\n   * @returns {string} - The formatted range string.\r\n   */\r\n  static formatRange(startDate: Date, endDate: Date,\r\n                     rangeSep?: string,\r\n                     format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n                     sep?: 'Slash' | 'Dash'): string {\r\n    const sDate = AlphaYmd.format(startDate, format, sep);\r\n    const eDate = AlphaYmd.format(endDate, format, sep);\r\n    if (!rangeSep) {\r\n      rangeSep = '-';\r\n    }\r\n    return `${sDate}${rangeSep}${eDate}`;\r\n  }\r\n\r\n  /**\r\n   * Converts the given date to a string in the format \"YYYY-MM-DD\".\r\n   *\r\n   * @param {Date} date - The date to be converted.\r\n   * @returns {Date} - The converted date in the format \"YYYY-MM-DD\".\r\n   */\r\n  static toYmd(date: Date): Date {\r\n    let dt = this.parse(this.stringify(date));\r\n    dt.setHours(0, 0, 0, 0);\r\n    return dt;\r\n  }\r\n\r\n  /**\r\n   * Checks if a given date is within a range of minimum and maximum dates.\r\n   *\r\n   * @param {Date} date - The date to check.\r\n   * @param {Date} minDate - The minimum date of the range.\r\n   * @param {Date} maxDate - The maximum date of the range.\r\n   * @returns {boolean} - True if the date is within the range, false otherwise.\r\n   */\r\n  static inYmdRange(date: Date, minDate: Date, maxDate: Date): boolean {\r\n    const ymdDte = this.toYmd(date);\r\n    const ymdMin = this.toYmd(minDate);\r\n    const ymdMax = this.toYmd(maxDate);\r\n    const dteTs = ymdDte.getTime();\r\n    const minTs = ymdMin.getTime();\r\n    const maxTs = ymdMax.getTime();\r\n    return dteTs >= minTs && dteTs <= maxTs;\r\n  }\r\n\r\n  /**\r\n   * Checks if two dates have the same year, month, and day.\r\n   *\r\n   * @param {Date} dt0 - The first date.\r\n   * @param {Date} dt1 - The second date.\r\n   * @return {boolean} Returns true if the two dates have the same year,\r\n   * month, and day; otherwise, returns false.\r\n   */\r\n  static ymdEqual(dt0: Date, dt1: Date): boolean {\r\n    return this.ymdCompare(dt0, dt1) === 0;\r\n  }\r\n\r\n  /**\r\n   * Compares two dates and returns the comparison result.\r\n   *\r\n   * @param {Date} dt0 - The first date to compare.\r\n   * @param {Date} dt1 - The second date to compare.\r\n   * @returns {number} - Returns 0 if the dates are equal, -1 if dt0 < dt1, and 1 if dt0 > dt1.\r\n   */\r\n  static ymdCompare(dt0: Date, dt1: Date): number {\r\n    const ymdDt0 = this.toYmd(dt0);\r\n    const ymdDt1 = this.toYmd(dt1);\r\n    const dt0Ts = ymdDt0.getTime();\r\n    const dt1Ts = ymdDt1.getTime();\r\n    return dt0Ts === dt1Ts ? 0 : (dt0Ts < dt1Ts ? -1 :  1);\r\n  }\r\n\r\n}\r\n","/**\r\n * Enum representing severity levels for API responses and notifications.\r\n * - Ok: Successful operation\r\n * - Debug: Debug information\r\n * - Info: Informational message\r\n * - Warning: Warning message\r\n * - Error: Error occurred\r\n * - Fatal: Fatal error occurred\r\n */\r\nexport enum AlphaSeverityEnum {\r\n  Ok,\r\n  Debug,\r\n  Info,\r\n  Warning,\r\n  Error,\r\n  Fatal\r\n}\r\n\r\n/**\r\n * Utility class for mapping AlphaSeverityEnum values to codes and vice versa.\r\n * Provides static methods for code conversion and value lookup.\r\n */\r\nexport class AlphaEnumSeverity {\r\n  private static readonly Ok = 'O';\r\n  private static readonly Debug = 'D';\r\n  private static readonly Info = 'I';\r\n  private static readonly Warning = 'W';\r\n  private static readonly Error = 'E';\r\n  private static readonly Fatal = 'F';\r\n\r\n  /**\r\n   * Gets the code string for a given AlphaSeverityEnum value.\r\n   * @param value - The severity enum value.\r\n   * @returns The corresponding code string.\r\n   * @throws RangeError if the value is invalid.\r\n   */\r\n  static getCode (value: AlphaSeverityEnum): string {\r\n    switch (value) {\r\n      case AlphaSeverityEnum.Ok:\r\n        return AlphaEnumSeverity.Ok;\r\n      case AlphaSeverityEnum.Debug:\r\n        return AlphaEnumSeverity.Debug;\r\n      case AlphaSeverityEnum.Info:\r\n        return AlphaEnumSeverity.Info;\r\n      case AlphaSeverityEnum.Warning:\r\n        return AlphaEnumSeverity.Warning;\r\n      case AlphaSeverityEnum.Error:\r\n        return AlphaEnumSeverity.Error;\r\n      case AlphaSeverityEnum.Fatal:\r\n        return AlphaEnumSeverity.Fatal;\r\n      default:\r\n        throw new RangeError ('invalid severityEnum value ' + value);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Gets the AlphaSeverityEnum value for a given code string.\r\n   * @param code - The code string.\r\n   * @returns The corresponding AlphaSeverityEnum value.\r\n   * @throws RangeError if the code is invalid.\r\n   */\r\n  static getValue (code: string): AlphaSeverityEnum {\r\n    switch (code) {\r\n      case AlphaEnumSeverity.Ok:\r\n        return AlphaSeverityEnum.Ok;\r\n      case AlphaEnumSeverity.Debug:\r\n        return AlphaSeverityEnum.Debug;\r\n      case AlphaEnumSeverity.Info:\r\n        return AlphaSeverityEnum.Info;\r\n      case AlphaEnumSeverity.Warning:\r\n        return AlphaSeverityEnum.Warning;\r\n      case AlphaEnumSeverity.Error:\r\n        return AlphaSeverityEnum.Error;\r\n      case AlphaEnumSeverity.Fatal:\r\n        return AlphaSeverityEnum.Fatal;\r\n      default:\r\n        throw new RangeError ('invalid severityEnum code ' + code);\r\n    }\r\n  }\r\n}\r\n","/**\r\n * Enum representing mutation types for API operations.\r\n * - None: No mutation\r\n * - Create: Create operation\r\n * - Update: Update operation\r\n * - Deactivate: Deactivate operation\r\n */\r\nexport enum AlphaMutationEnum {\r\n  None,\r\n  Create,\r\n  Update,\r\n  Deactivate\r\n}\r\n\r\n/**\r\n * Utility class for mapping AlphaMutationEnum values to codes and names, and vice versa.\r\n * Provides static methods for code conversion, name retrieval, and value lookup.\r\n */\r\nexport class AlphaEnumMutation {\r\n  private static readonly None = 'N';\r\n  private static readonly Create = 'C';\r\n  private static readonly Update = 'U';\r\n  private static readonly Deactivate = 'D';\r\n\r\n  /**\r\n   * Gets the code string for a given AlphaMutationEnum value.\r\n   * @param value - The mutation enum value.\r\n   * @returns The corresponding code string.\r\n   * @throws RangeError if the value is invalid.\r\n   */\r\n  static getCode(value: AlphaMutationEnum): string {\r\n    switch (value) {\r\n      case AlphaMutationEnum.None:\r\n        return AlphaEnumMutation.None;\r\n      case AlphaMutationEnum.Create:\r\n        return AlphaEnumMutation.Create;\r\n      case AlphaMutationEnum.Update:\r\n        return AlphaEnumMutation.Update;\r\n      case AlphaMutationEnum.Deactivate:\r\n        return AlphaEnumMutation.Deactivate;\r\n      default:\r\n        throw new RangeError('invalid mutationEnum value ' + value);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Gets the display name for a given AlphaMutationEnum value.\r\n   * @param value - The mutation enum value.\r\n   * @returns The corresponding display name, or empty string for None.\r\n   * @throws RangeError if the value is invalid.\r\n   */\r\n  static getName(value: AlphaMutationEnum): string {\r\n    switch (value) {\r\n      case AlphaMutationEnum.None:\r\n        return '';\r\n      case AlphaMutationEnum.Create:\r\n        return 'Create';\r\n      case AlphaMutationEnum.Update:\r\n        return 'Update';\r\n      case AlphaMutationEnum.Deactivate:\r\n        return 'Deactivate';\r\n      default:\r\n        throw new RangeError('invalid mutationEnum value ' + value);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Gets the AlphaMutationEnum value for a given code string.\r\n   * @param code - The code string.\r\n   * @returns The corresponding AlphaMutationEnum value.\r\n   * @throws RangeError if the code is invalid.\r\n   */\r\n  static getValue(code: string): AlphaMutationEnum {\r\n    switch (code) {\r\n      case AlphaEnumMutation.None:\r\n        return AlphaMutationEnum.None;\r\n      case AlphaEnumMutation.Create:\r\n        return AlphaMutationEnum.Create;\r\n      case AlphaEnumMutation.Update:\r\n        return AlphaMutationEnum.Update;\r\n      case AlphaEnumMutation.Deactivate:\r\n        return AlphaMutationEnum.Deactivate;\r\n      default:\r\n        throw new RangeError('invalid mutationEnum code ' + code);\r\n    }\r\n  }\r\n}\r\n","import {AlphaEnumSeverity, AlphaSeverityEnum} from \"./alpha-severity-enum\";\r\n\r\n/**\r\n * Data structure for a notification in an HTTP result DSO.\r\n * Contains a message and a severity code as string.\r\n */\r\nexport interface DsoAlphaHttpResultNotification {\r\n  message: string;\r\n  severityCode: string;\r\n}\r\n\r\n/**\r\n * Interface for a notification in an HTTP result.\r\n * Contains a message and a typed severity enum value.\r\n */\r\nexport interface IAlphaHttpResultNotification {\r\n  severity: AlphaSeverityEnum;\r\n  message: string;\r\n}\r\n\r\n/**\r\n * Represents a notification in an HTTP result, with a message and severity.\r\n * Provides a factory method for creation from DSO objects.\r\n */\r\nexport class AlphaHttpResultNotification implements IAlphaHttpResultNotification {\r\n  message: string;\r\n  severity: AlphaSeverityEnum;\r\n\r\n  /**\r\n   * Constructs an AlphaHttpResultNotification instance.\r\n   * @param item - The notification item with message and severity.\r\n   */\r\n  private constructor(item: IAlphaHttpResultNotification) {\r\n    this.message = item.message;\r\n    this.severity = item.severity;\r\n  }\r\n\r\n  /**\r\n   * Factory method to create an AlphaHttpResultNotification from a DSO object.\r\n   * Converts severityCode to AlphaSeverityEnum.\r\n   * @param dso - The DSO notification object to convert.\r\n   * @returns AlphaHttpResultNotification instance.\r\n   */\r\n  static factorFromDso(dso: DsoAlphaHttpResultNotification): IAlphaHttpResultNotification {\r\n    const item = {\r\n      message: dso.message,\r\n      severity: AlphaEnumSeverity.getValue(dso.severityCode)\r\n    };\r\n    return new AlphaHttpResultNotification(item);\r\n  }\r\n\r\n}\r\n","import {AlphaEnumSeverity, AlphaSeverityEnum} from \"./alpha-severity-enum\";\r\nimport {AlphaEnumMutation, AlphaMutationEnum} from \"./alpha-mutation-enum\";\r\nimport {AlphaHttpResultNotification} from \"./alpha-http-result-notification\";\r\n\r\n// INTERFACES\r\n/**\r\n * Data structure for a base HTTP result from the API.\r\n * Contains status, mutation, notifications, and pagination info.\r\n */\r\nexport interface IAlphaHttpResultDso {\r\n  statusCode: string,\r\n  mutationCode: string,\r\n  notifications: any[],\r\n  hasMoreResults: boolean\r\n}\r\n\r\n/**\r\n * Data structure for an HTTP result containing a single data object.\r\n * Extends IAlphaHttpResultDso with a data property.\r\n */\r\nexport interface IAlphaHttpObjectResultDso\r\n  extends IAlphaHttpResultDso {\r\n  data: any\r\n}\r\n\r\n/**\r\n * Data structure for an HTTP result containing a list of data objects.\r\n * Extends IAlphaHttpResultDso with a data array property.\r\n */\r\nexport interface IAlphaHttpListResultDso\r\n  extends IAlphaHttpResultDso {\r\n  data: any[]\r\n}\r\n\r\n// CONCRETES\r\n/**\r\n * Represents a generic HTTP result from the API, including status, mutation, notifications, and pagination info.\r\n * Provides static methods for type checking and factory creation from DSO objects.\r\n */\r\nexport class AlphaHttpResult {\r\n  status: AlphaSeverityEnum;\r\n  mutation: AlphaMutationEnum;\r\n  notifications: AlphaHttpResultNotification[];\r\n  hasMoreResults: boolean;\r\n\r\n  /**\r\n   * Indicates if the result is a failure (Error or Fatal severity).\r\n   */\r\n  get failure(): boolean {\r\n    return this.status === AlphaSeverityEnum.Error\r\n        || this.status === AlphaSeverityEnum.Fatal;\r\n  }\r\n\r\n  /**\r\n   * Indicates if the result is a success (not Error or Fatal severity).\r\n   */\r\n  get success(): boolean {\r\n    return !this.failure;\r\n  }\r\n\r\n  /**\r\n   * Concatenates all notification messages into a single string.\r\n   */\r\n  get message(): string {\r\n    return this.notifications\r\n      .map(n => n.message)\r\n      .join(\", \");\r\n  }\r\n\r\n  /**\r\n   * Constructs an AlphaHttpResult instance.\r\n   * @param status - Severity status of the result.\r\n   * @param mutation - Mutation code of the result.\r\n   * @param notifications - List of notifications.\r\n   * @param hasMoreResults - Indicates if more results are available for pagination.\r\n   */\r\n  protected constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean) {\r\n    this.status = status;\r\n    this.mutation = mutation;\r\n    this.notifications = notifications;\r\n    this.hasMoreResults = hasMoreResults;\r\n  }\r\n\r\n  /**\r\n   * Factory method to create an AlphaHttpResult from a DSO object.\r\n   * @param dso - The data source object to convert.\r\n   * @returns AlphaHttpResult instance.\r\n   */\r\n  static factorFromDso(dso:IAlphaHttpResultDso): AlphaHttpResult {\r\n    return new AlphaHttpResult(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults);\r\n  }\r\n\r\n  /**\r\n   * Checks if the given object matches the base result structure.\r\n   * @param dso - The object to check.\r\n   * @returns True if the object is a base result, false otherwise.\r\n   */\r\n  static isBaseResult(dso: any): boolean {\r\n    if (dso == null) return false;\r\n    const isObject = typeof dso === 'object';\r\n    if (!isObject) return false;\r\n    const hasStatusCode ='statusCode' in dso && typeof dso.statusCode === 'string';\r\n    const hasMutationCode = 'mutationCode' in dso && typeof dso.mutationCode === 'string';\r\n    const hasHasMoreResult ='hasMoreResults' in dso && typeof dso.hasMoreResults === 'boolean';\r\n    const hasNotifications = 'notifications' in dso && Array.isArray(dso.notifications);\r\n    return hasStatusCode\r\n      && hasMutationCode\r\n      && hasHasMoreResult\r\n      && hasNotifications;\r\n  }\r\n\r\n  /**\r\n   * Checks if the given object matches the object result structure (single data object).\r\n   * @param dso - The object to check.\r\n   * @returns True if the object is an object result, false otherwise.\r\n   */\r\n  static isObjectResult(dso: any): boolean {\r\n    return AlphaHttpResult.isBaseResult(dso)\r\n    && 'data' in dso && !Array.isArray(dso.data);\r\n  }\r\n\r\n  /**\r\n   * Checks if the given object matches the list result structure (data array).\r\n   * @param dso - The object to check.\r\n   * @returns True if the object is a list result, false otherwise.\r\n   */\r\n  static isListResult(dso: any): boolean {\r\n    return AlphaHttpResult.isBaseResult(dso)\r\n      && 'data' in dso && Array.isArray(dso.data);\r\n  }\r\n\r\n}\r\n\r\n/**\r\n * Represents an HTTP result containing a single data object.\r\n * Extends AlphaHttpResult and adds a typed data property.\r\n * Provides a factory method for creation from DSO objects.\r\n */\r\nexport class AlphaHttpObjectResult<T>\r\n  extends AlphaHttpResult {\r\n\r\n  data: T;\r\n\r\n  /**\r\n   * Constructs an AlphaHttpObjectResult instance.\r\n   * @param status - Severity status of the result.\r\n   * @param mutation - Mutation code of the result.\r\n   * @param notifications - List of notifications.\r\n   * @param hasMoreResults - Indicates if more results are available for pagination.\r\n   * @param data - The single data object.\r\n   */\r\n  private constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean,\r\n    data: T) {\r\n    super(status, mutation, notifications, hasMoreResults);\r\n    this.data = data;\r\n  }\r\n\r\n  /**\r\n   * Factory method to create an AlphaHttpObjectResult from a DSO object.\r\n   * @param dso - The data source object to convert.\r\n   * @param factor - Optional function to transform the data property.\r\n   * @returns AlphaHttpObjectResult instance.\r\n   */\r\n  static override factorFromDso<T>(\r\n    dso: IAlphaHttpObjectResultDso,\r\n    factor?: (dsoData: any) => T): AlphaHttpObjectResult<T>{\r\n\r\n    const data: T = dso.data == null\r\n      ? null\r\n      : factor ? factor(dso.data) : dso.data;\r\n    return new AlphaHttpObjectResult<T>(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults,\r\n      data);\r\n  }\r\n\r\n}\r\n\r\n/**\r\n * Represents an HTTP result containing a list of data objects.\r\n * Extends AlphaHttpResult and adds a typed data array property.\r\n * Provides a factory method for creation from DSO objects.\r\n */\r\nexport class AlphaHttpListResult<T> extends AlphaHttpResult {\r\n  data: T[];\r\n\r\n  /**\r\n   * Constructs an AlphaHttpListResult instance.\r\n   * @param status - Severity status of the result.\r\n   * @param mutation - Mutation code of the result.\r\n   * @param notifications - List of notifications.\r\n   * @param hasMoreResults - Indicates if more results are available for pagination.\r\n   * @param data - The array of data objects.\r\n   */\r\n  constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean,\r\n    data: T[]) {\r\n    super(status, mutation, notifications, hasMoreResults);\r\n    this.data = data;\r\n  }\r\n\r\n  /**\r\n   * Factory method to create an AlphaHttpListResult from a DSO object.\r\n   * @param dso - The data source object to convert.\r\n   * @param factor - Optional function to transform each item in the data array.\r\n   * @returns AlphaHttpListResult instance.\r\n   */\r\n  static override factorFromDso<T>(\r\n    dso: IAlphaHttpListResultDso,\r\n    factor?: (dsoData: any) => T): AlphaHttpListResult<T> {\r\n\r\n    const dsoList = dso.data;\r\n    const data: T[] = dsoList.map(\r\n      (dsoListItem: any) => factor\r\n        ? factor(dsoListItem)\r\n        : dsoListItem);\r\n    return new AlphaHttpListResult<T>(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults,\r\n      data);\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subscriber, of, mergeMap, catchError, throwError} from \"rxjs\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\nimport {AlphaHttpObjectResult, IAlphaHttpObjectResultDso} from \"../http/alpha-http-result\";\r\n\r\nclass UsoChunkUpload {\r\n  dataChunk: string;\r\n  uploadId: string | undefined;\r\n\r\n  constructor(\r\n    dataChunk: string,\r\n    uploadId?: string) {\r\n    this.dataChunk = dataChunk;\r\n    this.uploadId = uploadId;\r\n  }\r\n}\r\n\r\n/**\r\n * Service for chunked file uploads and upload management.\r\n * Handles initialization, chunked uploads, progress notification, and error logging.\r\n * Designed for use with Angular HttpClient and RxJS.\r\n */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaUploadApiService{\r\n\r\n  private mHttp: HttpClient | undefined;\r\n  private mContext = \"AlphaUploadApiService\";\r\n  private mChunkSize = 3000000; // 3 Mb\r\n  private mAuthorize!: (httpRequest: Observable<any>) => Observable<any>;\r\n  private mPostErrorLog!: (context: string, method: string, error: string) => any;\r\n  private mUploadUrl!: string;\r\n  private mDeleteUploadUrl!: string;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  /**\r\n   * Initializes the upload service with required dependencies and configuration.\r\n   *\r\n   * @param httpClient - Angular HttpClient instance for HTTP requests.\r\n   * @param uploadUrl - The endpoint URL for file uploads.\r\n   * @param deleteUploadUrl - The endpoint URL for deleting uploads.\r\n   * @param authorize - Function to authorize HTTP requests.\r\n   * @param postErrorLog - Function to log errors.\r\n   * @param chunkSize - Optional chunk size in bytes for uploads (default: 3MB).\r\n   */\r\n  init(\r\n    httpClient: HttpClient,\r\n    uploadUrl: string,\r\n    deleteUploadUrl: string,\r\n    authorize: (httpRequest: Observable<any>) => Observable<any>,\r\n    postErrorLog: (context: string, method: string, error: string) => any,\r\n    chunkSize?: number): void {\r\n    this.mHttp = httpClient;\r\n    this.mUploadUrl = uploadUrl;\r\n    this.mDeleteUploadUrl = deleteUploadUrl;\r\n    this.mAuthorize = authorize;\r\n    this.mPostErrorLog = postErrorLog;\r\n    if (chunkSize) {\r\n      this.mChunkSize = chunkSize;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Uploads data to the configured upload URL in chunks.\r\n   *\r\n   * @param data - The data object to be uploaded (serializable to JSON).\r\n   * @param notifyProgress - Callback to notify upload progress (percentage).\r\n   * @returns Observable emitting the upload entity ID (uuid) as a string.\r\n   * @throws Error if the service is not initialized.\r\n   */\r\n  upload(\r\n    data: any,\r\n    notifyProgress: (progress: number) => any): Observable<string> {\r\n    if (!this.mHttp){\r\n      throw new Error('Service is not initialized');\r\n    }\r\n    return new Observable(\r\n      (subscriber: Subscriber<string>) => {\r\n        const chunks: string[] = [];\r\n        const json = JSON.stringify(data);\r\n        const len = json.length;\r\n        for (let pos = 0; pos < len; pos += this.mChunkSize) {\r\n          const chunk = json.substring(pos, pos + this.mChunkSize);\r\n          chunks.push(chunk);\r\n        }\r\n        this._chainChunk(chunks, 0, notifyProgress)\r\n          .subscribe({\r\n            next: res => subscriber.next(res),\r\n            error: error => subscriber.error(error)\r\n          });\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Deletes an upload by its ID.\r\n   *\r\n   * @param uploadId - The ID of the upload to delete.\r\n   * @returns Observable resolving with the server response or emitting an HttpErrorResponse on error.\r\n   * @throws Error if the service is not initialized.\r\n   */\r\n  deleteUpload(\r\n    uploadId: string): Observable<any> {\r\n    const pId = encodeURIComponent(uploadId);\r\n    const url = this.mDeleteUploadUrl\r\n      + `?uploadId=${pId}`;\r\n\r\n    if (!this.mHttp){\r\n      throw new Error('Service is not initialized');\r\n    }\r\n\r\n    const call = this.mHttp.get<any>(url)\r\n      .pipe(\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.mPostErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.mAuthorize(call);\r\n  }\r\n\r\n  private _chainChunk(\r\n    chunks: string[],\r\n    chunkIndex: number,\r\n    notifyProgress: (progress: number) => any,\r\n    uploadId?: string): Observable<string> {\r\n    const len = chunks.length;\r\n    let progress = 100 * (chunkIndex + 1) / len;\r\n    progress = Math.ceil(progress);\r\n    notifyProgress(progress);\r\n    return this._uploadChunk(chunks[chunkIndex], uploadId)\r\n      .pipe(\r\n        mergeMap((dso: IAlphaHttpObjectResultDso | string) => {\r\n          const isObjectResult = AlphaHttpObjectResult.isObjectResult(dso);\r\n          let id: string;\r\n          if (isObjectResult){\r\n            id = AlphaHttpObjectResult.factorFromDso<string>(\r\n              dso as IAlphaHttpObjectResultDso).data\r\n          } else {\r\n            id = dso as string;\r\n          }\r\n          if (chunkIndex === len - 1) {\r\n            return of(id);\r\n          } else {\r\n            uploadId = id;\r\n            return this._chainChunk(\r\n              chunks, chunkIndex + 1, notifyProgress, id);\r\n          }\r\n        }));\r\n  }\r\n\r\n  private _uploadChunk(\r\n    dataChunk: string,\r\n    uploadId?: string): Observable<IAlphaHttpObjectResultDso | string> {\r\n    const body = new UsoChunkUpload(dataChunk, uploadId);\r\n    const call =\r\n      this.mHttp!.post<string>(this.mUploadUrl, body)\r\n        .pipe(\r\n          catchError((error: HttpErrorResponse) => {\r\n            this.mPostErrorLog(\r\n              this.mContext, this.mUploadUrl, JSON.stringify(error));\r\n            return throwError(() => error);\r\n          }));\r\n    return this.mAuthorize(call);\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {catchError, map, Observable, of, throwError} from \"rxjs\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\nimport {AlphaHttpObjectResult} from \"../http/alpha-http-result\";\r\n\r\n/**\r\n * Service for retrieving application version information from a remote endpoint.\r\n * Supports custom version retrieval logic and error logging.\r\n * Designed for use with Angular HttpClient and RxJS.\r\n */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaVersionApiService {\r\n\r\n  private mHttp: HttpClient | undefined;\r\n  private readonly mContext = \"AlphaVersionApiService\";\r\n  private mUrl: string | undefined;\r\n  private _getVersion = this.getVersionBuiltIn;\r\n  private postErrorLog: (context: string, method: string, error: string) => any =\r\n    () => {\r\n    };\r\n\r\n  /**\r\n   * Initializes the service with required dependencies and configuration.\r\n   *\r\n   * @param httpClient - Angular HttpClient instance for HTTP requests.\r\n   * @param getVersionUrl - The endpoint URL to retrieve version information.\r\n   * @param postErrorLog - Function to log errors (context, method, error).\r\n   */\r\n  init(\r\n    httpClient: HttpClient,\r\n    getVersionUrl: string,\r\n    postErrorLog: (context: string, method: string, error: string) => any):void {\r\n    this.mHttp = httpClient;\r\n    this.mUrl = getVersionUrl;\r\n    this.postErrorLog = postErrorLog;\r\n  }\r\n\r\n  /** Inject your own getVersion method  */\r\n  /**\r\n   * Injects a custom getVersion implementation.\r\n   *\r\n   * @param getVersion - Function returning an Observable emitting the version string.\r\n   */\r\n  useGetVersion(getVersion: () => Observable<string>): void {\r\n    this._getVersion = getVersion;\r\n  }\r\n\r\n  /**\r\n   * Retrieves the version number using the configured logic.\r\n   * Emits the version string, or null/empty string if not available.\r\n   *\r\n   * @returns Observable emitting the version string or null.\r\n   */\r\n  getVersion(): Observable<string | null> {\r\n    return this._getVersion()\r\n  }\r\n\r\n  /**\r\n   * Default implementation for retrieving the version from the configured URL.\r\n   * Emits the version string or an empty string if not initialized.\r\n   * Logs errors using the provided error logger.\r\n   *\r\n   * @returns Observable emitting the version string or an empty string.\r\n   */\r\n  private getVersionBuiltIn(): Observable<string> {\r\n    if (!this.mUrl || this.mHttp === undefined) {\r\n      return of('');\r\n    }\r\n    return this.mHttp.get<any>(this.mUrl)\r\n      .pipe(\r\n        map(dso =>\r\n          AlphaHttpObjectResult.isObjectResult(dso)\r\n            ? AlphaHttpObjectResult\r\n              .factorFromDso<string>(dso).data\r\n            : dso as string),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.postErrorLog(this.mContext, this.mUrl!, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaEmsService {\r\n\r\n  private _httpClient: HttpClient | undefined;\r\n  /**\r\n   * Returns the instance of HttpClient.\r\n   * @throws {Error} - Error message \"AlphaEmsService is not initialized\"\r\n   * @returns {HttpClient} - The instance of HttpClient\r\n   */\r\n  get httpClient(): HttpClient {\r\n    if (!this._httpClient) {\r\n      throw new Error('AlphaEmsService is not initialized');\r\n    }\r\n    return this._httpClient;\r\n  }\r\n  authorize: (httpRequest: Observable<any>) => Observable<any> =\r\n    (httpRequest: Observable<any>) => httpRequest;\r\n  postErrorLog: (context: string, method: string, error: string) => any =\r\n    () => {\r\n    };\r\n  publish: (payload: any, channel: string) => any =\r\n    () => {\r\n    };\r\n\r\n  init(\r\n    httpClient: HttpClient,\r\n    authorize?: (httpRequest: Observable<any>) => Observable<any>,\r\n    postErrorLog?: (context: string, method: string, error: string) => any,\r\n    publish?: (payload: any, channel: string) => any): void {\r\n\r\n    this._httpClient = httpClient;\r\n\r\n    if (authorize) {\r\n      this.authorize = authorize;\r\n    }\r\n    if (postErrorLog) {\r\n      this.postErrorLog = postErrorLog;\r\n    }\r\n    if (publish) {\r\n      this.publish = publish;\r\n    }\r\n  }\r\n}\r\n","export class AlphaEmsUsoOptionSet {\r\n  keys: string[];\r\n  pairs: { key: string, value: string }[];\r\n  constructor(\r\n    keys: string[],\r\n    options?: Map<string, string>) {\r\n    this.keys = keys;\r\n    this.pairs = [];\r\n    if (options) {\r\n      options.forEach(\r\n        (value: string, key: string) => {\r\n          this.pairs.push({ key: key, value: value });\r\n        });\r\n    }\r\n  }\r\n}\r\n","export interface IAlphaEmsEditContainer<TB, TE> {\r\n  ei: TE;\r\n  body: TB | undefined;\r\n}\r\n\r\nexport class AlphaEmsEditContainer<TB, TE>\r\n  implements IAlphaEmsEditContainer<TB, TE> {\r\n  ei: TE;\r\n  body: TB | undefined;\r\n\r\n  constructor(ei: TE, body?: TB) {\r\n    this.ei = ei;\r\n    this.body = body;\r\n  }\r\n\r\n  static factorFromDso<TB, TE>(\r\n    dso: any,\r\n    factorEi: (eiDso: any) => TE,\r\n    factorBody: (bodyDso: any) => TB) {\r\n    const ei = factorEi(dso.ei);\r\n    const body = dso.body ? factorBody(dso.body) : undefined;\r\n    return new AlphaEmsEditContainer(ei, body);\r\n  }\r\n\r\n}\r\n","\r\nexport interface IAlphaEmsBaseApiEvent<TB> {\r\n  action: 'create' | 'update' | 'delete';\r\n  body: TB | null;\r\n  keys: string[];\r\n}\r\n\r\nexport class AlphaEmsBaseApiEvent<TB>\r\n  implements IAlphaEmsBaseApiEvent<TB> {\r\n  action: 'create' | 'update' | 'delete';\r\n  body: TB | null;\r\n  keys: string[];\r\n\r\n  constructor(\r\n    action: 'create' | 'update' | 'delete',\r\n    body: TB | null,\r\n    keys?: string[]) {\r\n    this.action = action;\r\n    this.body = body;\r\n    this.keys = keys ? keys : [];\r\n  }\r\n}\r\n","import {HttpErrorResponse} from \"@angular/common/http\";\r\nimport {catchError, map, Observable, throwError} from \"rxjs\";\r\nimport {AlphaEmsUsoOptionSet} from \"./alpha-ems-uso-option-set\";\r\nimport {AlphaEmsEditContainer, IAlphaEmsEditContainer} from \"./alpha-ems-edit-container\";\r\nimport {AlphaEmsBaseApiEvent} from \"./alpha-ems-base-api-event\";\r\nimport {AlphaEmsService} from \"./alpha-ems.service\";\r\nimport {AlphaHttpListResult, AlphaHttpObjectResult} from \"../http/alpha-http-result\";\r\n\r\nexport abstract class AlphaEmsBaseApi<TH, TB, TE> {\r\n\r\n  ems: AlphaEmsService;\r\n\r\n  protected constructor(\r\n    ems: AlphaEmsService,\r\n    protected mContext: string,\r\n    protected mBaseUrl: string,\r\n    private factorHead: (dso: any) => TH,\r\n    private factorBody: (dso: any) => TB,\r\n    private factorEi: (dso: any) => TE) {\r\n    this.ems = ems;\r\n  }\r\n\r\n  list(authorize: boolean, skip: number, take: number,\r\n       options?: Map<string, string>,\r\n       methodName?: string): Observable<TH[]> {\r\n    if (!options) {\r\n      options = new Map<string, string>();\r\n    }\r\n    options.set('skip', skip.toString());\r\n    options.set('take', take.toString());\r\n    const body =\r\n      new AlphaEmsUsoOptionSet([], options);\r\n    if (!methodName) {\r\n      methodName = 'list';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient\r\n      .post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpListResult\r\n            .factorFromDso<TH>(\r\n              hRes,\r\n              (dsoItem: any) =>\r\n                this.factorHead(dsoItem)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return authorize ? this.ems.authorize(call) : call;\r\n  }\r\n\r\n  getBody(authorize: boolean, keys: string[],\r\n          options?: Map<string, string>,\r\n          methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'body';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpObjectResult\r\n            .factorFromDso<TB>(\r\n              hRes,\r\n              dso => this.factorBody(dso)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return authorize ? this.ems.authorize(call) : call;\r\n  }\r\n\r\n  getBodyFe(keys: string[],\r\n            options?: Map<string, string>,\r\n            methodName?: string): Observable<IAlphaEmsEditContainer<TB, TE>> {\r\n    if (!methodName) {\r\n      methodName = 'bodyFe';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            return AlphaHttpObjectResult\r\n              .factorFromDso<IAlphaEmsEditContainer<TB, TE>>(\r\n                hRes,\r\n                dso => AlphaEmsEditContainer.factorFromDso(\r\n                  dso,\r\n                  this.factorEi,\r\n                  this.factorBody)).data;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  getEi(options?: Map<string, string>,\r\n        methodName?: string): Observable<TE> {\r\n    if (!options) {\r\n      options = new Map<string, string>();\r\n    }\r\n    const body = new AlphaEmsUsoOptionSet([], options);\r\n    if (!methodName) {\r\n      methodName = 'ei';\r\n    }\r\n    let url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpObjectResult\r\n            .factorFromDso<TE>(\r\n              hRes,\r\n              dso => this.factorEi(dso)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  baseCreate(body: any, methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'create';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = AlphaHttpObjectResult\r\n              .factorFromDso(\r\n                hRes,\r\n                dso => this.factorBody(dso)).data;\r\n            const event = new AlphaEmsBaseApiEvent('create', body);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  baseUpdate(body: any, methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'update';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = AlphaHttpObjectResult\r\n              .factorFromDso(\r\n                hRes,\r\n                dso => this.factorBody(dso)).data;\r\n            const event = new AlphaEmsBaseApiEvent<TB>('update', body);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  /** returns undefined on physical delete\r\n   * or the updated body in case of deactivation */\r\n  delete(keys: string[],\r\n         options?: Map<string, string>,\r\n         methodName?: string): Observable<TB | undefined> {\r\n    if(!methodName) {\r\n      methodName = 'delete';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = hRes.data\r\n              ? AlphaHttpObjectResult.factorFromDso(\r\n                hRes, dso => this.factorBody(dso)).data\r\n              : undefined;\r\n            const event = body\r\n              ? new AlphaEmsBaseApiEvent<TB>('update', body)\r\n              : new AlphaEmsBaseApiEvent('delete', null, keys);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n}\r\n","import {Observable} from \"rxjs\";\r\nimport {AlphaEmsBaseApi} from \"./alpha-ems-base-api\";\r\nimport {AlphaEmsFormInput} from \"./alpha-ems-form-input\";\r\n\r\ninterface IAlphaEmsFormModel<TH, TB, TE> {\r\n  api: AlphaEmsBaseApi<TH, TB, TE>;\r\n  fi: AlphaEmsFormInput<TB>;\r\n  body: TB | undefined;\r\n  ei: TE | undefined;\r\n  invalid: boolean;\r\n  populateForRead(body: TB): void;\r\n  populateForNew(ei: TE): void;\r\n  populateForEdit(ei: TE, body: TB): void;\r\n  createEntity(): Observable<TB>;\r\n  updateEntity(): Observable<TB>;\r\n}\r\n\r\nexport abstract class AlphaEmsBaseFormModel<TH, TB, TE>\r\n  implements IAlphaEmsFormModel<TH, TB, TE> {\r\n\r\n    api!: AlphaEmsBaseApi<TH, TB, TE>;\r\n    fi!: AlphaEmsFormInput<TB>;\r\n    body: TB | undefined;\r\n    ei: TE | undefined;\r\n\r\n    abstract invalid: boolean;\r\n    abstract populateForRead(body: TB): void ;\r\n    abstract populateForNew(ei: TE): void;\r\n    abstract populateForEdit(ei: TE, body: TB): void ;\r\n    abstract createEntity(): Observable<TB>;\r\n    abstract updateEntity(): Observable<TB> ;\r\n}\r\n","export class AlphaEmsFormResult<TB> {\r\n  action: 'C' | 'R' | 'U' | 'D';\r\n  data: TB | undefined;\r\n\r\n  constructor(\r\n    action: 'C' | 'R' | 'U' | 'D',\r\n    data?: TB) {\r\n    this.action = action;\r\n    this.data = data;\r\n  }\r\n}\r\n","import {AlphaEmsBaseApi} from \"./alpha-ems-base-api\";\r\nimport {AlphaEmsFormInput} from \"./alpha-ems-form-input\";\r\nimport {Observable, Subscriber} from \"rxjs\";\r\nimport {AlphaEmsFormResult} from \"./alpha-ems-form-result\";\r\nimport {AlphaEmsBaseFormModel} from \"./alpha-ems-base-form-model\";\r\n\r\nexport abstract class AlphaEmsBaseComponent<TH, TB, TE> {\r\n  busy = false;\r\n\r\n  protected verbose = false;\r\n  protected api: AlphaEmsBaseApi<TH, TB, TE>;\r\n  private _fi!: AlphaEmsFormInput<TB>;\r\n  private allowAnonymousRead = true;\r\n\r\n  /**\r\n   *\r\n   * @param api the genApi service providing the necessary methods\r\n   * @param mFactorForm a factory method that build the form model\r\n   * @param allowAnonymousRead whether or not read is allowed for anonymous (default is true)\r\n   */\r\n  protected constructor(\r\n    api: AlphaEmsBaseApi<TH, TB, TE>,\r\n    private mFactorForm: (fi: AlphaEmsFormInput<TB>)  =>\r\n      AlphaEmsBaseFormModel<TH, TB, TE>,\r\n    allowAnonymousRead?: boolean) {\r\n    this.api = api;\r\n    if (allowAnonymousRead !== undefined) {\r\n      this.allowAnonymousRead = allowAnonymousRead;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Loads the form based on the mode (read, edit or new) set in GenFormInput.\r\n   * Also sets the value fi within the form just before calling the appropriate populate method.\r\n   * @param {AlphaEmsFormInput} fi - The AlphaGenFormInput object containing the form mode and options.\r\n   * @returns {Observable} - An observable of the generic form that should be casted to the concrete form.\r\n   */\r\n  protected loadForm(fi: AlphaEmsFormInput<TB>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    this._fi = fi;\r\n    switch (fi.mode) {\r\n      case 'read':\r\n        return this.loadForRead(fi.keys!, fi.options)\r\n      case 'new':\r\n        return this.loadForNew(fi.options)\r\n      case 'edit':\r\n        return this.loadForEdit(fi.keys!, fi.options);\r\n    }\r\n  }\r\n\r\n  private loadForRead(keys: string[], options?: Map<string, string>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        if (this._fi.body !== undefined) {\r\n          const fm =\r\n            this.factorForm();\r\n          fm.populateForRead(this._fi.body);\r\n          fm.body = this._fi.body;\r\n          subscriber.next(fm);\r\n        } else {\r\n          this.busy = true;\r\n          this.api.getBody(!this.allowAnonymousRead, keys, options)\r\n            .subscribe({\r\n              next: body => {\r\n                if (this.verbose) {\r\n                  console.log(body);\r\n                }\r\n                const fm =\r\n                  this.factorForm();\r\n                fm.populateForRead(body);\r\n                fm.body = body;\r\n                this.busy = false;\r\n                subscriber.next(fm);\r\n              },\r\n              error: error => {\r\n                console.error(error);\r\n                this.busy = false;\r\n                subscriber.error(error);\r\n              }\r\n            });\r\n        }\r\n      });\r\n  }\r\n\r\n  private loadForNew(options?: Map<string, string>): Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        this.busy = true;\r\n        this.api.getEi(options)\r\n          .subscribe({\r\n            next: ei => {\r\n              if (this.verbose) {\r\n                console.log(ei);\r\n              }\r\n              const fm =\r\n                this.factorForm();\r\n              fm.populateForNew(ei);\r\n              fm.ei = ei;\r\n              this.busy = false;\r\n              subscriber.next(fm);\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              this.busy = false;\r\n              subscriber.error(error);\r\n            }\r\n          });\r\n      });\r\n\r\n  }\r\n\r\n  private loadForEdit(keys: string[], options?: Map<string, string>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        this.busy = true;\r\n        this.api.getBodyFe(keys, options)\r\n          .subscribe({\r\n            next: ec => {\r\n              if (this.verbose) {\r\n                console.log(ec);\r\n              }\r\n              const fm =\r\n                this.factorForm();\r\n              fm.populateForEdit(ec.ei, ec.body!);\r\n              fm.ei = ec.ei;\r\n              fm.body = ec.body;\r\n              this.busy = false;\r\n              subscriber.next(fm);\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              this.busy = false;\r\n              subscriber.error(error);\r\n            }\r\n          });\r\n      });\r\n  }\r\n\r\n  /** saves the form by calling fm.updateEntity or fm.createEntity and\r\n   * returns an observable with the GenFormResult<TB>.\r\n   * This method manages the busy state\r\n   */\r\n  protected save(\r\n    fm: AlphaEmsBaseFormModel<TH, TB, TE>): Observable<AlphaEmsFormResult<TB>> {\r\n\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsFormResult<TB>>) => {\r\n        let apiCall: Observable<TB>\r\n        let action: 'C' | 'U';\r\n        switch (this._fi.mode) {\r\n          case 'read':\r\n            const r = new AlphaEmsFormResult<TB>('R');\r\n            subscriber.next(r);\r\n            return;\r\n          case 'edit':\r\n            action = 'U';\r\n            apiCall = fm.updateEntity();\r\n            break;\r\n          case 'new':\r\n            action = 'C';\r\n            apiCall = fm.createEntity();\r\n            break;\r\n        }\r\n\r\n        this.busy = true;\r\n        apiCall.subscribe({\r\n          next: b => {\r\n            const res = new AlphaEmsFormResult<TB>(\r\n              action, b);\r\n            this.busy = false;\r\n            subscriber.next(res);\r\n          },\r\n          error: error => {\r\n            console.error(error);\r\n            this.busy = false;\r\n            subscriber.error(error);\r\n          }\r\n        });\r\n      });\r\n  }\r\n\r\n  protected delete(options?: Map<string, string>): Observable<AlphaEmsFormResult<TB>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsFormResult<TB>>) => {\r\n        this.busy = true;\r\n        this.api.delete(this._fi.keys!, options)\r\n          .subscribe({\r\n            next: bodyWhenSoftDeleted => {\r\n              const res = bodyWhenSoftDeleted\r\n                ? new AlphaEmsFormResult<TB>('U', bodyWhenSoftDeleted)\r\n                : new AlphaEmsFormResult<TB>('D');\r\n              subscriber.next(res);\r\n              this.busy = false;\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              subscriber.error(error);\r\n              this.busy = false;\r\n            }\r\n          });\r\n      });\r\n  }\r\n\r\n  private factorForm(): AlphaEmsBaseFormModel<TH, TB, TE> {\r\n    const fm =\r\n      this.mFactorForm(this._fi);\r\n    fm.api = this.api;\r\n    fm.fi = this._fi;\r\n    return fm;\r\n  }\r\n\r\n\r\n}\r\n","export class AlphaEmsFormInput<TB> {\r\n  mode: 'read' | 'new' | 'edit';\r\n  keys: string[] | undefined;\r\n  options: Map<string, string> | undefined;\r\n  params: any;\r\n  body: TB | undefined;\r\n\r\n  private constructor(\r\n    mode: 'read' | 'new' | 'edit',\r\n    keys?: string[],\r\n    params?: any,\r\n    options?: Map<string, string>,\r\n    body?: TB) {\r\n    this.mode = mode;\r\n    this.keys = keys;\r\n    this.params = params;\r\n    this.options = options;\r\n    this.body = body;\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaEmsFormInput for readonly mode.\r\n   *\r\n   * @param {string[]} keys - The primary keys uniquely identifying an entity. This value will be sent to the server.\r\n   * @param {*} [params] - An object that passes parameters to the UI.\r\n   * @param {Map<string, string>} [options] - An options dictionary that will be sent to the server.\r\n   * @param [body] - The body of the form input. should have type TB\r\n   * @return {AlphaEmsFormInput} - An instance of AlphaEmsFormInput.\r\n   */\r\n  static factorForRead<TB>(\r\n    keys: string[],\r\n    params?: any,\r\n    options?: Map<string, string>,\r\n    body?: TB): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput(\r\n      'read', keys, params, options, body);\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaGenFormInput for creation.\r\n   *\r\n   * @param params {any} - An object that passes params to the UI.\r\n   * @param options {Map<string, string>} - An options dictionary that will reach the server.\r\n   *\r\n   * @return {AlphaEmsFormInput} - An instance of AlphaEmsFormInput object for new form input.\r\n   */\r\n  static factorForNew<TB>(\r\n    params?: any,\r\n    options?: Map<string, string>): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput('new', [], params, options);\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaGenFormInput for edition.\r\n   *\r\n   * @param {string[]} keys - The primary keys uniquely identifying an entity. This value will reach the server.\r\n   * @param {any} params - An object that passes parameters to the UI.\r\n   * @param {Map<string, string>} options - An options dictionary that will reach the server.\r\n   * @returns {AlphaEmsFormInput} - An instance of AlphaEmsFormInput initialized for editing.\r\n   */\r\n  static factorForEdit<TB>(\r\n    keys: string[],\r\n    params?: any,\r\n    options?: Map<string, string>): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput('edit', keys, params, options);\r\n  }\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of alpha-common\r\n */\r\n\r\n// utils\r\nexport * from './lib/utils/alpha-utils';\r\nexport * from './lib/utils/alpha-window';\r\nexport * from './lib/utils/alpha-ymd';\r\n\r\n// http\r\nexport * from './lib/http/alpha-http-result';\r\nexport * from './lib/http/alpha-http-result-notification';\r\nexport * from './lib/http/alpha-mutation-enum';\r\nexport * from './lib/http/alpha-severity-enum';\r\n\r\n// api\r\nexport * from './lib/api/alpha-upload-api.service';\r\nexport * from './lib/api/alpha-version-api.service';\r\n\r\n// ems\r\nexport * from './lib/ems/alpha-ems.service';\r\nexport * from './lib/ems/alpha-ems-base-api';\r\nexport * from './lib/ems/alpha-ems-base-form-model';\r\nexport * from './lib/ems/alpha-ems-base-api-event';\r\nexport * from './lib/ems/alpha-ems-base-component';\r\nexport * from './lib/ems/alpha-ems-edit-container';\r\nexport * from './lib/ems/alpha-ems-form-input';\r\nexport * from './lib/ems/alpha-ems-form-result';\r\nexport * from './lib/ems/alpha-ems-uso-option-set';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}