# swgg-github-repos
this zero-dependency package will provide a (nodejs-compatible) swagger-client for github-repos's web-apis, with a working web-demo

# live web demo
- [https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app)

[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app)



[![travis-ci.org build-status](https://api.travis-ci.org/kaizhu256/node-swgg-github-repos.svg)](https://travis-ci.org/kaizhu256/node-swgg-github-repos) [![coverage](https://kaizhu256.github.io/node-swgg-github-repos/build/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build/coverage.html/index.html)

[![NPM](https://nodei.co/npm/swgg-github-repos.png?downloads=true)](https://www.npmjs.com/package/swgg-github-repos)

[![build commit status](https://kaizhu256.github.io/node-swgg-github-repos/build/build.badge.svg)](https://travis-ci.org/kaizhu256/node-swgg-github-repos)

| git-branch : | [master](https://github.com/kaizhu256/node-swgg-github-repos/tree/master) | [beta](https://github.com/kaizhu256/node-swgg-github-repos/tree/beta) | [alpha](https://github.com/kaizhu256/node-swgg-github-repos/tree/alpha)|
|--:|:--|:--|:--|
| test-server-github : | [![github.com test-server](https://kaizhu256.github.io/node-swgg-github-repos/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-github-repos/build..master..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-swgg-github-repos/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-swgg-github-repos/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-swgg-github-repos/build..alpha..travis-ci.org/app)|
| test-report : | [![test-report](https://kaizhu256.github.io/node-swgg-github-repos/build..master..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..master..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-swgg-github-repos/build..alpha..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..alpha..travis-ci.org/test-report.html)|
| coverage : | [![coverage](https://kaizhu256.github.io/node-swgg-github-repos/build..master..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..master..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-swgg-github-repos/build..alpha..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-swgg-github-repos/build..alpha..travis-ci.org/coverage.html/index.html)|
| build-artifacts : | [![build-artifacts](https://kaizhu256.github.io/node-swgg-github-repos/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-github-repos/tree/gh-pages/build..master..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-swgg-github-repos/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-github-repos/tree/gh-pages/build..beta..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-swgg-github-repos/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-swgg-github-repos/tree/gh-pages/build..alpha..travis-ci.org)|

[![npmPackageListing](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmPackageListing.svg)](https://github.com/kaizhu256/node-swgg-github-repos)

![npmPackageDependencyTree](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmPackageDependencyTree.svg)



# table of contents
1. [cdn download](#cdn-download)
1. [documentation](#documentation)
1. [quickstart standalone app](#quickstart-standalone-app)
1. [quickstart example.js](#quickstart-examplejs)
1. [extra screenshots](#extra-screenshots)
1. [package.json](#packagejson)
1. [changelog of last 50 commits](#changelog-of-last-50-commits)
1. [internal build script](#internal-build-script)
1. [misc](#misc)



# cdn download
- [https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app/assets.swgg.swagger.json](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app/assets.swgg.swagger.json)



# documentation
#### cli help
![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmPackageCliHelp.svg)

#### api doc
- [https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/apidoc.html](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/apidoc.html)

[![apidoc](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/apidoc.html)

#### todo
- none

#### changelog for v2018.3.28
- npm publish v2018.3.28
- initial package
- none

#### this package requires
- darwin or linux os



# quickstart standalone app
#### to run this example, follow the instruction in the script below
- [assets.app.js](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app/assets.app.js)
```shell
# example.sh

# this shell script will download and run a web-demo of swgg-github-repos as a standalone app

# 1. download standalone app
curl -O https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/app/assets.app.js
# 2. run standalone app
PORT=8081 node ./assets.app.js
# 3. open a browser to http://127.0.0.1:8081 and play with the web-demo
# 4. edit file assets.app.js to suit your needs
```

#### output from browser
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/app/assets.example.html)

#### output from shell
![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.svg)



# quickstart example.js
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/app/assets.example.html)

#### to run this example, follow the instruction in the script below
- [example.js](https://kaizhu256.github.io/node-swgg-github-repos/build..beta..travis-ci.org/example.js)
```javascript
/*
example.js

this script will run a web-demo of swgg-github-repos

instruction
    1. save this script as example.js
    2. run the shell command:
        $ npm install swgg-github-repos && PORT=8081 node example.js
    3. open a browser to http://127.0.0.1:8081 and play with the web-demo
    4. edit this script to suit your needs
*/



/* istanbul instrument in package swgg_github_repos */
/* jslint-utility2 */
/*jslint
    bitwise: true,
    browser: true,
    maxerr: 4,
    maxlen: 100,
    node: true,
    nomen: true,
    regexp: true,
    stupid: true
*/
(function () {
    'use strict';
    var local;



    // run shared js-env code - init-before
    (function () {
        // init local
        local = {};
        // init modeJs
        local.modeJs = (function () {
            try {
                return typeof navigator.userAgent === 'string' &&
                    typeof document.querySelector('body') === 'object' &&
                    typeof XMLHttpRequest.prototype.open === 'function' &&
                    'browser';
            } catch (errorCaughtBrowser) {
                return module.exports &&
                    typeof process.versions.node === 'string' &&
                    typeof require('http').createServer === 'function' &&
                    'node';
            }
        }());
        // init global
        local.global = local.modeJs === 'browser'
            ? window
            : global;
        // init utility2_rollup
        local = local.global.utility2_rollup || (local.modeJs === 'browser'
            ? local.global.utility2_swgg_github_repos
            : require('swgg-github-repos'));
        // init exports
        local.global.local = local;
        // init assets
        local.assetsDict['/assets.index.template.html'] = local.assetsDict['/assets.swgg.html'];
    }());
    switch (local.modeJs) {



    // run browser js-env code - init-test
    /* istanbul ignore next */
    case 'browser':
        break;



    // run node js-env code - init-test
    /* istanbul ignore next */
    case 'node':
        // init exports
        module.exports = local;
        // require builtins
        Object.keys(process.binding('natives')).forEach(function (key) {
            if (!local[key] && !(/\/|^_|^assert|^sys$/).test(key)) {
                local[key] = require(key);
            }
        });
        // init assets
        local.assetsDict = local.assetsDict || {};
        [
            'assets.index.css',
            'assets.index.template.html',
            'assets.swgg.swagger.json',
            'assets.swgg.swagger.server.json'
        ].forEach(function (file) {
            file = '/' + file;
            local.assetsDict[file] = local.assetsDict[file] || '';
            if (local.fs.existsSync(local.__dirname + file)) {
                local.assetsDict[file] = local.fs.readFileSync(
                    local.__dirname + file,
                    'utf8'
                );
            }
        });
/* validateLineSortedReset */
        local.assetsDict['/'] =
            local.assetsDict['/assets.example.html'] =
            local.assetsDict['/assets.index.template.html']
            .replace((/\{\{env\.(\w+?)\}\}/g), function (match0, match1) {
                switch (match1) {
                case 'npm_package_description':
                    return 'the greatest app in the world!';
                case 'npm_package_name':
                    return 'swgg-github-repos';
                case 'npm_package_nameLib':
                    return 'swgg_github_repos';
                case 'npm_package_version':
                    return '0.0.1';
                default:
                    return match0;
                }
            });
        // init cli
        if (module !== require.main || local.global.utility2_rollup) {
            break;
        }
        local.assetsDict['/assets.example.js'] =
            local.assetsDict['/assets.example.js'] ||
            local.fs.readFileSync(__filename, 'utf8');
        // bug-workaround - long $npm_package_buildCustomOrg
        /* jslint-ignore-begin */
        local.assetsDict['/assets.swgg_github_repos.js'] =
            local.assetsDict['/assets.swgg_github_repos.js'] ||
            local.fs.readFileSync(
                local.__dirname + '/lib.swgg_github_repos.js',
                'utf8'
            ).replace((/^#!/), '//');
        /* jslint-ignore-end */
        local.assetsDict['/favicon.ico'] = local.assetsDict['/favicon.ico'] || '';
        // if $npm_config_timeout_exit exists,
        // then exit this process after $npm_config_timeout_exit ms
        if (Number(process.env.npm_config_timeout_exit)) {
            setTimeout(process.exit, Number(process.env.npm_config_timeout_exit));
        }
        // start server
        if (local.global.utility2_serverHttp1) {
            break;
        }
        process.env.PORT = process.env.PORT || '8081';
        console.error('server starting on port ' + process.env.PORT);
        local.http.createServer(function (request, response) {
            request.urlParsed = local.url.parse(request.url);
            if (local.assetsDict[request.urlParsed.pathname] !== undefined) {
                response.end(local.assetsDict[request.urlParsed.pathname]);
                return;
            }
            response.statusCode = 404;
            response.end();
        }).listen(process.env.PORT);
        break;
    }
}());
```

#### output from browser
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/app/assets.example.html)

#### output from shell
![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.svg)



# extra screenshots
1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp%252Fassets.swgg.html.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp%252Fassets.swgg.html.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp%252Fassets.swgg.html.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp%252Fassets.swgg.html.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithub.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.deployGithubTest.browser.%252Fnode-swgg-github-repos%252Fbuild%252Fapp.png)



1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmTest.browser.%252F.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmTest.browser.%252F.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmTest.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.npmTest.browser.%252F.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleJs.browser.%252F.png)

1. [https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.browser.%252F.png](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.browser.%252F.png)
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.testExampleSh.browser.%252F.png)



# package.json
```json
{
    "author": "kai zhu <kaizhu256@gmail.com>",
    "description": "this zero-dependency package will provide a (nodejs-compatible) swagger-client for github-repos's web-apis, with a working web-demo",
    "devDependencies": {
        "electron-lite": "kaizhu256/node-electron-lite#alpha",
        "utility2": "kaizhu256/node-utility2#alpha"
    },
    "engines": {
        "node": ">=4.0"
    },
    "githubRepoAlias": "swgg-io/node-swgg-github-repos",
    "homepage": "https://github.com/kaizhu256/node-swgg-github-repos",
    "keywords": [
        "github-repos",
        "swagger-client"
    ],
    "license": "MIT",
    "main": "lib.swgg_github_repos.js",
    "name": "swgg-github-repos",
    "nameAliasPublish": "",
    "nameLib": "swgg_github_repos",
    "nameOriginal": "swgg-github-repos",
    "os": [
        "darwin",
        "linux"
    ],
    "repository": {
        "type": "git",
        "url": "https://github.com/kaizhu256/node-swgg-github-repos.git"
    },
    "scripts": {
        "apidocRawCreate": "[ ! -f npm_scripts.sh ] || ./npm_scripts.sh shNpmScriptApidocRawCreate",
        "apidocRawFetch": "[ ! -f npm_scripts.sh ] || ./npm_scripts.sh shNpmScriptApidocRawFetch",
        "build-ci": "utility2 shReadmeTest build_ci.sh",
        "env": "env",
        "heroku-postbuild": "npm uninstall utility2 2>/dev/null; npm install kaizhu256/node-utility2#alpha && utility2 shDeployHeroku",
        "postinstall": "[ ! -f npm_scripts.sh ] || ./npm_scripts.sh shNpmScriptPostinstall",
        "start": "PORT=${PORT:-8080} utility2 start test.js",
        "test": "PORT=$(utility2 shServerPortRandom) utility2 test test.js"
    },
    "swggAll": "github-all",
    "swggTags0": "github-repos",
    "version": "2018.3.28"
}
```



# changelog of last 50 commits
[![screenshot](https://kaizhu256.github.io/node-swgg-github-repos/build/screenshot.gitLog.svg)](https://github.com/kaizhu256/node-swgg-github-repos/commits)



# internal build script
- build_ci.sh
```shell
# build_ci.sh

# this shell script will run the build for this package

shBuildCiAfter() {(set -e
    # shDeployCustom
    shDeployGithub
    # shDeployHeroku
    shReadmeTest example.sh
)}

shBuildCiBefore() {(set -e
    shNpmTestPublished
    shReadmeTest example.js
)}

# run shBuildCi
eval $(utility2 source)
shBuildCi
```



# misc
- this package was created with [utility2](https://github.com/kaizhu256/node-utility2)
