@directus/api 14.1.1 → 15.0.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 (78) hide show
  1. package/dist/app.js +3 -3
  2. package/dist/auth/drivers/oauth2.js +2 -3
  3. package/dist/auth/drivers/openid.js +2 -3
  4. package/dist/cli/commands/schema/apply.js +44 -33
  5. package/dist/cli/index.js +2 -2
  6. package/dist/database/index.d.ts +2 -1
  7. package/dist/database/index.js +2 -1
  8. package/dist/database/system-data/fields/settings.yaml +4 -0
  9. package/dist/database/system-data/fields/users.yaml +4 -0
  10. package/dist/database/system-data/relations/relations.yaml +4 -0
  11. package/dist/emitter.d.ts +1 -0
  12. package/dist/emitter.js +2 -1
  13. package/dist/env.d.ts +1 -0
  14. package/dist/env.js +6 -0
  15. package/dist/extensions/lib/get-shared-deps-mapping.js +1 -1
  16. package/dist/extensions/lib/sandbox/register/route.d.ts +1 -0
  17. package/dist/extensions/manager.d.ts +5 -0
  18. package/dist/extensions/manager.js +42 -16
  19. package/dist/logger.d.ts +2 -1
  20. package/dist/logger.js +1 -0
  21. package/dist/middleware/rate-limiter-ip.js +14 -11
  22. package/dist/redis/create-redis.d.ts +7 -0
  23. package/dist/redis/create-redis.js +12 -0
  24. package/dist/redis/index.d.ts +2 -0
  25. package/dist/redis/index.js +2 -0
  26. package/dist/redis/use-redis.d.ts +16 -0
  27. package/dist/redis/use-redis.js +22 -0
  28. package/dist/server.d.ts +2 -0
  29. package/dist/services/extensions.js +1 -1
  30. package/dist/services/graphql/index.js +50 -15
  31. package/dist/services/payload.js +3 -3
  32. package/dist/services/server.js +2 -3
  33. package/dist/services/specifications.js +3 -3
  34. package/dist/services/users.js +6 -6
  35. package/dist/telemetry/index.d.ts +4 -0
  36. package/dist/telemetry/index.js +4 -0
  37. package/dist/telemetry/lib/get-report.d.ts +5 -0
  38. package/dist/telemetry/lib/get-report.js +42 -0
  39. package/dist/telemetry/lib/init-telemetry.d.ts +11 -0
  40. package/dist/telemetry/lib/init-telemetry.js +30 -0
  41. package/dist/telemetry/lib/send-report.d.ts +5 -0
  42. package/dist/telemetry/lib/send-report.js +23 -0
  43. package/dist/telemetry/lib/track.d.ts +10 -0
  44. package/dist/telemetry/lib/track.js +31 -0
  45. package/dist/telemetry/types/report.d.ts +58 -0
  46. package/dist/telemetry/types/report.js +1 -0
  47. package/dist/telemetry/utils/get-item-count.d.ts +26 -0
  48. package/dist/telemetry/utils/get-item-count.js +36 -0
  49. package/dist/telemetry/utils/get-random-wait-time.d.ts +5 -0
  50. package/dist/telemetry/utils/get-random-wait-time.js +5 -0
  51. package/dist/telemetry/utils/get-user-count.d.ts +7 -0
  52. package/dist/telemetry/utils/get-user-count.js +30 -0
  53. package/dist/telemetry/utils/get-user-item-count.d.ts +13 -0
  54. package/dist/telemetry/utils/get-user-item-count.js +18 -0
  55. package/dist/utils/apply-query.js +13 -2
  56. package/dist/utils/get-cache-key.js +1 -1
  57. package/dist/utils/get-ip-from-req.d.ts +1 -1
  58. package/dist/utils/get-ip-from-req.js +1 -1
  59. package/dist/utils/get-permissions.js +0 -3
  60. package/dist/utils/get-snapshot-diff.js +2 -1
  61. package/dist/utils/get-snapshot.js +1 -1
  62. package/dist/utils/get-versioned-hash.js +1 -1
  63. package/dist/utils/md.d.ts +1 -1
  64. package/dist/utils/md.js +3 -2
  65. package/dist/utils/merge-permissions.js +19 -11
  66. package/dist/utils/validate-query.js +1 -0
  67. package/dist/utils/validate-snapshot.js +3 -3
  68. package/dist/websocket/controllers/base.d.ts +2 -0
  69. package/dist/websocket/controllers/graphql.d.ts +2 -0
  70. package/dist/websocket/controllers/graphql.js +1 -1
  71. package/dist/websocket/controllers/index.d.ts +2 -0
  72. package/dist/websocket/controllers/rest.d.ts +2 -0
  73. package/dist/websocket/types.d.ts +3 -1
  74. package/package.json +108 -109
  75. package/dist/utils/package.d.ts +0 -2
  76. package/dist/utils/package.js +0 -6
  77. package/dist/utils/telemetry.d.ts +0 -1
  78. package/dist/utils/telemetry.js +0 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@directus/api",
