UNPKG

create-strapi-app

Version:

Generate a new Strapi application.

88 lines (85 loc) 2.88 kB
import os from 'os'; import _ from 'lodash'; // Add properties from the package.json strapi key in the metadata function addPackageJsonStrapiMetadata(metadata, scope) { const { packageJsonStrapi = {} } = scope; return _.defaults(metadata, packageJsonStrapi); } const boolToString = (value)=>(value === true).toString(); const getProperties = (scope, error)=>{ const eventProperties = { error: typeof error === 'string' ? error : error && error.message }; const userProperties = { os: os.type(), osPlatform: os.platform(), osArch: os.arch(), osRelease: os.release(), nodeVersion: process.versions.node }; const groupProperties = { version: scope.strapiVersion, docker: scope.docker, useYarn: scope.packageManager === 'yarn', packageManager: scope.packageManager, /** @deprecated */ useTypescriptOnServer: boolToString(scope.useTypescript), /** @deprecated */ useTypescriptOnAdmin: boolToString(scope.useTypescript), useTypescript: boolToString(scope.useTypescript), isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud', noRun: boolToString(scope.runApp), projectId: scope.uuid, useExample: boolToString(scope.useExample), gitInit: boolToString(scope.gitInit), installDependencies: boolToString(scope.installDependencies) }; return { eventProperties, userProperties, groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope) }; }; function trackEvent(event, payload) { if (process.env.NODE_ENV === 'test') { return; } try { return fetch('https://analytics.strapi.io/api/v2/track', { method: 'POST', body: JSON.stringify({ event, ...payload }), signal: AbortSignal.timeout(1000), headers: { 'Content-Type': 'application/json', 'X-Strapi-Event': event } }).catch(()=>{}); } catch (err) { /** ignore errors */ return Promise.resolve(); } } async function trackError({ scope, error }) { const properties = getProperties(scope, error); try { return await trackEvent('didNotCreateProject', { deviceId: scope.deviceId, ...properties }); } catch (err) { /** ignore errors */ return Promise.resolve(); } } async function trackUsage({ event, scope, error }) { const properties = getProperties(scope, error); try { return await trackEvent(event, { deviceId: scope.deviceId, ...properties }); } catch (err) { /** ignore errors */ return Promise.resolve(); } } export { trackError, trackUsage }; //# sourceMappingURL=usage.mjs.map