temba 0.38.0 → 0.40.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 (72) hide show
  1. package/README.md +7 -72
  2. package/config/index.d.ts +2 -5
  3. package/config/index.d.ts.map +1 -1
  4. package/config/index.js +2 -7
  5. package/config/index.js.map +1 -1
  6. package/data/json/index.d.ts.map +1 -1
  7. package/data/json/index.js +5 -2
  8. package/data/json/index.js.map +1 -1
  9. package/data/mongo/index.js +2 -2
  10. package/data/mongo/index.js.map +1 -1
  11. package/data/types.d.ts +1 -1
  12. package/data/types.d.ts.map +1 -1
  13. package/etags/etags.d.ts +1 -0
  14. package/etags/etags.d.ts.map +1 -1
  15. package/etags/etags.js +3 -0
  16. package/etags/etags.js.map +1 -1
  17. package/index.d.ts +4 -5
  18. package/index.d.ts.map +1 -1
  19. package/index.js +51 -80
  20. package/index.js.map +1 -1
  21. package/openapi/openapi.d.ts +2 -1
  22. package/openapi/openapi.d.ts.map +1 -1
  23. package/openapi/openapi.js +88 -23
  24. package/openapi/openapi.js.map +1 -1
  25. package/package.json +8 -10
  26. package/requestHandlers/delete.d.ts +1 -1
  27. package/requestHandlers/delete.d.ts.map +1 -1
  28. package/requestHandlers/delete.js +5 -5
  29. package/requestHandlers/delete.js.map +1 -1
  30. package/requestHandlers/get.d.ts +14 -1
  31. package/requestHandlers/get.d.ts.map +1 -1
  32. package/requestHandlers/get.js +12 -4
  33. package/requestHandlers/get.js.map +1 -1
  34. package/requestHandlers/index.d.ts +13 -0
  35. package/requestHandlers/index.d.ts.map +1 -1
  36. package/requestHandlers/index.js +5 -5
  37. package/requestHandlers/index.js.map +1 -1
  38. package/requestHandlers/patch.d.ts +1 -1
  39. package/requestHandlers/patch.d.ts.map +1 -1
  40. package/requestHandlers/patch.js +2 -2
  41. package/requestHandlers/patch.js.map +1 -1
  42. package/requestHandlers/post.d.ts.map +1 -1
  43. package/requestHandlers/post.js +13 -3
  44. package/requestHandlers/post.js.map +1 -1
  45. package/requestHandlers/put.d.ts +1 -1
  46. package/requestHandlers/put.d.ts.map +1 -1
  47. package/requestHandlers/put.js +2 -2
  48. package/requestHandlers/put.js.map +1 -1
  49. package/requestHandlers/types.d.ts +4 -1
  50. package/requestHandlers/types.d.ts.map +1 -1
  51. package/requestInterceptor/interceptRequest.d.ts +1 -1
  52. package/requestInterceptor/interceptRequest.d.ts.map +1 -1
  53. package/requestInterceptor/interceptRequest.js +2 -2
  54. package/requestInterceptor/interceptRequest.js.map +1 -1
  55. package/requestInterceptor/types.d.ts +4 -1
  56. package/requestInterceptor/types.d.ts.map +1 -1
  57. package/resourceHandler.d.ts +16 -0
  58. package/resourceHandler.d.ts.map +1 -0
  59. package/resourceHandler.js +189 -0
  60. package/resourceHandler.js.map +1 -0
  61. package/auth/auth.d.ts +0 -6
  62. package/auth/auth.d.ts.map +0 -1
  63. package/auth/auth.js +0 -19
  64. package/auth/auth.js.map +0 -1
  65. package/delay/delayMiddleware.d.ts +0 -3
  66. package/delay/delayMiddleware.d.ts.map +0 -1
  67. package/delay/delayMiddleware.js +0 -11
  68. package/delay/delayMiddleware.js.map +0 -1
  69. package/resourceRouter.d.ts +0 -5
  70. package/resourceRouter.d.ts.map +0 -1
  71. package/resourceRouter.js +0 -139
  72. package/resourceRouter.js.map +0 -1
