'use strict';
const path = require('path');
+const { name: packageName, version: packageVersion } = require('../package');
+
+const libraryIdentifier = `${packageName}@${packageVersion}`;
/**
* Return a function which combines a part of the filename with a scope, for use in logging.
* @param {string} filename
*/
const fileScope = (filename) => {
- let fScope = path.basename(filename, '.js');
- if (fScope === 'index') {
- fScope = path.basename(path.dirname(filename));
- }
- return (scope) => `${fScope}:${scope}`;
+ const shortFilename = path.basename(filename, '.js');
+ const fScope = (shortFilename === 'index') ? path.basename(path.dirname(filename)) : shortFilename;
+ return (scope) => [libraryIdentifier, fScope, scope].join(':');
}
/**
* Pick out useful axios response fields.
- * @param {*} res
- * @returns
+ * @param {AxiosResponse} res
+ * @returns {Object}
*/
const axiosResponseLogData = (res) => {
const data = pick(res, [
}
+/**
+ * Encodes single-level object as form data string.
+ * @param {Object} data
+ */
+const formData = (data) => {
+ const formData = new URLSearchParams();
+ Object.entries(data).forEach(([name, value]) => formData.set(name, value));
+ return formData.toString();
+};
+
+
module.exports = {
fileScope,
axiosResponseLogData,
pick,
setSymmetricDifference,
properURLComponentName,
+ formData,
};
\ No newline at end of file