File size: 5,621 Bytes
4450790
1
{"version":3,"file":"serverConfigStore-cctR8PGG.js","sources":["../../src/stores/serverConfigStore.ts"],"sourcesContent":["import { ServerConfig, ServerConfigValue } from '@/constants/serverConfig'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\n\nexport type ServerConfigWithValue<T> = ServerConfig<T> & {\n  /**\n   * Current value.\n   */\n  value: T\n  /**\n   * Initial value loaded from settings.\n   */\n  initialValue: T\n}\n\nexport const useServerConfigStore = defineStore('serverConfig', () => {\n  const serverConfigById = ref<\n    Record<string, ServerConfigWithValue<ServerConfigValue>>\n  >({})\n  const serverConfigs = computed(() => {\n    return Object.values(serverConfigById.value)\n  })\n  const modifiedConfigs = computed<ServerConfigWithValue<ServerConfigValue>[]>(\n    () => {\n      return serverConfigs.value.filter((config) => {\n        return config.initialValue !== config.value\n      })\n    }\n  )\n  const revertChanges = () => {\n    for (const config of modifiedConfigs.value) {\n      config.value = config.initialValue\n    }\n  }\n  const serverConfigsByCategory = computed<\n    Record<string, ServerConfigWithValue<ServerConfigValue>[]>\n  >(() => {\n    return serverConfigs.value.reduce(\n      (acc, config) => {\n        const category = config.category?.[0] ?? 'General'\n        acc[category] = acc[category] || []\n        acc[category].push(config)\n        return acc\n      },\n      {} as Record<string, ServerConfigWithValue<ServerConfigValue>[]>\n    )\n  })\n  const serverConfigValues = computed<Record<string, ServerConfigValue>>(() => {\n    return Object.fromEntries(\n      serverConfigs.value.map((config) => {\n        return [\n          config.id,\n          config.value === config.defaultValue ||\n          config.value === null ||\n          config.value === undefined\n            ? undefined\n            : config.value\n        ]\n      })\n    )\n  })\n  const launchArgs = computed<Record<string, string>>(() => {\n    const args: Record<\n      string,\n      Omit<ServerConfigValue, 'undefined' | 'null'>\n    > = Object.assign(\n      {},\n      ...serverConfigs.value.map((config) => {\n        // Filter out configs that have the default value or undefined | null value\n        if (\n          config.value === config.defaultValue ||\n          config.value === null ||\n          config.value === undefined\n        ) {\n          return {}\n        }\n        return config.getValue\n          ? config.getValue(config.value)\n          : { [config.id]: config.value }\n      })\n    )\n\n    // Convert true to empty string\n    // Convert number to string\n    return Object.fromEntries(\n      Object.entries(args).map(([key, value]) => {\n        if (value === true) {\n          return [key, '']\n        }\n        return [key, value.toString()]\n      })\n    ) as Record<string, string>\n  })\n  const commandLineArgs = computed<string>(() => {\n    return Object.entries(launchArgs.value)\n      .map(([key, value]) => [`--${key}`, value])\n      .flat()\n      .filter((arg: string) => arg !== '')\n      .join(' ')\n  })\n\n  function loadServerConfig(\n    configs: ServerConfig<ServerConfigValue>[],\n    values: Record<string, ServerConfigValue>\n  ) {\n    for (const config of configs) {\n      const value = values[config.id] ?? config.defaultValue\n      serverConfigById.value[config.id] = {\n        ...config,\n        value,\n        initialValue: value\n      }\n    }\n  }\n\n  return {\n    serverConfigById,\n    serverConfigs,\n    modifiedConfigs,\n    serverConfigsByCategory,\n    serverConfigValues,\n    launchArgs,\n    commandLineArgs,\n    revertChanges,\n    loadServerConfig\n  }\n})\n"],"names":[],"mappings":";;;AAea,MAAA,uBAAuB,YAAY,gBAAgB,MAAM;AAC9D,QAAA,mBAAmB,IAEvB,CAAA,CAAE;AACE,QAAA,gBAAgB,SAAS,MAAM;AAC5B,WAAA,OAAO,OAAO,iBAAiB,KAAK;AAAA,EAAA,CAC5C;AACD,QAAM,kBAAkB;AAAA,IACtB,MAAM;AACJ,aAAO,cAAc,MAAM,OAAO,CAAC,WAAW;AACrC,eAAA,OAAO,iBAAiB,OAAO;AAAA,MAAA,CACvC;AAAA,IACH;AAAA,EAAA;AAEF,QAAM,gBAAgB,6BAAM;AACf,eAAA,UAAU,gBAAgB,OAAO;AAC1C,aAAO,QAAQ,OAAO;AAAA,IACxB;AAAA,EAAA,GAHoB;AAKhB,QAAA,0BAA0B,SAE9B,MAAM;AACN,WAAO,cAAc,MAAM;AAAA,MACzB,CAAC,KAAK,WAAW;AACf,cAAM,WAAW,OAAO,WAAW,CAAC,KAAK;AACzC,YAAI,QAAQ,IAAI,IAAI,QAAQ,KAAK,CAAA;AAC7B,YAAA,QAAQ,EAAE,KAAK,MAAM;AAClB,eAAA;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IAAA;AAAA,EACH,CACD;AACK,QAAA,qBAAqB,SAA4C,MAAM;AAC3E,WAAO,OAAO;AAAA,MACZ,cAAc,MAAM,IAAI,CAAC,WAAW;AAC3B,eAAA;AAAA,UACL,OAAO;AAAA,UACP,OAAO,UAAU,OAAO,gBACxB,OAAO,UAAU,QACjB,OAAO,UAAU,SACb,SACA,OAAO;AAAA,QAAA;AAAA,MACb,CACD;AAAA,IAAA;AAAA,EACH,CACD;AACK,QAAA,aAAa,SAAiC,MAAM;AACxD,UAAM,OAGF,OAAO;AAAA,MACT,CAAC;AAAA,MACD,GAAG,cAAc,MAAM,IAAI,CAAC,WAAW;AAGnC,YAAA,OAAO,UAAU,OAAO,gBACxB,OAAO,UAAU,QACjB,OAAO,UAAU,QACjB;AACA,iBAAO;QACT;AACA,eAAO,OAAO,WACV,OAAO,SAAS,OAAO,KAAK,IAC5B,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,MAAA,CACjC;AAAA,IAAA;AAKH,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACzC,YAAI,UAAU,MAAM;AACX,iBAAA,CAAC,KAAK,EAAE;AAAA,QACjB;AACA,eAAO,CAAC,KAAK,MAAM,SAAU,CAAA;AAAA,MAAA,CAC9B;AAAA,IAAA;AAAA,EACH,CACD;AACK,QAAA,kBAAkB,SAAiB,MAAM;AACtC,WAAA,OAAO,QAAQ,WAAW,KAAK,EACnC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EACzC,KAAA,EACA,OAAO,CAAC,QAAgB,QAAQ,EAAE,EAClC,KAAK,GAAG;AAAA,EAAA,CACZ;AAEQ,WAAA,iBACP,SACA,QACA;AACA,eAAW,UAAU,SAAS;AAC5B,YAAM,QAAQ,OAAO,OAAO,EAAE,KAAK,OAAO;AACzB,uBAAA,MAAM,OAAO,EAAE,IAAI;AAAA,QAClC,GAAG;AAAA,QACH;AAAA,QACA,cAAc;AAAA,MAAA;AAAA,IAElB;AAAA,EACF;AAZS;AAcF,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ,CAAC;"}