@opra/core 0.25.3 → 0.25.5

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 (107) hide show
  1. package/cjs/{adapter/http → http}/http-adapter.host.js +5 -0
  2. package/cjs/{adapter/http → http}/http-server-request.js +6 -0
  3. package/cjs/{adapter/http → http}/request-handlers/entity-request-handler.js +12 -1
  4. package/cjs/{adapter/http → http}/request-handlers/request-handler-base.js +10 -0
  5. package/cjs/{adapter/http → http}/request-handlers/storage-request-handler.js +9 -3
  6. package/cjs/index.js +16 -16
  7. package/esm/{adapter/http → http}/http-adapter.host.js +5 -0
  8. package/esm/{adapter/http → http}/http-server-request.js +6 -0
  9. package/esm/{adapter/http → http}/request-handlers/entity-request-handler.js +12 -1
  10. package/esm/{adapter/http → http}/request-handlers/request-handler-base.js +10 -0
  11. package/esm/{adapter/http → http}/request-handlers/storage-request-handler.js +9 -3
  12. package/esm/index.js +16 -16
  13. package/package.json +3 -3
  14. package/types/augmentation/collection.augmentation.d.ts +8 -2
  15. package/types/augmentation/resource.augmentation.d.ts +1 -1
  16. package/types/augmentation/singleton.augmentation.d.ts +2 -2
  17. package/types/augmentation/storage.augmentation.d.ts +6 -3
  18. package/types/{adapter/endpoint-context.d.ts → endpoint-context.d.ts} +3 -3
  19. package/types/{adapter/execution-context.d.ts → execution-context.d.ts} +3 -3
  20. package/types/{adapter/execution-context.host.d.ts → execution-context.host.d.ts} +1 -1
  21. package/types/{adapter/http → http}/express-adapter.host.d.ts +1 -1
  22. package/types/{adapter/http → http}/http-adapter-base.d.ts +1 -1
  23. package/types/{adapter/http → http}/http-adapter.d.ts +1 -1
  24. package/types/{adapter/http → http}/http-adapter.host.d.ts +1 -1
  25. package/types/{adapter/http → http}/http-server-request.d.ts +1 -0
  26. package/types/{adapter/http → http}/impl/http-outgoing-message.host.d.ts +1 -1
  27. package/types/{adapter/http → http}/request-handlers/request-handler-base.d.ts +5 -4
  28. package/types/{adapter/http → http}/request-handlers/storage-request-handler.d.ts +1 -1
  29. package/types/index.d.ts +16 -16
  30. package/types/{adapter/platform-adapter.host.d.ts → platform-adapter.host.d.ts} +1 -1
  31. package/types/{adapter/request.d.ts → request.d.ts} +1 -1
  32. package/types/{adapter/request.host.d.ts → request.host.d.ts} +3 -3
  33. package/types/{adapter/response.d.ts → response.d.ts} +1 -1
  34. package/types/{adapter/response.host.d.ts → response.host.d.ts} +2 -2
  35. /package/cjs/{adapter/endpoint-context.js → endpoint-context.js} +0 -0
  36. /package/cjs/{adapter/execution-context.host.js → execution-context.host.js} +0 -0
  37. /package/cjs/{adapter/execution-context.js → execution-context.js} +0 -0
  38. /package/cjs/{adapter/http → http}/express-adapter.host.js +0 -0
  39. /package/cjs/{adapter/http → http}/express-adapter.js +0 -0
  40. /package/cjs/{adapter/http → http}/helpers/common.js +0 -0
  41. /package/cjs/{adapter/http → http}/helpers/concat-readable.js +0 -0
  42. /package/cjs/{adapter/http → http}/helpers/convert-to-headers.js +0 -0
  43. /package/cjs/{adapter/http → http}/helpers/convert-to-raw-headers.js +0 -0
  44. /package/cjs/{adapter/http → http}/helpers/match-known-fields.js +0 -0
  45. /package/cjs/{adapter/http → http}/helpers/multipart-helper.js +0 -0
  46. /package/cjs/{adapter/http → http}/helpers/query-parsers.js +0 -0
  47. /package/cjs/{adapter/http → http}/http-adapter-base.js +0 -0
  48. /package/cjs/{adapter/http → http}/http-adapter.js +0 -0
  49. /package/cjs/{adapter/http → http}/http-server-response.js +0 -0
  50. /package/cjs/{adapter/http → http}/impl/http-incoming-message.host.js +0 -0
  51. /package/cjs/{adapter/http → http}/impl/http-outgoing-message.host.js +0 -0
  52. /package/cjs/{adapter/http → http}/request-handlers/parse-batch-request.js +0 -0
  53. /package/cjs/{adapter/interfaces → interfaces}/interceptor.interface.js +0 -0
  54. /package/cjs/{adapter/interfaces → interfaces}/logger.interface.js +0 -0
  55. /package/cjs/{adapter/interfaces → interfaces}/request-handler.interface.js +0 -0
  56. /package/cjs/{adapter/platform-adapter.host.js → platform-adapter.host.js} +0 -0
  57. /package/cjs/{adapter/platform-adapter.js → platform-adapter.js} +0 -0
  58. /package/cjs/{adapter/request.host.js → request.host.js} +0 -0
  59. /package/cjs/{adapter/request.js → request.js} +0 -0
  60. /package/cjs/{adapter/response.host.js → response.host.js} +0 -0
  61. /package/cjs/{adapter/response.js → response.js} +0 -0
  62. /package/cjs/{adapter/services → services}/logger.js +0 -0
  63. /package/esm/{adapter/endpoint-context.js → endpoint-context.js} +0 -0
  64. /package/esm/{adapter/execution-context.host.js → execution-context.host.js} +0 -0
  65. /package/esm/{adapter/execution-context.js → execution-context.js} +0 -0
  66. /package/esm/{adapter/http → http}/express-adapter.host.js +0 -0
  67. /package/esm/{adapter/http → http}/express-adapter.js +0 -0
  68. /package/esm/{adapter/http → http}/helpers/common.js +0 -0
  69. /package/esm/{adapter/http → http}/helpers/concat-readable.js +0 -0
  70. /package/esm/{adapter/http → http}/helpers/convert-to-headers.js +0 -0
  71. /package/esm/{adapter/http → http}/helpers/convert-to-raw-headers.js +0 -0
  72. /package/esm/{adapter/http → http}/helpers/match-known-fields.js +0 -0
  73. /package/esm/{adapter/http → http}/helpers/multipart-helper.js +0 -0
  74. /package/esm/{adapter/http → http}/helpers/query-parsers.js +0 -0
  75. /package/esm/{adapter/http → http}/http-adapter-base.js +0 -0
  76. /package/esm/{adapter/http → http}/http-adapter.js +0 -0
  77. /package/esm/{adapter/http → http}/http-server-response.js +0 -0
  78. /package/esm/{adapter/http → http}/impl/http-incoming-message.host.js +0 -0
  79. /package/esm/{adapter/http → http}/impl/http-outgoing-message.host.js +0 -0
  80. /package/esm/{adapter/http → http}/request-handlers/parse-batch-request.js +0 -0
  81. /package/esm/{adapter/interfaces → interfaces}/interceptor.interface.js +0 -0
  82. /package/esm/{adapter/interfaces → interfaces}/logger.interface.js +0 -0
  83. /package/esm/{adapter/interfaces → interfaces}/request-handler.interface.js +0 -0
  84. /package/esm/{adapter/platform-adapter.host.js → platform-adapter.host.js} +0 -0
  85. /package/esm/{adapter/platform-adapter.js → platform-adapter.js} +0 -0
  86. /package/esm/{adapter/request.host.js → request.host.js} +0 -0
  87. /package/esm/{adapter/request.js → request.js} +0 -0
  88. /package/esm/{adapter/response.host.js → response.host.js} +0 -0
  89. /package/esm/{adapter/response.js → response.js} +0 -0
  90. /package/esm/{adapter/services → services}/logger.js +0 -0
  91. /package/types/{adapter/http → http}/express-adapter.d.ts +0 -0
  92. /package/types/{adapter/http → http}/helpers/common.d.ts +0 -0
  93. /package/types/{adapter/http → http}/helpers/concat-readable.d.ts +0 -0
  94. /package/types/{adapter/http → http}/helpers/convert-to-headers.d.ts +0 -0
  95. /package/types/{adapter/http → http}/helpers/convert-to-raw-headers.d.ts +0 -0
  96. /package/types/{adapter/http → http}/helpers/match-known-fields.d.ts +0 -0
  97. /package/types/{adapter/http → http}/helpers/multipart-helper.d.ts +0 -0
  98. /package/types/{adapter/http → http}/helpers/query-parsers.d.ts +0 -0
  99. /package/types/{adapter/http → http}/http-server-response.d.ts +0 -0
  100. /package/types/{adapter/http → http}/impl/http-incoming-message.host.d.ts +0 -0
  101. /package/types/{adapter/http → http}/request-handlers/entity-request-handler.d.ts +0 -0
  102. /package/types/{adapter/http → http}/request-handlers/parse-batch-request.d.ts +0 -0
  103. /package/types/{adapter/interfaces → interfaces}/interceptor.interface.d.ts +0 -0
  104. /package/types/{adapter/interfaces → interfaces}/logger.interface.d.ts +0 -0
  105. /package/types/{adapter/interfaces → interfaces}/request-handler.interface.d.ts +0 -0
  106. /package/types/{adapter/platform-adapter.d.ts → platform-adapter.d.ts} +0 -0
  107. /package/types/{adapter/services → services}/logger.d.ts +0 -0
