@open-norantec/herbal 1.0.1 → 1.0.2-alpha.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.
@@ -21,6 +21,7 @@ var getEntryFileContent = function (_a) {
21
21
  ' }',
22
22
  ' const app = await NestFactory.create(entryOptions?.Module, {',
23
23
  ' ...entryOptions?.factoryOptions,',
24
+ ' bodyParser: false,',
24
25
  ' });',
25
26
  '\n if (entryOptions?.cors !== false) {',
26
27
  ' app.enableCors({',
package/dist/core.js CHANGED
@@ -61,13 +61,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
61
61
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
62
  }
63
63
  };
64
- var __asyncValues = (this && this.__asyncValues) || function (o) {
65
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
66
- var m = o[Symbol.asyncIterator], i;
67
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
68
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
69
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
70
- };
71
64
  Object.defineProperty(exports, "__esModule", { value: true });
72
65
  exports.HerbalController = void 0;
73
66
  require("reflect-metadata");
@@ -108,102 +101,54 @@ var HerbalController = exports.HerbalController = (function () {
108
101
  }); };
109
102
  };
110
103
  }
111
- HerbalController.prototype.handler = function (request, input) {
112
- var _a, request_1, request_1_1;
113
- var _b, e_1, _c, _d;
114
- var _e, _f, _g, _h, _j, _k;
104
+ HerbalController.prototype.handler = function (request) {
105
+ var _a, _b, _c, _d, _e, _f;
115
106
  return __awaiter(this, void 0, void 0, function () {
116
- var body, methodHandler, chunks_1, chunk, e_1_1, _l, parsedBody, result, _m, _o, error_1;
117
- var _p;
118
- return __generator(this, function (_q) {
119
- switch (_q.label) {
107
+ var methodHandler, parsedBody, result, _g, _h, error_1;
108
+ var _j;
109
+ return __generator(this, function (_k) {
110
+ switch (_k.label) {
120
111
  case 0:
121
- body = input;
122
112
  methodHandler = this[request === null || request === void 0 ? void 0 : request.methodName];
123
- if (!!_.isPlainObject(input)) return [3, 16];
124
- chunks_1 = [];
125
- _q.label = 1;
113
+ parsedBody = _.attempt(function () { return JSON.parse((request === null || request === void 0 ? void 0 : request.rawBody) || ''); });
114
+ _k.label = 1;
126
115
  case 1:
127
- _q.trys.push([1, 14, , 15]);
128
- _q.label = 2;
116
+ _k.trys.push([1, 12, , 13]);
117
+ if (!(typeof methodHandler === 'function')) return [3, 7];
118
+ _j = {};
119
+ return [4, methodHandler(request, parsedBody instanceof Error ? undefined : parsedBody, header_util_class_1.HeaderUtil.parse((_a = request.headers) !== null && _a !== void 0 ? _a : {})).then(function (response) { return response === null || response === void 0 ? void 0 : response.response; })];
129
120
  case 2:
130
- _q.trys.push([2, 7, 8, 13]);
131
- _a = true, request_1 = __asyncValues(request);
132
- _q.label = 3;
133
- case 3: return [4, request_1.next()];
121
+ result = (_j.data = _k.sent(),
122
+ _j.token = string_util_class_1.StringUtil.isFalsyString((_b = request === null || request === void 0 ? void 0 : request.authenticateResult) === null || _b === void 0 ? void 0 : _b.nextToken)
123
+ ? null
124
+ : request.authenticateResult.nextToken,
125
+ _j);
126
+ _k.label = 3;
127
+ case 3:
128
+ _k.trys.push([3, 5, , 6]);
129
+ return [4, ((_d = (_c = request === null || request === void 0 ? void 0 : request.transaction) === null || _c === void 0 ? void 0 : _c.commit) === null || _d === void 0 ? void 0 : _d.call(_c))];
134
130
  case 4:
135
- if (!(request_1_1 = _q.sent(), _b = request_1_1.done, !_b)) return [3, 6];
136
- _d = request_1_1.value;
137
- _a = false;
138
- chunk = _d;
139
- chunks_1.push(chunk);
140
- _q.label = 5;
131
+ _k.sent();
132
+ return [3, 6];
141
133
  case 5:
142
- _a = true;
143
- return [3, 3];
144
- case 6: return [3, 13];
134
+ _g = _k.sent();
135
+ return [3, 6];
136
+ case 6: return [2, result];
145
137
  case 7:
146
- e_1_1 = _q.sent();
147
- e_1 = { error: e_1_1 };
148
- return [3, 13];
138
+ _k.trys.push([7, 9, , 10]);
139
+ return [4, ((_f = (_e = request === null || request === void 0 ? void 0 : request.transaction) === null || _e === void 0 ? void 0 : _e.rollback) === null || _f === void 0 ? void 0 : _f.call(_e))];
149
140
  case 8:
150
- _q.trys.push([8, , 11, 12]);
151
- if (!(!_a && !_b && (_c = request_1.return))) return [3, 10];
152
- return [4, _c.call(request_1)];
141
+ _k.sent();
142
+ return [3, 10];
153
143
  case 9:
154
- _q.sent();
155
- _q.label = 10;
156
- case 10: return [3, 12];
157
- case 11:
158
- if (e_1) throw e_1.error;
159
- return [7];
160
- case 12: return [7];
161
- case 13: return [3, 15];
162
- case 14:
163
- _l = _q.sent();
164
- return [3, 15];
165
- case 15:
166
- parsedBody = _.attempt(function () { return JSON.parse(Buffer.concat(chunks_1).toString('utf8')); });
167
- if (!(parsedBody instanceof Error))
168
- body = parsedBody;
169
- _q.label = 16;
170
- case 16:
171
- _q.trys.push([16, 27, , 28]);
172
- if (!(typeof methodHandler === 'function')) return [3, 22];
173
- _p = {};
174
- return [4, methodHandler(request, body, header_util_class_1.HeaderUtil.parse((_e = request.headers) !== null && _e !== void 0 ? _e : {})).then(function (response) { return response === null || response === void 0 ? void 0 : response.response; })];
175
- case 17:
176
- result = (_p.data = _q.sent(),
177
- _p.token = string_util_class_1.StringUtil.isFalsyString((_f = request === null || request === void 0 ? void 0 : request.authenticateResult) === null || _f === void 0 ? void 0 : _f.nextToken)
178
- ? null
179
- : request.authenticateResult.nextToken,
180
- _p);
181
- _q.label = 18;
182
- case 18:
183
- _q.trys.push([18, 20, , 21]);
184
- return [4, ((_h = (_g = request === null || request === void 0 ? void 0 : request.transaction) === null || _g === void 0 ? void 0 : _g.commit) === null || _h === void 0 ? void 0 : _h.call(_g))];
185
- case 19:
186
- _q.sent();
187
- return [3, 21];
188
- case 20:
189
- _m = _q.sent();
190
- return [3, 21];
191
- case 21: return [2, result];
192
- case 22:
193
- _q.trys.push([22, 24, , 25]);
194
- return [4, ((_k = (_j = request === null || request === void 0 ? void 0 : request.transaction) === null || _j === void 0 ? void 0 : _j.rollback) === null || _k === void 0 ? void 0 : _k.call(_j))];
195
- case 23:
196
- _q.sent();
197
- return [3, 25];
198
- case 24:
199
- _o = _q.sent();
200
- return [3, 25];
201
- case 25: throw new common_1.NotFoundException();
202
- case 26: return [3, 28];
203
- case 27:
204
- error_1 = _q.sent();
144
+ _h = _k.sent();
145
+ return [3, 10];
146
+ case 10: throw new common_1.NotFoundException();
147
+ case 11: return [3, 13];
148
+ case 12:
149
+ error_1 = _k.sent();
205
150
  throw error_1;
206
- case 28: return [2];
151
+ case 13: return [2];
207
152
  }
208
153
  });
209
154
  });
@@ -211,9 +156,8 @@ var HerbalController = exports.HerbalController = (function () {
211
156
  __decorate([
212
157
  (0, common_1.Post)('*'),
213
158
  __param(0, (0, common_1.Req)()),
214
- __param(1, (0, common_1.Body)()),
215
159
  __metadata("design:type", Function),
216
- __metadata("design:paramtypes", [Object, Object]),
160
+ __metadata("design:paramtypes", [Object]),
217
161
  __metadata("design:returntype", Promise)
218
162
  ], HerbalController.prototype, "handler", null);
219
163
  return HerbalController;
@@ -3,6 +3,7 @@ import { AuthenticateResult } from '../abstracts/auth-adapter.abstract.class';
3
3
  import { Transaction } from 'sequelize';
4
4
  export type Request = ExpressRequest & {
5
5
  methodName: string;
6
+ rawBody: string | null;
6
7
  traceId: string;
7
8
  authenticateResult?: AuthenticateResult;
8
9
  transaction?: Transaction;
@@ -55,6 +55,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
55
55
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
56
56
  }
57
57
  };
58
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
59
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
60
+ var m = o[Symbol.asyncIterator], i;
61
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
62
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
63
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
64
+ };
58
65
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
59
66
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
60
67
  if (ar || !(i in from)) {
@@ -148,20 +155,21 @@ function HerbalGuard(options) {
148
155
  this.ref = ref;
149
156
  }
150
157
  HerbalGuardMixin.prototype.canActivate = function (context) {
151
- var _a, _b, _c, _d, _e;
158
+ var _a, e_1, _b, _c;
159
+ var _d, _e, _f, _g, _h;
152
160
  return __awaiter(this, void 0, void 0, function () {
153
- var sequelizeInstance, transaction, request, response, traceId, authAdapters, _i, authAdapters_1, AuthAdapterClass, adapter, authenticateResult, error_1, _f;
161
+ var sequelizeInstance, transaction, request, response, traceId, chunks, _j, request_1, request_1_1, chunk, e_1_1, _k, parsedBody, authAdapters, _i, authAdapters_1, AuthAdapterClass, adapter, authenticateResult, error_1, _l;
154
162
  var _this = this;
155
- return __generator(this, function (_g) {
156
- switch (_g.label) {
163
+ return __generator(this, function (_m) {
164
+ switch (_m.label) {
157
165
  case 0:
158
166
  sequelizeInstance = _.attempt(function () { return _this.ref.get(sequelize_typescript_1.Sequelize, { strict: false }); });
159
167
  transaction = undefined;
160
168
  if (!!(sequelizeInstance instanceof Error)) return [3, 2];
161
- return [4, ((_b = (_a = sequelizeInstance === null || sequelizeInstance === void 0 ? void 0 : sequelizeInstance.transaction) === null || _a === void 0 ? void 0 : _a.call(sequelizeInstance)) === null || _b === void 0 ? void 0 : _b.catch(function () { return Promise.resolve(undefined); }))];
169
+ return [4, ((_e = (_d = sequelizeInstance === null || sequelizeInstance === void 0 ? void 0 : sequelizeInstance.transaction) === null || _d === void 0 ? void 0 : _d.call(sequelizeInstance)) === null || _e === void 0 ? void 0 : _e.catch(function () { return Promise.resolve(undefined); }))];
162
170
  case 1:
163
- transaction = _g.sent();
164
- _g.label = 2;
171
+ transaction = _m.sent();
172
+ _m.label = 2;
165
173
  case 2:
166
174
  request = context.switchToHttp().getRequest();
167
175
  response = context.switchToHttp().getResponse();
@@ -172,45 +180,94 @@ function HerbalGuard(options) {
172
180
  request.methodName = request.url.split('/').pop();
173
181
  request.transaction = transaction;
174
182
  response.setHeader(headers_constant_1.HEADERS.TRACE_ID, traceId);
175
- authAdapters = auth_adapter_decorator_1.AuthAdapters.getAdapters((_d = (_c = context === null || context === void 0 ? void 0 : context.getClass) === null || _c === void 0 ? void 0 : _c.call(context)) === null || _d === void 0 ? void 0 : _d.prototype, request.methodName);
176
- _g.label = 3;
183
+ chunks = [];
184
+ _m.label = 3;
177
185
  case 3:
178
- _g.trys.push([3, 9, , 14]);
179
- if (!(Array.isArray(authAdapters) && authAdapters.length > 0)) return [3, 8];
180
- _i = 0, authAdapters_1 = authAdapters;
181
- _g.label = 4;
186
+ _m.trys.push([3, 16, , 17]);
187
+ _m.label = 4;
182
188
  case 4:
183
- if (!(_i < authAdapters_1.length)) return [3, 7];
189
+ _m.trys.push([4, 9, 10, 15]);
190
+ _j = true, request_1 = __asyncValues(request);
191
+ _m.label = 5;
192
+ case 5: return [4, request_1.next()];
193
+ case 6:
194
+ if (!(request_1_1 = _m.sent(), _a = request_1_1.done, !_a)) return [3, 8];
195
+ _c = request_1_1.value;
196
+ _j = false;
197
+ chunk = _c;
198
+ chunks.push(chunk);
199
+ _m.label = 7;
200
+ case 7:
201
+ _j = true;
202
+ return [3, 5];
203
+ case 8: return [3, 15];
204
+ case 9:
205
+ e_1_1 = _m.sent();
206
+ e_1 = { error: e_1_1 };
207
+ return [3, 15];
208
+ case 10:
209
+ _m.trys.push([10, , 13, 14]);
210
+ if (!(!_j && !_a && (_b = request_1.return))) return [3, 12];
211
+ return [4, _b.call(request_1)];
212
+ case 11:
213
+ _m.sent();
214
+ _m.label = 12;
215
+ case 12: return [3, 14];
216
+ case 13:
217
+ if (e_1) throw e_1.error;
218
+ return [7];
219
+ case 14: return [7];
220
+ case 15: return [3, 17];
221
+ case 16:
222
+ _k = _m.sent();
223
+ return [3, 17];
224
+ case 17:
225
+ parsedBody = _.attempt(function () { return Buffer.concat(chunks).toString('utf8'); });
226
+ if (!(parsedBody instanceof Error)) {
227
+ request.rawBody = parsedBody;
228
+ }
229
+ else {
230
+ request.rawBody = null;
231
+ }
232
+ authAdapters = auth_adapter_decorator_1.AuthAdapters.getAdapters((_g = (_f = context === null || context === void 0 ? void 0 : context.getClass) === null || _f === void 0 ? void 0 : _f.call(context)) === null || _g === void 0 ? void 0 : _g.prototype, request.methodName);
233
+ _m.label = 18;
234
+ case 18:
235
+ _m.trys.push([18, 24, , 29]);
236
+ if (!(Array.isArray(authAdapters) && authAdapters.length > 0)) return [3, 23];
237
+ _i = 0, authAdapters_1 = authAdapters;
238
+ _m.label = 19;
239
+ case 19:
240
+ if (!(_i < authAdapters_1.length)) return [3, 22];
184
241
  AuthAdapterClass = authAdapters_1[_i];
185
242
  adapter = new AuthAdapterClass(request, this.ref);
186
243
  if (!adapter.match())
187
- return [3, 6];
244
+ return [3, 21];
188
245
  return [4, adapter.authenticate(transaction)];
189
- case 5:
190
- authenticateResult = _g.sent();
246
+ case 20:
247
+ authenticateResult = _m.sent();
191
248
  if (!authenticateResult)
192
- return [3, 7];
249
+ return [3, 22];
193
250
  request.authenticateResult = __assign({ AuthenticatorClass: AuthAdapterClass }, authenticateResult);
194
251
  return [2, true];
195
- case 6:
252
+ case 21:
196
253
  _i++;
197
- return [3, 4];
198
- case 7: throw new common_2.UnauthorizedException();
199
- case 8: return [3, 14];
200
- case 9:
201
- error_1 = _g.sent();
202
- _g.label = 10;
203
- case 10:
204
- _g.trys.push([10, 12, , 13]);
205
- return [4, ((_e = transaction === null || transaction === void 0 ? void 0 : transaction.rollback) === null || _e === void 0 ? void 0 : _e.call(transaction))];
206
- case 11:
207
- _g.sent();
208
- return [3, 13];
209
- case 12:
210
- _f = _g.sent();
211
- return [3, 13];
212
- case 13: throw error_1;
213
- case 14: return [2, true];
254
+ return [3, 19];
255
+ case 22: throw new common_2.UnauthorizedException();
256
+ case 23: return [3, 29];
257
+ case 24:
258
+ error_1 = _m.sent();
259
+ _m.label = 25;
260
+ case 25:
261
+ _m.trys.push([25, 27, , 28]);
262
+ return [4, ((_h = transaction === null || transaction === void 0 ? void 0 : transaction.rollback) === null || _h === void 0 ? void 0 : _h.call(transaction))];
263
+ case 26:
264
+ _m.sent();
265
+ return [3, 28];
266
+ case 27:
267
+ _l = _m.sent();
268
+ return [3, 28];
269
+ case 28: throw error_1;
270
+ case 29: return [2, true];
214
271
  }
215
272
  });
216
273
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-norantec/herbal",
3
- "version": "1.0.1",
3
+ "version": "1.0.2-alpha.0",
4
4
  "description": "Herbal is a builder and toolchain for Nest.js applications",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {