Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
307d017
feat(semconv): update semantic conventions to 1.25
dyladan May 9, 2024
a7e5212
Deprecate old values names
dyladan May 9, 2024
fe400cb
Change prefix and deprecate old names
dyladan May 9, 2024
f782cb6
Changelog
dyladan May 9, 2024
dc3f50a
Improve enum docs
dyladan May 10, 2024
f72598e
Remove commented code
dyladan May 10, 2024
e9fcfba
Merge branch 'main' into semconv-1.25
dyladan May 13, 2024
1505866
Merge branch 'main' into semconv-1.25
dyladan May 14, 2024
7036118
Remove errant file
dyladan May 21, 2024
07278df
Remove class name
dyladan May 21, 2024
727d23e
Blank line between metrics
dyladan May 21, 2024
79738a4
Fix newlines
dyladan May 21, 2024
c982f3e
Fix casing
dyladan May 21, 2024
a827bb7
main export should be stable only
dyladan May 22, 2024
a8295e7
Merge branch 'main' into semconv-1.25
dyladan May 22, 2024
fbc64da
Add experimental index
dyladan May 22, 2024
72561ba
Use singular value infix
dyladan May 22, 2024
31da43d
Add const types to semconv
dyladan May 23, 2024
3949f1f
Use VAL_ prefix for enum values
dyladan May 30, 2024
7499c3a
Merge remote-tracking branch 'origin/main' into semconv-1.25
dyladan Jun 5, 2024
d520b12
Merge branch 'main' into semconv-1.25
dyladan Jun 5, 2024
a9be96d
Do not format generated files
dyladan Jun 6, 2024
87d8f38
Merge branch 'semconv-1.25' of github.com:dynatrace-oss-contrib/opent…
dyladan Jun 6, 2024
2dce2eb
Enum infix
dyladan Jun 6, 2024
dbb8328
Use new semconv name generation to avoid conflicts
dyladan Jun 6, 2024
9ef2f46
Use builtin filter in macro
dyladan Jun 6, 2024
9bd9802
Merge remote-tracking branch 'origin/main' into semconv-1.25
dyladan Jun 6, 2024
c5163b5
Merge remote-tracking branch 'origin/main' into semconv-1.25
dyladan Jul 17, 2024
ce47611
Move to weaver
dyladan Jul 25, 2024
0b61394
Merge remote-tracking branch 'origin/main' into semconv-1.25
dyladan Jul 25, 2024
d88363b
Remove lint from semconv package
dyladan Aug 1, 2024
97aac66
Add template generators
dyladan Aug 1, 2024
49b68e7
Merge branch 'main' into semconv-1.25
dyladan Aug 1, 2024
c93c57b
Update to 0.8.0 generator
dyladan Aug 2, 2024
504f09a
Change entrypoint to incubating
dyladan Aug 2, 2024
cb11d1f
Change typesversions to incubating
dyladan Aug 2, 2024
6870633
Remove stable export, default export is stable
dyladan Aug 2, 2024
984f827
Merge remote-tracking branch 'origin/main' into semconv-1.25
dyladan Aug 2, 2024
f9cdde8
Remove tsbuildinfo
dyladan Aug 2, 2024
da5ae01
Print enum values and do not squash underscores
dyladan Aug 2, 2024
720ed64
Update to 1.27
dyladan Aug 2, 2024
af81446
Apply suggestions from review
dyladan Aug 2, 2024
ba26b28
Consolidate templates
dyladan Aug 2, 2024
bb6708e
Explicit stability in ctx
dyladan Aug 2, 2024
8bfbdf1
Changelog
dyladan Aug 2, 2024
fc56c56
Formatting fixes
dyladan Aug 2, 2024
f6e1f11
Apply suggestions from code review
dyladan Aug 5, 2024
3438499
Remove errant entry from changelog
dyladan Aug 5, 2024
85b18b8
Rename constants in deprecated comment
dyladan Aug 5, 2024
25eeaee
Remove ATTR prefix from enum values
dyladan Aug 5, 2024
9e4887d
Update semconv readme
dyladan Aug 5, 2024
29d7efb
Run code gen
dyladan Aug 5, 2024
478bb09
Add examples to docstring
dyladan Aug 5, 2024
fe150a8
Fix changelog lint
dyladan Aug 5, 2024
b51a249
Fix readme import
dyladan Aug 6, 2024
de3cf38
Export string as const for better type safety
dyladan Aug 7, 2024
fe748a1
Update scripts/semconv/templates/registry/stable/docstring.ts.j2
dyladan Aug 7, 2024
2844f01
Generate semconv
dyladan Aug 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Print enum values and do not squash underscores
  • Loading branch information