@@ -37,6 +37,11 @@ class HttpAdapterHost extends http_adapter_base_js_1.HttpAdapterBase {
37
37
  incomingMessage.originalUrl = originalUrl;
38
38
  incomingMessage.baseUrl = this.basePath.toString();
39
39
  incomingMessage.parsedUrl = parsedUrl;
40
+ Object.defineProperty(incomingMessage, 'searchParams', {
41
+ get() {
42
+ return incomingMessage.parsedUrl.searchParams;
43
+ }
44
+ });
40
45
  const req = http_server_request_js_1.HttpServerRequest.from(incomingMessage);
41
46
  const res = http_server_response_js_1.HttpServerResponse.from(serverResponse);
42
47
  this.handleIncoming(req, res)
@@ -24,6 +24,12 @@ var HttpServerRequest;
24
24
  const req = instance;
25
25
  req.baseUrl = req.baseUrl || '';
26
26
  req.parsedUrl = req.parsedUrl || new common_1.OpraURL(req.url);
27
+ if (!req.searchParams)
28
+ Object.defineProperty(req, 'searchParams', {
29
+ get() {
30
+ return req.parsedUrl.searchParams;
31
+ }
32
+ });
27
33
  return req;
28
34
  }
29
35
  HttpServerRequest.from = from;
