@webresto/graphql 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.editorconfig +10 -0
- package/index.d.ts +3 -0
- package/index.js +22 -0
- package/index.ts +14 -0
- package/lib/afterHook.d.ts +1 -0
- package/lib/afterHook.js +24 -0
- package/lib/afterHook.ts +26 -0
- package/lib/afterHook.ts___graphql-transport-ws +138 -0
- package/lib/afterHook.ts___graphql-ws +133 -0
- package/lib/defaults.js +12 -0
- package/lib/errorWrapper.d.ts +4 -0
- package/lib/errorWrapper.js +13 -0
- package/lib/errorWrapper.ts +12 -0
- package/lib/eventHelper.d.ts +21 -0
- package/lib/eventHelper.js +32 -0
- package/lib/eventHelper.ts +35 -0
- package/lib/graphqlHelper.d.ts +115 -0
- package/lib/graphqlHelper.js +596 -0
- package/lib/graphqlHelper.ts +692 -0
- package/lib/initialize.d.ts +1 -0
- package/lib/initialize.js +22 -0
- package/lib/initialize.ts +21 -0
- package/notes.md +1976 -0
- package/package.json +47 -0
- package/readme.md +258 -0
- package/restApi.http +11 -0
- package/src/additionalResolvers.d.ts +19 -0
- package/src/additionalResolvers.js +114 -0
- package/src/additionalResolvers.ts +111 -0
- package/src/graphql.d.ts +7 -0
- package/src/graphql.js +144 -0
- package/src/graphql.ts +160 -0
- package/src/resolvers/cart.d.ts +123 -0
- package/src/resolvers/cart.js +176 -0
- package/src/resolvers/cart.ts +256 -0
- package/src/resolvers/checkout.d.ts +30 -0
- package/src/resolvers/checkout.js +226 -0
- package/src/resolvers/checkout.ts +242 -0
- package/src/resolvers/dishAndModifier.d.ts +2 -0
- package/src/resolvers/dishAndModifier.js +35 -0
- package/src/resolvers/dishAndModifier.ts +38 -0
- package/src/resolvers/maintenance.d.ts +9 -0
- package/src/resolvers/maintenance.js +12 -0
- package/src/resolvers/maintenance.ts +11 -0
- package/src/resolvers/paymentMethod.d.ts +9 -0
- package/src/resolvers/paymentMethod.js +22 -0
- package/src/resolvers/paymentMethod.ts +20 -0
- package/src/resolvers/restrictions.d.ts +9 -0
- package/src/resolvers/restrictions.js +24 -0
- package/src/resolvers/restrictions.ts +22 -0
- package/src/resolvers/streets.d.ts +9 -0
- package/src/resolvers/streets.js +16 -0
- package/src/resolvers/streets.ts +13 -0
- package/src/resolvers/subscriptions.d.ts +33 -0
- package/src/resolvers/subscriptions.js +52 -0
- package/src/resolvers/subscriptions.ts +63 -0
- package/test/.eslintrc +8 -0
- package/test/_bootstrap.js +29 -0
- package/test/fixtures/v0.12-app/.gitignore +11 -0
- package/test/fixtures/v0.12-app/.sailsrc +11 -0
- package/test/fixtures/v0.12-app/api/controllers/.gitkeep +0 -0
- package/test/fixtures/v0.12-app/api/models/.gitkeep +0 -0
- package/test/fixtures/v0.12-app/api/models/TestModel.js +22 -0
- package/test/fixtures/v0.12-app/api/responses/badRequest.js +76 -0
- package/test/fixtures/v0.12-app/api/responses/created.js +60 -0
- package/test/fixtures/v0.12-app/api/responses/forbidden.js +89 -0
- package/test/fixtures/v0.12-app/api/responses/notFound.js +94 -0
- package/test/fixtures/v0.12-app/api/responses/ok.js +60 -0
- package/test/fixtures/v0.12-app/api/responses/serverError.js +89 -0
- package/test/fixtures/v0.12-app/api/services/.gitkeep +0 -0
- package/test/fixtures/v0.12-app/app.js +73 -0
- package/test/fixtures/v0.12-app/config/bootstrap.js +6 -0
- package/test/fixtures/v0.12-app/config/connections.js +5 -0
- package/test/fixtures/v0.12-app/config/cors.js +78 -0
- package/test/fixtures/v0.12-app/config/csrf.js +64 -0
- package/test/fixtures/v0.12-app/config/env/development.js +10 -0
- package/test/fixtures/v0.12-app/config/env/production.js +16 -0
- package/test/fixtures/v0.12-app/config/globals.js +63 -0
- package/test/fixtures/v0.12-app/config/hookTimeout.js +8 -0
- package/test/fixtures/v0.12-app/config/http.js +93 -0
- package/test/fixtures/v0.12-app/config/i18n.js +57 -0
- package/test/fixtures/v0.12-app/config/log.js +29 -0
- package/test/fixtures/v0.12-app/config/models.js +3 -0
- package/test/fixtures/v0.12-app/config/policies.js +51 -0
- package/test/fixtures/v0.12-app/config/restoapi.js +3 -0
- package/test/fixtures/v0.12-app/config/restocore.js +39 -0
- package/test/fixtures/v0.12-app/config/routes.js +49 -0
- package/test/fixtures/v0.12-app/config/session.js +100 -0
- package/test/fixtures/v0.12-app/config/sockets.js +141 -0
- package/test/fixtures/v0.12-app/config/stateflow.js +4 -0
- package/test/fixtures/v0.12-app/config/views.js +95 -0
- package/test/fixtures/v0.12-app/package.json +34 -0
- package/test/fixtures/v0.12-app/views/403.ejs +68 -0
- package/test/fixtures/v0.12-app/views/404.ejs +68 -0
- package/test/fixtures/v0.12-app/views/500.ejs +73 -0
- package/test/fixtures/v0.12-app/views/homepage.ejs +74 -0
- package/test/fixtures/v0.12-app/views/layout.ejs +91 -0
- package/test/mocha.opts +2 -0
- package/test/readme.md +0 -0
- package/test/todo +0 -0
- package/test/tslint.json +18 -0
- package/test/unit/first.test.js +11 -0
- package/test/unit/sails_not_crash.test.js +3 -0
- package/todo.md +1 -0
- package/tsconfig.json +10 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
require("mocha");
|
4
|
+
var Sails = require('./fixtures/v0.12-app/node_modules/sails').Sails;
|
5
|
+
before(function (done) {
|
6
|
+
let rc = require('./fixtures/v0.12-app/app').rc;
|
7
|
+
this.timeout(50000);
|
8
|
+
Sails().lift(rc, function (err, _sails) {
|
9
|
+
if (err)
|
10
|
+
return done(err);
|
11
|
+
global.sails = _sails;
|
12
|
+
// console.log(_sails);
|
13
|
+
return done();
|
14
|
+
});
|
15
|
+
});
|
16
|
+
after(function (done) {
|
17
|
+
if (global.sails) {
|
18
|
+
return global.sails.lower(function (err) {
|
19
|
+
if (err) {
|
20
|
+
done();
|
21
|
+
return process.exit(2);
|
22
|
+
}
|
23
|
+
done();
|
24
|
+
return process.exit(0);
|
25
|
+
});
|
26
|
+
}
|
27
|
+
done();
|
28
|
+
return process.exit(2);
|
29
|
+
});
|
File without changes
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
module.exports = {
|
3
|
+
attributes: {
|
4
|
+
|
5
|
+
order_number : { type: 'string' },
|
6
|
+
|
7
|
+
order_id : { type: 'string' },
|
8
|
+
|
9
|
+
order_id: { type: 'string' },
|
10
|
+
|
11
|
+
phone : { type: 'string' },
|
12
|
+
|
13
|
+
notifyMethod : {
|
14
|
+
type: 'string'
|
15
|
+
},
|
16
|
+
|
17
|
+
delivered : {
|
18
|
+
type: 'json',
|
19
|
+
defaultsTo: {new: false}
|
20
|
+
},
|
21
|
+
},
|
22
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/**
|
2
|
+
* 400 (Bad Request) Handler
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.badRequest();
|
6
|
+
* return res.badRequest(data);
|
7
|
+
* return res.badRequest(data, 'some/specific/badRequest/view');
|
8
|
+
*
|
9
|
+
* e.g.:
|
10
|
+
* ```
|
11
|
+
* return res.badRequest(
|
12
|
+
* 'Please choose a valid `password` (6-12 characters)',
|
13
|
+
* 'trial/signup'
|
14
|
+
* );
|
15
|
+
* ```
|
16
|
+
*/
|
17
|
+
|
18
|
+
module.exports = function badRequest(data, options) {
|
19
|
+
|
20
|
+
// Get access to `req`, `res`, & `sails`
|
21
|
+
var req = this.req;
|
22
|
+
var res = this.res;
|
23
|
+
var sails = req._sails;
|
24
|
+
|
25
|
+
// Set status code
|
26
|
+
res.status(400);
|
27
|
+
|
28
|
+
// Log error to console
|
29
|
+
if (data !== undefined) {
|
30
|
+
sails.log.verbose('Sending 400 ("Bad Request") response: \n',data);
|
31
|
+
}
|
32
|
+
else sails.log.verbose('Sending 400 ("Bad Request") response');
|
33
|
+
|
34
|
+
// Only include errors in response if application environment
|
35
|
+
// is not set to 'production'. In production, we shouldn't
|
36
|
+
// send back any identifying information about errors.
|
37
|
+
if (sails.config.environment === 'production' && sails.config.keepResponseErrors !== true) {
|
38
|
+
data = undefined;
|
39
|
+
}
|
40
|
+
|
41
|
+
// If the user-agent wants JSON, always respond with JSON
|
42
|
+
// If views are disabled, revert to json
|
43
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
44
|
+
return res.jsonx(data);
|
45
|
+
}
|
46
|
+
|
47
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
48
|
+
// If it was omitted, use an empty object (`{}`)
|
49
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
50
|
+
|
51
|
+
// Attempt to prettify data for views, if it's a non-error object
|
52
|
+
var viewData = data;
|
53
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
54
|
+
try {
|
55
|
+
viewData = require('util').inspect(data, {depth: null});
|
56
|
+
}
|
57
|
+
catch(e) {
|
58
|
+
viewData = undefined;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
// If a view was provided in options, serve it.
|
63
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
64
|
+
// work, just send JSON.
|
65
|
+
if (options.view) {
|
66
|
+
return res.view(options.view, { data: viewData, title: 'Bad Request' });
|
67
|
+
}
|
68
|
+
|
69
|
+
// If no second argument provided, try to serve the implied view,
|
70
|
+
// but fall back to sending JSON(P) if no view can be inferred.
|
71
|
+
else return res.guessView({ data: viewData, title: 'Bad Request' }, function couldNotGuessView () {
|
72
|
+
return res.jsonx(data);
|
73
|
+
});
|
74
|
+
|
75
|
+
};
|
76
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/**
|
2
|
+
* 201 (CREATED) Response
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.created();
|
6
|
+
* return res.created(data);
|
7
|
+
* return res.created(data, 'auth/login');
|
8
|
+
*
|
9
|
+
* @param {Object} data
|
10
|
+
* @param {String|Object} options
|
11
|
+
* - pass string to render specified view
|
12
|
+
*/
|
13
|
+
|
14
|
+
module.exports = function created (data, options) {
|
15
|
+
|
16
|
+
// Get access to `req`, `res`, & `sails`
|
17
|
+
var req = this.req;
|
18
|
+
var res = this.res;
|
19
|
+
var sails = req._sails;
|
20
|
+
|
21
|
+
sails.log.silly('res.created() :: Sending 201 ("CREATED") response');
|
22
|
+
|
23
|
+
// Set status code
|
24
|
+
res.status(201);
|
25
|
+
|
26
|
+
// If appropriate, serve data as JSON(P)
|
27
|
+
// If views are disabled, revert to json
|
28
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
29
|
+
return res.jsonx(data);
|
30
|
+
}
|
31
|
+
|
32
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
33
|
+
// If it was omitted, use an empty object (`{}`)
|
34
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
35
|
+
|
36
|
+
// Attempt to prettify data for views, if it's a non-error object
|
37
|
+
var viewData = data;
|
38
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
39
|
+
try {
|
40
|
+
viewData = require('util').inspect(data, {depth: null});
|
41
|
+
}
|
42
|
+
catch(e) {
|
43
|
+
viewData = undefined;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
// If a view was provided in options, serve it.
|
48
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
49
|
+
// work, just send JSON.
|
50
|
+
if (options.view) {
|
51
|
+
return res.view(options.view, { data: viewData, title: 'Created' });
|
52
|
+
}
|
53
|
+
|
54
|
+
// If no second argument provided, try to serve the implied view,
|
55
|
+
// but fall back to sending JSON(P) if no view can be inferred.
|
56
|
+
else return res.guessView({ data: viewData, title: 'Created' }, function couldNotGuessView () {
|
57
|
+
return res.jsonx(data);
|
58
|
+
});
|
59
|
+
|
60
|
+
};
|
@@ -0,0 +1,89 @@
|
|
1
|
+
/**
|
2
|
+
* 403 (Forbidden) Handler
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.forbidden();
|
6
|
+
* return res.forbidden(err);
|
7
|
+
* return res.forbidden(err, 'some/specific/forbidden/view');
|
8
|
+
*
|
9
|
+
* e.g.:
|
10
|
+
* ```
|
11
|
+
* return res.forbidden('Access denied.');
|
12
|
+
* ```
|
13
|
+
*/
|
14
|
+
|
15
|
+
module.exports = function forbidden (data, options) {
|
16
|
+
|
17
|
+
// Get access to `req`, `res`, & `sails`
|
18
|
+
var req = this.req;
|
19
|
+
var res = this.res;
|
20
|
+
var sails = req._sails;
|
21
|
+
|
22
|
+
// Set status code
|
23
|
+
res.status(403);
|
24
|
+
|
25
|
+
// Log error to console
|
26
|
+
if (data !== undefined) {
|
27
|
+
sails.log.verbose('Sending 403 ("Forbidden") response: \n',data);
|
28
|
+
}
|
29
|
+
else sails.log.verbose('Sending 403 ("Forbidden") response');
|
30
|
+
|
31
|
+
// Only include errors in response if application environment
|
32
|
+
// is not set to 'production'. In production, we shouldn't
|
33
|
+
// send back any identifying information about errors.
|
34
|
+
if (sails.config.environment === 'production' && sails.config.keepResponseErrors !== true) {
|
35
|
+
data = undefined;
|
36
|
+
}
|
37
|
+
|
38
|
+
// If the user-agent wants JSON, always respond with JSON
|
39
|
+
// If views are disabled, revert to json
|
40
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
41
|
+
return res.jsonx(data);
|
42
|
+
}
|
43
|
+
|
44
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
45
|
+
// If it was omitted, use an empty object (`{}`)
|
46
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
47
|
+
|
48
|
+
// Attempt to prettify data for views, if it's a non-error object
|
49
|
+
var viewData = data;
|
50
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
51
|
+
try {
|
52
|
+
viewData = require('util').inspect(data, {depth: null});
|
53
|
+
}
|
54
|
+
catch(e) {
|
55
|
+
viewData = undefined;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
// If a view was provided in options, serve it.
|
60
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
61
|
+
// work, just send JSON.
|
62
|
+
if (options.view) {
|
63
|
+
return res.view(options.view, { data: viewData, title: 'Forbidden' });
|
64
|
+
}
|
65
|
+
|
66
|
+
// If no second argument provided, try to serve the default view,
|
67
|
+
// but fall back to sending JSON(P) if any errors occur.
|
68
|
+
else return res.view('403', { data: viewData, title: 'Forbidden' }, function (err, html) {
|
69
|
+
|
70
|
+
// If a view error occured, fall back to JSON(P).
|
71
|
+
if (err) {
|
72
|
+
//
|
73
|
+
// Additionally:
|
74
|
+
// • If the view was missing, ignore the error but provide a verbose log.
|
75
|
+
if (err.code === 'E_VIEW_FAILED') {
|
76
|
+
sails.log.verbose('res.forbidden() :: Could not locate view for error page (sending JSON instead). Details: ',err);
|
77
|
+
}
|
78
|
+
// Otherwise, if this was a more serious error, log to the console with the details.
|
79
|
+
else {
|
80
|
+
sails.log.warn('res.forbidden() :: When attempting to render error page view, an error occured (sending JSON instead). Details: ', err);
|
81
|
+
}
|
82
|
+
return res.jsonx(data);
|
83
|
+
}
|
84
|
+
|
85
|
+
return res.send(html);
|
86
|
+
});
|
87
|
+
|
88
|
+
};
|
89
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
/**
|
2
|
+
* 404 (Not Found) Handler
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.notFound();
|
6
|
+
* return res.notFound(err);
|
7
|
+
* return res.notFound(err, 'some/specific/notfound/view');
|
8
|
+
*
|
9
|
+
* e.g.:
|
10
|
+
* ```
|
11
|
+
* return res.notFound();
|
12
|
+
* ```
|
13
|
+
*
|
14
|
+
* NOTE:
|
15
|
+
* If a request doesn't match any explicit routes (i.e. `config/routes.js`)
|
16
|
+
* or route blueprints (i.e. "shadow routes", Sails will call `res.notFound()`
|
17
|
+
* automatically.
|
18
|
+
*/
|
19
|
+
|
20
|
+
module.exports = function notFound (data, options) {
|
21
|
+
|
22
|
+
// Get access to `req`, `res`, & `sails`
|
23
|
+
var req = this.req;
|
24
|
+
var res = this.res;
|
25
|
+
var sails = req._sails;
|
26
|
+
|
27
|
+
// Set status code
|
28
|
+
res.status(404);
|
29
|
+
|
30
|
+
// Log error to console
|
31
|
+
if (data !== undefined) {
|
32
|
+
sails.log.verbose('Sending 404 ("Not Found") response: \n',data);
|
33
|
+
}
|
34
|
+
else sails.log.verbose('Sending 404 ("Not Found") response');
|
35
|
+
|
36
|
+
// Only include errors in response if application environment
|
37
|
+
// is not set to 'production'. In production, we shouldn't
|
38
|
+
// send back any identifying information about errors.
|
39
|
+
if (sails.config.environment === 'production' && sails.config.keepResponseErrors !== true) {
|
40
|
+
data = undefined;
|
41
|
+
}
|
42
|
+
|
43
|
+
// If the user-agent wants JSON, always respond with JSON
|
44
|
+
// If views are disabled, revert to json
|
45
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
46
|
+
return res.jsonx(data);
|
47
|
+
}
|
48
|
+
|
49
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
50
|
+
// If it was omitted, use an empty object (`{}`)
|
51
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
52
|
+
|
53
|
+
// Attempt to prettify data for views, if it's a non-error object
|
54
|
+
var viewData = data;
|
55
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
56
|
+
try {
|
57
|
+
viewData = require('util').inspect(data, {depth: null});
|
58
|
+
}
|
59
|
+
catch(e) {
|
60
|
+
viewData = undefined;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
// If a view was provided in options, serve it.
|
65
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
66
|
+
// work, just send JSON.
|
67
|
+
if (options.view) {
|
68
|
+
return res.view(options.view, { data: viewData, title: 'Not Found' });
|
69
|
+
}
|
70
|
+
|
71
|
+
// If no second argument provided, try to serve the default view,
|
72
|
+
// but fall back to sending JSON(P) if any errors occur.
|
73
|
+
else return res.view('404', { data: viewData, title: 'Not Found' }, function (err, html) {
|
74
|
+
|
75
|
+
// If a view error occured, fall back to JSON(P).
|
76
|
+
if (err) {
|
77
|
+
//
|
78
|
+
// Additionally:
|
79
|
+
// • If the view was missing, ignore the error but provide a verbose log.
|
80
|
+
if (err.code === 'E_VIEW_FAILED') {
|
81
|
+
sails.log.verbose('res.notFound() :: Could not locate view for error page (sending JSON instead). Details: ',err);
|
82
|
+
}
|
83
|
+
// Otherwise, if this was a more serious error, log to the console with the details.
|
84
|
+
else {
|
85
|
+
sails.log.warn('res.notFound() :: When attempting to render error page view, an error occured (sending JSON instead). Details: ', err);
|
86
|
+
}
|
87
|
+
return res.jsonx(data);
|
88
|
+
}
|
89
|
+
|
90
|
+
return res.send(html);
|
91
|
+
});
|
92
|
+
|
93
|
+
};
|
94
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/**
|
2
|
+
* 200 (OK) Response
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.ok();
|
6
|
+
* return res.ok(data);
|
7
|
+
* return res.ok(data, 'auth/login');
|
8
|
+
*
|
9
|
+
* @param {Object} data
|
10
|
+
* @param {String|Object} options
|
11
|
+
* - pass string to render specified view
|
12
|
+
*/
|
13
|
+
|
14
|
+
module.exports = function sendOK (data, options) {
|
15
|
+
|
16
|
+
// Get access to `req`, `res`, & `sails`
|
17
|
+
var req = this.req;
|
18
|
+
var res = this.res;
|
19
|
+
var sails = req._sails;
|
20
|
+
|
21
|
+
sails.log.silly('res.ok() :: Sending 200 ("OK") response');
|
22
|
+
|
23
|
+
// Set status code
|
24
|
+
res.status(200);
|
25
|
+
|
26
|
+
// If appropriate, serve data as JSON(P)
|
27
|
+
// If views are disabled, revert to json
|
28
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
29
|
+
return res.jsonx(data);
|
30
|
+
}
|
31
|
+
|
32
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
33
|
+
// If it was omitted, use an empty object (`{}`)
|
34
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
35
|
+
|
36
|
+
// Attempt to prettify data for views, if it's a non-error object
|
37
|
+
var viewData = data;
|
38
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
39
|
+
try {
|
40
|
+
viewData = require('util').inspect(data, {depth: null});
|
41
|
+
}
|
42
|
+
catch(e) {
|
43
|
+
viewData = undefined;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
// If a view was provided in options, serve it.
|
48
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
49
|
+
// work, just send JSON.
|
50
|
+
if (options.view) {
|
51
|
+
return res.view(options.view, { data: viewData, title: 'OK' });
|
52
|
+
}
|
53
|
+
|
54
|
+
// If no second argument provided, try to serve the implied view,
|
55
|
+
// but fall back to sending JSON(P) if no view can be inferred.
|
56
|
+
else return res.guessView({ data: viewData, title: 'OK' }, function couldNotGuessView () {
|
57
|
+
return res.jsonx(data);
|
58
|
+
});
|
59
|
+
|
60
|
+
};
|
@@ -0,0 +1,89 @@
|
|
1
|
+
/**
|
2
|
+
* 500 (Server Error) Response
|
3
|
+
*
|
4
|
+
* Usage:
|
5
|
+
* return res.serverError();
|
6
|
+
* return res.serverError(err);
|
7
|
+
* return res.serverError(err, 'some/specific/error/view');
|
8
|
+
*
|
9
|
+
* NOTE:
|
10
|
+
* If something throws in a policy or controller, or an internal
|
11
|
+
* error is encountered, Sails will call `res.serverError()`
|
12
|
+
* automatically.
|
13
|
+
*/
|
14
|
+
|
15
|
+
module.exports = function serverError (data, options) {
|
16
|
+
|
17
|
+
// Get access to `req`, `res`, & `sails`
|
18
|
+
var req = this.req;
|
19
|
+
var res = this.res;
|
20
|
+
var sails = req._sails;
|
21
|
+
|
22
|
+
// Set status code
|
23
|
+
res.status(500);
|
24
|
+
|
25
|
+
// Log error to console
|
26
|
+
if (data !== undefined) {
|
27
|
+
sails.log.error('Sending 500 ("Server Error") response: \n',data);
|
28
|
+
}
|
29
|
+
else sails.log.error('Sending empty 500 ("Server Error") response');
|
30
|
+
|
31
|
+
// Only include errors in response if application environment
|
32
|
+
// is not set to 'production'. In production, we shouldn't
|
33
|
+
// send back any identifying information about errors.
|
34
|
+
if (sails.config.environment === 'production' && sails.config.keepResponseErrors !== true) {
|
35
|
+
data = undefined;
|
36
|
+
}
|
37
|
+
|
38
|
+
// If the user-agent wants JSON, always respond with JSON
|
39
|
+
// If views are disabled, revert to json
|
40
|
+
if (req.wantsJSON || sails.config.hooks.views === false) {
|
41
|
+
return res.jsonx(data);
|
42
|
+
}
|
43
|
+
|
44
|
+
// If second argument is a string, we take that to mean it refers to a view.
|
45
|
+
// If it was omitted, use an empty object (`{}`)
|
46
|
+
options = (typeof options === 'string') ? { view: options } : options || {};
|
47
|
+
|
48
|
+
// Attempt to prettify data for views, if it's a non-error object
|
49
|
+
var viewData = data;
|
50
|
+
if (!(viewData instanceof Error) && 'object' == typeof viewData) {
|
51
|
+
try {
|
52
|
+
viewData = require('util').inspect(data, {depth: null});
|
53
|
+
}
|
54
|
+
catch(e) {
|
55
|
+
viewData = undefined;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
// If a view was provided in options, serve it.
|
60
|
+
// Otherwise try to guess an appropriate view, or if that doesn't
|
61
|
+
// work, just send JSON.
|
62
|
+
if (options.view) {
|
63
|
+
return res.view(options.view, { data: viewData, title: 'Server Error' });
|
64
|
+
}
|
65
|
+
|
66
|
+
// If no second argument provided, try to serve the default view,
|
67
|
+
// but fall back to sending JSON(P) if any errors occur.
|
68
|
+
else return res.view('500', { data: viewData, title: 'Server Error' }, function (err, html) {
|
69
|
+
|
70
|
+
// If a view error occured, fall back to JSON(P).
|
71
|
+
if (err) {
|
72
|
+
//
|
73
|
+
// Additionally:
|
74
|
+
// • If the view was missing, ignore the error but provide a verbose log.
|
75
|
+
if (err.code === 'E_VIEW_FAILED') {
|
76
|
+
sails.log.verbose('res.serverError() :: Could not locate view for error page (sending JSON instead). Details: ',err);
|
77
|
+
}
|
78
|
+
// Otherwise, if this was a more serious error, log to the console with the details.
|
79
|
+
else {
|
80
|
+
sails.log.warn('res.serverError() :: When attempting to render error page view, an error occured (sending JSON instead). Details: ', err);
|
81
|
+
}
|
82
|
+
return res.jsonx(data);
|
83
|
+
}
|
84
|
+
|
85
|
+
return res.send(html);
|
86
|
+
});
|
87
|
+
|
88
|
+
};
|
89
|
+
|
File without changes
|
@@ -0,0 +1,73 @@
|
|
1
|
+
/**
|
2
|
+
* app.js
|
3
|
+
*
|
4
|
+
* Use `app.js` to run your app without `sails lift`.
|
5
|
+
* To start the server, run: `node app.js`.
|
6
|
+
*
|
7
|
+
* This is handy in situations where the sails CLI is not relevant or useful.
|
8
|
+
*
|
9
|
+
* For example:
|
10
|
+
* => `node app.js`
|
11
|
+
* => `forever start app.js`
|
12
|
+
* => `node debug app.js`
|
13
|
+
* => `modulus deploy`
|
14
|
+
* => `heroku scale`
|
15
|
+
*
|
16
|
+
*
|
17
|
+
* The same command-line arguments are supported, e.g.:
|
18
|
+
* `node app.js --silent --port=80 --prod`
|
19
|
+
*/
|
20
|
+
|
21
|
+
|
22
|
+
// Ensure we're in the project directory, so cwd-relative paths work as expected
|
23
|
+
// no matter where we actually lift from.
|
24
|
+
// > Note: This is not required in order to lift, but it is a convenient default.
|
25
|
+
process.chdir(__dirname);
|
26
|
+
|
27
|
+
// Attempt to import `sails`.
|
28
|
+
var sails;
|
29
|
+
try {
|
30
|
+
sails = require('sails');
|
31
|
+
} catch (e) {
|
32
|
+
console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.');
|
33
|
+
console.error('To do that, run `npm install sails`');
|
34
|
+
console.error('');
|
35
|
+
console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.');
|
36
|
+
console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,');
|
37
|
+
console.error('but if it doesn\'t, the app will run with the global sails instead!');
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
|
41
|
+
// --•
|
42
|
+
// Try to get `rc` dependency (for loading `.sailsrc` files).
|
43
|
+
var rc;
|
44
|
+
try {
|
45
|
+
rc = require('rc');
|
46
|
+
} catch (e0) {
|
47
|
+
try {
|
48
|
+
rc = require('sails/node_modules/rc');
|
49
|
+
} catch (e1) {
|
50
|
+
console.error('Could not find dependency: `rc`.');
|
51
|
+
console.error('Your `.sailsrc` file(s) will be ignored.');
|
52
|
+
console.error('To resolve this, run:');
|
53
|
+
console.error('npm install rc --save');
|
54
|
+
rc = function () { return {}; };
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
// function sails() {
|
61
|
+
// return new Promise(function (resolve, reject) {
|
62
|
+
// sails.lift(rc('sails'), (err, _sails) => {
|
63
|
+
// if (err) { return done(err); }
|
64
|
+
// resolve(_sails);
|
65
|
+
// });
|
66
|
+
// })
|
67
|
+
// }
|
68
|
+
|
69
|
+
|
70
|
+
module.exports = {
|
71
|
+
sails: sails,
|
72
|
+
rc: rc('sails')
|
73
|
+
}
|