temba 0.8.1 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,291 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = createMongoQueries;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _mongo = require("@rakered/mongo");
17
-
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
- var uri;
23
- var db;
24
-
25
- function createMongoQueries(connectionString) {
26
- uri = connectionString;
27
- return {
28
- connectToDatabase: connectToDatabase,
29
- getAll: getAll,
30
- getById: getById,
31
- create: create,
32
- update: update,
33
- deleteById: deleteById,
34
- deleteAll: deleteAll
35
- };
36
- }
37
-
38
- function connectToDatabase() {
39
- return _connectToDatabase.apply(this, arguments);
40
- }
41
-
42
- function _connectToDatabase() {
43
- _connectToDatabase = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
44
- return _regenerator["default"].wrap(function _callee$(_context) {
45
- while (1) {
46
- switch (_context.prev = _context.next) {
47
- case 0:
48
- if (db) {
49
- _context.next = 5;
50
- break;
51
- }
52
-
53
- console.log('Connecting...');
54
- _context.next = 4;
55
- return (0, _mongo.connect)(uri);
56
-
57
- case 4:
58
- db = _context.sent;
59
-
60
- case 5:
61
- case "end":
62
- return _context.stop();
63
- }
64
- }
65
- }, _callee);
66
- }));
67
- return _connectToDatabase.apply(this, arguments);
68
- }
69
-
70
- function getAll(_x) {
71
- return _getAll.apply(this, arguments);
72
- }
73
-
74
- function _getAll() {
75
- _getAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(resourceName) {
76
- var items;
77
- return _regenerator["default"].wrap(function _callee2$(_context2) {
78
- while (1) {
79
- switch (_context2.prev = _context2.next) {
80
- case 0:
81
- _context2.next = 2;
82
- return connectToDatabase();
83
-
84
- case 2:
85
- _context2.next = 4;
86
- return db[resourceName].find({});
87
-
88
- case 4:
89
- items = _context2.sent;
90
-
91
- if (items) {
92
- _context2.next = 7;
93
- break;
94
- }
95
-
96
- return _context2.abrupt("return", []);
97
-
98
- case 7:
99
- return _context2.abrupt("return", items.map(function (item) {
100
- return removeUnderscoreFromId(item);
101
- }));
102
-
103
- case 8:
104
- case "end":
105
- return _context2.stop();
106
- }
107
- }
108
- }, _callee2);
109
- }));
110
- return _getAll.apply(this, arguments);
111
- }
112
-
113
- function getById(_x2, _x3) {
114
- return _getById.apply(this, arguments);
115
- }
116
-
117
- function _getById() {
118
- _getById = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(resourceName, id) {
119
- var item;
120
- return _regenerator["default"].wrap(function _callee3$(_context3) {
121
- while (1) {
122
- switch (_context3.prev = _context3.next) {
123
- case 0:
124
- _context3.next = 2;
125
- return connectToDatabase();
126
-
127
- case 2:
128
- _context3.next = 4;
129
- return db[resourceName].findOne({
130
- _id: id
131
- });
132
-
133
- case 4:
134
- item = _context3.sent;
135
-
136
- if (item) {
137
- _context3.next = 7;
138
- break;
139
- }
140
-
141
- return _context3.abrupt("return", null);
142
-
143
- case 7:
144
- return _context3.abrupt("return", removeUnderscoreFromId(item));
145
-
146
- case 8:
147
- case "end":
148
- return _context3.stop();
149
- }
150
- }
151
- }, _callee3);
152
- }));
153
- return _getById.apply(this, arguments);
154
- }
155
-
156
- function create(_x4, _x5) {
157
- return _create.apply(this, arguments);
158
- }
159
-
160
- function _create() {
161
- _create = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(resourceName, item) {
162
- var createdItem;
163
- return _regenerator["default"].wrap(function _callee4$(_context4) {
164
- while (1) {
165
- switch (_context4.prev = _context4.next) {
166
- case 0:
167
- _context4.next = 2;
168
- return connectToDatabase();
169
-
170
- case 2:
171
- _context4.next = 4;
172
- return db[resourceName].insertOne(item);
173
-
174
- case 4:
175
- createdItem = _context4.sent;
176
- return _context4.abrupt("return", removeUnderscoreFromId(createdItem.ops[0]));
177
-
178
- case 6:
179
- case "end":
180
- return _context4.stop();
181
- }
182
- }
183
- }, _callee4);
184
- }));
185
- return _create.apply(this, arguments);
186
- }
187
-
188
- function update(_x6, _x7) {
189
- return _update.apply(this, arguments);
190
- }
191
-
192
- function _update() {
193
- _update = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(resourceName, item) {
194
- var id, updatedItem;
195
- return _regenerator["default"].wrap(function _callee5$(_context5) {
196
- while (1) {
197
- switch (_context5.prev = _context5.next) {
198
- case 0:
199
- _context5.next = 2;
200
- return connectToDatabase();
201
-
202
- case 2:
203
- id = item.id;
204
- delete item.id;
205
- _context5.next = 6;
206
- return db[resourceName].findOneAndUpdate({
207
- _id: id
208
- }, {
209
- $set: item
210
- }, {
211
- returnOriginal: false
212
- });
213
-
214
- case 6:
215
- updatedItem = _context5.sent;
216
- return _context5.abrupt("return", removeUnderscoreFromId(updatedItem.value));
217
-
218
- case 8:
219
- case "end":
220
- return _context5.stop();
221
- }
222
- }
223
- }, _callee5);
224
- }));
225
- return _update.apply(this, arguments);
226
- }
227
-
228
- function deleteById(_x8, _x9) {
229
- return _deleteById.apply(this, arguments);
230
- }
231
-
232
- function _deleteById() {
233
- _deleteById = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(resourceName, id) {
234
- return _regenerator["default"].wrap(function _callee6$(_context6) {
235
- while (1) {
236
- switch (_context6.prev = _context6.next) {
237
- case 0:
238
- _context6.next = 2;
239
- return connectToDatabase();
240
-
241
- case 2:
242
- _context6.next = 4;
243
- return db[resourceName].deleteOne({
244
- _id: id
245
- });
246
-
247
- case 4:
248
- case "end":
249
- return _context6.stop();
250
- }
251
- }
252
- }, _callee6);
253
- }));
254
- return _deleteById.apply(this, arguments);
255
- }
256
-
257
- function deleteAll(_x10) {
258
- return _deleteAll.apply(this, arguments);
259
- }
260
-
261
- function _deleteAll() {
262
- _deleteAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(resourceName) {
263
- return _regenerator["default"].wrap(function _callee7$(_context7) {
264
- while (1) {
265
- switch (_context7.prev = _context7.next) {
266
- case 0:
267
- _context7.next = 2;
268
- return connectToDatabase();
269
-
270
- case 2:
271
- _context7.next = 4;
272
- return db[resourceName].deleteMany({});
273
-
274
- case 4:
275
- case "end":
276
- return _context7.stop();
277
- }
278
- }
279
- }, _callee7);
280
- }));
281
- return _deleteAll.apply(this, arguments);
282
- }
283
-
284
- function removeUnderscoreFromId(item) {
285
- var updatedItem = _objectSpread(_objectSpread({}, item), {}, {
286
- id: item._id
287
- });
288
-
289
- delete updatedItem._id;
290
- return updatedItem;
291
- }
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createDeleteRoutes = createDeleteRoutes;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- function createDeleteRoutes(queries) {
15
- function handleDelete(_x, _x2, _x3) {
16
- return _handleDelete.apply(this, arguments);
17
- }
18
-
19
- function _handleDelete() {
20
- _handleDelete = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req, res, next) {
21
- var _req$requestInfo, resourceName, id, item;
22
-
23
- return _regenerator["default"].wrap(function _callee$(_context) {
24
- while (1) {
25
- switch (_context.prev = _context.next) {
26
- case 0:
27
- _context.prev = 0;
28
- _req$requestInfo = req.requestInfo, resourceName = _req$requestInfo.resourceName, id = _req$requestInfo.id;
29
-
30
- if (!id) {
31
- _context.next = 11;
32
- break;
33
- }
34
-
35
- _context.next = 5;
36
- return queries.getById(resourceName, id);
37
-
38
- case 5:
39
- item = _context.sent;
40
-
41
- if (!item) {
42
- _context.next = 9;
43
- break;
44
- }
45
-
46
- _context.next = 9;
47
- return queries.deleteById(resourceName, id);
48
-
49
- case 9:
50
- _context.next = 13;
51
- break;
52
-
53
- case 11:
54
- _context.next = 13;
55
- return queries.deleteAll(resourceName);
56
-
57
- case 13:
58
- _context.next = 18;
59
- break;
60
-
61
- case 15:
62
- _context.prev = 15;
63
- _context.t0 = _context["catch"](0);
64
- return _context.abrupt("return", next(_context.t0));
65
-
66
- case 18:
67
- return _context.abrupt("return", res.status(204).send());
68
-
69
- case 19:
70
- case "end":
71
- return _context.stop();
72
- }
73
- }
74
- }, _callee, null, [[0, 15]]);
75
- }));
76
- return _handleDelete.apply(this, arguments);
77
- }
78
-
79
- return {
80
- handleDelete: handleDelete
81
- };
82
- }
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createGetRoutes = createGetRoutes;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- function createGetRoutes(queries, cacheControl) {
15
- function handleGetResource(_x, _x2, _x3) {
16
- return _handleGetResource.apply(this, arguments);
17
- }
18
-
19
- function _handleGetResource() {
20
- _handleGetResource = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req, res, next) {
21
- var _req$requestInfo, resourceName, id, item, items;
22
-
23
- return _regenerator["default"].wrap(function _callee$(_context) {
24
- while (1) {
25
- switch (_context.prev = _context.next) {
26
- case 0:
27
- _context.prev = 0;
28
- _req$requestInfo = req.requestInfo, resourceName = _req$requestInfo.resourceName, id = _req$requestInfo.id;
29
- res.set('Cache-control', cacheControl);
30
-
31
- if (!id) {
32
- _context.next = 13;
33
- break;
34
- }
35
-
36
- _context.next = 6;
37
- return queries.getById(resourceName, id);
38
-
39
- case 6:
40
- item = _context.sent;
41
-
42
- if (item) {
43
- _context.next = 10;
44
- break;
45
- }
46
-
47
- res.status(404);
48
- return _context.abrupt("return", res.send());
49
-
50
- case 10:
51
- res.status(200);
52
- res.json(item);
53
- return _context.abrupt("return", res.send());
54
-
55
- case 13:
56
- _context.next = 15;
57
- return queries.getAll(resourceName);
58
-
59
- case 15:
60
- items = _context.sent;
61
- res.status(200);
62
- res.json(items);
63
- return _context.abrupt("return", res.send());
64
-
65
- case 21:
66
- _context.prev = 21;
67
- _context.t0 = _context["catch"](0);
68
- return _context.abrupt("return", next(_context.t0));
69
-
70
- case 24:
71
- case "end":
72
- return _context.stop();
73
- }
74
- }
75
- }, _callee, null, [[0, 21]]);
76
- }));
77
- return _handleGetResource.apply(this, arguments);
78
- }
79
-
80
- return {
81
- handleGetResource: handleGetResource
82
- };
83
- }
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createResourceRouter = createResourceRouter;
9
- exports.handleMethodNotAllowed = handleMethodNotAllowed;
10
- exports.handleNotFound = handleNotFound;
11
- exports.rootRouter = void 0;
12
-
13
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
-
15
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
-
17
- var _get = require("./get");
18
-
19
- var _post = require("./post");
20
-
21
- var _put = require("./put");
22
-
23
- var _delete = require("./delete");
24
-
25
- var _middleware = require("../urls/middleware");
26
-
27
- var _express = _interopRequireDefault(require("express"));
28
-
29
- function createResourceRouter(queries, _ref) {
30
- var validateResources = _ref.validateResources,
31
- resourceNames = _ref.resourceNames,
32
- apiPrefix = _ref.apiPrefix,
33
- cacheControl = _ref.cacheControl,
34
- requestBodyValidator = _ref.requestBodyValidator;
35
-
36
- var _createGetRoutes = (0, _get.createGetRoutes)(queries, cacheControl),
37
- handleGetResource = _createGetRoutes.handleGetResource;
38
-
39
- var _createPostRoutes = (0, _post.createPostRoutes)(queries, requestBodyValidator),
40
- handlePost = _createPostRoutes.handlePost;
41
-
42
- var _createPutRoutes = (0, _put.createPutRoutes)(queries, requestBodyValidator),
43
- handlePut = _createPutRoutes.handlePut;
44
-
45
- var _createDeleteRoutes = (0, _delete.createDeleteRoutes)(queries),
46
- handleDelete = _createDeleteRoutes.handleDelete;
47
-
48
- var validateResource = (0, _middleware.createValidateResourceMiddleware)(validateResources, resourceNames);
49
- var getResourceAndId = (0, _middleware.createResourceAndIdParser)(apiPrefix);
50
-
51
- var resourceRouter = _express["default"].Router();
52
-
53
- resourceRouter.get('*', getResourceAndId, validateResource, handleGetResource).post('*', getResourceAndId, validateResource, handlePost).put('*', getResourceAndId, validateResource, handlePut)["delete"]('*', getResourceAndId, validateResource, handleDelete);
54
- return resourceRouter;
55
- } // A GET to the root URL shows a default message.
56
-
57
-
58
- var rootRouter = _express["default"].Router();
59
-
60
- exports.rootRouter = rootRouter;
61
- rootRouter.get('/', /*#__PURE__*/function () {
62
- var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_, res) {
63
- return _regenerator["default"].wrap(function _callee$(_context) {
64
- while (1) {
65
- switch (_context.prev = _context.next) {
66
- case 0:
67
- return _context.abrupt("return", res.send('It works! ツ'));
68
-
69
- case 1:
70
- case "end":
71
- return _context.stop();
72
- }
73
- }
74
- }, _callee);
75
- }));
76
-
77
- return function (_x, _x2) {
78
- return _ref2.apply(this, arguments);
79
- };
80
- }()); // All other requests to the root URL are not allowed.
81
-
82
- rootRouter.all('/', handleMethodNotAllowed); // Route for handling not allowed methods.
83
-
84
- function handleMethodNotAllowed(_, res) {
85
- res.status(405).json({
86
- message: 'Method Not Allowed'
87
- });
88
- } // Route for handling not found.
89
-
90
-
91
- function handleNotFound(_, res) {
92
- res.status(404).json({
93
- message: 'Not Found'
94
- });
95
- }
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createPostRoutes = createPostRoutes;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _url = require("url");
15
-
16
- var _validator = require("./validator");
17
-
18
- function createPostRoutes(queries, requestBodyValidator) {
19
- function handlePost(_x, _x2, _x3) {
20
- return _handlePost.apply(this, arguments);
21
- }
22
-
23
- function _handlePost() {
24
- _handlePost = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req, res, next) {
25
- var resourceName, requestBody, newItem;
26
- return _regenerator["default"].wrap(function _callee$(_context) {
27
- while (1) {
28
- switch (_context.prev = _context.next) {
29
- case 0:
30
- _context.prev = 0;
31
- resourceName = req.requestInfo.resourceName;
32
- requestBody = (0, _validator.validateRequestBody)(requestBodyValidator.post, resourceName, req.body);
33
- _context.next = 5;
34
- return queries.create(resourceName, requestBody);
35
-
36
- case 5:
37
- newItem = _context.sent;
38
- return _context.abrupt("return", res.set({
39
- Location: (0, _url.format)({
40
- protocol: req.protocol,
41
- host: req.get('host'),
42
- pathname: "".concat(resourceName, "/").concat(newItem.id)
43
- })
44
- }).status(201).json(newItem).send());
45
-
46
- case 9:
47
- _context.prev = 9;
48
- _context.t0 = _context["catch"](0);
49
- return _context.abrupt("return", next(_context.t0));
50
-
51
- case 12:
52
- case "end":
53
- return _context.stop();
54
- }
55
- }
56
- }, _callee, null, [[0, 9]]);
57
- }));
58
- return _handlePost.apply(this, arguments);
59
- }
60
-
61
- return {
62
- handlePost: handlePost
63
- };
64
- }
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createPutRoutes = createPutRoutes;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _errors = require("../errors");
17
-
18
- var _validator = require("./validator");
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
-
24
- function createPutRoutes(queries, requestBodyValidator) {
25
- function handlePut(_x, _x2, _x3) {
26
- return _handlePut.apply(this, arguments);
27
- }
28
-
29
- function _handlePut() {
30
- _handlePut = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req, res, next) {
31
- var _req$requestInfo, resourceName, id, requestBody, item, updatedItem;
32
-
33
- return _regenerator["default"].wrap(function _callee$(_context) {
34
- while (1) {
35
- switch (_context.prev = _context.next) {
36
- case 0:
37
- _context.prev = 0;
38
- _req$requestInfo = req.requestInfo, resourceName = _req$requestInfo.resourceName, id = _req$requestInfo.id;
39
- requestBody = (0, _validator.validateRequestBody)(requestBodyValidator.put, resourceName, req.body);
40
- item = null;
41
-
42
- if (!id) {
43
- _context.next = 8;
44
- break;
45
- }
46
-
47
- _context.next = 7;
48
- return queries.getById(resourceName, id);
49
-
50
- case 7:
51
- item = _context.sent;
52
-
53
- case 8:
54
- if (item) {
55
- _context.next = 10;
56
- break;
57
- }
58
-
59
- return _context.abrupt("return", next((0, _errors.new404NotFoundError)("ID '".concat(id, "' not found"))));
60
-
61
- case 10:
62
- item = _objectSpread(_objectSpread({}, requestBody), {}, {
63
- id: id
64
- });
65
- _context.next = 13;
66
- return queries.update(resourceName, item);
67
-
68
- case 13:
69
- updatedItem = _context.sent;
70
- return _context.abrupt("return", res.status(200).json(updatedItem).send());
71
-
72
- case 17:
73
- _context.prev = 17;
74
- _context.t0 = _context["catch"](0);
75
- return _context.abrupt("return", next(_context.t0));
76
-
77
- case 20:
78
- case "end":
79
- return _context.stop();
80
- }
81
- }
82
- }, _callee, null, [[0, 17]]);
83
- }));
84
- return _handlePut.apply(this, arguments);
85
- }
86
-
87
- return {
88
- handlePut: handlePut
89
- };
90
- }