@@ -184,6 +184,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
184
184
  endpoint: 'create',
185
185
  data,
186
186
  params: {
187
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
187
188
  pick: pick && resource.normalizeFieldPath(pick),
188
189
  omit: omit && resource.normalizeFieldPath(omit),
189
190
  include: include && resource.normalizeFieldPath(include)
@@ -201,7 +202,8 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
201
202
  contentId,
202
203
  resource,
203
204
  endpoint: 'delete',
204
- key: resource.parseKeyValue(p.key)
205
+ key: resource.parseKeyValue(p.key),
206
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
205
207
  });
206
208
  }
207
209
  const endpointMeta = await this.assertEndpoint(resource, 'deleteMany');
@@ -213,6 +215,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
213
215
  resource,
214
216
  endpoint: 'deleteMany',
215
217
  params: {
218
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
216
219
  filter
217
220
  }
218
221
  });
@@ -231,6 +234,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
231
234
  endpoint: 'get',
232
235
  key: resource.parseKeyValue(p.key),
233
236
  params: {
237
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
234
238
  pick: pick && resource.normalizeFieldPath(pick),
235
239
  omit: omit && resource.normalizeFieldPath(omit),
236
240
  include: include && resource.normalizeFieldPath(include)
@@ -247,6 +251,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
247
251
  resource,
248
252
  endpoint: 'findMany',
249
253
  params: {
254
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
250
255
  pick: pick && resource.normalizeFieldPath(pick),
251
256
  omit: omit && resource.normalizeFieldPath(omit),
252
257
  include: include && resource.normalizeFieldPath(include),
@@ -278,6 +283,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
278
283
  key: resource.parseKeyValue(p.key),
279
284
  data,
280
285
  params: {
286
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
281
287
  pick: pick && resource.normalizeFieldPath(pick),
282
288
  omit: omit && resource.normalizeFieldPath(omit),
283
289
  include: include && resource.normalizeFieldPath(include),
@@ -298,6 +304,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
298
304
  endpoint: 'updateMany',
299
305
  data,
300
306
  params: {
307
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
301
308
  filter,
302
309
  }
303
310
  });
@@ -331,6 +338,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
331
338
  endpoint: 'create',
332
339
  data,
333
340
  params: {
341
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
334
342
  pick: pick && resource.normalizeFieldPath(pick),
335
343
  omit: omit && resource.normalizeFieldPath(omit),
336
344
  include: include && resource.normalizeFieldPath(include)
@@ -345,6 +353,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
345
353
  contentId,
346
354
  resource,
347
355
  endpoint: 'delete',
356
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
348
357
  });
349
358
  }
350
359
  case 'GET': {
@@ -359,6 +368,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
359
368
  resource,
360
369
  endpoint: 'get',
361
370
  params: {
371
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
362
372
  pick: pick && resource.normalizeFieldPath(pick),
363
373
  omit: omit && resource.normalizeFieldPath(omit),
364
374
  include: include && resource.normalizeFieldPath(include)
@@ -382,6 +392,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
382
392
  endpoint: 'update',
383
393
  data,
384
394
  params: {
395
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
385
396
  pick: pick && resource.normalizeFieldPath(pick),
386
397
  omit: omit && resource.normalizeFieldPath(omit),
387
398
  include: include && resource.normalizeFieldPath(include),
@@ -23,5 +23,15 @@ class RequestHandlerBase {
23
23
  code: 'RESOLVER_FORBIDDEN'
24
24
  });
25
25
  }
26
+ parseParameters(parsedUrl, metadata) {
27
+ if (!metadata.parameters)
28
+ return;
29
+ const searchParams = parsedUrl.searchParams;
30
+ const out = {};
31
+ for (const [k] of Object.entries(metadata.parameters)) {
32
+ out[k] = searchParams.get(k);
33
+ }
34
+ return out;
35
+ }
26
36
  }
27
37
  exports.RequestHandlerBase = RequestHandlerBase;
@@ -49,7 +49,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
49
49
  http: incoming,
50
50
  resource,
51
51
  endpoint: 'get',
52
- contentId
52
+ contentId,
53
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
54
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
53
55
  });
54
56
  }
55
57
  case 'DELETE': {
@@ -59,7 +61,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
59
61
  http: incoming,
60
62
  resource,
61
63
  endpoint: 'delete',
62
- contentId
64
+ contentId,
65
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
66
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
63
67
  });
64
68
  }
65
69
  case 'POST': {
@@ -82,7 +86,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
82
86
  resource,
83
87
  endpoint: 'post',
84
88
  contentId,
85
- parts: multipartIterator
89
+ parts: multipartIterator,
90
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
91
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
86
92
  });
87
93
  }
88
94
  }
package/cjs/index.js CHANGED
@@ -7,19 +7,19 @@ require("./augmentation/collection.augmentation.js");
7
7
  require("./augmentation/singleton.augmentation.js");
8
8
  require("./augmentation/storage.augmentation.js");
