temba 0.17.0 → 0.18.0

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.
Files changed (67) hide show
  1. package/README.md +44 -8
  2. package/config/index.d.ts +10 -5
  3. package/config/index.js +37 -14
  4. package/config/index.js.map +1 -1
  5. package/delay/delayMiddleware.js +1 -1
  6. package/delay/delayMiddleware.js.map +1 -1
  7. package/index.js +26 -22
  8. package/index.js.map +1 -1
  9. package/package.json +16 -14
  10. package/queries/in-memory.d.ts +9 -8
  11. package/queries/in-memory.js +46 -24
  12. package/queries/in-memory.js.map +1 -1
  13. package/queries/mongo.d.ts +1 -1
  14. package/queries/mongo.js +170 -58
  15. package/queries/mongo.js.map +1 -1
  16. package/queries/queries.d.ts +0 -9
  17. package/queries/queries.js +3 -3
  18. package/queries/queries.js.map +1 -1
  19. package/queries/types.d.ts +14 -0
  20. package/queries/types.js +3 -0
  21. package/queries/types.js.map +1 -0
  22. package/routes/delete.d.ts +5 -2
  23. package/routes/delete.js +55 -17
  24. package/routes/delete.js.map +1 -1
  25. package/routes/get.d.ts +5 -2
  26. package/routes/get.js +92 -48
  27. package/routes/get.js.map +1 -1
  28. package/routes/interceptRequestBody.d.ts +3 -0
  29. package/routes/interceptRequestBody.js +19 -0
  30. package/routes/interceptRequestBody.js.map +1 -0
  31. package/routes/patch.d.ts +6 -2
  32. package/routes/patch.js +82 -27
  33. package/routes/patch.js.map +1 -1
  34. package/routes/post.d.ts +6 -2
  35. package/routes/post.js +67 -27
  36. package/routes/post.js.map +1 -1
  37. package/routes/put.d.ts +6 -2
  38. package/routes/put.js +82 -27
  39. package/routes/put.js.map +1 -1
  40. package/routes/routes.d.ts +3 -1
  41. package/routes/routes.js +51 -22
  42. package/routes/routes.js.map +1 -1
  43. package/routes/types.d.ts +9 -3
  44. package/routes/utils.d.ts +1 -3
  45. package/routes/utils.js +7 -2
  46. package/routes/utils.js.map +1 -1
  47. package/schema/compile.d.ts +2 -0
  48. package/schema/compile.js +41 -0
  49. package/schema/compile.js.map +1 -0
  50. package/schema/transformConfig.d.ts +2 -0
  51. package/schema/transformConfig.js +17 -0
  52. package/schema/transformConfig.js.map +1 -0
  53. package/schema/types.d.ts +35 -0
  54. package/schema/types.js +3 -0
  55. package/schema/types.js.map +1 -0
  56. package/schema/validate.d.ts +3 -0
  57. package/schema/validate.js +19 -0
  58. package/schema/validate.js.map +1 -0
  59. package/urls/urlMiddleware.d.ts +4 -2
  60. package/urls/urlMiddleware.js +18 -7
  61. package/urls/urlMiddleware.js.map +1 -1
  62. package/urls/urlParser.d.ts +3 -3
  63. package/urls/urlParser.js +4 -4
  64. package/urls/urlParser.js.map +1 -1
  65. package/routes/interceptors.d.ts +0 -3
  66. package/routes/interceptors.js +0 -22
  67. package/routes/interceptors.js.map +0 -1
package/queries/mongo.js CHANGED
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,98 +19,199 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
19
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
20
  });
10
21
  };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
11
49
  Object.defineProperty(exports, "__esModule", { value: true });
12
- const mongo_1 = require("@rakered/mongo");
13
- let uri;
14
- let db;
50
+ var mongo_1 = require("@rakered/mongo");
51
+ var uri;
52
+ var db;
15
53
  function createMongoQueries(connectionString) {
16
54
  uri = connectionString;
17
55
  return {
18
- connectToDatabase,
19
- getAll,
20
- getById,
21
- create,
22
- update,
23
- replace,
24
- deleteById,
25
- deleteAll,
56
+ connectToDatabase: connectToDatabase,
57
+ getAll: getAll,
58
+ getById: getById,
59
+ create: create,
60
+ update: update,
61
+ replace: replace,
62
+ deleteById: deleteById,
63
+ deleteAll: deleteAll,
26
64
  };
27
65
  }
