UNPKG

@nuxt/telemetry

Version:

Nuxt collects anonymous telemetry data about general usage. This helps us to accurately gauge Nuxt feature usage and customization across all our users.

77 lines (69 loc) 2.08 kB
'use strict'; const utils = require('consola/utils'); const consola = require('consola'); const stdEnv = require('std-env'); const rc = require('rc9'); const fs = require('node:fs'); const version = "2.8.0"; const consentVersion = 1; function updateUserNuxtRc(key, val) { rc.updateUser({ [key]: val }, ".nuxtrc"); } let isDockerCached; function hasDockerEnv() { try { fs.statSync("/.dockerenv"); return true; } catch { return false; } } function hasDockerCGroup() { try { return fs.readFileSync("/proc/self/cgroup", "utf8").includes("docker"); } catch { return false; } } function hasDockerMountInfo() { try { return fs.readFileSync("/proc/self/mountinfo", "utf8").includes("/docker/containers/"); } catch { return false; } } function isDocker() { isDockerCached ??= hasDockerEnv() || hasDockerCGroup() || hasDockerMountInfo(); return isDockerCached; } async function ensureUserconsent(options) { if (options.consent && options.consent >= consentVersion) { return true; } if (stdEnv.isMinimal || process.env.CODESANDBOX_SSE || process.env.NEXT_TELEMETRY_DISABLED || isDocker()) { return false; } consola.consola.restoreAll(); process.stdout.write("\n"); consola.consola.info(`${utils.colors.green("Nuxt")} collects completely anonymous data about usage. This will help us improve Nuxt developer experience over time. Read more on ${utils.colors.underline(utils.colors.cyan("https://github.com/nuxt/telemetry"))} `); const accepted = await consola.consola.prompt("Are you interested in participating?", { type: "confirm" }); process.stdout.write("\n"); consola.consola.wrapAll(); if (accepted) { updateUserNuxtRc("telemetry.consent", consentVersion); updateUserNuxtRc("telemetry.enabled", true); return true; } updateUserNuxtRc("telemetry.enabled", false); return false; } exports.consentVersion = consentVersion; exports.ensureUserconsent = ensureUserconsent; exports.isDocker = isDocker; exports.updateUserNuxtRc = updateUserNuxtRc; exports.version = version;