@znode/influx
Version:
Node.js Influx Client
68 lines (67 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.item = exports.timestamp = exports.fields = exports.tags = void 0;
const map_1 = require("@zodash/map");
const utils = require("./utils");
function tags(tags) {
return !tags
? null
: map_1.map(tags, ([k, v]) => {
if (utils.hasCharNeedBeEscaped(k)) {
k = utils.escape(k);
}
if (utils.hasCharNeedBeEscaped(v)) {
v = utils.escape(v);
}
return `${k}=${v}`;
}).join(',');
}
exports.tags = tags;
function fields(fields) {
return !fields
? null
: map_1.map(fields, ([k, v]) => {
if (utils.hasCharNeedBeEscaped(k)) {
k = utils.escape(k);
}
// why: https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/#quoting
if (typeof v === 'string') {
if (utils.hasCharNeedBeEscaped(v)) {
v = utils.escape(v);
}
return `${k}=${JSON.stringify(v)}`;
}
return `${k}=${v}`;
}).join(',');
}
exports.fields = fields;
function timestamp(_timestamp) {
if (!_timestamp) {
_timestamp = Date.now();
}
if (typeof _timestamp === 'string') {
return JSON.stringify(_timestamp);
}
return '' + _timestamp * 1e6;
}
exports.timestamp = timestamp;
function item(item) {
utils.validateObjectKVUndefinedOrNull(item.tags);
utils.validateObjectKVUndefinedOrNull(item.fields);
const _tags = tags(item.tags);
const _fields = fields(item.fields);
const _timestamp = timestamp(item._timestamp);
const chunks = [];
if (!_tags) {
chunks.push(item.measurement);
}
else {
chunks.push(`${item.measurement},${_tags}`);
}
if (_fields)
chunks.push(_fields);
if (_timestamp)
chunks.push(_timestamp);
return chunks.join(' ');
}
exports.item = item;