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
*/ |