· 6 years ago · Jan 12, 2020, 09:24 PM
1require('source-map-support/register')
2module.exports =
3/******/ (function(modules) { // webpackBootstrap
4/******/ // The module cache
5/******/ var installedModules = {};
6/******/
7/******/ // The require function
8/******/ function __webpack_require__(moduleId) {
9/******/
10/******/ // Check if module is in cache
11/******/ if(installedModules[moduleId]) {
12/******/ return installedModules[moduleId].exports;
13/******/ }
14/******/ // Create a new module (and put it into the cache)
15/******/ var module = installedModules[moduleId] = {
16/******/ i: moduleId,
17/******/ l: false,
18/******/ exports: {}
19/******/ };
20/******/
21/******/ // Execute the module function
22/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
23/******/
24/******/ // Flag the module as loaded
25/******/ module.l = true;
26/******/
27/******/ // Return the exports of the module
28/******/ return module.exports;
29/******/ }
30/******/
31/******/
32/******/ // expose the modules object (__webpack_modules__)
33/******/ __webpack_require__.m = modules;
34/******/
35/******/ // expose the module cache
36/******/ __webpack_require__.c = installedModules;
37/******/
38/******/ // define getter function for harmony exports
39/******/ __webpack_require__.d = function(exports, name, getter) {
40/******/ if(!__webpack_require__.o(exports, name)) {
41/******/ Object.defineProperty(exports, name, {
42/******/ configurable: false,
43/******/ enumerable: true,
44/******/ get: getter
45/******/ });
46/******/ }
47/******/ };
48/******/
49/******/ // getDefaultExport function for compatibility with non-harmony modules
50/******/ __webpack_require__.n = function(module) {
51/******/ var getter = module && module.__esModule ?
52/******/ function getDefault() { return module['default']; } :
53/******/ function getModuleExports() { return module; };
54/******/ __webpack_require__.d(getter, 'a', getter);
55/******/ return getter;
56/******/ };
57/******/
58/******/ // Object.prototype.hasOwnProperty.call
59/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
60/******/
61/******/ // __webpack_public_path__
62/******/ __webpack_require__.p = "/";
63/******/
64/******/ // Load entry module and return exports
65/******/ return __webpack_require__(__webpack_require__.s = 3);
66/******/ })
67/************************************************************************/
68/******/ ([
69/* 0 */
70/***/ (function(module, exports) {
71
72module.exports = require("koa-router");
73
74/***/ }),
75/* 1 */
76/***/ (function(module, exports) {
77
78module.exports = require("nedb-promise");
79
80/***/ }),
81/* 2 */
82/***/ (function(module, exports, __webpack_require__) {
83
84"use strict";
85
86
87Object.defineProperty(exports, "__esModule", {
88 value: true
89});
90
91var _middlewares = __webpack_require__(8);
92
93Object.keys(_middlewares).forEach(function (key) {
94 if (key === "default" || key === "__esModule") return;
95 Object.defineProperty(exports, key, {
96 enumerable: true,
97 get: function get() {
98 return _middlewares[key];
99 }
100 });
101});
102
103var _constants = __webpack_require__(9);
104
105Object.keys(_constants).forEach(function (key) {
106 if (key === "default" || key === "__esModule") return;
107 Object.defineProperty(exports, key, {
108 enumerable: true,
109 get: function get() {
110 return _constants[key];
111 }
112 });
113});
114exports.sleep = sleep;
115function sleep(ms) {
116 return new Promise(function (resolve) {
117 setTimeout(resolve, ms);
118 });
119}
120
121/***/ }),
122/* 3 */
123/***/ (function(module, exports, __webpack_require__) {
124
125module.exports = __webpack_require__(4);
126
127
128/***/ }),
129/* 4 */
130/***/ (function(module, exports, __webpack_require__) {
131
132"use strict";
133/* WEBPACK VAR INJECTION */(function(module) {
134
135var _koa = __webpack_require__(6);
136
137var _koa2 = _interopRequireDefault(_koa);
138
139var _koaRouter = __webpack_require__(0);
140
141var _koaRouter2 = _interopRequireDefault(_koaRouter);
142
143var _koaBodyparser = __webpack_require__(7);
144
145var _koaBodyparser2 = _interopRequireDefault(_koaBodyparser);
146
147var _utils = __webpack_require__(2);
148
149var _note = __webpack_require__(10);
150
151var _auth = __webpack_require__(13);
152
153var _cats = __webpack_require__(17);
154
155var _koaJwt = __webpack_require__(20);
156
157var _koaJwt2 = _interopRequireDefault(_koaJwt);
158
159var _cors = __webpack_require__(21);
160
161var _cors2 = _interopRequireDefault(_cors);
162
163function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
164
165var app = new _koa2.default();
166
167app.use((0, _cors2.default)());
168app.use(_utils.timingLogger);
169app.use(_utils.exceptionHandler);
170app.use((0, _koaBodyparser2.default)());
171
172var prefix = '/api';
173
174// public
175var publicApiRouter = new _koaRouter2.default({ prefix: prefix });
176publicApiRouter.use('/auth', _auth.router.routes());
177app.use(publicApiRouter.routes()).use(publicApiRouter.allowedMethods());
178
179app.use((0, _koaJwt2.default)(_utils.jwtConfig));
180
181// protected
182var protectedApiRouter = new _koaRouter2.default({ prefix: prefix });
183protectedApiRouter.use('/item', _note.router.routes()).use('/cat', _cats.router.routes());
184app.use(protectedApiRouter.routes()).use(protectedApiRouter.allowedMethods());
185
186if (!module.parent) {
187 app.listen(3000);
188 console.log('started on port 3000');
189}
190/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)(module)))
191
192/***/ }),
193/* 5 */
194/***/ (function(module, exports) {
195
196module.exports = function(module) {
197 if(!module.webpackPolyfill) {
198 module.deprecate = function() {};
199 module.paths = [];
200 // module.parent = undefined by default
201 if(!module.children) module.children = [];
202 Object.defineProperty(module, "loaded", {
203 enumerable: true,
204 get: function() {
205 return module.l;
206 }
207 });
208 Object.defineProperty(module, "id", {
209 enumerable: true,
210 get: function() {
211 return module.i;
212 }
213 });
214 module.webpackPolyfill = 1;
215 }
216 return module;
217};
218
219
220/***/ }),
221/* 6 */
222/***/ (function(module, exports) {
223
224module.exports = require("koa");
225
226/***/ }),
227/* 7 */
228/***/ (function(module, exports) {
229
230module.exports = require("koa-bodyparser");
231
232/***/ }),
233/* 8 */
234/***/ (function(module, exports, __webpack_require__) {
235
236"use strict";
237
238
239Object.defineProperty(exports, "__esModule", {
240 value: true
241});
242var exceptionHandler = exports.exceptionHandler = async function exceptionHandler(ctx, next) {
243 try {
244 return await next();
245 } catch (err) {
246 ctx.body = { message: err.message || 'Unexpected error.' };
247 ctx.status = err.status || 500;
248 }
249};
250
251var timingLogger = exports.timingLogger = async function timingLogger(ctx, next) {
252 var start = Date.now();
253 await next();
254 console.log(ctx.method + ' ' + ctx.url + ' => ' + ctx.response.status + ', ' + (Date.now() - start) + 'ms');
255 console.log(ctx.response.body);
256};
257
258/***/ }),
259/* 9 */
260/***/ (function(module, exports, __webpack_require__) {
261
262"use strict";
263
264
265Object.defineProperty(exports, "__esModule", {
266 value: true
267});
268var jwtConfig = exports.jwtConfig = { secret: 'my-secret' };
269
270/***/ }),
271/* 10 */
272/***/ (function(module, exports, __webpack_require__) {
273
274"use strict";
275
276
277Object.defineProperty(exports, "__esModule", {
278 value: true
279});
280
281var _router = __webpack_require__(11);
282
283Object.keys(_router).forEach(function (key) {
284 if (key === "default" || key === "__esModule") return;
285 Object.defineProperty(exports, key, {
286 enumerable: true,
287 get: function get() {
288 return _router[key];
289 }
290 });
291});
292
293/***/ }),
294/* 11 */
295/***/ (function(module, exports, __webpack_require__) {
296
297"use strict";
298
299
300Object.defineProperty(exports, "__esModule", {
301 value: true
302});
303exports.router = undefined;
304
305var _koaRouter = __webpack_require__(0);
306
307var _koaRouter2 = _interopRequireDefault(_koaRouter);
308
309var _store = __webpack_require__(12);
310
311var _store2 = _interopRequireDefault(_store);
312
313function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
314
315var router = exports.router = new _koaRouter2.default();
316
317router.get('/', async function (ctx) {
318 var response = ctx.response;
319 response.body = await _store2.default.find({});
320 response.status = 200; // ok
321});
322
323router.get('/:id', async function (ctx) {
324 var note = await _store2.default.findOne({ _id: ctx.params.id });
325 var response = ctx.response;
326 if (note) {
327 response.body = note;
328 response.status = 200; // ok
329 } else {
330 response.status = 404; // not found
331 }
332});
333
334var createNote = async function createNote(note, response) {
335 try {
336 response.body = await _store2.default.insert(note);
337 response.status = 201; // created
338 } catch (err) {
339 response.body = { issue: [{ error: err.message }] };
340 response.status = 400; // bad request
341 }
342};
343
344router.post('/', async function (ctx) {
345 return await createNote(ctx.request.body, ctx.response);
346});
347
348router.put('/:id', async function (ctx) {
349 var note = ctx.request.body;
350 var id = ctx.params.id;
351 var noteId = note._id;
352 var response = ctx.response;
353 if (noteId && noteId !== id) {
354 response.body = { issue: [{ error: 'Param id and body _id should be the same' }] };
355 response.status = 400; // bad request
356 return;
357 }
358 if (!noteId) {
359 await createNote(note, response);
360 } else {
361 var updatedCount = await _store2.default.update({ _id: id }, note);
362 if (updatedCount === 1) {
363 response.body = note;
364 response.status = 200; // ok
365 } else {
366 response.body = { issue: [{ error: 'Resource no longer exists' }] };
367 response.status = 405; // method not allowed
368 }
369 }
370});
371
372router.del('/:id', async function (ctx) {
373 await _store2.default.remove({ _id: ctx.params.id });
374 ctx.response.status = 204; // no content
375});
376
377/***/ }),
378/* 12 */
379/***/ (function(module, exports, __webpack_require__) {
380
381"use strict";
382
383
384Object.defineProperty(exports, "__esModule", {
385 value: true
386});
387exports.NoteStore = undefined;
388
389var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
390
391var _nedbPromise = __webpack_require__(1);
392
393var _nedbPromise2 = _interopRequireDefault(_nedbPromise);
394
395function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
396
397function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
398
399var NoteStore = exports.NoteStore = function () {
400 function NoteStore(_ref) {
401 var filename = _ref.filename,
402 autoload = _ref.autoload;
403
404 _classCallCheck(this, NoteStore);
405
406 this.store = (0, _nedbPromise2.default)({ filename: filename, autoload: autoload });
407 }
408
409 _createClass(NoteStore, [{
410 key: 'find',
411 value: async function find(props) {
412 return this.store.find(props);
413 }
414 }, {
415 key: 'findOne',
416 value: async function findOne(props) {
417 return this.store.findOne(props);
418 }
419 }, {
420 key: 'insert',
421 value: async function insert(note) {
422 var noteText = note.text;
423 if (!noteText) {
424 // validation
425 throw new Error('Missing text property');
426 }
427 return this.store.insert(note);
428 }
429 }, {
430 key: 'update',
431 value: async function update(props, note) {
432 return this.store.update(props, note);
433 }
434 }, {
435 key: 'remove',
436 value: async function remove(props) {
437 return this.store.remove(props);
438 }
439 }]);
440
441 return NoteStore;
442}();
443
444exports.default = new NoteStore({ filename: './db/notes.json', autoload: true });
445
446/***/ }),
447/* 13 */
448/***/ (function(module, exports, __webpack_require__) {
449
450"use strict";
451
452
453Object.defineProperty(exports, "__esModule", {
454 value: true
455});
456
457var _router = __webpack_require__(14);
458
459Object.keys(_router).forEach(function (key) {
460 if (key === "default" || key === "__esModule") return;
461 Object.defineProperty(exports, key, {
462 enumerable: true,
463 get: function get() {
464 return _router[key];
465 }
466 });
467});
468
469/***/ }),
470/* 14 */
471/***/ (function(module, exports, __webpack_require__) {
472
473"use strict";
474
475
476Object.defineProperty(exports, "__esModule", {
477 value: true
478});
479exports.router = undefined;
480
481var _koaRouter = __webpack_require__(0);
482
483var _koaRouter2 = _interopRequireDefault(_koaRouter);
484
485var _store = __webpack_require__(15);
486
487var _store2 = _interopRequireDefault(_store);
488
489var _jsonwebtoken = __webpack_require__(16);
490
491var _jsonwebtoken2 = _interopRequireDefault(_jsonwebtoken);
492
493var _utils = __webpack_require__(2);
494
495function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
496
497var router = exports.router = new _koaRouter2.default();
498
499var createToken = function createToken(user) {
500 return _jsonwebtoken2.default.sign({ username: user.username, _id: user._id }, _utils.jwtConfig.secret, { expiresIn: 60 * 60 * 60 });
501};
502
503var createUser = async function createUser(user, response) {
504 var existingUser = await _store2.default.findOne({ username: user.username });
505 if (existingUser) {
506 response.body = { issue: [{ error: err.message }] };
507 response.status = 400; // bad request
508 }
509 try {
510 await _store2.default.insert(user);
511 response.body = { token: createToken(user) };
512 response.status = 201; // created
513 } catch (err) {
514 response.body = { issue: [{ error: err.message }] };
515 response.status = 400; // bad request
516 }
517};
518
519router.post('/signup', async function (ctx) {
520 return await createUser(ctx.request.body, ctx.response);
521});
522
523router.post('/login', async function (ctx) {
524 var credentials = ctx.request.body;
525 var response = ctx.response;
526 var user = await _store2.default.findOne({ username: credentials.username });
527 await (0, _utils.sleep)(1000);
528 if (user && credentials.password === user.password) {
529 response.body = { token: createToken(user) };
530 response.status = 201; // created
531 } else {
532 response.body = { issue: [{ error: 'Invalid credentials' }] };
533 response.status = 400; // bad request
534 }
535});
536
537/***/ }),
538/* 15 */
539/***/ (function(module, exports, __webpack_require__) {
540
541"use strict";
542
543
544Object.defineProperty(exports, "__esModule", {
545 value: true
546});
547exports.UserStore = undefined;
548
549var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
550
551var _nedbPromise = __webpack_require__(1);
552
553var _nedbPromise2 = _interopRequireDefault(_nedbPromise);
554
555function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
556
557function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
558
559var UserStore = exports.UserStore = function () {
560 function UserStore(_ref) {
561 var filename = _ref.filename,
562 autoload = _ref.autoload;
563
564 _classCallCheck(this, UserStore);
565
566 this.store = (0, _nedbPromise2.default)({ filename: filename, autoload: autoload });
567 }
568
569 _createClass(UserStore, [{
570 key: 'findOne',
571 value: async function findOne(props) {
572 return this.store.findOne(props);
573 }
574 }, {
575 key: 'insert',
576 value: async function insert(user) {
577 //
578 return this.store.insert(user);
579 }
580 }]);
581
582 return UserStore;
583}();
584
585exports.default = new UserStore({ filename: './db/users.json', autoload: true });
586
587/***/ }),
588/* 16 */
589/***/ (function(module, exports) {
590
591module.exports = require("jsonwebtoken");
592
593/***/ }),
594/* 17 */
595/***/ (function(module, exports, __webpack_require__) {
596
597"use strict";
598
599
600Object.defineProperty(exports, "__esModule", {
601 value: true
602});
603
604var _router = __webpack_require__(18);
605
606Object.keys(_router).forEach(function (key) {
607 if (key === "default" || key === "__esModule") return;
608 Object.defineProperty(exports, key, {
609 enumerable: true,
610 get: function get() {
611 return _router[key];
612 }
613 });
614});
615
616/***/ }),
617/* 18 */
618/***/ (function(module, exports, __webpack_require__) {
619
620"use strict";
621
622
623Object.defineProperty(exports, "__esModule", {
624 value: true
625});
626exports.router = undefined;
627
628var _koaRouter = __webpack_require__(0);
629
630var _koaRouter2 = _interopRequireDefault(_koaRouter);
631
632var _store = __webpack_require__(19);
633
634var _store2 = _interopRequireDefault(_store);
635
636function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
637
638var router = exports.router = new _koaRouter2.default();
639
640router.get('/', async function (ctx) {
641 console.log(new Date(), "get all");
642 var response = ctx.response;
643 response.body = await _store2.default.find({});
644 response.status = 200; // ok
645});
646
647router.post('/paginated', async function (ctx) {
648 console.log(new Date(), "paginated");
649 var body = ctx.request.body;
650 var response = ctx.response;
651 response.body = await _store2.default.getAllPaginated({}, body.start, body.limit);
652 response.status = 200; // ok
653});
654
655router.get('/count', async function (ctx) {
656 console.log(new Date(), "count");
657 var response = ctx.response;
658 var allData = await _store2.default.find({});
659 var returnCounts = {};
660 allData.forEach(function (item) {
661 if (returnCounts[item.size]) {
662 returnCounts[item.size] = returnCounts[item.size] + 1;
663 } else {
664 returnCounts[item.size] = 1;
665 }
666 });
667 response.body = returnCounts;
668 response.status = 200; // ok
669});
670
671router.get('/:id', async function (ctx) {
672 var note = await _store2.default.findOne({ _id: ctx.params.id });
673 var response = ctx.response;
674 if (note) {
675 response.body = note;
676 response.status = 200; // ok
677 } else {
678 response.status = 404; // not found
679 }
680});
681
682var createCat = async function createCat(cat, response) {
683 try {
684 response.body = await _store2.default.insert(cat);
685 response.status = 201; // created
686 } catch (err) {
687 response.body = { issue: [{ error: err.message }] };
688 response.status = 400; // bad request
689 }
690};
691
692router.post('/', async function (ctx) {
693 return await createCat(ctx.request.body, ctx.response);
694});
695
696router.put('/:id', async function (ctx) {
697 var cat = ctx.request.body;
698 var id = ctx.params.id;
699 var catId = cat._id;
700 var response = ctx.response;
701 if (catId && catId !== id) {
702 response.body = { issue: [{ error: 'Param id and body _id should be the same' }] };
703 response.status = 400; // bad request
704 return;
705 }
706 if (!id) {
707 await createCat(cat, response);
708 } else {
709 var updatedCount = await _store2.default.update({ _id: id }, cat);
710 if (updatedCount === 1) {
711 response.body = cat;
712 response.status = 200; // ok
713 } else {
714 response.body = { issue: [{ error: 'Resource no longer exists' }] };
715 response.status = 405; // method not allowed
716 }
717 }
718});
719
720router.del('/:id', async function (ctx) {
721 await _store2.default.remove({ _id: ctx.params.id });
722 ctx.response.status = 204; // no content
723});
724
725/***/ }),
726/* 19 */
727/***/ (function(module, exports, __webpack_require__) {
728
729"use strict";
730
731
732Object.defineProperty(exports, "__esModule", {
733 value: true
734});
735exports.CatStore = undefined;
736
737var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
738
739var _nedbPromise = __webpack_require__(1);
740
741var _nedbPromise2 = _interopRequireDefault(_nedbPromise);
742
743function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
744
745function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
746
747var CatStore = exports.CatStore = function () {
748 function CatStore(_ref) {
749 var filename = _ref.filename,
750 autoload = _ref.autoload;
751
752 _classCallCheck(this, CatStore);
753
754 this.store = (0, _nedbPromise2.default)({ filename: filename, autoload: autoload });
755 }
756
757 _createClass(CatStore, [{
758 key: 'find',
759 value: async function find(props) {
760 return this.store.cfind(props).sort({ breed: 1 }).exec();
761 }
762 }, {
763 key: 'getAllPaginated',
764 value: async function getAllPaginated(findValue, start, numberOfItems) {
765 return this.store.cfind(findValue).sort({ breed: 1 }).skip(start).limit(numberOfItems).exec();
766 }
767 }, {
768 key: 'findOne',
769 value: async function findOne(props) {
770 return this.store.findOne(props);
771 }
772 }, {
773 key: 'insert',
774 value: async function insert(cat) {
775 var catBreed = cat.breed;
776 if (!catBreed) {
777 // validation
778 throw new Error('Missing breed property');
779 }
780 return this.store.insert(cat);
781 }
782 }, {
783 key: 'update',
784 value: async function update(props, cat) {
785 return this.store.update(props, cat);
786 }
787 }, {
788 key: 'remove',
789 value: async function remove(props) {
790 return this.store.remove(props);
791 }
792 }]);
793
794 return CatStore;
795}();
796
797exports.default = new CatStore({ filename: './db/cats.json', autoload: true });
798
799/***/ }),
800/* 20 */
801/***/ (function(module, exports) {
802
803module.exports = require("koa-jwt");
804
805/***/ }),
806/* 21 */
807/***/ (function(module, exports) {
808
809module.exports = require("@koa/cors");
810
811/***/ })
812/******/ ]);
813//# sourceMappingURL=main.map