28
66
  exports.default = createMongoQueries;
29
67
  function connectToDatabase() {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- if (!db) {
32
- console.log('Connecting to MongoDB...');
33
- try {
34
- db = yield (0, mongo_1.connect)(uri);
35
- console.log('Connected to MongoDB!');
36
- }
37
- catch (error) {
38
- console.log('Error connecting to MongoDB:');
39
- console.error(error);
68
+ return __awaiter(this, void 0, void 0, function () {
69
+ var error_1;
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0:
73
+ if (!!db) return [3 /*break*/, 4];
74
+ console.log('Connecting to MongoDB...');
75
+ _a.label = 1;
76
+ case 1:
77
+ _a.trys.push([1, 3, , 4]);
78
+ return [4 /*yield*/, (0, mongo_1.connect)(uri)];
79
+ case 2:
80
+ db = _a.sent();
81
+ console.log('Connected to MongoDB!');
82
+ return [3 /*break*/, 4];
83
+ case 3:
84
+ error_1 = _a.sent();
85
+ console.log('Error connecting to MongoDB:');
86
+ console.error(error_1);
87
+ return [3 /*break*/, 4];
88
+ case 4: return [2 /*return*/];
40
89
  }
41
- }
90
+ });
42
91
  });
43
92
  }
44
93
  function getAll(resource) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- yield connectToDatabase();
47
- const items = yield db[resource].find({});
48
- if (!items)
49
- return [];
50
- return items.map((item) => removeUnderscoreFromId(item));
94
+ return __awaiter(this, void 0, void 0, function () {
95
+ var items;
96
+ return __generator(this, function (_a) {
97
+ switch (_a.label) {
98
+ case 0: return [4 /*yield*/, connectToDatabase()];
99
+ case 1:
100
+ _a.sent();
101
+ return [4 /*yield*/, db[resource].find({})];
102
+ case 2:
103
+ items = _a.sent();
104
+ if (!items)
105
+ return [2 /*return*/, []];
106
+ return [2 /*return*/, items.map(function (item) { return removeUnderscoreFromId(item); })];
107
+ }
108
+ });
51
109
  });
52
110
  }
53
111
  function getById(resource, id) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- yield connectToDatabase();
56
- const item = yield db[resource].findOne({ _id: id });
57
- if (!item)
58
- return null;
59
- return removeUnderscoreFromId(item);
112
+ return __awaiter(this, void 0, void 0, function () {
113
+ var item;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0: return [4 /*yield*/, connectToDatabase()];
117
+ case 1:
118
+ _a.sent();
119
+ return [4 /*yield*/, db[resource].findOne({ _id: id })];
120
+ case 2:
121
+ item = _a.sent();
122
+ if (!item)
123
+ return [2 /*return*/, null];
124
+ return [2 /*return*/, removeUnderscoreFromId(item)];
125
+ }
126
+ });
60
127
  });
61
128
  }
62
129
  function create(resource, item) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- yield connectToDatabase();
65
- const createdItem = yield db[resource].insertOne(item);
66
- return removeUnderscoreFromId(createdItem.ops[0]);
130
+ return __awaiter(this, void 0, void 0, function () {
131
+ var createdItem;
132
+ return __generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0: return [4 /*yield*/, connectToDatabase()];
135
+ case 1:
136
+ _a.sent();
137
+ return [4 /*yield*/, db[resource].insertOne(item)];
138
+ case 2:
139
+ createdItem = _a.sent();
140
+ return [2 /*return*/, removeUnderscoreFromId(createdItem.ops[0])];
141
+ }
142
+ });
67
143
  });
68
144
  }
69
145
  function update(resource, item) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- yield connectToDatabase();
