directus 9.16.1 → 9.17.2
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/dist/app.js +7 -7
- package/dist/auth/drivers/ldap.js +1 -0
- package/dist/auth/drivers/local.js +6 -0
- package/dist/auth/drivers/oauth2.js +1 -0
- package/dist/auth/drivers/openid.js +1 -0
- package/dist/cli/utils/create-env/env-stub.liquid +8 -1
- package/dist/controllers/activity.js +1 -0
- package/dist/controllers/auth.js +6 -9
- package/dist/database/helpers/schema/dialects/sqlite.d.ts +2 -2
- package/dist/database/helpers/schema/dialects/sqlite.js +2 -2
- package/dist/database/helpers/schema/types.d.ts +2 -2
- package/dist/database/helpers/schema/types.js +2 -2
- package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +3 -0
- package/dist/database/migrations/20220826A-add-origin-to-accountability.js +21 -0
- package/dist/database/system-data/fields/activity.yaml +6 -0
- package/dist/database/system-data/fields/sessions.yaml +2 -0
- package/dist/env.js +8 -0
- package/dist/extensions.d.ts +1 -0
- package/dist/extensions.js +16 -3
- package/dist/flows.js +27 -17
- package/dist/mailer.js +7 -0
- package/dist/middleware/authenticate.d.ts +1 -1
- package/dist/middleware/authenticate.js +1 -0
- package/dist/middleware/authenticate.test.js +44 -4
- package/dist/middleware/validate-batch.d.ts +1 -2
- package/dist/middleware/validate-batch.js +10 -13
- package/dist/middleware/validate-batch.test.d.ts +1 -0
- package/dist/middleware/validate-batch.test.js +82 -0
- package/dist/operations/request/index.js +2 -2
- package/dist/operations/transform/index.d.ts +1 -1
- package/dist/operations/transform/index.js +1 -1
- package/dist/services/authentication.js +13 -3
- package/dist/services/fields.js +11 -3
- package/dist/services/files.js +2 -2
- package/dist/services/graphql/index.js +45 -37
- package/dist/services/items.js +15 -3
- package/dist/services/payload.js +28 -4
- package/dist/services/relations.d.ts +2 -0
- package/dist/services/relations.js +14 -0
- package/dist/services/server.js +5 -4
- package/dist/services/shares.js +2 -1
- package/dist/utils/async-handler.d.ts +2 -6
- package/dist/utils/async-handler.js +1 -13
- package/dist/utils/async-handler.test.d.ts +1 -0
- package/dist/utils/async-handler.test.js +18 -0
- package/package.json +14 -11
package/dist/services/server.js
CHANGED
|
@@ -143,7 +143,7 @@ class ServerService {
|
|
|
143
143
|
componentType: 'datastore',
|
|
144
144
|
observedUnit: 'ms',
|
|
145
145
|
observedValue: 0,
|
|
146
|
-
threshold: 150,
|
|
146
|
+
threshold: env_1.default.DB_HEALTHCHECK_THRESHOLD ? +env_1.default.DB_HEALTHCHECK_THRESHOLD : 150,
|
|
147
147
|
},
|
|
148
148
|
];
|
|
149
149
|
const startTime = perf_hooks_1.performance.now();
|
|
@@ -188,7 +188,7 @@ class ServerService {
|
|
|
188
188
|
componentType: 'cache',
|
|
189
189
|
observedValue: 0,
|
|
190
190
|
observedUnit: 'ms',
|
|
191
|
-
threshold: 150,
|
|
191
|
+
threshold: env_1.default.CACHE_HEALTHCHECK_THRESHOLD ? +env_1.default.CACHE_HEALTHCHECK_THRESHOLD : 150,
|
|
192
192
|
},
|
|
193
193
|
],
|
|
194
194
|
};
|
|
@@ -222,7 +222,7 @@ class ServerService {
|
|
|
222
222
|
componentType: 'ratelimiter',
|
|
223
223
|
observedValue: 0,
|
|
224
224
|
observedUnit: 'ms',
|
|
225
|
-
threshold: 150,
|
|
225
|
+
threshold: env_1.default.RATE_LIMITER_HEALTHCHECK_THRESHOLD ? +env_1.default.RATE_LIMITER_HEALTHCHECK_THRESHOLD : 150,
|
|
226
226
|
},
|
|
227
227
|
],
|
|
228
228
|
};
|
|
@@ -249,13 +249,14 @@ class ServerService {
|
|
|
249
249
|
const checks = {};
|
|
250
250
|
for (const location of (0, utils_1.toArray)(env_1.default.STORAGE_LOCATIONS)) {
|
|
251
251
|
const disk = storage_1.default.disk(location);
|
|
252
|
+
const envThresholdKey = `STORAGE_${location}_HEALTHCHECK_THRESHOLD`.toUpperCase();
|
|
252
253
|
checks[`storage:${location}:responseTime`] = [
|
|
253
254
|
{
|
|
254
255
|
status: 'ok',
|
|
255
256
|
componentType: 'objectstore',
|
|
256
257
|
observedValue: 0,
|
|
257
258
|
observedUnit: 'ms',
|
|
258
|
-
threshold: 750,
|
|
259
|
+
threshold: env_1.default[envThresholdKey] ? +env_1.default[envThresholdKey] : 750,
|
|
259
260
|
},
|
|
260
261
|
];
|
|
261
262
|
const startTime = perf_hooks_1.performance.now();
|
package/dist/services/shares.js
CHANGED
|
@@ -31,7 +31,7 @@ class SharesService extends items_1.ItemsService {
|
|
|
31
31
|
return super.createOne(data, opts);
|
|
32
32
|
}
|
|
33
33
|
async login(payload) {
|
|
34
|
-
var _a, _b;
|
|
34
|
+
var _a, _b, _c;
|
|
35
35
|
const record = await this.knex
|
|
36
36
|
.select({
|
|
37
37
|
share_id: 'id',
|
|
@@ -86,6 +86,7 @@ class SharesService extends items_1.ItemsService {
|
|
|
86
86
|
expires: refreshTokenExpiration,
|
|
87
87
|
ip: (_a = this.accountability) === null || _a === void 0 ? void 0 : _a.ip,
|
|
88
88
|
user_agent: (_b = this.accountability) === null || _b === void 0 ? void 0 : _b.userAgent,
|
|
89
|
+
origin: (_c = this.accountability) === null || _c === void 0 ? void 0 : _c.origin,
|
|
89
90
|
share: record.share_id,
|
|
90
91
|
});
|
|
91
92
|
await this.knex('directus_sessions').delete().where('expires', '<', new Date());
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
* Handles promises in routes.
|
|
4
|
-
*/
|
|
5
|
-
declare function asyncHandler(handler: RequestHandler): RequestHandler;
|
|
6
|
-
declare function asyncHandler(handler: ErrorRequestHandler): ErrorRequestHandler;
|
|
1
|
+
import type { RequestHandler, Request, Response, NextFunction } from 'express';
|
|
2
|
+
declare const asyncHandler: (fn: RequestHandler) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
7
3
|
export default asyncHandler;
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
if (handler.length === 2 || handler.length === 3) {
|
|
5
|
-
const scoped = (req, res, next) => Promise.resolve(handler(req, res, next)).catch(next);
|
|
6
|
-
return scoped;
|
|
7
|
-
}
|
|
8
|
-
else if (handler.length === 4) {
|
|
9
|
-
const scoped = (err, req, res, next) => Promise.resolve(handler(err, req, res, next)).catch(next);
|
|
10
|
-
return scoped;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
throw new Error(`Failed to asyncHandle() function "${handler.name}"`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
3
|
+
const asyncHandler = (fn) => (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next);
|
|
16
4
|
exports.default = asyncHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../src/types/express.d.ts';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
require("../../src/types/express.d.ts");
|
|
7
|
+
const async_handler_1 = __importDefault(require("./async-handler"));
|
|
8
|
+
let mockRequest;
|
|
9
|
+
let mockResponse;
|
|
10
|
+
const nextFunction = jest.fn();
|
|
11
|
+
test('Wraps async middleware in Promise resolve that will catch rejects and pass them to the nextFn', async () => {
|
|
12
|
+
const err = new Error('testing');
|
|
13
|
+
const middleware = async (_req, _res, _next) => {
|
|
14
|
+
throw err;
|
|
15
|
+
};
|
|
16
|
+
await (0, async_handler_1.default)(middleware)(mockRequest, mockResponse, nextFunction);
|
|
17
|
+
expect(nextFunction).toHaveBeenCalledWith(err);
|
|
18
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "directus",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.17.2",
|
|
4
4
|
"license": "GPL-3.0-only",
|
|
5
5
|
"homepage": "https://github.com/directus/directus#readme",
|
|
6
6
|
"description": "Directus is a real-time API and App dashboard for managing SQL database content.",
|
|
@@ -66,16 +66,16 @@
|
|
|
66
66
|
],
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@aws-sdk/client-ses": "^3.107.0",
|
|
69
|
-
"@directus/app": "9.
|
|
70
|
-
"@directus/drive": "9.
|
|
71
|
-
"@directus/drive-azure": "9.
|
|
72
|
-
"@directus/drive-gcs": "9.
|
|
73
|
-
"@directus/drive-s3": "9.
|
|
69
|
+
"@directus/app": "9.17.2",
|
|
70
|
+
"@directus/drive": "9.17.2",
|
|
71
|
+
"@directus/drive-azure": "9.17.2",
|
|
72
|
+
"@directus/drive-gcs": "9.17.2",
|
|
73
|
+
"@directus/drive-s3": "9.17.2",
|
|
74
74
|
"@directus/extensions-sdk": "^9.14.1",
|
|
75
75
|
"@directus/format-title": "^9.15.0",
|
|
76
|
-
"@directus/schema": "9.
|
|
77
|
-
"@directus/shared": "9.
|
|
78
|
-
"@directus/specs": "9.
|
|
76
|
+
"@directus/schema": "9.17.2",
|
|
77
|
+
"@directus/shared": "9.17.2",
|
|
78
|
+
"@directus/specs": "9.17.2",
|
|
79
79
|
"@godaddy/terminus": "^4.10.2",
|
|
80
80
|
"@rollup/plugin-alias": "^3.1.9",
|
|
81
81
|
"@rollup/plugin-virtual": "^2.1.0",
|
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
"deep-map": "^2.0.0",
|
|
98
98
|
"destroy": "^1.2.0",
|
|
99
99
|
"dotenv": "^10.0.0",
|
|
100
|
+
"encodeurl": "^1.0.2",
|
|
100
101
|
"eventemitter2": "^6.4.5",
|
|
101
102
|
"execa": "^5.1.1",
|
|
102
103
|
"exifr": "^7.1.3",
|
|
@@ -126,7 +127,7 @@
|
|
|
126
127
|
"mime-types": "^2.1.35",
|
|
127
128
|
"ms": "^2.1.3",
|
|
128
129
|
"nanoid": "^3.1.23",
|
|
129
|
-
"node-cron": "^3.0.
|
|
130
|
+
"node-cron": "^3.0.2",
|
|
130
131
|
"node-machine-id": "^1.1.12",
|
|
131
132
|
"nodemailer": "^6.7.5",
|
|
132
133
|
"object-hash": "^2.2.0",
|
|
@@ -146,7 +147,6 @@
|
|
|
146
147
|
"snappy": "^7.1.1",
|
|
147
148
|
"stream-json": "^1.7.4",
|
|
148
149
|
"strip-bom-stream": "^4.0.0",
|
|
149
|
-
"supertest": "^6.2.3",
|
|
150
150
|
"tmp-promise": "^3.0.3",
|
|
151
151
|
"update-check": "^1.5.4",
|
|
152
152
|
"uuid": "^8.3.2",
|
|
@@ -160,6 +160,7 @@
|
|
|
160
160
|
"memcached": "^2.2.2",
|
|
161
161
|
"mysql": "^2.18.1",
|
|
162
162
|
"nodemailer-mailgun-transport": "^2.1.4",
|
|
163
|
+
"nodemailer-sendgrid": "^1.0.3",
|
|
163
164
|
"pg": "^8.7.3",
|
|
164
165
|
"sqlite3": "^5.0.8",
|
|
165
166
|
"tedious": "^13.0.0"
|
|
@@ -175,6 +176,7 @@
|
|
|
175
176
|
"@types/cors": "2.8.12",
|
|
176
177
|
"@types/deep-diff": "1.0.1",
|
|
177
178
|
"@types/destroy": "1.0.0",
|
|
179
|
+
"@types/encodeurl": "^1.0.0",
|
|
178
180
|
"@types/express": "4.17.13",
|
|
179
181
|
"@types/express-pino-logger": "4.0.3",
|
|
180
182
|
"@types/express-serve-static-core": "^4.17.29",
|
|
@@ -214,6 +216,7 @@
|
|
|
214
216
|
"jest": "28.1.2",
|
|
215
217
|
"knex-mock-client": "1.8.4",
|
|
216
218
|
"rimraf": "3.0.2",
|
|
219
|
+
"supertest": "^6.2.3",
|
|
217
220
|
"ts-jest": "28.0.5",
|
|
218
221
|
"ts-node": "^10.8.2",
|
|
219
222
|
"ts-node-dev": "1.1.8",
|