@ladjs/api 14.1.23 → 14.2.1

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 (2) hide show
  1. package/index.js +25 -5
  2. package/package.json +9 -9
package/index.js CHANGED
@@ -2,20 +2,22 @@ const process = require('node:process');
2
2
  const http = require('node:http');
3
3
  const https = require('node:https');
4
4
  const util = require('node:util');
5
+ const zlib = require('node:zlib');
5
6
  const Cabin = require('cabin');
6
7
  const I18N = require('@ladjs/i18n');
7
- const Passport = require('@ladjs/passport');
8
8
  const Koa = require('koa');
9
+ const Passport = require('@ladjs/passport');
9
10
  const Redis = require('@ladjs/redis');
10
11
  const StoreIPAddress = require('@ladjs/store-ip-address');
11
12
  const Timeout = require('koa-better-timeout');
12
13
  const _ = require('lodash');
13
14
  const auth = require('koa-basic-auth');
14
15
  const bodyParser = require('koa-bodyparser');
16
+ const compress = require('koa-compress');
15
17
  const conditional = require('koa-conditional-get');
16
18
  const cors = require('kcors');
17
19
  const errorHandler = require('koa-better-error-handler');
18
- const etag = require('koa-etag');
20
+ const etag = require('@koa/etag');
19
21
  const json = require('koa-json');
20
22
  const koa404Handler = require('koa-404-handler');
21
23
  const koaConnect = require('koa-connect');
@@ -44,8 +46,22 @@ class API {
44
46
  // eslint-disable-next-line complexity
45
47
  constructor(config, Users) {
46
48
  this.config = {
47
- removeTrailingSlashes: true,
48
49
  ...sharedConfig('API'),
50
+ removeTrailingSlashes: true,
51
+ prettyPrintedJSON: process.env.PRETTY_PRINTED_JSON
52
+ ? Boolean(process.env.PRETTY_PRINTED_JSON)
53
+ : false,
54
+
55
+ // https://github.com/koajs/compress
56
+ compress: {
57
+ br: {
58
+ params: {
59
+ [zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,
60
+ [zlib.constants.BROTLI_PARAM_QUALITY]: 4
61
+ }
62
+ }
63
+ },
64
+
49
65
  ...config
50
66
  };
51
67
 
@@ -132,6 +148,9 @@ class API {
132
148
  app.use(i18n.middleware);
133
149
  }
134
150
 
151
+ // compress/gzip
152
+ if (this.config.compress) app.use(compress(this.config.compress));
153
+
135
154
  // Conditional-get
136
155
  app.use(conditional());
137
156
 
@@ -163,8 +182,9 @@ class API {
163
182
  return bodyParser(this.config.bodyParser || {})(ctx, next);
164
183
  });
165
184
 
166
- // Pretty-printed json responses
167
- app.use(json());
185
+ // pretty-printed json responses
186
+ // (default unless in development/test environment)
187
+ app.use(json({ pretty: this.config.prettyPrintedJSON, param: 'pretty' }));
168
188
 
169
189
  // Passport
170
190
  if (this.passport) app.use(this.passport.initialize());
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ladjs/api",
3
3
  "description": "API server for Lad",
4
- "version": "14.1.23",
4
+ "version": "14.2.1",
5
5
  "author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com/)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/ladjs/api/issues",
@@ -11,8 +11,9 @@
11
11
  "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com/)"
12
12
  ],
13
13
  "dependencies": {
14
+ "@koa/etag": "^5.0.2",
14
15
  "@koa/router": "^13.1.1",
15
- "@ladjs/i18n": "^8.0.3",
16
+ "@ladjs/i18n": "^10.0.0",
16
17
  "@ladjs/koa-simple-ratelimit": "^4.1.1",
17
18
  "@ladjs/passport": "^5.1.4",
18
19
  "@ladjs/redis": "^1.1.1",
@@ -23,21 +24,20 @@
23
24
  "cabin": "^14.0.0",
24
25
  "express-request-id": "1.4.1",
25
26
  "kcors": "^2.2.2",
26
- "koa": "2.16.0",
27
+ "koa": "3.1.1",
27
28
  "koa-404-handler": "^0.1.0",
28
29
  "koa-basic-auth": "^4.0.0",
29
- "koa-better-error-handler": "^11.0.4",
30
+ "koa-better-error-handler": "^12.0.0",
30
31
  "koa-better-timeout": "^0.0.6",
31
32
  "koa-bodyparser": "^4.4.1",
32
33
  "koa-compress": "^5.1.1",
33
34
  "koa-conditional-get": "^3.0.0",
34
35
  "koa-connect": "^2.1.0",
35
- "koa-etag": "^4.0.0",
36
36
  "koa-json": "^2.0.2",
37
37
  "lodash": "^4.17.21",
38
38
  "multimatch": "5",
39
39
  "request-received": "^0.0.3",
40
- "response-time": "^2.3.3"
40
+ "response-time": "^2.3.4"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@commitlint/cli": "^19.8.1",
@@ -48,14 +48,14 @@
48
48
  "eslint-config-xo-lass": "^2.0.1",
49
49
  "fixpack": "^4.0.0",
50
50
  "husky": "^9.1.7",
51
- "ioredis": "^5.6.1",
52
- "ioredis-mock": "^8.9.0",
51
+ "ioredis": "^5.8.2",
52
+ "ioredis-mock": "^8.13.1",
53
53
  "lint-staged": "^15.4.3",
54
54
  "mongoose": "6",
55
55
  "nyc": "^17.1.0",
56
56
  "remark-cli": "11",
57
57
  "remark-preset-github": "^4.0.4",
58
- "supertest": "^7.1.3",
58
+ "supertest": "^7.1.4",
59
59
  "xo": "^0.56.0"
60
60
  },
61
61
  "engines": {