@dash0/sdk-web
Version:
Dash0's Web SDK to collect telemetry from end-users' web browsers
44 lines (36 loc) • 1.29 kB
text/typescript
import { vars } from "../vars";
import { addAttribute, removeAttribute } from "../utils/otel";
import { USER_EMAIL, USER_FULL_NAME, USER_HASH, USER_ID, USER_NAME, USER_ROLES } from "../semantic-conventions";
type IdentifyOpts = {
name?: string;
fullName?: string;
email?: string;
hash?: string;
roles?: string[];
};
export function identify(id?: string, opts?: IdentifyOpts) {
removeAttribute(vars.signalAttributes, USER_ID);
if (id != null) {
addAttribute(vars.signalAttributes, USER_ID, id);
}
removeAttribute(vars.signalAttributes, USER_NAME);
if (opts?.name != null) {
addAttribute(vars.signalAttributes, USER_NAME, opts.name);
}
removeAttribute(vars.signalAttributes, USER_FULL_NAME);
if (opts?.fullName != null) {
addAttribute(vars.signalAttributes, USER_FULL_NAME, opts.fullName);
}
removeAttribute(vars.signalAttributes, USER_EMAIL);
if (opts?.email != null) {
addAttribute(vars.signalAttributes, USER_EMAIL, opts.email);
}
removeAttribute(vars.signalAttributes, USER_HASH);
if (opts?.hash != null) {
addAttribute(vars.signalAttributes, USER_HASH, opts.hash);
}
removeAttribute(vars.signalAttributes, USER_ROLES);
if (opts?.roles != null) {
addAttribute(vars.signalAttributes, USER_ROLES, opts.roles);
}
}