fix things I fixed before and that were overwritten

pull/34/head
unknown 2018-11-19 19:22:41 -05:00
parent 42489ad574
commit 8025aa45ff
52 changed files with 207 additions and 273 deletions

View File

@ -12,12 +12,10 @@
* For more information see: * For more information see:
* https://sailsjs.com/anatomy/Gruntfile.js * https://sailsjs.com/anatomy/Gruntfile.js
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
var loadGruntTasks = require('sails-hook-grunt/accessible/load-grunt-tasks')
var loadGruntTasks = require('sails-hook-grunt/accessible/load-grunt-tasks');
// Load Grunt task configurations (from `tasks/config/`) and Grunt // Load Grunt task configurations (from `tasks/config/`) and Grunt
// task registrations (from `tasks/register/`). // task registrations (from `tasks/register/`).
loadGruntTasks(__dirname, grunt); loadGruntTasks(__dirname, grunt)
}
};

View File

@ -5,6 +5,8 @@
* @help :: See https://sailsjs.com/docs/concepts/actions * @help :: See https://sailsjs.com/docs/concepts/actions
*/ */
const HttpError = require('../errors/HttpError')
module.exports = { module.exports = {
publish: async function (req, res) { publish: async function (req, res) {
try { try {
@ -12,13 +14,13 @@ module.exports = {
const host = req.hostname const host = req.hostname
let result let result
if (!host) throw new Error('Missing hostname') if (!host) throw new HttpError(400, 'Missing hostname')
if (!body) throw new Error('Missing body') if (!body) throw new HttpError(400, 'Missing body')
const bookExists = await Book.findOne(body) const bookExists = await Book.findOne(body)
if (bookExists) { if (bookExists) {
throw new Error('Version already exists') throw new HttpError(400, 'Version already exists')
} else { } else {
result = await Book.create(body) result = await Book.create(body)
} }
@ -35,7 +37,8 @@ module.exports = {
}) })
}) })
} catch (e) { } catch (e) {
return res.status(400).json({ if (e instanceof HttpError) return e.send(res)
return res.status(500).json({
error: e.message error: e.message
}) })
} }
@ -44,17 +47,16 @@ module.exports = {
list: async function (req, res) { list: async function (req, res) {
try { try {
const body = req.allParams() const body = req.allParams()
if (!body) throw new Error('Missing parameters') if (!body) throw new HttpError(400, 'Missing parameters')
const books = await Book.find(body) const books = await Book.find(body)
if (!books.length) { if (!books.length) {
return res.status(404).json({ throw new HttpError(404, 'No books matching those parameters were found.')
error: 'No books matching those parameters were found.'
})
} }
return res.json(books) return res.json(books)
} catch (e) { } catch (e) {
if (e instanceof HttpError) return e.send(res)
return res.status(500).json({ return res.status(500).json({
error: e.message error: e.message
}) })

View File

@ -12,9 +12,11 @@ module.exports = {
create: async function (req, res, next) { create: async function (req, res, next) {
const passportHelper = await sails.helpers.passport() const passportHelper = await sails.helpers.passport()
passportHelper.protocols.local.register(req.body, function (err, user) { passportHelper.protocols.local.register(req.body, function (err, user) {
if (err) return res.status(500).json({ if (err) {
return res.status(500).json({
error: err.toString() error: err.toString()
}) })
}
res.json(user) res.json(user)
}) })
@ -23,9 +25,11 @@ module.exports = {
update: async function (req, res, next) { update: async function (req, res, next) {
const passportHelper = await sails.helpers.passport() const passportHelper = await sails.helpers.passport()
passportHelper.protocols.local.update(req.body, function (err, user) { passportHelper.protocols.local.update(req.body, function (err, user) {
if (err) return res.status(500).json({ if (err) {
return res.status(500).json({
error: err.toString() error: err.toString()
}) })
}
res.json(user) res.json(user)
}) })

View File

@ -23,7 +23,7 @@ passport.serializeUser(function (user, next) {
next(null, user.id) next(null, user.id)
}) })
passport.deserializeUser(function (id, next) { passport.deserializeUser(function (id, next) {
return User.findOne({id: id}) return User.findOne({ id: id })
.then(function (user) { .then(function (user) {
next(null, user) next(null, user)
return user return user
@ -37,7 +37,7 @@ function PassportHelper () {
const strategies = sails.config.passport const strategies = sails.config.passport
for (const key in strategies) { for (const key in strategies) {
let options = {passReqToCallback: true} let options = { passReqToCallback: true }
let Strategy = strategies[key].strategy let Strategy = strategies[key].strategy
if (key === 'local') { if (key === 'local') {
_.extend(options, { _.extend(options, {
@ -122,7 +122,7 @@ function PassportHelper () {
let user let user
if (!req.user) { if (!req.user) {
if (!passport) { // new user signing up, create a new user if (!pass) { // new user signing up, create a new user
user = await User.create(userAttrs).fetch() user = await User.create(userAttrs).fetch()
await Passport.create({ await Passport.create({
...q, ...q,

View File

@ -18,20 +18,19 @@ module.exports = {
autoIncrement: true, autoIncrement: true,
columnName: '_id' columnName: '_id'
}, },
title: {type: 'string', required: true}, title: { type: 'string', required: true },
author: {type: 'string'}, author: { type: 'string' },
isbn: {type: 'string'}, isbn: { type: 'string' },
version: {type: 'string'}, version: { type: 'string' }
// ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗ // ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗
// ║╣ ║║║╠╩╗║╣ ║║╚═╗ // ║╣ ║║║╠╩╗║╣ ║║╚═╗
// ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝ // ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝
// ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ // ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗
// ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝
}, }
} }

41
app.js
View File

@ -20,35 +20,30 @@
* https://sailsjs.com/anatomy/app.js * https://sailsjs.com/anatomy/app.js
*/ */
// Ensure we're in the project directory, so cwd-relative paths work as expected // Ensure we're in the project directory, so cwd-relative paths work as expected
// no matter where we actually lift from. // no matter where we actually lift from.
// > Note: This is not required in order to lift, but it is a convenient default. // > Note: This is not required in order to lift, but it is a convenient default.
process.chdir(__dirname); process.chdir(__dirname)
// Attempt to import `sails` dependency, as well as `rc` (for loading `.sailsrc` files). // Attempt to import `sails` dependency, as well as `rc` (for loading `.sailsrc` files).
var sails; var sails
var rc; var rc
try { try {
sails = require('sails'); sails = require('sails')
rc = require('sails/accessible/rc'); rc = require('sails/accessible/rc')
} catch (err) { } catch (err) {
console.error('Encountered an error when attempting to require(\'sails\'):'); console.error('Encountered an error when attempting to require(\'sails\'):')
console.error(err.stack); console.error(err.stack)
console.error('--'); console.error('--')
console.error('To run an app using `node app.js`, you need to have Sails installed'); console.error('To run an app using `node app.js`, you need to have Sails installed')
console.error('locally (`./node_modules/sails`). To do that, just make sure you\'re'); console.error('locally (`./node_modules/sails`). To do that, just make sure you\'re')
console.error('in the same directory as your app and run `npm install`.'); console.error('in the same directory as your app and run `npm install`.')
console.error(); console.error()
console.error('If Sails is installed globally (i.e. `npm install -g sails`) you can'); console.error('If Sails is installed globally (i.e. `npm install -g sails`) you can')
console.error('also run this app with `sails lift`. Running with `sails lift` will'); console.error('also run this app with `sails lift`. Running with `sails lift` will')
console.error('not run this file (`app.js`), but it will do exactly the same thing.'); console.error('not run this file (`app.js`), but it will do exactly the same thing.')
console.error('(It even uses your app directory\'s local Sails install, if possible.)'); console.error('(It even uses your app directory\'s local Sails install, if possible.)')
return; }// -•
}//-•
// Start server // Start server
sails.lift(rc('sails')); sails.lift(rc('sails'))

View File

@ -53,9 +53,9 @@ export const setLoggedIn = (data) => (dispatch, getState) => {
export const checkEmail = email => async (dispatch, getState) => { export const checkEmail = email => async (dispatch, getState) => {
dispatch(setWorking(true)) dispatch(setWorking(true))
dispatch(clearError()) dispatch(clearError())
if (/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/.test(email)) { if (/^([a-zA-Z0-9_\-.]+)@([a-zA-Z0-9_\-.]+)\.([a-zA-Z]{2,5})$/.test(email)) {
try { try {
const res = await Ajax.post({ await Ajax.post({
url: '/auth/email_exists', url: '/auth/email_exists',
data: { data: {
email email
@ -103,7 +103,7 @@ export const checkPassword = (email, password) => async (dispatch, getState) =>
export const signup = (email, password) => async (dispatch, getState) => { export const signup = (email, password) => async (dispatch, getState) => {
dispatch(setWorking(true)) dispatch(setWorking(true))
dispatch(clearError()) dispatch(clearError())
if (/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/.test(email)) { if (/^([a-zA-Z0-9_\-.]+)@([a-zA-Z0-9_\-.]+)\.([a-zA-Z]{2,5})$/.test(email)) {
try { try {
await Ajax.post({ await Ajax.post({
url: '/auth/email_available', url: '/auth/email_available',

View File

@ -2,7 +2,7 @@
import React from 'react' import React from 'react'
import STYLE from '../../styles/shared/underlineinput.scss' import '../../styles/shared/underlineinput.scss'
const UnderlineInput = props => ( const UnderlineInput = props => (
<div className={'underlined-input ' + (props.className ? props.className : '')}> <div className={'underlined-input ' + (props.className ? props.className : '')}>

View File

@ -1,7 +1,7 @@
'use strict' 'use strict'
import React from 'react' import React from 'react'
import STYLE from '../../styles/shared/carousel.scss' import '../../styles/shared/carousel.scss'
class Carousel extends React.Component { class Carousel extends React.Component {
constructor () { constructor () {
@ -18,7 +18,7 @@ class Carousel extends React.Component {
render () { render () {
return ( return (
<section className='carousel-container'> <section className='carousel-container'>
<div className='carousel' style={{width: this.getWidth(), left: this.getOffset()}}> <div className='carousel' style={{ width: this.getWidth(), left: this.getOffset() }}>
{this.props.children} {this.props.children}
</div> </div>
</section> </section>

View File

@ -3,12 +3,12 @@
import React from 'react' import React from 'react'
import ReactDOM from 'react-dom' import ReactDOM from 'react-dom'
import Progress from './components/Progress' import Progress from './components/Progress'
import Carousel, {CarouselItem} from './containers/Carousel' import Carousel, { CarouselItem } from './containers/Carousel'
import UnderlineInput from './components/UnderlineInput' import UnderlineInput from './components/UnderlineInput'
import reducer from './reducers/login' import reducer from './reducers/login'
import {setEmail, setPassword, setCarousel, checkEmail, checkPassword, signup} from './actions/login' import { setEmail, setPassword, setCarousel, checkEmail, checkPassword, signup } from './actions/login'
import STYLE from '../styles/login.scss' import '../styles/login.scss'
class App extends React.Component { class App extends React.Component {
constructor () { constructor () {

View File

@ -3,7 +3,7 @@
import Actions from '../actions/login' import Actions from '../actions/login'
const reducer = (state = {}, action) => { const reducer = (state = {}, action) => {
const {type, data} = action const { type, data } = action
switch (type) { switch (type) {
case Actions.set_user: case Actions.set_user:
return { return {

View File

@ -19,7 +19,6 @@ module.exports.blueprints = {
// actions: false, // actions: false,
/*************************************************************************** /***************************************************************************
* * * *
* Automatically expose RESTful routes for your models? * * Automatically expose RESTful routes for your models? *
@ -28,7 +27,6 @@ module.exports.blueprints = {
// rest: true, // rest: true,
/*************************************************************************** /***************************************************************************
* * * *
* Automatically expose CRUD "shortcut" routes to GET requests? * * Automatically expose CRUD "shortcut" routes to GET requests? *
@ -38,4 +36,4 @@ module.exports.blueprints = {
// shortcuts: true, // shortcuts: true,
}; }

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/config/bootstrap * https://sailsjs.com/config/bootstrap
*/ */
module.exports.bootstrap = async function(done) { module.exports.bootstrap = async function (done) {
// By convention, this is a good place to set up fake data during development. // By convention, this is a good place to set up fake data during development.
// //
// For example: // For example:
@ -29,6 +28,5 @@ module.exports.bootstrap = async function(done) {
// Don't forget to trigger `done()` when this bootstrap function's logic is finished. // Don't forget to trigger `done()` when this bootstrap function's logic is finished.
// (otherwise your server will never lift, since it's waiting on the bootstrap) // (otherwise your server will never lift, since it's waiting on the bootstrap)
return done(); return done()
}
};

View File

@ -20,4 +20,4 @@ module.exports.custom = {
// stripeSecret: 'sk_test_Zzd814nldl91104qor5911gjald', // stripeSecret: 'sk_test_Zzd814nldl91104qor5911gjald',
// … // …
}; }

View File

@ -15,7 +15,6 @@
module.exports.datastores = { module.exports.datastores = {
/*************************************************************************** /***************************************************************************
* * * *
* Your app's default datastore. * * Your app's default datastore. *
@ -51,7 +50,6 @@ module.exports.datastores = {
// adapter: 'sails-mysql', // adapter: 'sails-mysql',
// url: 'mysql://user:password@host:port/database', // url: 'mysql://user:password@host:port/database',
}, }
}
};

View File

@ -59,15 +59,15 @@ module.exports = {
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/**************************************************************************** /****************************************************************************
*                         * * *
* More adapter-specific options * * More adapter-specific options *
*                         * * *
* > For example, for some hosted PostgreSQL providers (like Heroku), the * * > For example, for some hosted PostgreSQL providers (like Heroku), the *
* > extra `ssl: true` option is mandatory and must be provided. * * > extra `ssl: true` option is mandatory and must be provided. *
*                         * * *
* More info:                   * * More info: *
* https://sailsjs.com/config/datastores           * * https://sailsjs.com/config/datastores *
*                         * * *
****************************************************************************/ ****************************************************************************/
// ssl: true, // ssl: true,

View File

@ -61,15 +61,15 @@ module.exports = {
url: process.env.SAILS_DATASTORE_URL url: process.env.SAILS_DATASTORE_URL
/**************************************************************************** /****************************************************************************
*                         * * *
* More adapter-specific options * * More adapter-specific options *
*                         * * *
* > For example, for some hosted PostgreSQL providers (like Heroku), the * * > For example, for some hosted PostgreSQL providers (like Heroku), the *
* > extra `ssl: true` option is mandatory and must be provided. * * > extra `ssl: true` option is mandatory and must be provided. *
*                         * * *
* More info:                   * * More info: *
* https://sailsjs.com/config/datastores           * * https://sailsjs.com/config/datastores *
*                         * * *
****************************************************************************/ ****************************************************************************/
// ssl: true, // ssl: true,
@ -240,8 +240,8 @@ module.exports = {
* * * *
***************************************************************************/ ***************************************************************************/
onlyAllowOrigins: [ onlyAllowOrigins: [
'https://ec2-18-219-76-43.us-east-2.compute.amazonaws.com', 'https://ec2-18-219-76-43.us-east-2.compute.amazonaws.com'
], ]
/*************************************************************************** /***************************************************************************
* * * *

View File

@ -47,6 +47,6 @@ module.exports.globals = {
* * * *
****************************************************************************/ ****************************************************************************/
sails: true, sails: true
}; }

View File

@ -53,7 +53,7 @@ module.exports.http = {
], ],
rateLimit: rateLimiter, rateLimit: rateLimiter,
passportInit: require('passport').initialize(), passportInit: require('passport').initialize(),
passportSession: require('passport').session(), passportSession: require('passport').session()
/*************************************************************************** /***************************************************************************
* * * *

View File

@ -20,7 +20,7 @@ module.exports.i18n = {
* * * *
***************************************************************************/ ***************************************************************************/
locales: ['en', 'es', 'fr', 'de'], locales: ['en', 'es', 'fr', 'de']
/**************************************************************************** /****************************************************************************
* * * *
@ -42,4 +42,4 @@ module.exports.i18n = {
// localesDirectory: 'config/locales' // localesDirectory: 'config/locales'
}; }

View File

@ -26,4 +26,4 @@ module.exports.log = {
// level: 'info' // level: 'info'
}; }

View File

@ -15,7 +15,6 @@
module.exports.models = { module.exports.models = {
/*************************************************************************** /***************************************************************************
* * * *
* Whether the `.create()` and `.update()` model methods should ignore * * Whether the `.create()` and `.update()` model methods should ignore *
@ -37,7 +36,6 @@ module.exports.models = {
// schema: true, // schema: true,
/*************************************************************************** /***************************************************************************
* * * *
* How and whether Sails will attempt to automatically rebuild the * * How and whether Sails will attempt to automatically rebuild the *
@ -55,7 +53,6 @@ module.exports.models = {
// migrate: 'alter', // migrate: 'alter',
/*************************************************************************** /***************************************************************************
* * * *
* Base attributes that are included in all of your models by default. * * Base attributes that are included in all of your models by default. *
@ -82,10 +79,9 @@ module.exports.models = {
// //
// Plus, don't forget to configure MongoDB as your default datastore: // Plus, don't forget to configure MongoDB as your default datastore:
// https://sailsjs.com/docs/tutorials/using-mongo-db // https://sailsjs.com/docs/tutorials/using-mongo-db
//-------------------------------------------------------------------------- // --------------------------------------------------------------------------
}, },
/****************************************************************************** /******************************************************************************
* * * *
* The set of DEKs (data encryption keys) for at-rest encryption. * * The set of DEKs (data encryption keys) for at-rest encryption. *
@ -104,7 +100,6 @@ module.exports.models = {
default: 'nuF29j3StsGhRTut9dIrCxCNyYegcwH30FxnZ3kkdiA=' default: 'nuF29j3StsGhRTut9dIrCxCNyYegcwH30FxnZ3kkdiA='
}, },
/*************************************************************************** /***************************************************************************
* * * *
* Whether or not implicit records for associations should be cleaned up * * Whether or not implicit records for associations should be cleaned up *
@ -120,5 +115,4 @@ module.exports.models = {
cascadeOnDestroy: true cascadeOnDestroy: true
}
};

View File

@ -93,7 +93,7 @@ module.exports.protocols = {
} }
} }
const EMAIL_REGEX = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i const EMAIL_REGEX = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/i
function validateEmail (email) { function validateEmail (email) {
return EMAIL_REGEX.test(email) return EMAIL_REGEX.test(email)

View File

@ -77,10 +77,8 @@ module.exports.routes = {
// ║║║║╣ ╠╩╗╠═╣║ ║║ ║╠╩╗╚═╗ // ║║║║╣ ╠╩╗╠═╣║ ║║ ║╠╩╗╚═╗
// ╚╩╝╚═╝╚═╝╩ ╩╚═╝╚═╝╩ ╩╚═╝ // ╚╩╝╚═╝╚═╝╩ ╩╚═╝╚═╝╩ ╩╚═╝
// ╔╦╗╦╔═╗╔═╗ // ╔╦╗╦╔═╗╔═╗
// ║║║║╚═╗║ // ║║║║╚═╗║
// ╩ ╩╩╚═╝╚═╝ // ╩ ╩╩╚═╝╚═╝
} }

View File

@ -34,7 +34,6 @@ module.exports.security = {
// allowCredentials: false, // allowCredentials: false,
// }, // },
/**************************************************************************** /****************************************************************************
* * * *
* By default, Sails' built-in CSRF protection is disabled to facilitate * * By default, Sails' built-in CSRF protection is disabled to facilitate *
@ -51,4 +50,4 @@ module.exports.security = {
// csrf: false // csrf: false
}; }

View File

@ -18,8 +18,7 @@ module.exports.session = {
* of your users, forcing them to log in again. * * of your users, forcing them to log in again. *
* * * *
***************************************************************************/ ***************************************************************************/
secret: 'b7f0374251c4d79227067c286fe97ea5', secret: 'b7f0374251c4d79227067c286fe97ea5'
/*************************************************************************** /***************************************************************************
* * * *
@ -36,4 +35,4 @@ module.exports.session = {
// return !!req.path.match(req._sails.LOOKS_LIKE_ASSET_RX); // return !!req.path.match(req._sails.LOOKS_LIKE_ASSET_RX);
// }, // },
}; }

View File

@ -29,7 +29,6 @@ module.exports.sockets = {
// transports: [ 'websocket' ], // transports: [ 'websocket' ],
/*************************************************************************** /***************************************************************************
* * * *
* `beforeConnect` * * `beforeConnect` *
@ -50,7 +49,6 @@ module.exports.sockets = {
// //
// }, // },
/*************************************************************************** /***************************************************************************
* * * *
* `afterDisconnect` * * `afterDisconnect` *
@ -68,7 +66,6 @@ module.exports.sockets = {
// //
// }, // },
/*************************************************************************** /***************************************************************************
* * * *
* Whether to expose a 'GET /__getcookie' route that sets an HTTP-only * * Whether to expose a 'GET /__getcookie' route that sets an HTTP-only *
@ -78,5 +75,4 @@ module.exports.sockets = {
// grant3rdPartyCookie: true, // grant3rdPartyCookie: true,
}
};

View File

@ -38,4 +38,4 @@ module.exports.views = {
layout: 'layouts/layout' layout: 'layouts/layout'
}; }

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/babel.js * https://sailsjs.com/anatomy/tasks/config/babel.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('babel', { grunt.config.set('babel', {
dist: { dist: {
options: { options: {
@ -25,7 +24,7 @@ module.exports = function(grunt) {
} }
] ]
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -50,5 +49,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-babel'); // grunt.loadNpmTasks('grunt-babel');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/clean.js * https://sailsjs.com/anatomy/tasks/config/clean.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('clean', { grunt.config.set('clean', {
dev: ['.tmp/public/**'], dev: ['.tmp/public/**'],
build: ['www'], build: ['www'],
@ -23,7 +22,7 @@ module.exports = function(grunt) {
'www/templates', 'www/templates',
'www/dependencies' 'www/dependencies'
] ]
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -48,5 +47,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-clean'); // grunt.loadNpmTasks('grunt-contrib-clean');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -10,8 +10,7 @@
* https://sailsjs.com/anatomy/tasks/config/coffee.js * https://sailsjs.com/anatomy/tasks/config/coffee.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('coffee', { grunt.config.set('coffee', {
dev: { dev: {
options: { options: {
@ -27,7 +26,7 @@ module.exports = function(grunt) {
ext: '.js' ext: '.js'
}] }]
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -52,5 +51,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-coffee'); // grunt.loadNpmTasks('grunt-contrib-coffee');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -10,8 +10,7 @@
* https://sailsjs.com/anatomy/tasks/config/concat.js * https://sailsjs.com/anatomy/tasks/config/concat.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('concat', { grunt.config.set('concat', {
js: { js: {
src: require('../pipeline').jsFilesToInject, src: require('../pipeline').jsFilesToInject,
@ -21,7 +20,7 @@ module.exports = function(grunt) {
src: require('../pipeline').cssFilesToInject, src: require('../pipeline').cssFilesToInject,
dest: '.tmp/public/concat/production.css' dest: '.tmp/public/concat/production.css'
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -46,5 +45,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-concat'); // grunt.loadNpmTasks('grunt-contrib-concat');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/copy.js * https://sailsjs.com/anatomy/tasks/config/copy.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('copy', { grunt.config.set('copy', {
dev: { dev: {
files: [{ files: [{
@ -35,8 +34,8 @@ module.exports = function(grunt) {
src: ['**/*'], src: ['**/*'],
dest: '.tmp/public/dist' dest: '.tmp/public/dist'
}] }]
}, }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -61,5 +60,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-copy'); // grunt.loadNpmTasks('grunt-contrib-copy');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -11,14 +11,13 @@
* https://sailsjs.com/anatomy/tasks/config/cssmin.js * https://sailsjs.com/anatomy/tasks/config/cssmin.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('cssmin', { grunt.config.set('cssmin', {
dist: { dist: {
src: ['.tmp/public/concat/production.css'], src: ['.tmp/public/concat/production.css'],
dest: '.tmp/public/min/production.min.css' dest: '.tmp/public/min/production.min.css'
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -43,5 +42,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-cssmin'); // grunt.loadNpmTasks('grunt-contrib-cssmin');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/hash.js * https://sailsjs.com/anatomy/tasks/config/hash.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('hash', { grunt.config.set('hash', {
options: { options: {
mapping: '', mapping: '',
@ -18,11 +17,11 @@ module.exports = function(grunt) {
destBasePath: '', destBasePath: '',
flatten: false, flatten: false,
hashLength: 8, hashLength: 8,
hashFunction: function(source, encoding){ hashFunction: function (source, encoding) {
if (!source || !encoding) { if (!source || !encoding) {
throw new Error('Consistency violation: Cannot compute unique hash for production .css/.js cache-busting suffix, because `source` and/or `encoding` are falsey-- but they should be truthy strings! Here they are, respectively:\nsource: '+require('util').inspect(source, {depth:null})+'\nencoding: '+require('util').inspect(encoding, {depth:null})); throw new Error('Consistency violation: Cannot compute unique hash for production .css/.js cache-busting suffix, because `source` and/or `encoding` are falsey-- but they should be truthy strings! Here they are, respectively:\nsource: ' + require('util').inspect(source, { depth: null }) + '\nencoding: ' + require('util').inspect(encoding, { depth: null }))
} }
return require('crypto').createHash('sha1').update(source, encoding).digest('hex'); return require('crypto').createHash('sha1').update(source, encoding).digest('hex')
} }
}, },
js: { js: {
@ -33,7 +32,7 @@ module.exports = function(grunt) {
src: '.tmp/public/min/*.css', src: '.tmp/public/min/*.css',
dest: '.tmp/public/hash/' dest: '.tmp/public/hash/'
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -58,5 +57,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-hash'); // grunt.loadNpmTasks('grunt-hash');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -10,8 +10,7 @@
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('jst', { grunt.config.set('jst', {
dev: { dev: {
@ -26,14 +25,13 @@ module.exports = function(grunt) {
// default interpolation. If you want to parse templates with the default _.template behavior // default interpolation. If you want to parse templates with the default _.template behavior
// (i.e. using <div><%= this.id %></div>), there's no need to overwrite `templateSettings.interpolate`. // (i.e. using <div><%= this.id %></div>), there's no need to overwrite `templateSettings.interpolate`.
files: { files: {
// e.g. // e.g.
// 'relative/path/from/gruntfile/to/compiled/template/destination' : ['relative/path/to/sourcefiles/**/*.html'] // 'relative/path/from/gruntfile/to/compiled/template/destination' : ['relative/path/to/sourcefiles/**/*.html']
'.tmp/public/jst.js': require('../pipeline').templateFilesToInject '.tmp/public/jst.js': require('../pipeline').templateFilesToInject
} }
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -58,5 +56,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-jst'); // grunt.loadNpmTasks('grunt-contrib-jst');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/less.js * https://sailsjs.com/anatomy/tasks/config/less.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('less', { grunt.config.set('less', {
dev: { dev: {
files: [{ files: [{
@ -21,7 +20,7 @@ module.exports = function(grunt) {
ext: '.css' ext: '.css'
}] }]
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -46,5 +45,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-less'); // grunt.loadNpmTasks('grunt-contrib-less');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -11,11 +11,9 @@
* https://sailsjs.com/anatomy/tasks/config/sails-linker.js * https://sailsjs.com/anatomy/tasks/config/sails-linker.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('sails-linker', { grunt.config.set('sails-linker', {
// ╦╔═╗╦ ╦╔═╗╔═╗╔═╗╦═╗╦╔═╗╔╦╗ // ╦╔═╗╦ ╦╔═╗╔═╗╔═╗╦═╗╦╔═╗╔╦╗
// ║╠═╣╚╗╔╝╠═╣╚═╗║ ╠╦╝║╠═╝ ║ // ║╠═╣╚╗╔╝╠═╣╚═╗║ ╠╦╝║╠═╝ ║
// ╚╝╩ ╩ ╚╝ ╩ ╩╚═╝╚═╝╩╚═╩╩ ╩ // ╚╝╩ ╩ ╚╝ ╩ ╩╚═╝╚═╝╩╚═╩╩ ╩
@ -41,7 +39,7 @@ module.exports = function(grunt) {
startTag: '<!--SCRIPTS-->', startTag: '<!--SCRIPTS-->',
endTag: '<!--SCRIPTS END-->', endTag: '<!--SCRIPTS END-->',
fileTmpl: '<script src="%s"></script>', fileTmpl: '<script src="%s"></script>',
appRoot: '.tmp/public', appRoot: '.tmp/public'
// relative: true // relative: true
// ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc. // ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc.
// (but be note that this can break custom font URLs) // (but be note that this can break custom font URLs)
@ -72,7 +70,7 @@ module.exports = function(grunt) {
startTag: '<!--SCRIPTS-->', startTag: '<!--SCRIPTS-->',
endTag: '<!--SCRIPTS END-->', endTag: '<!--SCRIPTS END-->',
fileTmpl: '<script src="%s"></script>', fileTmpl: '<script src="%s"></script>',
appRoot: '.tmp/public', appRoot: '.tmp/public'
// relative: true // relative: true
// ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc. // ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc.
// (but be note that this can break custom font URLs) // (but be note that this can break custom font URLs)
@ -84,7 +82,6 @@ module.exports = function(grunt) {
} }
}, },
// ╔═╗╔╦╗╦ ╦╦ ╔═╗╔═╗╦ ╦╔═╗╔═╗╔╦╗╔═╗ // ╔═╗╔╦╗╦ ╦╦ ╔═╗╔═╗╦ ╦╔═╗╔═╗╔╦╗╔═╗
// ╚═╗ ║ ╚╦╝║ ║╣ ╚═╗╠═╣║╣ ║╣ ║ ╚═╗ // ╚═╗ ║ ╚╦╝║ ║╣ ╚═╗╠═╣║╣ ║╣ ║ ╚═╗
// ╚═╝ ╩ ╩ ╩═╝╚═╝╚═╝╩ ╩╚═╝╚═╝ ╩ ╚═╝ // ╚═╝ ╩ ╩ ╩═╝╚═╝╚═╝╩ ╩╚═╝╚═╝ ╩ ╚═╝
@ -111,7 +108,7 @@ module.exports = function(grunt) {
startTag: '<!--STYLES-->', startTag: '<!--STYLES-->',
endTag: '<!--STYLES END-->', endTag: '<!--STYLES END-->',
fileTmpl: '<link rel="stylesheet" href="%s">', fileTmpl: '<link rel="stylesheet" href="%s">',
appRoot: '.tmp/public', appRoot: '.tmp/public'
// relative: true // relative: true
// ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc. // ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc.
// (but be note that this can break custom font URLs) // (but be note that this can break custom font URLs)
@ -143,7 +140,7 @@ module.exports = function(grunt) {
startTag: '<!--STYLES-->', startTag: '<!--STYLES-->',
endTag: '<!--STYLES END-->', endTag: '<!--STYLES END-->',
fileTmpl: '<link rel="stylesheet" href="%s">', fileTmpl: '<link rel="stylesheet" href="%s">',
appRoot: '.tmp/public', appRoot: '.tmp/public'
// relative: true // relative: true
// ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc. // ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc.
// (but be note that this can break custom font URLs) // (but be note that this can break custom font URLs)
@ -155,7 +152,6 @@ module.exports = function(grunt) {
} }
}, },
// ╔═╗╦═╗╔═╗╔═╗╔═╗╔╦╗╔═╗╦╦ ╔═╗╔╦╗ ╦ ╦╔╦╗╔╦╗╦ ╔╦╗╔═╗╔╦╗╔═╗╦ ╔═╗╔╦╗╔═╗╔═╗ // ╔═╗╦═╗╔═╗╔═╗╔═╗╔╦╗╔═╗╦╦ ╔═╗╔╦╗ ╦ ╦╔╦╗╔╦╗╦ ╔╦╗╔═╗╔╦╗╔═╗╦ ╔═╗╔╦╗╔═╗╔═╗
// ╠═╝╠╦╝║╣ ║ ║ ║║║║╠═╝║║ ║╣ ║║ ╠═╣ ║ ║║║║ ║ ║╣ ║║║╠═╝║ ╠═╣ ║ ║╣ ╚═╗ // ╠═╝╠╦╝║╣ ║ ║ ║║║║╠═╝║║ ║╣ ║║ ╠═╣ ║ ║║║║ ║ ║╣ ║║║╠═╝║ ╠═╣ ║ ║╣ ╚═╗
// ╩ ╩╚═╚═╝╚═╝╚═╝╩ ╩╩ ╩╩═╝╚═╝═╩╝ ╩ ╩ ╩ ╩ ╩╩═╝ ╩ ╚═╝╩ ╩╩ ╩═╝╩ ╩ ╩ ╚═╝╚═╝ // ╩ ╩╚═╚═╝╚═╝╚═╝╩ ╩╩ ╩╩═╝╚═╝═╩╝ ╩ ╩ ╩ ╩ ╩╩═╝ ╩ ╚═╝╩ ╩╩ ╩═╝╩ ╩ ╩ ╚═╝╚═╝
@ -180,7 +176,7 @@ module.exports = function(grunt) {
startTag: '<!--TEMPLATES-->', startTag: '<!--TEMPLATES-->',
endTag: '<!--TEMPLATES END-->', endTag: '<!--TEMPLATES END-->',
fileTmpl: '<script type="text/javascript" src="%s"></script>', fileTmpl: '<script type="text/javascript" src="%s"></script>',
appRoot: '.tmp/public', appRoot: '.tmp/public'
// relative: true // relative: true
// ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc. // ^^ Uncomment this if compiling assets for use in PhoneGap, CDN, etc.
// (but be note that this can break custom font URLs) // (but be note that this can break custom font URLs)
@ -190,9 +186,9 @@ module.exports = function(grunt) {
'views/**/*.html': ['.tmp/public/jst.js'], 'views/**/*.html': ['.tmp/public/jst.js'],
'views/**/*.ejs': ['.tmp/public/jst.js'] 'views/**/*.ejs': ['.tmp/public/jst.js']
} }
}, }
});//</ grunt.config.set() > })// </ grunt.config.set() >
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -217,5 +213,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-sails-linker'); // grunt.loadNpmTasks('grunt-sails-linker');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -10,8 +10,7 @@
* https://sailsjs.com/anatomy/tasks/config/sync.js * https://sailsjs.com/anatomy/tasks/config/sync.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('sync', { grunt.config.set('sync', {
dev: { dev: {
files: [{ files: [{
@ -20,7 +19,7 @@ module.exports = function(grunt) {
dest: '.tmp/public' dest: '.tmp/public'
}] }]
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -45,5 +44,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-sync'); // grunt.loadNpmTasks('grunt-sync');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/uglify.js * https://sailsjs.com/anatomy/tasks/config/uglify.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('uglify', { grunt.config.set('uglify', {
dist: { dist: {
src: ['.tmp/public/concat/production.js'], src: ['.tmp/public/concat/production.js'],
@ -24,7 +23,7 @@ module.exports = function(grunt) {
'Promise', 'Promise',
'File', 'File',
'Location', 'Location',
'RttcRefPlaceholder', 'RttcRefPlaceholder'
], ],
keep_fnames: true//eslint-disable-line keep_fnames: true//eslint-disable-line
}, },
@ -32,7 +31,7 @@ module.exports = function(grunt) {
keep_fnames: true//eslint-disable-line keep_fnames: true//eslint-disable-line
} }
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -57,6 +56,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-uglify'); // grunt.loadNpmTasks('grunt-contrib-uglify');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -9,8 +9,7 @@
* https://sailsjs.com/anatomy/tasks/config/watch.js * https://sailsjs.com/anatomy/tasks/config/watch.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.config.set('watch', { grunt.config.set('watch', {
assets: { assets: {
@ -27,7 +26,7 @@ module.exports = function(grunt) {
'linkAssets' 'linkAssets'
] ]
} }
}); })
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This Grunt plugin is part of the default asset pipeline in Sails, // This Grunt plugin is part of the default asset pipeline in Sails,
@ -52,5 +51,4 @@ module.exports = function(grunt) {
// grunt.loadNpmTasks('grunt-contrib-watch'); // grunt.loadNpmTasks('grunt-contrib-watch');
// ``` // ```
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
};

View File

@ -10,8 +10,6 @@
* https://sailsjs.com/anatomy/tasks/pipeline.js * https://sailsjs.com/anatomy/tasks/pipeline.js
*/ */
// ██████╗ ██╗ █████╗ ██╗███╗ ██╗ ██████╗███████╗███████╗ // ██████╗ ██╗ █████╗ ██╗███╗ ██╗ ██████╗███████╗███████╗
// ██╔══██╗██║ ██╔══██╗██║████╗ ██║ ██╔════╝██╔════╝██╔════╝ // ██╔══██╗██║ ██╔══██╗██║████╗ ██║ ██╔════╝██╔════╝██╔════╝
// ██████╔╝██║ ███████║██║██╔██╗ ██║ ██║ ███████╗███████╗ // ██████╔╝██║ ███████║██║██╔██╗ ██║ ██║ ███████╗███████╗
@ -40,8 +38,7 @@ var cssFilesToInject = [
// in no particular order. To customize the ordering, add additional // in no particular order. To customize the ordering, add additional
// items here, _above_ this one. // items here, _above_ this one.
'styles/**/*.css' 'styles/**/*.css'
]; ]
// ██████╗██╗ ██╗███████╗███╗ ██╗████████╗ ███████╗██╗██████╗ ███████╗ // ██████╗██╗ ██╗███████╗███╗ ██╗████████╗ ███████╗██╗██████╗ ███████╗
// ██╔════╝██║ ██║██╔════╝████╗ ██║╚══██╔══╝ ██╔════╝██║██╔══██╗██╔════╝ // ██╔════╝██║ ██║██╔════╝████╗ ██║╚══██╔══╝ ██╔════╝██║██╔══██╗██╔════╝
@ -73,8 +70,7 @@ var jsFilesToInject = [
// in no particular order. To customize the ordering, add additional items // in no particular order. To customize the ordering, add additional items
// here, _above_ this one. // here, _above_ this one.
'js/**/*.js' 'js/**/*.js'
]; ]
// ██████╗██╗ ██╗███████╗███╗ ██╗████████╗ ███████╗██╗██████╗ ███████╗ // ██████╗██╗ ██╗███████╗███╗ ██╗████████╗ ███████╗██╗██████╗ ███████╗
// ██╔════╝██║ ██║██╔════╝████╗ ██║╚══██╔══╝ ██╔════╝██║██╔══██╗██╔════╝ // ██╔════╝██║ ██║██╔════╝████╗ ██║╚══██╔══╝ ██╔════╝██║██╔══██╗██╔════╝
@ -103,9 +99,7 @@ var jsFilesToInject = [
// //
var templateFilesToInject = [ var templateFilesToInject = [
'templates/**/*.html' 'templates/**/*.html'
]; ]
// ███╗ ███╗██╗███████╗ ██████╗ ███████╗███████╗████████╗██╗ ██╗██████╗ // ███╗ ███╗██╗███████╗ ██████╗ ███████╗███████╗████████╗██╗ ██╗██████╗
// ████╗ ████║██║██╔════╝██╔════╝ ██╔════╝██╔════╝╚══██╔══╝██║ ██║██╔══██╗ // ████╗ ████║██║██╔════╝██╔════╝ ██╔════╝██╔════╝╚══██╔══╝██║ ██║██╔══██╗
@ -119,29 +113,29 @@ var templateFilesToInject = [
// the code below, unless you are modifying the default asset pipeline.** // the code below, unless you are modifying the default asset pipeline.**
// Default path for public folder (see documentation on sailsjs.com for more information) // Default path for public folder (see documentation on sailsjs.com for more information)
var tmpPath = '.tmp/public/'; var tmpPath = '.tmp/public/'
// Prefix relative paths to source files so they point to the proper locations // Prefix relative paths to source files so they point to the proper locations
// (i.e. where the other Grunt tasks spit them out, or in some cases, where // (i.e. where the other Grunt tasks spit them out, or in some cases, where
// they reside in the first place) // they reside in the first place)
module.exports.cssFilesToInject = cssFilesToInject.map((cssPath)=>{ module.exports.cssFilesToInject = cssFilesToInject.map((cssPath) => {
// If we're ignoring the file, make sure the ! is at the beginning of the path // If we're ignoring the file, make sure the ! is at the beginning of the path
if (cssPath[0] === '!') { if (cssPath[0] === '!') {
return require('path').join('!' + tmpPath, cssPath.substr(1)); return require('path').join('!' + tmpPath, cssPath.substr(1))
} }
return require('path').join(tmpPath, cssPath); return require('path').join(tmpPath, cssPath)
}); })
module.exports.jsFilesToInject = jsFilesToInject.map((jsPath)=>{ module.exports.jsFilesToInject = jsFilesToInject.map((jsPath) => {
// If we're ignoring the file, make sure the ! is at the beginning of the path // If we're ignoring the file, make sure the ! is at the beginning of the path
if (jsPath[0] === '!') { if (jsPath[0] === '!') {
return require('path').join('!' + tmpPath, jsPath.substr(1)); return require('path').join('!' + tmpPath, jsPath.substr(1))
} }
return require('path').join(tmpPath, jsPath); return require('path').join(tmpPath, jsPath)
}); })
module.exports.templateFilesToInject = templateFilesToInject.map((tplPath)=>{ module.exports.templateFilesToInject = templateFilesToInject.map((tplPath) => {
// If we're ignoring the file, make sure the ! is at the beginning of the path // If we're ignoring the file, make sure the ! is at the beginning of the path
if (tplPath[0] === '!') { if (tplPath[0] === '!') {
return require('path').join('!assets/', tplPath.substr(1)); return require('path').join('!assets/', tplPath.substr(1))
} }
return require('path').join('assets/', tplPath); return require('path').join('assets/', tplPath)
}); })

View File

@ -10,7 +10,7 @@
* https://sailsjs.com/anatomy/tasks/register/build.js * https://sailsjs.com/anatomy/tasks/register/build.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('build', [ grunt.registerTask('build', [
// 'polyfill:dev', //« uncomment to ALSO transpile during development (for broader browser compat.) // 'polyfill:dev', //« uncomment to ALSO transpile during development (for broader browser compat.)
'compileAssets', 'compileAssets',
@ -18,5 +18,5 @@ module.exports = function(grunt) {
'linkAssetsBuild', 'linkAssetsBuild',
'clean:build', 'clean:build',
'copy:build' 'copy:build'
]); ])
}; }

View File

@ -11,20 +11,19 @@
* https://sailsjs.com/anatomy/tasks/register/build-prod.js * https://sailsjs.com/anatomy/tasks/register/build-prod.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('buildProd', [ grunt.registerTask('buildProd', [
'polyfill:prod', //« Remove this to skip transpilation in production (not recommended) 'polyfill:prod', // « Remove this to skip transpilation in production (not recommended)
'compileAssets', 'compileAssets',
'babel', //« Remove this to skip transpilation in production (not recommended) 'babel', // « Remove this to skip transpilation in production (not recommended)
'concat', 'concat',
'uglify', 'uglify',
'cssmin', 'cssmin',
'hash',//« Cache-busting 'hash', // « Cache-busting
'copy:beforeLinkBuildProd',//« For prettier URLs after cache-busting 'copy:beforeLinkBuildProd', // « For prettier URLs after cache-busting
'linkAssetsBuildProd', 'linkAssetsBuildProd',
'clean:build', 'clean:build',
'copy:build', 'copy:build',
'clean:afterBuildProd' 'clean:afterBuildProd'
]); ])
}; }

View File

@ -7,12 +7,12 @@
* https://sailsjs.com/anatomy/tasks/register/compile-assets.js * https://sailsjs.com/anatomy/tasks/register/compile-assets.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('compileAssets', [ grunt.registerTask('compileAssets', [
'clean:dev', 'clean:dev',
'jst:dev', 'jst:dev',
'less:dev', 'less:dev',
'copy:dev', 'copy:dev',
'coffee:dev' 'coffee:dev'
]); ])
}; }

View File

@ -13,15 +13,11 @@
* *
*/ */
module.exports = function (grunt) { module.exports = function (grunt) {
grunt.registerTask('default', [ grunt.registerTask('default', [
// 'polyfill:dev', //« uncomment to ALSO transpile during development (for broader browser compat.) // 'polyfill:dev', //« uncomment to ALSO transpile during development (for broader browser compat.)
'compileAssets', 'compileAssets',
// 'babel', //« uncomment to ALSO transpile during development (for broader browser compat.) // 'babel', //« uncomment to ALSO transpile during development (for broader browser compat.)
'linkAssets', 'linkAssets',
'watch' 'watch'
]); ])
}
};

View File

@ -7,10 +7,10 @@
* https://sailsjs.com/anatomy/tasks/register/link-assets.js * https://sailsjs.com/anatomy/tasks/register/link-assets.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('linkAssets', [ grunt.registerTask('linkAssets', [
'sails-linker:devJs', 'sails-linker:devJs',
'sails-linker:devStyles', 'sails-linker:devStyles',
'sails-linker:clientSideTemplates' 'sails-linker:clientSideTemplates'
]); ])
}; }

View File

@ -7,10 +7,10 @@
* https://sailsjs.com/anatomy/tasks/register/link-assets-build.js * https://sailsjs.com/anatomy/tasks/register/link-assets-build.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('linkAssetsBuild', [ grunt.registerTask('linkAssetsBuild', [
'sails-linker:devJsBuild', 'sails-linker:devJsBuild',
'sails-linker:devStylesBuild', 'sails-linker:devStylesBuild',
'sails-linker:clientSideTemplatesBuild' 'sails-linker:clientSideTemplatesBuild'
]); ])
}; }

View File

@ -7,10 +7,10 @@
* https://sailsjs.com/anatomy/tasks/register/link-assets-build-prod.js * https://sailsjs.com/anatomy/tasks/register/link-assets-build-prod.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('linkAssetsBuildProd', [ grunt.registerTask('linkAssetsBuildProd', [
'sails-linker:prodJsBuild', 'sails-linker:prodJsBuild',
'sails-linker:prodStylesBuild', 'sails-linker:prodStylesBuild',
'sails-linker:clientSideTemplatesBuild' 'sails-linker:clientSideTemplatesBuild'
]); ])
}; }

View File

@ -7,22 +7,21 @@
* https://sailsjs.com/anatomy/tasks/register/polyfill.js * https://sailsjs.com/anatomy/tasks/register/polyfill.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('polyfill:prod', 'Add the polyfill file to the top of the list of files to concatenate', ()=>{ grunt.registerTask('polyfill:prod', 'Add the polyfill file to the top of the list of files to concatenate', () => {
grunt.config.set('concat.js.src', [require('sails-hook-grunt/accessible/babel-polyfill')].concat(grunt.config.get('concat.js.src'))); grunt.config.set('concat.js.src', [require('sails-hook-grunt/accessible/babel-polyfill')].concat(grunt.config.get('concat.js.src')))
}); })
grunt.registerTask('polyfill:dev', 'Add the polyfill file to the top of the list of files to copy and link', ()=>{ grunt.registerTask('polyfill:dev', 'Add the polyfill file to the top of the list of files to copy and link', () => {
grunt.config.set('copy.dev.files', grunt.config.get('copy.dev.files').concat({ grunt.config.set('copy.dev.files', grunt.config.get('copy.dev.files').concat({
expand: true, expand: true,
cwd: require('path').dirname(require('sails-hook-grunt/accessible/babel-polyfill')), cwd: require('path').dirname(require('sails-hook-grunt/accessible/babel-polyfill')),
src: require('path').basename(require('sails-hook-grunt/accessible/babel-polyfill')), src: require('path').basename(require('sails-hook-grunt/accessible/babel-polyfill')),
dest: '.tmp/public/polyfill' dest: '.tmp/public/polyfill'
})); }))
var devLinkFiles = grunt.config.get('sails-linker.devJs.files'); var devLinkFiles = grunt.config.get('sails-linker.devJs.files')
grunt.config.set('sails-linker.devJs.files', Object.keys(devLinkFiles).reduce((linkerConfigSoFar, glob)=>{ grunt.config.set('sails-linker.devJs.files', Object.keys(devLinkFiles).reduce((linkerConfigSoFar, glob) => {
linkerConfigSoFar[glob] = ['.tmp/public/polyfill/polyfill.min.js'].concat(devLinkFiles[glob]); linkerConfigSoFar[glob] = ['.tmp/public/polyfill/polyfill.min.js'].concat(devLinkFiles[glob])
return linkerConfigSoFar; return linkerConfigSoFar
}, {})); }, {}))
}); })
}; }

View File

@ -11,17 +11,16 @@
* https://sailsjs.com/anatomy/tasks/register/prod.js * https://sailsjs.com/anatomy/tasks/register/prod.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('prod', [ grunt.registerTask('prod', [
'polyfill:prod', //« Remove this to skip transpilation in production (not recommended) 'polyfill:prod', // « Remove this to skip transpilation in production (not recommended)
'compileAssets', 'compileAssets',
'babel', //« Remove this to skip transpilation in production (not recommended) 'babel', // « Remove this to skip transpilation in production (not recommended)
'concat', 'concat',
'uglify', 'uglify',
'cssmin', 'cssmin',
'sails-linker:prodJs', 'sails-linker:prodJs',
'sails-linker:prodStyles', 'sails-linker:prodStyles',
'sails-linker:clientSideTemplates', 'sails-linker:clientSideTemplates'
]); ])
}; }

View File

@ -7,11 +7,11 @@
* https://sailsjs.com/anatomy/tasks/register/sync-assets.js * https://sailsjs.com/anatomy/tasks/register/sync-assets.js
* *
*/ */
module.exports = function(grunt) { module.exports = function (grunt) {
grunt.registerTask('syncAssets', [ grunt.registerTask('syncAssets', [
'jst:dev', 'jst:dev',
'less:dev', 'less:dev',
'sync:dev', 'sync:dev',
'coffee:dev' 'coffee:dev'
]); ])
}; }