opusdev/vector-similarity-api
1
1'use strict';2 3var process$1 = require('process');4var semver = require('semver');5var os = require('os');6var path = require('path');7var fs = require('fs');8var https = require('https');9 10/******************************************************************************11Copyright (c) Microsoft Corporation.12 13Permission to use, copy, modify, and/or distribute this software for any14purpose with or without fee is hereby granted.15 16THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH17REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY18AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,19INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM20LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR21OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR22PERFORMANCE OF THIS SOFTWARE.23***************************************************************************** */24/* global Reflect, Promise */25 26 27function __awaiter(thisArg, _arguments, P, generator) {28 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }29 return new (P || (P = Promise))(function (resolve, reject) {30 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }31 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }32 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }33 step((generator = generator.apply(thisArg, _arguments || [])).next());34 });35}36 37function __generator(thisArg, body) {38 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;39 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;40 function verb(n) { return function (v) { return step([n, v]); }; }41 function step(op) {42 if (f) throw new TypeError("Generator is already executing.");43 while (g && (g = 0, op[0] && (_ = 0)), _) try {44 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;45 if (y = 0, t) op = [op[0] & 2, t.value];46 switch (op[0]) {47 case 0: case 1: t = op; break;48 case 4: _.label++; return { value: op[1], done: false };49 case 5: _.label++; y = op[1]; op = [0]; continue;50 case 7: op = _.ops.pop(); _.trys.pop(); continue;51 default:52 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }53 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }54 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }55 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }56 if (t[2]) _.ops.pop();57 _.trys.pop(); continue;58 }59 op = body.call(thisArg, _);60 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }61 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };62 }63}64 65var packageJson = process$1.env.npm_package_json;66var userAgent = process$1.env.npm_config_user_agent;67var isNpm6 = Boolean(userAgent && userAgent.startsWith('npm'));68var isNpm7 = Boolean(packageJson && packageJson.endsWith('package.json'));69var isNpm = isNpm6 || isNpm7;70var isYarn = Boolean(userAgent && userAgent.startsWith('yarn'));71var isNpmOrYarn = isNpm || isYarn;72 73var homeDirectory = os.homedir();74var configDir = process.env.XDG_CONFIG_HOME ||75 path.join(homeDirectory, '.config', 'simple-update-notifier');76var getConfigFile = function (packageName) {77 return path.join(configDir, "".concat(packageName.replace('@', '').replace('/', '__'), ".json"));78};79var createConfigDir = function () {80 if (!fs.existsSync(configDir)) {81 fs.mkdirSync(configDir, { recursive: true });82 }83};84var getLastUpdate = function (packageName) {85 var configFile = getConfigFile(packageName);86 try {87 if (!fs.existsSync(configFile)) {88 return undefined;89 }90 var file = JSON.parse(fs.readFileSync(configFile, 'utf8'));91 return file.lastUpdateCheck;92 }93 catch (_a) {94 return undefined;95 }96};97var saveLastUpdate = function (packageName) {98 var configFile = getConfigFile(packageName);99 fs.writeFileSync(configFile, JSON.stringify({ lastUpdateCheck: new Date().getTime() }));100};101 102var getDistVersion = function (packageName, distTag) { return __awaiter(void 0, void 0, void 0, function () {103 var url;104 return __generator(this, function (_a) {105 url = "https://registry.npmjs.org/-/package/".concat(packageName, "/dist-tags");106 return [2 /*return*/, new Promise(function (resolve, reject) {107 https108 .get(url, function (res) {109 var body = '';110 res.on('data', function (chunk) { return (body += chunk); });111 res.on('end', function () {112 try {113 var json = JSON.parse(body);114 var version = json[distTag];115 if (!version) {116 reject(new Error('Error getting version'));117 }118 resolve(version);119 }120 catch (_a) {121 reject(new Error('Could not parse version response'));122 }123 });124 })125 .on('error', function (err) { return reject(err); });126 })];127 });128}); };129 130var hasNewVersion = function (_a) {131 var pkg = _a.pkg, _b = _a.updateCheckInterval, updateCheckInterval = _b === void 0 ? 1000 * 60 * 60 * 24 : _b, _c = _a.distTag, distTag = _c === void 0 ? 'latest' : _c, alwaysRun = _a.alwaysRun, debug = _a.debug;132 return __awaiter(void 0, void 0, void 0, function () {133 var lastUpdateCheck, latestVersion;134 return __generator(this, function (_d) {135 switch (_d.label) {136 case 0:137 createConfigDir();138 lastUpdateCheck = getLastUpdate(pkg.name);139 if (!(alwaysRun ||140 !lastUpdateCheck ||141 lastUpdateCheck < new Date().getTime() - updateCheckInterval)) return [3 /*break*/, 2];142 return [4 /*yield*/, getDistVersion(pkg.name, distTag)];143 case 1:144 latestVersion = _d.sent();145 saveLastUpdate(pkg.name);146 if (semver.gt(latestVersion, pkg.version)) {147 return [2 /*return*/, latestVersion];148 }149 else if (debug) {150 console.error("Latest version (".concat(latestVersion, ") not newer than current version (").concat(pkg.version, ")"));151 }152 return [3 /*break*/, 3];153 case 2:154 if (debug) {155 console.error("Too recent to check for a new update. simpleUpdateNotifier() interval set to ".concat(updateCheckInterval, "ms but only ").concat(new Date().getTime() - lastUpdateCheck, "ms since last check."));156 }157 _d.label = 3;158 case 3: return [2 /*return*/, false];159 }160 });161 });162};163 164var borderedText = function (text) {165 var lines = text.split('\n');166 var width = Math.max.apply(Math, lines.map(function (l) { return l.length; }));167 var res = ["\u250C".concat('─'.repeat(width + 2), "\u2510")];168 for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {169 var line = lines_1[_i];170 res.push("\u2502 ".concat(line.padEnd(width), " \u2502"));171 }172 res.push("\u2514".concat('─'.repeat(width + 2), "\u2518"));173 return res.join('\n');174};175 176var simpleUpdateNotifier = function (args) { return __awaiter(void 0, void 0, void 0, function () {177 var latestVersion, err_1;178 return __generator(this, function (_a) {179 switch (_a.label) {180 case 0:181 if (!args.alwaysRun &&182 (!process.stdout.isTTY || (isNpmOrYarn && !args.shouldNotifyInNpmScript))) {183 if (args.debug) {184 console.error('Opting out of running simpleUpdateNotifier()');185 }186 return [2 /*return*/];187 }188 _a.label = 1;189 case 1:190 _a.trys.push([1, 3, , 4]);191 return [4 /*yield*/, hasNewVersion(args)];192 case 2:193 latestVersion = _a.sent();194 if (latestVersion) {195 console.error(borderedText("New version of ".concat(args.pkg.name, " available!\nCurrent Version: ").concat(args.pkg.version, "\nLatest Version: ").concat(latestVersion)));196 }197 return [3 /*break*/, 4];198 case 3:199 err_1 = _a.sent();200 // Catch any network errors or cache writing errors so module doesn't cause a crash201 if (args.debug && err_1 instanceof Error) {202 console.error('Unexpected error in simpleUpdateNotifier():', err_1);203 }204 return [3 /*break*/, 4];205 case 4: return [2 /*return*/];206 }207 });208}); };209 210module.exports = simpleUpdateNotifier;211 