Skip to content

Commit b3ea550

Browse files
committed
remove Parse.File and Parse.Server
1 parent 00e16f8 commit b3ea550

File tree

4 files changed

+52
-42
lines changed

4 files changed

+52
-42
lines changed

src/ClientSDK.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Parse from 'parse/node';
2-
import ParseServer from './cloud-code/Parse.Server';
32

43
var semver = require('semver');
54

@@ -40,12 +39,10 @@ module.exports = {
4039
applicationId: Parse.applicationId,
4140
_decode: Parse._decode,
4241
CoreManager: Parse.CoreManager,
43-
File: Parse.File,
4442
Object: Parse.Object,
4543
Query: Parse.Query,
4644
Schema: Parse.Schema,
4745
User: Parse.User,
48-
Server: ParseServer,
4946
compatible,
5047
supportsForwardDelete,
5148
fromString,

src/Routers/FilesRouter.js

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import express from 'express';
22
import * as Middlewares from '../middlewares';
3-
import * as Parse from '../ClientSDK';
43
import ParseError from '../ParseError';
54
import Config from '../Config';
65
import logger from '../logger';
6+
import { loadModule } from '../Adapters/AdapterLoader';
77
const triggers = require('../triggers');
88
const http = require('http');
99
const Utils = require('../Utils');
@@ -80,16 +80,20 @@ export class FilesRouter {
8080
const filesController = config.filesController;
8181
const mime = (await import('mime')).default;
8282
let contentType = mime.getType(filename);
83-
let file = new Parse.File(filename, { base64: '' }, contentType);
84-
const triggerResult = await triggers.maybeRunFileTrigger(
85-
triggers.Types.beforeFind,
86-
{ file },
87-
config,
88-
req.auth
89-
);
90-
if (triggerResult?.file?._name) {
91-
filename = triggerResult?.file?._name;
92-
contentType = mime.getType(filename);
83+
const hasBeforeFindTrigger = triggers.triggerExists('@File', triggers.Types.beforeFind, config.applicationId);
84+
if (hasBeforeFindTrigger) {
85+
const Parse = await loadModule('parse/node.js');
86+
const file = new Parse.File(filename, { base64: '' }, contentType);
87+
const triggerResult = await triggers.maybeRunFileTrigger(
88+
triggers.Types.beforeFind,
89+
{ file },
90+
config,
91+
req.auth
92+
);
93+
if (triggerResult?.file?._name) {
94+
filename = triggerResult?.file?._name;
95+
contentType = mime.getType(filename);
96+
}
9397
}
9498

9599
if (isFileStreamable(req, filesController)) {
@@ -109,19 +113,22 @@ export class FilesRouter {
109113
if (!data) {
110114
return;
111115
}
112-
file = new Parse.File(filename, { base64: data.toString('base64') }, contentType);
113-
const afterFind = await triggers.maybeRunFileTrigger(
114-
triggers.Types.afterFind,
115-
{ file, forceDownload: false },
116-
config,
117-
req.auth
118-
);
119-
116+
const hasAfterFindHook = triggers.triggerExists('@File', triggers.Types.afterFind, config.applicationId);
117+
let afterFind;
118+
if (hasAfterFindHook) {
119+
const Parse = await loadModule('parse/node.js');
120+
const file = new Parse.File(filename, { base64: data.toString('base64') }, contentType);
121+
afterFind = await triggers.maybeRunFileTrigger(
122+
triggers.Types.afterFind,
123+
{ file, forceDownload: false },
124+
config,
125+
req.auth
126+
);
127+
}
120128
if (afterFind?.file) {
121129
contentType = mime.getType(afterFind.file._name);
122130
data = Buffer.from(afterFind.file._data, 'base64');
123131
}
124-
125132
res.status(200);
126133
res.set('Content-Type', contentType);
127134
res.set('Content-Length', data.length);
@@ -211,6 +218,8 @@ export class FilesRouter {
211218
}
212219

213220
const base64 = req.body.toString('base64');
221+
// TODO: Move to beforeSave trigger check
222+
const Parse = await loadModule('parse/node.js');
214223
const file = new Parse.File(filename, { base64 }, contentType);
215224
const { metadata = {}, tags = {} } = req.fileData || {};
216225
try {
@@ -299,19 +308,23 @@ export class FilesRouter {
299308
try {
300309
const { filesController } = req.config;
301310
const { filename } = req.params;
302-
// run beforeDeleteFile trigger
303-
const file = new Parse.File(filename);
304-
file._url = await filesController.adapter.getFileLocation(req.config, filename);
305-
const fileObject = { file, fileSize: null };
306-
await triggers.maybeRunFileTrigger(
307-
triggers.Types.beforeDelete,
308-
fileObject,
309-
req.config,
310-
req.auth
311-
);
312-
// delete file
311+
const fileObject = { file: null, fileSize: null };
312+
313+
const hasBeforeDeleteHook = triggers.triggerExists('@File', triggers.Types.beforeDelete, req.config.applicationId);
314+
if (hasBeforeDeleteHook) {
315+
const Parse = await loadModule('parse/node.js');
316+
const file = new Parse.File(filename);
317+
file._url = await filesController.adapter.getFileLocation(req.config, filename);
318+
fileObject.file = file;
319+
await triggers.maybeRunFileTrigger(
320+
triggers.Types.beforeDelete,
321+
fileObject,
322+
req.config,
323+
req.auth
324+
);
325+
}
313326
await filesController.deleteFile(req.config, filename);
314-
// run afterDeleteFile trigger
327+
315328
await triggers.maybeRunFileTrigger(
316329
triggers.Types.afterDelete,
317330
fileObject,

src/Routers/UsersRouter.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ export class UsersRouter extends ClassesRouter {
270270
await req.config.filesController.expandFilesInObject(req.config, user);
271271

272272
// Before login trigger; throws if failure
273-
const hasBeforeLoginTrigger = await triggerExists('_User', TriggerTypes.beforeLogin, req.config.applicationId);
273+
const hasBeforeLoginTrigger = triggerExists('_User', TriggerTypes.beforeLogin, req.config.applicationId);
274274
if (hasBeforeLoginTrigger) {
275275
const Parse = await loadModule('parse/node.js');
276276
await maybeRunTrigger(
@@ -306,7 +306,7 @@ export class UsersRouter extends ClassesRouter {
306306

307307
await createSession();
308308

309-
const hasAfterLoginTrigger = await triggerExists('_User', TriggerTypes.afterLogin, req.config.applicationId);
309+
const hasAfterLoginTrigger = triggerExists('_User', TriggerTypes.afterLogin, req.config.applicationId);
310310
if (hasAfterLoginTrigger) {
311311
const Parse = await loadModule('parse/node.js');
312312
const afterLoginUser = Parse.User.fromJSON(Object.assign({ className: '_User' }, user));
@@ -412,7 +412,7 @@ export class UsersRouter extends ClassesRouter {
412412
records.results[0].objectId,
413413
req.info.context
414414
);
415-
const hasAfterLogoutTrigger = await triggerExists('_Session', TriggerTypes.afterLogout, req.config.applicationId);
415+
const hasAfterLogoutTrigger = triggerExists('_Session', TriggerTypes.afterLogout, req.config.applicationId);
416416
if (hasAfterLogoutTrigger) {
417417
const Parse = await loadModule('parse/node.js');
418418
await maybeRunTrigger(

src/middlewares.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import AppCache from './cache';
2-
import Parse from 'parse/node';
32
import ParseError from './ParseError';
43
import auth from './Auth';
54
import Config from './Config';
@@ -9,6 +8,7 @@ import rest from './rest';
98
import MongoStorageAdapter from './Adapters/Storage/Mongo/MongoStorageAdapter';
109
import PostgresStorageAdapter from './Adapters/Storage/Postgres/PostgresStorageAdapter';
1110
import rateLimit from 'express-rate-limit';
11+
import { RateLimitZone } from './cloud-code/Parse.Server';
1212
import { RateLimitOptions } from './Options/Definitions';
1313
import { pathToRegexp } from 'path-to-regexp';
1414
import RedisStore from 'rate-limit-redis';
@@ -600,14 +600,14 @@ export const addRateLimit = (route, config, cloud) => {
600600
return request.auth?.isMaster;
601601
},
602602
keyGenerator: async request => {
603-
if (route.zone === Parse.Server.RateLimitZone.global) {
603+
if (route.zone === RateLimitZone.global) {
604604
return request.config.appId;
605605
}
606606
const token = request.info.sessionToken;
607-
if (route.zone === Parse.Server.RateLimitZone.session && token) {
607+
if (route.zone === RateLimitZone.session && token) {
608608
return token;
609609
}
610-
if (route.zone === Parse.Server.RateLimitZone.user && token) {
610+
if (route.zone === RateLimitZone.user && token) {
611611
if (!request.auth) {
612612
await new Promise(resolve => handleParseSession(request, null, resolve));
613613
}

0 commit comments

Comments
 (0)