@dvcol/common-utils
Version:
Typescript library for common utility functions and constants
111 lines (91 loc) • 6.14 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkLRJ3WMEQcjs = require('./chunk-LRJ3WMEQ.cjs');
// lib/common/utils/string.utils.ts
var _uuid = require('uuid');
var parseJSON = (json) => typeof json == "string" && _optionalChain([json, 'optionalAccess', _ => _.length]) ? JSON.parse(json) : json;
var buildFormData = (params) => Object.keys(params).reduce((_form, key) => {
let value = params[key];
if (Array.isArray(value)) value = _optionalChain([value, 'optionalAccess', _2 => _2.join, 'call', _3 => _3(",")]);
_form.append(key, value);
return _form;
}, new FormData());
var stringifyParams = (params) => Object.entries(params).map(([k, v]) => `${k}=${Array.isArray(v) ? _optionalChain([v, 'optionalAccess', _4 => _4.map, 'call', _5 => _5(encodeURIComponent), 'access', _6 => _6.join, 'call', _7 => _7(",")]) : encodeURIComponent(v)}`).join("&");
var stringifyKeys = (record, stringify = false) => Object.entries(record).reduce((acc, [key, value]) => {
if (value === void 0) return acc;
if (value === null) return acc;
acc[key] = stringify ? JSON.stringify(value) : _optionalChain([value, 'optionalAccess', _8 => _8.toString, 'call', _9 => _9()]);
return acc;
}, {});
var versionCompare = (version, current) => {
for (let i = 0; i < _optionalChain([version, 'optionalAccess', _10 => _10.length]); i += 1) {
if (version[i] && !current[i]) return 1;
if (version[i] < current[i]) return -1;
if (version[i] > current[i]) return 1;
}
return _optionalChain([version, 'optionalAccess', _11 => _11.length]) >= _optionalChain([current, 'optionalAccess', _12 => _12.length]) ? 0 : -1;
};
var versionCheck = (version, compared) => {
const _compared = _optionalChain([compared, 'optionalAccess', _13 => _13.split, 'call', _14 => _14("."), 'optionalAccess', _15 => _15.map, 'call', _16 => _16(Number)]);
const _version = _optionalChain([version, 'optionalAccess', _17 => _17.split, 'call', _18 => _18("."), 'optionalAccess', _19 => _19.map, 'call', _20 => _20(Number)]);
return versionCompare(_version, _compared);
};
var regex = /(^\w|[.:]\s\w)/g;
var sentenceCase = (input) => _optionalChain([input, 'optionalAccess', _21 => _21.toLowerCase, 'call', _22 => _22(), 'access', _23 => _23.replace, 'call', _24 => _24(regex, (letter) => {
return letter.toUpperCase();
})]);
var capitalizeEachWord = (input) => _optionalChain([input, 'optionalAccess', _25 => _25.toLowerCase, 'call', _26 => _26(), 'access', _27 => _27.replace, 'call', _28 => _28(/\b\w/g, (match) => match.toUpperCase())]);
var deCapitalise = (input) => {
if (!_optionalChain([input, 'optionalAccess', _29 => _29.trim, 'call', _30 => _30()])) return input;
if (input !== input.toUpperCase()) return input;
return capitalizeEachWord(input);
};
var getUUID = _uuid.v4;
var toPathSegment = (str, trailing = false) => {
let _str = _optionalChain([str, 'optionalAccess', _31 => _31.trim, 'call', _32 => _32()]);
if (!_optionalChain([_str, 'optionalAccess', _33 => _33.length])) return "";
if (!_str.startsWith("/")) _str = `/${_str}`;
if (trailing && !_str.endsWith("/")) _str = `${_str}/`;
if (!trailing && _str.endsWith("/")) _str = _str.slice(0, -1);
return _str;
};
var computeAbsolutePath = (parent, relative) => {
const relativeSegments = relative.split("/").filter(Boolean);
const parentSegments = parent.split("/").filter(Boolean);
relativeSegments.forEach((segment) => {
if (segment === ".." && parentSegments.length < 1) throw new (0, _chunkLRJ3WMEQcjs.ParsingRelativePathError)({ parent, relative });
else if (segment === "..") parentSegments.pop();
else if (segment !== ".") parentSegments.push(segment);
});
return `/${parentSegments.join("/")}`;
};
var toCase = (str, pattern, separator) => str.trim().replace(pattern, separator).replace(new RegExp(`^${separator}`), "").toLowerCase();
var toSnakeCase = (str) => str.trim().replace(/([A-Z])/g, "_$1").replace(/^_/, "").toLowerCase();
var toKebabCase = (str) => str.trim().replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase();
function tokenizeString(str, pattern) {
const result = [];
let lastIndex = 0;
str.replace(pattern, (match, group, offset) => {
if (!group) return "";
result.push({ mark: group, token: str.slice(lastIndex, offset) });
lastIndex = offset + group.length;
return "";
});
result.push({ mark: false, token: str.slice(lastIndex) });
return result;
}
var markTokenizer = (str = "", pattern, { flags = "gi", html = false } = {}) => {
if (!_optionalChain([pattern, 'optionalAccess', _34 => _34.trim, 'call', _35 => _35()])) return [{ mark: false, token: str }];
const _regex = new RegExp(`(${pattern.trim()})`, flags);
if (!html) return tokenizeString(str, _regex);
const result = [];
const parts = str.split(/(<[^>]+>)/g);
parts.forEach((part) => {
if (part.startsWith("<") && part.endsWith(">")) {
result.push({ mark: false, token: part });
} else {
result.push(...tokenizeString(part, _regex));
}
});
return result;
};
exports.parseJSON = parseJSON; exports.buildFormData = buildFormData; exports.stringifyParams = stringifyParams; exports.stringifyKeys = stringifyKeys; exports.versionCheck = versionCheck; exports.sentenceCase = sentenceCase; exports.capitalizeEachWord = capitalizeEachWord; exports.deCapitalise = deCapitalise; exports.getUUID = getUUID; exports.toPathSegment = toPathSegment; exports.computeAbsolutePath = computeAbsolutePath; exports.toCase = toCase; exports.toSnakeCase = toSnakeCase; exports.toKebabCase = toKebabCase; exports.markTokenizer = markTokenizer;