package/README.md CHANGED
@@ -100,6 +100,7 @@ For every resource (`movies` is just an example), Temba supports the following r
100
100
  - `GET /movies` - Get all movies
101
101
  - `GET /movies/:id` - Get a movie by its ID
102
102
  - `POST /movies` - Create a new movie
103
+ - `POST /movies:/id` - Create a new movie specifying the ID yourself
103
104
  - `PATCH /movies/:id` - Partially update a movie by its ID
104
105
  - `PUT /movies/:id` - Fully replace a movie by its ID
105
106
  - `DELETE /movies` - Delete all movies (if configured)
@@ -113,8 +114,6 @@ The HTTP methods that are supported are `GET`, `POST`, `PATCH`, `PUT`, `DELETE`,
113
114
 
114
115
  On the root URI (e.g. http://localhost:8080/) only a `GET` request is supported, which shows you a message indicating the API is working. All other HTTP methods on the root URI return a `405 Method Not Allowed` response.
115
116
 
116
- The `OPTIONS` method also works, but because Temba uses Express' default implementation for that, the `Access-Control-Allow-Methods` response header might not always be correct.
117
-
118
117
  ### JSON
119
118
 
120
119
  Temba supports JSON only.
@@ -123,9 +122,9 @@ Request bodies sent with a `POST`, `PATCH`, and `PUT` requests are valid when th
123
122
 
124
123
  Any valid formatted JSON is accepted and stored. If you want to validate or even change the JSON in the request bodies, check out [JSON Schema request body validation](#json-schema-request-body-validation) and the [`requestInterceptor`](#request-validation-or-mutation).
125
124
 
126
- IDs are auto generated when creating resources.
125
+ IDs are auto generated when creating resources, unless you specify an ID in the `POST` request URL.
127
126
 
128
- Providing IDs in the request body of `POST`, `PUT`, or `PATCH` requests is not allowed and will return a `400 Bad Request` response. The same applies to adding an ID in a `POST` request URL, or omitting an ID in a `PUT` or `PATCH` request URL.
127
+ Providing IDs in the request body of `POST`, `PUT`, or `PATCH` requests is not allowed and will return a `400 Bad Request` response. Instead, provide the ID in the request URL. However, omitting an ID in a `PUT` or `PATCH` request URL also returns a `400 Bad Request` response.
129
128
 
130
129
  ## Usage
131
130
 
@@ -268,7 +267,7 @@ const config = {
268
267
  get: ({ headers, resource, id }) => {
269
268
  //...
270
269
  },
271
- post: ({ headers, resource, body }) => {
270
+ post: ({ headers, resource, id, body }) => {
272
271
  // Validate, or even change the request body
273
272
  },
274
273
  put: ({ headers, resource, id, body }) => {
@@ -303,7 +302,7 @@ Example:
303
302
  ```js
304
303
  const config = {
305
304
  requestInterceptor: {
306
- post: ({ headers, resource, body }) => {
305
+ post: ({ headers, resource, id, body }) => {
307
306
  // Add a genre to Star Trek films:
308
307
  if (resource === 'movies' && body.title.startsWith('Star Trek'))
309
308
  return { ...body, genre: 'Science Fiction' }
@@ -381,68 +380,6 @@ After enabling etags, every `GET` request will return an `etag` response header,
381
380
 
382
381
  For updating or deleting items with a `PUT`, `PATCH`, or `DELETE`, after enabling etags, these requests are _required_ to provide an `If-Match` header with the etag. Only if the etag represents the latest version of the resource the update is made, otherwise the server responds with a `412 Precondition Failed` status code.
383
382
 
384
- ### Custom router
385
-
386
- Because Temba uses Express under the hood, you can create an Express router, and configure it as a `customRouter`:
387
-
388
- ```js
389
- // Example code of how to create an Express router, from the official Express docs at https://expressjs.com/en/guide/routing.html:
390
- const express = require('express')
391
- const router = express.Router()
392
-
393
- // middleware that is specific to this router
394
- router.use((req, res, next) => {
395
- console.log('Time: ', Date.now())
396
- next()
397
- })
398
- // define the home page route
399
- router.get('/', (req, res) => {
400
- res.send('Birds home page')
401
- })
402
- // define the about route
403
- router.get('/about', (req, res) => {
404
- res.send('About birds')
405
- })
406
-
407
- // Add the custom router to Temba config
408
- const config = {
409
- customRouter: router,
410
- }
411
-
412
- const server = create(config)
413
- ```
414
-
415
- > 💁 Don't overuse `customRouter`, as it defeats the purpose of Temba being a simple out-of-the-box solution.
416
-
417
- A `customRouter` can only overrule resource routes. The root URL (with or without `staticFolder`) will always be handled by Temba.
418
-
419
- So for the following router and config:
420
-
421
- ```
422
- router.get('/', (req, res) => {
423
- res.send('Birds home page')
424
- })
425
- router.get('/stuff', (req, res) => {
426
- res.send('Some stuff')
427
- })
428
- router.get('api/stuff', (req, res) => {
429
- res.send('Some API stuff')
430
- })
431
-
432
- const config = {
433
- apiPrefix: 'api',
434
- customRouter: router,
435
- resources: ['stuff'],
436
- staticFolder: 'build',
437
- }
438
- const server = create(config)
439
- ```
440
-
441
- - `/` will be handled by Temba, and will return the `staticFolder` (`build`) folder contents
442
- - `/stuff` and `/api/stuff` will be handled by the custom router
443
- - `/movies` will return a `404 Not Found`, because of `apiPrefix`
444
- - `/api/movies` will return movies, handled by Temba
445
-
446
383
  ## Config settings overview
447
384
 
448
385
  Configuring Temba is optional, it already works out of the box.
@@ -454,7 +391,6 @@ const config = {
454
391
  allowDeleteCollection: true,
455
392
  apiPrefix: 'api',
456
393
  connectionString: 'mongodb://localhost:27017/myDatabase',
457
- customRouter: router,
458
394
  delay: 500,
459
395
  etags: true,
460
396
  port: 4321,
@@ -462,7 +398,7 @@ const config = {
462
398
  get: ({ headers, resource, id }) => {
463
399
  //...
464
400
  },
465
- post: ({ headers, resource, body }) => {
401
+ post: ({ headers, resource, id, body }) => {
466
402
  // Validate, or even change the request body
467
403
  },
468
404
  put: ({ headers, resource, id, body }) => {
@@ -503,7 +439,6 @@ These are all the possible settings:
503
439
  | `allowDeleteCollection` | Whether a `DELETE` request on a collection is allowed to delete all items. | `false` |
504
440
  | `apiPrefix` | See [API prefix](#api-prefix) | `null` |
505
441
  | `connectionString` | See [Data persistency](#data-persistency) | `null` |
506
- | `customRouter` | See [Custom router](#custom-router) | `null` |
507
442
  | `delay` | The delay, in milliseconds, after processing the request before sending the response. | `0` |
508
443
  | `etags` | See [Caching and consistency with Etags](#caching-and-consistency-with-etags) | `false` |
509
444
  | `port` | The port your Temba server listens on | `3000` |
@@ -516,7 +451,7 @@ These are all the possible settings:
516
451
 
517
452
  ## Under the hood
518
453
 
519
- Temba is built with TypeScript, [Node](https://nodejs.org), [Express](https://expressjs.com/), [Vitest](https://vitest.dev/), [Supertest](https://www.npmjs.com/package/supertest), [@rakered/mongo](https://www.npmjs.com/package/@rakered/mongo), and [lowdb](https://www.npmjs.com/package/lowdb).
454
+ Temba is built with TypeScript, [Node](https://nodejs.org), [Vitest](https://vitest.dev/), [Supertest](https://www.npmjs.com/package/supertest), [@rakered/mongo](https://www.npmjs.com/package/@rakered/mongo), and [lowdb](https://www.npmjs.com/package/lowdb).
520
455
 
521
456
  ## Contributors ✨
522
457
 
package/config/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Router } from 'express';
2
1
  import type { ConfiguredSchemas } from '../schema/types.js';
3
2
  import type { RequestInterceptor } from '../requestInterceptor/types.js';
4
3
  import type { ResponseBodyInterceptor } from '../responseBodyInterceptor/types.js';
@@ -19,17 +18,16 @@ export type Config = {
19
18
  staticFolder: string | null;
20
19
  connectionString: string | null;
21
20
  delay: number;
22
- customRouter: Router | null;
23
21
  returnNullFields: boolean;
24
22
  isTesting: boolean;
25
23
  port: number;
26
24
  schemas: ConfiguredSchemas | null;
27
25
  allowDeleteCollection: boolean;
28
- etags: boolean;
26
+ etagsEnabled: boolean;
29
27
  openapi: OpenApiConfig;
30
28
  };
31
29
  export type ConfigKey = keyof Config;
32
- export type RouterConfig = Pick<Config, 'validateResources' | 'resources' | 'apiPrefix' | 'requestInterceptor' | 'responseBodyInterceptor' | 'returnNullFields' | 'allowDeleteCollection' | 'etags'>;
30
+ export type RouterConfig = Pick<Config, 'validateResources' | 'resources' | 'apiPrefix' | 'requestInterceptor' | 'responseBodyInterceptor' | 'returnNullFields' | 'allowDeleteCollection' | 'etagsEnabled'>;
33
31
  export type UserConfig = {
34
32
  resources?: Resources;
35
33
  staticFolder?: string;
@@ -38,7 +36,6 @@ export type UserConfig = {
38
36
  delay?: number;
39
37
  requestInterceptor?: RequestInterceptor;
40
38
  responseBodyInterceptor?: ResponseBodyInterceptor;
41
- customRouter?: Router;
42
39
  returnNullFields?: boolean;
43
40
  isTesting?: boolean;
44
41
  port?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAE/E,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,gBAAgB,GAAG;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAA;AAEpD,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEtD,MAAM,MAAM,MAAM,GAAG;IACnB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC7C,uBAAuB,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACvD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACjC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAA;AAEpC,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,MAAM,EACJ,mBAAmB,GACnB,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,yBAAyB,GACzB,kBAAkB,GAClB,uBAAuB,GACvB,OAAO,CACV,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAqBD,eAAO,MAAM,UAAU,gBAAiB,UAAU,KAAG,MAwGpD,CAAA;AAED,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,KAAK,IAAI,SAAyC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAE/E,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,gBAAgB,GAAG;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAA;AAEpD,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEtD,MAAM,MAAM,MAAM,GAAG;IACnB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC7C,uBAAuB,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACvD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACjC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAA;AAEpC,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,MAAM,EACJ,mBAAmB,GACnB,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,yBAAyB,GACzB,kBAAkB,GAClB,uBAAuB,GACvB,cAAc,CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAoBD,eAAO,MAAM,UAAU,gBAAiB,UAAU,KAAG,MAoGpD,CAAA;AAED,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,KAAK,IAAI,SAAyC,CAAA"}
package/config/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { Router } from 'express';
2
1
  const defaultConfig = {
3
2
  resources: [],
4
3
  validateResources: false,
@@ -8,13 +7,12 @@ const defaultConfig = {
8
7
  delay: 0,
9
8
  requestInterceptor: null,
10
9
  responseBodyInterceptor: null,
11
- customRouter: null,
12
10
  returnNullFields: true,
13
11
  isTesting: false,
14
12
  port: 3000,
15
13
  schemas: null,
16
14
  allowDeleteCollection: false,
17
- etags: false,
15
+ etagsEnabled: false,
18
16
  openapi: false,
19
17
  };
20
18
  export const initConfig = (userConfig) => {
@@ -67,9 +65,6 @@ export const initConfig = (userConfig) => {
67
65
  if (userConfig.responseBodyInterceptor) {
68
66
  config.responseBodyInterceptor = userConfig.responseBodyInterceptor;
69
67
  }
70
- if (userConfig.customRouter) {
71
- config.customRouter = userConfig.customRouter;
72
- }
73
68
  if (!isUndefined(userConfig.returnNullFields)) {
74
69
  config.returnNullFields = userConfig.returnNullFields;
75
70
  }
@@ -86,7 +81,7 @@ export const initConfig = (userConfig) => {
86
81
  config.allowDeleteCollection = userConfig.allowDeleteCollection;
87
82
  }
88
83
  if (!isUndefined(userConfig.etags)) {
89
- config.etags = userConfig.etags;
84
+ config.etagsEnabled = userConfig.etags;
90
85
  }
91
86
  if (!isUndefined(userConfig.openapi)) {
92
87
  config.openapi = userConfig.openapi;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,UAAU,CAAA;AAmB5D,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,WAsEjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,UAAU,CAAA;AAmB5D,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,WAyEjE"}
@@ -27,9 +27,12 @@ export default function createJsonQueries({ filename }) {
27
27
  const data = db.data[resource] || [];
28
28
  return (data || []).find((x) => x.id === id) || null;
29
29
  }
30
- async function create(resource, item) {
30
+ async function create(resource, id, item) {
31
31
  const db = await getDb();
32
- const itemWithId = { ...item, id: String(new Date().getTime()) };
32
+ const itemWithId = {
33
+ ...item,
34
+ id: id || String(new Date().getTime()),
35
+ };
33
36
  await db.update((data) => {
34
37
  data[resource] = [...(data[resource] || []), itemWithId];
35
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data/json/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,aAAa,GAAG,CAAO,WAAiB,EAAsB,EAAE;IACpE,OAAO,SAAS,CAAC,IAAI,MAAM,EAAQ,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,KAAK,EAAQ,QAAkB,EAAE,WAAiB,EAAsB,EAAE;IAC1F,OAAO,MAAM,SAAS,CAAC,IAAI,QAAQ,CAAO,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,KAAK,EAAQ,OAAsB,EAAE,WAAiB,EAAsB,EAAE;IAC9F,MAAM,EAAE,GAAG,IAAI,GAAG,CAAO,OAAO,EAAE,WAAW,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACf,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAMD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAc;IAChE,MAAM,WAAW,GAA8B,EAAE,CAAA;IAEjD,KAAK,UAAU,KAAK;QAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,CAAA;QAC/F,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,QAAgB;QACpC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,EAAU;QACjD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACpC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAA;IACtD,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,IAAmB;QACzD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAiB,CAAA;QAC/E,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,IAAU;QAChD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAiB,CAAA;QAE9C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;QAEF,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,IAAU;QACjD,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,EAAU;QACpD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,QAAgB;QACvC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAA;QACxB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,WAAW,GAAY;QAC3B,MAAM;QACN,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;QACP,UAAU;QACV,SAAS;KACV,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data/json/index.ts"],"names":[],"mappings":"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"}
@@ -34,9 +34,9 @@ export const createMongoQueries = (connectionString, logger) => {
34
34
  return null;
35
35
  return removeUnderscoreFromId(item);
36
36
  };
37
- const create = async (resource, item) => {
37
+ const create = async (resource, id, item) => {
38
38
  await connectToDatabase();
39
- const createdItem = await db[resource].insertOne(item);
39
+ const createdItem = await db[resource].insertOne(id ? { ...item, _id: id } : item);
40
40
  return removeUnderscoreFromId(createdItem.ops[0]);
41
41
  };
42
42
  const update = async (resource, item) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data/mongo/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data/mongo/index.ts"],"names":[],"mappings":"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"}
package/data/types.d.ts CHANGED
@@ -6,7 +6,7 @@ export type ItemWithoutId = Omit<Item, 'id'>;
6
6
  export type Queries = {
7
7
  getAll: (resource: string) => Promise<Item[]>;
8
8
  getById: (resource: string, id: string) => Promise<Item | null>;
9
- create: (resource: string, item: ItemWithoutId) => Promise<Item>;
9
+ create: (resource: string, id: string | null, item: ItemWithoutId) => Promise<Item>;
10
10
  update: (resource: string, item: Item) => Promise<Item>;
11
11
  replace: (resource: string, item: Item) => Promise<Item>;
12
12
  deleteById: (resource: string, id: string) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC/D,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/C,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC/D,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/C,CAAA"}
package/etags/etags.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { type StatsLike } from 'etag';
2
+ export declare const generateEtag: (payload: unknown) => string;
2
3
  export declare const etag: (entity: string | Buffer | StatsLike) => string;
3
4
  //# sourceMappingURL=etags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"etags.d.ts","sourceRoot":"","sources":["../../../src/etags/etags.ts"],"names":[],"mappings":"AAAA,OAAwB,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,CAAA;AAOtD,eAAO,MAAM,IAAI,WAAY,MAAM,GAAG,MAAM,GAAG,SAAS,WAEvD,CAAA"}
1
+ {"version":3,"file":"etags.d.ts","sourceRoot":"","sources":["../../../src/etags/etags.ts"],"names":[],"mappings":"AAAA,OAAwB,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,CAAA;AAOtD,eAAO,MAAM,YAAY,YAAa,OAAO,WAE5C,CAAA;AAED,eAAO,MAAM,IAAI,WAAY,MAAM,GAAG,MAAM,GAAG,SAAS,WAEvD,CAAA"}
package/etags/etags.js CHANGED
@@ -3,6 +3,9 @@ import etagFromExpress, {} from 'etag';
3
3
  // Express only supports generating them, so to be sure we use the same algorithm for both,
4
4
  // we use the etag module for both by wrapping it here.
5
5
  // This means we also override the default Express etag function, but that's with the same algorithm.
6
+ export const generateEtag = (payload) => {
7
+ return etag(JSON.stringify(payload));
8
+ };
6
9
  export const etag = (entity) => {
7
10
  return etagFromExpress(entity, { weak: true });
8
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"etags.js","sourceRoot":"","sources":["../../../src/etags/etags.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,EAAE,EAAkB,MAAM,MAAM,CAAA;AAEtD,iFAAiF;AACjF,2FAA2F;AAC3F,uDAAuD;AACvD,qGAAqG;AAErG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC1D,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA"}
1
+ {"version":3,"file":"etags.js","sourceRoot":"","sources":["../../../src/etags/etags.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,EAAE,EAAkB,MAAM,MAAM,CAAA;AAEtD,iFAAiF;AACjF,2FAA2F;AAC3F,uDAAuD;AACvD,qGAAqG;AAErG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC1D,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA"}
package/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import type { UserConfig } from './config/index.js';
2
- import { TembaError as TembaErrorInternal } from './requestInterceptor/TembaError.js';
1
+ import { type UserConfig } from './config/index.js';
2
+ import type { IncomingMessage, ServerResponse } from 'http';
3
3
  export declare const create: (userConfig?: UserConfig) => {
4
- start: () => void;
5
- Express: import("express-serve-static-core").Express | undefined;
4
+ start: () => import("http").Server<typeof IncomingMessage, typeof ServerResponse> | undefined;
5
+ server: import("http").Server<typeof IncomingMessage, typeof ServerResponse> | undefined;
6
6
  };
7
- export declare const TembaError: typeof TembaErrorInternal;
8
7
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAK1C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAiHlF,eAAO,MAAM,MAAM,gBAAiB,UAAU;;;CAA6B,CAAA;AAE3E,eAAO,MAAM,UAAU,2BAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAoF3D,eAAO,MAAM,MAAM,gBAAiB,UAAU;;;CAA6B,CAAA"}
package/index.js CHANGED
@@ -1,101 +1,72 @@
1
- import express, { json } from 'express';
2
- import morgan from 'morgan';
3
- import { createQueries } from './data/queries.js';
1
+ import { createServer as httpCreateServer } from 'node:http';
4
2
  import { initConfig } from './config/index.js';
5
- import cors from 'cors';
6
- import { createDelayMiddleware } from './delay/delayMiddleware.js';
3
+ import { createQueries } from './data/queries.js';
7
4
  import { compileSchemas } from './schema/compile.js';
8
- import { createResourceRouter } from './resourceRouter.js';
9
- import { TembaError as TembaErrorInternal } from './requestInterceptor/TembaError.js';
10
- import { createAuthMiddleware, isAuthEnabled } from './auth/auth.js';
5
+ import { createResourceHandler, handleMethodNotAllowed, handleNotFound, noopHandler, sendErrorResponse, } from './resourceHandler.js';
11
6
  import { initLogger } from './log/logger.js';
12
- import { etag } from './etags/etags.js';
13
- import { createOpenApiRouter } from './openapi/openapi.js';
14
- // Route for handling not allowed methods.
15
- const handleMethodNotAllowed = (_, res) => {
16
- res.status(405).json({ message: 'Method Not Allowed' });
17
- };
18
- // Route for handling not found.
19
- const handleNotFound = (_, res) => {
20
- res.status(404).json({ message: 'Not Found' });
7
+ import { createOpenApiHandler } from './openapi/openapi.js';
8
+ import morgan from 'morgan';
9
+ const handleRootUrl = (req, res) => {
10
+ if (req.method !== 'GET')
11
+ return handleMethodNotAllowed(req, res);
12
+ res.statusCode = 200;
13
+ res.setHeader('Content-Type', 'text/plain');
14
+ res.end('It works! ツ');
21
15
  };
16
+ const removePendingAndTrailingSlashes = (url) => (url ? url.replace(/^\/+|\/+$/g, '') : '');
22
17
  const createServer = (userConfig) => {
23
- const { logger, logLevel } = initLogger(process.env.LOG_LEVEL);
24
18
  const config = initConfig(userConfig);
19
+ const rootPath = config.apiPrefix ? removePendingAndTrailingSlashes(config.apiPrefix) : '';
20
+ const openapiPaths = [
21
+ `${rootPath ? `${rootPath}/` : ''}openapi.json`,
22
+ `${rootPath ? `${rootPath}/` : ''}openapi.yaml`,
23
+ ];
24
+ const { logger, logLevel } = initLogger(process.env.LOG_LEVEL);
25
25
  const queries = createQueries(config.connectionString, logger);
26
- const app = express();
27
- app.use(json());
28
- app.set('etag', config.etags ? (entity) => etag(entity) : false);
29
- // Add HTTP request logging.
30
- if (logLevel === 'debug')
31
- app.use(morgan('tiny'));
32
- // Enable CORS for all requests.
33
- app.use(cors({ origin: true, credentials: true }));
34
- // Serve a static folder, if configured.
35
- // Because it is defined before the auth middleware, the static folder is served without authentication,
36
- // because it is not convenient to add an auth header to a web page in the browser.
37
- if (config.staticFolder) {
38
- app.use(express.static(config.staticFolder));
39
- }
40
- // If enabled, add auth middleware to all requests, and disable the tokens resource.
41
- if (isAuthEnabled()) {
42
- app.use(createAuthMiddleware(queries));
43
- app.all('/tokens', handleNotFound);
44
- }
45
- // Add a delay to every request, if configured.
46
- if (config.delay > 0) {
47
- const delayMiddleware = createDelayMiddleware(config.delay);
48
- app.use(delayMiddleware);
49
- }
50
- // On the root URL (with apiPrefix, if applicable) only a GET is allowed.
51
- const rootRouter = express.Router();
52
- const rootPath = config.apiPrefix ? `${config.apiPrefix}` : '/';
53
- app.use(rootPath, rootRouter);
54
- // Use a custom router, if configured.
55
- if (config.customRouter) {
56
- app.use(config.customRouter);
57
- }
58
- app.use('/openapi.json', createOpenApiRouter('json', config));
59
- app.use('/openapi.yaml', createOpenApiRouter('yaml', config));
60
- // Temba supports the GET, POST, PUT, PATCH, DELETE, and HEAD methods for resource URLs.
61
- // HEAD is not implemented here, because Express supports it out of the box.
62
- // Create a router on all other URLs, for all supported methods
63
- const resourcePath = config.apiPrefix ? `${config.apiPrefix}*` : '*';
64
26
  const schemas = compileSchemas(config.schemas);
65
- const resourceRouter = createResourceRouter(queries, schemas, config);
66
- app.use(resourcePath, resourceRouter);
67
- // A GET to the root URL shows a default message.
68
- rootRouter.get('/', async (_, res) => {
69
- return res.send('It works! ツ');
27
+ const handleResource = createResourceHandler(queries, schemas, config);
28
+ const httpLogger = logLevel === 'debug' ? morgan('tiny') : noopHandler;
29
+ const server = httpCreateServer((req, res) => {
30
+ httpLogger(req, res, (err) => {
31
+ if (err)
32
+ return sendErrorResponse(res);
33
+ const requestUrl = removePendingAndTrailingSlashes(req.url);
34
+ const handleRequest = () => {
35
+ if (requestUrl === rootPath) {
36
+ handleRootUrl(req, res);
37
+ }
38
+ else if (openapiPaths.includes(requestUrl)) {
39
+ createOpenApiHandler(requestUrl.endsWith('.json') ? 'json' : 'yaml', config)(req, res);
40
+ }
41
+ else if (requestUrl.startsWith(rootPath)) {
42
+ handleResource(req, res);
43
+ }
44
+ else {
45
+ handleNotFound(req, res);
46
+ }
47
+ };
48
+ if (config.delay > 0) {
49
+ setTimeout(handleRequest, config.delay);
50
+ }
51
+ else {
52
+ handleRequest();
53
+ }
54
+ });
70
55
  });
71
- // All other requests to the root URL are not allowed.
72
- rootRouter.all('/', handleMethodNotAllowed);
73
- // In case of an API prefix, resource URLs outside of the API prefix return a 404 Not Found.
74
- if (config.apiPrefix) {
75
- app.get('*', handleNotFound);
76
- app.post('*', handleNotFound);
77
- app.put('*', handleNotFound);
78
- app.delete('*', handleNotFound);
79
- app.patch('*', handleNotFound);
80
- }
81
- // All other methods to any URL are not allowed.
82
- app.all('*', handleMethodNotAllowed);
83
- if (config.apiPrefix)
84
- app.all(`${config.apiPrefix}*`, handleMethodNotAllowed);
85
56
  return {
86
57
  start: () => {
87
58
  if (config.isTesting) {
88
59
  logger.info('⛔️ Server not started. Remove or disable isTesting from your config.');
89
60
  return;
90
61
  }
91
- app.listen(config.port, () => {
92
- logger.info(`✅ Server listening on port ${config.port}`);
62
+ server.listen(config.port, () => {
63
+ console.log(`✅ Server listening on port ${config.port}`);
93
64
  });
65
+ return server;
94
66
  },
95
- // Expose Express for testing purposes only, e.g. usage with supertest.
96
- Express: config.isTesting ? app : undefined,
67
+ // Expose the http server for testing purposes only, e.g. usage with supertest.
68
+ server: config.isTesting ? server : undefined,
97
69
  };
98
70
  };
99
71
  export const create = (userConfig) => createServer(userConfig);
100
- export const TembaError = TembaErrorInternal;
101
72
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Config } from '../config/index.js';
2
+ import type { IncomingMessage, ServerResponse } from 'http';
2
3
  type OpenApiFormat = 'json' | 'yaml';
3
- export declare const createOpenApiRouter: (format: OpenApiFormat, config: Config) => import("express-serve-static-core").Router;
4
+ export declare const createOpenApiHandler: (format: OpenApiFormat, config: Config) => (req: IncomingMessage, res: ServerResponse<IncomingMessage>) => Promise<void>;
4
5
  export {};
5
6
  //# sourceMappingURL=openapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/openapi/openapi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAgDvC,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;AAIpC,eAAO,MAAM,mBAAmB,WAAY,aAAa,UAAU,MAAM,+CAsbxE,CAAA"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/openapi/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIvC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AA8C3D,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;AAIpC,eAAO,MAAM,oBAAoB,WAAY,aAAa,UAAU,MAAM,WACrC,eAAe,OAAO,cAAc,CAAC,eAAe,CAAC,kBAofzF,CAAA"}