Repository URL to install this package:
|
Version:
5.0.0-rc.5 ▾
|
"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