= cockpit.js: UtilitiesVarious utility functions[[cockpit-format]]== cockpit.format()....string = cockpit.format(template, args)string = cockpit.format(template, [arg, ...])....Format a string interpolating `+args+` into `+template+` using shelllike syntax. The `+args+` may be either an array or javascript object.The `+template+` can contain fields that look like `+$name+` or`+${name}+` or `+$0+`. Numeric fields are used with array `+args+` andstart at zero.In the second form, multiple `+arg+` arguments may be passed directly,and interpolated as as numeric fields in the `+template+`.All falsy arguments except the numbers `+0+` and `+0.0+`are replaced byan empty string.[[cockpit-format-number]]== cockpit.format_number()....string = cockpit.format_number(number, [precision])....Formats `+number+` into a displayable `+string+`. If the number is notan integer, it is rounded to the given number of decimal places,defaulting to 3. If the number is near zero, but not quite zero it isrounded to the smallest non-zero value of the given precision; i.e.±0.001 for default precision 3.If `+number+` is `+null+` or `+undefined+` an empty string will bereturned.[[cockpit-format-bytes]]== cockpit.format_bytes()....string = cockpit.format_bytes(number, [options])....Formats `+number+` into a displayable `+string+` with a suffix, such as_kB_ or _MB_.By default, SI units are used. IEC units (1024-based) can be requestedby including `+base2: true+` in `+options+`.By default, non-integer numbers will be formatted with 3 digits ofprecision. This can be changed with `+options.precision+`.If `+number+` is `+null+` or `+undefined+` an empty string will bereturned.[[cockpit-format-bytes-per-sec]]== cockpit.format_bytes_per_sec()....string = cockpit.format_bytes_per_sec(number, [options])....Format `+number+` of bytes into a displayable speed `+string+`.This function is mostly equivalent to `+cockpit.format_bytes()+` but thereturned value contains a unit like _kB/s_ or _MB/s_.[[cockpit-format-bits-per-sec]]== cockpit.format_bits_per_sec()....string = cockpit.format_bits_per_sec(number, [options])....Format `+number+` of bits into a displayable speed `+string+`.This function is mostly equivalent to `+cockpit.format_bytes()+` but thereturned value contains a unit like _kbps_ or _Mbps_.This function does not support IEC units. `+base2+` may not be passed aspart of `+options+`.[[cockpit-init]]== cockpit.init()....await cockpit.init();cockpit.init().then(() => { ... });....Requests initialization of the Cockpit client library. This will ensurethat the transport is connected and we are ready to create channels. Italso populates the `+cockpit.info+` field.This function returns a promise. Initialization isn't complete until thepromise has resolved. You can either `+await+` it or call `+.then()+` onit.[[cockpit-info]]== cockpit.info....cockpit.info.channels[payload]cockpit.info.os_release[field]cockpit.info.usercockpit.info.ws.version....This object contains information about Cockpit itself. It is onlyavailable after cockpit.init() has been called and awaited.`+channels+`::This is a mapping of channel payload types (keys, strings) supportedby the bridge to capabilities advertised by those channels (values,lists of strings). Channels are listed even if they don't advertiseany capabilities, making this useful as a way to determine whichchannel types are supported by the bridge.`+os_release+`::This is the data from the `+/etc/os-release+` or`+/usr/lib/os-release+` on the system that the bridge is running on.It is a mapping from the key names to their values. See thehttps://www.freedesktop.org/software/systemd/man/latest/os-release.html[os-releaseSpecification] for information about the available keys.`+user+`::Contains information about the user we're logged in as.`+uid+`;;This is unix user id as an integer.`+gid+`;;This is unix user group id as an integer.`+name+`;;This is the unix user name like `+"root"+`.`+fullname+`;;This is a readable name for the user, from the GECOS field.`+group+`;;This is the primary group name of the user.`+groups+`;;This is an array of group names to which the user belongs. The firstitem in this list is the primary group.`+home+`;;This is user's home directory.`+shell+`;;This is unix user shell.`+ws+`::Contains information about the webserver Cockpit is being served with.`+version+`;;The version of the webserver.[[cockpit-event-target]]== cockpit.event_target....cockpit.event_target(object, [handlers])....Adds anhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget[EventTarget]implementation to the `+object+`. Optionally store the handlers in`+handlers+` if its specified.