dyladan committed Aug 2, 2024
commit da5ae019c5e4ce735902ac84af59a6d298b6b4cd
1,473 changes: 1,370 additions & 103 deletions packages/opentelemetry-semantic-conventions/src/experimental_attributes.ts

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export const METRIC_CONTAINER_NETWORK_IO = 'container.network.io';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_CONNECTIONS_CREATETIME = 'db.client.connections.create_time';
export const METRIC_DB_CLIENT_CONNECTIONS_CREATE_TIME = 'db.client.connections.create_time';

/**
* The maximum number of idle open connections allowed
Expand Down Expand Up @@ -87,7 +87,7 @@ export const METRIC_DB_CLIENT_CONNECTIONS_MAX = 'db.client.connections.max';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_CONNECTIONS_PENDINGREQUESTS = 'db.client.connections.pending_requests';
export const METRIC_DB_CLIENT_CONNECTIONS_PENDING_REQUESTS = 'db.client.connections.pending_requests';

/**
* The number of connection timeouts that have occurred trying to obtain a connection from the pool
Expand All @@ -108,14 +108,14 @@ export const METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_CONNECTIONS_USETIME = 'db.client.connections.use_time';
export const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_time';

/**
* The time it took to obtain an open connection from the pool
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_CONNECTIONS_WAITTIME = 'db.client.connections.wait_time';
export const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time';

/**
* Measures the time taken to perform a DNS lookup.
Expand All @@ -136,7 +136,7 @@ export const METRIC_FAAS_COLDSTARTS = 'faas.coldstarts';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_FAAS_CPUUSAGE = 'faas.cpu_usage';
export const METRIC_FAAS_CPU_USAGE = 'faas.cpu_usage';

/**
* Number of invocation errors
Expand All @@ -150,7 +150,7 @@ export const METRIC_FAAS_ERRORS = 'faas.errors';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_FAAS_INITDURATION = 'faas.init_duration';
export const METRIC_FAAS_INIT_DURATION = 'faas.init_duration';

/**
* Number of successful invocations
Expand All @@ -164,21 +164,21 @@ export const METRIC_FAAS_INVOCATIONS = 'faas.invocations';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_FAAS_INVOKEDURATION = 'faas.invoke_duration';
export const METRIC_FAAS_INVOKE_DURATION = 'faas.invoke_duration';

/**
* Distribution of max memory usage per invocation
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_FAAS_MEMUSAGE = 'faas.mem_usage';
export const METRIC_FAAS_MEM_USAGE = 'faas.mem_usage';

/**
* Distribution of net I/O usage per invocation
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_FAAS_NETIO = 'faas.net_io';
export const METRIC_FAAS_NET_IO = 'faas.net_io';

/**
* Number of invocation timeouts
Expand All @@ -192,7 +192,7 @@ export const METRIC_FAAS_TIMEOUTS = 'faas.timeouts';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_HTTP_CLIENT_ACTIVEREQUESTS = 'http.client.active_requests';
export const METRIC_HTTP_CLIENT_ACTIVE_REQUESTS = 'http.client.active_requests';

/**
* The duration of the successfully established outbound HTTP connections.
Expand All @@ -206,7 +206,7 @@ export const METRIC_HTTP_CLIENT_CONNECTION_DURATION = 'http.client.connection.du
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_HTTP_CLIENT_OPENCONNECTIONS = 'http.client.open_connections';
export const METRIC_HTTP_CLIENT_OPEN_CONNECTIONS = 'http.client.open_connections';

/**
* Size of HTTP client request bodies.
Expand All @@ -231,7 +231,7 @@ export const METRIC_HTTP_CLIENT_RESPONSE_BODY_SIZE = 'http.client.response.body.
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_HTTP_SERVER_ACTIVEREQUESTS = 'http.server.active_requests';
export const METRIC_HTTP_SERVER_ACTIVE_REQUESTS = 'http.server.active_requests';

/**
* Size of HTTP server request bodies.
Expand Down Expand Up @@ -286,7 +286,7 @@ export const METRIC_JVM_MEMORY_INIT = 'jvm.memory.init';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_JVM_SYSTEM_CPU_LOAD1M = 'jvm.system.cpu.load_1m';
export const METRIC_JVM_SYSTEM_CPU_LOAD_1M = 'jvm.system.cpu.load_1m';

/**
* Recent CPU utilization for the whole system as reported by the JVM.
Expand Down Expand Up @@ -344,7 +344,7 @@ export const METRIC_MESSAGING_RECEIVE_MESSAGES = 'messaging.receive.messages';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_PROCESS_CONTEXTSWITCHES = 'process.context_switches';
export const METRIC_PROCESS_CONTEXT_SWITCHES = 'process.context_switches';

/**
* Total CPU seconds broken down by different states.
Expand Down Expand Up @@ -393,7 +393,7 @@ export const METRIC_PROCESS_NETWORK_IO = 'process.network.io';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_PROCESS_OPENFILEDESCRIPTOR_COUNT = 'process.open_file_descriptor.count';
export const METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count';

/**
* Number of page faults the process has made.
Expand Down Expand Up @@ -439,7 +439,7 @@ export const METRIC_RPC_CLIENT_REQUEST_SIZE = 'rpc.client.request.size';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_RPC_CLIENT_REQUESTSPERRPC = 'rpc.client.requests_per_rpc';
export const METRIC_RPC_CLIENT_REQUESTS_PER_RPC = 'rpc.client.requests_per_rpc';

/**
* Measures the size of RPC response messages (uncompressed).
Expand All @@ -459,7 +459,7 @@ export const METRIC_RPC_CLIENT_RESPONSE_SIZE = 'rpc.client.response.size';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_RPC_CLIENT_RESPONSESPERRPC = 'rpc.client.responses_per_rpc';
export const METRIC_RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc';

/**
* Measures the duration of inbound RPC.
Expand Down Expand Up @@ -491,7 +491,7 @@ export const METRIC_RPC_SERVER_REQUEST_SIZE = 'rpc.server.request.size';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_RPC_SERVER_REQUESTSPERRPC = 'rpc.server.requests_per_rpc';
export const METRIC_RPC_SERVER_REQUESTS_PER_RPC = 'rpc.server.requests_per_rpc';

/**
* Measures the size of RPC response messages (uncompressed).
Expand All @@ -511,7 +511,7 @@ export const METRIC_RPC_SERVER_RESPONSE_SIZE = 'rpc.server.response.size';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_RPC_SERVER_RESPONSESPERRPC = 'rpc.server.responses_per_rpc';
export const METRIC_RPC_SERVER_RESPONSES_PER_RPC = 'rpc.server.responses_per_rpc';

/**
* Reports the current frequency of the CPU in Hz
Expand Down Expand Up @@ -567,7 +567,7 @@ export const METRIC_SYSTEM_DISK_IO = 'system.disk.io';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_SYSTEM_DISK_IOTIME = 'system.disk.io_time';
export const METRIC_SYSTEM_DISK_IO_TIME = 'system.disk.io_time';

/**

Expand All @@ -586,7 +586,7 @@ export const METRIC_SYSTEM_DISK_MERGED = 'system.disk.merged';
*
* @experimental This metric is experimental and is subject to change in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_SYSTEM_DISK_OPERATIONTIME = 'system.disk.operation_time';
export const METRIC_SYSTEM_DISK_OPERATION_TIME = 'system.disk.operation_time';

/**

Expand Down
158 changes: 154 additions & 4 deletions packages/opentelemetry-semantic-conventions/src/stable_attributes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,67 @@
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';

/**
* Enum value 'cpp' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_CPP = 'cpp';

/**
* Enum value 'dotnet' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = 'dotnet';

/**
* Enum value 'erlang' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = 'erlang';

/**
* Enum value 'go' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_GO = 'go';

/**
* Enum value 'java' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = 'java';

/**
* Enum value 'nodejs' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = 'nodejs';

/**
* Enum value 'php' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_PHP = 'php';

/**
* Enum value 'python' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = 'python';

/**
* Enum value 'ruby' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = 'ruby';

/**
* Enum value 'rust' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_RUST = 'rust';

/**
* Enum value 'swift' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = 'swift';

/**
* Enum value 'webjs' for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = 'webjs';


/**
* The name of the telemetry SDK as defined above.
*
Expand Down Expand Up @@ -75,6 +136,12 @@ export const ATTR_CLIENT_PORT = 'client.port';
*/
export const ATTR_ERROR_TYPE = 'error.type';