9
9
  tslib_1.__exportStar(require("./types.js"), exports);
10
- tslib_1.__exportStar(require("./adapter/execution-context.js"), exports);
11
- tslib_1.__exportStar(require("./adapter/endpoint-context.js"), exports);
12
- tslib_1.__exportStar(require("./adapter/platform-adapter.js"), exports);
13
- tslib_1.__exportStar(require("./adapter/request.js"), exports);
14
- tslib_1.__exportStar(require("./adapter/response.js"), exports);
15
- tslib_1.__exportStar(require("./adapter/http/express-adapter.js"), exports);
16
- tslib_1.__exportStar(require("./adapter/http/http-adapter.js"), exports);
17
- tslib_1.__exportStar(require("./adapter/http/impl/http-incoming-message.host.js"), exports);
18
- tslib_1.__exportStar(require("./adapter/http/impl/http-outgoing-message.host.js"), exports);
19
- tslib_1.__exportStar(require("./adapter/http/http-server-request.js"), exports);
20
- tslib_1.__exportStar(require("./adapter/http/http-server-response.js"), exports);
21
- tslib_1.__exportStar(require("./adapter/http/helpers/multipart-helper.js"), exports);
22
- tslib_1.__exportStar(require("./adapter/interfaces/interceptor.interface.js"), exports);
23
- tslib_1.__exportStar(require("./adapter/interfaces/logger.interface.js"), exports);
24
- tslib_1.__exportStar(require("./adapter/interfaces/request-handler.interface.js"), exports);
25
- tslib_1.__exportStar(require("./adapter/services/logger.js"), exports);
10
+ tslib_1.__exportStar(require("./execution-context.js"), exports);
11
+ tslib_1.__exportStar(require("./endpoint-context.js"), exports);
12
+ tslib_1.__exportStar(require("./platform-adapter.js"), exports);
13
+ tslib_1.__exportStar(require("./request.js"), exports);
14
+ tslib_1.__exportStar(require("./response.js"), exports);
15
+ tslib_1.__exportStar(require("./http/express-adapter.js"), exports);
16
+ tslib_1.__exportStar(require("./http/http-adapter.js"), exports);
17
+ tslib_1.__exportStar(require("./http/impl/http-incoming-message.host.js"), exports);
18
+ tslib_1.__exportStar(require("./http/impl/http-outgoing-message.host.js"), exports);
19
+ tslib_1.__exportStar(require("./http/http-server-request.js"), exports);
20
+ tslib_1.__exportStar(require("./http/http-server-response.js"), exports);
21
+ tslib_1.__exportStar(require("./http/helpers/multipart-helper.js"), exports);
22
+ tslib_1.__exportStar(require("./interfaces/interceptor.interface.js"), exports);
23
+ tslib_1.__exportStar(require("./interfaces/logger.interface.js"), exports);
24
+ tslib_1.__exportStar(require("./interfaces/request-handler.interface.js"), exports);
25
+ tslib_1.__exportStar(require("./services/logger.js"), exports);
@@ -33,6 +33,11 @@ export class HttpAdapterHost extends HttpAdapterBase {
33
33
  incomingMessage.originalUrl = originalUrl;
34
34
  incomingMessage.baseUrl = this.basePath.toString();
35
35
  incomingMessage.parsedUrl = parsedUrl;
36
+ Object.defineProperty(incomingMessage, 'searchParams', {
37
+ get() {
38
+ return incomingMessage.parsedUrl.searchParams;
39
+ }
40
+ });
36
41
  const req = HttpServerRequest.from(incomingMessage);
37
42
  const res = HttpServerResponse.from(serverResponse);
38
43
  this.handleIncoming(req, res)
@@ -20,6 +20,12 @@ export var HttpServerRequest;
20
20
  const req = instance;
21
21
  req.baseUrl = req.baseUrl || '';
22
22
  req.parsedUrl = req.parsedUrl || new OpraURL(req.url);
23
+ if (!req.searchParams)
24
+ Object.defineProperty(req, 'searchParams', {
25
+ get() {
26
+ return req.parsedUrl.searchParams;
27
+ }
28
+ });
23
29
  return req;
24
30
  }
25
31
  HttpServerRequest.from = from;
@@ -180,6 +180,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
180
180
  endpoint: 'create',
181
181
  data,
182
182
  params: {
183
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
183
184
  pick: pick && resource.normalizeFieldPath(pick),
184
185
  omit: omit && resource.normalizeFieldPath(omit),
185
186
  include: include && resource.normalizeFieldPath(include)
@@ -197,7 +198,8 @@ export class EntityRequestHandler extends RequestHandlerBase {
197
198
  contentId,
198
199
  resource,
199
200
  endpoint: 'delete',
200
- key: resource.parseKeyValue(p.key)
201
+ key: resource.parseKeyValue(p.key),
202
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
201
203
  });
202
204
  }
203
205
  const endpointMeta = await this.assertEndpoint(resource, 'deleteMany');
@@ -209,6 +211,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
209
211
  resource,
210
212
  endpoint: 'deleteMany',
211
213
  params: {
214
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
212
215
  filter
213
216
  }
214
217
  });
@@ -227,6 +230,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
227
230
  endpoint: 'get',
228
231
  key: resource.parseKeyValue(p.key),
