Skip to content

Commit 0811c21

Browse files
author
Alexander Mays
committed
Updated to ES6
Signed-off-by: Alexander Mays <[email protected]>
1 parent 9c4e7ed commit 0811c21

20 files changed

+372
-416
lines changed

spec/ParseAPI.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// A bunch of different tests are in here - it isn't very thematic.
22
// It would probably be better to refactor them into different files.
33

4-
var DatabaseProvider = require('../src/classes/DatabaseProvider');
4+
var DatabaseProvider = require('../src/classes/DatabaseProvider').default;
55
var request = require('request');
66

77
describe('miscellaneous', function() {

spec/ParseInstallation.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
var auth = require('../src/Auth');
55
var Config = require('../src/Config');
6-
var DatabaseProvider = require('../src/classes/DatabaseProvider');
6+
var DatabaseProvider = require('../src/classes/DatabaseProvider').default;
77
var Parse = require('parse/node').Parse;
88
var rest = require('../src/rest');
99

spec/RestCreate.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// These tests check the "create" functionality of the REST API.
22
var auth = require('../src/Auth');
33
var Config = require('../src/Config');
4-
var DatabaseProvider = require('../src/classes/DatabaseProvider');
4+
var DatabaseProvider = require('../src/classes/DatabaseProvider').default;
55
var Parse = require('parse/node').Parse;
66
var rest = require('../src/rest');
77
var request = require('request');

spec/classes/MemoryCache.spec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
/* global describe, it, before, beforeEach, afterEach */
22
'use strict';
33

4-
var cache = new (require('../../src/classes/MemoryCache'));
4+
var MemoryCache = require('../../src/classes/MemoryCache').default;
5+
6+
var cache = new MemoryCache();
57
var _ = require('lodash');
68

79
describe('MemoryCache', function() {

spec/helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000;
44

5-
var DatabaseProvider = require('../src/classes/DatabaseProvider');
5+
var DatabaseProvider = require('../src/classes/DatabaseProvider').default;
66
var express = require('express');
77
var facebook = require('../src/facebook');
88
var ParseServer = require('../src/index').ParseServer;

src/Auth.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var deepcopy = require('deepcopy');
22
var Parse = require('parse/node').Parse;
33
var RestQuery = require('./RestQuery');
4-
var CacheProvider = require('./classes/CacheProvider');
4+
var CacheProvider = require('./classes/CacheProvider').default;
55

66
// An Auth object tells you who is requesting something and whether
77
// the master key was used.

src/Config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
// A Config object provides information about how a specific app is
22
// configured.
33
// mount is the URL for the root of the API; includes http, domain, etc.
4+
45
function Config(applicationId, mount) {
5-
var cache = require('./classes/CacheProvider').getAdapter();
6-
var DatabaseProvider = require('./classes/DatabaseProvider');
6+
var DatabaseProvider = require('./classes/DatabaseProvider').default;
7+
var CacheProvider = require('./classes/CacheProvider').default;
8+
var cache = CacheProvider.getAdapter();
79

810
var cacheInfo = cache.get(applicationId);
911
this.valid = !!cacheInfo;

src/classes/BaseProvider.js

Lines changed: 47 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,66 @@
1-
var ServiceProviderInterface = require('../interfaces/ServiceProvider');
2-
var util = require('util');
3-
1+
import { default as ServiceProviderInterface } from '../interfaces/ServiceProvider';
42
/**
53
* A base provider class that allows for an abstraction of adapter implementations
64
*
75
* @class
86
* @implements {ServiceProvider}
97
* @param {Object} adapter - An adapter
108
*/
11-
function BaseProvider(adapter) {
9+
export class BaseProvider {
10+
constructor(adapter){
1211
if (adapter) {
1312
this.adapter = adapter;
1413
}
15-
};
14+
}
1615

17-
util.inherits(BaseProvider, ServiceProviderInterface);
16+
/**
17+
* Get the adapter
18+
*
19+
* @returns {Object} An adapter instance
20+
*/
21+
getAdapter() {
22+
return this.adapter;
23+
}
1824

19-
/**
20-
* Get the adapter
21-
*
22-
* @returns {Object} An adapter instance
23-
*/
24-
function getAdapter() {
25-
return this.adapter;
26-
}
25+
/**
26+
* Set the adapter
27+
*
28+
* @param {Object} adapter - An adapter
29+
*/
30+
setAdapter(adapter) {
31+
this.adapter = adapter;
32+
}
2733

28-
/**
29-
* Set the adapter
30-
*
31-
* @param {Object} adapter - An adapter
32-
*/
33-
function setAdapter(adapter) {
34-
this.adapter = adapter;
35-
}
34+
/**
35+
* Resolves the adapter
36+
*
37+
* @param {Object|String|Function} adapter - [1] An object implementing the adapter interface, or [2] a function that returns [1], or [3] A string of either the name of an included npm module or a path to a local module that returns [1] or [2].
38+
* @param {Object} options - An object passed to the adapter on instantiation (if adapter is not already instantiated)
39+
* @returns {Object} An object implementing the adapter interface
40+
*/
41+
resolveAdapter(adapter, options) {
42+
// Support passing in adapter paths
43+
if (typeof adapter === 'string') {
44+
adapter = require(adapter);
3645

37-
/**
38-
* Resolves the adapter
39-
*
40-
* @param {Object|String|Function} adapter - [1] An object implementing the adapter interface, or [2] a function that returns [1], or [3] A string of either the name of an included npm module or a path to a local module that returns [1] or [2].
41-
* @param {Object} options - An object passed to the adapter on instantiation (if adapter is not already instantiated)
42-
* @returns {Object} An object implementing the adapter interface
43-
*/
44-
function resolveAdapter(adapter, options) {
45-
// Support passing in adapter paths
46-
if (typeof adapter === 'string') {
47-
adapter = require(adapter);
48-
}
46+
// TODO: Figure out a better way to deal with this
47+
if (adapter && adapter.default)
48+
adapter = adapter.default;
49+
}
50+
51+
// Instantiate the adapter if the class got passed instead of an instance
52+
if (typeof adapter === 'function') {
53+
adapter = new adapter(options);
54+
}
4955

50-
// Instantiate the adapter if the class got passed instead of an instance
51-
if (typeof adapter === 'function') {
52-
adapter = new adapter(options);
53-
}
56+
return adapter;
57+
}
5458

55-
return adapter;
59+
setup (config = {}) {
60+
const adapter = this.resolveAdapter(config.adapter || this.DEFAULT_ADAPTER, config.options);
61+
this.setAdapter(adapter);
62+
}
5663
}
5764

58-
function setup (config) {
59-
config = config || {};
60-
config.adapter = config.adapter || DefaultFilesAdapter;
61-
62-
var adapter = this.resolveAdapter(config.adapter, config.options);
63-
this.setAdapter(adapter);
64-
}
65-
66-
67-
BaseProvider.prototype.getAdapter = getAdapter;
68-
BaseProvider.prototype.setAdapter = setAdapter;
69-
BaseProvider.prototype.resolveAdapter = resolveAdapter;
70-
BaseProvider.prototype.setup = setup;
7165

72-
exports = module.exports = BaseProvider;
66+
export default BaseProvider;

src/classes/CacheProvider.js

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
var util = require('util');
2-
3-
var BaseProvider = require('./BaseProvider');
4-
var DefaultCacheAdapter = require('./MemoryCache');
1+
import { default as BaseProvider } from './BaseProvider';
52

63
/**
74
* Abstract class the provides a reference to an adapter instance (a caching implementation)
@@ -10,29 +7,11 @@ var DefaultCacheAdapter = require('./MemoryCache');
107
* @extends {BaseProvider}
118
* @param {Object} adapter - A cache adapter
129
*/
13-
function CacheProvider(adapter) {
14-
CacheProvider.super_.call(this)
15-
};
16-
17-
/**
18-
* Setup the cache provider given a configuration object
19-
*
20-
* @method
21-
* @param {Object} config - A configuration object
22-
* @param {Any} config.adapter - A string, object, instance, or function that resolves to an adapter implementation
23-
* @param {Object} config.options - An object passed to the adapter on instantiation (if adapter is not already instantiated)
24-
*/
25-
function setup (config) {
26-
config = config || {};
27-
config.adapter = config.adapter || DefaultCacheAdapter;
28-
29-
var adapter = this.resolveAdapter(config.adapter, config.options);
30-
this.setAdapter(adapter);
10+
export class CacheProvider extends BaseProvider {
11+
constructor() {
12+
super(...arguments);
13+
this.DEFAULT_ADAPTER = './MemoryCache';
14+
}
3115
}
3216

33-
util.inherits(CacheProvider, BaseProvider);
34-
35-
CacheProvider.prototype.setup = setup;
36-
CacheProvider.prototype.CacheProvider = CacheProvider;
37-
38-
exports = module.exports = new CacheProvider();
17+
export default new CacheProvider();

src/classes/DatabaseProvider.js

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,65 @@
1-
var BaseProvider = require('./BaseProvider');
2-
var CacheProvider = require('./CacheProvider');
3-
var util = require('util');
1+
import { default as BaseProvider } from './BaseProvider';
2+
import { default as CacheProvider } from './CacheProvider';
43

5-
var DefaultDatabaseAdapter = require('../ExportAdapter');
6-
var defaultURI = "mongodb://localhost:27017/parse";
4+
const DEFAULT_URI = "mongodb://localhost:27017/parse";
75

8-
function DatabaseProvider(adapter) {
9-
DatabaseProvider.super_.call(this)
10-
};
6+
export class DatabaseProvider extends BaseProvider {
7+
constructor() {
8+
super(...arguments);
9+
this.DEFAULT_ADAPTER = '../ExportAdapter';
10+
}
1111

12-
function setup(config) {
13-
config = config || {};
14-
config.adapter = config.adapter || DefaultDatabaseAdapter;
12+
setup(config = {}) {
1513
this.dbConnections = config.dbConnections || this.dbConnections || {};
16-
this.databaseURI = config.defaultURI || defaultURI;
14+
this.databaseURI = config.defaultURI || DEFAULT_URI;
1715
this.appDatabaseURIs = config.appDatabaseURIs || {};
1816

19-
var adapter = this.resolveAdapter(config.adapter, config.options);
20-
this.setAdapter(adapter);
21-
}
17+
super.setup(...arguments);
18+
}
2219

23-
// TODO: Reimplement this whenever @Flovilmart finishes running CloudCode in subprocesses
24-
function registerAppDatabaseURI(appId, uri) {
25-
this.appDatabaseURIs[appId] = uri;
26-
}
20+
// TODO: Reimplement this whenever @Flovilmart finishes running CloudCode in subprocesses
21+
registerAppDatabaseURI(appId, uri) {
22+
this.appDatabaseURIs[appId] = uri;
23+
}
2724

28-
function getDatabaseConnections() {
25+
getDatabaseConnections() {
2926
return this.dbConnections;
30-
}
31-
32-
function getDatabaseConnection(appId) {
33-
if (this.dbConnections[appId]) {
34-
return this.dbConnections[appId];
3527
}
3628

37-
var cache = CacheProvider.getAdapter();
38-
var app = cache.get(appId);
29+
getDatabaseConnection(appId) {
30+
if (this.dbConnections[appId]) {
31+
return this.dbConnections[appId];
32+
}
3933

40-
if (!app) {
41-
throw new Error('Application ID provided is not a registered application.');
42-
}
34+
const cache = CacheProvider.getAdapter();
35+
const app = cache.get(appId);
4336

44-
var adapterFn = this.getAdapter();
45-
var dbURI = this.appDatabaseURIs[appId] || this.databaseURI;
46-
var options = { collectionPrefix: app.collectionPrefix };
37+
if (!app) {
38+
throw new Error('Application ID provided is not a registered application.');
39+
}
4740

48-
this.dbConnections[appId] = new adapterFn(dbURI, options);
49-
this.dbConnections[appId].connect();
50-
return this.dbConnections[appId];
51-
}
41+
const adapterClass = this.getAdapter();
42+
const dbURI = this.appDatabaseURIs[appId] || this.databaseURI;
43+
const options = { collectionPrefix: app.collectionPrefix };
5244

53-
// Overriding resolveAdapter to return the class, rather than an instance
54-
function resolveAdapter(adapter, options) {
55-
// Support passing in adapter paths
56-
if (typeof adapter === 'string') {
57-
adapter = require(adapter);
58-
}
45+
this.dbConnections[appId] = new adapterClass(dbURI, options);
46+
this.dbConnections[appId].connect();
47+
return this.dbConnections[appId];
48+
}
5949

60-
return adapter;
61-
}
50+
// Overriding resolveAdapter to prevent instantiation
51+
resolveAdapter(adapter, options) {
52+
// Support passing in adapter paths
53+
if (typeof adapter === 'string') {
54+
adapter = require(adapter);
6255

63-
util.inherits(DatabaseProvider, BaseProvider);
56+
// TODO: Figure out a better way to deal with this
57+
if (adapter && adapter.default)
58+
adapter = adapter.default;
59+
}
6460

65-
DatabaseProvider.prototype.setup = setup;
66-
DatabaseProvider.prototype.registerAppDatabaseURI = registerAppDatabaseURI;
67-
DatabaseProvider.prototype.getDatabaseConnections = getDatabaseConnections;
68-
DatabaseProvider.prototype.getDatabaseConnection = getDatabaseConnection;
69-
DatabaseProvider.prototype.resolveAdapter = resolveAdapter;
70-
DatabaseProvider.prototype.DatabaseProvider = DatabaseProvider;
61+
return adapter;
62+
}
63+
}
7164

72-
exports = module.exports = new DatabaseProvider();
65+
export default new DatabaseProvider();

src/classes/FilesProvider.js

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
1-
var BaseProvider = require('./BaseProvider');
2-
var util = require('util');
1+
import { default as BaseProvider } from './BaseProvider';
32

4-
var DefaultFilesAdapter = require('../GridStoreAdapter');
5-
6-
function FilesProvider(adapter) {
7-
FilesProvider.super_.call(this)
8-
};
9-
10-
function setup (config) {
11-
config = config || {};
12-
config.adapter = config.adapter || DefaultFilesAdapter;
13-
14-
var adapter = this.resolveAdapter(config.adapter, config.options);
15-
this.setAdapter(adapter);
3+
export class FilesProvider extends BaseProvider {
4+
constructor() {
5+
super(...arguments);
6+
this.DEFAULT_ADAPTER = '../GridStoreAdapter'
7+
}
168
}
179

18-
util.inherits(FilesProvider, BaseProvider);
19-
20-
FilesProvider.prototype.setup = setup;
21-
FilesProvider.prototype.FilesProvider = FilesProvider;
22-
23-
exports = module.exports = new FilesProvider();
10+
export default new FilesProvider();

0 commit comments

Comments
 (0)