{"version":3,"file":"options-manager.mjs","sources":["../../../src/helper/options-manager.ts"],"sourcesContent":["import type { DateTime } from 'luxon'\nimport { AbstractHelper } from './abstract-helper'\nimport type { TypeB24 } from '../types/b24'\nimport type { Result } from '../core/result'\nimport { TypeOption } from '../types/b24-helper'\nimport { Type } from '../tools/type'\nimport { Text } from '../tools/text'\n\nexport class OptionsManager extends AbstractHelper {\n  protected override _data: Map<string, any>\n  protected _type: 'app' | 'user'\n\n  // region static ////\n  static getSupportTypes(): TypeOption[] {\n    return [\n      TypeOption.NotSet,\n      TypeOption.JsonArray,\n      TypeOption.JsonObject,\n      TypeOption.FloatVal,\n      TypeOption.IntegerVal,\n      TypeOption.BoolYN,\n      TypeOption.StringVal\n    ]\n  }\n\n  static prepareArrayList(list: any): any[] {\n    if (Type.isArray(list)) {\n      return list\n    }\n\n    if (Type.isObject(list)) {\n      return Object.values(list)\n    }\n\n    return []\n  }\n\n  // endregion ////\n\n  // region Init ////\n  constructor(b24: TypeB24, type: 'app' | 'user') {\n    super(b24)\n    this._type = type\n    this._data = new Map()\n  }\n\n  get data(): Map<string, any> {\n    return this._data\n  }\n\n  reset() {\n    this.data.clear()\n  }\n\n  /**\n   * @inheritDoc\n   */\n  override async initData(data: any): Promise<void> {\n    this.reset()\n\n    if (Type.isObject(data)) {\n      for (const [key, value] of Object.entries(data)) {\n        this.data.set(key, value)\n      }\n    }\n  }\n\n  // endregion ////\n\n  // region Get ////\n  getJsonArray(key: string, defValue: any[] = []): any[] {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    let data = this.data.get(key)\n\n    try {\n      data = JSON.parse(data)\n\n      if (!Type.isArray(data) && !Type.isObject(data)) {\n        data = defValue\n      }\n    } catch (error) {\n      this.getLogger().error('Failed JSON parse', { error })\n      data = defValue\n    }\n\n    return OptionsManager.prepareArrayList(data)\n  }\n\n  getJsonObject(key: string, defValue: object = {}): object {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    let data = this.data.get(key)\n\n    try {\n      data = JSON.parse(data)\n    } catch (error) {\n      this.getLogger().error('Failed JSON parse', { error })\n      data = defValue\n    }\n\n    if (!Type.isObject(data)) {\n      data = defValue\n    }\n\n    return data\n  }\n\n  getFloat(key: string, defValue: number = 0.0): number {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    return Text.toNumber(this.data.get(key))\n  }\n\n  getInteger(key: string, defValue: number = 0): number {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    return Text.toInteger(this.data.get(key))\n  }\n\n  getBoolYN(key: string, defValue: boolean = true): boolean {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    return Text.toBoolean(this.data.get(key))\n  }\n\n  getBoolNY(key: string, defValue: boolean = false): boolean {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    return Text.toBoolean(this.data.get(key))\n  }\n\n  getString(key: string, defValue: string = ''): string {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    return this.data.get(key).toString()\n  }\n\n  getDate(key: string, defValue: null | DateTime = null): null | DateTime {\n    if (!this.data.has(key)) {\n      return defValue\n    }\n\n    try {\n      const result = Text.toDateTime(this.data.get(key).toString())\n      if (result.isValid) {\n        return result\n      } else {\n        return defValue\n      }\n    } catch {\n      return defValue\n    }\n  }\n\n  // endregion ////\n\n  // region Tools ////\n  encode(value: any): string {\n    return JSON.stringify(value)\n  }\n\n  decode(data: string, defaultValue: any): any {\n    try {\n      if (data.length > 0) {\n        return JSON.parse(data)\n      }\n\n      return defaultValue\n    } catch (error) {\n      this.getLogger().error('Failed JSON parse', { error })\n    }\n\n    return defaultValue\n  }\n\n  // endregion ////\n\n  // region Save ////\n  protected getMethodSave(): string {\n    switch (this._type) {\n      case 'app':\n        return 'app.option.set'\n      case 'user':\n        return 'user.option.set'\n    }\n  }\n\n  public async save(\n    options: any,\n    optionsPull?: {\n      moduleId: string\n      command: string\n      params: any\n    },\n    requestId?: string\n  ): Promise<Result> {\n    const calls = []\n    calls.push({\n      method: this.getMethodSave(),\n      params: {\n        options\n      }\n    })\n\n    if (Type.isObject(optionsPull)) {\n      calls.push({\n        method: 'pull.application.event.add',\n        params: {\n          COMMAND: optionsPull?.command,\n          PARAMS: optionsPull?.params,\n          MODULE_ID: optionsPull?.moduleId\n        }\n      })\n    }\n\n    return this._b24.actions.v2.batch.make({\n      calls,\n      options: {\n        isHaltOnError: true,\n        returnAjaxResult: false,\n        requestId\n      }\n    })\n  }\n\n  // endregion ////\n}\n"],"names":[],"mappings":"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"}