/**
* Enum value '_OTHER' for attribute {@link ATTR_ERROR_TYPE}.
*/
export const ATTR_ERROR_TYPE_VALUE_OTHER = '_OTHER';


/**
* **SHOULD** be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.
*
Expand Down Expand Up @@ -141,17 +208,68 @@ export const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${
*/
export const ATTR_HTTP_REQUEST_METHOD = 'http.request.method';

/**
* Enum value '_OTHER' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_OTHER = '_OTHER';

/**
* Enum value 'CONNECT' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_CONNECT = 'CONNECT';

/**
* Enum value 'DELETE' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_DELETE = 'DELETE';

/**
* Enum value 'GET' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_GET = 'GET';

/**
* Enum value 'HEAD' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_HEAD = 'HEAD';

/**
* Enum value 'OPTIONS' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_OPTIONS = 'OPTIONS';

/**
* Enum value 'PATCH' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_PATCH = 'PATCH';

/**
* Enum value 'POST' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_POST = 'POST';

/**
* Enum value 'PUT' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_PUT = 'PUT';

/**
* Enum value 'TRACE' for attribute {@link ATTR_HTTP_REQUEST_METHOD}.
*/
export const ATTR_HTTP_REQUEST_METHOD_VALUE_TRACE = 'TRACE';


