UNPKG

2.41 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.load = undefined;
7
8var _express = require('express');
9
10var _lodash = require('lodash.foreach');
11
12var _lodash2 = _interopRequireDefault(_lodash);
13
14var _requireDir = require('require-dir');
15
16var _requireDir2 = _interopRequireDefault(_requireDir);
17
18var _loadResources = require('./loadResources');
19
20var _loadResources2 = _interopRequireDefault(_loadResources);
21
22var _getRequestHandler = require('./getRequestHandler');
23
24var _getRequestHandler2 = _interopRequireDefault(_getRequestHandler);
25
26var _displayResources = require('./displayResources');
27
28var _displayResources2 = _interopRequireDefault(_displayResources);
29
30var _debug2 = require('debug');
31
32var _debug3 = _interopRequireDefault(_debug2);
33
34function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
36var debug = (0, _debug3.default)('sutro:loader');
37
38var wireEndpoint = function wireEndpoint(router, endpoint, resourceName) {
39 debug(' - ' + endpoint.name + ' (' + endpoint.method.toUpperCase() + ' ' + endpoint.path + ')');
40 router[endpoint.method](endpoint.path, (0, _getRequestHandler2.default)(endpoint, resourceName));
41};
42
43var wireResource = function wireResource(router) {
44 return function (endpoints, resourceName) {
45 var number = endpoints.length > 1 ? 'endpoints' : 'endpoint';
46 var actualName = resourceName.toLowerCase();
47 debug('Loaded ' + endpoints.length + ' ' + number + ' for "' + actualName + '"');
48 (0, _lodash2.default)(endpoints, function (endpoint) {
49 return wireEndpoint(router, endpoint, actualName);
50 });
51 };
52};
53
54var load = exports.load = function load(path) {
55 return (0, _requireDir2.default)(path, { recurse: true });
56};
57
58exports.default = function () {
59 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
60 prefix = _ref.prefix,
61 resources = _ref.resources;
62
63 if (!resources) throw new Error('Missing resources option');
64 var loadedResources = (0, _loadResources2.default)(resources);
65 var meta = (0, _displayResources2.default)(prefix, loadedResources);
66 var router = (0, _express.Router)({ mergeParams: true });
67 router.meta = meta;
68 router.prefix = prefix;
69
70 (0, _lodash2.default)(loadedResources, wireResource(router));
71 router.get('/_resources', function (req, res) {
72 return res.json(meta);
73 });
74
75 return router;
76};
\No newline at end of file