Socket
Socket
Sign inDemoInstall

parse

Package Overview
Dependencies
Maintainers
6
Versions
192
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parse - npm Package Compare versions

Comparing version 1.9.0 to 1.9.1

186

lib/browser/CoreManager.js

@@ -16,7 +16,7 @@ /**

// Defaults
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.version.electron,
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.versions.electron,
REQUEST_ATTEMPT_LIMIT: 5,
SERVER_URL: 'https://api.parse.com/1',
LIVEQUERY_SERVER_URL: null,
VERSION: 'js' + '1.9.0',
VERSION: 'js' + '1.9.1',
APPLICATION_ID: null,

@@ -30,2 +30,10 @@ JAVASCRIPT_KEY: null,

function requireMethods(name, methods, controller) {
methods.forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error(name + ' must implement ' + func + '()');
}
});
}
module.exports = {

@@ -46,5 +54,3 @@ get: function get(key) {

setAnalyticsController: function setAnalyticsController(controller) {
if (typeof controller.track !== 'function') {
throw new Error('AnalyticsController must implement track()');
}
requireMethods('AnalyticsController', ['track'], controller);
config['AnalyticsController'] = controller;

@@ -58,5 +64,3 @@ },

setCloudController: function setCloudController(controller) {
if (typeof controller.run !== 'function') {
throw new Error('CloudController must implement run()');
}
requireMethods('CloudController', ['run'], controller);
config['CloudController'] = controller;

@@ -70,8 +74,3 @@ },

setConfigController: function setConfigController(controller) {
if (typeof controller.current !== 'function') {
throw new Error('ConfigController must implement current()');
}
if (typeof controller.get !== 'function') {
throw new Error('ConfigController must implement get()');
}
requireMethods('ConfigController', ['current', 'get'], controller);
config['ConfigController'] = controller;

@@ -85,8 +84,3 @@ },

setFileController: function setFileController(controller) {
if (typeof controller.saveFile !== 'function') {
throw new Error('FileController must implement saveFile()');
}
if (typeof controller.saveBase64 !== 'function') {
throw new Error('FileController must implement saveBase64()');
}
requireMethods('FileController', ['saveFile', 'saveBase64'], controller);
config['FileController'] = controller;

@@ -100,5 +94,3 @@ },

setInstallationController: function setInstallationController(controller) {
if (typeof controller.currentInstallationId !== 'function') {
throw new Error('InstallationController must implement currentInstallationId()');
}
requireMethods('InstallationController', ['currentInstallationId'], controller);
config['InstallationController'] = controller;

@@ -112,11 +104,3 @@ },

setObjectController: function setObjectController(controller) {
if (typeof controller.save !== 'function') {
throw new Error('ObjectController must implement save()');
}
if (typeof controller.fetch !== 'function') {
throw new Error('ObjectController must implement fetch()');
}
if (typeof controller.destroy !== 'function') {
throw new Error('ObjectController must implement destroy()');
}
requireMethods('ObjectController', ['save', 'fetch', 'destroy'], controller);
config['ObjectController'] = controller;

@@ -130,50 +114,3 @@ },

setObjectStateController: function setObjectStateController(controller) {
if (typeof controller.getState !== 'function') {
throw new Error('ObjectStateController must implement getState()');
}
if (typeof controller.initializeState !== 'function') {
throw new Error('ObjectStateController must implement initializeState()');
}
if (typeof controller.removeState !== 'function') {
throw new Error('ObjectStateController must implement removeState()');
}
if (typeof controller.getServerData !== 'function') {
throw new Error('ObjectStateController must implement getServerData()');
}
if (typeof controller.setServerData !== 'function') {
throw new Error('ObjectStateController must implement setServerData()');
}
if (typeof controller.getPendingOps !== 'function') {
throw new Error('ObjectStateController must implement getPendingOps()');
}
if (typeof controller.setPendingOp !== 'function') {
throw new Error('ObjectStateController must implement setPendingOp()');
}
if (typeof controller.pushPendingState !== 'function') {
throw new Error('ObjectStateController must implement pushPendingState()');
}
if (typeof controller.popPendingState !== 'function') {
throw new Error('ObjectStateController must implement popPendingState()');
}
if (typeof controller.mergeFirstPendingState !== 'function') {
throw new Error('ObjectStateController must implement mergeFirstPendingState()');
}
if (typeof controller.getObjectCache !== 'function') {
throw new Error('ObjectStateController must implement getObjectCache()');
}
if (typeof controller.estimateAttribute !== 'function') {
throw new Error('ObjectStateController must implement estimateAttribute()');
}
if (typeof controller.estimateAttributes !== 'function') {
throw new Error('ObjectStateController must implement estimateAttributes()');
}
if (typeof controller.commitServerChanges !== 'function') {
throw new Error('ObjectStateController must implement commitServerChanges()');
}
if (typeof controller.enqueueTask !== 'function') {
throw new Error('ObjectStateController must implement enqueueTask()');
}
if (typeof controller.clearAllState !== 'function') {
throw new Error('ObjectStateController must implement clearAllState()');
}
requireMethods('ObjectStateController', ['getState', 'initializeState', 'removeState', 'getServerData', 'setServerData', 'getPendingOps', 'setPendingOp', 'pushPendingState', 'popPendingState', 'mergeFirstPendingState', 'getObjectCache', 'estimateAttribute', 'estimateAttributes', 'commitServerChanges', 'enqueueTask', 'clearAllState'], controller);

@@ -188,5 +125,3 @@ config['ObjectStateController'] = controller;

setPushController: function setPushController(controller) {
if (typeof controller.send !== 'function') {
throw new Error('PushController must implement send()');
}
requireMethods('PushController', ['send'], controller);
config['PushController'] = controller;

@@ -200,5 +135,3 @@ },

setQueryController: function setQueryController(controller) {
if (typeof controller.find !== 'function') {
throw new Error('QueryController must implement find()');
}
requireMethods('QueryController', ['find'], controller);
config['QueryController'] = controller;

@@ -212,8 +145,3 @@ },

setRESTController: function setRESTController(controller) {
if (typeof controller.request !== 'function') {
throw new Error('RESTController must implement request()');
}
if (typeof controller.ajax !== 'function') {
throw new Error('RESTController must implement ajax()');
}
requireMethods('RESTController', ['request', 'ajax'], controller);
config['RESTController'] = controller;

@@ -227,5 +155,3 @@ },

setSessionController: function setSessionController(controller) {
if (typeof controller.getSession !== 'function') {
throw new Error('A SessionController must implement getSession()');
}
requireMethods('SessionController', ['getSession'], controller);
config['SessionController'] = controller;

@@ -240,21 +166,5 @@ },

if (controller.async) {
if (typeof controller.getItemAsync !== 'function') {
throw new Error('An async StorageController must implement getItemAsync()');
}
if (typeof controller.setItemAsync !== 'function') {
throw new Error('An async StorageController must implement setItemAsync()');
}
if (typeof controller.removeItemAsync !== 'function') {
throw new Error('An async StorageController must implement removeItemAsync()');
}
requireMethods('An async StorageController', ['getItemAsync', 'setItemAsync', 'removeItemAsync'], controller);
} else {
if (typeof controller.getItem !== 'function') {
throw new Error('A synchronous StorageController must implement getItem()');
}
if (typeof controller.setItem !== 'function') {
throw new Error('A synchronous StorageController must implement setItem()');
}
if (typeof controller.removeItem !== 'function') {
throw new Error('A synchonous StorageController must implement removeItem()');
}
requireMethods('A synchronous StorageController', ['getItem', 'setItem', 'removeItem'], controller);
}

@@ -269,32 +179,3 @@ config['StorageController'] = controller;

setUserController: function setUserController(controller) {
if (typeof controller.setCurrentUser !== 'function') {
throw new Error('A UserController must implement setCurrentUser()');
}
if (typeof controller.currentUser !== 'function') {
throw new Error('A UserController must implement currentUser()');
}
if (typeof controller.currentUserAsync !== 'function') {
throw new Error('A UserController must implement currentUserAsync()');
}
if (typeof controller.signUp !== 'function') {
throw new Error('A UserController must implement signUp()');
}
if (typeof controller.logIn !== 'function') {
throw new Error('A UserController must implement logIn()');
}
if (typeof controller.become !== 'function') {
throw new Error('A UserController must implement become()');
}
if (typeof controller.logOut !== 'function') {
throw new Error('A UserController must implement logOut()');
}
if (typeof controller.requestPasswordReset !== 'function') {
throw new Error('A UserController must implement requestPasswordReset()');
}
if (typeof controller.upgradeToRevocableSession !== 'function') {
throw new Error('A UserController must implement upgradeToRevocableSession()');
}
if (typeof controller.linkWith !== 'function') {
throw new Error('A UserController must implement linkWith()');
}
requireMethods('UserController', ['setCurrentUser', 'currentUser', 'currentUserAsync', 'signUp', 'logIn', 'become', 'logOut', 'requestPasswordReset', 'upgradeToRevocableSession', 'linkWith'], controller);
config['UserController'] = controller;

@@ -308,14 +189,3 @@ },

setLiveQueryController: function setLiveQueryController(controller) {
if (typeof controller.subscribe !== 'function') {
throw new Error('LiveQueryController must implement subscribe()');
}
if (typeof controller.unsubscribe !== 'function') {
throw new Error('LiveQueryController must implement unsubscribe()');
}
if (typeof controller.open !== 'function') {
throw new Error('LiveQueryController must implement open()');
}
if (typeof controller.close !== 'function') {
throw new Error('LiveQueryController must implement close()');
}
requireMethods('LiveQueryController', ['subscribe', 'unsubscribe', 'open', 'close'], controller);
config['LiveQueryController'] = controller;

@@ -329,7 +199,3 @@ },

setHooksController: function setHooksController(controller) {
['create', 'get', 'update', 'remove'].forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error('A HooksController must implement ' + func + '()');
}
});
requireMethods('HooksController', ['create', 'get', 'update', 'remove'], controller);
config['HooksController'] = controller;

@@ -336,0 +202,0 @@ },

8

lib/browser/ObjectStateMutations.js

@@ -116,3 +116,5 @@ /**

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
if (id) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
}
} else {

@@ -135,3 +137,5 @@ value = pendingOps[i][attr].applyTo(value);

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
if (id) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
}
} else {

@@ -138,0 +142,0 @@ data[attr] = pendingOps[i][attr].applyTo(data[attr]);

@@ -136,3 +136,7 @@ /**

} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name = userId.getName();
if (!_name) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name;
}

@@ -170,4 +174,11 @@ if (typeof userId !== 'string') {

userId = userId.id;
if (!userId) {
throw new Error('Cannot get access for a ParseUser without an ID');
}
} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name2 = userId.getName();
if (!_name2) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name2;
}

@@ -174,0 +185,0 @@ var permissions = this.permissionsById[userId];

@@ -90,34 +90,37 @@ /**

if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'file',
file: data,
type: specifiedType
};
} else if (data && data.hasOwnProperty('base64')) {
var commaIndex = data.base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(data.base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
if (data !== undefined) {
if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: data.base64.slice(commaIndex + 1),
type: matches[1]
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else {
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'base64',
base64: data.base64,
format: 'file',
file: data,
type: specifiedType
};
} else if (data && typeof data.base64 !== 'undefined') {
var _base64 = data.base64;
var commaIndex = _base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(_base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
this._source = {
format: 'base64',
base64: _base64.slice(commaIndex + 1),
type: matches[1]
};
} else {
this._source = {
format: 'base64',
base64: _base64,
type: specifiedType
};
}
} else {
throw new TypeError('Cannot create a Parse.File with that data.');
}
} else if (typeof data !== 'undefined') {
throw new TypeError('Cannot create a Parse.File with that data.');
}

@@ -254,3 +257,4 @@ }

'X-Parse-Application-ID': _CoreManager2['default'].get('APPLICATION_ID'),
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY')
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY'),
'Content-Type': source.type || (source.file ? source.file.type : null)
};

@@ -257,0 +261,0 @@ var url = _CoreManager2['default'].get('SERVER_URL');

@@ -216,8 +216,8 @@ /**

if (singleInstance) {
var id = this.id;
if (!id) {
id = this._getId();
var _id = this.id;
if (!_id) {
_id = this._getId();
}
return {
id: id,
id: _id,
className: this.className

@@ -694,3 +694,5 @@ };

} else if (k === 'objectId' || k === 'id') {
this.id = changes[k];
if (typeof changes[k] === 'string') {
this.id = changes[k];
}
} else if (k === 'ACL' && typeof changes[k] === 'object' && !(changes[k] instanceof _ParseACL2['default'])) {

@@ -884,3 +886,5 @@ newOps[k] = new _ParseOp.SetOp(new _ParseACL2['default'](changes[k]));

var stateController = _CoreManager2['default'].getObjectStateController();
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
if (stateController) {
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
}
return clone;

@@ -1143,5 +1147,5 @@ }

if (options.hasOwnProperty('useMasterKey')) {
saveOptions.useMasterKey = options.useMasterKey;
saveOptions.useMasterKey = !!options.useMasterKey;
}
if (options.hasOwnProperty('sessionToken')) {
if (options.hasOwnProperty('sessionToken') && typeof options.sessionToken === 'string') {
saveOptions.sessionToken = options.sessionToken;

@@ -1573,2 +1577,4 @@ }

var ParseObjectSubclass = function ParseObjectSubclass(attributes, options) {
this.className = adjustedClassName;
this._objCount = objectCount++;
// Enable legacy initializers

@@ -1579,4 +1585,2 @@ if (typeof this.initialize === 'function') {

this.className = adjustedClassName;
this._objCount = objectCount++;
if (attributes && typeof attributes === 'object') {

@@ -1583,0 +1587,0 @@ if (!this.set(attributes || {}, options)) {

@@ -466,2 +466,5 @@ /**

if (!value) {
if (!object || !key) {
throw new Error('Cannot apply a RelationOp without either a previous value, or an object and a key');
}
var parent = new _ParseObject2['default'](object.className);

@@ -468,0 +471,0 @@ if (object.id && object.id.indexOf('local') === 0) {

@@ -99,5 +99,9 @@ /**

var change = new _ParseOp.RelationOp(objects, []);
this.parent.set(this.key, change);
var parent = this.parent;
if (!parent) {
throw new Error('Cannot add to a Relation without a parent');
}
parent.set(this.key, change);
this.targetClassName = change._targetClassName;
return this.parent;
return parent;
}

@@ -118,2 +122,5 @@

var change = new _ParseOp.RelationOp([], objects);
if (!this.parent) {
throw new Error('Cannot remove from a Relation without a parent');
}
this.parent.set(this.key, change);

@@ -147,4 +154,8 @@ this.targetClassName = change._targetClassName;

var query;
var parent = this.parent;
if (!parent) {
throw new Error('Cannot construct a query for a Relation without a parent');
}
if (!this.targetClassName) {
query = new _ParseQuery2['default'](this.parent.className);
query = new _ParseQuery2['default'](parent.className);
query._extraOptions.redirectClassNameForKey = this.key;

@@ -156,4 +167,4 @@ } else {

__type: 'Pointer',
className: this.parent.className,
objectId: this.parent.id
className: parent.className,
objectId: parent.id
});

@@ -160,0 +171,0 @@ query._addCondition('$relatedTo', 'key', this.key);

@@ -79,3 +79,7 @@ /**

value: function getName() {
return this.get('name');
var name = this.get('name');
if (name == null || typeof name === 'string') {
return name;
}
return '';
}

@@ -82,0 +86,0 @@

@@ -79,3 +79,7 @@ /**

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (typeof token === 'string') {
return token;
}
return '';
}

@@ -82,0 +86,0 @@ }], [{

@@ -131,2 +131,5 @@ /**

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
throw new Error('Invalid type: authData field should be an object');
}
authData[authType] = options.authData;

@@ -184,3 +187,3 @@

var authData = this.get('authData');
if (!provider || typeof authData !== 'object') {
if (!provider || !authData || typeof authData !== 'object') {
return;

@@ -270,2 +273,5 @@ }

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
return false;
}
return !!authData[authType];

@@ -342,3 +348,7 @@ }

value: function getUsername() {
return this.get('username');
var username = this.get('username');
if (username == null || typeof username === 'string') {
return username;
}
return '';
}

@@ -359,3 +369,3 @@

var authData = this.get('authData');
if (authData && authData.hasOwnProperty('anonymous')) {
if (authData && typeof authData === 'object' && authData.hasOwnProperty('anonymous')) {
// We need to set anonymous to null instead of deleting it in order to remove it from Parse.

@@ -388,3 +398,7 @@ authData.anonymous = null;

value: function getEmail() {
return this.get('email');
var email = this.get('email');
if (email == null || typeof email === 'string') {
return email;
}
return '';
}

@@ -415,3 +429,7 @@

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (token == null || typeof token === 'string') {
return token;
}
return '';
}

@@ -418,0 +436,0 @@

@@ -126,3 +126,5 @@ /**

headers = headers || {};
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
if (typeof headers['Content-Type'] !== 'string') {
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
}
if (_CoreManager2['default'].get('IS_NODE')) {

@@ -129,0 +131,0 @@ headers['User-Agent'] = 'Parse/' + _CoreManager2['default'].get('VERSION') + ' (NodeJS ' + process.versions.node + ')';

@@ -35,2 +35,3 @@ /**

exports.clearAllState = clearAllState;
exports.duplicateState = duplicateState;

@@ -148,2 +149,6 @@ var _ObjectStateMutations = require('./ObjectStateMutations');

objectState = {};
}
function duplicateState(source, dest) {
dest.id = source.id;
}

@@ -16,7 +16,7 @@ /**

// Defaults
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.version.electron,
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.versions.electron,
REQUEST_ATTEMPT_LIMIT: 5,
SERVER_URL: 'https://api.parse.com/1',
LIVEQUERY_SERVER_URL: null,
VERSION: 'js' + '1.9.0',
VERSION: 'js' + '1.9.1',
APPLICATION_ID: null,

@@ -30,2 +30,10 @@ JAVASCRIPT_KEY: null,

function requireMethods(name, methods, controller) {
methods.forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error(name + ' must implement ' + func + '()');
}
});
}
module.exports = {

@@ -46,5 +54,3 @@ get: function get(key) {

setAnalyticsController: function setAnalyticsController(controller) {
if (typeof controller.track !== 'function') {
throw new Error('AnalyticsController must implement track()');
}
requireMethods('AnalyticsController', ['track'], controller);
config['AnalyticsController'] = controller;

@@ -58,5 +64,3 @@ },

setCloudController: function setCloudController(controller) {
if (typeof controller.run !== 'function') {
throw new Error('CloudController must implement run()');
}
requireMethods('CloudController', ['run'], controller);
config['CloudController'] = controller;

@@ -70,8 +74,3 @@ },

setConfigController: function setConfigController(controller) {
if (typeof controller.current !== 'function') {
throw new Error('ConfigController must implement current()');
}
if (typeof controller.get !== 'function') {
throw new Error('ConfigController must implement get()');
}
requireMethods('ConfigController', ['current', 'get'], controller);
config['ConfigController'] = controller;

@@ -85,8 +84,3 @@ },

setFileController: function setFileController(controller) {
if (typeof controller.saveFile !== 'function') {
throw new Error('FileController must implement saveFile()');
}
if (typeof controller.saveBase64 !== 'function') {
throw new Error('FileController must implement saveBase64()');
}
requireMethods('FileController', ['saveFile', 'saveBase64'], controller);
config['FileController'] = controller;

@@ -100,5 +94,3 @@ },

setInstallationController: function setInstallationController(controller) {
if (typeof controller.currentInstallationId !== 'function') {
throw new Error('InstallationController must implement currentInstallationId()');
}
requireMethods('InstallationController', ['currentInstallationId'], controller);
config['InstallationController'] = controller;

@@ -112,11 +104,3 @@ },

setObjectController: function setObjectController(controller) {
if (typeof controller.save !== 'function') {
throw new Error('ObjectController must implement save()');
}
if (typeof controller.fetch !== 'function') {
throw new Error('ObjectController must implement fetch()');
}
if (typeof controller.destroy !== 'function') {
throw new Error('ObjectController must implement destroy()');
}
requireMethods('ObjectController', ['save', 'fetch', 'destroy'], controller);
config['ObjectController'] = controller;

@@ -130,50 +114,3 @@ },

setObjectStateController: function setObjectStateController(controller) {
if (typeof controller.getState !== 'function') {
throw new Error('ObjectStateController must implement getState()');
}
if (typeof controller.initializeState !== 'function') {
throw new Error('ObjectStateController must implement initializeState()');
}
if (typeof controller.removeState !== 'function') {
throw new Error('ObjectStateController must implement removeState()');
}
if (typeof controller.getServerData !== 'function') {
throw new Error('ObjectStateController must implement getServerData()');
}
if (typeof controller.setServerData !== 'function') {
throw new Error('ObjectStateController must implement setServerData()');
}
if (typeof controller.getPendingOps !== 'function') {
throw new Error('ObjectStateController must implement getPendingOps()');
}
if (typeof controller.setPendingOp !== 'function') {
throw new Error('ObjectStateController must implement setPendingOp()');
}
if (typeof controller.pushPendingState !== 'function') {
throw new Error('ObjectStateController must implement pushPendingState()');
}
if (typeof controller.popPendingState !== 'function') {
throw new Error('ObjectStateController must implement popPendingState()');
}
if (typeof controller.mergeFirstPendingState !== 'function') {
throw new Error('ObjectStateController must implement mergeFirstPendingState()');
}
if (typeof controller.getObjectCache !== 'function') {
throw new Error('ObjectStateController must implement getObjectCache()');
}
if (typeof controller.estimateAttribute !== 'function') {
throw new Error('ObjectStateController must implement estimateAttribute()');
}
if (typeof controller.estimateAttributes !== 'function') {
throw new Error('ObjectStateController must implement estimateAttributes()');
}
if (typeof controller.commitServerChanges !== 'function') {
throw new Error('ObjectStateController must implement commitServerChanges()');
}
if (typeof controller.enqueueTask !== 'function') {
throw new Error('ObjectStateController must implement enqueueTask()');
}
if (typeof controller.clearAllState !== 'function') {
throw new Error('ObjectStateController must implement clearAllState()');
}
requireMethods('ObjectStateController', ['getState', 'initializeState', 'removeState', 'getServerData', 'setServerData', 'getPendingOps', 'setPendingOp', 'pushPendingState', 'popPendingState', 'mergeFirstPendingState', 'getObjectCache', 'estimateAttribute', 'estimateAttributes', 'commitServerChanges', 'enqueueTask', 'clearAllState'], controller);

@@ -188,5 +125,3 @@ config['ObjectStateController'] = controller;

setPushController: function setPushController(controller) {
if (typeof controller.send !== 'function') {
throw new Error('PushController must implement send()');
}
requireMethods('PushController', ['send'], controller);
config['PushController'] = controller;

@@ -200,5 +135,3 @@ },

setQueryController: function setQueryController(controller) {
if (typeof controller.find !== 'function') {
throw new Error('QueryController must implement find()');
}
requireMethods('QueryController', ['find'], controller);
config['QueryController'] = controller;

@@ -212,8 +145,3 @@ },

setRESTController: function setRESTController(controller) {
if (typeof controller.request !== 'function') {
throw new Error('RESTController must implement request()');
}
if (typeof controller.ajax !== 'function') {
throw new Error('RESTController must implement ajax()');
}
requireMethods('RESTController', ['request', 'ajax'], controller);
config['RESTController'] = controller;

@@ -227,5 +155,3 @@ },

setSessionController: function setSessionController(controller) {
if (typeof controller.getSession !== 'function') {
throw new Error('A SessionController must implement getSession()');
}
requireMethods('SessionController', ['getSession'], controller);
config['SessionController'] = controller;

@@ -240,21 +166,5 @@ },

if (controller.async) {
if (typeof controller.getItemAsync !== 'function') {
throw new Error('An async StorageController must implement getItemAsync()');
}
if (typeof controller.setItemAsync !== 'function') {
throw new Error('An async StorageController must implement setItemAsync()');
}
if (typeof controller.removeItemAsync !== 'function') {
throw new Error('An async StorageController must implement removeItemAsync()');
}
requireMethods('An async StorageController', ['getItemAsync', 'setItemAsync', 'removeItemAsync'], controller);
} else {
if (typeof controller.getItem !== 'function') {
throw new Error('A synchronous StorageController must implement getItem()');
}
if (typeof controller.setItem !== 'function') {
throw new Error('A synchronous StorageController must implement setItem()');
}
if (typeof controller.removeItem !== 'function') {
throw new Error('A synchonous StorageController must implement removeItem()');
}
requireMethods('A synchronous StorageController', ['getItem', 'setItem', 'removeItem'], controller);
}

@@ -269,32 +179,3 @@ config['StorageController'] = controller;

setUserController: function setUserController(controller) {
if (typeof controller.setCurrentUser !== 'function') {
throw new Error('A UserController must implement setCurrentUser()');
}
if (typeof controller.currentUser !== 'function') {
throw new Error('A UserController must implement currentUser()');
}
if (typeof controller.currentUserAsync !== 'function') {
throw new Error('A UserController must implement currentUserAsync()');
}
if (typeof controller.signUp !== 'function') {
throw new Error('A UserController must implement signUp()');
}
if (typeof controller.logIn !== 'function') {
throw new Error('A UserController must implement logIn()');
}
if (typeof controller.become !== 'function') {
throw new Error('A UserController must implement become()');
}
if (typeof controller.logOut !== 'function') {
throw new Error('A UserController must implement logOut()');
}
if (typeof controller.requestPasswordReset !== 'function') {
throw new Error('A UserController must implement requestPasswordReset()');
}
if (typeof controller.upgradeToRevocableSession !== 'function') {
throw new Error('A UserController must implement upgradeToRevocableSession()');
}
if (typeof controller.linkWith !== 'function') {
throw new Error('A UserController must implement linkWith()');
}
requireMethods('UserController', ['setCurrentUser', 'currentUser', 'currentUserAsync', 'signUp', 'logIn', 'become', 'logOut', 'requestPasswordReset', 'upgradeToRevocableSession', 'linkWith'], controller);
config['UserController'] = controller;

@@ -308,14 +189,3 @@ },

setLiveQueryController: function setLiveQueryController(controller) {
if (typeof controller.subscribe !== 'function') {
throw new Error('LiveQueryController must implement subscribe()');
}
if (typeof controller.unsubscribe !== 'function') {
throw new Error('LiveQueryController must implement unsubscribe()');
}
if (typeof controller.open !== 'function') {
throw new Error('LiveQueryController must implement open()');
}
if (typeof controller.close !== 'function') {
throw new Error('LiveQueryController must implement close()');
}
requireMethods('LiveQueryController', ['subscribe', 'unsubscribe', 'open', 'close'], controller);
config['LiveQueryController'] = controller;

@@ -329,7 +199,3 @@ },

setHooksController: function setHooksController(controller) {
['create', 'get', 'update', 'remove'].forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error('A HooksController must implement ' + func + '()');
}
});
requireMethods('HooksController', ['create', 'get', 'update', 'remove'], controller);
config['HooksController'] = controller;

@@ -336,0 +202,0 @@ },

@@ -116,3 +116,5 @@ /**

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
if (id) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
}
} else {

@@ -135,3 +137,5 @@ value = pendingOps[i][attr].applyTo(value);

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
if (id) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
}
} else {

@@ -138,0 +142,0 @@ data[attr] = pendingOps[i][attr].applyTo(data[attr]);

@@ -136,3 +136,7 @@ /**

} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name = userId.getName();
if (!_name) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name;
}

@@ -170,4 +174,11 @@ if (typeof userId !== 'string') {

userId = userId.id;
if (!userId) {
throw new Error('Cannot get access for a ParseUser without an ID');
}
} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name2 = userId.getName();
if (!_name2) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name2;
}

@@ -174,0 +185,0 @@ var permissions = this.permissionsById[userId];

@@ -90,34 +90,37 @@ /**

if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'file',
file: data,
type: specifiedType
};
} else if (data && data.hasOwnProperty('base64')) {
var commaIndex = data.base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(data.base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
if (data !== undefined) {
if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: data.base64.slice(commaIndex + 1),
type: matches[1]
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else {
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'base64',
base64: data.base64,
format: 'file',
file: data,
type: specifiedType
};
} else if (data && typeof data.base64 !== 'undefined') {
var _base64 = data.base64;
var commaIndex = _base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(_base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
this._source = {
format: 'base64',
base64: _base64.slice(commaIndex + 1),
type: matches[1]
};
} else {
this._source = {
format: 'base64',
base64: _base64,
type: specifiedType
};
}
} else {
throw new TypeError('Cannot create a Parse.File with that data.');
}
} else if (typeof data !== 'undefined') {
throw new TypeError('Cannot create a Parse.File with that data.');
}

@@ -254,3 +257,4 @@ }

'X-Parse-Application-ID': _CoreManager2['default'].get('APPLICATION_ID'),
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY')
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY'),
'Content-Type': source.type || (source.file ? source.file.type : null)
};

@@ -257,0 +261,0 @@ var url = _CoreManager2['default'].get('SERVER_URL');

@@ -216,8 +216,8 @@ /**

if (singleInstance) {
var id = this.id;
if (!id) {
id = this._getId();
var _id = this.id;
if (!_id) {
_id = this._getId();
}
return {
id: id,
id: _id,
className: this.className

@@ -694,3 +694,5 @@ };

} else if (k === 'objectId' || k === 'id') {
this.id = changes[k];
if (typeof changes[k] === 'string') {
this.id = changes[k];
}
} else if (k === 'ACL' && typeof changes[k] === 'object' && !(changes[k] instanceof _ParseACL2['default'])) {

@@ -884,3 +886,5 @@ newOps[k] = new _ParseOp.SetOp(new _ParseACL2['default'](changes[k]));

var stateController = _CoreManager2['default'].getObjectStateController();
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
if (stateController) {
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
}
return clone;

@@ -1143,5 +1147,5 @@ }

if (options.hasOwnProperty('useMasterKey')) {
saveOptions.useMasterKey = options.useMasterKey;
saveOptions.useMasterKey = !!options.useMasterKey;
}
if (options.hasOwnProperty('sessionToken')) {
if (options.hasOwnProperty('sessionToken') && typeof options.sessionToken === 'string') {
saveOptions.sessionToken = options.sessionToken;

@@ -1573,2 +1577,4 @@ }

var ParseObjectSubclass = function ParseObjectSubclass(attributes, options) {
this.className = adjustedClassName;
this._objCount = objectCount++;
// Enable legacy initializers

@@ -1579,4 +1585,2 @@ if (typeof this.initialize === 'function') {

this.className = adjustedClassName;
this._objCount = objectCount++;
if (attributes && typeof attributes === 'object') {

@@ -1583,0 +1587,0 @@ if (!this.set(attributes || {}, options)) {

@@ -466,2 +466,5 @@ /**

if (!value) {
if (!object || !key) {
throw new Error('Cannot apply a RelationOp without either a previous value, or an object and a key');
}
var parent = new _ParseObject2['default'](object.className);

@@ -468,0 +471,0 @@ if (object.id && object.id.indexOf('local') === 0) {

@@ -99,5 +99,9 @@ /**

var change = new _ParseOp.RelationOp(objects, []);
this.parent.set(this.key, change);
var parent = this.parent;
if (!parent) {
throw new Error('Cannot add to a Relation without a parent');
}
parent.set(this.key, change);
this.targetClassName = change._targetClassName;
return this.parent;
return parent;
}

@@ -118,2 +122,5 @@

var change = new _ParseOp.RelationOp([], objects);
if (!this.parent) {
throw new Error('Cannot remove from a Relation without a parent');
}
this.parent.set(this.key, change);

@@ -147,4 +154,8 @@ this.targetClassName = change._targetClassName;

var query;
var parent = this.parent;
if (!parent) {
throw new Error('Cannot construct a query for a Relation without a parent');
}
if (!this.targetClassName) {
query = new _ParseQuery2['default'](this.parent.className);
query = new _ParseQuery2['default'](parent.className);
query._extraOptions.redirectClassNameForKey = this.key;

@@ -156,4 +167,4 @@ } else {

__type: 'Pointer',
className: this.parent.className,
objectId: this.parent.id
className: parent.className,
objectId: parent.id
});

@@ -160,0 +171,0 @@ query._addCondition('$relatedTo', 'key', this.key);

@@ -79,3 +79,7 @@ /**

value: function getName() {
return this.get('name');
var name = this.get('name');
if (name == null || typeof name === 'string') {
return name;
}
return '';
}

@@ -82,0 +86,0 @@

@@ -79,3 +79,7 @@ /**

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (typeof token === 'string') {
return token;
}
return '';
}

@@ -82,0 +86,0 @@ }], [{

@@ -131,2 +131,5 @@ /**

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
throw new Error('Invalid type: authData field should be an object');
}
authData[authType] = options.authData;

@@ -184,3 +187,3 @@

var authData = this.get('authData');
if (!provider || typeof authData !== 'object') {
if (!provider || !authData || typeof authData !== 'object') {
return;

@@ -270,2 +273,5 @@ }

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
return false;
}
return !!authData[authType];

@@ -342,3 +348,7 @@ }

value: function getUsername() {
return this.get('username');
var username = this.get('username');
if (username == null || typeof username === 'string') {
return username;
}
return '';
}

@@ -359,3 +369,3 @@

var authData = this.get('authData');
if (authData && authData.hasOwnProperty('anonymous')) {
if (authData && typeof authData === 'object' && authData.hasOwnProperty('anonymous')) {
// We need to set anonymous to null instead of deleting it in order to remove it from Parse.

@@ -388,3 +398,7 @@ authData.anonymous = null;

value: function getEmail() {
return this.get('email');
var email = this.get('email');
if (email == null || typeof email === 'string') {
return email;
}
return '';
}

@@ -415,3 +429,7 @@

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (token == null || typeof token === 'string') {
return token;
}
return '';
}

@@ -418,0 +436,0 @@

@@ -128,3 +128,5 @@ /**

headers = headers || {};
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
if (typeof headers['Content-Type'] !== 'string') {
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
}
if (_CoreManager2['default'].get('IS_NODE')) {

@@ -131,0 +133,0 @@ headers['User-Agent'] = 'Parse/' + _CoreManager2['default'].get('VERSION') + ' (NodeJS ' + process.versions.node + ')';

@@ -35,2 +35,3 @@ /**

exports.clearAllState = clearAllState;
exports.duplicateState = duplicateState;

@@ -148,2 +149,6 @@ var _ObjectStateMutations = require('./ObjectStateMutations');

objectState = {};
}
function duplicateState(source, dest) {
dest.id = source.id;
}

@@ -16,7 +16,7 @@ /**

// Defaults
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.version.electron,
IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.versions.electron,
REQUEST_ATTEMPT_LIMIT: 5,
SERVER_URL: 'https://api.parse.com/1',
LIVEQUERY_SERVER_URL: null,
VERSION: 'js' + '1.9.0',
VERSION: 'js' + '1.9.1',
APPLICATION_ID: null,

@@ -30,2 +30,10 @@ JAVASCRIPT_KEY: null,

function requireMethods(name, methods, controller) {
methods.forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error(name + ' must implement ' + func + '()');
}
});
}
module.exports = {

@@ -46,5 +54,3 @@ get: function get(key) {

setAnalyticsController: function setAnalyticsController(controller) {
if (typeof controller.track !== 'function') {
throw new Error('AnalyticsController must implement track()');
}
requireMethods('AnalyticsController', ['track'], controller);
config['AnalyticsController'] = controller;

@@ -58,5 +64,3 @@ },

setCloudController: function setCloudController(controller) {
if (typeof controller.run !== 'function') {
throw new Error('CloudController must implement run()');
}
requireMethods('CloudController', ['run'], controller);
config['CloudController'] = controller;

@@ -70,8 +74,3 @@ },

setConfigController: function setConfigController(controller) {
if (typeof controller.current !== 'function') {
throw new Error('ConfigController must implement current()');
}
if (typeof controller.get !== 'function') {
throw new Error('ConfigController must implement get()');
}
requireMethods('ConfigController', ['current', 'get'], controller);
config['ConfigController'] = controller;

@@ -85,8 +84,3 @@ },

setFileController: function setFileController(controller) {
if (typeof controller.saveFile !== 'function') {
throw new Error('FileController must implement saveFile()');
}
if (typeof controller.saveBase64 !== 'function') {
throw new Error('FileController must implement saveBase64()');
}
requireMethods('FileController', ['saveFile', 'saveBase64'], controller);
config['FileController'] = controller;

@@ -100,5 +94,3 @@ },

setInstallationController: function setInstallationController(controller) {
if (typeof controller.currentInstallationId !== 'function') {
throw new Error('InstallationController must implement currentInstallationId()');
}
requireMethods('InstallationController', ['currentInstallationId'], controller);
config['InstallationController'] = controller;

@@ -112,11 +104,3 @@ },

setObjectController: function setObjectController(controller) {
if (typeof controller.save !== 'function') {
throw new Error('ObjectController must implement save()');
}
if (typeof controller.fetch !== 'function') {
throw new Error('ObjectController must implement fetch()');
}
if (typeof controller.destroy !== 'function') {
throw new Error('ObjectController must implement destroy()');
}
requireMethods('ObjectController', ['save', 'fetch', 'destroy'], controller);
config['ObjectController'] = controller;

@@ -130,50 +114,3 @@ },

setObjectStateController: function setObjectStateController(controller) {
if (typeof controller.getState !== 'function') {
throw new Error('ObjectStateController must implement getState()');
}
if (typeof controller.initializeState !== 'function') {
throw new Error('ObjectStateController must implement initializeState()');
}
if (typeof controller.removeState !== 'function') {
throw new Error('ObjectStateController must implement removeState()');
}
if (typeof controller.getServerData !== 'function') {
throw new Error('ObjectStateController must implement getServerData()');
}
if (typeof controller.setServerData !== 'function') {
throw new Error('ObjectStateController must implement setServerData()');
}
if (typeof controller.getPendingOps !== 'function') {
throw new Error('ObjectStateController must implement getPendingOps()');
}
if (typeof controller.setPendingOp !== 'function') {
throw new Error('ObjectStateController must implement setPendingOp()');
}
if (typeof controller.pushPendingState !== 'function') {
throw new Error('ObjectStateController must implement pushPendingState()');
}
if (typeof controller.popPendingState !== 'function') {
throw new Error('ObjectStateController must implement popPendingState()');
}
if (typeof controller.mergeFirstPendingState !== 'function') {
throw new Error('ObjectStateController must implement mergeFirstPendingState()');
}
if (typeof controller.getObjectCache !== 'function') {
throw new Error('ObjectStateController must implement getObjectCache()');
}
if (typeof controller.estimateAttribute !== 'function') {
throw new Error('ObjectStateController must implement estimateAttribute()');
}
if (typeof controller.estimateAttributes !== 'function') {
throw new Error('ObjectStateController must implement estimateAttributes()');
}
if (typeof controller.commitServerChanges !== 'function') {
throw new Error('ObjectStateController must implement commitServerChanges()');
}
if (typeof controller.enqueueTask !== 'function') {
throw new Error('ObjectStateController must implement enqueueTask()');
}
if (typeof controller.clearAllState !== 'function') {
throw new Error('ObjectStateController must implement clearAllState()');
}
requireMethods('ObjectStateController', ['getState', 'initializeState', 'removeState', 'getServerData', 'setServerData', 'getPendingOps', 'setPendingOp', 'pushPendingState', 'popPendingState', 'mergeFirstPendingState', 'getObjectCache', 'estimateAttribute', 'estimateAttributes', 'commitServerChanges', 'enqueueTask', 'clearAllState'], controller);

@@ -188,5 +125,3 @@ config['ObjectStateController'] = controller;

setPushController: function setPushController(controller) {
if (typeof controller.send !== 'function') {
throw new Error('PushController must implement send()');
}
requireMethods('PushController', ['send'], controller);
config['PushController'] = controller;

@@ -200,5 +135,3 @@ },

setQueryController: function setQueryController(controller) {
if (typeof controller.find !== 'function') {
throw new Error('QueryController must implement find()');
}
requireMethods('QueryController', ['find'], controller);
config['QueryController'] = controller;

@@ -212,8 +145,3 @@ },

setRESTController: function setRESTController(controller) {
if (typeof controller.request !== 'function') {
throw new Error('RESTController must implement request()');
}
if (typeof controller.ajax !== 'function') {
throw new Error('RESTController must implement ajax()');
}
requireMethods('RESTController', ['request', 'ajax'], controller);
config['RESTController'] = controller;

@@ -227,5 +155,3 @@ },

setSessionController: function setSessionController(controller) {
if (typeof controller.getSession !== 'function') {
throw new Error('A SessionController must implement getSession()');
}
requireMethods('SessionController', ['getSession'], controller);
config['SessionController'] = controller;

@@ -240,21 +166,5 @@ },

if (controller.async) {
if (typeof controller.getItemAsync !== 'function') {
throw new Error('An async StorageController must implement getItemAsync()');
}
if (typeof controller.setItemAsync !== 'function') {
throw new Error('An async StorageController must implement setItemAsync()');
}
if (typeof controller.removeItemAsync !== 'function') {
throw new Error('An async StorageController must implement removeItemAsync()');
}
requireMethods('An async StorageController', ['getItemAsync', 'setItemAsync', 'removeItemAsync'], controller);
} else {
if (typeof controller.getItem !== 'function') {
throw new Error('A synchronous StorageController must implement getItem()');
}
if (typeof controller.setItem !== 'function') {
throw new Error('A synchronous StorageController must implement setItem()');
}
if (typeof controller.removeItem !== 'function') {
throw new Error('A synchonous StorageController must implement removeItem()');
}
requireMethods('A synchronous StorageController', ['getItem', 'setItem', 'removeItem'], controller);
}

@@ -269,32 +179,3 @@ config['StorageController'] = controller;

setUserController: function setUserController(controller) {
if (typeof controller.setCurrentUser !== 'function') {
throw new Error('A UserController must implement setCurrentUser()');
}
if (typeof controller.currentUser !== 'function') {
throw new Error('A UserController must implement currentUser()');
}
if (typeof controller.currentUserAsync !== 'function') {
throw new Error('A UserController must implement currentUserAsync()');
}
if (typeof controller.signUp !== 'function') {
throw new Error('A UserController must implement signUp()');
}
if (typeof controller.logIn !== 'function') {
throw new Error('A UserController must implement logIn()');
}
if (typeof controller.become !== 'function') {
throw new Error('A UserController must implement become()');
}
if (typeof controller.logOut !== 'function') {
throw new Error('A UserController must implement logOut()');
}
if (typeof controller.requestPasswordReset !== 'function') {
throw new Error('A UserController must implement requestPasswordReset()');
}
if (typeof controller.upgradeToRevocableSession !== 'function') {
throw new Error('A UserController must implement upgradeToRevocableSession()');
}
if (typeof controller.linkWith !== 'function') {
throw new Error('A UserController must implement linkWith()');
}
requireMethods('UserController', ['setCurrentUser', 'currentUser', 'currentUserAsync', 'signUp', 'logIn', 'become', 'logOut', 'requestPasswordReset', 'upgradeToRevocableSession', 'linkWith'], controller);
config['UserController'] = controller;

@@ -308,14 +189,3 @@ },

setLiveQueryController: function setLiveQueryController(controller) {
if (typeof controller.subscribe !== 'function') {
throw new Error('LiveQueryController must implement subscribe()');
}
if (typeof controller.unsubscribe !== 'function') {
throw new Error('LiveQueryController must implement unsubscribe()');
}
if (typeof controller.open !== 'function') {
throw new Error('LiveQueryController must implement open()');
}
if (typeof controller.close !== 'function') {
throw new Error('LiveQueryController must implement close()');
}
requireMethods('LiveQueryController', ['subscribe', 'unsubscribe', 'open', 'close'], controller);
config['LiveQueryController'] = controller;

@@ -329,7 +199,3 @@ },

setHooksController: function setHooksController(controller) {
['create', 'get', 'update', 'remove'].forEach(function (func) {
if (typeof controller[func] !== 'function') {
throw new Error('A HooksController must implement ' + func + '()');
}
});
requireMethods('HooksController', ['create', 'get', 'update', 'remove'], controller);
config['HooksController'] = controller;

@@ -336,0 +202,0 @@ },

@@ -116,3 +116,5 @@ /**

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
if (id) {
value = pendingOps[i][attr].applyTo(value, { className: className, id: id }, attr);
}
} else {

@@ -135,3 +137,5 @@ value = pendingOps[i][attr].applyTo(value);

if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
if (id) {
data[attr] = pendingOps[i][attr].applyTo(data[attr], { className: className, id: id }, attr);
}
} else {

@@ -138,0 +142,0 @@ data[attr] = pendingOps[i][attr].applyTo(data[attr]);

@@ -136,3 +136,7 @@ /**

} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name = userId.getName();
if (!_name) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name;
}

@@ -170,4 +174,11 @@ if (typeof userId !== 'string') {

userId = userId.id;
if (!userId) {
throw new Error('Cannot get access for a ParseUser without an ID');
}
} else if (userId instanceof _ParseRole2['default']) {
userId = 'role:' + userId.getName();
var _name2 = userId.getName();
if (!_name2) {
throw new TypeError('Role must have a name');
}
userId = 'role:' + _name2;
}

@@ -174,0 +185,0 @@ var permissions = this.permissionsById[userId];

@@ -90,34 +90,37 @@ /**

if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'file',
file: data,
type: specifiedType
};
} else if (data && data.hasOwnProperty('base64')) {
var commaIndex = data.base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(data.base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
if (data !== undefined) {
if (Array.isArray(data)) {
this._source = {
format: 'base64',
base64: data.base64.slice(commaIndex + 1),
type: matches[1]
base64: ParseFile.encodeBase64(data),
type: specifiedType
};
} else {
} else if (typeof File !== 'undefined' && data instanceof File) {
this._source = {
format: 'base64',
base64: data.base64,
format: 'file',
file: data,
type: specifiedType
};
} else if (data && typeof data.base64 !== 'undefined') {
var _base64 = data.base64;
var commaIndex = _base64.indexOf(',');
if (commaIndex !== -1) {
var matches = /^data:([a-zA-Z]*\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\-\/\s]*,)?base64,/.exec(_base64.slice(0, commaIndex + 1));
// if data URI with type and charset, there will be 4 matches.
this._source = {
format: 'base64',
base64: _base64.slice(commaIndex + 1),
type: matches[1]
};
} else {
this._source = {
format: 'base64',
base64: _base64,
type: specifiedType
};
}
} else {
throw new TypeError('Cannot create a Parse.File with that data.');
}
} else if (typeof data !== 'undefined') {
throw new TypeError('Cannot create a Parse.File with that data.');
}

@@ -254,3 +257,4 @@ }

'X-Parse-Application-ID': _CoreManager2['default'].get('APPLICATION_ID'),
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY')
'X-Parse-JavaScript-Key': _CoreManager2['default'].get('JAVASCRIPT_KEY'),
'Content-Type': source.type || (source.file ? source.file.type : null)
};

@@ -257,0 +261,0 @@ var url = _CoreManager2['default'].get('SERVER_URL');

@@ -216,8 +216,8 @@ /**

if (singleInstance) {
var id = this.id;
if (!id) {
id = this._getId();
var _id = this.id;
if (!_id) {
_id = this._getId();
}
return {
id: id,
id: _id,
className: this.className

@@ -694,3 +694,5 @@ };

} else if (k === 'objectId' || k === 'id') {
this.id = changes[k];
if (typeof changes[k] === 'string') {
this.id = changes[k];
}
} else if (k === 'ACL' && typeof changes[k] === 'object' && !(changes[k] instanceof _ParseACL2['default'])) {

@@ -884,3 +886,5 @@ newOps[k] = new _ParseOp.SetOp(new _ParseACL2['default'](changes[k]));

var stateController = _CoreManager2['default'].getObjectStateController();
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
if (stateController) {
stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());
}
return clone;

@@ -1143,5 +1147,5 @@ }

if (options.hasOwnProperty('useMasterKey')) {
saveOptions.useMasterKey = options.useMasterKey;
saveOptions.useMasterKey = !!options.useMasterKey;
}
if (options.hasOwnProperty('sessionToken')) {
if (options.hasOwnProperty('sessionToken') && typeof options.sessionToken === 'string') {
saveOptions.sessionToken = options.sessionToken;

@@ -1573,2 +1577,4 @@ }

var ParseObjectSubclass = function ParseObjectSubclass(attributes, options) {
this.className = adjustedClassName;
this._objCount = objectCount++;
// Enable legacy initializers

@@ -1579,4 +1585,2 @@ if (typeof this.initialize === 'function') {

this.className = adjustedClassName;
this._objCount = objectCount++;
if (attributes && typeof attributes === 'object') {

@@ -1583,0 +1587,0 @@ if (!this.set(attributes || {}, options)) {

@@ -466,2 +466,5 @@ /**

if (!value) {
if (!object || !key) {
throw new Error('Cannot apply a RelationOp without either a previous value, or an object and a key');
}
var parent = new _ParseObject2['default'](object.className);

@@ -468,0 +471,0 @@ if (object.id && object.id.indexOf('local') === 0) {

@@ -99,5 +99,9 @@ /**

var change = new _ParseOp.RelationOp(objects, []);
this.parent.set(this.key, change);
var parent = this.parent;
if (!parent) {
throw new Error('Cannot add to a Relation without a parent');
}
parent.set(this.key, change);
this.targetClassName = change._targetClassName;
return this.parent;
return parent;
}

@@ -118,2 +122,5 @@

var change = new _ParseOp.RelationOp([], objects);
if (!this.parent) {
throw new Error('Cannot remove from a Relation without a parent');
}
this.parent.set(this.key, change);

@@ -147,4 +154,8 @@ this.targetClassName = change._targetClassName;

var query;
var parent = this.parent;
if (!parent) {
throw new Error('Cannot construct a query for a Relation without a parent');
}
if (!this.targetClassName) {
query = new _ParseQuery2['default'](this.parent.className);
query = new _ParseQuery2['default'](parent.className);
query._extraOptions.redirectClassNameForKey = this.key;

@@ -156,4 +167,4 @@ } else {

__type: 'Pointer',
className: this.parent.className,
objectId: this.parent.id
className: parent.className,
objectId: parent.id
});

@@ -160,0 +171,0 @@ query._addCondition('$relatedTo', 'key', this.key);

@@ -79,3 +79,7 @@ /**

value: function getName() {
return this.get('name');
var name = this.get('name');
if (name == null || typeof name === 'string') {
return name;
}
return '';
}

@@ -82,0 +86,0 @@

@@ -79,3 +79,7 @@ /**

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (typeof token === 'string') {
return token;
}
return '';
}

@@ -82,0 +86,0 @@ }], [{

@@ -131,2 +131,5 @@ /**

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
throw new Error('Invalid type: authData field should be an object');
}
authData[authType] = options.authData;

@@ -184,3 +187,3 @@

var authData = this.get('authData');
if (!provider || typeof authData !== 'object') {
if (!provider || !authData || typeof authData !== 'object') {
return;

@@ -270,2 +273,5 @@ }

var authData = this.get('authData') || {};
if (typeof authData !== 'object') {
return false;
}
return !!authData[authType];

@@ -342,3 +348,7 @@ }

value: function getUsername() {
return this.get('username');
var username = this.get('username');
if (username == null || typeof username === 'string') {
return username;
}
return '';
}

@@ -359,3 +369,3 @@

var authData = this.get('authData');
if (authData && authData.hasOwnProperty('anonymous')) {
if (authData && typeof authData === 'object' && authData.hasOwnProperty('anonymous')) {
// We need to set anonymous to null instead of deleting it in order to remove it from Parse.

@@ -388,3 +398,7 @@ authData.anonymous = null;

value: function getEmail() {
return this.get('email');
var email = this.get('email');
if (email == null || typeof email === 'string') {
return email;
}
return '';
}

@@ -415,3 +429,7 @@

value: function getSessionToken() {
return this.get('sessionToken');
var token = this.get('sessionToken');
if (token == null || typeof token === 'string') {
return token;
}
return '';
}

@@ -418,0 +436,0 @@

@@ -126,3 +126,5 @@ /**

headers = headers || {};
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
if (typeof headers['Content-Type'] !== 'string') {
headers['Content-Type'] = 'text/plain'; // Avoid pre-flight
}
if (_CoreManager2['default'].get('IS_NODE')) {

@@ -129,0 +131,0 @@ headers['User-Agent'] = 'Parse/' + _CoreManager2['default'].get('VERSION') + ' (NodeJS ' + process.versions.node + ')';

@@ -35,2 +35,3 @@ /**

exports.clearAllState = clearAllState;
exports.duplicateState = duplicateState;

@@ -148,2 +149,6 @@ var _ObjectStateMutations = require('./ObjectStateMutations');

objectState = {};
}
function duplicateState(source, dest) {
dest.id = source.id;
}
{
"name": "parse",
"version": "1.9.0",
"version": "1.9.1",
"description": "The Parse JavaScript SDK",

@@ -5,0 +5,0 @@ "homepage": "https://www.parse.com",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc