"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var app_config_exports = {};
__export(app_config_exports, {
  getAppConfigValue: () => import_config2.getAppConfigValue,
  loadAppConfig: () => loadAppConfig
});
module.exports = __toCommonJS(app_config_exports);
var import_lodash = __toESM(require("lodash"));
var import_pui_analytics_so = require("@elliemae/pui-analytics-so");
var import_config = require("./config.js");
var import_window = require("../window.js");
var import_config2 = require("./config.js");
const parseAppConfig = (data) => {
  const { activeEnv } = data;
  const activeEnvConfig = data.env[activeEnv] || {};
  if (data.env) delete data.env;
  (0, import_config.setAppConfig)(import_lodash.default.merge(data, activeEnvConfig));
  sessionStorage.setItem("envName", activeEnv);
  window.emui = window.emui || {};
  window.emui.appId = (0, import_config.getAppConfigValue)("appId") ?? window.emui.appId ?? "";
  (0, import_pui_analytics_so.updateBAEventParameters)({ envName: activeEnv });
};
const getUnVersionedPath = (path) => path.replace(/(\d+\.\d+)(?!.*\d+\.\d+)/, "latest");
const loadAppConfig = async (configPath = (0, import_window.getAssetPath)()) => {
  const appConfigUrl = `${configPath.replace(/\/?$/, "/")}app.config.json`;
  const unversionedConfigPath = getUnVersionedPath(configPath);
  try {
    const response = await fetch(appConfigUrl);
    if (!response.ok) {
      if (configPath !== unversionedConfigPath) {
        await loadAppConfig(unversionedConfigPath);
        return;
      }
      const message = `App Config is not found at ${appConfigUrl}`;
      throw new Error(message);
    }
    const appConfig = await response.json();
    parseAppConfig(appConfig);
  } catch (ex) {
    if (configPath !== unversionedConfigPath) {
      await loadAppConfig(unversionedConfigPath);
      return;
    }
    if (ex?.message?.includes(`Unexpected token`)) {
      throw new Error(`App config file at ${appConfigUrl} is not a valid JSON`);
    }
    throw ex;
  }
};
