index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict'
  2. module.exports = apiPlugin
  3. const get = require('lodash/get')
  4. const pick = require('lodash/pick')
  5. const method = require('./method')
  6. const deprecate = require('./deprecate')
  7. const ENDPOINT_DEFAULTS = require('../../routes.json')
  8. function apiPlugin (octokit) {
  9. Object.keys(ENDPOINT_DEFAULTS).forEach(namespaceName => {
  10. octokit[namespaceName] = {}
  11. Object.keys(ENDPOINT_DEFAULTS[namespaceName]).forEach(apiName => {
  12. let apiOptions = ENDPOINT_DEFAULTS[namespaceName][apiName]
  13. let deprecated
  14. if (apiOptions.alias) {
  15. deprecated = apiOptions.deprecated
  16. apiOptions = get(ENDPOINT_DEFAULTS, apiOptions.alias)
  17. }
  18. const endpointDefaults = pick(apiOptions, ['method', 'url', 'headers', 'request'])
  19. if (deprecated) {
  20. endpointDefaults.deprecated = deprecated
  21. }
  22. octokit[namespaceName][apiName] = method.bind(null, octokit, endpointDefaults, apiOptions.params)
  23. // log deprecation warning for APIs flagged as deprecated
  24. if (apiOptions.deprecated) {
  25. octokit[namespaceName][apiName] = deprecate(
  26. octokit[namespaceName][apiName],
  27. apiOptions.deprecated
  28. )
  29. }
  30. })
  31. })
  32. }