CoolFace
Apppublic

opusdev/vector-similarity-api

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes
index.js211 linesDownload Raw Back to build
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