NpmPackageRepo

See if npm package repo is forked from others

2022-09-27 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         NpmPackageRepo
// @namespace    mailto:[email protected]
// @version      0.1.0
// @description  See if npm package repo is forked from others
// @author       fish-404
// @match        https://www.npmjs.com/package/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=npmjs.com
// @homepage     https://github.com/fish-404/UserScriptsStyles/tree/main/npm/Scripts
// @license      MIT
// @grant        GM.xmlHttpRequest
// ==/UserScript==

(function() {
    'use strict';
    let link = document.querySelector('#repository-link').innerText.substring(11);
    let repo = document.querySelector('#repository');

    const notFoundHtml = '<img src="https://badgen.net/badge/status/404/red" alt="Repository Not Found Badge"/>'

    if (link) {
        GM.xmlHttpRequest( {
            method: "GET",
            url: `https://api.github.com/repos/${link}`,
            headers: {
                "accept": "application/vnd.github+json"
            },
            onload: function(response) {
                if (response.status = '200') {
                    if (response.statusText === "Not Found") {
                        insertBadge(repo, notFoundHtml);
                    }
                    else {
                        let cur = JSON.parse(response.response);
                        let curForkHtml = `<img src="https://badgen.net/badge/Forks/${cur.forks}/blue" alt="Repository Total Fork Badge"/>`;
                        if (cur.fork === true) {
                            insertBadge(repo, curForkHtml);
                            insertBadge(repo,
                                `<a href="${cur.parent.html_url}">
                                    <img src="https://badgen.net/badge/Parent Forks/${cur.parent.forks}/orange" alt="Respository Parent Fork Badge" />
                                </a>`);
                        }
                        else {
                            insertBadge(repo, curForkHtml);
                        }
                    }
                }
            }
        });
    }
    else {
        console.info("Repository link not found");
    }
})();

function insertBadge(element, htmlText) {
   element.insertAdjacentHTML('afterend', htmlText);
}