UNPKG

@znode/influx

Version:
68 lines (67 loc) 2.03 kB
"use strict"; 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;