3
- "version": "14.1.1",
3
+ "version": "15.0.0",
4
4
  "description": "Directus is a real-time API and App dashboard for managing SQL database content",
5
5
  "keywords": [
6
6
  "directus",
@@ -59,168 +59,167 @@
59
59
  ],
60
60
  "dependencies": {
61
61
  "@authenio/samlify-node-xmllint": "2.0.0",
62
- "@aws-sdk/client-ses": "3.332.0",
62
+ "@aws-sdk/client-ses": "3.478.0",
63
63
  "@directus/format-title": "10.1.0",
64
- "@godaddy/terminus": "4.12.0",
65
- "@rollup/plugin-alias": "5.0.0",
66
- "@rollup/plugin-node-resolve": "15.0.2",
67
- "@rollup/plugin-virtual": "3.0.1",
68
- "argon2": "0.31.1",
69
- "async": "3.2.4",
70
- "axios": "1.4.0",
64
+ "@godaddy/terminus": "4.12.1",
65
+ "@rollup/plugin-alias": "5.1.0",
66
+ "@rollup/plugin-node-resolve": "15.2.3",
67
+ "@rollup/plugin-virtual": "3.0.2",
68
+ "argon2": "0.31.2",
69
+ "async": "3.2.5",
70
+ "axios": "1.6.2",
71
71
  "busboy": "1.6.0",
72
72
  "bytes": "3.1.2",
73
- "camelcase": "7.0.1",
74
- "chalk": "5.2.0",
73
+ "camelcase": "8.0.0",
74
+ "chalk": "5.3.0",
75
75
  "chokidar": "3.5.3",
76
- "commander": "10.0.1",
76
+ "commander": "11.1.0",
77
77
  "content-disposition": "0.5.4",
78
78
  "cookie-parser": "1.4.6",
79
79
  "cors": "2.8.5",
80
- "cron-parser": "4.8.1",
81
- "date-fns": "2.30.0",
80
+ "cron-parser": "4.9.0",
81
+ "date-fns": "3.0.1",
82
82
  "deep-diff": "1.0.2",
83
83
  "destroy": "1.2.0",
84
- "dotenv": "16.0.3",
84
+ "dotenv": "16.3.1",
85
85
  "encodeurl": "1.0.2",
86
86
  "eventemitter2": "6.4.9",
87
- "execa": "7.1.1",
87
+ "execa": "8.0.1",
88
88
  "exif-reader": "1.2.0",
89
89
  "express": "4.18.2",
90
- "flat": "5.0.2",
91
- "fs-extra": "11.1.1",
90
+ "flat": "6.0.1",
91
+ "fs-extra": "11.2.0",
92
92
  "glob-to-regexp": "0.4.1",
93
93
  "graphql": "16.8.1",
94
94
  "graphql-compose": "9.0.10",
95
- "graphql-ws": "5.14.1",
96
- "helmet": "7.0.0",
95
+ "graphql-ws": "5.14.2",
96
+ "helmet": "7.1.0",
97
97
  "icc": "3.0.0",
98
- "inquirer": "9.2.4",
98
+ "inquirer": "9.2.12",
99
99
  "ioredis": "5.3.2",
100
100
  "isolated-vm": "4.6.0",
101
- "joi": "17.9.2",
101
+ "joi": "17.11.0",
102
102
  "js-yaml": "4.1.0",
103
103
  "js2xmlparser": "5.0.0",
104
104
  "json2csv": "5.0.7",
105
- "jsonwebtoken": "9.0.1",
106
- "keyv": "4.5.2",
107
- "knex": "2.4.2",
105
+ "jsonwebtoken": "9.0.2",
106
+ "keyv": "4.5.4",
107
+ "knex": "3.1.0",
108
108
  "ldapjs": "2.3.3",
109
- "liquidjs": "10.7.1",
109
+ "liquidjs": "10.10.0",
110
110
  "lodash-es": "4.17.21",
111
- "marked": "5.0.2",
111
+ "marked": "11.1.0",
112
112
  "micromustache": "8.0.3",
113
113
  "mime-types": "2.1.35",
114
- "minimatch": "9.0.1",
114
+ "minimatch": "9.0.3",
115
115
  "ms": "2.1.3",
116
- "nanoid": "4.0.2",
116
+ "nanoid": "5.0.4",
117
117
  "node-machine-id": "1.1.12",
118
118
  "node-schedule": "2.1.1",
119
- "nodemailer": "6.9.2",
119
+ "nodemailer": "6.9.7",
120
120
  "object-hash": "3.0.0",
121
- "openapi3-ts": "4.1.2",
122
- "openid-client": "5.4.2",
123
- "ora": "6.3.1",
121
+ "openapi3-ts": "4.2.0",
122
+ "openid-client": "5.6.1",
123
+ "ora": "7.0.1",
124
124
  "otplib": "12.0.1",
125
- "p-queue": "7.4.1",
125
+ "p-limit": "5.0.0",
126
+ "p-queue": "8.0.1",
126
127
  "papaparse": "5.4.1",
127
- "pino": "8.14.1",
128
- "pino-http": "8.3.3",
128
+ "pino": "8.17.1",
129
+ "pino-http": "8.6.0",
129
130
  "pino-http-print": "3.1.0",
130
- "pino-pretty": "10.0.0",
131
+ "pino-pretty": "10.3.0",
131
132
  "qs": "6.11.2",
132
- "rate-limiter-flexible": "2.4.1",
133
- "rollup": "3.22.0",
133
+ "rate-limiter-flexible": "4.0.0",
134
+ "rollup": "4.9.1",
134
135
  "samlify": "2.8.10",
135
- "sanitize-html": "2.10.0",
136
- "sharp": "0.32.6",
136
+ "sanitize-html": "2.11.0",
137
+ "sharp": "0.33.1",
137
138
  "snappy": "7.2.2",
138
- "stream-json": "1.7.5",
139
- "strip-bom-stream": "5.0.0",
139
+ "stream-json": "1.8.0",
140
140
  "tinypool": "0.8.1",
141
- "tsx": "3.12.7",
142
- "uuid": "9.0.0",
141
+ "tsx": "4.7.0",
142
+ "uuid": "9.0.1",
143
143
  "uuid-validate": "0.0.3",
144
144
  "wellknown": "0.5.0",
145
- "ws": "8.14.2",
145
+ "ws": "8.15.1",
146
146
  "zod": "3.22.4",
147
- "zod-validation-error": "1.0.1",
148
- "@directus/app": "10.13.1",
149
- "@directus/constants": "11.0.1",
150
- "@directus/extensions": "0.2.0",
151
- "@directus/extensions-sdk": "10.2.0",
152
- "@directus/errors": "0.2.0",
153
- "@directus/pressure": "1.0.13",
154
- "@directus/schema": "11.0.0",
155
- "@directus/storage": "10.0.7",
156
- "@directus/specs": "10.2.3",
157
- "@directus/storage-driver-azure": "10.0.14",
158
- "@directus/storage-driver-local": "10.0.14",
159
- "@directus/storage-driver-cloudinary": "10.0.14",
160
- "@directus/storage-driver-s3": "10.0.14",
161
- "@directus/storage-driver-gcs": "10.0.14",
162
- "@directus/storage-driver-supabase": "1.0.6",
163
- "@directus/utils": "11.0.2",
164
- "@directus/validation": "0.0.9"
147
+ "zod-validation-error": "2.1.0",
148
+ "@directus/constants": "11.0.2",
149
+ "@directus/extensions": "0.2.1",
150
+ "@directus/errors": "0.2.1",
151
+ "@directus/app": "10.13.3",
152
+ "@directus/extensions-sdk": "10.3.0",
153
+ "@directus/pressure": "1.0.14",
154
+ "@directus/specs": "10.2.5",
155
+ "@directus/storage": "10.0.8",
156
+ "@directus/storage-driver-azure": "10.0.15",
157
+ "@directus/schema": "11.0.1",
158
+ "@directus/storage-driver-cloudinary": "10.0.15",
159
+ "@directus/storage-driver-gcs": "10.0.15",
160
+ "@directus/storage-driver-local": "10.0.15",
161
+ "@directus/validation": "0.0.10",
162
+ "@directus/utils": "11.0.3",
163
+ "@directus/storage-driver-s3": "10.0.15",
164
+ "@directus/storage-driver-supabase": "1.0.7",
165
+ "directus": "10.8.3"
165
166
  },
