UNPKG

@opentelemetry/resources

Version:
68 lines 2.39 kB
"use strict"; /*! * Copyright 2020, OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@opentelemetry/core"); const constants_1 = require("./constants"); /** * A Resource describes the entity for which a signals (metrics or trace) are * collected. */ class Resource { constructor( /** * A dictionary of labels with string keys and values that provide information * about the entity as numbers, strings or booleans * TODO: Consider to add check/validation on labels. */ labels) { this.labels = labels; } /** * Returns an empty Resource */ static empty() { return Resource.EMPTY; } /** * Returns a Resource that indentifies the SDK in use. */ static createTelemetrySDKResource() { return new Resource({ [constants_1.TELEMETRY_SDK_RESOURCE.LANGUAGE]: core_1.SDK_INFO.LANGUAGE, [constants_1.TELEMETRY_SDK_RESOURCE.NAME]: core_1.SDK_INFO.NAME, [constants_1.TELEMETRY_SDK_RESOURCE.VERSION]: core_1.SDK_INFO.VERSION, }); } /** * Returns a new, merged {@link Resource} by merging the current Resource * with the other Resource. In case of a collision, current Resource takes * precedence. * * @param other the Resource that will be merged with this. * @returns the newly merged Resource. */ merge(other) { if (!other || !Object.keys(other.labels).length) return this; // Labels from resource overwrite labels from other resource. const mergedLabels = Object.assign({}, other.labels, this.labels); return new Resource(mergedLabels); } } exports.Resource = Resource; Resource.EMPTY = new Resource({}); //# sourceMappingURL=Resource.js.map