@antv/data-wizard
Version:
A js/ts library for data processing
73 lines (72 loc) • 3.17 kB
JavaScript
import { __assign } from "tslib";
import { isDateString } from '../analyzer/is-date';
import { isArray, isNumber, isString, range, assert, isBoolean, isNull } from '../utils';
export var isAxis = function (value) {
return isNumber(value) || isString(value);
};
// generate indexes for 1D and 2D array
export var generateArrayIndex = function (data, extraIndex) {
assert(isArray(data), 'Data must be an array');
if (extraIndex) {
assert((extraIndex === null || extraIndex === void 0 ? void 0 : extraIndex.length) === data.length, "Index length is " + (extraIndex === null || extraIndex === void 0 ? void 0 : extraIndex.length) + ", but data size is " + data.length);
return extraIndex;
}
return range(data.length);
};
export var flatObject = function (obj, concatenator) {
if (concatenator === void 0) { concatenator = '.'; }
return Object.keys(obj).reduce(function (acc, key) {
var _a;
if (typeof obj[key] !== 'object' || obj[key] === null) {
return __assign(__assign({}, acc), (_a = {}, _a[key] = obj[key], _a));
}
var flattenedChild = flatObject(obj[key], concatenator);
return __assign(__assign({}, acc), Object.keys(flattenedChild).reduce(function (childAcc, childKey) {
var _a;
return (__assign(__assign({}, childAcc), (_a = {}, _a["" + key + concatenator + childKey] = flattenedChild[childKey], _a)));
}, {}));
}, {});
};
export var fillMissingValue = function (datum, fillValue) {
return !datum && JSON.stringify(fillValue) ? fillValue : datum;
};
export var generateSplit = function (length) {
return Array(isNumber(length) ? length : 0)
.fill(' ')
.concat(' ')
.join('');
};
export var stringify = function (value) {
var _a, _b, _c, _d, _e, _f;
return ((_f = (_e = (_d = (_c = (_b = (_a = JSON.stringify(value)) === null || _a === void 0 ? void 0 : _a.replace(/\\n/g, '')) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, '')) === null || _c === void 0 ? void 0 : _c.replace(/"\[/g, '[')) === null || _d === void 0 ? void 0 : _d.replace(/\]"/g, ']')) === null || _e === void 0 ? void 0 : _e.replace(/"\{/g, '{')) === null || _f === void 0 ? void 0 : _f.replace(/\}"/g, ' }')) || 'undefined';
};
export var getStringifyLength = function (value) { var _a; return (_a = stringify(value)) === null || _a === void 0 ? void 0 : _a.length; };
/**
* Convert data to specified data type.
* @param datum
* @param type
* @returns converted data
*/
export var convertDataType = function (data, type) {
try {
if (type === 'string' && !isString(data)) {
return "" + data;
}
if (type === 'boolean' && !isBoolean(data)) {
return Boolean(data);
}
if (type === 'null' && !isNull(data)) {
return null;
}
if ((type === 'integer' || type === 'float') && !isNumber(data)) {
return +data;
}
if (type === 'date' && !isDateString("" + data)) {
return new Date(data);
}
}
catch (error) {
throw new Error(error);
}
return data;
};