UNPKG

sails-generate

Version:
507 lines (427 loc) 40.8 kB
/** * Module dependencies */ var path = require('path'); var crypto = require('crypto'); /** * sails-generate-new * * Usage: * `sails new foo` * * @type {Dictionary} */ module.exports = { templatesDirectory: path.resolve(__dirname,'./templates'), // scopeExample: { // // Required: // args: ['my-new-app'], // rootPath: '/Users/mikermcneil/code', // sailsRoot: '/usr/local/lib/node_modules/sails', // // // Automatic (but can be manually overridden:) // appName: 'my-new-app', // templatesDirectory: '/usr/local/lib/node_modules/sails/node_modules/sails-generate/node_modules/sails-generate-new/templates', // }, before: require('./before'), after: require('./after'), targets: { '.': [ // ██████╗ ██████╗ ██╗ ██╗███╗ ██╗████████╗███████╗██╗██╗ ███████╗ // ██╔════╝ ██╔══██╗██║ ██║████╗ ██║╚══██╔══╝██╔════╝██║██║ ██╔════╝ // ██║ ███╗██████╔╝██║ ██║██╔██╗ ██║ ██║ █████╗ ██║██║ █████╗ // ██║ ██║██╔══██╗██║ ██║██║╚██╗██║ ██║ ██╔══╝ ██║██║ ██╔══╝ // ╚██████╔╝██║ ██║╚██████╔╝██║ ╚████║ ██║ ██║ ██║███████╗███████╗ // ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝ // { overridable: 'gruntfile', generator: { targets: { './Gruntfile.js': { template: 'Gruntfile.js.template' }, './tasks': { folder: {} }, './tasks/config': { folder: {} }, './tasks/register': { folder: {} }, } } },//</gruntfile> // ██████╗ █████╗ ██████╗██╗ ██╗███████╗███╗ ██╗██████╗ // ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝████╗ ██║██╔══██╗ // ██████╔╝███████║██║ █████╔╝ █████╗ ██╔██╗ ██║██║ ██║ // ██╔══██╗██╔══██║██║ ██╔═██╗ ██╔══╝ ██║╚██╗██║██║ ██║ // ██████╔╝██║ ██║╚██████╗██║ ██╗███████╗██║ ╚████║██████╔╝ // ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚═════╝ // { overridable: 'backend', generator: { before: function(scope, cb) { // ┌┐ ┌─┐┬┌─┌─┐ ┌─┐ ┬─┐┌─┐┌┐┌┌┬┐┌─┐┌┬┐ ┌┬┐┌─┐┌┬┐┌─┐ ┌─┐┌┐┌┌─┐┬─┐┬ ┬┌─┐┌┬┐┬┌─┐┌┐┌ ┬┌─┌─┐┬ ┬ // ├┴┐├─┤├┴┐├┤ ├─┤ ├┬┘├─┤│││ │││ ││││ ││├─┤ │ ├─┤ ├┤ ││││ ├┬┘└┬┘├─┘ │ ││ ││││ ├┴┐├┤ └┬┘ // └─┘┴ ┴┴ ┴└─┘ ┴ ┴ ┴└─┴ ┴┘└┘─┴┘└─┘┴ ┴ ─┴┘┴ ┴ ┴ ┴ ┴ └─┘┘└┘└─┘┴└─ ┴ ┴ ┴ ┴└─┘┘└┘ ┴ ┴└─┘ ┴ // ┌─ ┌─┐┌─┐┬─┐ ╔╦╗╔═╗╔╦╗╔═╗╦ ╔═╗ ╦╔═╗ ─┐ // │─── ├┤ │ │├┬┘ ║║║║ ║ ║║║╣ ║ ╚═╗ ║╚═╗ ───│ // └─ └ └─┘┴└─ ╩ ╩╚═╝═╩╝╚═╝╩═╝╚═╝o╚╝╚═╝ ─┘ // Now bake up a data encryption key to inject into our `config/models.js` file. // > e.g. 'DPjGWuGIfZuUPmSEuMtyXoO0zN9UG52vU1zoV0F2X1k=' // Generate a cryptographically random 32 byte key string to use as this new app's // default DEK during development. scope.defaultDEK = crypto.randomBytes(32).toString('base64'); // ┌┐ ┌─┐┬┌─┌─┐ ┌─┐ ┬─┐┌─┐┌┐┌┌┬┐┌─┐┌┬┐ ┌─┐┌─┐┌─┐┌─┐┬┌─┐┌┐┌ ┌─┐┌─┐┌─┐┬─┐┌─┐┌┬┐ // ├┴┐├─┤├┴┐├┤ ├─┤ ├┬┘├─┤│││ │││ ││││ └─┐├┤ └─┐└─┐││ ││││ └─┐├┤ │ ├┬┘├┤ │ // └─┘┴ ┴┴ ┴└─┘ ┴ ┴ ┴└─┴ ┴┘└┘─┴┘└─┘┴ ┴ └─┘└─┘└─┘└─┘┴└─┘┘└┘ └─┘└─┘└─┘┴└─└─┘ ┴ // ┌─ ┌─┐┌─┐┬─┐ ╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╗╔ ╦╔═╗ ─┐ // │─── ├┤ │ │├┬┘ ╚═╗║╣ ╚═╗╚═╗║║ ║║║║ ║╚═╗ ───│ // └─ └ └─┘┴└─ ╚═╝╚═╝╚═╝╚═╝╩╚═╝╝╚╝o╚╝╚═╝ ─┘ // Now bake up a session secret to inject into our `config/session.js` file. // Combine random and case-specific factors into a base string // (creation date, random number, and Node.js version string) var baseStringToHash = ''; baseStringToHash += Date.now(); baseStringToHash += crypto.randomBytes(64).toString('hex'); baseStringToHash += process.version; // Now cook up some hash using the base string. // > This will be used as the session secret we inject into the `config/session.js` file. scope.secret = crypto.createHash('md5').update(baseStringToHash).digest('hex'); // Continue onwards to generate all those exciting files. return cb(); }, targets: { // ██╗ ██╗██╗███████╗██╗ ██╗███████╗ // ██║ ██║██║██╔════╝██║ ██║██╔════╝ // ██║ ██║██║█████╗ ██║ █╗ ██║███████╗ // ╚██╗ ██╔╝██║██╔══╝ ██║███╗██║╚════██║ // ╚████╔╝ ██║███████╗╚███╔███╔╝███████║ // ╚═══╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚══════╝ // // Call out to `sails-generate-views`. '.': [ { overridable: 'views', generator: { targets: { './views/.eslintrc': { copy: 'views/eslintrc-override-for-inline-script-tags.template' }, './views/498.ejs': { onlyIf: 'caviar', copy: 'views/498.ejs' }, './views/404.ejs': { copy: 'views/404.ejs', overridable: '404' }, './views/500.ejs': { copy: 'views/500.ejs', overridable: '500' }, './views/layouts': { folder: {} }, './views/layouts/layout.ejs': { copy: 'views/traditional-layout.ejs', overridable: 'layout' }, './views/layouts/layout-email.ejs': { onlyIf: 'caviar', copy: 'views/layout-email.ejs', overridable: 'layout-email' }, './views/emails': { onlyIf: 'caviar', folder: {} }, './views/emails/internal': { onlyIf: 'caviar', folder: {} }, './views/emails/internal/email-contact-form.ejs': { onlyIf: 'caviar', copy: 'views/emails/internal/email-contact-form.ejs' }, './views/emails/email-reset-password.ejs': { onlyIf: 'caviar', copy: 'views/emails/email-reset-password.ejs' }, './views/emails/email-verify-account.ejs': { onlyIf: 'caviar', copy: 'views/emails/email-verify-account.ejs' }, './views/emails/email-verify-new-email.ejs': { onlyIf: 'caviar', copy: 'views/emails/email-verify-new-email.ejs' }, './views/pages': { folder: {} }, './views/pages/homepage.ejs': { copy: 'views/homepage.ejs', overridable: 'homepage' }, './views/pages/account': { onlyIf: 'caviar', folder: {} }, './views/pages/account/edit-password.ejs': { onlyIf: 'caviar', copy: 'views/pages/account/edit-password.ejs' }, './views/pages/account/account-overview.ejs': { onlyIf: 'caviar', copy: 'views/pages/account/account-overview.ejs' }, './views/pages/account/edit-profile.ejs': { onlyIf: 'caviar', copy: 'views/pages/account/edit-profile.ejs' }, './views/pages/contact.ejs': { onlyIf: 'caviar', copy: 'views/pages/contact.ejs' }, './views/pages/dashboard': { onlyIf: 'caviar', folder: {} }, './views/pages/dashboard/welcome.ejs': { onlyIf: 'caviar', copy: 'views/pages/dashboard/welcome.ejs' }, './views/pages/entrance': { onlyIf: 'caviar', folder: {} }, './views/pages/entrance/confirmed-email.ejs': { onlyIf: 'caviar', copy: 'views/pages/entrance/confirmed-email.ejs' }, './views/pages/entrance/forgot-password.ejs': { onlyIf: 'caviar', copy: 'views/pages/entrance/forgot-password.ejs' }, './views/pages/entrance/login.ejs': { onlyIf: 'caviar', copy: 'views/pages/entrance/login.ejs' }, './views/pages/entrance/new-password.ejs': { onlyIf: 'caviar', copy: 'views/pages/entrance/new-password.ejs' }, './views/pages/entrance/signup.ejs': { onlyIf: 'caviar', copy: 'views/pages/entrance/signup.ejs' }, './views/pages/faq.ejs': { onlyIf: 'caviar', copy: 'views/pages/faq.ejs' }, './views/pages/legal': { onlyIf: 'caviar', folder: {} }, './views/pages/legal/privacy.ejs': { onlyIf: 'caviar', copy: 'views/pages/legal/privacy.ejs' }, './views/pages/legal/terms.ejs': { onlyIf: 'caviar', copy: 'views/pages/legal/terms.ejs' }, }//</targets> } }//</views> ], // /api './api/controllers': { folder: {} }, './api/controllers/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template' }, './api/controllers/view-faq.js': { onlyIf: 'caviar', copy: 'api/controllers/view-faq.js' }, './api/controllers/view-contact.js': { onlyIf: 'caviar', copy: 'api/controllers/view-contact.js.template' }, './api/controllers/observe-my-session.js': { onlyIf: 'caviar', copy: 'api/controllers/observe-my-session.js' }, './api/controllers/account': { onlyIf: 'caviar', folder: {} }, './api/controllers/account/logout.js': { onlyIf: 'caviar', copy: 'api/controllers/account/logout.js.template' }, './api/controllers/account/update-billing-card.js': { onlyIf: 'caviar', copy: 'api/controllers/account/update-billing-card.js.template' }, './api/controllers/account/update-password.js': { onlyIf: 'caviar', copy: 'api/controllers/account/update-password.js.template' }, './api/controllers/account/update-profile.js': { onlyIf: 'caviar', copy: 'api/controllers/account/update-profile.js.template' }, './api/controllers/account/view-edit-password.js': { onlyIf: 'caviar', copy: 'api/controllers/account/view-edit-password.js.template' }, './api/controllers/account/view-account-overview.js': { onlyIf: 'caviar', copy: 'api/controllers/account/view-account-overview.js.template' }, './api/controllers/account/view-edit-profile.js': { onlyIf: 'caviar', copy: 'api/controllers/account/view-edit-profile.js.template' }, './api/controllers/dashboard': { onlyIf: 'caviar', folder: {} }, './api/controllers/dashboard/view-welcome.js': { onlyIf: 'caviar', copy: 'api/controllers/dashboard/view-welcome.js' }, './api/controllers/entrance': { onlyIf: 'caviar', folder: {} }, './api/controllers/entrance/confirm-email.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/confirm-email.js.template' }, './api/controllers/entrance/login.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/login.js.template' }, './api/controllers/entrance/send-password-recovery-email.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/send-password-recovery-email.js.template' }, './api/controllers/entrance/signup.js': { onlyIf: 'caviar', template: 'api/controllers/entrance/signup.js.template' }, './api/controllers/entrance/update-password-and-login.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/update-password-and-login.js.template' }, './api/controllers/entrance/view-confirmed-email.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/view-confirmed-email.js.template' }, './api/controllers/entrance/view-forgot-password.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/view-forgot-password.js.template' }, './api/controllers/entrance/view-login.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/view-login.js.template' }, './api/controllers/entrance/view-new-password.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/view-new-password.js.template' }, './api/controllers/entrance/view-signup.js': { onlyIf: 'caviar', copy: 'api/controllers/entrance/view-signup.js.template' }, './api/controllers/legal/view-privacy.js': { onlyIf: 'caviar', copy: 'api/controllers/legal/view-privacy.js' }, './api/controllers/legal/view-terms.js': { onlyIf: 'caviar', copy: 'api/controllers/legal/view-terms.js' }, './api/controllers/deliver-contact-form-message.js': { onlyIf: 'caviar', copy: 'api/controllers/deliver-contact-form-message.js.template' }, './api/controllers/view-homepage-or-redirect.js': { onlyIf: 'caviar', copy: 'api/controllers/view-homepage-or-redirect.js.template' }, './api/models': { folder: {}, overridable: 'api/models' }, './api/models/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template', overridable: 'api/models/.gitkeep' }, './api/models/User.js': { onlyIf: 'caviar', copy: 'api/models/User.js.template' }, './api/helpers': { folder: {} }, './api/helpers/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template' }, './api/helpers/send-template-email.js': { onlyIf: 'caviar', copy: 'api/helpers/send-template-email.js.template' }, './api/helpers/redact-user.js': { onlyIf: 'caviar', copy: 'api/helpers/redact-user.js.template' }, './api/helpers/broadcast-session-change.js': { onlyIf: 'caviar', copy: 'api/helpers/broadcast-session-change.js.template' }, './api/responses': { onlyIf: 'caviar', folder: {} }, './api/responses/unauthorized.js': { onlyIf: 'caviar', copy: 'api/responses/unauthorized.js' }, './api/responses/expired.js': { onlyIf: 'caviar', copy: 'api/responses/expired.js' }, './api/policies': { folder: {}, overridable: 'api/policies' }, './api/policies/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template', overridable: 'api/policies' }, './api/policies/is-logged-in.js': { onlyIf: 'caviar', copy: 'api/policies/is-logged-in.js', overridable: 'api/policies/is-logged-in.js' }, './api/policies/is-super-admin.js': { onlyIf: 'caviar', copy: 'api/policies/is-super-admin.js', overridable: 'api/policies/is-super-admin.js' }, './api/hooks': { onlyIf: 'caviar', folder: {} }, './api/hooks/custom': { onlyIf: 'caviar', folder: {} }, './api/hooks/custom/index.js': { onlyIf: 'caviar', copy: 'api/hooks/custom/index.js.template' }, // /config './config': { folder: {} }, './config/blueprints.js': { template: 'config/blueprints.js', overridable: 'config/blueprints.js' }, './config/bootstrap.js': { template: 'config/bootstrap.js.template' }, './config/datastores.js': { copy: 'config/datastores.js', overridable: 'config/datastores.js' }, './config/globals.js': { template: 'config/globals.js.template' }, './config/http.js': { copy: 'config/http.js' }, './config/i18n.js': { copy: 'config/i18n.js', overridable: 'config/i18n.js' }, './config/log.js': { copy: 'config/log.js' }, './config/models.js': { template: 'config/models.js.template', overridable: 'config/models.js' }, './config/policies.js': { template: 'config/policies.js.template', overridable: 'config/policies.js' }, './config/routes.js': { template: 'config/routes.js.template' }, './config/security.js': { template: 'config/security.js.template', overridable: 'config/security.js' }, './config/session.js': { template: 'config/session.js', overridable: 'config/session.js' }, './config/sockets.js': { copy: 'config/sockets.js', overridable: 'config/sockets.js' }, './config/views.js': { template: 'config/views.js', overridable: 'config/views.js' }, './config/custom.js': { template: 'config/custom.js.template' }, './config/local.js': { copy: 'config/local.js' }, './config/env/production.js': { template: 'config/env/production.js.template' }, './config/env/staging.js': { onlyIf: 'caviar', template: 'config/env/staging.js.template' }, './config/locales/de.json': { copy: 'config/locales/de.json', overridable: 'config/locales/de.json' }, './config/locales/en.json': { copy: 'config/locales/en.json', overridable: 'config/locales/en.json' }, './config/locales/es.json': { copy: 'config/locales/es.json', overridable: 'config/locales/es.json' }, './config/locales/fr.json': { copy: 'config/locales/fr.json', overridable: 'config/locales/fr.json' }, } } },//</backend> // ███████╗██████╗ ██████╗ ███╗ ██╗████████╗███████╗███╗ ██╗██████╗ // ██╔════╝██╔══██╗██╔═══██╗████╗ ██║╚══██╔══╝██╔════╝████╗ ██║██╔══██╗ // █████╗ ██████╔╝██║ ██║██╔██╗ ██║ ██║ █████╗ ██╔██╗ ██║██║ ██║ // ██╔══╝ ██╔══██╗██║ ██║██║╚██╗██║ ██║ ██╔══╝ ██║╚██╗██║██║ ██║ // ██║ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ███████╗██║ ╚████║██████╔╝ // ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚═════╝ // { overridable: 'frontend', generator: { targets: { // ╦═╗╔═╗╔╗ ╦ ╦╦╦ ╔╦╗ ╔═╗╦ ╔═╗╦ ╦╔╦╗ ╔═╗╔╦╗╦╔═ ┌─┐┌─┐┬─┐┬┌─┐┌┬┐ // ╠╦╝║╣ ╠╩╗║ ║║║ ║║───║ ║ ║ ║║ ║ ║║───╚═╗ ║║╠╩╗ └─┐│ ├┬┘│├─┘ │ // ╩╚═╚═╝╚═╝╚═╝╩╩═╝═╩╝ ╚═╝╩═╝╚═╝╚═╝═╩╝ ╚═╝═╩╝╩ ╩ └─┘└─┘┴└─┴┴ ┴ './scripts/rebuild-cloud-sdk.js': { onlyIf: 'caviar', copy: 'scripts/rebuild-cloud-sdk.js' }, // ╔═╗╔═╗╔═╗╔═╗╔╦╗╔═╗ // ╠═╣╚═╗╚═╗║╣ ║ ╚═╗ // ╩ ╩╚═╝╚═╝╚═╝ ╩ ╚═╝ // Default assets folder and contents: './assets': { overridable: 'assets', generator: { targets: { '.': { folder: {} }, './favicon.ico': { copy: 'assets/favicon.ico' }, './.eslintrc': { template: 'assets/eslintrc-override.template' }, './images': { folder: {} }, './images/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template' }, './images/logo.png': { onlyIf: 'caviar', copy: 'assets/images/logo.png' }, './images/icon-close.png': { onlyIf: 'caviar', copy: 'assets/images/icon-close.png' }, './images/hero-cloud.png': { onlyIf: 'caviar', copy: 'assets/images/hero-cloud.png' }, './images/hero-ship.png': { onlyIf: 'caviar', copy: 'assets/images/hero-ship.png' }, './images/hero-sky.png': { onlyIf: 'caviar', copy: 'assets/images/hero-sky.png' }, './images/hero-water.png': { onlyIf: 'caviar', copy: 'assets/images/hero-water.png' }, './images/setup-email.png': { onlyIf: 'caviar', copy: 'assets/images/setup-email.png' }, './images/setup-payment.png': { onlyIf: 'caviar', copy: 'assets/images/setup-payment.png' }, './images/setup-customize.png': { onlyIf: 'caviar', copy: 'assets/images/setup-customize.png' }, './styles': { folder: {} }, './styles/importer.less': { template: 'assets/styles/importer.less.template' }, './styles/layout.less': { onlyIf: 'caviar', copy: 'assets/styles/layout.less' }, './styles/bootstrap-overrides.less': { onlyIf: 'caviar', copy: 'assets/styles/bootstrap-overrides.less' }, './styles/components': { onlyIf: 'caviar', folder: {} }, './styles/components/ajax-button.component.less': { onlyIf: 'caviar', copy: 'assets/styles/components/ajax-button.component.less' }, './styles/components/modal.component.less': { onlyIf: 'caviar', copy: 'assets/styles/components/modal.component.less' }, './styles/components/cloud-error.component.less': { onlyIf: 'caviar', copy: 'assets/styles/components/cloud-error.component.less' }, './styles/components/stripe-card-element.component.less': { onlyIf: 'caviar', copy: 'assets/styles/components/stripe-card-element.component.less' }, './styles/pages': { onlyIf: 'caviar', folder: {} }, './styles/pages/account': { onlyIf: 'caviar', folder: {} }, './styles/pages/account/edit-password.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/account/edit-password.less' }, './styles/pages/account/account-overview.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/account/account-overview.less' }, './styles/pages/account/edit-profile.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/account/edit-profile.less' }, './styles/pages/contact.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/contact.less' }, './styles/pages/entrance': { onlyIf: 'caviar', folder: {} }, './styles/pages/entrance/confirmed-email.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/entrance/confirmed-email.less' }, './styles/pages/entrance/forgot-password.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/entrance/forgot-password.less' }, './styles/pages/entrance/login.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/entrance/login.less' }, './styles/pages/entrance/new-password.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/entrance/new-password.less' }, './styles/pages/entrance/signup.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/entrance/signup.less' }, './styles/pages/faq.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/faq.less' }, './styles/pages/homepage.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/homepage.less' }, './styles/pages/legal': { onlyIf: 'caviar', folder: {} }, './styles/pages/legal/privacy.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/legal/privacy.less' }, './styles/pages/legal/terms.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/legal/terms.less' }, './styles/pages/dashboard': { onlyIf: 'caviar', folder: {} }, './styles/pages/dashboard/welcome.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/dashboard/welcome.less' }, './styles/pages/498.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/498.less' }, './styles/pages/404.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/404.less' }, './styles/pages/500.less': { onlyIf: 'caviar', copy: 'assets/styles/pages/500.less' }, './styles/mixins-and-variables': { onlyIf: 'caviar', folder: {} }, './styles/mixins-and-variables/containers.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/containers.less' }, './styles/mixins-and-variables/animations.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/animations.less' }, './styles/mixins-and-variables/buttons.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/buttons.less' }, './styles/mixins-and-variables/colors.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/colors.less' }, './styles/mixins-and-variables/typography.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/typography.less' }, './styles/mixins-and-variables/truncate.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/truncate.less' }, './styles/mixins-and-variables/index.less': { onlyIf: 'caviar', copy: 'assets/styles/mixins-and-variables/index.less' }, './templates': { folder: {} }, './templates/.gitkeep': { copy: '../../../shared-templates/gitkeep.template' }, './js': { folder: {} }, './js/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template' }, './js/cloud.setup.js': { onlyIf: 'caviar', copy: 'assets/js/cloud.setup.js' }, './js/components': { onlyIf: 'caviar', folder: {} }, './js/components/modal.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/modal.component.js' }, './js/components/cloud-error.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/cloud-error.component.js' }, './js/components/ajax-button.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/ajax-button.component.js' }, './js/components/ajax-form.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/ajax-form.component.js' }, './js/components/stripe-card-element.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/stripe-card-element.component.js' }, './js/components/js-timestamp.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/js-timestamp.component.js' }, './js/components/account-notification-banner.component.js': { onlyIf: 'caviar', copy: 'assets/js/components/account-notification-banner.component.js' }, './js/pages': { onlyIf: 'caviar', folder: {} }, './js/pages/account': { onlyIf: 'caviar', folder: {} }, './js/pages/account/edit-password.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/account/edit-password.page.js' }, './js/pages/account/account-overview.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/account/account-overview.page.js' }, './js/pages/account/edit-profile.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/account/edit-profile.page.js' }, './js/pages/contact.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/contact.page.js' }, './js/pages/dashboard': { onlyIf: 'caviar', folder: {} }, './js/pages/dashboard/welcome.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/dashboard/welcome.page.js' }, './js/pages/entrance': { onlyIf: 'caviar', folder: {} }, './js/pages/entrance/confirmed-email.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/entrance/confirmed-email.page.js' }, './js/pages/entrance/forgot-password.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/entrance/forgot-password.page.js' }, './js/pages/entrance/login.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/entrance/login.page.js' }, './js/pages/entrance/new-password.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/entrance/new-password.page.js' }, './js/pages/entrance/signup.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/entrance/signup.page.js' }, './js/pages/faq.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/faq.page.js' }, './js/pages/homepage.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/homepage.page.js' }, './js/pages/legal': { onlyIf: 'caviar', folder: {} }, './js/pages/legal/privacy.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/legal/privacy.page.js' }, './js/pages/legal/terms.page.js': { onlyIf: 'caviar', copy: 'assets/js/pages/legal/terms.page.js' }, './js/utilities': { onlyIf: 'caviar', folder: {} }, './js/utilities/open-stripe-checkout.js': { onlyIf: 'caviar', copy: 'assets/js/utilities/open-stripe-checkout.js' }, './dependencies': { folder: {} }, './dependencies/.gitkeep': { onlyIf: 'traditional', copy: '../../../shared-templates/gitkeep.template' }, './dependencies/bootstrap-4': { onlyIf: 'caviar', folder: {} }, './dependencies/bootstrap-4/bootstrap-4.css': { onlyIf: 'caviar', copy: 'assets/dependencies/bootstrap-4/bootstrap-4.css' }, './dependencies/bootstrap-4/bootstrap-4.bundle.js': { onlyIf: 'caviar', copy: 'assets/dependencies/bootstrap-4/bootstrap-4.bundle.js' }, './dependencies/fontawesome.css': { onlyIf: 'caviar', copy: 'assets/dependencies/fontawesome.css' }, './dependencies/jquery.min.js': { onlyIf: 'caviar', copy: 'assets/dependencies/jquery.min.js' }, './dependencies/lodash.js': { onlyIf: 'caviar', copy: 'assets/dependencies/lodash.js' }, './dependencies/vue.js': { onlyIf: 'caviar', copy: 'assets/dependencies/vue.js' }, './dependencies/vue-router.js': { onlyIf: 'caviar', copy: 'assets/dependencies/vue-router.js' }, './dependencies/moment.js': { onlyIf: 'caviar', copy: 'assets/dependencies/moment.js' }, // Note that parasails.js, cloud.js, and sails.io.js are injected separately below. './fonts': { onlyIf: 'caviar', folder: {} }, './fonts/fontawesome-webfont.eot': { onlyIf: 'caviar', copy: 'assets/fonts/fontawesome-webfont.eot' }, './fonts/fontawesome-webfont.svg': { onlyIf: 'caviar', copy: 'assets/fonts/fontawesome-webfont.svg' }, './fonts/fontawesome-webfont.ttf': { onlyIf: 'caviar', copy: 'assets/fonts/fontawesome-webfont.ttf' }, './fonts/fontawesome-webfont.woff': { onlyIf: 'caviar', copy: 'assets/fonts/fontawesome-webfont.woff' }, './fonts/fontawesome-webfont.woff2': { onlyIf: 'caviar', copy: 'assets/fonts/fontawesome-webfont.woff2' }, }//</targets> }//</generator> },//</ assets/ > // ╔╦╗╔═╗╔═╗╦╔═╔═╗ // ║ ╠═╣╚═╗╠╩╗╚═╗ // ╩ ╩ ╩╚═╝╩ ╩╚═╝ // Default tasks/ folder and contents: './tasks/': { overridable: 'grunttasks', generator: { targets: { // asset pipeline setup './pipeline.js': { template: 'tasks/pipeline.js.template' }, // grunt task configurations (`tasks/config/`) './config/clean.js': { copy: 'tasks/config/clean.js' }, './config/concat.js': { copy: 'tasks/config/concat.js' }, './config/copy.js': { copy: 'tasks/config/copy.js' }, './config/cssmin.js': { copy: 'tasks/config/cssmin.js' }, './config/less.js': { copy: 'tasks/config/less.js' }, './config/hash.js': { copy: 'tasks/config/hash.js' }, './config/sails-linker.js': { copy: 'tasks/config/sails-linker.js' }, './config/sync.js': { copy: 'tasks/config/sync.js' }, './config/uglify.js': { copy: 'tasks/config/uglify.js' }, './config/babel.js': { copy: 'tasks/config/babel.js' }, './config/watch.js': { template: 'tasks/config/watch.js.template' }, // intermediate grunt tasklists (`tasks/register`) './register/linkAssets.js': { copy: 'tasks/register/linkAssets.js' }, './register/linkAssetsBuild.js': { copy: 'tasks/register/linkAssetsBuild.js' }, './register/linkAssetsBuildProd.js': { copy: 'tasks/register/linkAssetsBuildProd.js' }, './register/syncAssets.js': { copy: 'tasks/register/syncAssets.js' }, './register/compileAssets.js': { copy: 'tasks/register/compileAssets.js' }, './register/polyfill.js': { template: 'tasks/register/polyfill.js.template' }, // built-in grunt tasks which are automatically called by Sails (`tasks/register/`) './register/build.js': { copy: 'tasks/register/build.js' }, './register/buildProd.js': { copy: 'tasks/register/buildProd.js' }, './register/prod.js': { copy: 'tasks/register/prod.js' }, './register/default.js': { template: 'tasks/register/default.js.template' }, } } }//</ tasks/ > } } },//</frontend> // ███████╗ █████╗ ██╗██╗ ███████╗ ██╗ ██████╗ ██╗███████╗ // ██╔════╝██╔══██╗██║██║ ██╔════╝ ██║██╔═══██╗ ██║██╔════╝ // ███████╗███████║██║██║ ███████╗ ██║██║ ██║ ██║███████╗ // ╚════██║██╔══██║██║██║ ╚════██║ ██║██║ ██║ ██ ██║╚════██║ // ███████║██║ ██║██║███████╗███████║██╗██║╚██████╔╝██╗╚█████╔╝███████║ // ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚═════╝ ╚═╝ ╚════╝ ╚══════╝ // // Call sails.io.js sub-generator to create the browser socket client at // the conventional location (in `assets/dependencies/sails.io.js`) 'sails.io.js', // ██████╗ █████╗ ██████╗ █████╗ ███████╗ █████╗ ██╗██╗ ███████╗ // ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗██║██║ ██╔════╝ // ██████╔╝███████║██████╔╝███████║███████╗███████║██║██║ ███████╗ // ██╔═══╝ ██╔══██║██╔══██╗██╔══██║╚════██║██╔══██║██║██║ ╚════██║ // ██║ ██║ ██║██║ ██║██║ ██║███████║██║ ██║██║███████╗███████║ // ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝ // // Call parasails sub-generator to create parasails.js and cloud.js (cloud sdk) // at the conventional locations (in `assets/dependencies/parasails.js` and // `assets/dependencies/cloud.js`) 'parasails', ], // ███╗ ███╗██╗███████╗ ██████╗ // ████╗ ████║██║██╔════╝██╔════╝ // ██╔████╔██║██║███████╗██║ // ██║╚██╔╝██║██║╚════██║██║ // ██║ ╚═╝ ██║██║███████║╚██████╗ // ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝ // './.gitignore': { copy: 'gitignore.template' }, './.editorconfig': { copy: 'editorconfig.template' }, './.htmlhintrc': { template: 'htmlhintrc.template', overridable: '.htmlhintrc' }, './.lesshintrc': { template: 'lesshintrc.template', overridable: '.lesshintrc' }, './.eslintrc': { template: 'eslintrc.template' }, './.eslintignore': { template: 'eslintignore.template' }, './.npmrc': { copy: '../../../shared-templates/npmrc.template' }, './package.json': { jsonfile: require('./get-package-json-data') }, './app.js': { copy: 'app.js.template' }, './.sailsrc': { jsonfile: require('./get-sailsrc-data') }, './README.md': { template: './README.md.template' }, } };