UNPKG

r8s-cli

Version:

A command line tool for Reaction Commerce to be used with kubernetes

167 lines (126 loc) 6.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.GraphQL = undefined; var _defaultsDeep2 = require('lodash/defaultsDeep'); var _defaultsDeep3 = _interopRequireDefault(_defaultsDeep2); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _nodeFetch = require('node-fetch'); var _nodeFetch2 = _interopRequireDefault(_nodeFetch); var _config = require('./config'); var Config = _interopRequireWildcard(_config); var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); var _hash_password = require('./hash_password'); var _hash_password2 = _interopRequireDefault(_hash_password); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var GraphQL = exports.GraphQL = function () { function GraphQL() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, GraphQL); var endpoint = options.endpoint, token = options.token; if (!!endpoint && typeof endpoint !== 'string') { throw new TypeError('GraphQL endpoint must be a String'); } if (!!token && typeof token !== 'string') { throw new TypeError('Launchdock token must be a String'); } this.url = process.env.LAUNCHDOCK_GRAPHQL_ENDPOINT || endpoint || Config.get('cli', 'launchdock.graphqlUrl'); this.token = process.env.LAUNCHDOCK_TOKEN || token || Config.get('global', 'launchdock.token'); } _createClass(GraphQL, [{ key: 'fetch', value: function fetch(query) { var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; if (typeof query !== 'string') { throw new TypeError('a query argument is required'); } opts.body = JSON.stringify({ query: query, variables: variables }); (0, _defaultsDeep3.default)(opts, { method: 'POST', headers: { 'Content-Type': 'application/json' } }); if (this.token) { opts.headers['meteor-login-token'] = this.token; } _logger2.default.debug('GraphQL url: ' + this.url); _logger2.default.debug('GraphQL fetch options:'); _logger2.default.debug(opts); return (0, _nodeFetch2.default)(this.url, opts).then(function (res) { return res.json(); }).catch(function (e) { return _logger2.default.error(e); }); } }, { key: 'login', value: function login(_ref) { var username = _ref.username, password = _ref.password; if (!username || !password) { _logger2.default.error('\nEmail and password required'); process.exit(1); } return this.fetch('\n mutation loginWithPassword ($username: String!, $password: HashedPassword!) {\n loginWithPassword (username: $username, password: $password) {\n token\n tokenExpires\n user {\n _id\n username\n email\n }\n }\n }\n ', { username: username, password: (0, _hash_password2.default)(password) }); } }, { key: 'register', value: function register(_ref2) { var token = _ref2.token, name = _ref2.name, username = _ref2.username, password = _ref2.password; if (!token) { _logger2.default.error('\nAn invite token is required'); process.exit(1); } if (!name) { _logger2.default.error('\nFull name is required'); process.exit(1); } if (!username || !password) { _logger2.default.error('\nUsername, password, and password confirmation required'); process.exit(1); } return this.fetch('\n mutation inviteAccept($username: String!, $password: String!, $name: String!, $token: String!) {\n inviteAccept(username: $username, password: $password, name: $name, token: $token) {\n _id\n email\n }\n }\n ', { token: token, name: name, username: username, password: password }); } }, { key: 'forgotPassword', value: function forgotPassword(_ref3) { var email = _ref3.email; if (!email) { _logger2.default.error('\Old password and new password required'); process.exit(1); } return this.fetch('\n mutation userForgotPassword($email: String!, $cli: Boolean) {\n userForgotPassword(email: $email, cli: $cli) {\n success\n }\n }\n ', { email: email, cli: true }); } }, { key: 'resetPassword', value: function resetPassword(_ref4) { var token = _ref4.token, password = _ref4.password; if (!token) { _logger2.default.error('\Must provide a reset token to change a password. Did you mean "forgot-password"?'); process.exit(1); } if (!password) { _logger2.default.error('\Old password and new password required'); process.exit(1); } return this.fetch('\n mutation resetPassword($newPassword: HashedPassword!, $token: String!) {\n resetPassword(newPassword: $newPassword, token: $token) {\n id\n token\n tokenExpires\n }\n }\n ', { token: token, newPassword: (0, _hash_password2.default)(password) }); } }, { key: 'whoami', value: function whoami() { return this.fetch('\n query {\n currentUser {\n _id\n email\n username\n }\n }\n '); } }]); return GraphQL; }();