1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.load = undefined;
|
7 |
|
8 | var _express = require('express');
|
9 |
|
10 | var _lodash = require('lodash.foreach');
|
11 |
|
12 | var _lodash2 = _interopRequireDefault(_lodash);
|
13 |
|
14 | var _requireDir = require('require-dir');
|
15 |
|
16 | var _requireDir2 = _interopRequireDefault(_requireDir);
|
17 |
|
18 | var _loadResources = require('./loadResources');
|
19 |
|
20 | var _loadResources2 = _interopRequireDefault(_loadResources);
|
21 |
|
22 | var _getRequestHandler = require('./getRequestHandler');
|
23 |
|
24 | var _getRequestHandler2 = _interopRequireDefault(_getRequestHandler);
|
25 |
|
26 | var _displayResources = require('./displayResources');
|
27 |
|
28 | var _displayResources2 = _interopRequireDefault(_displayResources);
|
29 |
|
30 | var _debug2 = require('debug');
|
31 |
|
32 | var _debug3 = _interopRequireDefault(_debug2);
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | var debug = (0, _debug3.default)('sutro:loader');
|
37 |
|
38 | var 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 |
|
43 | var 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 |
|
54 | var load = exports.load = function load(path) {
|
55 | return (0, _requireDir2.default)(path, { recurse: true });
|
56 | };
|
57 |
|
58 | exports.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 |