<commit_before>const xml2js = require('xml2js').parseString,
      fetch = require('node-fetch'),
      base64Encode = require('base64url'),
      eslintTeamcityReporter = require('eslint-teamcity'),
      main = {},
      /**
 * Реквизиты доступа
 * @typedef {Object} Creditials
 * @property {String} login - логин
 * @property {String} pasword - <PASSWORD>
 * @property {String} [projectId] - id для поиска сборки
 * @property {String} [host] - url сервера teamcity
 */

      /**
 * @type {Creditials}
 */
      creditials = {
        login: '',
        password: '',
        host: ''
      };

module.exports = main;

let buildId = '';

main.setBuildStatus = setBuildStatus;
main.setBuildProblem = setBuildProblem;
main.setBuildName = setBuildName;
main.getBuildArtifact = getBuildArtifact;
main.prepareEslintReportForTeamcity = prepareEslintReportForTeamcity;
main.init = init;

/**
 * Инициализация
 * @param {Creditials} _сreditials - реквизиты доступа
 * @param {String} buildName - имя(Id) конфигурации
 * @param {String} [masterBranchName=master] - имя master ветки
 * @param {String} [mode] - решим работы
 * @return {Promise} - статус инициализации
 */
function init (_сreditials, masterBranchName, mode) {
  let pending = [];
  setCreditials(_сreditials);
  pending.push(setLatestSuccessfullBuildId(masterBranchName || 'master'));

  return Promise.all(pending);
};

/**
 * Установка реквизитов доступа
 * @param {Creditials} _сreditials - реквизиты доступа
 */
function setCreditials (_creditials) {
  creditials.host = _creditials.host;
  creditials.login = _creditials.login;
  creditials.password = <PASSWORD>;
  creditials.projectId = _creditials.projectId;
};

/**
 * Установка статуса сборки
 * @param {String} status - статус сборки
 * @param {String} [reason] - причина
 */
function setBuildStatus (status, reason) {
  console.log(`##teamcity[buildStatus status='${status}' text='${reason}']`);
};

/**
 * Получение артефакта сборки
 */
function getBuildArtifact () {
  const options = { method: 'GET',
    // TODO: настраиваемый путь до нужного артефакта, сейчас зашито: reports.zip%21/eslint.json
    url: `${creditials.host}/repository/download/${creditials.projectId}/${buildId}:id/reports.zip%21/eslint.json`,
    headers:
            { 'cache-control': 'no-cache',
              // TODO: вынести реквизиты в base64 в переменную на этапе init
              'Authorization': 'Basic ' + base64Encode(`${creditials.login}:${creditials.password}`)
            }
  };

  console.log('\n\noptions.url', options.url, '\n\n');
  return fetch(options.url, options).then(function (response) {
    return response.text();
  });
};

/**
 * Установка номера последней удачной сборки
 * @param {String} masterBranchName - имя master ветки
 */
function setLatestSuccessfullBuildId (masterBranchName) {
  return getBuildIdByBuildName(masterBranchName).then((_buildId) => {
    buildId = _buildId;
  });
};

/**
 * Id сборки по имени конфигурации и мастер ветке
 * @param {String} masterBranchName - имя master ветки
 * @return {Promise.<String>} - id последней удачной сборки по заданным
 * параметрам
 */
