UNPKG

supertokens-node

Version:
92 lines (91 loc) 3.24 kB
"use strict"; /* Copyright (c) 2022, VRAI Labs and/or its affiliates. All rights reserved. * * This software is licensed under the Apache License, Version 2.0 (the * "License") as published by the Apache Software Foundation. * * You may not use this file except in compliance with the License. You may * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = analyticsPost; const querier_1 = require("../../../querier"); const version_1 = require("../../../version"); const error_1 = __importDefault(require("../../../error")); async function analyticsPost({ stInstance, options, userContext }) { // If telemetry is disabled, dont send any event if (!stInstance.telemetryEnabled) { return { status: "OK", }; } const { email, dashboardVersion } = await options.req.getJSONBody(); if (email === undefined) { throw new error_1.default({ message: "Missing required property 'email'", type: error_1.default.BAD_INPUT_ERROR, }); } if (dashboardVersion === undefined) { throw new error_1.default({ message: "Missing required property 'dashboardVersion'", type: error_1.default.BAD_INPUT_ERROR, }); } let telemetryId; let numberOfUsers; try { let querier = querier_1.Querier.getNewInstanceOrThrowError(stInstance); let response = await querier.sendGetRequest("/telemetry", {}, userContext); if (response.exists) { telemetryId = response.telemetryId; } numberOfUsers = await stInstance.getUserCount(undefined, undefined, userContext); } catch (_) { // If either telemetry id API or user count fetch fails, no event should be sent return { status: "OK", }; } const { apiDomain, getOrigin: websiteDomain, appName } = options.appInfo; const data = { websiteDomain: websiteDomain({ request: undefined, userContext, }).getAsStringDangerous(), apiDomain: apiDomain.getAsStringDangerous(), appName, sdk: "node", sdkVersion: version_1.version, telemetryId, numberOfUsers, email, dashboardVersion, }; try { await (0, querier_1.doFetch)("https://api.supertokens.com/0/st/telemetry", { method: "POST", body: JSON.stringify(data), headers: { "api-version": "3", "content-type": "application/json; charset=utf-8", }, }); } catch (e) { // Ignored } return { status: "OK", }; }