UNPKG

newrelic

Version:
65 lines (56 loc) 1.6 kB
/* * Copyright 2020 New Relic Corporation. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ 'use strict' const mapToStreamingType = require('./map-to-streaming-type') /** * Specialized attribute collection class for use with infinite streaming. * Currently designed to be sent over grpc via the v1.proto definition. * * @private * @class */ class StreamingSpanAttributes { constructor(attributes) { if (attributes) { this.addAttributes(attributes) } } /** * Add a key/value pair to the attribute collection. * null/undefined values will be dropped. * * Does not apply filtering/truncation. * * @param {string} key Name of the attribute to be stored. * @param {string|boolean|number} value Value of the attribute to be stored. */ addAttribute(key, value) { const streamingValue = mapToStreamingType(value) if (streamingValue) { this[key] = streamingValue return true } return false } /** * Adds all attributes in an object to the attribute collection. * null/undefined values will be dropped. * * Does not apply filtering/truncation. * * @param {object} [attributes] Attributes to add. * @param {string} [attributes.key] Name of the attribute to be stored. * @param {string|boolean|number} [attributes.value] Value of the attribute to be stored. */ addAttributes(attributes) { if (!attributes) { return } for (const [key, value] of Object.entries(attributes)) { this.addAttribute(key, value) } } } module.exports = StreamingSpanAttributes