166
167
  "devDependencies": {
167
- "@ngneat/falso": "6.4.0",
168
- "@types/async": "3.2.20",
169
- "@types/busboy": "1.5.0",
170
- "@types/bytes": "3.1.1",
171
- "@types/content-disposition": "0.5.5",
172
- "@types/cookie-parser": "1.4.3",
173
- "@types/cors": "2.8.13",
174
- "@types/deep-diff": "1.0.2",
175
- "@types/destroy": "1.0.0",
176
- "@types/encodeurl": "1.0.0",
168
+ "@ngneat/falso": "7.1.1",
169
+ "@types/async": "3.2.24",
170
+ "@types/busboy": "1.5.3",
171
+ "@types/bytes": "3.1.4",
172
+ "@types/content-disposition": "0.5.8",
173
+ "@types/cookie-parser": "1.4.6",
174
+ "@types/cors": "2.8.17",
175
+ "@types/deep-diff": "1.0.5",
176
+ "@types/destroy": "1.0.3",
177
+ "@types/encodeurl": "1.0.2",
177
178
  "@types/exif-reader": "1.0.0",
178
- "@types/express": "4.17.17",
179
- "@types/express-serve-static-core": "4.17.35",
180
- "@types/flat": "5.0.2",
181
- "@types/fs-extra": "11.0.1",
182
- "@types/glob-to-regexp": "0.4.3",
183
- "@types/inquirer": "9.0.3",
184
- "@types/js-yaml": "4.0.5",
185
- "@types/json2csv": "5.0.3",
186
- "@types/jsonwebtoken": "9.0.2",
179
+ "@types/express": "4.17.21",
180
+ "@types/express-serve-static-core": "4.17.41",
181
+ "@types/fs-extra": "11.0.4",
182
+ "@types/glob-to-regexp": "0.4.4",
183
+ "@types/inquirer": "9.0.7",
184
+ "@types/js-yaml": "4.0.9",
185
+ "@types/json2csv": "5.0.7",
186
+ "@types/jsonwebtoken": "9.0.5",
187
187
  "@types/ldapjs": "2.2.5",
188
- "@types/lodash-es": "4.17.7",
189
- "@types/marked": "4.3.0",
190
- "@types/mime-types": "2.1.1",
191
- "@types/ms": "0.7.31",
192
- "@types/node": "18.16.12",
193
- "@types/node-schedule": "2.1.0",
194
- "@types/nodemailer": "6.4.7",
195
- "@types/object-hash": "3.0.2",
196
- "@types/papaparse": "5.3.9",
197
- "@types/qs": "6.9.7",
198
- "@types/sanitize-html": "2.9.0",
199
- "@types/stream-json": "1.7.3",
200
- "@types/supertest": "2.0.12",
201
- "@types/uuid": "9.0.1",
202
- "@types/uuid-validate": "0.0.1",
203
- "@types/wellknown": "0.5.4",
204
- "@types/ws": "8.5.8",
205
- "@vitest/coverage-c8": "0.31.1",
188
+ "@types/lodash-es": "4.17.12",
189
+ "@types/mime-types": "2.1.4",
190
+ "@types/ms": "0.7.34",
191
+ "@types/node": "18.19.3",
192
+ "@types/node-schedule": "2.1.5",
193
+ "@types/nodemailer": "6.4.14",
194
+ "@types/object-hash": "3.0.6",
195
+ "@types/papaparse": "5.3.14",
196
+ "@types/qs": "6.9.10",
197
+ "@types/sanitize-html": "2.9.5",
198
+ "@types/stream-json": "1.7.7",
199
+ "@types/supertest": "2.0.16",
200
+ "@types/uuid": "9.0.7",
201
+ "@types/uuid-validate": "0.0.3",
202
+ "@types/wellknown": "0.5.8",
203
+ "@types/ws": "8.5.10",
204
+ "@vitest/coverage-v8": "1.1.0",
206
205
  "copyfiles": "2.4.1",
207
206
  "form-data": "4.0.0",
208
- "knex-mock-client": "2.0.0",
207
+ "knex-mock-client": "2.0.1",
209
208
  "supertest": "6.3.3",
210
- "typescript": "5.2.2",
211
- "vitest": "0.31.1",
212
- "@directus/random": "0.2.3",
209
+ "typescript": "5.3.3",
210
+ "vitest": "1.1.0",
213
211
  "@directus/tsconfig": "1.0.1",
214
- "@directus/types": "11.0.2"
212
+ "@directus/types": "11.0.3"
215
213
  },
