/
readme-appraisal.js.html
127 lines (99 loc) · 5.43 KB
/
readme-appraisal.js.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>readme-appraisal.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ReadmeAppraisal.html">ReadmeAppraisal</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ReadmeAppraisal.html#for">for</a></span></li><li class="nav-heading">Modules</li><li class="nav-heading"><span class="nav-item-type type-module">M</span><span class="nav-item-name"><a href="module-readme-inspector.html">readme-inspector</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="module-readme-inspector.html#.authenticate">authenticate</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="module-readme-inspector.html#.check">check</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="module-readme-inspector.html#.getAppraisal">getAppraisal</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="module-readme-inspector.html#.getInfo">getInfo</a></span></li><li class="nav-heading">Externals</li><li class="nav-heading"><span class="nav-item-type type-external">E</span><span class="nav-item-name"><a href="external-Contents.html">Contents</a></span></li><li class="nav-heading"><span class="nav-item-type type-external">E</span><span class="nav-item-name"><a href="external-Octokit.html">Octokit</a></span></li><li class="nav-heading"><span class="nav-item-type type-external">E</span><span class="nav-item-name"><a href="external-Promise.html">Promise</a></span></li><li class="nav-heading"><span class="nav-item-type type-external">E</span><span class="nav-item-name"><a href="external-URL.html">URL</a></span></li><li class="nav-heading"><a href="global.html">Globals</a></li>
</nav>
<div id="main">
<h1 class="page-title">readme-appraisal.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>const dotenvExtended = require('dotenv-extended')
const envConfig = dotenvExtended.config()
const {URL} = require('url')
const appraisalData = require('./appraisal-data')
const camelCase = require('lodash.camelcase')
const got = require('got')
const mapKeys = require('lodash.mapkeys')
const adapt = (appraisal) => {
appraisal.breakdown =
mapKeys(appraisal.breakdown, (val, key) => camelCase(key))
return appraisal
}
/**
*
* @module readme-inspector/readme-appraisal
*
* @class ReadmeAppraisal
* @classdesc
* An API proxy/wrapper that invokes the readme-score-api
* in order to assess and grade the quality of a README file.
*
* @param {string} [serviceEndpointUrl=http://readme-score-api.herokuapp.com/score.json?url=&human_breakdown=false&force=false] - The URL of the
* readme-score-api service you want to consume.
*/
class ReadmeAppraisal {
constructor (serviceEndpointUrl = envConfig.API_ENDPOINT_README_SCORE) {
this.apiEndpoint = new URL(serviceEndpointUrl)
}
/**
* Evalutate the root-level README in a repository (if present).
*
* @method for
* @param {string} url - A URL or repository slug.
* @param {URL} [apiEndpoint=http://readme-score-api.herokuapp.com/score.json?url=] - The API endpoint.
* @returns {Promise<AppraisalData>} AppraisalData for a README.
* @memberof ReadmeAppraisal#
* @example
* const ReadmeAppraisal = require('./readme-appraisal')
*
* // Parameters: url|slug|string<html>
* const readmeAppraisal = new ReadmeAppraisal()
* const result = await readmeAppraisal.for('commonality/readme-inspector')
*/
async for (url) {
this.apiEndpoint.searchParams.set('url', url)
const serviceUrl = this.apiEndpoint.toString()
let result = null
try {
const {body} = await got(serviceUrl)
result = Object.assign({
}, appraisalData, JSON.parse(body))
} catch (err) {
/* istanbul ignore next */
result.err = err.response.body
}
return adapt(result)
}
}
module.exports = ReadmeAppraisal
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Mon Apr 30 2018 21:41:18 GMT-0500 (CDT) using the Minami theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>