229
232
  params: {
233
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
230
234
  pick: pick && resource.normalizeFieldPath(pick),
231
235
  omit: omit && resource.normalizeFieldPath(omit),
232
236
  include: include && resource.normalizeFieldPath(include)
@@ -243,6 +247,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
243
247
  resource,
244
248
  endpoint: 'findMany',
245
249
  params: {
250
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
246
251
  pick: pick && resource.normalizeFieldPath(pick),
247
252
  omit: omit && resource.normalizeFieldPath(omit),
248
253
  include: include && resource.normalizeFieldPath(include),
@@ -274,6 +279,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
274
279
  key: resource.parseKeyValue(p.key),
275
280
  data,
276
281
  params: {
282
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
277
283
  pick: pick && resource.normalizeFieldPath(pick),
278
284
  omit: omit && resource.normalizeFieldPath(omit),
279
285
  include: include && resource.normalizeFieldPath(include),
@@ -294,6 +300,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
294
300
  endpoint: 'updateMany',
295
301
  data,
296
302
  params: {
303
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
297
304
  filter,
298
305
  }
299
306
  });
@@ -327,6 +334,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
327
334
  endpoint: 'create',
328
335
  data,
329
336
  params: {
337
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
330
338
  pick: pick && resource.normalizeFieldPath(pick),
331
339
  omit: omit && resource.normalizeFieldPath(omit),
332
340
  include: include && resource.normalizeFieldPath(include)
@@ -341,6 +349,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
341
349
  contentId,
342
350
  resource,
343
351
  endpoint: 'delete',
352
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
344
353
  });
345
354
  }
346
355
  case 'GET': {
@@ -355,6 +364,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
355
364
  resource,
356
365
  endpoint: 'get',
357
366
  params: {
367
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
358
368
  pick: pick && resource.normalizeFieldPath(pick),
359
369
  omit: omit && resource.normalizeFieldPath(omit),
360
370
  include: include && resource.normalizeFieldPath(include)
@@ -378,6 +388,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
378
388
  endpoint: 'update',
379
389
  data,
380
390
  params: {
391
+ ...this.parseParameters(incoming.parsedUrl, endpointMeta),
381
392
  pick: pick && resource.normalizeFieldPath(pick),
382
393
  omit: omit && resource.normalizeFieldPath(omit),
383
394
  include: include && resource.normalizeFieldPath(include),
@@ -20,4 +20,14 @@ export class RequestHandlerBase {
20
20
  code: 'RESOLVER_FORBIDDEN'
21
21
  });
22
22
  }
23
+ parseParameters(parsedUrl, metadata) {
24
+ if (!metadata.parameters)
25
+ return;
26
+ const searchParams = parsedUrl.searchParams;
27
+ const out = {};
28
+ for (const [k] of Object.entries(metadata.parameters)) {
29
+ out[k] = searchParams.get(k);
30
+ }
31
+ return out;
32
+ }
23
33
  }
@@ -45,7 +45,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
45
45
  http: incoming,
46
46
  resource,
47
47
  endpoint: 'get',
48
- contentId
48
+ contentId,
49
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
50
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
49
51
  });
50
52
  }
51
53
  case 'DELETE': {
@@ -55,7 +57,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
55
57
  http: incoming,
56
58
  resource,
57
59
  endpoint: 'delete',
58
- contentId
60
+ contentId,
61
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
62
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
59
63
  });
60
64
  }
61
65
  case 'POST': {
@@ -78,7 +82,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
78
82
  resource,
79
83
  endpoint: 'post',
80
84
  contentId,
81
- parts: multipartIterator
85
+ parts: multipartIterator,
86
+ path: incoming.parsedUrl.path.slice(1).toString().substring(1),
87
+ params: this.parseParameters(incoming.parsedUrl, endpointMeta)
82
88
  });
83
89
  }
84
90
  }
package/esm/index.js CHANGED
@@ -4,19 +4,19 @@ import './augmentation/collection.augmentation.js';
4
4
  import './augmentation/singleton.augmentation.js';
5
5
  import './augmentation/storage.augmentation.js';
6
6
  export * from './types.js';
7
- export * from './adapter/execution-context.js';
8
- export * from './adapter/endpoint-context.js';
9
- export * from './adapter/platform-adapter.js';
10
- export * from './adapter/request.js';
11
- export * from './adapter/response.js';
12
- export * from './adapter/http/express-adapter.js';
13
- export * from './adapter/http/http-adapter.js';
14
- export * from './adapter/http/impl/http-incoming-message.host.js';
15
- export * from './adapter/http/impl/http-outgoing-message.host.js';
16
- export * from './adapter/http/http-server-request.js';
17
- export * from './adapter/http/http-server-response.js';
18
- export * from './adapter/http/helpers/multipart-helper.js';
19
- export * from './adapter/interfaces/interceptor.interface.js';
20
- export * from './adapter/interfaces/logger.interface.js';
21
- export * from './adapter/interfaces/request-handler.interface.js';
22
- export * from './adapter/services/logger.js';
7
+ export * from './execution-context.js';
8
+ export * from './endpoint-context.js';
9
+ export * from './platform-adapter.js';
10
+ export * from './request.js';
11
+ export * from './response.js';
12
+ export * from './http/express-adapter.js';
13
+ export * from './http/http-adapter.js';
14
+ export * from './http/impl/http-incoming-message.host.js';
15
+ export * from './http/impl/http-outgoing-message.host.js';
16
+ export * from './http/http-server-request.js';
17
+ export * from './http/http-server-response.js';
18
+ export * from './http/helpers/multipart-helper.js';
19
+ export * from './interfaces/interceptor.interface.js';
20
+ export * from './interfaces/logger.interface.js';
21
+ export * from './interfaces/request-handler.interface.js';
22
+ export * from './services/logger.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/core",
3
- "version": "0.25.3",
3
+ "version": "0.25.5",
4
4
  "description": "Opra schema package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -27,7 +27,7 @@
