Enable prefer-const lint rule (#3202)

This commit is contained in:
Arthur Cinader
2016-12-07 15:17:05 -08:00
committed by Florent Vilmart
parent a6c988176e
commit ca286b7108
106 changed files with 1183 additions and 1183 deletions

View File

@@ -3,7 +3,7 @@ import logger from '../logger';
import type { FlattenedObjectData } from './Subscription';
export type Message = { [attr: string]: any };
let dafaultFields = ['className', 'objectId', 'updatedAt', 'createdAt', 'ACL'];
const dafaultFields = ['className', 'objectId', 'updatedAt', 'createdAt', 'ACL'];
class Client {
id: number;
@@ -63,7 +63,7 @@ class Client {
_pushEvent(type: string): Function {
return function(subscriptionId: number, parseObjectJSON: any): void {
let response: Message = {
const response: Message = {
'op' : type,
'clientId' : this.id
};
@@ -85,11 +85,11 @@ class Client {
if (!fields) {
return parseObjectJSON;
}
let limitedParseObject = {};
for (let field of dafaultFields) {
const limitedParseObject = {};
for (const field of dafaultFields) {
limitedParseObject[field] = parseObjectJSON[field];
}
for (let field of fields) {
for (const field of fields) {
if (field in parseObjectJSON) {
limitedParseObject[field] = parseObjectJSON[field];
}

View File

@@ -23,7 +23,7 @@ class ParseCloudCodePublisher {
_onCloudCodeMessage(type: string, request: any): void {
logger.verbose('Raw request from cloud code current : %j | original : %j', request.object, request.original);
// We need the full JSON which includes className
let message = {
const message = {
currentParseObject: request.object._toFullJSON()
}
if (request.original) {

View File

@@ -28,9 +28,9 @@ class ParseLiveQueryServer {
config = config || {};
// Store keys, convert obj to map
let keyPairs = config.keyPairs || {};
const keyPairs = config.keyPairs || {};
this.keyPairs = new Map();
for (let key of Object.keys(keyPairs)) {
for (const key of Object.keys(keyPairs)) {
this.keyPairs.set(key, keyPairs[key]);
}
logger.verbose('Support key pairs', this.keyPairs);
@@ -39,11 +39,11 @@ class ParseLiveQueryServer {
Parse.Object.disableSingleInstance();
Parse.User.enableUnsafeCurrentUser();
let serverURL = config.serverURL || Parse.serverURL;
const serverURL = config.serverURL || Parse.serverURL;
Parse.serverURL = serverURL;
let appId = config.appId || Parse.applicationId;
let javascriptKey = Parse.javaScriptKey;
let masterKey = config.masterKey || Parse.masterKey;
const appId = config.appId || Parse.applicationId;
const javascriptKey = Parse.javaScriptKey;
const masterKey = config.masterKey || Parse.masterKey;
Parse.initialize(appId, javascriptKey, masterKey);
// Initialize websocket server
@@ -86,13 +86,13 @@ class ParseLiveQueryServer {
// Message.originalParseObject is the original ParseObject JSON.
_inflateParseObject(message: any): void {
// Inflate merged object
let currentParseObject = message.currentParseObject;
const currentParseObject = message.currentParseObject;
let className = currentParseObject.className;
let parseObject = new Parse.Object(className);
parseObject._finishFetch(currentParseObject);
message.currentParseObject = parseObject;
// Inflate original object
let originalParseObject = message.originalParseObject;
const originalParseObject = message.originalParseObject;
if (originalParseObject) {
className = originalParseObject.className;
parseObject = new Parse.Object(className);
@@ -106,28 +106,28 @@ class ParseLiveQueryServer {
_onAfterDelete(message: any): void {
logger.verbose(Parse.applicationId + 'afterDelete is triggered');
let deletedParseObject = message.currentParseObject.toJSON();
let className = deletedParseObject.className;
const deletedParseObject = message.currentParseObject.toJSON();
const className = deletedParseObject.className;
logger.verbose('ClassName: %j | ObjectId: %s', className, deletedParseObject.id);
logger.verbose('Current client number : %d', this.clients.size);
let classSubscriptions = this.subscriptions.get(className);
const classSubscriptions = this.subscriptions.get(className);
if (typeof classSubscriptions === 'undefined') {
logger.debug('Can not find subscriptions under this class ' + className);
return;
}
for (let subscription of classSubscriptions.values()) {
let isSubscriptionMatched = this._matchesSubscription(deletedParseObject, subscription);
for (const subscription of classSubscriptions.values()) {
const isSubscriptionMatched = this._matchesSubscription(deletedParseObject, subscription);
if (!isSubscriptionMatched) {
continue;
}
for (let [clientId, requestIds] of _.entries(subscription.clientRequestIds)) {
let client = this.clients.get(clientId);
for (const [clientId, requestIds] of _.entries(subscription.clientRequestIds)) {
const client = this.clients.get(clientId);
if (typeof client === 'undefined') {
continue;
}
for (let requestId of requestIds) {
let acl = message.currentParseObject.getACL();
for (const requestId of requestIds) {
const acl = message.currentParseObject.getACL();
// Check ACL
this._matchesACL(acl, client, requestId).then((isMatched) => {
if (!isMatched) {
@@ -151,25 +151,25 @@ class ParseLiveQueryServer {
if (message.originalParseObject) {
originalParseObject = message.originalParseObject.toJSON();
}
let currentParseObject = message.currentParseObject.toJSON();
let className = currentParseObject.className;
const currentParseObject = message.currentParseObject.toJSON();
const className = currentParseObject.className;
logger.verbose('ClassName: %s | ObjectId: %s', className, currentParseObject.id);
logger.verbose('Current client number : %d', this.clients.size);
let classSubscriptions = this.subscriptions.get(className);
const classSubscriptions = this.subscriptions.get(className);
if (typeof classSubscriptions === 'undefined') {
logger.debug('Can not find subscriptions under this class ' + className);
return;
}
for (let subscription of classSubscriptions.values()) {
let isOriginalSubscriptionMatched = this._matchesSubscription(originalParseObject, subscription);
let isCurrentSubscriptionMatched = this._matchesSubscription(currentParseObject, subscription);
for (let [clientId, requestIds] of _.entries(subscription.clientRequestIds)) {
let client = this.clients.get(clientId);
for (const subscription of classSubscriptions.values()) {
const isOriginalSubscriptionMatched = this._matchesSubscription(originalParseObject, subscription);
const isCurrentSubscriptionMatched = this._matchesSubscription(currentParseObject, subscription);
for (const [clientId, requestIds] of _.entries(subscription.clientRequestIds)) {
const client = this.clients.get(clientId);
if (typeof client === 'undefined') {
continue;
}
for (let requestId of requestIds) {
for (const requestId of requestIds) {
// Set orignal ParseObject ACL checking promise, if the object does not match
// subscription, we do not need to check ACL
let originalACLCheckingPromise;
@@ -188,7 +188,7 @@ class ParseLiveQueryServer {
if (!isCurrentSubscriptionMatched) {
currentACLCheckingPromise = Parse.Promise.as(false);
} else {
let currentACL = message.currentParseObject.getACL();
const currentACL = message.currentParseObject.getACL();
currentACLCheckingPromise = this._matchesACL(currentACL, client, requestId);
}
@@ -221,7 +221,7 @@ class ParseLiveQueryServer {
} else {
return null;
}
let functionName = 'push' + type;
const functionName = 'push' + type;
client[functionName](requestId, currentParseObject);
}, (error) => {
logger.error('Matching ACL error : ', error);
@@ -271,23 +271,23 @@ class ParseLiveQueryServer {
parseWebsocket.on('disconnect', () => {
logger.info('Client disconnect: %d', parseWebsocket.clientId);
let clientId = parseWebsocket.clientId;
const clientId = parseWebsocket.clientId;
if (!this.clients.has(clientId)) {
logger.error('Can not find client %d on disconnect', clientId);
return;
}
// Delete client
let client = this.clients.get(clientId);
const client = this.clients.get(clientId);
this.clients.delete(clientId);
// Delete client from subscriptions
for (let [requestId, subscriptionInfo] of _.entries(client.subscriptionInfos)) {
let subscription = subscriptionInfo.subscription;
for (const [requestId, subscriptionInfo] of _.entries(client.subscriptionInfos)) {
const subscription = subscriptionInfo.subscription;
subscription.deleteClientSubscription(clientId, requestId);
// If there is no client which is subscribing this subscription, remove it from subscriptions
let classSubscriptions = this.subscriptions.get(subscription.className);
const classSubscriptions = this.subscriptions.get(subscription.className);
if (!subscription.hasSubscribingClient()) {
classSubscriptions.delete(subscription.hash);
}
@@ -316,12 +316,12 @@ class ParseLiveQueryServer {
return Parse.Promise.as(true);
}
// Check subscription sessionToken matches ACL first
let subscriptionInfo = client.getSubscriptionInfo(requestId);
const subscriptionInfo = client.getSubscriptionInfo(requestId);
if (typeof subscriptionInfo === 'undefined') {
return Parse.Promise.as(false);
}
let subscriptionSessionToken = subscriptionInfo.sessionToken;
const subscriptionSessionToken = subscriptionInfo.sessionToken;
return this.sessionTokenCache.getUserId(subscriptionSessionToken).then((userId) => {
return acl.getReadAccess(userId);
}).then((isSubscriptionSessionTokenMatched) => {
@@ -368,7 +368,7 @@ class ParseLiveQueryServer {
then((roles) => {
// Finally, see if any of the user's roles allow them read access
for (let role of roles) {
for (const role of roles) {
if (acl.getRoleReadAccess(role)) {
return resolve(true);
}
@@ -387,7 +387,7 @@ class ParseLiveQueryServer {
}
// Check client sessionToken matches ACL
let clientSessionToken = client.sessionToken;
const clientSessionToken = client.sessionToken;
return this.sessionTokenCache.getUserId(clientSessionToken).then((userId) => {
return acl.getReadAccess(userId);
});
@@ -404,7 +404,7 @@ class ParseLiveQueryServer {
logger.error('Key in request is not valid');
return;
}
let client = new Client(this.clientId, parseWebsocket);
const client = new Client(this.clientId, parseWebsocket);
parseWebsocket.clientId = this.clientId;
this.clientId += 1;
this.clients.set(parseWebsocket.clientId, client);
@@ -417,7 +417,7 @@ class ParseLiveQueryServer {
return true;
}
let isValid = false;
for (let [key, secret] of validKeyPairs) {
for (const [key, secret] of validKeyPairs) {
if (!request[key] || request[key] !== secret) {
continue;
}
@@ -434,16 +434,16 @@ class ParseLiveQueryServer {
logger.error('Can not find this client, make sure you connect to server before subscribing');
return;
}
let client = this.clients.get(parseWebsocket.clientId);
const client = this.clients.get(parseWebsocket.clientId);
// Get subscription from subscriptions, create one if necessary
let subscriptionHash = queryHash(request.query);
const subscriptionHash = queryHash(request.query);
// Add className to subscriptions if necessary
let className = request.query.className;
const className = request.query.className;
if (!this.subscriptions.has(className)) {
this.subscriptions.set(className, new Map());
}
let classSubscriptions = this.subscriptions.get(className);
const classSubscriptions = this.subscriptions.get(className);
let subscription;
if (classSubscriptions.has(subscriptionHash)) {
subscription = classSubscriptions.get(subscriptionHash);
@@ -453,7 +453,7 @@ class ParseLiveQueryServer {
}
// Add subscriptionInfo to client
let subscriptionInfo = {
const subscriptionInfo = {
subscription: subscription
};
// Add selected fields and sessionToken for this subscription if necessary
@@ -486,8 +486,8 @@ class ParseLiveQueryServer {
logger.error('Can not find this client, make sure you connect to server before unsubscribing');
return;
}
let requestId = request.requestId;
let client = this.clients.get(parseWebsocket.clientId);
const requestId = request.requestId;
const client = this.clients.get(parseWebsocket.clientId);
if (typeof client === 'undefined') {
Client.pushError(parseWebsocket, 2, 'Cannot find client with clientId ' + parseWebsocket.clientId +
'. Make sure you connect to live query server before unsubscribing.');
@@ -495,7 +495,7 @@ class ParseLiveQueryServer {
return;
}
let subscriptionInfo = client.getSubscriptionInfo(requestId);
const subscriptionInfo = client.getSubscriptionInfo(requestId);
if (typeof subscriptionInfo === 'undefined') {
Client.pushError(parseWebsocket, 2, 'Cannot find subscription with clientId ' + parseWebsocket.clientId +
' subscriptionId ' + requestId + '. Make sure you subscribe to live query server before unsubscribing.');
@@ -506,11 +506,11 @@ class ParseLiveQueryServer {
// Remove subscription from client
client.deleteSubscriptionInfo(requestId);
// Remove client from subscription
let subscription = subscriptionInfo.subscription;
let className = subscription.className;
const subscription = subscriptionInfo.subscription;
const className = subscription.className;
subscription.deleteClientSubscription(parseWebsocket.clientId, requestId);
// If there is no client which is subscribing this subscription, remove it from subscriptions
let classSubscriptions = this.subscriptions.get(className);
const classSubscriptions = this.subscriptions.get(className);
if (!subscription.hasSubscribingClient()) {
classSubscriptions.delete(subscription.hash);
}

View File

@@ -7,10 +7,10 @@ import {
RedisPubSub
} from '../Adapters/PubSub/RedisPubSub';
let ParsePubSub = {};
const ParsePubSub = {};
function useRedis(config: any): boolean {
let redisURL = config.redisURL;
const redisURL = config.redisURL;
return typeof redisURL !== 'undefined' && redisURL !== '';
}
@@ -18,7 +18,7 @@ ParsePubSub.createPublisher = function(config: any): any {
if (useRedis(config)) {
return RedisPubSub.createPublisher(config);
} else {
let adapter = loadAdapter(config.pubSubAdapter, EventEmitterPubSub, config)
const adapter = loadAdapter(config.pubSubAdapter, EventEmitterPubSub, config)
if (typeof adapter.createPublisher !== 'function') {
throw 'pubSubAdapter should have createPublisher()';
}
@@ -30,7 +30,7 @@ ParsePubSub.createSubscriber = function(config: any): void {
if (useRedis(config)) {
return RedisPubSub.createSubscriber(config);
} else {
let adapter = loadAdapter(config.pubSubAdapter, EventEmitterPubSub, config)
const adapter = loadAdapter(config.pubSubAdapter, EventEmitterPubSub, config)
if (typeof adapter.createSubscriber !== 'function') {
throw 'pubSubAdapter should have createSubscriber()';
}

View File

@@ -1,20 +1,20 @@
import logger from '../logger';
let typeMap = new Map([['disconnect', 'close']]);
const typeMap = new Map([['disconnect', 'close']]);
export class ParseWebSocketServer {
server: Object;
constructor(server: any, onConnect: Function, websocketTimeout: number = 10 * 1000) {
let WebSocketServer = require('ws').Server;
let wss = new WebSocketServer({ server: server });
const WebSocketServer = require('ws').Server;
const wss = new WebSocketServer({ server: server });
wss.on('listening', () => {
logger.info('Parse LiveQuery Server starts running');
});
wss.on('connection', (ws) => {
onConnect(new ParseWebSocket(ws));
// Send ping to client periodically
let pingIntervalId = setInterval(() => {
const pingIntervalId = setInterval(() => {
if (ws.readyState == ws.OPEN) {
ws.ping();
} else {
@@ -34,7 +34,7 @@ export class ParseWebSocket {
}
on(type: string, callback): void {
let wsType = typeMap.has(type) ? typeMap.get(type) : type;
const wsType = typeMap.has(type) ? typeMap.get(type) : type;
this.ws.on(wsType, callback);
}

View File

@@ -217,8 +217,8 @@ function matchesKeyConstraints(object, key, constraints) {
}
break;
case '$exists': {
let propertyExists = typeof object[key] !== 'undefined';
let existenceIsRequired = constraints['$exists'];
const propertyExists = typeof object[key] !== 'undefined';
const existenceIsRequired = constraints['$exists'];
if (typeof constraints['$exists'] !== 'boolean') {
// The SDK will never submit a non-boolean for $exists, but if someone
// tries to submit a non-boolean for $exits outside the SDKs, just ignore it.

View File

@@ -1,4 +1,4 @@
let general = {
const general = {
'title': 'General request schema',
'type': 'object',
'properties': {
@@ -9,7 +9,7 @@ let general = {
},
};
let connect = {
const connect = {
'title': 'Connect operation schema',
'type': 'object',
'properties': {
@@ -40,7 +40,7 @@ let connect = {
"additionalProperties": false
};
let subscribe = {
const subscribe = {
'title': 'Subscribe operation schema',
'type': 'object',
'properties': {
@@ -78,7 +78,7 @@ let subscribe = {
'additionalProperties': false
};
let update = {
const update = {
'title': 'Update operation schema',
'type': 'object',
'properties': {
@@ -116,7 +116,7 @@ let update = {
'additionalProperties': false
};
let unsubscribe = {
const unsubscribe = {
'title': 'Unsubscribe operation schema',
'type': 'object',
'properties': {
@@ -129,7 +129,7 @@ let unsubscribe = {
"additionalProperties": false
}
let RequestSchema = {
const RequestSchema = {
'general': general,
'connect': connect,
'subscribe': subscribe,

View File

@@ -16,14 +16,14 @@ class SessionTokenCache {
if (!sessionToken) {
return Parse.Promise.error('Empty sessionToken');
}
let userId = this.cache.get(sessionToken);
const userId = this.cache.get(sessionToken);
if (userId) {
logger.verbose('Fetch userId %s of sessionToken %s from Cache', userId, sessionToken);
return Parse.Promise.as(userId);
}
return Parse.User.become(sessionToken).then((user) => {
logger.verbose('Fetch userId %s of sessionToken %s from Parse', user.id, sessionToken);
let userId = user.id;
const userId = user.id;
this.cache.set(sessionToken, userId);
return Parse.Promise.as(userId);
}, (error) => {

View File

@@ -21,18 +21,18 @@ class Subscription {
if (!this.clientRequestIds.has(clientId)) {
this.clientRequestIds.set(clientId, []);
}
let requestIds = this.clientRequestIds.get(clientId);
const requestIds = this.clientRequestIds.get(clientId);
requestIds.push(requestId);
}
deleteClientSubscription(clientId: number, requestId: number): void {
let requestIds = this.clientRequestIds.get(clientId);
const requestIds = this.clientRequestIds.get(clientId);
if (typeof requestIds === 'undefined') {
logger.error('Can not find client %d to delete', clientId);
return;
}
let index = requestIds.indexOf(requestId);
const index = requestIds.indexOf(requestId);
if (index < 0) {
logger.error('Can not find client %d subscription %d to delete', clientId, requestId);
return;