/**
* Original HTTP method sent by the client in the request line.
*/
export const ATTR_HTTP_REQUEST_METHODORIGINAL = 'http.request.method_original';
export const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';

/**
* The ordinal number of request resending attempt (for any reason, including redirects).
*
* @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).
*/
export const ATTR_HTTP_REQUEST_RESENDCOUNT = 'http.request.resend_count';
export const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';

/**
* HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.
Expand All @@ -165,7 +283,7 @@ export const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.
/**
* [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).
*/
export const ATTR_HTTP_RESPONSE_STATUSCODE = 'http.response.status_code';
export const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';

/**
* The matched route, that is, the path template in the format used by the respective server framework.
Expand Down Expand Up @@ -220,13 +338,45 @@ export const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';
*/
export const ATTR_NETWORK_TRANSPORT = 'network.transport';

/**
* Enum value 'pipe' for attribute {@link ATTR_NETWORK_TRANSPORT}.
*/
export const ATTR_NETWORK_TRANSPORT_VALUE_PIPE = 'pipe';

/**
* Enum value 'tcp' for attribute {@link ATTR_NETWORK_TRANSPORT}.
*/
export const ATTR_NETWORK_TRANSPORT_VALUE_TCP = 'tcp';

/**
* Enum value 'udp' for attribute {@link ATTR_NETWORK_TRANSPORT}.
*/
export const ATTR_NETWORK_TRANSPORT_VALUE_UDP = 'udp';

/**
* Enum value 'unix' for attribute {@link ATTR_NETWORK_TRANSPORT}.
*/
export const ATTR_NETWORK_TRANSPORT_VALUE_UNIX = 'unix';


/**
* [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent.
*
* @note The value **SHOULD** be normalized to lowercase.
*/
export const ATTR_NETWORK_TYPE = 'network.type';

/**
* Enum value 'ipv4' for attribute {@link ATTR_NETWORK_TYPE}.
*/
export const ATTR_NETWORK_TYPE_VALUE_IPV4 = 'ipv4';

/**
* Enum value 'ipv6' for attribute {@link ATTR_NETWORK_TYPE}.
*/
export const ATTR_NETWORK_TYPE_VALUE_IPV6 = 'ipv6';


/**
* Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
*
Expand Down Expand Up @@ -289,4 +439,4 @@ export const ATTR_URL_SCHEME = 'url.scheme';
/**
* Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.
*/
export const ATTR_USERAGENT_ORIGINAL = 'user_agent.original';
export const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';
Loading