Adds liniting into the workflow (#3082)

* initial linting of src

* fix indent to 2 spaces

* Removes unnecessary rules

* ignore spec folder for now

* Spec linting

* Fix spec indent

* nits

* nits

* no no-empty rule
This commit is contained in:
Florent Vilmart
2016-11-24 15:47:41 -05:00
committed by GitHub
parent 6e2fba4ae4
commit 8c2c76dd26
149 changed files with 3478 additions and 3507 deletions

View File

@@ -2,7 +2,7 @@
import PromiseRouter from '../PromiseRouter';
import rest from '../rest';
import _ from 'lodash';
import url from 'url';
import Parse from 'parse/node';
const ALLOWED_GET_QUERY_KEYS = ['keys', 'include'];

View File

@@ -10,7 +10,7 @@ export class CloudCodeRouter extends PromiseRouter {
let config = req.config;
let jobs = triggers.getJobs(config.applicationId) || {};
return Promise.resolve({
response: Object.keys(jobs).map((jobName) => {
response: Object.keys(jobs).map((jobName) => {
return {
jobName,
}

View File

@@ -47,9 +47,9 @@ export class FeaturesRouter extends PromiseRouter {
};
return { response: {
features: features,
parseServerVersion: version,
} };
features: features,
parseServerVersion: version,
} };
});
}
}

View File

@@ -1,7 +1,7 @@
import express from 'express';
import BodyParser from 'body-parser';
import * as Middlewares from '../middlewares';
import { randomHexString } from '../cryptoUtils';
import Parse from 'parse/node';
import Config from '../Config';
import mime from 'mime';
@@ -40,7 +40,7 @@ export class FilesRouter {
if (isFileStreamable(req, filesController)) {
filesController.getFileStream(config, filename).then((stream) => {
handleFileStream(stream, req, res, contentType);
}).catch((err) => {
}).catch(() => {
res.status(404);
res.set('Content-Type', 'text/plain');
res.end('File not found.');
@@ -51,7 +51,7 @@ export class FilesRouter {
res.set('Content-Type', contentType);
res.set('Content-Length', data.length);
res.end(data);
}).catch((err) => {
}).catch(() => {
res.status(404);
res.set('Content-Type', 'text/plain');
res.end('File not found.');
@@ -87,7 +87,7 @@ export class FilesRouter {
res.status(201);
res.set('Location', result.url);
res.json(result);
}).catch((err) => {
}).catch(() => {
next(new Parse.Error(Parse.Error.FILE_SAVE_ERROR, 'Could not store file.'));
});
}
@@ -98,7 +98,7 @@ export class FilesRouter {
res.status(200);
// TODO: return useful JSON here?
res.end();
}).catch((error) => {
}).catch(() => {
next(new Parse.Error(Parse.Error.FILE_DELETE_ERROR,
'Could not delete file.'));
});
@@ -138,7 +138,7 @@ function handleFileStream(stream, req, res, contentType) {
if (!partialend) {
if (((stream.length-1) - start) < (buffer_size)) {
end = stream.length - 1;
end = stream.length - 1;
}else{
end = start + (buffer_size);
}
@@ -159,8 +159,6 @@ function handleFileStream(stream, req, res, contentType) {
stream.seek(start, function () {
// get gridFile stream
var gridFileStream = stream.stream(true);
var ended = false;
var bufferIdx = 0;
var bufferAvail = 0;
var range = (end - start) + 1;
var totalbyteswanted = (end - start) + 1;
@@ -176,7 +174,6 @@ function handleFileStream(stream, req, res, contentType) {
res.write(buff);
totalbyteswritten += buff.length;
range -= buff.length;
bufferIdx += buff.length;
bufferAvail -= buff.length;
}
} else {
@@ -185,7 +182,6 @@ function handleFileStream(stream, req, res, contentType) {
const buffer = buff.slice(0,range);
res.write(buffer);
totalbyteswritten += buffer.length;
bufferIdx += range;
bufferAvail -= range;
}
}

View File

@@ -1,8 +1,7 @@
// FunctionsRouter.js
var express = require('express'),
Parse = require('parse/node').Parse,
triggers = require('../triggers');
var Parse = require('parse/node').Parse,
triggers = require('../triggers');
import PromiseRouter from '../PromiseRouter';
import { promiseEnforceMasterKeyAccess } from '../middlewares';
@@ -12,9 +11,9 @@ import { logger } from '../logger';
function parseObject(obj) {
if (Array.isArray(obj)) {
return obj.map((item) => {
return parseObject(item);
});
return obj.map((item) => {
return parseObject(item);
});
} else if (obj && obj.__type == 'Date') {
return Object.assign(new Date(obj.iso), obj);
} else if (obj && obj.__type == 'File') {
@@ -63,10 +62,10 @@ export class FunctionsRouter extends PromiseRouter {
error: jobHandler.setFailed.bind(jobHandler),
message: jobHandler.setMessage.bind(jobHandler)
}
return jobHandler.setRunning(jobName, params).then((jobStatus) => {
return jobHandler.setRunning(jobName, params).then((jobStatus) => {
request.jobId = jobStatus.objectId
// run the function async
process.nextTick(() => {
process.nextTick(() => {
jobFunction(request, status);
});
return {
@@ -131,10 +130,10 @@ export class FunctionsRouter extends PromiseRouter {
const cleanResult = logger.truncateLogMessage(JSON.stringify(result.response.result));
logger.info(`Ran cloud function ${functionName} for user ${userString} `
+ `with:\n Input: ${cleanInput }\n Result: ${cleanResult }`, {
functionName,
params,
user: userString,
});
functionName,
params,
user: userString,
});
resolve(result);
} catch (e) {
reject(e);
@@ -144,11 +143,11 @@ export class FunctionsRouter extends PromiseRouter {
logger.error(`Failed running cloud function ${functionName} for `
+ `user ${userString} with:\n Input: ${cleanInput}\n Error: `
+ JSON.stringify(error), {
functionName,
error,
params,
user: userString
});
functionName,
error,
params,
user: userString
});
reject(error);
} catch (e) {
reject(e);

View File

@@ -22,7 +22,7 @@ export class GlobalConfigRouter extends PromiseRouter {
acc[`params.${key}`] = params[key];
return acc;
}, {});
return req.config.database.update('_GlobalConfig', {objectId: "1"}, update, {upsert: true}).then(() => ({ response: { result: true } }));
return req.config.database.update('_GlobalConfig', {objectId: "1"}, update, {upsert: true}).then(() => ({ response: { result: true } }));
}
mountRoutes() {

View File

@@ -5,15 +5,15 @@ import * as middleware from "../middlewares";
export class HooksRouter extends PromiseRouter {
createHook(aHook, config) {
return config.hooksController.createHook(aHook).then( (hook) => ({response: hook}));
};
}
updateHook(aHook, config) {
return config.hooksController.updateHook(aHook).then((hook) => ({response: hook}));
};
}
handlePost(req) {
return this.createHook(req.body, req.config);
};
}
handleGetFunctions(req) {
var hooksController = req.config.hooksController;

View File

@@ -1,7 +1,7 @@
import PromiseRouter from '../PromiseRouter';
var request = require("request");
var rest = require("../rest");
var Auth = require("../Auth");
import Parse from 'parse/node';
// TODO move validation logic in IAPValidationController
const IAP_SANDBOX_URL = "https://sandbox.itunes.apple.com/verifyReceipt";
@@ -59,7 +59,7 @@ function getFileForProductIdentifier(productIdentifier, req) {
export class IAPValidationRouter extends PromiseRouter {
handleRequest(req) {
handleRequest(req) {
let receipt = req.body.receipt;
const productIdentifier = req.body.productIdentifier;
@@ -81,11 +81,11 @@ export class IAPValidationRouter extends PromiseRouter {
}
function successCallback() {
return getFileForProductIdentifier(productIdentifier, req);
};
return getFileForProductIdentifier(productIdentifier, req);
}
function errorCallback(error) {
return Promise.resolve({response: appStoreError(error.status) });
return Promise.resolve({response: appStoreError(error.status) });
}
return validateWithAppStore(IAP_PRODUCTION_URL, receipt).then( () => {
@@ -95,10 +95,10 @@ export class IAPValidationRouter extends PromiseRouter {
}, (error) => {
if (error.status == 21007) {
return validateWithAppStore(IAP_SANDBOX_URL, receipt).then( () => {
return successCallback();
}, (error) => {
return errorCallback(error);
}
return successCallback();
}, (error) => {
return errorCallback(error);
}
);
}

View File

@@ -1,5 +1,4 @@
import PromiseRouter from '../PromiseRouter';
import UserController from '../Controllers/UserController';
import Config from '../Config';
import express from 'express';
import path from 'path';
@@ -46,7 +45,7 @@ export class PublicAPIRouter extends PromiseRouter {
});
}
// Should we keep the file in memory or leave like that?
fs.readFile(path.resolve(views, "choose_password"), 'utf-8', (err, data) => {
fs.readFile(path.resolve(views, "choose_password"), 'utf-8', (err, data) => {
if (err) {
return reject(err);
}
@@ -72,7 +71,7 @@ export class PublicAPIRouter extends PromiseRouter {
return this.invalidLink(req);
}
return config.userController.checkResetTokenValidity(username, token).then( (user) => {
return config.userController.checkResetTokenValidity(username, token).then( () => {
let params = qs.stringify({token, id: config.applicationId, username, app: config.appName, });
return Promise.resolve({
status: 302,
@@ -101,7 +100,7 @@ export class PublicAPIRouter extends PromiseRouter {
return this.invalidLink(req);
}
return config.userController.updatePassword(username, token, new_password).then((result) => {
return config.userController.updatePassword(username, token, new_password).then(() => {
let params = qs.stringify({username: username});
return Promise.resolve({
status: 302,
@@ -119,8 +118,8 @@ export class PublicAPIRouter extends PromiseRouter {
invalidLink(req) {
return Promise.resolve({
status: 302,
location: req.config.invalidLinkURL
status: 302,
location: req.config.invalidLinkURL
});
}

View File

@@ -1,7 +1,5 @@
import ClassesRouter from './ClassesRouter';
import PromiseRouter from '../PromiseRouter';
import rest from '../rest';
export class RolesRouter extends ClassesRouter {
handleFind(req) {

View File

@@ -1,7 +1,6 @@
// schemas.js
var express = require('express'),
Parse = require('parse/node').Parse,
var Parse = require('parse/node').Parse,
SchemaController = require('../Controllers/SchemaController');
import PromiseRouter from '../PromiseRouter';

View File

@@ -1,6 +1,6 @@
import ClassesRouter from './ClassesRouter';
import PromiseRouter from '../PromiseRouter';
import Parse from 'parse/node';
import rest from '../rest';
import Auth from '../Auth';
import RestWrite from '../RestWrite';
@@ -75,14 +75,14 @@ export class SessionsRouter extends ClassesRouter {
expiresAt: Parse._encode(expiresAt)
};
const create = new RestWrite(config, masterAuth, '_Session', null, sessionData);
return create.execute().then(() => {
return create.execute().then(() => {
// delete the session token, use the db to skip beforeSave
return config.database.update('_User', {
objectId: user.id
}, {
sessionToken: {__op: 'Delete'}
});
}).then((res) => {
}).then(() => {
return Promise.resolve({ response: sessionData });
});
}
@@ -94,7 +94,7 @@ export class SessionsRouter extends ClassesRouter {
this.route('POST', '/sessions', req => { return this.handleCreate(req); });
this.route('PUT', '/sessions/:objectId', req => { return this.handleUpdate(req); });
this.route('DELETE', '/sessions/:objectId', req => { return this.handleDelete(req); });
this.route('POST', '/upgradeToRevocableSession', req => { return this.handleUpdateToRevocableSession(req); })
this.route('POST', '/upgradeToRevocableSession', req => { return this.handleUpdateToRevocableSession(req); })
}
}

View File

@@ -1,16 +1,15 @@
// These methods handle the User-related routes.
import deepcopy from 'deepcopy';
import Parse from 'parse/node';
import Config from '../Config';
import AccountLockout from '../AccountLockout';
import ClassesRouter from './ClassesRouter';
import PromiseRouter from '../PromiseRouter';
import rest from '../rest';
import Auth from '../Auth';
import passwordCrypto from '../password';
import RestWrite from '../RestWrite';
let cryptoUtils = require('../cryptoUtils');
let triggers = require('../triggers');
export class UsersRouter extends ClassesRouter {
handleFind(req) {
@@ -216,10 +215,10 @@ export class UsersRouter extends ClassesRouter {
throw new Parse.Error(Parse.Error.INVALID_EMAIL_ADDRESS, 'you must provide a valid email string');
}
let userController = req.config.userController;
return userController.sendPasswordResetEmail(email).then(token => {
return Promise.resolve({
response: {}
});
return userController.sendPasswordResetEmail(email).then(() => {
return Promise.resolve({
response: {}
});
}, err => {
if (err.code === Parse.Error.OBJECT_NOT_FOUND) {
throw new Parse.Error(Parse.Error.EMAIL_NOT_FOUND, `No user found with email ${email}.`);