├── .eslintrc.json
├── .flowconfig
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── indexOLD.js
├── lib
├── constants.js
├── getBoxscore.js
├── getColorFeed.js
├── getGameFeed.js
├── getGames.js
├── getLinescore.js
├── getStandings.js
├── getTeams.js
└── index.js
├── package-lock.json
├── package.json
├── src
├── constants.js
├── getBoxscore.js
├── getColorFeed.js
├── getGameFeed.js
├── getGames.js
├── getLinescore.js
├── getStandings.js
├── getTeams.js
└── index.js
└── test.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "es6": true,
4 | "node": true
5 | },
6 | "parser": "babel-eslint",
7 | "extends": "eslint:recommended",
8 | "parserOptions": {
9 | "sourceType": "module"
10 | },
11 | "plugins": ["flowtype"],
12 | "rules": {
13 | "flowtype/boolean-style": [2, "boolean"],
14 | "flowtype/define-flow-type": 1,
15 | "flowtype/delimiter-dangle": [2, "never"],
16 | "flowtype/generic-spacing": [2, "never"],
17 | "flowtype/no-primitive-constructor-types": 2,
18 | "flowtype/no-types-missing-file-annotation": 2,
19 | "flowtype/no-weak-types": "off",
20 | "flowtype/object-type-delimiter": [2, "comma"],
21 | "flowtype/require-parameter-type": 2,
22 | "flowtype/require-return-type": [
23 | 2,
24 | "always",
25 | {
26 | "annotateUndefined": "never",
27 | "excludeArrowFunctions": true
28 | }
29 | ],
30 | "flowtype/require-valid-file-annotation": 2,
31 | "flowtype/semi": [2, "always"],
32 | "flowtype/space-after-type-colon": [2, "always"],
33 | "flowtype/space-before-generic-bracket": [2, "never"],
34 | "flowtype/space-before-type-colon": [2, "never"],
35 | "flowtype/type-id-match": [2, "^([A-Z][a-z0-9]+)+Type$"],
36 | "flowtype/union-intersection-spacing": [2, "always"],
37 | "flowtype/use-flow-type": 1,
38 | "flowtype/valid-syntax": 1,
39 | "accessor-pairs": "error",
40 | "array-bracket-newline": "error",
41 | "array-bracket-spacing": "error",
42 | "array-callback-return": "error",
43 | "array-element-newline": "error",
44 | "arrow-body-style": "off",
45 | "arrow-parens": "error",
46 | "arrow-spacing": [
47 | "error",
48 | {
49 | "after": true,
50 | "before": true
51 | }
52 | ],
53 | "block-scoped-var": "error",
54 | "block-spacing": "error",
55 | "brace-style": ["error", "1tbs"],
56 | "callback-return": "error",
57 | "camelcase": "error",
58 | "capitalized-comments": "off",
59 | "class-methods-use-this": "error",
60 | "comma-dangle": "error",
61 | "comma-spacing": [
62 | "error",
63 | {
64 | "after": true,
65 | "before": false
66 | }
67 | ],
68 | "comma-style": ["error", "last"],
69 | "complexity": "error",
70 | "computed-property-spacing": "error",
71 | "consistent-return": "off",
72 | "consistent-this": "error",
73 | "curly": "error",
74 | "default-case": "error",
75 | "dot-location": "error",
76 | "dot-notation": "error",
77 | "eol-last": "error",
78 | "eqeqeq": "error",
79 | "for-direction": "error",
80 | "func-call-spacing": "error",
81 | "func-name-matching": "error",
82 | "func-style": ["error", "expression"],
83 | "function-paren-newline": "error",
84 | "generator-star-spacing": "error",
85 | "getter-return": "error",
86 | "global-require": "error",
87 | "guard-for-in": "error",
88 | "handle-callback-err": "error",
89 | "id-blacklist": "error",
90 | "id-length": "error",
91 | "id-match": "error",
92 | "implicit-arrow-linebreak": ["error", "beside"],
93 | "indent": "off",
94 | "indent-legacy": "off",
95 | "init-declarations": "error",
96 | "jsx-quotes": "error",
97 | "key-spacing": "error",
98 | "keyword-spacing": "off",
99 | "line-comment-position": "error",
100 | "linebreak-style": "off",
101 | "lines-around-comment": "error",
102 | "lines-around-directive": "error",
103 | "lines-between-class-members": "error",
104 | "max-depth": "error",
105 | "max-len": "off",
106 | "max-lines": "error",
107 | "max-nested-callbacks": "error",
108 | "max-params": "error",
109 | "max-statements": "error",
110 | "max-statements-per-line": "error",
111 | "multiline-comment-style": "error",
112 | "new-cap": "error",
113 | "new-parens": "error",
114 | "newline-after-var": "off",
115 | "newline-before-return": "error",
116 | "newline-per-chained-call": "error",
117 | "no-alert": "error",
118 | "no-array-constructor": "error",
119 | "no-await-in-loop": "error",
120 | "no-bitwise": "error",
121 | "no-buffer-constructor": "error",
122 | "no-caller": "error",
123 | "no-catch-shadow": "error",
124 | "no-confusing-arrow": "error",
125 | "no-continue": "error",
126 | "no-console": "warn",
127 | "no-div-regex": "error",
128 | "no-duplicate-imports": "error",
129 | "no-else-return": "off",
130 | "no-empty-function": "error",
131 | "no-eq-null": "error",
132 | "no-eval": "error",
133 | "no-extend-native": "error",
134 | "no-extra-bind": "error",
135 | "no-extra-label": "error",
136 | "no-extra-parens": "off",
137 | "no-floating-decimal": "error",
138 | "no-implicit-coercion": "error",
139 | "no-implicit-globals": "error",
140 | "no-implied-eval": "error",
141 | "no-inline-comments": "error",
142 | "no-invalid-this": "error",
143 | "no-iterator": "error",
144 | "no-label-var": "error",
145 | "no-labels": "error",
146 | "no-lone-blocks": "error",
147 | "no-lonely-if": "error",
148 | "no-loop-func": "error",
149 | "no-magic-numbers": "error",
150 | "no-mixed-operators": "error",
151 | "no-mixed-requires": "error",
152 | "no-multi-assign": "error",
153 | "no-multi-spaces": "error",
154 | "no-multi-str": "error",
155 | "no-multiple-empty-lines": "error",
156 | "no-native-reassign": "error",
157 | "no-negated-condition": "error",
158 | "no-negated-in-lhs": "error",
159 | "no-nested-ternary": "error",
160 | "no-new": "error",
161 | "no-new-func": "error",
162 | "no-new-object": "error",
163 | "no-new-require": "error",
164 | "no-new-wrappers": "error",
165 | "no-octal-escape": "error",
166 | "no-param-reassign": "error",
167 | "no-path-concat": "error",
168 | "no-plusplus": "error",
169 | "no-process-env": "error",
170 | "no-process-exit": "error",
171 | "no-proto": "error",
172 | "no-prototype-builtins": "error",
173 | "no-restricted-globals": "error",
174 | "no-restricted-imports": "error",
175 | "no-restricted-modules": "error",
176 | "no-restricted-properties": "error",
177 | "no-restricted-syntax": "error",
178 | "no-return-assign": "error",
179 | "no-return-await": "error",
180 | "no-script-url": "error",
181 | "no-self-compare": "error",
182 | "no-sequences": "error",
183 | "no-shadow": "error",
184 | "no-shadow-restricted-names": "error",
185 | "no-spaced-func": "error",
186 | "no-sync": "error",
187 | "no-tabs": "error",
188 | "no-template-curly-in-string": "error",
189 | "no-ternary": "off",
190 | "no-throw-literal": "error",
191 | "no-trailing-spaces": "error",
192 | "no-undef-init": "error",
193 | "no-undefined": "error",
194 | "no-underscore-dangle": "error",
195 | "no-unmodified-loop-condition": "error",
196 | "no-unneeded-ternary": [
197 | "error",
198 | {
199 | "defaultAssignment": true
200 | }
201 | ],
202 | "no-unused-expressions": "error",
203 | "no-use-before-define": "error",
204 | "no-useless-call": "error",
205 | "no-useless-computed-key": "error",
206 | "no-useless-concat": "off",
207 | "no-useless-constructor": "error",
208 | "no-useless-rename": "error",
209 | "no-useless-return": "error",
210 | "no-var": "error",
211 | "no-void": "error",
212 | "no-warning-comments": [
213 | "error",
214 | {
215 | "location": "start"
216 | }
217 | ],
218 | "no-whitespace-before-property": "error",
219 | "no-with": "error",
220 | "nonblock-statement-body-position": "error",
221 | "object-curly-newline": "off",
222 | "object-curly-spacing": "off",
223 | "object-property-newline": "off",
224 | "object-shorthand": "error",
225 | "one-var": "off",
226 | "one-var-declaration-per-line": "error",
227 | "operator-assignment": "error",
228 | "operator-linebreak": "error",
229 | "padded-blocks": "off",
230 | "padding-line-between-statements": "error",
231 | "prefer-arrow-callback": "error",
232 | "prefer-const": "error",
233 | "prefer-destructuring": "error",
234 | "prefer-numeric-literals": "error",
235 | "prefer-promise-reject-errors": "error",
236 | "prefer-reflect": "error",
237 | "prefer-rest-params": "error",
238 | "prefer-spread": "error",
239 | "prefer-template": "off",
240 | "quote-props": "off",
241 | "quotes": "off",
242 | "radix": "error",
243 | "require-await": "error",
244 | "require-jsdoc": "error",
245 | "rest-spread-spacing": "error",
246 | "semi": "off",
247 | "semi-spacing": "error",
248 | "semi-style": ["error", "last"],
249 | "sort-imports": "error",
250 | "sort-keys": "off",
251 | "sort-vars": "error",
252 | "space-before-blocks": "error",
253 | "space-before-function-paren": "off",
254 | "space-in-parens": "off",
255 | "space-infix-ops": "off",
256 | "space-unary-ops": "error",
257 | "spaced-comment": ["error", "always"],
258 | "strict": "error",
259 | "switch-colon-spacing": "error",
260 | "symbol-description": "error",
261 | "template-curly-spacing": ["error", "never"],
262 | "template-tag-spacing": "error",
263 | "unicode-bom": ["error", "never"],
264 | "valid-jsdoc": "off",
265 | "vars-on-top": "error",
266 | "wrap-iife": "error",
267 | "wrap-regex": "error",
268 | "yield-star-spacing": "error",
269 | "yoda": ["error", "never"]
270 | },
271 | "settings": {
272 | "flowtype": {
273 | "onlyFilesWithFlowAnnotation": false
274 | }
275 | }
276 | }
277 |
--------------------------------------------------------------------------------
/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 |
3 | [include]
4 |
5 | [libs]
6 |
7 | [lints]
8 |
9 | [options]
10 |
11 | [strict]
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "8"
4 | - "9"
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Eric Stout
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # node-mlb-api
2 |
3 | [](https://travis-ci.org/erwstout/node-mlb-api)
4 | [](https://badge.fury.io/js/node-mlb-api)
5 |
6 | A Node.js wrapper for the new MLB API.
7 |
8 | ## ⚠️ RIP API
9 |
10 | It looks like MLB has taken down the endpoints this repo hit to gather information.
11 | I'll be looking into other means, but for now this repo is useless. 🙃
12 |
13 | ## Getting Started
14 |
15 | Install via npm
16 | `npm install node-mlb-api --save`
17 |
18 | Use in your Node.js application
19 |
20 | ```js
21 | const MLBApi = require("node-mlb-api");
22 |
23 | const games = MLBApi.getGames();
24 | ```
25 |
26 | ## Available Functions
27 |
28 | All functions return a promise containing the JSON response.
29 |
30 | ### `getGames()`
31 |
32 | Get a list of games. Accepts an optional date argument as a string (MM/DD/YYYY)
33 | to get particular date. If no argument is passed it will get the current day.
34 |
35 | ```js
36 | MLBApi.getGames("03/03/2018");
37 | ```
38 |
39 | ### `getTeams()`
40 |
41 | Accepts optional argument for singleTeamId to only return information from one team. Otherwise
42 | it will return all 32 teams.
43 |
44 | ```js
45 | MLBApi.getTeams(133); // returns Oakland Athletics - see the MLB Stats documentation for IDs
46 | ```
47 |
48 | ### `getGameFeed()`
49 |
50 | Gets a single game's live feed. Accepts a **required** argument of the `gamePk` id.
51 |
52 | ```js
53 | MLBApi.getGameFeed(533786); // Tigers vs. Yankees 02/23/2018
54 | ```
55 |
56 | ### `getLinescore()`
57 |
58 | Gets a single game's linescore. Accepts a **required** argument of the `gamePk` id.
59 |
60 | ```js
61 | MLBApi.getLinescore(533786); // Tigers vs. Yankees 02/23/2018
62 | ```
63 |
64 | ### `getBoxscore()`
65 |
66 | Gets a single game's boxscore. Accepts a **required** argument of the `gamePk` id.
67 |
68 | ```js
69 | MLBApi.getBoxscore(533786); // Tigers vs. Yankees 02/23/2018
70 | ```
71 |
72 | ### `getColorFeed()`
73 |
74 | Gets a single game's color feed. Accepts a **required** argument of the `gamePk` id.
75 | Beware, the payload for this can get very large - see the disclaiming on the [MLB Stats API](http://statsapi.mlb.com/docs/)
76 | to learn more and how to manage the data responsibly.
77 |
78 | ```js
79 | MLBApi.getBoxscore(533786); // Tigers vs. Yankees 02/23/2018
80 | ```
81 |
82 | ### `getStandings()`
83 |
84 | Gets regular season standings by League. Accepts a **required** string argument of league
85 | (`'AL'` / `'NL'`) and an _optional_ year argument (`YYYY`). The response from the API
86 | is broken up by division.
87 |
88 | ```js
89 | MLBApi.getStandings("NL", 2017); // 2017 NL Standings
90 | ```
91 |
92 | ## MLB Stats API
93 |
94 | The MLB Stats API documentation can be found [here](http://statsapi.mlb.com/docs/)
95 |
96 | **NOTICE:** This is **NOT** an official MLB product or affiliated with MLB in anyway.
97 |
--------------------------------------------------------------------------------
/indexOLD.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Node MLB API
3 | * Author: Eric Stout
4 | * Description: A Node wrapper for the new MLB Stats API.
5 | * Version: 0.0.1
6 | * License: MIT
7 | */
8 |
9 | const request = require("request");
10 |
11 | // api endpoint
12 | const apiURL = `http://statsapi.mlb.com:80/api/v1/`;
13 | const apiURL11 = `http://statsapi.mlb.com:80/api/v1.1/`;
14 |
15 | // Get Current Year
16 | const currentYear = new Date().getFullYear();
17 |
18 | /**
19 | * Get a list of games. If no game date is passed (MM/DD/YYYY), gets the current day
20 | */
21 | const getGames = function(gameDate = "") {
22 | return new Promise((resolve, reject) => {
23 | request(
24 | { url: apiURL + "schedule?sportId=1" + "&date=" + gameDate, json: true },
25 | (error, response, body) => {
26 | if (error) {
27 | reject(error);
28 | } else {
29 | resolve(body);
30 | }
31 | }
32 | );
33 | });
34 | };
35 |
36 | /**
37 | * Get a list of data about teams
38 | * Accepts argument for singleTeamId to only return information from one team
39 | * Possible TODO: Allow to get multiple teams, but not all? Use case??
40 | * Possible TODO: Add team abbrev for easy call? `getTeams('CLE')`
41 | */
42 | const getTeams = function(singleTeamId = "") {
43 | return new Promise((resolve, reject) => {
44 | request(
45 | { url: apiURL + `teams?sportId=1&teamId=${singleTeamId}`, json: true },
46 | (error, response, body) => {
47 | if (error) {
48 | reject(error);
49 | } else {
50 | resolve(body);
51 | }
52 | }
53 | );
54 | });
55 | };
56 |
57 | /**
58 | * Get Single Game Feed
59 | */
60 | const getGameFeed = function(gameId) {
61 | return new Promise((resolve, reject) => {
62 | request(
63 | { url: apiURL11 + `game/${gameId}/feed/live`, json: true },
64 | (error, response, body) => {
65 | if (error) {
66 | reject(error);
67 | } else {
68 | resolve(body);
69 | }
70 | }
71 | );
72 | });
73 | };
74 |
75 | /**
76 | * Get Regular Season Standings
77 | * Accepts League Parameter (AL/NL), and year (YYYY)
78 | * If no year, return current year.
79 | */
80 | const getStandings = function(league, year) {
81 | return new Promise((resolve, reject) => {
82 | let leagueId = "";
83 |
84 | if (league === "AL") {
85 | leagueId = "103";
86 | } else if (league === "NL") {
87 | leagueId = "104";
88 | } else if (league !== "AL" || league !== "NL") {
89 | return console.error("Please enter a league. Accepted: AL / NL");
90 | }
91 |
92 | request(
93 | {
94 | url: `${apiURL}standings?leagueId=${leagueId}&season=${
95 | year ? year : currentYear
96 | }`,
97 | json: true
98 | },
99 | (error, response, body) => {
100 | if (error) {
101 | reject(error);
102 | } else {
103 | resolve(body);
104 | }
105 | }
106 | );
107 | });
108 | };
109 |
110 | /**
111 | * Get Game Linescore
112 | * Accepts required argument of gamePk id
113 | */
114 | const getLinescore = function(gameId) {
115 | return new Promise((resolve, reject) => {
116 | request(
117 | { url: apiURL + `game/${gameId}/linescore`, json: true },
118 | (error, response, body) => {
119 | if (error) {
120 | reject(error);
121 | } else {
122 | resolve(body);
123 | }
124 | }
125 | );
126 | });
127 | };
128 |
129 | /**
130 | * Get Game Boxscore
131 | * Accepts required argument of gamePk id
132 | */
133 | const getBoxscore = function(gameId) {
134 | return new Promise((resolve, reject) => {
135 | request(
136 | { url: apiURL + `game/${gameId}/boxscore`, json: true },
137 | (error, response, body) => {
138 | if (error) {
139 | reject(error);
140 | } else {
141 | resolve(body);
142 | }
143 | }
144 | );
145 | });
146 | };
147 |
148 | /**
149 | * Get Color Feed
150 | * Accepts required argument of gamePk id
151 | * Warning: This payload can get very large. See MLB API Documentation for DiffPatch information
152 | *
153 | *
154 | */
155 | const getColorFeed = function(gameId) {
156 | return new Promise((resolve, reject) => {
157 | request(
158 | { url: apiURL + `game/${gameId}/feed/color`, json: true },
159 | (error, response, body) => {
160 | if (error) {
161 | reject(error);
162 | } else {
163 | resolve(body);
164 | }
165 | }
166 | );
167 | });
168 | };
169 |
170 | module.exports = {
171 | getGames,
172 | getTeams,
173 | getGameFeed,
174 | getStandings,
175 | getLinescore,
176 | getBoxscore,
177 | getColorFeed
178 | };
179 |
--------------------------------------------------------------------------------
/lib/constants.js:
--------------------------------------------------------------------------------
1 | // api endpoint
2 | const API_URL = "http://statsapi.mlb.com:80/api/v1";
3 | const API_URL_11 = "http://statsapi.mlb.com:80/api/v1.1";
4 |
5 | // Get Current Year
6 | const CURRENT_YEAR = new Date().getFullYear();
7 |
8 | module.exports = {
9 | API_URL,
10 | API_URL_11,
11 | CURRENT_YEAR
12 | };
13 |
--------------------------------------------------------------------------------
/lib/getBoxscore.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get Game Boxscore
5 | * Accepts required argument of gamePk id
6 | */
7 |
8 | const constants = require("./constants");
9 | const request = require("request");
10 |
11 | const { API_URL } = constants;
12 |
13 | const getBoxscore = (gameId ) => {
14 | return new Promise((resolve , reject ) => {
15 | request(
16 | { url: API_URL + `game/${gameId}/boxscore`, json: true },
17 | (error , response , body ) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getBoxscore;
29 |
--------------------------------------------------------------------------------
/lib/getColorFeed.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get Color Feed
5 | * Accepts required argument of gamePk id
6 | * Warning: This payload can get very large. See MLB API Documentation for DiffPatch information
7 | *
8 | *
9 | */
10 |
11 | const constants = require("./constants");
12 | const request = require("request");
13 |
14 | const { API_URL } = constants;
15 |
16 | const getColorFeed = (gameId ) => {
17 | return new Promise((resolve , reject ) => {
18 | request(
19 | { url: API_URL + `game/${gameId}/feed/color`, json: true },
20 | (error , response , body ) => {
21 | if (error) {
22 | reject(error);
23 | } else {
24 | resolve(body);
25 | }
26 | }
27 | );
28 | });
29 | };
30 |
31 | module.exports = getColorFeed;
32 |
--------------------------------------------------------------------------------
/lib/getGameFeed.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get Single Game Feed
5 | */
6 |
7 | const constants = require("./constants");
8 | const request = require("request");
9 |
10 | const { API_URL_11 } = constants;
11 |
12 | const getGameFeed = (gameId ) => {
13 | return new Promise((resolve , reject ) => {
14 | request(
15 | { url: API_URL_11 + `game/${gameId}/feed/live`, json: true },
16 | (error , response , body ) => {
17 | if (error) {
18 | reject(error);
19 | } else {
20 | resolve(body);
21 | }
22 | }
23 | );
24 | });
25 | };
26 |
27 | module.exports = getGameFeed;
28 |
--------------------------------------------------------------------------------
/lib/getGames.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get a list of games. If no game date is passed (MM/DD/YYYY), gets the current day
5 | */
6 |
7 | const constants = require("./constants");
8 | const request = require("request");
9 |
10 | const { API_URL } = constants;
11 |
12 | const getGames = (gameDate = "") => {
13 | return new Promise((resolve , reject ) => {
14 | request(
15 | { url: API_URL + "schedule?sportId=1" + "&date=" + gameDate, json: true },
16 | (error , response , body ) => {
17 | if (error) {
18 | reject(error);
19 | } else {
20 | resolve(body);
21 | }
22 | }
23 | );
24 | });
25 | };
26 |
27 | module.exports = getGames;
28 |
--------------------------------------------------------------------------------
/lib/getLinescore.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get Game Linescore
5 | * Accepts required argument of gamePk id
6 | */
7 |
8 | const constants = require("./constants");
9 | const request = require("request");
10 |
11 | const { API_URL } = constants;
12 |
13 | const getLinescore = (gameId ) => {
14 | return new Promise((resolve , reject ) => {
15 | request(
16 | { url: API_URL + `game/${gameId}/linescore`, json: true },
17 | (error , response , body ) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getLinescore;
29 |
--------------------------------------------------------------------------------
/lib/getStandings.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get Regular Season Standings
5 | * Accepts League Parameter (AL/NL), and year (YYYY)
6 | * If no year, return current year.
7 | */
8 |
9 | const { API_URL, CURRENT_YEAR } = require("./constants");
10 | const request = require("request");
11 |
12 | const getStandings = (league , year ) => {
13 | return new Promise((resolve , reject ) => {
14 | let leagueId = "";
15 |
16 | if (league === "AL") {
17 | leagueId = "103";
18 | } else if (league === "NL") {
19 | leagueId = "104";
20 | } else if (league !== "AL" || league !== "NL") {
21 | return console.error("Please enter a league. Accepted: AL / NL");
22 | }
23 |
24 | request(
25 | {
26 | url: `${API_URL}standings?leagueId=${leagueId}&season=${
27 | year ? year : CURRENT_YEAR
28 | }`,
29 | json: true
30 | },
31 | (error , response , body ) => {
32 | if (error) {
33 | reject(error);
34 | } else {
35 | resolve(body);
36 | }
37 | }
38 | );
39 | });
40 | };
41 |
42 | module.exports = getStandings;
43 |
--------------------------------------------------------------------------------
/lib/getTeams.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | /**
4 | * Get a list of data about teams
5 | * Accepts argument for singleTeamId to only return information from one team
6 | * Possible TODO: Allow to get multiple teams, but not all? Use case??
7 | * Possible TODO: Add team abbrev for easy call? `getTeams('CLE')`
8 | */
9 |
10 | const { API_URL } = require("./constants");
11 | const request = require("request");
12 |
13 | const getTeams = (singleTeamId = "") => {
14 | return new Promise((resolve , reject ) => {
15 | request(
16 | { url: API_URL + `teams?sportId=1&teamId=${singleTeamId}`, json: true },
17 | (error , response , body ) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getTeams;
29 |
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | //
2 |
3 | const getBoxscore = require("./getBoxscore");
4 | const getColorFeed = require("./getColorFeed");
5 | const getGameFeed = require("./getGameFeed");
6 | const getGames = require("./getGames");
7 | const getLinescore = require("./getLinescore");
8 | const getStandings = require("./getStandings");
9 | const getTeams = require("./getTeams");
10 |
11 | module.exports = {
12 | getBoxscore,
13 | getColorFeed,
14 | getGameFeed,
15 | getGames,
16 | getLinescore,
17 | getStandings,
18 | getTeams
19 | };
20 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-mlb-api",
3 | "version": "0.0.2-6",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.0.0-beta.44",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz",
10 | "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "7.0.0-beta.44"
14 | }
15 | },
16 | "@babel/generator": {
17 | "version": "7.0.0-beta.44",
18 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz",
19 | "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==",
20 | "dev": true,
21 | "requires": {
22 | "@babel/types": "7.0.0-beta.44",
23 | "jsesc": "2.5.1",
24 | "lodash": "4.17.10",
25 | "source-map": "0.5.7",
26 | "trim-right": "1.0.1"
27 | }
28 | },
29 | "@babel/helper-function-name": {
30 | "version": "7.0.0-beta.44",
31 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz",
32 | "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==",
33 | "dev": true,
34 | "requires": {
35 | "@babel/helper-get-function-arity": "7.0.0-beta.44",
36 | "@babel/template": "7.0.0-beta.44",
37 | "@babel/types": "7.0.0-beta.44"
38 | }
39 | },
40 | "@babel/helper-get-function-arity": {
41 | "version": "7.0.0-beta.44",
42 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz",
43 | "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==",
44 | "dev": true,
45 | "requires": {
46 | "@babel/types": "7.0.0-beta.44"
47 | }
48 | },
49 | "@babel/helper-split-export-declaration": {
50 | "version": "7.0.0-beta.44",
51 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz",
52 | "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==",
53 | "dev": true,
54 | "requires": {
55 | "@babel/types": "7.0.0-beta.44"
56 | }
57 | },
58 | "@babel/highlight": {
59 | "version": "7.0.0-beta.44",
60 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz",
61 | "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==",
62 | "dev": true,
63 | "requires": {
64 | "chalk": "2.4.1",
65 | "esutils": "2.0.2",
66 | "js-tokens": "3.0.2"
67 | }
68 | },
69 | "@babel/template": {
70 | "version": "7.0.0-beta.44",
71 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz",
72 | "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==",
73 | "dev": true,
74 | "requires": {
75 | "@babel/code-frame": "7.0.0-beta.44",
76 | "@babel/types": "7.0.0-beta.44",
77 | "babylon": "7.0.0-beta.44",
78 | "lodash": "4.17.10"
79 | },
80 | "dependencies": {
81 | "babylon": {
82 | "version": "7.0.0-beta.44",
83 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
84 | "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
85 | "dev": true
86 | }
87 | }
88 | },
89 | "@babel/traverse": {
90 | "version": "7.0.0-beta.44",
91 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz",
92 | "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==",
93 | "dev": true,
94 | "requires": {
95 | "@babel/code-frame": "7.0.0-beta.44",
96 | "@babel/generator": "7.0.0-beta.44",
97 | "@babel/helper-function-name": "7.0.0-beta.44",
98 | "@babel/helper-split-export-declaration": "7.0.0-beta.44",
99 | "@babel/types": "7.0.0-beta.44",
100 | "babylon": "7.0.0-beta.44",
101 | "debug": "3.1.0",
102 | "globals": "11.7.0",
103 | "invariant": "2.2.4",
104 | "lodash": "4.17.10"
105 | },
106 | "dependencies": {
107 | "babylon": {
108 | "version": "7.0.0-beta.44",
109 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
110 | "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
111 | "dev": true
112 | }
113 | }
114 | },
115 | "@babel/types": {
116 | "version": "7.0.0-beta.44",
117 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz",
118 | "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==",
119 | "dev": true,
120 | "requires": {
121 | "esutils": "2.0.2",
122 | "lodash": "4.17.10",
123 | "to-fast-properties": "2.0.0"
124 | }
125 | },
126 | "acorn": {
127 | "version": "5.7.1",
128 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
129 | "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
130 | "dev": true
131 | },
132 | "acorn-jsx": {
133 | "version": "3.0.1",
134 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
135 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
136 | "dev": true,
137 | "requires": {
138 | "acorn": "3.3.0"
139 | },
140 | "dependencies": {
141 | "acorn": {
142 | "version": "3.3.0",
143 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
144 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
145 | "dev": true
146 | }
147 | }
148 | },
149 | "ajv": {
150 | "version": "5.5.2",
151 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
152 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
153 | "requires": {
154 | "co": "4.6.0",
155 | "fast-deep-equal": "1.0.0",
156 | "fast-json-stable-stringify": "2.0.0",
157 | "json-schema-traverse": "0.3.1"
158 | }
159 | },
160 | "ajv-keywords": {
161 | "version": "2.1.1",
162 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
163 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
164 | "dev": true
165 | },
166 | "ansi-escapes": {
167 | "version": "3.1.0",
168 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
169 | "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
170 | "dev": true
171 | },
172 | "ansi-regex": {
173 | "version": "2.1.1",
174 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
175 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
176 | "dev": true
177 | },
178 | "ansi-styles": {
179 | "version": "2.2.1",
180 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
181 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
182 | "dev": true
183 | },
184 | "argparse": {
185 | "version": "1.0.10",
186 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
187 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
188 | "dev": true,
189 | "requires": {
190 | "sprintf-js": "1.0.3"
191 | }
192 | },
193 | "array-union": {
194 | "version": "1.0.2",
195 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
196 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
197 | "dev": true,
198 | "requires": {
199 | "array-uniq": "1.0.3"
200 | }
201 | },
202 | "array-uniq": {
203 | "version": "1.0.3",
204 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
205 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
206 | "dev": true
207 | },
208 | "arrify": {
209 | "version": "1.0.1",
210 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
211 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
212 | "dev": true
213 | },
214 | "asn1": {
215 | "version": "0.2.3",
216 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
217 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
218 | },
219 | "assert-plus": {
220 | "version": "1.0.0",
221 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
222 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
223 | },
224 | "asynckit": {
225 | "version": "0.4.0",
226 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
227 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
228 | },
229 | "aws-sign2": {
230 | "version": "0.7.0",
231 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
232 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
233 | },
234 | "aws4": {
235 | "version": "1.6.0",
236 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
237 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
238 | },
239 | "babel-code-frame": {
240 | "version": "6.26.0",
241 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
242 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
243 | "dev": true,
244 | "requires": {
245 | "chalk": "1.1.3",
246 | "esutils": "2.0.2",
247 | "js-tokens": "3.0.2"
248 | },
249 | "dependencies": {
250 | "chalk": {
251 | "version": "1.1.3",
252 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
253 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
254 | "dev": true,
255 | "requires": {
256 | "ansi-styles": "2.2.1",
257 | "escape-string-regexp": "1.0.5",
258 | "has-ansi": "2.0.0",
259 | "strip-ansi": "3.0.1",
260 | "supports-color": "2.0.0"
261 | }
262 | },
263 | "strip-ansi": {
264 | "version": "3.0.1",
265 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
266 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
267 | "dev": true,
268 | "requires": {
269 | "ansi-regex": "2.1.1"
270 | }
271 | }
272 | }
273 | },
274 | "babel-eslint": {
275 | "version": "8.2.6",
276 | "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz",
277 | "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==",
278 | "dev": true,
279 | "requires": {
280 | "@babel/code-frame": "7.0.0-beta.44",
281 | "@babel/traverse": "7.0.0-beta.44",
282 | "@babel/types": "7.0.0-beta.44",
283 | "babylon": "7.0.0-beta.44",
284 | "eslint-scope": "3.7.1",
285 | "eslint-visitor-keys": "1.0.0"
286 | },
287 | "dependencies": {
288 | "babylon": {
289 | "version": "7.0.0-beta.44",
290 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
291 | "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
292 | "dev": true
293 | },
294 | "eslint-scope": {
295 | "version": "3.7.1",
296 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
297 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
298 | "dev": true,
299 | "requires": {
300 | "esrecurse": "4.2.1",
301 | "estraverse": "4.2.0"
302 | }
303 | }
304 | }
305 | },
306 | "babylon": {
307 | "version": "6.18.0",
308 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
309 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
310 | "dev": true
311 | },
312 | "balanced-match": {
313 | "version": "1.0.0",
314 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
315 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
316 | "dev": true
317 | },
318 | "bcrypt-pbkdf": {
319 | "version": "1.0.1",
320 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
321 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
322 | "optional": true,
323 | "requires": {
324 | "tweetnacl": "0.14.5"
325 | }
326 | },
327 | "boom": {
328 | "version": "4.3.1",
329 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
330 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
331 | "requires": {
332 | "hoek": "4.2.1"
333 | }
334 | },
335 | "brace-expansion": {
336 | "version": "1.1.11",
337 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
338 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
339 | "dev": true,
340 | "requires": {
341 | "balanced-match": "1.0.0",
342 | "concat-map": "0.0.1"
343 | }
344 | },
345 | "buffer-from": {
346 | "version": "1.1.1",
347 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
348 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
349 | "dev": true
350 | },
351 | "caller-path": {
352 | "version": "0.1.0",
353 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
354 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
355 | "dev": true,
356 | "requires": {
357 | "callsites": "0.2.0"
358 | }
359 | },
360 | "callsites": {
361 | "version": "0.2.0",
362 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
363 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
364 | "dev": true
365 | },
366 | "caseless": {
367 | "version": "0.12.0",
368 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
369 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
370 | },
371 | "chalk": {
372 | "version": "2.4.1",
373 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
374 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
375 | "dev": true,
376 | "requires": {
377 | "ansi-styles": "3.2.1",
378 | "escape-string-regexp": "1.0.5",
379 | "supports-color": "5.4.0"
380 | },
381 | "dependencies": {
382 | "ansi-styles": {
383 | "version": "3.2.1",
384 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
385 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
386 | "dev": true,
387 | "requires": {
388 | "color-convert": "1.9.2"
389 | }
390 | },
391 | "supports-color": {
392 | "version": "5.4.0",
393 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
394 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
395 | "dev": true,
396 | "requires": {
397 | "has-flag": "3.0.0"
398 | }
399 | }
400 | }
401 | },
402 | "chardet": {
403 | "version": "0.4.2",
404 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
405 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
406 | "dev": true
407 | },
408 | "circular-json": {
409 | "version": "0.3.3",
410 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
411 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
412 | "dev": true
413 | },
414 | "cli-cursor": {
415 | "version": "2.1.0",
416 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
417 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
418 | "dev": true,
419 | "requires": {
420 | "restore-cursor": "2.0.0"
421 | }
422 | },
423 | "cli-width": {
424 | "version": "2.2.0",
425 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
426 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
427 | "dev": true
428 | },
429 | "co": {
430 | "version": "4.6.0",
431 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
432 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
433 | },
434 | "color-convert": {
435 | "version": "1.9.2",
436 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
437 | "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
438 | "dev": true,
439 | "requires": {
440 | "color-name": "1.1.1"
441 | }
442 | },
443 | "color-name": {
444 | "version": "1.1.1",
445 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
446 | "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
447 | "dev": true
448 | },
449 | "combined-stream": {
450 | "version": "1.0.6",
451 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
452 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
453 | "requires": {
454 | "delayed-stream": "1.0.0"
455 | }
456 | },
457 | "concat-map": {
458 | "version": "0.0.1",
459 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
460 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
461 | "dev": true
462 | },
463 | "concat-stream": {
464 | "version": "1.6.2",
465 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
466 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
467 | "dev": true,
468 | "requires": {
469 | "buffer-from": "1.1.1",
470 | "inherits": "2.0.3",
471 | "readable-stream": "2.3.6",
472 | "typedarray": "0.0.6"
473 | }
474 | },
475 | "core-util-is": {
476 | "version": "1.0.2",
477 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
478 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
479 | },
480 | "cross-spawn": {
481 | "version": "5.1.0",
482 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
483 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
484 | "dev": true,
485 | "requires": {
486 | "lru-cache": "4.1.3",
487 | "shebang-command": "1.2.0",
488 | "which": "1.3.1"
489 | }
490 | },
491 | "cryptiles": {
492 | "version": "3.1.2",
493 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
494 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
495 | "requires": {
496 | "boom": "5.2.0"
497 | },
498 | "dependencies": {
499 | "boom": {
500 | "version": "5.2.0",
501 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
502 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
503 | "requires": {
504 | "hoek": "4.2.1"
505 | }
506 | }
507 | }
508 | },
509 | "dashdash": {
510 | "version": "1.14.1",
511 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
512 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
513 | "requires": {
514 | "assert-plus": "1.0.0"
515 | }
516 | },
517 | "debug": {
518 | "version": "3.1.0",
519 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
520 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
521 | "dev": true,
522 | "requires": {
523 | "ms": "2.0.0"
524 | }
525 | },
526 | "deep-is": {
527 | "version": "0.1.3",
528 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
529 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
530 | "dev": true
531 | },
532 | "del": {
533 | "version": "2.2.2",
534 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
535 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
536 | "dev": true,
537 | "requires": {
538 | "globby": "5.0.0",
539 | "is-path-cwd": "1.0.0",
540 | "is-path-in-cwd": "1.0.1",
541 | "object-assign": "4.1.1",
542 | "pify": "2.3.0",
543 | "pinkie-promise": "2.0.1",
544 | "rimraf": "2.6.2"
545 | }
546 | },
547 | "delayed-stream": {
548 | "version": "1.0.0",
549 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
550 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
551 | },
552 | "doctrine": {
553 | "version": "2.1.0",
554 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
555 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
556 | "dev": true,
557 | "requires": {
558 | "esutils": "2.0.2"
559 | }
560 | },
561 | "ecc-jsbn": {
562 | "version": "0.1.1",
563 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
564 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
565 | "optional": true,
566 | "requires": {
567 | "jsbn": "0.1.1"
568 | }
569 | },
570 | "escape-string-regexp": {
571 | "version": "1.0.5",
572 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
573 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
574 | "dev": true
575 | },
576 | "eslint": {
577 | "version": "4.19.1",
578 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
579 | "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
580 | "dev": true,
581 | "requires": {
582 | "ajv": "5.5.2",
583 | "babel-code-frame": "6.26.0",
584 | "chalk": "2.4.1",
585 | "concat-stream": "1.6.2",
586 | "cross-spawn": "5.1.0",
587 | "debug": "3.1.0",
588 | "doctrine": "2.1.0",
589 | "eslint-scope": "3.7.3",
590 | "eslint-visitor-keys": "1.0.0",
591 | "espree": "3.5.4",
592 | "esquery": "1.0.1",
593 | "esutils": "2.0.2",
594 | "file-entry-cache": "2.0.0",
595 | "functional-red-black-tree": "1.0.1",
596 | "glob": "7.1.2",
597 | "globals": "11.7.0",
598 | "ignore": "3.3.10",
599 | "imurmurhash": "0.1.4",
600 | "inquirer": "3.3.0",
601 | "is-resolvable": "1.1.0",
602 | "js-yaml": "3.12.0",
603 | "json-stable-stringify-without-jsonify": "1.0.1",
604 | "levn": "0.3.0",
605 | "lodash": "4.17.10",
606 | "minimatch": "3.0.4",
607 | "mkdirp": "0.5.1",
608 | "natural-compare": "1.4.0",
609 | "optionator": "0.8.2",
610 | "path-is-inside": "1.0.2",
611 | "pluralize": "7.0.0",
612 | "progress": "2.0.0",
613 | "regexpp": "1.1.0",
614 | "require-uncached": "1.0.3",
615 | "semver": "5.5.0",
616 | "strip-ansi": "4.0.0",
617 | "strip-json-comments": "2.0.1",
618 | "table": "4.0.2",
619 | "text-table": "0.2.0"
620 | }
621 | },
622 | "eslint-plugin-flowtype": {
623 | "version": "2.50.0",
624 | "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.0.tgz",
625 | "integrity": "sha512-10FnBXCp8odYcpUFXGAh+Zko7py0hUWutTd3BN/R9riukH360qNPLYPR3/xV9eu9K7OJDjJrsflBnL6RwxFnlw==",
626 | "dev": true,
627 | "requires": {
628 | "lodash": "4.17.10"
629 | }
630 | },
631 | "eslint-scope": {
632 | "version": "3.7.3",
633 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
634 | "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
635 | "dev": true,
636 | "requires": {
637 | "esrecurse": "4.2.1",
638 | "estraverse": "4.2.0"
639 | }
640 | },
641 | "eslint-visitor-keys": {
642 | "version": "1.0.0",
643 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
644 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
645 | "dev": true
646 | },
647 | "espree": {
648 | "version": "3.5.4",
649 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
650 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
651 | "dev": true,
652 | "requires": {
653 | "acorn": "5.7.1",
654 | "acorn-jsx": "3.0.1"
655 | }
656 | },
657 | "esprima": {
658 | "version": "4.0.1",
659 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
660 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
661 | "dev": true
662 | },
663 | "esquery": {
664 | "version": "1.0.1",
665 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
666 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
667 | "dev": true,
668 | "requires": {
669 | "estraverse": "4.2.0"
670 | }
671 | },
672 | "esrecurse": {
673 | "version": "4.2.1",
674 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
675 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
676 | "dev": true,
677 | "requires": {
678 | "estraverse": "4.2.0"
679 | }
680 | },
681 | "estraverse": {
682 | "version": "4.2.0",
683 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
684 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
685 | "dev": true
686 | },
687 | "esutils": {
688 | "version": "2.0.2",
689 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
690 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
691 | "dev": true
692 | },
693 | "extend": {
694 | "version": "3.0.1",
695 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
696 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
697 | },
698 | "external-editor": {
699 | "version": "2.2.0",
700 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
701 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
702 | "dev": true,
703 | "requires": {
704 | "chardet": "0.4.2",
705 | "iconv-lite": "0.4.23",
706 | "tmp": "0.0.33"
707 | }
708 | },
709 | "extsprintf": {
710 | "version": "1.3.0",
711 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
712 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
713 | },
714 | "fast-deep-equal": {
715 | "version": "1.0.0",
716 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
717 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
718 | },
719 | "fast-json-stable-stringify": {
720 | "version": "2.0.0",
721 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
722 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
723 | },
724 | "fast-levenshtein": {
725 | "version": "2.0.6",
726 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
727 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
728 | "dev": true
729 | },
730 | "figures": {
731 | "version": "2.0.0",
732 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
733 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
734 | "dev": true,
735 | "requires": {
736 | "escape-string-regexp": "1.0.5"
737 | }
738 | },
739 | "file-entry-cache": {
740 | "version": "2.0.0",
741 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
742 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
743 | "dev": true,
744 | "requires": {
745 | "flat-cache": "1.3.0",
746 | "object-assign": "4.1.1"
747 | }
748 | },
749 | "flat-cache": {
750 | "version": "1.3.0",
751 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
752 | "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
753 | "dev": true,
754 | "requires": {
755 | "circular-json": "0.3.3",
756 | "del": "2.2.2",
757 | "graceful-fs": "4.1.11",
758 | "write": "0.2.1"
759 | }
760 | },
761 | "flow-bin": {
762 | "version": "0.78.0",
763 | "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.78.0.tgz",
764 | "integrity": "sha512-LV55tE+ItkC9HQAbEK+VxpBe54Ryp/dj4q9KmqDIfhV7mtP+hbvc/1AUf/AaWFIve3eURO0cxoGN4ZQQ3o2HTg==",
765 | "dev": true
766 | },
767 | "flow-remove-types": {
768 | "version": "1.2.3",
769 | "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-1.2.3.tgz",
770 | "integrity": "sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q==",
771 | "dev": true,
772 | "requires": {
773 | "babylon": "6.18.0",
774 | "vlq": "0.2.3"
775 | }
776 | },
777 | "forever-agent": {
778 | "version": "0.6.1",
779 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
780 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
781 | },
782 | "form-data": {
783 | "version": "2.3.2",
784 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
785 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
786 | "requires": {
787 | "asynckit": "0.4.0",
788 | "combined-stream": "1.0.6",
789 | "mime-types": "2.1.18"
790 | }
791 | },
792 | "fs.realpath": {
793 | "version": "1.0.0",
794 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
795 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
796 | "dev": true
797 | },
798 | "functional-red-black-tree": {
799 | "version": "1.0.1",
800 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
801 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
802 | "dev": true
803 | },
804 | "getpass": {
805 | "version": "0.1.7",
806 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
807 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
808 | "requires": {
809 | "assert-plus": "1.0.0"
810 | }
811 | },
812 | "glob": {
813 | "version": "7.1.2",
814 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
815 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
816 | "dev": true,
817 | "requires": {
818 | "fs.realpath": "1.0.0",
819 | "inflight": "1.0.6",
820 | "inherits": "2.0.3",
821 | "minimatch": "3.0.4",
822 | "once": "1.4.0",
823 | "path-is-absolute": "1.0.1"
824 | }
825 | },
826 | "globals": {
827 | "version": "11.7.0",
828 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
829 | "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
830 | "dev": true
831 | },
832 | "globby": {
833 | "version": "5.0.0",
834 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
835 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
836 | "dev": true,
837 | "requires": {
838 | "array-union": "1.0.2",
839 | "arrify": "1.0.1",
840 | "glob": "7.1.2",
841 | "object-assign": "4.1.1",
842 | "pify": "2.3.0",
843 | "pinkie-promise": "2.0.1"
844 | }
845 | },
846 | "graceful-fs": {
847 | "version": "4.1.11",
848 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
849 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
850 | "dev": true
851 | },
852 | "har-schema": {
853 | "version": "2.0.0",
854 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
855 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
856 | },
857 | "har-validator": {
858 | "version": "5.0.3",
859 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
860 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
861 | "requires": {
862 | "ajv": "5.5.2",
863 | "har-schema": "2.0.0"
864 | }
865 | },
866 | "has-ansi": {
867 | "version": "2.0.0",
868 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
869 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
870 | "dev": true,
871 | "requires": {
872 | "ansi-regex": "2.1.1"
873 | }
874 | },
875 | "has-flag": {
876 | "version": "3.0.0",
877 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
878 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
879 | "dev": true
880 | },
881 | "hawk": {
882 | "version": "6.0.2",
883 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
884 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
885 | "requires": {
886 | "boom": "4.3.1",
887 | "cryptiles": "3.1.2",
888 | "hoek": "4.2.1",
889 | "sntp": "2.1.0"
890 | }
891 | },
892 | "hoek": {
893 | "version": "4.2.1",
894 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
895 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
896 | },
897 | "http-signature": {
898 | "version": "1.2.0",
899 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
900 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
901 | "requires": {
902 | "assert-plus": "1.0.0",
903 | "jsprim": "1.4.1",
904 | "sshpk": "1.13.1"
905 | }
906 | },
907 | "iconv-lite": {
908 | "version": "0.4.23",
909 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
910 | "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
911 | "dev": true,
912 | "requires": {
913 | "safer-buffer": "2.1.2"
914 | }
915 | },
916 | "ignore": {
917 | "version": "3.3.10",
918 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
919 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
920 | "dev": true
921 | },
922 | "imurmurhash": {
923 | "version": "0.1.4",
924 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
925 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
926 | "dev": true
927 | },
928 | "inflight": {
929 | "version": "1.0.6",
930 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
931 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
932 | "dev": true,
933 | "requires": {
934 | "once": "1.4.0",
935 | "wrappy": "1.0.2"
936 | }
937 | },
938 | "inherits": {
939 | "version": "2.0.3",
940 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
941 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
942 | "dev": true
943 | },
944 | "inquirer": {
945 | "version": "3.3.0",
946 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
947 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
948 | "dev": true,
949 | "requires": {
950 | "ansi-escapes": "3.1.0",
951 | "chalk": "2.4.1",
952 | "cli-cursor": "2.1.0",
953 | "cli-width": "2.2.0",
954 | "external-editor": "2.2.0",
955 | "figures": "2.0.0",
956 | "lodash": "4.17.10",
957 | "mute-stream": "0.0.7",
958 | "run-async": "2.3.0",
959 | "rx-lite": "4.0.8",
960 | "rx-lite-aggregates": "4.0.8",
961 | "string-width": "2.1.1",
962 | "strip-ansi": "4.0.0",
963 | "through": "2.3.8"
964 | }
965 | },
966 | "invariant": {
967 | "version": "2.2.4",
968 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
969 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
970 | "dev": true,
971 | "requires": {
972 | "loose-envify": "1.4.0"
973 | }
974 | },
975 | "is-fullwidth-code-point": {
976 | "version": "2.0.0",
977 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
978 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
979 | "dev": true
980 | },
981 | "is-path-cwd": {
982 | "version": "1.0.0",
983 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
984 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
985 | "dev": true
986 | },
987 | "is-path-in-cwd": {
988 | "version": "1.0.1",
989 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
990 | "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
991 | "dev": true,
992 | "requires": {
993 | "is-path-inside": "1.0.1"
994 | }
995 | },
996 | "is-path-inside": {
997 | "version": "1.0.1",
998 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
999 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
1000 | "dev": true,
1001 | "requires": {
1002 | "path-is-inside": "1.0.2"
1003 | }
1004 | },
1005 | "is-promise": {
1006 | "version": "2.1.0",
1007 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1008 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1009 | "dev": true
1010 | },
1011 | "is-resolvable": {
1012 | "version": "1.1.0",
1013 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
1014 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
1015 | "dev": true
1016 | },
1017 | "is-typedarray": {
1018 | "version": "1.0.0",
1019 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1020 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
1021 | },
1022 | "isarray": {
1023 | "version": "1.0.0",
1024 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1025 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1026 | "dev": true
1027 | },
1028 | "isexe": {
1029 | "version": "2.0.0",
1030 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1031 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1032 | "dev": true
1033 | },
1034 | "isstream": {
1035 | "version": "0.1.2",
1036 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1037 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
1038 | },
1039 | "js-tokens": {
1040 | "version": "3.0.2",
1041 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1042 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
1043 | "dev": true
1044 | },
1045 | "js-yaml": {
1046 | "version": "3.12.0",
1047 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
1048 | "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
1049 | "dev": true,
1050 | "requires": {
1051 | "argparse": "1.0.10",
1052 | "esprima": "4.0.1"
1053 | }
1054 | },
1055 | "jsbn": {
1056 | "version": "0.1.1",
1057 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1058 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1059 | "optional": true
1060 | },
1061 | "jsesc": {
1062 | "version": "2.5.1",
1063 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
1064 | "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
1065 | "dev": true
1066 | },
1067 | "json-schema": {
1068 | "version": "0.2.3",
1069 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1070 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
1071 | },
1072 | "json-schema-traverse": {
1073 | "version": "0.3.1",
1074 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
1075 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
1076 | },
1077 | "json-stable-stringify-without-jsonify": {
1078 | "version": "1.0.1",
1079 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1080 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1081 | "dev": true
1082 | },
1083 | "json-stringify-safe": {
1084 | "version": "5.0.1",
1085 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1086 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
1087 | },
1088 | "jsprim": {
1089 | "version": "1.4.1",
1090 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1091 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1092 | "requires": {
1093 | "assert-plus": "1.0.0",
1094 | "extsprintf": "1.3.0",
1095 | "json-schema": "0.2.3",
1096 | "verror": "1.10.0"
1097 | }
1098 | },
1099 | "levn": {
1100 | "version": "0.3.0",
1101 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1102 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1103 | "dev": true,
1104 | "requires": {
1105 | "prelude-ls": "1.1.2",
1106 | "type-check": "0.3.2"
1107 | }
1108 | },
1109 | "lodash": {
1110 | "version": "4.17.10",
1111 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
1112 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
1113 | "dev": true
1114 | },
1115 | "loose-envify": {
1116 | "version": "1.4.0",
1117 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1118 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1119 | "dev": true,
1120 | "requires": {
1121 | "js-tokens": "3.0.2"
1122 | }
1123 | },
1124 | "lru-cache": {
1125 | "version": "4.1.3",
1126 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
1127 | "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
1128 | "dev": true,
1129 | "requires": {
1130 | "pseudomap": "1.0.2",
1131 | "yallist": "2.1.2"
1132 | }
1133 | },
1134 | "mime-db": {
1135 | "version": "1.33.0",
1136 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
1137 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
1138 | },
1139 | "mime-types": {
1140 | "version": "2.1.18",
1141 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
1142 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
1143 | "requires": {
1144 | "mime-db": "1.33.0"
1145 | }
1146 | },
1147 | "mimic-fn": {
1148 | "version": "1.2.0",
1149 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
1150 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
1151 | "dev": true
1152 | },
1153 | "minimatch": {
1154 | "version": "3.0.4",
1155 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1156 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1157 | "dev": true,
1158 | "requires": {
1159 | "brace-expansion": "1.1.11"
1160 | }
1161 | },
1162 | "minimist": {
1163 | "version": "0.0.8",
1164 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1165 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1166 | "dev": true
1167 | },
1168 | "mkdirp": {
1169 | "version": "0.5.1",
1170 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1171 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1172 | "dev": true,
1173 | "requires": {
1174 | "minimist": "0.0.8"
1175 | }
1176 | },
1177 | "ms": {
1178 | "version": "2.0.0",
1179 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1180 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1181 | "dev": true
1182 | },
1183 | "mute-stream": {
1184 | "version": "0.0.7",
1185 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
1186 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
1187 | "dev": true
1188 | },
1189 | "natural-compare": {
1190 | "version": "1.4.0",
1191 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1192 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1193 | "dev": true
1194 | },
1195 | "oauth-sign": {
1196 | "version": "0.8.2",
1197 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
1198 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
1199 | },
1200 | "object-assign": {
1201 | "version": "4.1.1",
1202 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1203 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1204 | "dev": true
1205 | },
1206 | "once": {
1207 | "version": "1.4.0",
1208 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1209 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1210 | "dev": true,
1211 | "requires": {
1212 | "wrappy": "1.0.2"
1213 | }
1214 | },
1215 | "onetime": {
1216 | "version": "2.0.1",
1217 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
1218 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
1219 | "dev": true,
1220 | "requires": {
1221 | "mimic-fn": "1.2.0"
1222 | }
1223 | },
1224 | "optionator": {
1225 | "version": "0.8.2",
1226 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
1227 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
1228 | "dev": true,
1229 | "requires": {
1230 | "deep-is": "0.1.3",
1231 | "fast-levenshtein": "2.0.6",
1232 | "levn": "0.3.0",
1233 | "prelude-ls": "1.1.2",
1234 | "type-check": "0.3.2",
1235 | "wordwrap": "1.0.0"
1236 | }
1237 | },
1238 | "os-tmpdir": {
1239 | "version": "1.0.2",
1240 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1241 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1242 | "dev": true
1243 | },
1244 | "path-is-absolute": {
1245 | "version": "1.0.1",
1246 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1247 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1248 | "dev": true
1249 | },
1250 | "path-is-inside": {
1251 | "version": "1.0.2",
1252 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1253 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
1254 | "dev": true
1255 | },
1256 | "performance-now": {
1257 | "version": "2.1.0",
1258 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1259 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
1260 | },
1261 | "pify": {
1262 | "version": "2.3.0",
1263 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1264 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
1265 | "dev": true
1266 | },
1267 | "pinkie": {
1268 | "version": "2.0.4",
1269 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
1270 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
1271 | "dev": true
1272 | },
1273 | "pinkie-promise": {
1274 | "version": "2.0.1",
1275 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
1276 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
1277 | "dev": true,
1278 | "requires": {
1279 | "pinkie": "2.0.4"
1280 | }
1281 | },
1282 | "pluralize": {
1283 | "version": "7.0.0",
1284 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
1285 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
1286 | "dev": true
1287 | },
1288 | "prelude-ls": {
1289 | "version": "1.1.2",
1290 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1291 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1292 | "dev": true
1293 | },
1294 | "process-nextick-args": {
1295 | "version": "2.0.0",
1296 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1297 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
1298 | "dev": true
1299 | },
1300 | "progress": {
1301 | "version": "2.0.0",
1302 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
1303 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
1304 | "dev": true
1305 | },
1306 | "pseudomap": {
1307 | "version": "1.0.2",
1308 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
1309 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
1310 | "dev": true
1311 | },
1312 | "punycode": {
1313 | "version": "1.4.1",
1314 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1315 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
1316 | },
1317 | "qs": {
1318 | "version": "6.5.1",
1319 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
1320 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
1321 | },
1322 | "readable-stream": {
1323 | "version": "2.3.6",
1324 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1325 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
1326 | "dev": true,
1327 | "requires": {
1328 | "core-util-is": "1.0.2",
1329 | "inherits": "2.0.3",
1330 | "isarray": "1.0.0",
1331 | "process-nextick-args": "2.0.0",
1332 | "safe-buffer": "5.1.1",
1333 | "string_decoder": "1.1.1",
1334 | "util-deprecate": "1.0.2"
1335 | }
1336 | },
1337 | "regexpp": {
1338 | "version": "1.1.0",
1339 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
1340 | "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==",
1341 | "dev": true
1342 | },
1343 | "request": {
1344 | "version": "2.83.0",
1345 | "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
1346 | "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
1347 | "requires": {
1348 | "aws-sign2": "0.7.0",
1349 | "aws4": "1.6.0",
1350 | "caseless": "0.12.0",
1351 | "combined-stream": "1.0.6",
1352 | "extend": "3.0.1",
1353 | "forever-agent": "0.6.1",
1354 | "form-data": "2.3.2",
1355 | "har-validator": "5.0.3",
1356 | "hawk": "6.0.2",
1357 | "http-signature": "1.2.0",
1358 | "is-typedarray": "1.0.0",
1359 | "isstream": "0.1.2",
1360 | "json-stringify-safe": "5.0.1",
1361 | "mime-types": "2.1.18",
1362 | "oauth-sign": "0.8.2",
1363 | "performance-now": "2.1.0",
1364 | "qs": "6.5.1",
1365 | "safe-buffer": "5.1.1",
1366 | "stringstream": "0.0.5",
1367 | "tough-cookie": "2.3.3",
1368 | "tunnel-agent": "0.6.0",
1369 | "uuid": "3.2.1"
1370 | }
1371 | },
1372 | "require-uncached": {
1373 | "version": "1.0.3",
1374 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
1375 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
1376 | "dev": true,
1377 | "requires": {
1378 | "caller-path": "0.1.0",
1379 | "resolve-from": "1.0.1"
1380 | }
1381 | },
1382 | "resolve-from": {
1383 | "version": "1.0.1",
1384 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
1385 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
1386 | "dev": true
1387 | },
1388 | "restore-cursor": {
1389 | "version": "2.0.0",
1390 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
1391 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
1392 | "dev": true,
1393 | "requires": {
1394 | "onetime": "2.0.1",
1395 | "signal-exit": "3.0.2"
1396 | }
1397 | },
1398 | "rimraf": {
1399 | "version": "2.6.2",
1400 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
1401 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
1402 | "dev": true,
1403 | "requires": {
1404 | "glob": "7.1.2"
1405 | }
1406 | },
1407 | "run-async": {
1408 | "version": "2.3.0",
1409 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
1410 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
1411 | "dev": true,
1412 | "requires": {
1413 | "is-promise": "2.1.0"
1414 | }
1415 | },
1416 | "rx-lite": {
1417 | "version": "4.0.8",
1418 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
1419 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
1420 | "dev": true
1421 | },
1422 | "rx-lite-aggregates": {
1423 | "version": "4.0.8",
1424 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
1425 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
1426 | "dev": true,
1427 | "requires": {
1428 | "rx-lite": "4.0.8"
1429 | }
1430 | },
1431 | "safe-buffer": {
1432 | "version": "5.1.1",
1433 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
1434 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
1435 | },
1436 | "safer-buffer": {
1437 | "version": "2.1.2",
1438 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1439 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1440 | "dev": true
1441 | },
1442 | "semver": {
1443 | "version": "5.5.0",
1444 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
1445 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
1446 | "dev": true
1447 | },
1448 | "shebang-command": {
1449 | "version": "1.2.0",
1450 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1451 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1452 | "dev": true,
1453 | "requires": {
1454 | "shebang-regex": "1.0.0"
1455 | }
1456 | },
1457 | "shebang-regex": {
1458 | "version": "1.0.0",
1459 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1460 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1461 | "dev": true
1462 | },
1463 | "signal-exit": {
1464 | "version": "3.0.2",
1465 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1466 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1467 | "dev": true
1468 | },
1469 | "slice-ansi": {
1470 | "version": "1.0.0",
1471 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
1472 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
1473 | "dev": true,
1474 | "requires": {
1475 | "is-fullwidth-code-point": "2.0.0"
1476 | }
1477 | },
1478 | "sntp": {
1479 | "version": "2.1.0",
1480 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
1481 | "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
1482 | "requires": {
1483 | "hoek": "4.2.1"
1484 | }
1485 | },
1486 | "source-map": {
1487 | "version": "0.5.7",
1488 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1489 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1490 | "dev": true
1491 | },
1492 | "sprintf-js": {
1493 | "version": "1.0.3",
1494 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1495 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1496 | "dev": true
1497 | },
1498 | "sshpk": {
1499 | "version": "1.13.1",
1500 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
1501 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
1502 | "requires": {
1503 | "asn1": "0.2.3",
1504 | "assert-plus": "1.0.0",
1505 | "bcrypt-pbkdf": "1.0.1",
1506 | "dashdash": "1.14.1",
1507 | "ecc-jsbn": "0.1.1",
1508 | "getpass": "0.1.7",
1509 | "jsbn": "0.1.1",
1510 | "tweetnacl": "0.14.5"
1511 | }
1512 | },
1513 | "string-width": {
1514 | "version": "2.1.1",
1515 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1516 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1517 | "dev": true,
1518 | "requires": {
1519 | "is-fullwidth-code-point": "2.0.0",
1520 | "strip-ansi": "4.0.0"
1521 | }
1522 | },
1523 | "string_decoder": {
1524 | "version": "1.1.1",
1525 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1526 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1527 | "dev": true,
1528 | "requires": {
1529 | "safe-buffer": "5.1.1"
1530 | }
1531 | },
1532 | "stringstream": {
1533 | "version": "0.0.5",
1534 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
1535 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
1536 | },
1537 | "strip-ansi": {
1538 | "version": "4.0.0",
1539 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1540 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1541 | "dev": true,
1542 | "requires": {
1543 | "ansi-regex": "3.0.0"
1544 | },
1545 | "dependencies": {
1546 | "ansi-regex": {
1547 | "version": "3.0.0",
1548 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1549 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
1550 | "dev": true
1551 | }
1552 | }
1553 | },
1554 | "strip-json-comments": {
1555 | "version": "2.0.1",
1556 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1557 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
1558 | "dev": true
1559 | },
1560 | "supports-color": {
1561 | "version": "2.0.0",
1562 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1563 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1564 | "dev": true
1565 | },
1566 | "table": {
1567 | "version": "4.0.2",
1568 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
1569 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
1570 | "dev": true,
1571 | "requires": {
1572 | "ajv": "5.5.2",
1573 | "ajv-keywords": "2.1.1",
1574 | "chalk": "2.4.1",
1575 | "lodash": "4.17.10",
1576 | "slice-ansi": "1.0.0",
1577 | "string-width": "2.1.1"
1578 | }
1579 | },
1580 | "text-table": {
1581 | "version": "0.2.0",
1582 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1583 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1584 | "dev": true
1585 | },
1586 | "through": {
1587 | "version": "2.3.8",
1588 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1589 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1590 | "dev": true
1591 | },
1592 | "tmp": {
1593 | "version": "0.0.33",
1594 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1595 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1596 | "dev": true,
1597 | "requires": {
1598 | "os-tmpdir": "1.0.2"
1599 | }
1600 | },
1601 | "to-fast-properties": {
1602 | "version": "2.0.0",
1603 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1604 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1605 | "dev": true
1606 | },
1607 | "tough-cookie": {
1608 | "version": "2.3.3",
1609 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
1610 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
1611 | "requires": {
1612 | "punycode": "1.4.1"
1613 | }
1614 | },
1615 | "trim-right": {
1616 | "version": "1.0.1",
1617 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
1618 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
1619 | "dev": true
1620 | },
1621 | "tunnel-agent": {
1622 | "version": "0.6.0",
1623 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1624 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1625 | "requires": {
1626 | "safe-buffer": "5.1.1"
1627 | }
1628 | },
1629 | "tweetnacl": {
1630 | "version": "0.14.5",
1631 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1632 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
1633 | "optional": true
1634 | },
1635 | "type-check": {
1636 | "version": "0.3.2",
1637 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1638 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1639 | "dev": true,
1640 | "requires": {
1641 | "prelude-ls": "1.1.2"
1642 | }
1643 | },
1644 | "typedarray": {
1645 | "version": "0.0.6",
1646 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1647 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
1648 | "dev": true
1649 | },
1650 | "util-deprecate": {
1651 | "version": "1.0.2",
1652 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1653 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1654 | "dev": true
1655 | },
1656 | "uuid": {
1657 | "version": "3.2.1",
1658 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
1659 | "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
1660 | },
1661 | "verror": {
1662 | "version": "1.10.0",
1663 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1664 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1665 | "requires": {
1666 | "assert-plus": "1.0.0",
1667 | "core-util-is": "1.0.2",
1668 | "extsprintf": "1.3.0"
1669 | }
1670 | },
1671 | "vlq": {
1672 | "version": "0.2.3",
1673 | "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
1674 | "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
1675 | "dev": true
1676 | },
1677 | "which": {
1678 | "version": "1.3.1",
1679 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1680 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1681 | "dev": true,
1682 | "requires": {
1683 | "isexe": "2.0.0"
1684 | }
1685 | },
1686 | "wordwrap": {
1687 | "version": "1.0.0",
1688 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1689 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
1690 | "dev": true
1691 | },
1692 | "wrappy": {
1693 | "version": "1.0.2",
1694 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1695 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1696 | "dev": true
1697 | },
1698 | "write": {
1699 | "version": "0.2.1",
1700 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
1701 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
1702 | "dev": true,
1703 | "requires": {
1704 | "mkdirp": "0.5.1"
1705 | }
1706 | },
1707 | "yallist": {
1708 | "version": "2.1.2",
1709 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1710 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
1711 | "dev": true
1712 | }
1713 | }
1714 | }
1715 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-mlb-api",
3 | "version": "0.0.2-6",
4 | "description": "A Node.js wrapper for the new MLB Stats API",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "npm run build && node test.js",
8 | "eslint-init": "./node_modules/.bin/eslint --init",
9 | "eslint": "./node_modules/.bin/eslint src/*",
10 | "build": "./node_modules/.bin/flow-remove-types src/ -d lib/",
11 | "prepublish": "npm run build",
12 | "flow": "flow"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "git+https://github.com/erwstout/node-mlb-api.git"
17 | },
18 | "keywords": ["API", "MLB", "Node", "JSON", "Sports", "Stats"],
19 | "author": "Eric Stout ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/erwstout/node-mlb-api/issues"
23 | },
24 | "homepage": "https://github.com/erwstout/node-mlb-api#readme",
25 | "dependencies": {
26 | "request": "^2.83.0"
27 | },
28 | "devDependencies": {
29 | "babel-eslint": "^8.2.6",
30 | "eslint": "^4.19.1",
31 | "eslint-plugin-flowtype": "^2.50.0",
32 | "flow-bin": "^0.78.0",
33 | "flow-remove-types": "^1.2.3"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/constants.js:
--------------------------------------------------------------------------------
1 | // api endpoint
2 | const API_URL = "http://statsapi.mlb.com:80/api/v1";
3 | const API_URL_11 = "http://statsapi.mlb.com:80/api/v1.1";
4 |
5 | // Get Current Year
6 | const CURRENT_YEAR = new Date().getFullYear();
7 |
8 | module.exports = {
9 | API_URL,
10 | API_URL_11,
11 | CURRENT_YEAR
12 | };
13 |
--------------------------------------------------------------------------------
/src/getBoxscore.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get Game Boxscore
5 | * Accepts required argument of gamePk id
6 | */
7 |
8 | const constants = require("./constants");
9 | const request = require("request");
10 |
11 | const { API_URL } = constants;
12 |
13 | const getBoxscore = (gameId: number) => {
14 | return new Promise((resolve: Function, reject: Function) => {
15 | request(
16 | { url: API_URL + `game/${gameId}/boxscore`, json: true },
17 | (error: Object, response: Object, body: Object) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getBoxscore;
29 |
--------------------------------------------------------------------------------
/src/getColorFeed.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get Color Feed
5 | * Accepts required argument of gamePk id
6 | * Warning: This payload can get very large. See MLB API Documentation for DiffPatch information
7 | *
8 | *
9 | */
10 |
11 | const constants = require("./constants");
12 | const request = require("request");
13 |
14 | const { API_URL } = constants;
15 |
16 | const getColorFeed = (gameId: number) => {
17 | return new Promise((resolve: Function, reject: Function) => {
18 | request(
19 | { url: API_URL + `game/${gameId}/feed/color`, json: true },
20 | (error: Object, response: Object, body: Object) => {
21 | if (error) {
22 | reject(error);
23 | } else {
24 | resolve(body);
25 | }
26 | }
27 | );
28 | });
29 | };
30 |
31 | module.exports = getColorFeed;
32 |
--------------------------------------------------------------------------------
/src/getGameFeed.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get Single Game Feed
5 | */
6 |
7 | const constants = require("./constants");
8 | const request = require("request");
9 |
10 | const { API_URL_11 } = constants;
11 |
12 | const getGameFeed = (gameId: number) => {
13 | return new Promise((resolve: Function, reject: Function) => {
14 | request(
15 | { url: API_URL_11 + `game/${gameId}/feed/live`, json: true },
16 | (error: Object, response: Object, body: Object) => {
17 | if (error) {
18 | reject(error);
19 | } else {
20 | resolve(body);
21 | }
22 | }
23 | );
24 | });
25 | };
26 |
27 | module.exports = getGameFeed;
28 |
--------------------------------------------------------------------------------
/src/getGames.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get a list of games. If no game date is passed (MM/DD/YYYY), gets the current day
5 | */
6 |
7 | const constants = require("./constants");
8 | const request = require("request");
9 |
10 | const { API_URL } = constants;
11 |
12 | const getGames = (gameDate: string = "") => {
13 | return new Promise((resolve: Function, reject: Function) => {
14 | request(
15 | { url: API_URL + "schedule?sportId=1" + "&date=" + gameDate, json: true },
16 | (error: Object, response: Object, body: Object) => {
17 | if (error) {
18 | reject(error);
19 | } else {
20 | resolve(body);
21 | }
22 | }
23 | );
24 | });
25 | };
26 |
27 | module.exports = getGames;
28 |
--------------------------------------------------------------------------------
/src/getLinescore.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get Game Linescore
5 | * Accepts required argument of gamePk id
6 | */
7 |
8 | const constants = require("./constants");
9 | const request = require("request");
10 |
11 | const { API_URL } = constants;
12 |
13 | const getLinescore = (gameId: number) => {
14 | return new Promise((resolve: Function, reject: Function) => {
15 | request(
16 | { url: API_URL + `game/${gameId}/linescore`, json: true },
17 | (error: Object, response: Object, body: Object) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getLinescore;
29 |
--------------------------------------------------------------------------------
/src/getStandings.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get Regular Season Standings
5 | * Accepts League Parameter (AL/NL), and year (YYYY)
6 | * If no year, return current year.
7 | */
8 |
9 | const { API_URL, CURRENT_YEAR } = require("./constants");
10 | const request = require("request");
11 |
12 | const getStandings = (league: string, year: string) => {
13 | return new Promise((resolve: Function, reject: Function) => {
14 | let leagueId = "";
15 |
16 | if (league === "AL") {
17 | leagueId = "103";
18 | } else if (league === "NL") {
19 | leagueId = "104";
20 | } else if (league !== "AL" || league !== "NL") {
21 | return console.error("Please enter a league. Accepted: AL / NL");
22 | }
23 |
24 | request(
25 | {
26 | url: `${API_URL}standings?leagueId=${leagueId}&season=${
27 | year ? year : CURRENT_YEAR
28 | }`,
29 | json: true
30 | },
31 | (error: Object, response: Object, body: Object) => {
32 | if (error) {
33 | reject(error);
34 | } else {
35 | resolve(body);
36 | }
37 | }
38 | );
39 | });
40 | };
41 |
42 | module.exports = getStandings;
43 |
--------------------------------------------------------------------------------
/src/getTeams.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | /**
4 | * Get a list of data about teams
5 | * Accepts argument for singleTeamId to only return information from one team
6 | * Possible TODO: Allow to get multiple teams, but not all? Use case??
7 | * Possible TODO: Add team abbrev for easy call? `getTeams('CLE')`
8 | */
9 |
10 | const { API_URL } = require("./constants");
11 | const request = require("request");
12 |
13 | const getTeams = (singleTeamId: string = "") => {
14 | return new Promise((resolve: Function, reject: Function) => {
15 | request(
16 | { url: API_URL + `teams?sportId=1&teamId=${singleTeamId}`, json: true },
17 | (error: Object, response: Object, body: Object) => {
18 | if (error) {
19 | reject(error);
20 | } else {
21 | resolve(body);
22 | }
23 | }
24 | );
25 | });
26 | };
27 |
28 | module.exports = getTeams;
29 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | const getBoxscore = require("./getBoxscore");
4 | const getColorFeed = require("./getColorFeed");
5 | const getGameFeed = require("./getGameFeed");
6 | const getGames = require("./getGames");
7 | const getLinescore = require("./getLinescore");
8 | const getStandings = require("./getStandings");
9 | const getTeams = require("./getTeams");
10 |
11 | module.exports = {
12 | getBoxscore,
13 | getColorFeed,
14 | getGameFeed,
15 | getGames,
16 | getLinescore,
17 | getStandings,
18 | getTeams
19 | };
20 |
--------------------------------------------------------------------------------
/test.js:
--------------------------------------------------------------------------------
1 | const MLBApi = require("./lib/index.js");
2 |
3 | MLBApi.getGames();
4 |
5 | MLBApi.getTeams();
6 |
7 | MLBApi.getGameFeed(533786);
8 |
9 | MLBApi.getLinescore(533786);
10 |
11 | MLBApi.getBoxscore(533786).then(result => console.log(result));
12 |
13 | MLBApi.getStandings("AL");
14 |
--------------------------------------------------------------------------------