fix some linting errors

This commit is contained in:
Cassie Tarakajian 2017-01-11 15:50:36 -05:00
parent 1d6e59ada3
commit fc8318c297
7 changed files with 26 additions and 76 deletions

View file

@ -7,22 +7,22 @@ function getExtension(filename) {
} }
export function signS3(req, res) { export function signS3(req, res) {
const fileExtension = getExtension(req.body.name), const fileExtension = getExtension(req.body.name);
filename = uuid.v4() + fileExtension, const filename = uuid.v4() + fileExtension;
acl = 'public-read', const acl = 'public-read';
p = policy({ const p = policy({
acl, acl,
secret: process.env.AWS_SECRET_KEY, secret: process.env.AWS_SECRET_KEY,
length: 5000000, // in bytes? length: 5000000, // in bytes?
bucket: process.env.S3_BUCKET, bucket: process.env.S3_BUCKET,
key: filename, key: filename,
expires: new Date(Date.now() + 60000), expires: new Date(Date.now() + 60000),
}), });
result = { const result = {
'AWSAccessKeyId': process.env.AWS_ACCESS_KEY, AWSAccessKeyId: process.env.AWS_ACCESS_KEY,
'key': filename, key: filename,
'policy': p.policy, policy: p.policy,
'signature': p.signature signature: p.signature
}; };
return res.json(result); return res.json(result);
} }

View file

