From c4abd1e2676b8a45a81cbd0ca7abaf144fdeca40 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Wed, 24 Feb 2016 15:55:11 -0500 Subject: [PATCH] cache as ES6 --- spec/helper.js | 2 +- src/Auth.js | 2 +- src/Config.js | 4 +- src/DatabaseAdapter.js | 2 +- src/RestWrite.js | 4 +- src/cache.js | 40 ++++++++++---------- src/index.js | 2 +- src/middlewares.js | 3 +- src/rest.js | 2 +- src/testing-routes.js | 2 +- src/triggers.js | 83 ++++++++++++++++-------------------------- 11 files changed, 64 insertions(+), 82 deletions(-) diff --git a/spec/helper.js b/spec/helper.js index 9ad56d3d..c7474afe 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -2,7 +2,7 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; -var cache = require('../src/cache'); +var cache = require('../src/cache').default; var DatabaseAdapter = require('../src/DatabaseAdapter'); var express = require('express'); var facebook = require('../src/oauth/facebook'); diff --git a/src/Auth.js b/src/Auth.js index 27bbf885..642f34ab 100644 --- a/src/Auth.js +++ b/src/Auth.js @@ -2,7 +2,7 @@ var deepcopy = require('deepcopy'); var Parse = require('parse/node').Parse; var RestQuery = require('./RestQuery'); -var cache = require('./cache'); +import cache from './cache'; // An Auth object tells you who is requesting something and whether // the master key was used. diff --git a/src/Config.js b/src/Config.js index b2e7428c..510ebf00 100644 --- a/src/Config.js +++ b/src/Config.js @@ -2,10 +2,12 @@ // configured. // mount is the URL for the root of the API; includes http, domain, etc. +import cache from './cache'; + export class Config { constructor(applicationId, mount) { - var cache = require('./cache'); + var DatabaseAdapter = require('./DatabaseAdapter'); var cacheInfo = cache.apps[applicationId]; diff --git a/src/DatabaseAdapter.js b/src/DatabaseAdapter.js index b044c465..904e6c3e 100644 --- a/src/DatabaseAdapter.js +++ b/src/DatabaseAdapter.js @@ -13,11 +13,11 @@ // * This list is incomplete and the database process is not fully modularized. // // Default is ExportAdapter, which uses mongo. +import cache from './cache'; var ExportAdapter = require('./ExportAdapter'); var adapter = ExportAdapter; -var cache = require('./cache'); var dbConnections = {}; var databaseURI = 'mongodb://localhost:27017/parse'; var appDatabaseURIs = {}; diff --git a/src/RestWrite.js b/src/RestWrite.js index 1630f86b..d02f93fa 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -2,10 +2,10 @@ // that writes to the database. // This could be either a "create" or an "update". +import cache from './cache'; var deepcopy = require('deepcopy'); var Auth = require('./Auth'); -var cache = require('./cache'); var Config = require('./Config'); var cryptoUtils = require('./cryptoUtils'); var passwordCrypto = require('./password'); @@ -114,7 +114,7 @@ RestWrite.prototype.validateSchema = function() { // Any change leads to our data being mutated. RestWrite.prototype.runBeforeTrigger = function() { // Avoid doing any setup for triggers if there is no 'beforeSave' trigger for this class. - if (!triggers.triggerExists(this.className, triggers.Types.beforeSave)) { + if (!triggers.triggerExists(this.className, triggers.Types.beforeSave, this.config.applicationId)) { return Promise.resolve(); } diff --git a/src/cache.js b/src/cache.js index eeb28031..a737a91d 100644 --- a/src/cache.js +++ b/src/cache.js @@ -1,45 +1,45 @@ -var apps = {}; -var stats = {}; -var isLoaded = false; -var users = {}; +export var apps = {}; +export var stats = {}; +export var isLoaded = false; +export var users = {}; -function getApp(app, callback) { +export function getApp(app, callback) { if (apps[app]) return callback(true, apps[app]); return callback(false); } -function updateStat(key, value) { +export function updateStat(key, value) { stats[key] = value; } -function getUser(sessionToken) { +export function getUser(sessionToken) { if (users[sessionToken]) return users[sessionToken]; return undefined; } -function setUser(sessionToken, userObject) { +export function setUser(sessionToken, userObject) { users[sessionToken] = userObject; } -function clearUser(sessionToken) { +export function clearUser(sessionToken) { delete users[sessionToken]; } //So far used only in tests -function clearCache() { +export function clearCache() { apps = {}; stats = {}; users = {}; } -module.exports = { - apps: apps, - stats: stats, - isLoaded: isLoaded, - getApp: getApp, - updateStat: updateStat, - clearUser: clearUser, - getUser: getUser, - setUser: setUser, - clearCache: clearCache, +export default { + apps, + stats, + isLoaded, + getApp, + updateStat, + clearUser, + getUser, + setUser, + clearCache, }; diff --git a/src/index.js b/src/index.js index 6b48018e..dd2cbcce 100644 --- a/src/index.js +++ b/src/index.js @@ -4,13 +4,13 @@ import 'babel-polyfill'; var batch = require('./batch'), bodyParser = require('body-parser'), - cache = require('./cache'), DatabaseAdapter = require('./DatabaseAdapter'), express = require('express'), middlewares = require('./middlewares'), multer = require('multer'), Parse = require('parse/node').Parse; +import cache from './cache'; import PromiseRouter from './PromiseRouter'; import { GridStoreAdapter } from './Adapters/Files/GridStoreAdapter'; import { S3Adapter } from './Adapters/Files/S3Adapter'; diff --git a/src/middlewares.js b/src/middlewares.js index 6efaabd9..e6fcc9a9 100644 --- a/src/middlewares.js +++ b/src/middlewares.js @@ -1,7 +1,8 @@ +import cache from './cache'; + var Parse = require('parse/node').Parse; var auth = require('./Auth'); -var cache = require('./cache'); var Config = require('./Config'); // Checks that the request is authorized for this app and checks user diff --git a/src/rest.js b/src/rest.js index 35fce415..5a104c72 100644 --- a/src/rest.js +++ b/src/rest.js @@ -8,8 +8,8 @@ // things. var Parse = require('parse/node').Parse; +import cache from './cache'; -var cache = require('./cache'); var RestQuery = require('./RestQuery'); var RestWrite = require('./RestWrite'); var triggers = require('./triggers'); diff --git a/src/testing-routes.js b/src/testing-routes.js index 28b02cf4..3823946f 100644 --- a/src/testing-routes.js +++ b/src/testing-routes.js @@ -1,7 +1,7 @@ // testing-routes.js +import cache from './cache'; var express = require('express'), - cache = require('./cache'), middlewares = require('./middlewares'), cryptoUtils = require('./cryptoUtils'); diff --git a/src/triggers.js b/src/triggers.js index 486b3f78..831f3452 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -1,49 +1,56 @@ // triggers.js -var Parse = require('parse/node').Parse, - cache = require('./cache'); +import Parse from 'parse/node'; +import cache from './cache'; -var Types = { +export const Types = { beforeSave: 'beforeSave', afterSave: 'afterSave', beforeDelete: 'beforeDelete', afterDelete: 'afterDelete' }; -var BaseStore = function() { - this.Functions = {} - this.Validators = {} - this.Triggers = Object.keys(Types).reduce(function(base, key){ +const baseStore = function() { + + let Validators = {}; + let Functions = {}; + let Triggers = Object.keys(Types).reduce(function(base, key){ base[key] = {}; return base; }, {}); + + return Object.freeze({ + Functions, + Validators, + Triggers + }); } -var _triggerStore = {}; +const _triggerStore = {}; -function addFunction(functionName, handler, validationHandler, applicationId) { +export function addFunction(functionName, handler, validationHandler, applicationId) { applicationId = applicationId || Parse.applicationId; - _triggerStore[applicationId] = _triggerStore[applicationId] || new BaseStore(); + _triggerStore[applicationId] = _triggerStore[applicationId] || baseStore(); _triggerStore[applicationId].Functions[functionName] = handler; _triggerStore[applicationId].Validators[functionName] = validationHandler; } -function addTrigger(type, className, handler, applicationId) { +export function addTrigger(type, className, handler, applicationId) { applicationId = applicationId || Parse.applicationId; - _triggerStore[applicationId] = _triggerStore[applicationId] || new BaseStore(); + _triggerStore[applicationId] = _triggerStore[applicationId] || baseStore(); _triggerStore[applicationId].Triggers[type][className] = handler; } -function removeFunction(functionName, applicationId) { +export function removeFunction(functionName, applicationId) { applicationId = applicationId || Parse.applicationId; delete _triggerStore[applicationId].Functions[functionName] } -function removeTrigger(type, className, applicationId) { +export function removeTrigger(type, className, applicationId) { applicationId = applicationId || Parse.applicationId; delete _triggerStore[applicationId].Triggers[type][className] } -function _unregister(a,b,c,d) { +export function _unregister(a,b,c,d) { if (d) { removeTrigger(c,d,a); delete _triggerStore[a][b][c][d]; @@ -53,7 +60,7 @@ function _unregister(a,b,c,d) { } -var getTrigger = function(className, triggerType, applicationId) { +export function getTrigger(className, triggerType, applicationId) { if (!applicationId) { throw "Missing ApplicationID"; } @@ -67,11 +74,11 @@ var getTrigger = function(className, triggerType, applicationId) { return undefined; }; -function triggerExists(className: string, type: string): boolean { - return (getTrigger(className, type) != undefined); +export function triggerExists(className: string, type: string, applicationId: string): boolean { + return (getTrigger(className, type, applicationId) != undefined); } -var getFunction = function(functionName, applicationId) { +export function getFunction(functionName, applicationId) { var manager = _triggerStore[applicationId]; if (manager && manager.Functions) { return manager.Functions[functionName]; @@ -79,7 +86,7 @@ var getFunction = function(functionName, applicationId) { return undefined; } -var getValidator = function(functionName, applicationId) { +export function getValidator(functionName, applicationId) { var manager = _triggerStore[applicationId]; if (manager && manager.Validators) { return manager.Validators[functionName]; @@ -87,7 +94,7 @@ var getValidator = function(functionName, applicationId) { return undefined; } -var getRequestObject = function(triggerType, auth, parseObject, originalParseObject) { +export function getRequestObject(triggerType, auth, parseObject, originalParseObject) { var request = { triggerName: triggerType, object: parseObject, @@ -116,7 +123,7 @@ var getRequestObject = function(triggerType, auth, parseObject, originalParseObj // The API will call this with REST API formatted objects, this will // transform them to Parse.Object instances expected by Cloud Code. // Any changes made to the object in a beforeSave will be included. -var getResponseObject = function(request, resolve, reject) { +export function getResponseObject(request, resolve, reject) { return { success: function(response) { // Use the JSON response @@ -141,7 +148,7 @@ var getResponseObject = function(request, resolve, reject) { // Resolves to an object, empty or containing an object key. A beforeSave // trigger will set the object key to the rest format object to save. // originalParseObject is optional, we only need that for befote/afterSave functions -var maybeRunTrigger = function(triggerType, auth, parseObject, originalParseObject, applicationId) { +export function maybeRunTrigger(triggerType, auth, parseObject, originalParseObject, applicationId) { if (!parseObject) { return Promise.resolve({}); } @@ -160,38 +167,10 @@ var maybeRunTrigger = function(triggerType, auth, parseObject, originalParseObje // Converts a REST-format object to a Parse.Object // data is either className or an object -function inflate(data, restObject) { +export function inflate(data, restObject) { var copy = typeof data == 'object' ? data : {className: data}; for (var key in restObject) { copy[key] = restObject[key]; } return Parse.Object.fromJSON(copy); } - -<<<<<<< 5fae41183ed476976ff29a4c247aa78b00b83a9e -module.exports = { - getTrigger: getTrigger, - getRequestObject: getRequestObject, - inflate: inflate, - maybeRunTrigger: maybeRunTrigger, - triggerExists: triggerExists, - Types: Types -}; -======= -var TriggerManager = {}; - -TriggerManager.getTrigger = getTrigger; -TriggerManager.getRequestObject = getRequestObject; -TriggerManager.inflate = inflate; -TriggerManager.maybeRunTrigger = maybeRunTrigger; -TriggerManager.Types = Types; -TriggerManager.addFunction = addFunction; -TriggerManager.getFunction = getFunction; -TriggerManager.removeTrigger = removeTrigger; -TriggerManager.removeFunction = removeFunction; -TriggerManager.getValidator = getValidator; -TriggerManager.addTrigger = addTrigger; -TriggerManager._unregister = _unregister; - -module.exports = TriggerManager; ->>>>>>> Adds Hooks API