Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
13 KiB
Plaintext
1 line
13 KiB
Plaintext
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Context,\n createContextKey,\n diag,\n HrTime,\n Span,\n Attributes,\n AttributeValue,\n} from '@opentelemetry/api';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_MESSAGING_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n ATTR_MESSAGING_PROTOCOL,\n ATTR_MESSAGING_PROTOCOL_VERSION,\n ATTR_MESSAGING_URL,\n} from '../src/semconv-obsolete';\nimport type * as amqp from 'amqplib';\n\nexport const MESSAGE_STORED_SPAN: unique symbol = Symbol(\n 'opentelemetry.amqplib.message.stored-span'\n);\nexport const CHANNEL_SPANS_NOT_ENDED: unique symbol = Symbol(\n 'opentelemetry.amqplib.channel.spans-not-ended'\n);\nexport const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol = Symbol(\n 'opentelemetry.amqplib.channel.consumer-timeout-timer'\n);\nexport const CONNECTION_ATTRIBUTES: unique symbol = Symbol(\n 'opentelemetry.amqplib.connection.attributes'\n);\n\nexport type InstrumentationConnection = amqp.Connection & {\n [CONNECTION_ATTRIBUTES]?: Attributes;\n};\nexport type InstrumentationPublishChannel = (\n | amqp.Channel\n | amqp.ConfirmChannel\n) & { connection: InstrumentationConnection };\nexport type InstrumentationConsumeChannel = amqp.Channel & {\n connection: InstrumentationConnection;\n [CHANNEL_SPANS_NOT_ENDED]?: {\n msg: amqp.ConsumeMessage;\n timeOfConsume: HrTime;\n }[];\n [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout;\n};\nexport type InstrumentationMessage = amqp.Message & {\n [MESSAGE_STORED_SPAN]?: Span;\n};\nexport type InstrumentationConsumeMessage = amqp.ConsumeMessage & {\n [MESSAGE_STORED_SPAN]?: Span;\n};\n\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY: symbol = createContextKey(\n 'opentelemetry.amqplib.channel.is-confirm-channel'\n);\n\nexport const normalizeExchange = (exchangeName: string) =>\n exchangeName !== '' ? exchangeName : '<default>';\n\nconst censorPassword = (url: string): string => {\n return url.replace(/:[^:@/]*@/, ':***@');\n};\n\nconst getPort = (\n portFromUrl: number | undefined,\n resolvedProtocol: string\n): number => {\n // we are using the resolved protocol which is upper case\n // this code mimic the behavior of the amqplib which is used to set connection params\n return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\n\nconst getProtocol = (protocolFromUrl: string | undefined): string => {\n const resolvedProtocol = protocolFromUrl || 'amqp';\n // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n const noEndingColon = resolvedProtocol.endsWith(':')\n ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n : resolvedProtocol;\n // upper cases to match spec\n return noEndingColon.toUpperCase();\n};\n\nconst getHostname = (hostnameFromUrl: string | undefined): string => {\n // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n return hostnameFromUrl || 'localhost';\n};\n\nconst extractConnectionAttributeOrLog = (\n url: string | amqp.Options.Connect,\n attributeKey: string,\n attributeValue: AttributeValue,\n nameForLog: string\n): Attributes => {\n if (attributeValue) {\n return { [attributeKey]: attributeValue };\n } else {\n diag.error(\n `amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`,\n {\n url,\n }\n );\n return {};\n }\n};\n\nexport const getConnectionAttributesFromServer = (\n conn: amqp.Connection\n): Attributes => {\n const product = conn.serverProperties.product?.toLowerCase?.();\n if (product) {\n return {\n [ATTR_MESSAGING_SYSTEM]: product,\n };\n } else {\n return {};\n }\n};\n\nexport const getConnectionAttributesFromUrl = (\n url: string | amqp.Options.Connect,\n netSemconvStability: SemconvStability\n): Attributes => {\n const attributes: Attributes = {\n [ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n };\n\n url = url || 'amqp://localhost';\n if (typeof url === 'object') {\n const connectOptions = url as amqp.Options.Connect;\n\n const protocol = getProtocol(connectOptions?.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_MESSAGING_PROTOCOL,\n protocol,\n 'protocol'\n ),\n });\n\n const hostname = getHostname(connectOptions?.hostname);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_NET_PEER_NAME,\n hostname,\n 'hostname'\n ),\n });\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n url,\n ATTR_SERVER_ADDRESS,\n hostname,\n 'hostname'\n ),\n });\n }\n\n const port = getPort(connectOptions.port, protocol);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(url, ATTR_NET_PEER_PORT, port, 'port')\n );\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(url, ATTR_SERVER_PORT, port, 'port')\n );\n }\n } else {\n const censoredUrl = censorPassword(url);\n attributes[ATTR_MESSAGING_URL] = censoredUrl;\n try {\n const urlParts = new URL(censoredUrl);\n\n const protocol = getProtocol(urlParts.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_MESSAGING_PROTOCOL,\n protocol,\n 'protocol'\n ),\n });\n\n const hostname = getHostname(urlParts.hostname);\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_NET_PEER_NAME,\n hostname,\n 'hostname'\n ),\n });\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_SERVER_ADDRESS,\n hostname,\n 'hostname'\n ),\n });\n }\n\n const port = getPort(\n urlParts.port ? parseInt(urlParts.port) : undefined,\n protocol\n );\n if (netSemconvStability & SemconvStability.OLD) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_NET_PEER_PORT,\n port,\n 'port'\n )\n );\n }\n if (netSemconvStability & SemconvStability.STABLE) {\n Object.assign(\n attributes,\n extractConnectionAttributeOrLog(\n censoredUrl,\n ATTR_SERVER_PORT,\n port,\n 'port'\n )\n );\n }\n } catch (err) {\n diag.error(\n 'amqplib instrumentation: error while extracting connection details from connection url',\n {\n censoredUrl,\n err,\n }\n );\n }\n }\n return attributes;\n};\n\nexport const markConfirmChannelTracing = (context: Context) => {\n return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\n\nexport const unmarkConfirmChannelTracing = (context: Context) => {\n return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\n\nexport const isConfirmChannelTracing = (context: Context) => {\n return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\n"]} |