216
214
  "optionalDependencies": {
217
- "@keyv/redis": "2.5.8",
215
+ "@keyv/redis": "2.8.1",
218
216
  "mysql": "2.18.1",
219
217
  "nodemailer-mailgun-transport": "2.1.5",
220
218
  "nodemailer-sendgrid": "1.0.3",
221
- "pg": "8.11.0",
219
+ "oracledb": "6.2.0",
220
+ "pg": "8.11.3",
222
221
  "sqlite3": "5.1.6",
223
- "tedious": "16.1.0"
222
+ "tedious": "16.6.1"
224
223
  },
225
224
  "engines": {
226
225
  "node": ">=18.0.0"
@@ -1,2 +0,0 @@
1
- declare const name: string, version: string;
2
- export { name, version };
@@ -1,6 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { dirname, resolve } from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- const __dirname = dirname(fileURLToPath(import.meta.url));
5
- const { name, version } = JSON.parse(readFileSync(resolve(__dirname, '../../package.json'), 'utf8'));
6
- export { name, version };
@@ -1 +0,0 @@
1
- export declare function collectTelemetry(): Promise<void>;
@@ -1,23 +0,0 @@
1
- import mid from 'node-machine-id';
2
- import env from '../env.js';
3
- import logger from '../logger.js';
4
- import { version } from './package.js';
5
- export async function collectTelemetry() {
6
- const axios = (await import('axios')).default;
7
- if (env['TELEMETRY'] !== false) {
8
- try {
9
- await axios.post('https://telemetry.directus.io/', {
10
- version: version,
11
- public_url: env['PUBLIC_URL'],
12
- project_id: env['KEY'],
13
- machine_id: await mid.machineId(),
14
- db_client: env['DB_CLIENT'],
15
- });
16
- }
17
- catch (err) {
18
- if (env['NODE_ENV'] === 'development') {
19
- logger.error(err);
20
- }
21
- }
22
- }
23
- }