27
27
  "clean:cover": "rimraf ../../coverage/core"
28
28
  },
29
29
  "dependencies": {
30
- "@opra/common": "^0.25.3",
30
+ "@opra/common": "^0.25.5",
31
31
  "accepts": "^1.3.8",
32
32
  "content-disposition": "^0.5.4",
33
33
  "content-type": "^1.0.5",
@@ -57,7 +57,7 @@
57
57
  "@types/cookie-signature": "^1.1.0",
58
58
  "@types/encodeurl": "^1.0.0",
59
59
  "@types/express": "^4.17.17",
60
- "@types/formidable": "^3.4.1",
60
+ "@types/formidable": "^3.4.2",
61
61
  "@types/fresh": "^0.5.0",
62
62
  "@types/mime-types": "^2.1.1",
63
63
  "@types/range-parser": "^1.2.4",
@@ -1,6 +1,6 @@
1
1
  import type { PartialOutput } from '@opra/common';
2
- import type { EndpointContext } from '../adapter/endpoint-context.js';
3
- import type { Request as _Request } from '../adapter/request.js';
2
+ import type { EndpointContext } from '../endpoint-context.js';
3
+ import type { Request as _Request } from '../request.js';
4
4
  declare module "@opra/common" {
5
5
  namespace Collection {
6
6
  namespace Action {
@@ -16,6 +16,7 @@ declare module "@opra/common" {
16
16
  pick?: string[];
17
17
  omit?: string[];
18
18
  include?: string[];
19
+ [key: string]: any;
19
20
  };
20
21
  }
21
22
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -36,6 +37,7 @@ declare module "@opra/common" {
36
37
  endpoint: 'deleteMany';
37
38
  params: {
38
39
  filter?: any;
40
+ [key: string]: any;
39
41
  };
40
42
  }
41
43
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -55,6 +57,7 @@ declare module "@opra/common" {
55
57
  skip?: number;
56
58
  distinct?: boolean;
57
59
  count?: boolean;
60
+ [key: string]: any;
58
61
  };
59
62
  }
60
63
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -69,6 +72,7 @@ declare module "@opra/common" {
69
72
  pick?: string[];
70
73
  omit?: string[];
71
74
  include?: string[];
75
+ [key: string]: any;
72
76
  };
73
77
  }
74
78
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -84,6 +88,7 @@ declare module "@opra/common" {
84
88
  pick?: string[];
85
89
  omit?: string[];
86
90
  include?: string[];
91
+ [key: string]: any;
87
92
  };
88
93
  }
89
94
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -96,6 +101,7 @@ declare module "@opra/common" {
96
101
  data: any;
97
102
  params: {
98
103
  filter?: any;
104
+ [key: string]: any;
99
105
  };
100
106
  }