@ -1,7 +1,4 @@
import Project from '../models/project'; import Project from '../models/project';
import escapeStringRegexp from 'escape-string-regexp';
const startTag = '@fs-';
import { resolvePathToFile } from '../utils/filePath';
import { import {
injectMediaUrls, injectMediaUrls,
resolvePathsForElementsWithAttribute, resolvePathsForElementsWithAttribute,
@ -14,15 +11,15 @@ export function serveProject(req, res) {
.exec((err, project) => { .exec((err, project) => {
// TODO this does not parse html // TODO this does not parse html
const files = project.files; const files = project.files;
let htmlFile = files.find(file => file.name.match(/\.html$/i)).content; const htmlFile = files.find(file => file.name.match(/\.html$/i)).content;
const filesToInject = files.filter(file => file.name.match(/\.(js|css)$/i)); const filesToInject = files.filter(file => file.name.match(/\.(js|css)$/i));
injectMediaUrls(filesToInject, files, req.params.project_id); injectMediaUrls(filesToInject, files, req.params.project_id);
jsdom.env(htmlFile, (err, window) => { jsdom.env(htmlFile, (innerErr, window) => {
const sketchDoc = window.document; const sketchDoc = window.document;
const base = sketchDoc.createElement('base'); const base = sketchDoc.createElement('base');
const fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl; const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`;
base.href = `${fullUrl}/`; base.href = `${fullUrl}/`;
sketchDoc.head.appendChild(base); sketchDoc.head.appendChild(base);

View file

@ -8,7 +8,7 @@ export function createFile(req, res) {
Project.findByIdAndUpdate(req.params.project_id, Project.findByIdAndUpdate(req.params.project_id,
{ {
$push: { $push: {
'files': req.body files: req.body
} }
}, },
{ {

View file

@ -80,8 +80,8 @@ export function updatePreferences(req, res) {
export function resetPasswordInitiate(req, res) { export function resetPasswordInitiate(req, res) {
async.waterfall([ async.waterfall([
(done) => { (done) => {
crypto.randomBytes(20, function (err, buf) { crypto.randomBytes(20, (err, buf) => {
var token = buf.toString('hex'); const token = buf.toString('hex');
done(err, token); done(err, token);
}); });
}, },
@ -93,7 +93,7 @@ export function resetPasswordInitiate(req, res) {
user.resetPasswordToken = token; user.resetPasswordToken = token;
user.resetPasswordExpires = Date.now() + 3600000; // 1 hour user.resetPasswordExpires = Date.now() + 3600000; // 1 hour
user.save(function (err) { user.save((err) => {
done(err, token, user); done(err, token, user);
}); });
}); });
@ -117,7 +117,7 @@ export function resetPasswordInitiate(req, res) {
\n\nIf you did not request this, please ignore this email and your password will remain unchanged. \n\nIf you did not request this, please ignore this email and your password will remain unchanged.
\n\nThanks for using the p5.js Web Editor!\n` \n\nThanks for using the p5.js Web Editor!\n`
}; };
transporter.sendMail(message, (error, info) => { transporter.sendMail(message, (error) => {
done(error); done(error);
}); });
} }

View file

@ -1,37 +1,7 @@
import mongoose from 'mongoose'; import mongoose from 'mongoose';
const Schema = mongoose.Schema; const Schema = mongoose.Schema;
const ObjectIdSchema = Schema.ObjectId;
const ObjectId = mongoose.Types.ObjectId;
import shortid from 'shortid'; import shortid from 'shortid';
const defaultSketch = `function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
}`;
const defaultHTML =
`<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.5/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.5/addons/p5.dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.5/addons/p5.sound.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>
`;
const defaultCSS =
`html, body {
margin: 0;
padding: 0;
}
`;
const fileSchema = new Schema({ const fileSchema = new Schema({
name: { type: String, default: 'sketch.js' }, name: { type: String, default: 'sketch.js' },
content: { type: String, default: '' }, content: { type: String, default: '' },
@ -64,18 +34,4 @@ projectSchema.set('toJSON', {
virtuals: true virtuals: true
}); });
// projectSchema.pre('save', function createSelectedFile(next) {
// const project = this;
// if (project.isNew && project.files.length === 0) {
// let a = new ObjectId();
// let b = new ObjectId();
// let c = new ObjectId();
// project.files = [{ name: 'sketch.js', content: defaultSketch, _id: a, isSelectedFile: true },
// { name: 'index.html', content: defaultHTML, _id: b },
// { name: 'style.css', content: defaultCSS, _id: c },
// { name: 'root', _id: new ObjectId(), children: [a, b, c] }];
// }
// return next();
// });
export default mongoose.model('Project', projectSchema); export default mongoose.model('Project', projectSchema);

View file

@ -1,6 +1,5 @@
import { Router } from 'express'; import { Router } from 'express';
const router = new Router(); const router = new Router();
import path from 'path';
import { renderIndex } from '../views/index'; import { renderIndex } from '../views/index';
import { get404Sketch } from '../views/404Page'; import { get404Sketch } from '../views/404Page';
import { userExists } from '../controllers/user.controller.js'; import { userExists } from '../controllers/user.controller.js';

View file

@ -1,9 +1,7 @@
import { resolvePathToFile } from '../utils/filePath'; import { resolvePathToFile } from '../utils/filePath';
const MEDIA_FILE_REGEX = /^('|")(?!(http:\/\/|https:\/\/)).*\.(png|jpg|jpeg|gif|bmp|mp3|wav|aiff|ogg|json|txt|csv|svg|obj|mp4|ogg|webm|mov|otf|ttf)('|")$/i;
const MEDIA_FILE_REGEX_NO_QUOTES = /^(?!(http:\/\/|https:\/\/)).*\.(png|jpg|jpeg|gif|bmp|mp3|wav|aiff|ogg|json|txt|csv|svg|obj|mp4|ogg|webm|mov|otf|ttf)$/i; const MEDIA_FILE_REGEX_NO_QUOTES = /^(?!(http:\/\/|https:\/\/)).*\.(png|jpg|jpeg|gif|bmp|mp3|wav|aiff|ogg|json|txt|csv|svg|obj|mp4|ogg|webm|mov|otf|ttf)$/i;
const STRING_REGEX = /(['"])((\\\1|.)*?)\1/gm; const STRING_REGEX = /(['"])((\\\1|.)*?)\1/gm;
const TEXT_FILE_REGEX = /(.+\.json$|.+\.txt$|.+\.csv$)/i;
const EXTERNAL_LINK_REGEX = /^(http:\/\/|https:\/\/)/; const EXTERNAL_LINK_REGEX = /^(http:\/\/|https:\/\/)/;
const NOT_EXTERNAL_LINK_REGEX = /^(?!(http:\/\/|https:\/\/))/; const NOT_EXTERNAL_LINK_REGEX = /^(?!(http:\/\/|https:\/\/))/;
@ -37,7 +35,7 @@ function resolveLinksInString(content, files, projectId) {
} }
export function injectMediaUrls(filesToInject, allFiles, projectId) { export function injectMediaUrls(filesToInject, allFiles, projectId) {
filesToInject.forEach((file, index) => { filesToInject.forEach(file => {
file.content = resolveLinksInString(file.content, allFiles, projectId); file.content = resolveLinksInString(file.content, allFiles, projectId);
}); });
} }