cache as ES6

This commit is contained in:
Florent Vilmart
2016-02-24 15:55:11 -05:00
parent c0714b9b9d
commit c4abd1e267
11 changed files with 64 additions and 82 deletions

View File

@@ -2,7 +2,7 @@
jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000;
var cache = require('../src/cache'); var cache = require('../src/cache').default;
var DatabaseAdapter = require('../src/DatabaseAdapter'); var DatabaseAdapter = require('../src/DatabaseAdapter');
var express = require('express'); var express = require('express');
var facebook = require('../src/oauth/facebook'); var facebook = require('../src/oauth/facebook');

View File

@@ -2,7 +2,7 @@ var deepcopy = require('deepcopy');
var Parse = require('parse/node').Parse; var Parse = require('parse/node').Parse;
var RestQuery = require('./RestQuery'); var RestQuery = require('./RestQuery');
var cache = require('./cache'); import cache from './cache';
// An Auth object tells you who is requesting something and whether // An Auth object tells you who is requesting something and whether
// the master key was used. // the master key was used.

View File

@@ -2,10 +2,12 @@
// configured. // configured.
// mount is the URL for the root of the API; includes http, domain, etc. // mount is the URL for the root of the API; includes http, domain, etc.
import cache from './cache';
export class Config { export class Config {
constructor(applicationId, mount) { constructor(applicationId, mount) {
var cache = require('./cache');
var DatabaseAdapter = require('./DatabaseAdapter'); var DatabaseAdapter = require('./DatabaseAdapter');
var cacheInfo = cache.apps[applicationId]; var cacheInfo = cache.apps[applicationId];

View File

@@ -13,11 +13,11 @@
// * This list is incomplete and the database process is not fully modularized. // * This list is incomplete and the database process is not fully modularized.
// //
// Default is ExportAdapter, which uses mongo. // Default is ExportAdapter, which uses mongo.
import cache from './cache';
var ExportAdapter = require('./ExportAdapter'); var ExportAdapter = require('./ExportAdapter');
var adapter = ExportAdapter; var adapter = ExportAdapter;
var cache = require('./cache');
var dbConnections = {}; var dbConnections = {};
var databaseURI = 'mongodb://localhost:27017/parse'; var databaseURI = 'mongodb://localhost:27017/parse';
var appDatabaseURIs = {}; var appDatabaseURIs = {};

View File

@@ -2,10 +2,10 @@
// that writes to the database. // that writes to the database.
// This could be either a "create" or an "update". // This could be either a "create" or an "update".
import cache from './cache';
var deepcopy = require('deepcopy'); var deepcopy = require('deepcopy');
var Auth = require('./Auth'); var Auth = require('./Auth');
var cache = require('./cache');
var Config = require('./Config'); var Config = require('./Config');
var cryptoUtils = require('./cryptoUtils'); var cryptoUtils = require('./cryptoUtils');
var passwordCrypto = require('./password'); var passwordCrypto = require('./password');
@@ -114,7 +114,7 @@ RestWrite.prototype.validateSchema = function() {
// Any change leads to our data being mutated. // Any change leads to our data being mutated.
RestWrite.prototype.runBeforeTrigger = function() { RestWrite.prototype.runBeforeTrigger = function() {
// Avoid doing any setup for triggers if there is no 'beforeSave' trigger for this class. // 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(); return Promise.resolve();
} }

View File

@@ -1,45 +1,45 @@
var apps = {}; export var apps = {};
var stats = {}; export var stats = {};
var isLoaded = false; export var isLoaded = false;
var users = {}; export var users = {};
function getApp(app, callback) { export function getApp(app, callback) {
if (apps[app]) return callback(true, apps[app]); if (apps[app]) return callback(true, apps[app]);
return callback(false); return callback(false);
} }
function updateStat(key, value) { export function updateStat(key, value) {
stats[key] = value; stats[key] = value;
} }
function getUser(sessionToken) { export function getUser(sessionToken) {
if (users[sessionToken]) return users[sessionToken]; if (users[sessionToken]) return users[sessionToken];
return undefined; return undefined;
} }
function setUser(sessionToken, userObject) { export function setUser(sessionToken, userObject) {
users[sessionToken] = userObject; users[sessionToken] = userObject;
} }
function clearUser(sessionToken) { export function clearUser(sessionToken) {
delete users[sessionToken]; delete users[sessionToken];
} }
//So far used only in tests //So far used only in tests
function clearCache() { export function clearCache() {
apps = {}; apps = {};
stats = {}; stats = {};
users = {}; users = {};
} }
module.exports = { export default {
apps: apps, apps,
stats: stats, stats,
isLoaded: isLoaded, isLoaded,
getApp: getApp, getApp,
updateStat: updateStat, updateStat,
clearUser: clearUser, clearUser,
getUser: getUser, getUser,
setUser: setUser, setUser,
clearCache: clearCache, clearCache,
}; };

View File

@@ -4,13 +4,13 @@ import 'babel-polyfill';
var batch = require('./batch'), var batch = require('./batch'),
bodyParser = require('body-parser'), bodyParser = require('body-parser'),
cache = require('./cache'),
DatabaseAdapter = require('./DatabaseAdapter'), DatabaseAdapter = require('./DatabaseAdapter'),
express = require('express'), express = require('express'),
middlewares = require('./middlewares'), middlewares = require('./middlewares'),
multer = require('multer'), multer = require('multer'),
Parse = require('parse/node').Parse; Parse = require('parse/node').Parse;
import cache from './cache';
import PromiseRouter from './PromiseRouter'; import PromiseRouter from './PromiseRouter';
import { GridStoreAdapter } from './Adapters/Files/GridStoreAdapter'; import { GridStoreAdapter } from './Adapters/Files/GridStoreAdapter';
import { S3Adapter } from './Adapters/Files/S3Adapter'; import { S3Adapter } from './Adapters/Files/S3Adapter';

View File

@@ -1,7 +1,8 @@
import cache from './cache';
var Parse = require('parse/node').Parse; var Parse = require('parse/node').Parse;
var auth = require('./Auth'); var auth = require('./Auth');
var cache = require('./cache');
var Config = require('./Config'); var Config = require('./Config');
// Checks that the request is authorized for this app and checks user // Checks that the request is authorized for this app and checks user

View File

@@ -8,8 +8,8 @@
// things. // things.
var Parse = require('parse/node').Parse; var Parse = require('parse/node').Parse;
import cache from './cache';
var cache = require('./cache');
var RestQuery = require('./RestQuery'); var RestQuery = require('./RestQuery');
var RestWrite = require('./RestWrite'); var RestWrite = require('./RestWrite');
var triggers = require('./triggers'); var triggers = require('./triggers');

View File

@@ -1,7 +1,7 @@
// testing-routes.js // testing-routes.js
import cache from './cache';
var express = require('express'), var express = require('express'),
cache = require('./cache'),
middlewares = require('./middlewares'), middlewares = require('./middlewares'),
cryptoUtils = require('./cryptoUtils'); cryptoUtils = require('./cryptoUtils');

View File

@@ -1,49 +1,56 @@
// triggers.js // triggers.js
var Parse = require('parse/node').Parse, import Parse from 'parse/node';
cache = require('./cache'); import cache from './cache';
var Types = { export const Types = {
beforeSave: 'beforeSave', beforeSave: 'beforeSave',
afterSave: 'afterSave', afterSave: 'afterSave',
beforeDelete: 'beforeDelete', beforeDelete: 'beforeDelete',
afterDelete: 'afterDelete' afterDelete: 'afterDelete'
}; };
var BaseStore = function() { const baseStore = function() {
this.Functions = {}
this.Validators = {} let Validators = {};
this.Triggers = Object.keys(Types).reduce(function(base, key){ let Functions = {};
let Triggers = Object.keys(Types).reduce(function(base, key){
base[key] = {}; base[key] = {};
return base; 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; applicationId = applicationId || Parse.applicationId;
_triggerStore[applicationId] = _triggerStore[applicationId] || new BaseStore(); _triggerStore[applicationId] = _triggerStore[applicationId] || baseStore();
_triggerStore[applicationId].Functions[functionName] = handler; _triggerStore[applicationId].Functions[functionName] = handler;
_triggerStore[applicationId].Validators[functionName] = validationHandler; _triggerStore[applicationId].Validators[functionName] = validationHandler;
} }
function addTrigger(type, className, handler, applicationId) { export function addTrigger(type, className, handler, applicationId) {
applicationId = applicationId || Parse.applicationId; applicationId = applicationId || Parse.applicationId;
_triggerStore[applicationId] = _triggerStore[applicationId] || new BaseStore(); _triggerStore[applicationId] = _triggerStore[applicationId] || baseStore();
_triggerStore[applicationId].Triggers[type][className] = handler; _triggerStore[applicationId].Triggers[type][className] = handler;
} }
function removeFunction(functionName, applicationId) { export function removeFunction(functionName, applicationId) {
applicationId = applicationId || Parse.applicationId; applicationId = applicationId || Parse.applicationId;
delete _triggerStore[applicationId].Functions[functionName] delete _triggerStore[applicationId].Functions[functionName]
} }
function removeTrigger(type, className, applicationId) { export function removeTrigger(type, className, applicationId) {
applicationId = applicationId || Parse.applicationId; applicationId = applicationId || Parse.applicationId;
delete _triggerStore[applicationId].Triggers[type][className] delete _triggerStore[applicationId].Triggers[type][className]
} }
function _unregister(a,b,c,d) { export function _unregister(a,b,c,d) {
if (d) { if (d) {
removeTrigger(c,d,a); removeTrigger(c,d,a);
delete _triggerStore[a][b][c][d]; 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) { if (!applicationId) {
throw "Missing ApplicationID"; throw "Missing ApplicationID";
} }
@@ -67,11 +74,11 @@ var getTrigger = function(className, triggerType, applicationId) {
return undefined; return undefined;
}; };
function triggerExists(className: string, type: string): boolean { export function triggerExists(className: string, type: string, applicationId: string): boolean {
return (getTrigger(className, type) != undefined); return (getTrigger(className, type, applicationId) != undefined);
} }
var getFunction = function(functionName, applicationId) { export function getFunction(functionName, applicationId) {
var manager = _triggerStore[applicationId]; var manager = _triggerStore[applicationId];
if (manager && manager.Functions) { if (manager && manager.Functions) {
return manager.Functions[functionName]; return manager.Functions[functionName];
@@ -79,7 +86,7 @@ var getFunction = function(functionName, applicationId) {
return undefined; return undefined;
} }
var getValidator = function(functionName, applicationId) { export function getValidator(functionName, applicationId) {
var manager = _triggerStore[applicationId]; var manager = _triggerStore[applicationId];
if (manager && manager.Validators) { if (manager && manager.Validators) {
return manager.Validators[functionName]; return manager.Validators[functionName];
@@ -87,7 +94,7 @@ var getValidator = function(functionName, applicationId) {
return undefined; return undefined;
} }
var getRequestObject = function(triggerType, auth, parseObject, originalParseObject) { export function getRequestObject(triggerType, auth, parseObject, originalParseObject) {
var request = { var request = {
triggerName: triggerType, triggerName: triggerType,
object: parseObject, 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 // The API will call this with REST API formatted objects, this will
// transform them to Parse.Object instances expected by Cloud Code. // transform them to Parse.Object instances expected by Cloud Code.
// Any changes made to the object in a beforeSave will be included. // 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 { return {
success: function(response) { success: function(response) {
// Use the JSON 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 // 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. // trigger will set the object key to the rest format object to save.
// originalParseObject is optional, we only need that for befote/afterSave functions // 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) { if (!parseObject) {
return Promise.resolve({}); return Promise.resolve({});
} }
@@ -160,38 +167,10 @@ var maybeRunTrigger = function(triggerType, auth, parseObject, originalParseObje
// Converts a REST-format object to a Parse.Object // Converts a REST-format object to a Parse.Object
// data is either className or an 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}; var copy = typeof data == 'object' ? data : {className: data};
for (var key in restObject) { for (var key in restObject) {
copy[key] = restObject[key]; copy[key] = restObject[key];
} }
return Parse.Object.fromJSON(copy); 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