function getBuildIdByBuildName (masterBranchName) {
  const options = { method: 'GET',
    url: `${creditials.host}/httpAuth/app/rest/builds?locator=buildType:${creditials.projectId},branch:name:${masterBranchName},count:1,status:SUCCESS,state:finished`,
    headers:
        { 'cache-control': 'no-cache',
          'Authorization': 'Basic ' + base64Encode(`${creditials.login}:${creditials.password}`)
        }
  };
<commit_msg>test(teamcity): заменены имена свойств для упрощения<commit_after>const xml2js = require('xml2js').parseString,
      fetch = require('node-fetch'),
      base64Encode = require('base64url'),
      eslintTeamcityReporter = require('eslint-teamcity'),
      main = {},
      /**
 * Реквизиты доступа
 * @typedef {Object} Creditials
 * @property {String} login - логин
 * @property {String} pasword - пароль
 * @property {String} [projectId] - id для поиска сборки
 * @property {String} [host] - url сервера teamcity
 */

      /**
 * @type {Creditials}
 */
      creditials = {
        username: '',
        password: '',
        host: ''
      };

module.exports = main;

let buildId = '';

main.setBuildStatus = setBuildStatus;
main.setBuildProblem = setBuildProblem;
main.setBuildName = setBuildName;
main.getBuildArtifact = getBuildArtifact;
main.prepareEslintReportForTeamcity = prepareEslintReportForTeamcity;
main.init = init;

/**
 * Инициализация
 * @param {Creditials} _creditials - реквизиты доступа
 * @param {String} buildName - имя(Id) конфигурации
 * @param {String} [masterBranchName=master] - имя master ветки
 * @param {String} [mode] - решим работы
 * @return {Promise} - статус инициализации
 */
function init (_creditials, masterBranchName, mode) {
  let pending = [];
  setCreditials(_creditials);
  pending.push(setLatestSuccessfullBuildId(masterBranchName || 'master'));

  return Promise.all(pending);
};

/**
 * Установка реквизитов доступа
 * @param {Creditials} _сreditials - реквизиты доступа
 */
function setCreditials (_creditials) {
  creditials.host = _creditials.host;
  creditials.username = _creditials.username;
  creditials.password = <PASSWORD>;
  creditials.projectId = _creditials.projectId;
};

/**
 * Установка статуса сборки
 * @param {String} status - статус сборки
 * @param {String} [reason] - причина
 */
function setBuildStatus (status, reason) {
  console.log(`##teamcity[buildStatus status='${status}' text='${reason}']`);
};

/**
 * Получение артефакта сборки
 */
function getBuildArtifact () {
  const options = { method: 'GET',
    // TODO: настраиваемый путь до нужного артефакта, сейчас зашито: reports.zip%21/eslint.json
    url: `${creditials.host}/repository/download/${creditials.projectId}/${buildId}:id/reports.zip%21/eslint.json`,
    headers:
            { 'cache-control': 'no-cache',
              // TODO: вынести реквизиты в base64 в переменную на этапе init
              'Authorization': 'Basic ' + base64Encode(`${creditials.username}:${creditials.password}`)
            }
  };

  console.log('\n\noptions.url', options.url, '\n\n');
  return fetch(options.url, options).then(function (response) {
    return response.text();
  }).catch((e) => {
    throw new Error(e);
  });
};

/**
 * Установка номера последней удачной сборки
 * @param {String} masterBranchName - имя master ветки
 */
function setLatestSuccessfullBuildId (masterBranchName) {
  return getBuildIdByBuildName(masterBranchName).then((_buildId) => {
    buildId = _buildId;
  });
};

/**
 * Id сборки по имени конфигурации и мастер ветке
 * @param {String} masterBranchName - имя master ветки
 * @return {Promise.<String>} - id последней удачной сборки по заданным
 * параметрам
 */
function getBuildIdByBuildName (masterBranchName) {
  const options = { method: 'GET',
    url: `${creditials.host}/httpAuth/app/rest/builds?locator=buildType:${creditials.projectId},branch:name:${masterBranchName},count:1,status:SUCCESS,state:finished`,
    headers:
        { 'cache-control': 'no-cache',
          'Authorization': 'Basic ' + base64Encode(`${creditials.username}:${creditials.password}`)
        }
  };

{'fraction_non_alphanumeric': 0.14200278164116828, 'fraction_numerical': 0.004728789986091794, 'mean_word_length': 4.0251572327044025, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2919895', 'n_tokens_mistral': 2391, 'n_tokens_neox': 2497, 'n_words': 479}