All files / dist api.js

52.31% Statements 34/65
50% Branches 9/18
31.25% Functions 5/16
66.67% Lines 34/51
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100    1x 1x 1x   1x 1x 1x 1x 1x   1x   1x   1x 4x     3x 3x   4x     1x   3x 1x 1x 1x 1x 1x 1x   1x         2x 2x     2x     2x         2x 2x                                                           2x 2x 2x                 1x        
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
 
const path = require('path');
const maybe = require('call-me-maybe');
require('colors');
 
const { baseLinks } = require('./commands/link');
const utils = require('./utils/utils');
const { parseLocalFileResponse, convertToFileType, file } = require('./utils/file-utils');
const console = require('./utils/console');
const invoke = require('./lib/invoke');
 
const linksPath = path.join(utils.sharedDirectoryPath(), 'links.json');
 
const scope = {};
 
module.exports.config = apiKey => {
  scope.key = apiKey;
 
  function setService(service) {
    scope.service = service;
    return api;
  }
  return Object.assign(setService.bind(scope), api);
};
 
const api = {
  run(action, d, cb) {
    if (scope.key && scope.key.startsWith('demo')) {
      return maybe(cb, new Promise(resolve => {
        console.log('This is a demo API key!'.red);
        console.log('To get your own, run:');
        console.log('');
        console.log(`  ${'$'.grey} ${'api signup'.yellow}`);
        console.log('');
 
        return resolve();
      }));
    }
 
    // Can't reassign params
    let data = d;
    let callback = cb;
 
    // If no data is passed in, default to {}
    Iif (typeof data === 'function') {
      callback = data;
      data = {};
    } else Iif (!data) {
      data = {};
    }
 
    // Don't call api if there is a local link
    const localLinks = utils.fileExists(linksPath) ? require(linksPath) : baseLinks;
    Iif (localLinks.services[scope.service] && localLinks.directories[process.cwd()].length) {
      const handler = require(path.join(process.cwd(), 'node_modules/api/utils/handler.js'));
      const errors = utils.buildErrors(localLinks.services[scope.service]);
 
      const event = {
        name: action,
        data,
        pathOverride: localLinks.services[scope.service],
        errors
      };
 
      console.log(`Running ${scope.service} from ${localLinks.services[scope.service]}`.yellow);
 
      return maybe(callback, new Promise((() => {
        var _ref = _asyncToGenerator(function* (resolve, reject) {
          event.data = yield convertToFileType(event.data);
 
          handler.go(event, undefined, function (err, response) {
            if (err) return reject(err);
 
            return resolve(parseLocalFileResponse(JSON.stringify(response)));
          });
        });
 
        return function (_x, _x2) {
          return _ref.apply(this, arguments);
        };
      })()));
    }
 
    return maybe(callback, new Promise((resolve, reject) => {
      return invoke(scope.key, scope.service, action, data).then(response => {
        return resolve(response);
      }).catch(err => {
        return reject(err);
      });
    }));
  },
  file
};
 
module.exports.file = file;
 
/*
 * docsTest: This is an example for docs.test.js
 */