Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/i18n / dist / onesky / main.js
Size: Mime:
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
Object.defineProperty(exports, "readJsonFile", {
  enumerable: true,
  get: function () {
    return _utils.readJsonFile;
  }
});
Object.defineProperty(exports, "writeJsonFile", {
  enumerable: true,
  get: function () {
    return _utils.writeJsonFile;
  }
});
Object.defineProperty(exports, "flatten", {
  enumerable: true,
  get: function () {
    return _transform.flatten;
  }
});
Object.defineProperty(exports, "unflatten", {
  enumerable: true,
  get: function () {
    return _transform.unflatten;
  }
});
exports.getConfig = exports.downloadMessages = exports.downloadAllTranslations = exports.uploadMessages = exports.uploadBaseMessagesFromSource = exports.uploadAllTranslations = exports.updateTranslations = void 0;

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));

var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));

var _utils = require("./utils");

var _transform = require("./transform");

var _extract = require("./extract");

var _api = require("./api");

var _translations = require("./translations");

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

/**
 * Main module for managing translations
 *
 * @module @doodle/i18n/disty/onesky
 */

/**
 * Helper that filters out falsy fields of an object
 *
 * @param {object} obj
 * @returns {object}
 * @private
 */
const filterFalsyFields = obj => Object.entries(obj).filter(([_, value]) => value).reduce((result, [key, value]) => Object.assign(result, {
  [key]: value
}), {});
/**
 * Legacy credentials object interface
 * @typedef {object} Credentials
 * @property {string} key
 * @property {string} secret
 */

/**
 * Get combined configuration from parameters, .oneskyrc and environment variables
 *
 * @param {object} options
 * @param {Credentials} options.credentials
 * @param {string} options.projectId
 * @param {string[]} options.dependentProjectIds
 * @returns {Promise<object>}
 * @async
 */


const getConfig = async (_ref = {}, projectId, dependentProjectIds) => {
  let {
    credentials = {}
  } = _ref,
      options = (0, _objectWithoutProperties2.default)(_ref, ["credentials"]);
  const resourceConfiguration = await (0, _utils.getResourceConfiguration)();
  const projectConfig = filterFalsyFields({
    projectId,
    dependentProjectIds
  });
  return _objectSpread(_objectSpread(_objectSpread(_objectSpread({
    i18nPath: './i18n',
    srcPath: './src'
  }, resourceConfiguration), options), projectConfig), {}, {
    credentials: {
      secret: process.env.ONESKY_SECRET_KEY || credentials.secret,
      apiKey: process.env.ONESKY_PUBLIC_KEY || credentials.key
    }
  });
};
/**
 * Download all translation files for all defined languages of multiple OneSky projects
 *
 * @param {object} options
 * @param {Credentials} options.credentials
 * @param {string} options.projectId
 * @param {string[]} options.dependentProjectIds
 * @returns {Promise}
 * @async
 */


exports.getConfig = getConfig;

const downloadAllTranslations = async options => {
  const config = await getConfig(options);
  await (0, _translations.downloadMergedTranslationFiles)([config.projectId, ...config.dependentProjectIds], config.i18nPath, config.credentials);
};
/**
 * Upload directly the translation from the default messages defined in the source code
 *
 * @param {object} options
 * @param {Credentials} options.credentials
 * @param {string} options.projectId
 * @param {string[]} options.dependentProjectIds
 * @returns {Promise}
 * @async
 */


exports.downloadMessages = exports.downloadAllTranslations = downloadAllTranslations;

const uploadBaseMessagesFromSource = async options => {
  const config = await getConfig(options);
  const {
    srcPath,
    projectId,
    credentials,
    i18nPath,
    fileName,
    keepStrings,
    format
  } = config;
  const translationOptions = filterFalsyFields({
    language: 'en',
    projectId,
    fileName
  });
  const syncOptions = filterFalsyFields({
    keepStrings,
    format
  });
  const sourceMessages = await (0, _extract.extractDefaultMessages)(`${srcPath}/**/+(messages|*.messages).js`);
  await (0, _api.uploadProjectTranslation)(translationOptions, sourceMessages, credentials, syncOptions);
  await (0, _utils.writeJsonFile)(`${i18nPath}/onesky/${projectId}/en.json`, sourceMessages);
};
/**
 * Update translations files
 *
 * @param {object} options
 * @param {Credentials} options.credentials
 * @param {string} options.projectId
 * @param {string} options.srcPath
 * @param {string} options.i18nPath
 * @returns {Promise}
 * @async
 */


exports.uploadMessages = exports.uploadBaseMessagesFromSource = uploadBaseMessagesFromSource;

const updateTranslations = async options => {
  const config = await getConfig(options);
  await (0, _translations.updateTranslationFiles)(config.projectId, config.credentials, `${config.srcPath}/**/messages.js`, config.i18nPath, config.includeValues);
};
/**
 * Upload all translations files
 *
 * @param {object} options
 * @param {Credentials} options.credentials
 * @param {string} options.projectId
 * @param {string} options.srcPath
 * @param {string} options.i18nPath
 * @returns {Promise}
 * @async
 */


exports.updateTranslations = updateTranslations;

const uploadAllTranslations = async options => {
  const {
    i18nPath,
    projectId,
    fileName,
    credentials,
    keepStrings,
    format
  } = await getConfig(options);
  await (0, _translations.uploadTranslationFiles)(i18nPath, filterFalsyFields({
    projectId,
    fileName
  }), credentials, filterFalsyFields({
    keepStrings,
    format
  }));
};

exports.uploadAllTranslations = uploadAllTranslations;
//# sourceMappingURL=main.js.map