72
- const id = item.id;
73
- delete item.id;
74
- const updatedItem = yield db[resource].findOneAndUpdate({ _id: id }, { $set: item }, { returnOriginal: false });
75
- return removeUnderscoreFromId(updatedItem.value);
146
+ return __awaiter(this, void 0, void 0, function () {
147
+ var id, updatedItem;
148
+ return __generator(this, function (_a) {
149
+ switch (_a.label) {
150
+ case 0: return [4 /*yield*/, connectToDatabase()];
151
+ case 1:
152
+ _a.sent();
153
+ id = item.id;
154
+ delete item.id;
155
+ return [4 /*yield*/, db[resource].findOneAndUpdate({ _id: id }, { $set: item }, { returnOriginal: false })];
156
+ case 2:
157
+ updatedItem = _a.sent();
158
+ return [2 /*return*/, removeUnderscoreFromId(updatedItem.value)];
159
+ }
160
+ });
76
161
  });
77
162
  }
78
163
  function replace(resource, item) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- yield connectToDatabase();
81
- const id = item.id;
82
- delete item.id;
83
- const replacedItem = yield db[resource].findOneAndReplace({ _id: id }, item, {
84
- returnOriginal: false,
164
+ return __awaiter(this, void 0, void 0, function () {
165
+ var id, replacedItem;
166
+ return __generator(this, function (_a) {
167
+ switch (_a.label) {
168
+ case 0: return [4 /*yield*/, connectToDatabase()];
169
+ case 1:
170
+ _a.sent();
171
+ id = item.id;
172
+ delete item.id;
173
+ return [4 /*yield*/, db[resource].findOneAndReplace({ _id: id }, item, {
174
+ returnOriginal: false,
175
+ })];
176
+ case 2:
177
+ replacedItem = _a.sent();
178
+ return [2 /*return*/, removeUnderscoreFromId(replacedItem.value)];
179
+ }
85
180
  });
86
- return removeUnderscoreFromId(replacedItem.value);
87
181
  });
88
182
  }
89
183
  function deleteById(resource, id) {
90
- return __awaiter(this, void 0, void 0, function* () {
91
- yield connectToDatabase();
92
- yield db[resource].deleteOne({ _id: id });
184
+ return __awaiter(this, void 0, void 0, function () {
185
+ return __generator(this, function (_a) {
186
+ switch (_a.label) {
187
+ case 0: return [4 /*yield*/, connectToDatabase()];
188
+ case 1:
189
+ _a.sent();
190
+ return [4 /*yield*/, db[resource].deleteOne({ _id: id })];
191
+ case 2:
192
+ _a.sent();
193
+ return [2 /*return*/];
194
+ }
195
+ });
93
196
  });
94
197
  }
95
198
  function deleteAll(resource) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- yield connectToDatabase();
98
- yield db[resource].deleteMany({});
199
+ return __awaiter(this, void 0, void 0, function () {
200
+ return __generator(this, function (_a) {
201
+ switch (_a.label) {
202
+ case 0: return [4 /*yield*/, connectToDatabase()];
203
+ case 1:
204
+ _a.sent();
205
+ return [4 /*yield*/, db[resource].deleteMany({})];
206
+ case 2:
207
+ _a.sent();
208
+ return [2 /*return*/];
209
+ }
210
+ });
99
211
  });
100
212
  }
101
213
  function removeUnderscoreFromId(item) {
102
- const updatedItem = Object.assign(Object.assign({}, item), { id: item._id });
214
+ var updatedItem = __assign(__assign({}, item), { id: item._id });
103
215
  delete updatedItem._id;
104
216
  return updatedItem;
105
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/queries/mongo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/queries/mongo.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,5 @@ declare function createQueries(connectionString: any): {
7
7
  replace: (resource: any, item: any) => Promise<any>;
8
8
  deleteById: (resource: any, id: any) => Promise<void>;
9
9
  deleteAll: (resource: any) => Promise<void>;
10
- } | {
11
- connectToDatabase: () => void;
12
- getAll: (resource: any) => Promise<unknown>;
13
- getById: (resource: any, id: any) => Promise<unknown>;
14
- create: (resource: any, item: any) => Promise<unknown>;
15
- update: (resource: any, item: any) => Promise<unknown>;
16
- replace: (resource: any, item: any) => Promise<unknown>;
17
- deleteById: (resource: any, id: any) => Promise<void>;
18
- deleteAll: (resource: any) => Promise<unknown>;
19
10
  };
20
11
  export { createQueries };
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createQueries = void 0;
7
- const in_memory_1 = __importDefault(require("./in-memory"));
8
- const mongo_1 = __importDefault(require("./mongo"));
7
+ var in_memory_1 = __importDefault(require("./in-memory"));
8
+ var mongo_1 = __importDefault(require("./mongo"));
9
9
  function createQueries(connectionString) {
10
10
  if (!connectionString) {
11
11
  return in_memory_1.default;
12
12
  }
13
- const mongoQueries = (0, mongo_1.default)(connectionString);
13
+ var mongoQueries = (0, mongo_1.default)(connectionString);
14
14
  return mongoQueries;
15
15
  }
16
16
  exports.createQueries = createQueries;
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/queries/queries.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAyC;AACzC,oDAAwC;AAExC,SAAS,aAAa,CAAC,gBAAgB;IACrC,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,mBAAe,CAAA;KACvB;IAED,MAAM,YAAY,GAAG,IAAA,eAAkB,EAAC,gBAAgB,CAAC,CAAA;IACzD,OAAO,YAAY,CAAA;AACrB,CAAC;AAEQ,sCAAa"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/queries/queries.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAyC;AACzC,kDAAwC;AAExC,SAAS,aAAa,CAAC,gBAAgB;IACrC,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,mBAAe,CAAA;KACvB;IAED,IAAM,YAAY,GAAG,IAAA,eAAkB,EAAC,gBAAgB,CAAC,CAAA;IACzD,OAAO,YAAY,CAAA;AACrB,CAAC;AAEQ,sCAAa"}
@@ -0,0 +1,14 @@
1
+ export type Item = {
2
+ id: string;
3
+ [key: string]: unknown;
4
+ };
5
+ export type Queries = {
6
+ connectToDatabase: () => Promise<void>;
7
+ getAll: (resource: string) => Promise<Item[]>;
8
+ getById: (resource: string, id: string) => Promise<Item>;
9
+ create: (resource: string, item: unknown) => Promise<Item>;
10
+ update: (resource: string, item: unknown) => Promise<Item>;
11
+ replace: (resource: string, item: unknown) => Promise<Item>;
12
+ deleteById: (resource: string, id: string) => Promise<void>;
13
+ deleteAll: (resource: string) => Promise<void>;
14
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/queries/types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,7 @@
1
- declare function createDeleteRoutes(queries: any): {
2
- handleDelete: (req: any, res: any) => Promise<any>;
1
+ import { Response } from 'express';
2
+ import { Queries } from '../queries/types';
3
+ import { ExtendedRequest } from './types';
4
+ declare function createDeleteRoutes(queries: Queries): {
5
+ handleDelete: (req: ExtendedRequest, res: Response) => Promise<Response<any, Record<string, any>>>;
3
6
  };
4
7
  export { createDeleteRoutes };
package/routes/delete.js CHANGED
@@ -8,31 +8,69 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
11
38
  Object.defineProperty(exports, "__esModule", { value: true });
12
39
  exports.createDeleteRoutes = void 0;
13
40
  function createDeleteRoutes(queries) {
14
41
  function handleDelete(req, res) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- try {
17
- const { resource, id } = req.requestInfo;
18
- if (id) {
19
- const item = yield queries.getById(resource, id);
20
- if (item) {
21
- yield queries.deleteById(resource, id);
22
- }
42
+ return __awaiter(this, void 0, void 0, function () {
43
+ var _a, resource, id, item, error_1;
44
+ return __generator(this, function (_b) {
45
+ switch (_b.label) {
46
+ case 0:
47
+ _b.trys.push([0, 7, , 8]);
48
+ _a = req.requestInfo, resource = _a.resource, id = _a.id;
49
+ if (!id) return [3 /*break*/, 4];
50
+ return [4 /*yield*/, queries.getById(resource, id)];
51
+ case 1:
52
+ item = _b.sent();
53
+ if (!item) return [3 /*break*/, 3];
54
+ return [4 /*yield*/, queries.deleteById(resource, id)];
55
+ case 2:
56
+ _b.sent();
57
+ _b.label = 3;
58
+ case 3: return [3 /*break*/, 6];
59
+ case 4: return [4 /*yield*/, queries.deleteAll(resource)];
60
+ case 5:
61
+ _b.sent();
62
+ _b.label = 6;
63
+ case 6: return [3 /*break*/, 8];
64
+ case 7:
65
+ error_1 = _b.sent();
66
+ return [2 /*return*/, res.status(500).json({ message: error_1.message })];
67
+ case 8: return [2 /*return*/, res.status(204).send()];
23
68
  }
24
- else {
25
- yield queries.deleteAll(resource);
26
- }
27
- }
28
- catch (error) {
29
- return res.status(500).json({ message: error.message });
30
- }
31
- return res.status(204).send();
69
+ });
32
70
  });
33
71
  }
34
72
  return {
35
- handleDelete,
73
+ handleDelete: handleDelete,
36
74
  };
37
75
  }
38
76
  exports.createDeleteRoutes = createDeleteRoutes;
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/routes/delete.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,SAAS,kBAAkB,CAAC,OAAO;IACjC,SAAe,YAAY,CAAC,GAAG,EAAE,GAAG;;YAClC,IAAI;gBACF,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAExC,IAAI,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;oBAChD,IAAI,IAAI,EAAE;wBACR,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;qBACvC;iBACF;qBAAM;oBACL,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;iBAClC;aACF;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;YAED,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/B,CAAC;KAAA;IAED,OAAO;QACL,YAAY;KACb,CAAA;AACH,CAAC;AAEQ,gDAAkB"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/routes/delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,SAAe,YAAY,CAAC,GAAoB,EAAE,GAAa;;;;;;;wBAErD,KAAmB,GAAG,CAAC,WAAW,EAAhC,QAAQ,cAAA,EAAE,EAAE,QAAA,CAAoB;6BAEpC,EAAE,EAAF,wBAAE;wBACS,qBAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAA;;wBAA1C,IAAI,GAAG,SAAmC;6BAC5C,IAAI,EAAJ,wBAAI;wBACN,qBAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAA;;wBAAtC,SAAsC,CAAA;;;4BAGxC,qBAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAA;;wBAAjC,SAAiC,CAAA;;;;;wBAGnC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,OAAe,CAAC,OAAO,EAAE,CAAC,EAAA;4BAGpE,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAA;;;;KAC9B;IAED,OAAO;QACL,YAAY,cAAA;KACb,CAAA;AACH,CAAC;AAEQ,gDAAkB"}
package/routes/get.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- declare function createGetRoutes(queries: any, cacheControl: any, responseBodyInterceptor: any, returnNullFields: any): {
2
- handleGetResource: (req: any, res: any) => Promise<any>;
1
+ import { Response } from 'express';
2
+ import { Queries } from '../queries/types';
3
+ import { ExtendedRequest, ResponseBodyInterceptor } from './types';
4
+ declare function createGetRoutes(queries: Queries, cacheControl: string, responseBodyInterceptor: ResponseBodyInterceptor, returnNullFields: boolean): {
5
+ handleGet: (req: ExtendedRequest, res: Response) => Promise<Response<any, Record<string, any>>>;
3
6
  };
4
7
  export { createGetRoutes };
package/routes/get.js CHANGED
@@ -8,63 +8,107 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
11
38
  Object.defineProperty(exports, "__esModule", { value: true });
12
39
  exports.createGetRoutes = void 0;
13
- const utils_1 = require("./utils");
40
+ var utils_1 = require("./utils");
41
+ var intercept = function (interceptor, info) {
42
+ if (!interceptor)
43
+ return info.body;
44
+ var intercepted = interceptor(info);
45
+ return intercepted ? intercepted : info.body;
46
+ };
14
47
  function createGetRoutes(queries, cacheControl, responseBodyInterceptor, returnNullFields) {
15
- function handleGetResource(req, res) {
16
- return __awaiter(this, void 0, void 0, function* () {
17
- try {
18
- const { resource, id } = req.requestInfo;
19
- res.set('Cache-control', cacheControl);
20
- if (id) {
21
- const item = yield queries.getById(resource, id);
22
- if (!item) {
23
- res.status(404);
24
- return res.send();
25
- }
26
- let theItem = item;
27
- if (responseBodyInterceptor) {
28
- try {
29
- theItem = responseBodyInterceptor({ resource, body: item, id });
30
- if (!theItem)
31
- theItem = item;
48
+ function handleGet(req, res) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var _a, resource, id, item, theItem, items, theItems, error_1;
51
+ return __generator(this, function (_b) {
52
+ switch (_b.label) {
53
+ case 0:
54
+ _b.trys.push([0, 4, , 5]);
55
+ _a = req.requestInfo, resource = _a.resource, id = _a.id;
56
+ res.set('Cache-control', cacheControl);
57
+ if (!id) return [3 /*break*/, 2];
58
+ return [4 /*yield*/, queries.getById(resource, id)];
59
+ case 1:
60
+ item = _b.sent();
61
+ if (!item) {
62
+ res.status(404);
63
+ return [2 /*return*/, res.send()];
32
64
  }
33
- catch (error) {
34
- return res.status(500).json({
35
- message: 'Error in responseBodyInterceptor: ' + error.message,
36
- });
65
+ theItem = intercept(responseBodyInterceptor, { resource: resource, body: item, id: id });
66
+ res.status(200);
67
+ if (returnNullFields) {
68
+ res.json(theItem);
37
69
  }
38
- }
39
- res.status(200);
40
- res.json(returnNullFields ? theItem : (0, utils_1.removeNullFields)(theItem));
41
- return res.send();
42
- }
43
- const items = yield queries.getAll(resource);
44
- let theItems = items;
45
- if (responseBodyInterceptor) {
46
- try {
47
- theItems = responseBodyInterceptor({ resource, body: items });
48
- if (!theItems)
49
- theItems = items;
50
- }
51
- catch (error) {
52
- return res.status(500).json({
53
- message: 'Error in responseBodyInterceptor: ' + error.message,
54
- });
55
- }
70
+ else {
71
+ if (Array.isArray(theItem)) {
72
+ res.json(theItem.map(function (item) { return (0, utils_1.removeNullFields)(item); }));
73
+ }
74
+ else if (typeof theItem === 'object') {
75
+ res.json((0, utils_1.removeNullFields)(theItem));
76
+ }
77
+ else {
78
+ res.json(theItem);
79
+ }
80
+ }
81
+ return [2 /*return*/, res.send()];
82
+ case 2: return [4 /*yield*/, queries.getAll(resource)];
83
+ case 3:
84
+ items = _b.sent();
85
+ theItems = intercept(responseBodyInterceptor, { resource: resource, body: items });
86
+ res.status(200);
87
+ if (returnNullFields) {
88
+ res.json(theItems);
89
+ }
90
+ else {
91
+ if (Array.isArray(theItems)) {
92
+ res.json(theItems.map(function (item) { return (0, utils_1.removeNullFields)(item); }));
93
+ }
94
+ else if (typeof theItems === 'object') {
95
+ res.json((0, utils_1.removeNullFields)(theItems));
96
+ }
97
+ else {
98
+ res.json(theItems);
99
+ }
100
+ }
101
+ return [2 /*return*/, res.send()];
102
+ case 4:
103
+ error_1 = _b.sent();
104
+ return [2 /*return*/, res.status(500).json({ message: error_1.message })];
105
+ case 5: return [2 /*return*/];
56
106
  }
57
- res.status(200);
58
- res.json(returnNullFields ? theItems : theItems.map((item) => (0, utils_1.removeNullFields)(item)));
59
- return res.send();
60
- }
61
- catch (error) {
62
- return res.status(500).json({ message: error.message });
63
- }
107
+ });
64
108
  });
65
109
  }
66
110
  return {
67
- handleGetResource,
111
+ handleGet: handleGet,
68
112
  };
69
113
  }
70
114
  exports.createGetRoutes = createGetRoutes;