101
107
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -1,4 +1,4 @@
1
- import { EndpointContext } from '../adapter/endpoint-context.js';
1
+ import { EndpointContext } from '../endpoint-context.js';
2
2
  declare module "@opra/common" {
3
3
  interface CollectionConstructor {
4
4
  OnInit(): any;
@@ -1,6 +1,6 @@
1
1
  import type { PartialOutput } from '@opra/common';
2
- import type { EndpointContext } from '../adapter/endpoint-context.js';
3
- import type { Request as _Request } from '../adapter/request.js';
2
+ import type { EndpointContext } from '../endpoint-context.js';
3
+ import type { Request as _Request } from '../request.js';
4
4
  declare module "@opra/common" {
5
5
  namespace Singleton {
6
6
  namespace Action {
@@ -1,9 +1,9 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import type { Readable } from 'stream';
4
- import type { EndpointContext } from '../adapter/endpoint-context';
5
- import type { MultipartIterator } from '../adapter/http/helpers/multipart-helper';
6
- import type { Request as _Request } from '../adapter/request.js';
4
+ import type { EndpointContext } from '../endpoint-context.js';
5
+ import type { MultipartIterator } from '../http/helpers/multipart-helper';
6
+ import type { Request as _Request } from '../request.js';
7
7
  declare module "@opra/common" {
8
8
  namespace Storage {
9
9
  namespace Action {
@@ -12,6 +12,7 @@ declare module "@opra/common" {
12
12
  }
13
13
  namespace Delete {
14
14
  interface Request extends _Request {
15
+ path?: string;
15
16
  }
16
17
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
17
18
  request: Request;
@@ -19,6 +20,7 @@ declare module "@opra/common" {
19
20
  }
20
21
  namespace Get {
21
22
  interface Request extends _Request {
23
+ path?: string;
22
24
  }
23
25
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
24
26
  request: Request;
@@ -26,6 +28,7 @@ declare module "@opra/common" {
26
28
  }
27
29
  namespace Post {
28
30
  interface Request extends _Request {
31
+ path?: string;
29
32
  parts: MultipartIterator;
30
33
  }
31
34
  interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
@@ -1,6 +1,6 @@
1
- import type { ExecutionContext } from './execution-context';
2
- import type { Request } from './request';
3
- import type { Response } from './response';
1
+ import type { ExecutionContext } from './execution-context.js';
2
+ import type { Request } from './request.js';
3
+ import type { Response } from './response.js';
4
4
  export interface EndpointContext<TSession extends {} = {}> extends ExecutionContext<TSession> {
5
5
  request: Request;
6
6
  response: Response;
@@ -1,6 +1,6 @@
1
- import type { HttpServerRequest } from './http/http-server-request';
2
- import type { HttpServerResponse } from './http/http-server-response';
3
- import type { Protocol } from './platform-adapter';
1
+ import type { HttpServerRequest } from './http/http-server-request.js';
2
+ import type { HttpServerResponse } from './http/http-server-response.js';
3
+ import type { Protocol } from './platform-adapter.js';
4
4
  export interface ExecutionContext<TSession extends {} = {}> {
5
5
  readonly protocol: Protocol;
6
6
  readonly platform: string;
@@ -1,8 +1,8 @@
1
1
  import { AsyncEventEmitter } from 'strict-typed-events';
2
2
  import type { ApiDocument } from '@opra/common';
3
- import type { HttpServerResponse } from './/http/http-server-response.js';
4
3
  import type { ExecutionContext, HttpMessageContext, RpcMessageContext, WsMessageContext } from './execution-context.js';
5
4
  import type { HttpServerRequest } from './http/http-server-request.js';
5
+ import type { HttpServerResponse } from './http/http-server-response.js';
6
6
  import { Protocol } from './platform-adapter.js';
7
7
  export declare class ExecutionContextHost<TSession extends {} = {}> extends AsyncEventEmitter implements ExecutionContext<TSession> {
8
8
  readonly api: ApiDocument;
@@ -1,6 +1,6 @@
1
1
  import type { Application } from 'express';
2
2
  import { ApiDocument } from '@opra/common';
3
- import type { ExpressAdapter } from './express-adapter';
3
+ import type { ExpressAdapter } from './express-adapter.js';
4
4
  import { HttpAdapterBase } from './http-adapter-base.js';
5
5
  export declare class ExpressAdapterHost extends HttpAdapterBase implements ExpressAdapter {
6
6
  _platform: string;
@@ -1,7 +1,7 @@
1
1
  import { ExecutionContext } from '../execution-context.js';
2
2
  import { RequestHandler } from '../interfaces/request-handler.interface.js';
3
- import type { Protocol } from '../platform-adapter';
4
3
  import { PlatformAdapterHost } from '../platform-adapter.host.js';
4
+ import type { Protocol } from '../platform-adapter.js';
5
5
  import { HttpServerRequest } from './http-server-request.js';
6
6
  import { HttpServerResponse } from './http-server-response.js';
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import http from 'http';
3
3
  import type { ApiDocument, OpraURLPath } from '@opra/common';
4
- import type { PlatformAdapter } from '../platform-adapter';
4
+ import type { PlatformAdapter } from '../platform-adapter.js';
5
5
  export interface HttpAdapter extends PlatformAdapter {
6
6
  readonly basePath: OpraURLPath;
7
7
  readonly server: http.Server;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import http from 'http';
3
3
  import { ApiDocument, OpraURLPath } from '@opra/common';
4
- import type { HttpAdapter } from './http-adapter';
4
+ import type { HttpAdapter } from './http-adapter.js';
5
5
  import { HttpAdapterBase } from './http-adapter-base.js';
6
6
  /**
7
7
  * @class HttpAdapterHost
@@ -10,6 +10,7 @@ export interface HttpServerRequest extends HttpIncomingMessage {
10
10
  baseUrl: string;
11
11
  originalUrl: string;
12
12
  parsedUrl: OpraURL;
13
+ searchParams: URLSearchParams;
13
14
  body?: any;
14
15
  /**
15
16
  * Return the protocol string "http" or "https"
@@ -3,7 +3,7 @@
3
3
  /// <reference types="node" />
4
4
  import http, { OutgoingHttpHeaders } from 'http';
5
5
  import { Duplex, Writable } from 'stream';
6
- import type { HttpIncomingMessage } from './http-incoming-message.host';
6
+ import type { HttpIncomingMessage } from './http-incoming-message.host.js';
7
7
  export declare const kOutHeaders: unique symbol;
8
8
  export declare const kOutTrailers: unique symbol;
9
9
  declare global {
@@ -1,7 +1,7 @@
1
- import { OpraSchema, Resource } from '@opra/common';
2
- import type { ExecutionContext } from '../../execution-context';
3
- import type { RequestHandler } from '../../interfaces/request-handler.interface';
4
- import type { HttpAdapterBase } from '../http-adapter-base';
1
+ import { OpraSchema, OpraURL, Resource } from '@opra/common';
2
+ import type { ExecutionContext } from '../../execution-context.js';
3
+ import type { RequestHandler } from '../../interfaces/request-handler.interface.js';
4
+ import type { HttpAdapterBase } from '../http-adapter-base.js';
5
5
  /**
6
6
  * @class RequestHandlerBase
7
7
  */
@@ -12,4 +12,5 @@ export declare abstract class RequestHandlerBase implements RequestHandler {
12
12
  assertEndpoint<T extends OpraSchema.Endpoint = OpraSchema.Endpoint>(resource: Resource, endpoint: string): Promise<T & {
13
13
  controller: any;
14
14
  }>;
15
+ protected parseParameters(parsedUrl: OpraURL, metadata: OpraSchema.Endpoint): any;
15
16
  }
@@ -1,5 +1,5 @@
1
1
  import { EndpointContext } from '../../endpoint-context.js';
2
- import type { ExecutionContext } from '../../execution-context';
2
+ import type { ExecutionContext } from '../../execution-context.js';
3
3
  import { Request } from '../../request.js';
4
4
  import type { HttpAdapterBase } from '../http-adapter-base.js';
5
5
  import { HttpServerRequest } from '../http-server-request.js';
package/types/index.d.ts CHANGED
@@ -4,19 +4,19 @@ import './augmentation/collection.augmentation.js';
4
4
  import './augmentation/singleton.augmentation.js';
5
5
  import './augmentation/storage.augmentation.js';
6
6
  export * from './types.js';
7
- export * from './adapter/execution-context.js';
8
- export * from './adapter/endpoint-context.js';
9
- export * from './adapter/platform-adapter.js';
10
- export * from './adapter/request.js';
11
- export * from './adapter/response.js';
12
- export * from './adapter/http/express-adapter.js';
13
- export * from './adapter/http/http-adapter.js';
14
- export * from './adapter/http/impl/http-incoming-message.host.js';
15
- export * from './adapter/http/impl/http-outgoing-message.host.js';
16
- export * from './adapter/http/http-server-request.js';
17
- export * from './adapter/http/http-server-response.js';
18
- export * from './adapter/http/helpers/multipart-helper.js';
19
- export * from './adapter/interfaces/interceptor.interface.js';
20
- export * from './adapter/interfaces/logger.interface.js';
21
- export * from './adapter/interfaces/request-handler.interface.js';
22
- export * from './adapter/services/logger.js';
7
+ export * from './execution-context.js';
8
+ export * from './endpoint-context.js';
9
+ export * from './platform-adapter.js';
10
+ export * from './request.js';
11
+ export * from './response.js';
12
+ export * from './http/express-adapter.js';
13
+ export * from './http/http-adapter.js';
14
+ export * from './http/impl/http-incoming-message.host.js';
15
+ export * from './http/impl/http-outgoing-message.host.js';
16
+ export * from './http/http-server-request.js';
17
+ export * from './http/http-server-response.js';
18
+ export * from './http/helpers/multipart-helper.js';
19
+ export * from './interfaces/interceptor.interface.js';
20
+ export * from './interfaces/logger.interface.js';
21
+ export * from './interfaces/request-handler.interface.js';
22
+ export * from './services/logger.js';
@@ -2,7 +2,7 @@ import { AsyncEventEmitter } from 'strict-typed-events';
2
2
  import { ApiDocument, I18n, Resource } from '@opra/common';
3
3
  import { ExecutionContext } from './execution-context.js';
4
4
  import { Interceptor } from './interfaces/interceptor.interface.js';
5
- import type { PlatformAdapter, Protocol } from './platform-adapter';
5
+ import type { PlatformAdapter, Protocol } from './platform-adapter.js';
6
6
  import { Logger } from './services/logger.js';
7
7
  /**
8
8
  * @class PlatformAdapterHost
@@ -4,7 +4,7 @@ export interface Request {
4
4
  resource: Resource;
5
5
  endpoint: string;
6
6
  contentId?: string;
7
- params?: Record<string, any>;
7
+ params: Record<string, any>;
8
8
  switchToHttp(): HttpServerRequest;
9
9
  switchToWs(): never;
10
10
  switchToRpc(): never;
@@ -1,8 +1,8 @@
1
- import type { StrictOmit } from 'ts-gems';
1
+ import type { PartialSome, StrictOmit } from 'ts-gems';
2
2
  import type { HttpServerRequest } from './http/http-server-request.js';
3
- import type { Request } from './request';
3
+ import type { Request } from './request.js';
4
4
  export declare namespace RequestHost {
5
- interface Initiator extends StrictOmit<Request, 'switchToHttp' | 'switchToWs' | 'switchToRpc'> {
5
+ interface Initiator extends PartialSome<StrictOmit<Request, 'switchToHttp' | 'switchToWs' | 'switchToRpc'>, 'params'> {
6
6
  controller: any;
7
7
  http?: HttpServerRequest;
8
8
  [key: string]: any;
@@ -1,4 +1,4 @@
1
- import type { HttpServerResponse } from './http/http-server-response';
1
+ import type { HttpServerResponse } from './http/http-server-response.js';
2
2
  export interface Response {
3
3
  /**
4
4
  * Result value
@@ -1,5 +1,5 @@
1
- import type { HttpServerResponse } from './http/http-server-response';
2
- import type { Response } from './response';
1
+ import type { HttpServerResponse } from './http/http-server-response.js';
2
+ import type { Response } from './response.js';
3
3
  export declare namespace ResponseHost {
4
4
  interface Initiator {
5
5
  value?: any;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes