temba 0.13.1 → 0.14.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.
package/README.md CHANGED
@@ -52,7 +52,7 @@ Prerequisites you need to have:
52
52
  Create your own Temba server with the following command and you are up and running!
53
53
 
54
54
  ```bash
55
- npx create-temba-server my-rest-api@latest
55
+ npx create-temba-server@latest my-rest-api
56
56
  cd my-rest-api
57
57
  npm start
58
58
  ```
@@ -137,7 +137,9 @@ For every resource you use in your requests, a collection is created in the data
137
137
  If you only want to allow specific resource names, configure them by providing a `resourceNames` key in the config object when creating the Temba server:
138
138
 
139
139
  ```js
140
- const config = { resourceNames: ['movies', 'actors'] }
140
+ const config = {
141
+ resourceNames: ['movies', 'actors'],
142
+ }
141
143
  const server = temba.create(config)
142
144
  ```
143
145
 
@@ -148,7 +150,9 @@ Requests on these resources only give a `404 Not Found` if the ID does not exist
148
150
  If you want to host static assets, next to the API, configure the `staticFolder`:
149
151
 
150
152
  ```js
151
- const config = { staticFolder: 'build' }
153
+ const config = {
154
+ staticFolder: 'build',
155
+ }
152
156
  const server = temba.create(config)
153
157
  ```
154
158
 
@@ -167,7 +171,9 @@ To be able to still access the `/products` API resource, configure an `apiPrefix
167
171
  With the `apiPrefix` config setting, all resources get an extra path segment in front of them. If the `apiPrefix` is `'api'`, then `/movies/12345` becomes `/api/movies/12345`:
168
172
 
169
173
  ```js
170
- const config = { apiPrefix: 'api' }
174
+ const config = {
175
+ apiPrefix: 'api',
176
+ }
171
177
  const server = temba.create(config)
172
178
  ```
173
179
 
@@ -348,10 +354,10 @@ router.get('api/stuff', (req, res) => {
348
354
  })
349
355
 
350
356
  const config = {
351
- resourceNames: ['stuff'],
352
- staticFolder: 'build',
353
357
  apiPrefix: 'api',
354
358
  customRouter: router,
359
+ resourceNames: ['stuff'],
360
+ staticFolder: 'build',
355
361
  }
356
362
  const server = temba.create(config)
357
363
  ```
@@ -369,12 +375,10 @@ Here is an example of the config settings for Temba, and how you define them:
369
375
 
370
376
  ```js
371
377
  const config = {
372
- resourceNames: ['movies', 'actors'],
373
- connectionString: 'mongodb://localhost:27017',
374
- staticFolder: 'build',
375
378
  apiPrefix: 'api',
376
- customRouter: router,
377
379
  cacheControl: 'public, max-age=300',
380
+ connectionString: 'mongodb://localhost:27017',
381
+ customRouter: router,
378
382
  delay: 500,
379
383
  requestBodyInterceptor: {
380
384
  post: ({ resourceName, requestBody }) => {
@@ -387,25 +391,30 @@ const config = {
387
391
  // Validate, or even change the requestBody
388
392
  },
389
393
  },
394
+ resourceNames: ['movies', 'actors'],
395
+ responseBodyInterceptor: ({ resourceName, responseBody, id }) => {
396
+ // Change the response body before it is sent to the client
397
+ },
398
+ returnNullFields: false,
399
+ staticFolder: 'build',
390
400
  }
391
401
  const server = temba.create(config)
392
402
  ```
393
403
 
394
- None of the settings are required, and only the settings you define are used.
395
-
396
404
  These are all the possible settings:
397
405
 
398
- | Config setting | Description |
399
- | :------------------------ | :----------------------------------------------------------------------------------------- |
400
- | `resourceNames` | See [Allowing specific resources only](#allowing-specific-resources-only) |
401
- | `connectionString` | See [MongoDB](#mongodb) |
402
- | `staticFolder` | See [Static assets](#static-assets) |
403
- | `apiPrefix` | See [API prefix](#api-prefix) |
404
- | `customRouter` | See [Custom router](#custom-router) |
405
- | `cacheControl` | The `Cache-control` response header value for each GET request. |
406
- | `delay` | After processing the request, the delay in milliseconds before the request should be sent. |
407
- | `requestBodyInterceptor` | See [Request body validation or mutation](#request-body-validation-or-mutation) |
408
- | `responseBodyInterceptor` | See [Response body interception](#request-body-validation-or-mutation) |
406
+ | Config setting | Description | Default value |
407
+ | :------------------------ | :----------------------------------------------------------------------------------------- | :------------ |
408
+ | `apiPrefix` | See [API prefix](#api-prefix) | `null` |
409
+ | `cacheControl` | The `Cache-control` response header value for each GET request. | `'no-store'` |
410
+ | `connectionString` | See [MongoDB](#mongodb) | `null` |
411
+ | `customRouter` | See [Custom router](#custom-router) | `null` |
412
+ | `delay` | After processing the request, the delay in milliseconds before the request should be sent. | `0` |
413
+ | `requestBodyInterceptor` | See [Request body validation or mutation](#request-body-validation-or-mutation) | `noop` |
414
+ | `resourceNames` | See [Allowing specific resources only](#allowing-specific-resources-only) | `[]` |
415
+ | `responseBodyInterceptor` | See [Response body interception](#request-body-validation-or-mutation) | `noop` |
416
+ | `returnNullFields` | Whether fields with a `null` value should be returned in responses. | `true` |
417
+ | `staticFolder` | See [Static assets](#static-assets) | `null` |
409
418
 
410
419
  ## Roadmap
411
420
 
@@ -419,6 +428,10 @@ Although I won't promise if and when, these are some things to consider for the
419
428
 
420
429
  - Generic **filtering and sorting**, for example: `GET /api/movies?filter=releaseYear ge 1980 and releaseYear le 1989&sort=-releaseYear,title&page=2&limit=20&fields=title,releaseYear,genre`
421
430
 
431
+ - Intial data seed when using in-memory.
432
+
433
+ - Get rid of Express?
434
+
422
435
  ## Under the hood
423
436
 
424
437
  Temba is built with JavaScript, [Node](https://nodejs.org), [Express](https://expressjs.com/), [Jest](https://jestjs.io/), [Supertest](https://www.npmjs.com/package/supertest), and [@rakered/mongo](https://www.npmjs.com/package/@rakered/mongo).
package/config/index.d.ts CHANGED
@@ -11,11 +11,11 @@ export type Config = {
11
11
  connectionString: string;
12
12
  delay: number;
13
13
  customRouter: Router;
14
+ returnNullFields: boolean;
14
15
  };
15
- export type RouterConfig = Pick<Config, 'validateResources' | 'resourceNames' | 'apiPrefix' | 'cacheControl' | 'requestBodyInterceptor' | 'responseBodyInterceptor'>;
16
+ export type RouterConfig = Pick<Config, 'validateResources' | 'resourceNames' | 'apiPrefix' | 'cacheControl' | 'requestBodyInterceptor' | 'responseBodyInterceptor' | 'returnNullFields'>;
16
17
  export type UserConfig = {
17
18
  resourceNames?: string[];
18
- validateResources?: boolean;
19
19
  staticFolder?: string;
20
20
  apiPrefix?: string;
21
21
  connectionString?: string;
@@ -24,5 +24,6 @@ export type UserConfig = {
24
24
  requestBodyInterceptor?: RequestBodyInterceptor;
25
25
  responseBodyInterceptor?: ResponseBodyInterceptor;
26
26
  customRouter?: Router;
27
+ returnNullFields?: boolean;
27
28
  };
28
29
  export declare function initConfig(userConfig: UserConfig): Config;
package/config/index.js CHANGED
@@ -24,8 +24,10 @@ const defaultConfig = {
24
24
  return responseBody;
25
25
  },
26
26
  customRouter: null,
27
+ returnNullFields: true,
27
28
  };
28
29
  function initConfig(userConfig) {
30
+ var _a;
29
31
  if (!userConfig)
30
32
  return defaultConfig;
31
33
  const config = Object.assign({}, defaultConfig);
@@ -72,6 +74,7 @@ function initConfig(userConfig) {
72
74
  if (userConfig.customRouter) {
73
75
  config.customRouter = userConfig.customRouter;
74
76
  }
77
+ config.returnNullFields = (_a = userConfig.returnNullFields) !== null && _a !== void 0 ? _a : true;
75
78
  return config;
76
79
  }
77
80
  exports.initConfig = initConfig;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "temba",
3
- "version": "0.13.1",
3
+ "version": "0.14.0",
4
4
  "description": "Get a simple MongoDB REST API with zero coding in less than 30 seconds (seriously).",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/routes/get.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare function createGetRoutes(queries: any, cacheControl: any, responseBodyInterceptor: any): {
1
+ declare function createGetRoutes(queries: any, cacheControl: any, responseBodyInterceptor: any, returnNullFields: any): {
2
2
  handleGetResource: (req: any, res: any) => Promise<any>;
3
3
  };
4
4
  export { createGetRoutes };
package/routes/get.js CHANGED
@@ -10,7 +10,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createGetRoutes = void 0;
13
- function createGetRoutes(queries, cacheControl, responseBodyInterceptor) {
13
+ const utils_1 = require("./utils");
14
+ function createGetRoutes(queries, cacheControl, responseBodyInterceptor, returnNullFields) {
14
15
  function handleGetResource(req, res) {
15
16
  return __awaiter(this, void 0, void 0, function* () {
16
17
  try {
@@ -36,7 +37,7 @@ function createGetRoutes(queries, cacheControl, responseBodyInterceptor) {
36
37
  }
37
38
  }
38
39
  res.status(200);
39
- res.json(theItem);
40
+ res.json(returnNullFields ? theItem : (0, utils_1.removeNullFields)(theItem));
40
41
  return res.send();
41
42
  }
42
43
  const items = yield queries.getAll(resourceName);
@@ -54,7 +55,7 @@ function createGetRoutes(queries, cacheControl, responseBodyInterceptor) {
54
55
  }
55
56
  }
56
57
  res.status(200);
57
- res.json(theItems);
58
+ res.json(returnNullFields ? theItems : theItems.map((item) => (0, utils_1.removeNullFields)(item)));
58
59
  return res.send();
59
60
  }
60
61
  catch (error) {
package/routes/get.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/routes/get.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,SAAS,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,uBAAuB;IACrE,SAAe,iBAAiB,CAAC,GAAG,EAAE,GAAG;;YACvC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;gBAEtC,IAAI,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;oBAEpD,IAAI,CAAC,IAAI,EAAE;wBACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBACf,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;qBAClB;oBAED,IAAI,OAAO,GAAG,IAAI,CAAA;oBAClB,IAAI,uBAAuB,EAAE;wBAC3B,IAAI;4BACF,OAAO,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;4BAC3E,IAAI,CAAC,OAAO;gCAAE,OAAO,GAAG,IAAI,CAAA;yBAC7B;wBAAC,OAAO,KAAK,EAAE;4BACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,OAAO,EAAE,oCAAoC,GAAG,KAAK,CAAC,OAAO;6BAC9D,CAAC,CAAA;yBACH;qBACF;oBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACjB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;iBAClB;gBAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBAEhD,IAAI,QAAQ,GAAG,KAAK,CAAA;gBACpB,IAAI,uBAAuB,EAAE;oBAC3B,IAAI;wBACF,QAAQ,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;wBACzE,IAAI,CAAC,QAAQ;4BAAE,QAAQ,GAAG,KAAK,CAAA;qBAChC;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BAC1B,OAAO,EAAE,oCAAoC,GAAG,KAAK,CAAC,OAAO;yBAC9D,CAAC,CAAA;qBACH;iBACF;gBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACf,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAClB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;aAClB;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,iBAAiB;KAClB,CAAA;AACH,CAAC;AAEQ,0CAAe"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/routes/get.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA0C;AAE1C,SAAS,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,gBAAgB;IACvF,SAAe,iBAAiB,CAAC,GAAG,EAAE,GAAG;;YACvC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;gBAEtC,IAAI,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;oBAEpD,IAAI,CAAC,IAAI,EAAE;wBACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBACf,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;qBAClB;oBAED,IAAI,OAAO,GAAG,IAAI,CAAA;oBAClB,IAAI,uBAAuB,EAAE;wBAC3B,IAAI;4BACF,OAAO,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;4BAC3E,IAAI,CAAC,OAAO;gCAAE,OAAO,GAAG,IAAI,CAAA;yBAC7B;wBAAC,OAAO,KAAK,EAAE;4BACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,OAAO,EAAE,oCAAoC,GAAG,KAAK,CAAC,OAAO;6BAC9D,CAAC,CAAA;yBACH;qBACF;oBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACf,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC,CAAA;oBAChE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;iBAClB;gBAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBAEhD,IAAI,QAAQ,GAAG,KAAK,CAAA;gBACpB,IAAI,uBAAuB,EAAE;oBAC3B,IAAI;wBACF,QAAQ,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;wBACzE,IAAI,CAAC,QAAQ;4BAAE,QAAQ,GAAG,KAAK,CAAA;qBAChC;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BAC1B,OAAO,EAAE,oCAAoC,GAAG,KAAK,CAAC,OAAO;yBAC9D,CAAC,CAAA;qBACH;iBACF;gBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACf,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtF,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;aAClB;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,iBAAiB;KAClB,CAAA;AACH,CAAC;AAEQ,0CAAe"}
package/routes/patch.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare function createPatchRoutes(queries: any, requestBodyInterceptor: any): {
1
+ declare function createPatchRoutes(queries: any, requestBodyInterceptor: any, returnNullFields: any): {
2
2
  handlePatch: (req: any, res: any) => Promise<any>;
3
3
  };
4
4
  export { createPatchRoutes };
package/routes/patch.js CHANGED
@@ -11,7 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createPatchRoutes = void 0;
13
13
  const interceptors_1 = require("./interceptors");
14
- function createPatchRoutes(queries, requestBodyInterceptor) {
14
+ const utils_1 = require("./utils");
15
+ function createPatchRoutes(queries, requestBodyInterceptor, returnNullFields) {
15
16
  function handlePatch(req, res) {
16
17
  return __awaiter(this, void 0, void 0, function* () {
17
18
  try {
@@ -28,7 +29,10 @@ function createPatchRoutes(queries, requestBodyInterceptor) {
28
29
  });
29
30
  item = Object.assign(Object.assign(Object.assign({}, item), requestBody), { id });
30
31
  const updatedItem = yield queries.update(resourceName, item);
31
- return res.status(200).json(updatedItem).send();
32
+ return res
33
+ .status(200)
34
+ .json(returnNullFields ? updatedItem : (0, utils_1.removeNullFields)(updatedItem))
35
+ .send();
32
36
  }
33
37
  catch (error) {
34
38
  return res.status(500).json({ message: error.message });
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/routes/patch.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAqD;AAErD,SAAS,iBAAiB,CAAC,OAAO,EAAE,sBAAsB;IACxD,SAAe,WAAW,CAAC,GAAG,EAAE,GAAG;;YACjC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAE3E,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,IAAI,IAAI,GAAG,IAAI,CAAA;gBACf,IAAI,EAAE;oBAAE,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;gBAEtD,IAAI,CAAC,IAAI;oBACP,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,OAAO,EAAE,aAAa;qBAChC,CAAC,CAAA;gBAEJ,IAAI,iDAAQ,IAAI,GAAK,WAAW,KAAE,EAAE,GAAE,CAAA;gBAEtC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAE5D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;aAChD;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AAEQ,8CAAiB"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/routes/patch.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAqD;AACrD,mCAA0C;AAE1C,SAAS,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB;IAC1E,SAAe,WAAW,CAAC,GAAG,EAAE,GAAG;;YACjC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAE3E,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,IAAI,IAAI,GAAG,IAAI,CAAA;gBACf,IAAI,EAAE;oBAAE,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;gBAEtD,IAAI,CAAC,IAAI;oBACP,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,OAAO,EAAE,aAAa;qBAChC,CAAC,CAAA;gBAEJ,IAAI,iDAAQ,IAAI,GAAK,WAAW,KAAE,EAAE,GAAE,CAAA;gBAEtC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAE5D,OAAO,GAAG;qBACP,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;qBACpE,IAAI,EAAE,CAAA;aACV;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AAEQ,8CAAiB"}
package/routes/post.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare function createPostRoutes(queries: any, requestBodyInterceptor: any): {
1
+ declare function createPostRoutes(queries: any, requestBodyInterceptor: any, returnNullFields: any): {
2
2
  handlePost: (req: any, res: any) => Promise<any>;
3
3
  };
4
4
  export { createPostRoutes };
package/routes/post.js CHANGED
@@ -12,7 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createPostRoutes = void 0;
13
13
  const url_1 = require("url");
14
14
  const interceptors_1 = require("./interceptors");
15
- function createPostRoutes(queries, requestBodyInterceptor) {
15
+ const utils_1 = require("./utils");
16
+ function createPostRoutes(queries, requestBodyInterceptor, returnNullFields) {
16
17
  function handlePost(req, res) {
17
18
  return __awaiter(this, void 0, void 0, function* () {
18
19
  try {
@@ -30,7 +31,7 @@ function createPostRoutes(queries, requestBodyInterceptor) {
30
31
  }),
31
32
  })
32
33
  .status(201)
33
- .json(newItem)
34
+ .json(returnNullFields ? newItem : (0, utils_1.removeNullFields)(newItem))
34
35
  .send();
35
36
  }
36
37
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/routes/post.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAA4B;AAC5B,iDAAqD;AAErD,SAAS,gBAAgB,CAAC,OAAO,EAAE,sBAAsB;IACvD,SAAe,UAAU,CAAC,GAAG,EAAE,GAAG;;YAChC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAExC,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAE1E,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;gBAE/D,OAAO,GAAG;qBACP,GAAG,CAAC;oBACH,QAAQ,EAAE,IAAA,YAAM,EAAC;wBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;wBACrB,QAAQ,EAAE,GAAG,YAAY,IAAI,OAAO,CAAC,EAAE,EAAE;qBAC1C,CAAC;iBACH,CAAC;qBACD,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,OAAO,CAAC;qBACb,IAAI,EAAE,CAAA;aACV;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,UAAU;KACX,CAAA;AACH,CAAC;AAEQ,4CAAgB"}
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/routes/post.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAA4B;AAC5B,iDAAqD;AACrD,mCAA0C;AAE1C,SAAS,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB;IACzE,SAAe,UAAU,CAAC,GAAG,EAAE,GAAG;;YAChC,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAExC,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBAE1E,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;gBAE/D,OAAO,GAAG;qBACP,GAAG,CAAC;oBACH,QAAQ,EAAE,IAAA,YAAM,EAAC;wBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;wBACrB,QAAQ,EAAE,GAAG,YAAY,IAAI,OAAO,CAAC,EAAE,EAAE;qBAC1C,CAAC;iBACH,CAAC;qBACD,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;qBAC5D,IAAI,EAAE,CAAA;aACV;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,UAAU;KACX,CAAA;AACH,CAAC;AAEQ,4CAAgB"}
package/routes/put.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare function createPutRoutes(queries: any, requestBodyInterceptor: any): {
1
+ declare function createPutRoutes(queries: any, requestBodyInterceptor: any, returnNullFields: any): {
2
2
  handlePut: (req: any, res: any) => Promise<any>;
3
3
  };
4
4
  export { createPutRoutes };
package/routes/put.js CHANGED
@@ -11,7 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createPutRoutes = void 0;
13
13
  const interceptors_1 = require("./interceptors");
14
- function createPutRoutes(queries, requestBodyInterceptor) {
14
+ const utils_1 = require("./utils");
15
+ function createPutRoutes(queries, requestBodyInterceptor, returnNullFields) {
15
16
  function handlePut(req, res) {
16
17
  return __awaiter(this, void 0, void 0, function* () {
17
18
  try {
@@ -28,7 +29,10 @@ function createPutRoutes(queries, requestBodyInterceptor) {
28
29
  });
29
30
  item = Object.assign(Object.assign({}, requestBody), { id });
30
31
  const replacedItem = yield queries.replace(resourceName, item);
31
- return res.status(200).json(replacedItem).send();
32
+ return res
33
+ .status(200)
34
+ .json(returnNullFields ? replacedItem : (0, utils_1.removeNullFields)(replacedItem))
35
+ .send();
32
36
  }
33
37
  catch (error) {
34
38
  return res.status(500).json({ message: error.message });
package/routes/put.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"put.js","sourceRoot":"","sources":["../../src/routes/put.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAqD;AAErD,SAAS,eAAe,CAAC,OAAO,EAAE,sBAAsB;IACtD,SAAe,SAAS,CAAC,GAAG,EAAE,GAAG;;YAC/B,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAEzE,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,IAAI,IAAI,GAAG,IAAI,CAAA;gBACf,IAAI,EAAE;oBAAE,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;gBAEtD,IAAI,CAAC,IAAI;oBACP,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,OAAO,EAAE,aAAa;qBAChC,CAAC,CAAA;gBAEJ,IAAI,mCAAQ,WAAW,KAAE,EAAE,GAAE,CAAA;gBAE7B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAE9D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAA;aACjD;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC;AAEQ,0CAAe"}
1
+ {"version":3,"file":"put.js","sourceRoot":"","sources":["../../src/routes/put.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAqD;AACrD,mCAA0C;AAE1C,SAAS,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB;IACxE,SAAe,SAAS,CAAC,GAAG,EAAE,GAAG;;YAC/B,IAAI;gBACF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAA;gBAE5C,MAAM,WAAW,GAAG,IAAA,mCAAoB,EAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAEzE,IAAI,OAAO,WAAW,KAAK,QAAQ;oBACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE9D,IAAI,IAAI,GAAG,IAAI,CAAA;gBACf,IAAI,EAAE;oBAAE,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;gBAEtD,IAAI,CAAC,IAAI;oBACP,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC1B,OAAO,EAAE,OAAO,EAAE,aAAa;qBAChC,CAAC,CAAA;gBAEJ,IAAI,mCAAQ,WAAW,KAAE,EAAE,GAAE,CAAA;gBAE7B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBAE9D,OAAO,GAAG;qBACP,MAAM,CAAC,GAAG,CAAC;qBACX,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,YAAY,CAAC,CAAC;qBACtE,IAAI,EAAE,CAAA;aACV;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;aACnE;QACH,CAAC;KAAA;IAED,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC;AAEQ,0CAAe"}
package/routes/routes.js CHANGED
@@ -21,11 +21,11 @@ const delete_1 = require("./delete");
21
21
  const urlMiddleware_1 = require("../urls/urlMiddleware");
22
22
  const express_1 = __importDefault(require("express"));
23
23
  function createResourceRouter(queries, routerConfig) {
24
- const { validateResources, resourceNames, apiPrefix, cacheControl, requestBodyInterceptor, responseBodyInterceptor, } = routerConfig;
25
- const { handleGetResource } = (0, get_1.createGetRoutes)(queries, cacheControl, responseBodyInterceptor);
26
- const { handlePost } = (0, post_1.createPostRoutes)(queries, requestBodyInterceptor);
27
- const { handlePut } = (0, put_1.createPutRoutes)(queries, requestBodyInterceptor);
28
- const { handlePatch } = (0, patch_1.createPatchRoutes)(queries, requestBodyInterceptor);
24
+ const { validateResources, resourceNames, apiPrefix, cacheControl, requestBodyInterceptor, responseBodyInterceptor, returnNullFields, } = routerConfig;
25
+ const { handleGetResource } = (0, get_1.createGetRoutes)(queries, cacheControl, responseBodyInterceptor, returnNullFields);
26
+ const { handlePost } = (0, post_1.createPostRoutes)(queries, requestBodyInterceptor, returnNullFields);
27
+ const { handlePut } = (0, put_1.createPutRoutes)(queries, requestBodyInterceptor, returnNullFields);
28
+ const { handlePatch } = (0, patch_1.createPatchRoutes)(queries, requestBodyInterceptor, returnNullFields);
29
29
  const { handleDelete } = (0, delete_1.createDeleteRoutes)(queries);
30
30
  const validateResource = (0, urlMiddleware_1.createValidateResourceMiddleware)(validateResources, resourceNames);
31
31
  const getResourceAndId = (0, urlMiddleware_1.createResourceAndIdParser)(apiPrefix);
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+BAAuC;AACvC,iCAAyC;AACzC,+BAAuC;AACvC,mCAA2C;AAC3C,qCAA6C;AAC7C,yDAAmG;AAEnG,sDAA6B;AAG7B,SAAS,oBAAoB,CAAC,OAAO,EAAE,YAA0B;IAC/D,MAAM,EACJ,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,GACxB,GAAG,YAAY,CAAA;IAEhB,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,qBAAe,EAAC,OAAO,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAC7F,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAgB,EAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IACxE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,qBAAe,EAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IACtE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,yBAAiB,EAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAA;IAEpD,MAAM,gBAAgB,GAAG,IAAA,gDAAgC,EAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IAC3F,MAAM,gBAAgB,GAAG,IAAA,yCAAyB,EAAC,SAAS,CAAC,CAAA;IAE7D,MAAM,cAAc,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;IAEvC,cAAc;QACZ,6GAA6G;SAC5G,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;SAC/D,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC;SACzD,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,CAAC;SACvD,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,CAAC;SAC3D,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAA;IAEhE,OAAO,cAAc,CAAA;AACvB,CAAC;AAqBQ,oDAAoB;AAnB7B,iDAAiD;AACjD,MAAM,UAAU,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAkBJ,gCAAU;AAjBzC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IACnC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAChC,CAAC,CAAA,CAAC,CAAA;AAEF,sDAAsD;AACtD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;AAE3C,0CAA0C;AAC1C,SAAS,sBAAsB,CAAC,CAAC,EAAE,GAAG;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;AACzD,CAAC;AAO0C,wDAAsB;AALjE,gCAAgC;AAChC,SAAS,cAAc,CAAC,CAAC,EAAE,GAAG;IAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;AAChD,CAAC;AAEkE,wCAAc"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+BAAuC;AACvC,iCAAyC;AACzC,+BAAuC;AACvC,mCAA2C;AAC3C,qCAA6C;AAC7C,yDAAmG;AAEnG,sDAA6B;AAG7B,SAAS,oBAAoB,CAAC,OAAO,EAAE,YAA0B;IAC/D,MAAM,EACJ,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,GACjB,GAAG,YAAY,CAAA;IAEhB,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,qBAAe,EAC3C,OAAO,EACP,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,CACjB,CAAA;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAgB,EAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;IAC1F,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,qBAAe,EAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;IACxF,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,yBAAiB,EAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;IAC5F,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAA;IAEpD,MAAM,gBAAgB,GAAG,IAAA,gDAAgC,EAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IAC3F,MAAM,gBAAgB,GAAG,IAAA,yCAAyB,EAAC,SAAS,CAAC,CAAA;IAE7D,MAAM,cAAc,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;IAEvC,cAAc;QACZ,6GAA6G;SAC5G,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;SAC/D,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC;SACzD,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,CAAC;SACvD,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,CAAC;SAC3D,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAA;IAEhE,OAAO,cAAc,CAAA;AACvB,CAAC;AAqBQ,oDAAoB;AAnB7B,iDAAiD;AACjD,MAAM,UAAU,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAkBJ,gCAAU;AAjBzC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IACnC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAChC,CAAC,CAAA,CAAC,CAAA;AAEF,sDAAsD;AACtD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;AAE3C,0CAA0C;AAC1C,SAAS,sBAAsB,CAAC,CAAC,EAAE,GAAG;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;AACzD,CAAC;AAO0C,wDAAsB;AALjE,gCAAgC;AAChC,SAAS,cAAc,CAAC,CAAC,EAAE,GAAG;IAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;AAChD,CAAC;AAEkE,wCAAc"}
@@ -0,0 +1,3 @@
1
+ export declare const removeNullFields: (obj: Record<string, unknown>) => {
2
+ [k: string]: unknown;
3
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeNullFields = void 0;
4
+ const removeNullFields = (obj) => {
5
+ return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== null));
6
+ };
7
+ exports.removeNullFields = removeNullFields;
8
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/routes/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,GAA4B,EAAE,EAAE;IAC/D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAA;AACvF,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B"}