@directus/api 31.0.0 → 32.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.
- package/dist/app.js +2 -0
- package/dist/auth/auth.d.ts +2 -1
- package/dist/auth/auth.js +7 -2
- package/dist/auth/drivers/ldap.d.ts +0 -2
- package/dist/auth/drivers/ldap.js +9 -7
- package/dist/auth/drivers/oauth2.d.ts +0 -2
- package/dist/auth/drivers/oauth2.js +11 -8
- package/dist/auth/drivers/openid.d.ts +0 -2
- package/dist/auth/drivers/openid.js +11 -8
- package/dist/auth/drivers/saml.d.ts +0 -2
- package/dist/auth/drivers/saml.js +5 -5
- package/dist/auth.js +1 -2
- package/dist/cli/commands/bootstrap/index.js +12 -33
- package/dist/cli/commands/init/index.js +1 -1
- package/dist/cli/commands/schema/apply.d.ts +4 -0
- package/dist/cli/commands/schema/apply.js +26 -3
- package/dist/controllers/collections.js +7 -2
- package/dist/controllers/fields.js +31 -8
- package/dist/controllers/server.js +26 -1
- package/dist/controllers/settings.js +9 -2
- package/dist/controllers/users.js +2 -2
- package/dist/database/helpers/fn/types.js +3 -3
- package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +2 -1
- package/dist/database/helpers/schema/dialects/cockroachdb.js +13 -0
- package/dist/database/helpers/schema/dialects/mssql.d.ts +2 -1
- package/dist/database/helpers/schema/dialects/mssql.js +23 -0
- package/dist/database/helpers/schema/dialects/mysql.d.ts +2 -1
- package/dist/database/helpers/schema/dialects/mysql.js +25 -0
- package/dist/database/helpers/schema/dialects/oracle.d.ts +2 -1
- package/dist/database/helpers/schema/dialects/oracle.js +13 -0
- package/dist/database/helpers/schema/dialects/postgres.d.ts +2 -1
- package/dist/database/helpers/schema/dialects/postgres.js +13 -0
- package/dist/database/helpers/schema/types.d.ts +5 -0
- package/dist/database/helpers/schema/types.js +6 -0
- package/dist/database/migrations/20251012A-add-field-searchable.d.ts +3 -0
- package/dist/database/migrations/20251012A-add-field-searchable.js +10 -0
- package/dist/database/migrations/20251014A-add-project-owner.d.ts +3 -0
- package/dist/database/migrations/20251014A-add-project-owner.js +37 -0
- package/dist/database/migrations/20251028A-add-retention-indexes.d.ts +3 -0
- package/dist/database/migrations/20251028A-add-retention-indexes.js +42 -0
- package/dist/database/run-ast/lib/apply-query/add-join.js +2 -2
- package/dist/database/run-ast/lib/apply-query/filter/get-filter-type.d.ts +2 -2
- package/dist/database/run-ast/lib/apply-query/index.d.ts +0 -1
- package/dist/database/run-ast/lib/apply-query/index.js +4 -6
- package/dist/database/run-ast/lib/apply-query/search.js +2 -0
- package/dist/database/run-ast/lib/get-db-query.js +7 -6
- package/dist/database/run-ast/utils/generate-alias.d.ts +6 -0
- package/dist/database/run-ast/utils/generate-alias.js +57 -0
- package/dist/flows.js +1 -0
- package/dist/mcp/schema.d.ts +14 -14
- package/dist/mcp/schema.js +6 -6
- package/dist/mcp/server.d.ts +9 -3
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/tools/collections.d.ts +1 -1
- package/dist/mcp/tools/fields.d.ts +1 -1
- package/dist/mcp/tools/files.d.ts +25 -25
- package/dist/mcp/tools/flows.d.ts +36 -36
- package/dist/mcp/tools/folders.d.ts +18 -18
- package/dist/mcp/tools/items.d.ts +18 -18
- package/dist/mcp/tools/operations.d.ts +19 -19
- package/dist/mcp/tools/prompts/items.md +1 -1
- package/dist/metrics/lib/create-metrics.js +16 -25
- package/dist/middleware/collection-exists.js +2 -2
- package/dist/operations/mail/index.js +3 -1
- package/dist/operations/mail/rate-limiter.d.ts +1 -0
- package/dist/operations/mail/rate-limiter.js +29 -0
- package/dist/permissions/modules/process-payload/process-payload.js +3 -10
- package/dist/permissions/modules/validate-access/validate-access.js +2 -3
- package/dist/schedules/metrics.js +6 -2
- package/dist/schedules/project.d.ts +4 -0
- package/dist/schedules/project.js +27 -0
- package/dist/services/collections.d.ts +3 -3
- package/dist/services/collections.js +16 -1
- package/dist/services/fields.d.ts +21 -5
- package/dist/services/fields.js +105 -28
- package/dist/services/graphql/resolvers/query.js +1 -1
- package/dist/services/graphql/resolvers/system-admin.js +49 -5
- package/dist/services/graphql/schema/parse-query.js +8 -8
- package/dist/services/graphql/utils/aggregate-query.d.ts +1 -1
- package/dist/services/graphql/utils/aggregate-query.js +5 -1
- package/dist/services/graphql/utils/filter-replace-m2a.js +2 -1
- package/dist/services/import-export.d.ts +9 -1
- package/dist/services/import-export.js +287 -101
- package/dist/services/items.d.ts +1 -1
- package/dist/services/items.js +36 -20
- package/dist/services/mail/index.js +2 -0
- package/dist/services/mail/rate-limiter.d.ts +1 -0
- package/dist/services/mail/rate-limiter.js +29 -0
- package/dist/services/meta.js +28 -24
- package/dist/services/schema.js +4 -1
- package/dist/services/server.d.ts +1 -0
- package/dist/services/server.js +14 -18
- package/dist/services/settings.d.ts +2 -1
- package/dist/services/settings.js +15 -0
- package/dist/services/tus/server.js +14 -9
- package/dist/telemetry/lib/get-report.js +4 -4
- package/dist/telemetry/lib/send-report.d.ts +6 -1
- package/dist/telemetry/lib/send-report.js +3 -1
- package/dist/telemetry/types/report.d.ts +17 -1
- package/dist/telemetry/utils/get-settings.d.ts +9 -0
- package/dist/telemetry/utils/get-settings.js +14 -0
- package/dist/test-utils/README.md +760 -0
- package/dist/test-utils/cache.d.ts +51 -0
- package/dist/test-utils/cache.js +59 -0
- package/dist/test-utils/database.d.ts +48 -0
- package/dist/test-utils/database.js +52 -0
- package/dist/test-utils/emitter.d.ts +35 -0
- package/dist/test-utils/emitter.js +38 -0
- package/dist/test-utils/fields-service.d.ts +28 -0
- package/dist/test-utils/fields-service.js +36 -0
- package/dist/test-utils/items-service.d.ts +23 -0
- package/dist/test-utils/items-service.js +37 -0
- package/dist/test-utils/knex.d.ts +164 -0
- package/dist/test-utils/knex.js +268 -0
- package/dist/test-utils/schema.d.ts +26 -0
- package/dist/test-utils/schema.js +35 -0
- package/dist/types/auth.d.ts +0 -2
- package/dist/utils/apply-diff.js +15 -0
- package/dist/utils/create-admin.d.ts +11 -0
- package/dist/utils/create-admin.js +50 -0
- package/dist/utils/get-schema.js +5 -3
- package/dist/utils/get-snapshot-diff.js +49 -5
- package/dist/utils/get-snapshot.js +13 -7
- package/dist/utils/sanitize-schema.d.ts +11 -4
- package/dist/utils/sanitize-schema.js +9 -6
- package/dist/utils/schedule.js +15 -19
- package/dist/utils/validate-diff.js +31 -0
- package/dist/utils/validate-snapshot.js +7 -0
- package/dist/websocket/controllers/hooks.js +12 -20
- package/dist/websocket/messages.d.ts +3 -3
- package/package.json +63 -65
- package/dist/cli/utils/defaults.d.ts +0 -4
- package/dist/cli/utils/defaults.js +0 -17
- package/dist/telemetry/utils/get-project-id.d.ts +0 -2
- package/dist/telemetry/utils/get-project-id.js +0 -4
|
@@ -6,8 +6,6 @@ import { pick } from 'lodash-es';
|
|
|
6
6
|
* @returns sanitized collection
|
|
7
7
|
*/
|
|
8
8
|
export function sanitizeCollection(collection) {
|
|
9
|
-
if (!collection)
|
|
10
|
-
return collection;
|
|
11
9
|
return pick(collection, ['collection', 'fields', 'meta', 'schema.name']);
|
|
12
10
|
}
|
|
13
11
|
/**
|
|
@@ -18,8 +16,6 @@ export function sanitizeCollection(collection) {
|
|
|
18
16
|
* @returns sanitized field
|
|
19
17
|
*/
|
|
20
18
|
export function sanitizeField(field, sanitizeAllSchema = false) {
|
|
21
|
-
if (!field)
|
|
22
|
-
return field;
|
|
23
19
|
const defaultPaths = ['collection', 'field', 'type', 'meta', 'name', 'children'];
|
|
24
20
|
const pickedPaths = sanitizeAllSchema
|
|
25
21
|
? defaultPaths
|
|
@@ -71,8 +67,6 @@ export function sanitizeColumn(column) {
|
|
|
71
67
|
* @returns sanitized relation
|
|
72
68
|
*/
|
|
73
69
|
export function sanitizeRelation(relation) {
|
|
74
|
-
if (!relation)
|
|
75
|
-
return relation;
|
|
76
70
|
return pick(relation, [
|
|
77
71
|
'collection',
|
|
78
72
|
'field',
|
|
@@ -87,3 +81,12 @@ export function sanitizeRelation(relation) {
|
|
|
87
81
|
'schema.on_delete',
|
|
88
82
|
]);
|
|
89
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Pick certain specific system field properties that should be compared when performing diff
|
|
86
|
+
*
|
|
87
|
+
* @param field field to sanitize
|
|
88
|
+
* @returns sanitized system field
|
|
89
|
+
*/
|
|
90
|
+
export function sanitizeSystemField(field) {
|
|
91
|
+
return pick(field, ['collection', 'field', 'schema.is_indexed']);
|
|
92
|
+
}
|
package/dist/utils/schedule.js
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import schedule from 'node-schedule';
|
|
1
|
+
import { CronJob, validateCronExpression } from 'cron';
|
|
3
2
|
import { SynchronizedClock } from '../synchronization.js';
|
|
4
3
|
export function validateCron(rule) {
|
|
5
|
-
|
|
6
|
-
cron.parseExpression(rule);
|
|
7
|
-
}
|
|
8
|
-
catch {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
return true;
|
|
4
|
+
return validateCronExpression(rule).valid;
|
|
12
5
|
}
|
|
13
6
|
export function scheduleSynchronizedJob(id, rule, cb) {
|
|
14
7
|
const clock = new SynchronizedClock(`${id}:${rule}`);
|
|
15
|
-
const job =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
8
|
+
const job = CronJob.from({
|
|
9
|
+
cronTime: rule,
|
|
10
|
+
onTick: async (fireDate) => {
|
|
11
|
+
// Get next execution time for synchronization
|
|
12
|
+
const nextDate = job.nextDate();
|
|
13
|
+
const nextTimestamp = nextDate.toMillis();
|
|
14
|
+
const wasSet = await clock.set(nextTimestamp);
|
|
15
|
+
if (wasSet) {
|
|
16
|
+
await cb(fireDate);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
start: true,
|
|
24
20
|
});
|
|
25
21
|
const stop = async () => {
|
|
26
|
-
job.
|
|
22
|
+
job.stop();
|
|
27
23
|
await clock.reset();
|
|
28
24
|
};
|
|
29
25
|
return { stop };
|
|
@@ -31,6 +31,13 @@ const applyJoiSchema = Joi.object({
|
|
|
31
31
|
diff: Joi.array().items(deepDiffSchema).required(),
|
|
32
32
|
}))
|
|
33
33
|
.required(),
|
|
34
|
+
systemFields: Joi.array()
|
|
35
|
+
.items(Joi.object({
|
|
36
|
+
collection: Joi.string().required(),
|
|
37
|
+
field: Joi.string().required(),
|
|
38
|
+
diff: Joi.array().items(deepDiffSchema).required(),
|
|
39
|
+
}))
|
|
40
|
+
.required(),
|
|
34
41
|
relations: Joi.array()
|
|
35
42
|
.items(Joi.object({
|
|
36
43
|
collection: Joi.string().required(),
|
|
@@ -53,6 +60,7 @@ export function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
|
53
60
|
// No changes to apply
|
|
54
61
|
if (applyDiff.diff.collections.length === 0 &&
|
|
55
62
|
applyDiff.diff.fields.length === 0 &&
|
|
63
|
+
applyDiff.diff.systemFields.length === 0 &&
|
|
56
64
|
applyDiff.diff.relations.length === 0) {
|
|
57
65
|
return false;
|
|
58
66
|
}
|
|
@@ -97,6 +105,29 @@ export function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
107
|
}
|
|
108
|
+
for (const diffSystemField of applyDiff.diff.systemFields) {
|
|
109
|
+
const systemField = `${diffSystemField.collection}.${diffSystemField.field}`;
|
|
110
|
+
if (!diffSystemField.diff[0])
|
|
111
|
+
continue;
|
|
112
|
+
if (diffSystemField.diff[0].kind !== DiffKind.EDIT) {
|
|
113
|
+
let action = 'update array'; // DiffKind.ARRAY
|
|
114
|
+
if (diffSystemField.diff[0].kind === DiffKind.NEW) {
|
|
115
|
+
action = 'create';
|
|
116
|
+
}
|
|
117
|
+
else if (diffSystemField.diff[0].kind === DiffKind.DELETE) {
|
|
118
|
+
action = 'delete';
|
|
119
|
+
}
|
|
120
|
+
throw new InvalidPayloadError({
|
|
121
|
+
reason: `Provided diff is trying to ${action} field "${systemField}" but this action is not supported. Please generate a new diff and try again`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const pathString = diffSystemField.diff[0].path?.join('.') ?? '';
|
|
125
|
+
if (pathString.length === 0 || pathString !== 'schema.is_indexed') {
|
|
126
|
+
throw new InvalidPayloadError({
|
|
127
|
+
reason: `Provided diff is trying to alter property "${pathString}" on "${systemField}" but currently only "schema.is_indexed" is supported. Please generate a new diff and try again`,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
100
131
|
for (const diffRelation of applyDiff.diff.relations) {
|
|
101
132
|
let relation = `${diffRelation.collection}.${diffRelation.field}`;
|
|
102
133
|
if (diffRelation.related_collection)
|
|
@@ -33,6 +33,13 @@ const snapshotJoiSchema = Joi.object({
|
|
|
33
33
|
.valid(...TYPES, ...ALIAS_TYPES)
|
|
34
34
|
.allow(null),
|
|
35
35
|
})),
|
|
36
|
+
systemFields: Joi.array().items(Joi.object({
|
|
37
|
+
collection: Joi.string(),
|
|
38
|
+
field: Joi.string(),
|
|
39
|
+
schema: Joi.object({
|
|
40
|
+
is_indexed: Joi.bool(),
|
|
41
|
+
}),
|
|
42
|
+
})),
|
|
36
43
|
relations: Joi.array().items(Joi.object({
|
|
37
44
|
collection: Joi.string(),
|
|
38
45
|
field: Joi.string(),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { systemCollectionNames } from '@directus/system-data';
|
|
1
2
|
import { useBus } from '../../bus/index.js';
|
|
2
3
|
import emitter from '../../emitter.js';
|
|
3
4
|
let actionsRegistered = false;
|
|
@@ -7,26 +8,17 @@ export function registerWebSocketEvents() {
|
|
|
7
8
|
actionsRegistered = true;
|
|
8
9
|
registerActionHooks([
|
|
9
10
|
'items',
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
'presets',
|
|
22
|
-
'revisions',
|
|
23
|
-
'roles',
|
|
24
|
-
'settings',
|
|
25
|
-
'shares',
|
|
26
|
-
'translations',
|
|
27
|
-
'users',
|
|
28
|
-
'versions',
|
|
29
|
-
'webhooks',
|
|
11
|
+
...systemCollectionNames
|
|
12
|
+
.filter((collection) => ![
|
|
13
|
+
'directus_migrations',
|
|
14
|
+
// manually registered below
|
|
15
|
+
'directus_fields',
|
|
16
|
+
'directus_relations',
|
|
17
|
+
'directus_files',
|
|
18
|
+
// excluded for security reasons
|
|
19
|
+
'directus_sessions',
|
|
20
|
+
].includes(collection))
|
|
21
|
+
.map((collection) => collection.replace('directus_', '')),
|
|
30
22
|
]);
|
|
31
23
|
registerFieldsHooks();
|
|
32
24
|
registerFilesHooks();
|
|
@@ -12,7 +12,7 @@ export declare const WebSocketResponse: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
12
12
|
code: z.ZodString;
|
|
13
13
|
message: z.ZodString;
|
|
14
14
|
}, z.core.$loose>;
|
|
15
|
-
}, z.core.$loose>]>;
|
|
15
|
+
}, z.core.$loose>], "status">;
|
|
16
16
|
export type WebSocketResponse = z.infer<typeof WebSocketResponse>;
|
|
17
17
|
export declare const ConnectionParams: z.ZodObject<{
|
|
18
18
|
access_token: z.ZodOptional<z.ZodString>;
|
|
@@ -49,7 +49,7 @@ export declare const WebSocketSubscribeMessage: z.ZodDiscriminatedUnion<[z.ZodOb
|
|
|
49
49
|
}, z.core.$loose>, z.ZodObject<{
|
|
50
50
|
uid: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
51
51
|
type: z.ZodLiteral<"unsubscribe">;
|
|
52
|
-
}, z.core.$loose>]>;
|
|
52
|
+
}, z.core.$loose>], "type">;
|
|
53
53
|
export type WebSocketSubscribeMessage = z.infer<typeof WebSocketSubscribeMessage>;
|
|
54
54
|
export declare const WebSocketLogsMessage: z.ZodUnion<readonly [z.ZodObject<{
|
|
55
55
|
type: z.ZodLiteral<"subscribe">;
|
|
@@ -108,7 +108,7 @@ export declare const WebSocketEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
108
108
|
collection: z.ZodString;
|
|
109
109
|
payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
110
110
|
keys: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
111
|
-
}, z.core.$strip>]>;
|
|
111
|
+
}, z.core.$strip>], "action">;
|
|
112
112
|
export type WebSocketEvent = z.infer<typeof WebSocketEvent>;
|
|
113
113
|
export declare const AuthMode: z.ZodUnion<readonly [z.ZodLiteral<"public">, z.ZodLiteral<"handshake">, z.ZodLiteral<"strict">]>;
|
|
114
114
|
export type AuthMode = z.infer<typeof AuthMode>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@directus/api",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "32.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,48 +59,47 @@
|
|
|
59
59
|
],
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@authenio/samlify-node-xmllint": "2.0.0",
|
|
62
|
-
"@aws-sdk/client-sesv2": "3.
|
|
62
|
+
"@aws-sdk/client-sesv2": "3.918.0",
|
|
63
63
|
"@godaddy/terminus": "4.12.1",
|
|
64
|
-
"@modelcontextprotocol/sdk": "1.
|
|
64
|
+
"@modelcontextprotocol/sdk": "1.20.2",
|
|
65
65
|
"@rollup/plugin-alias": "5.1.1",
|
|
66
|
-
"@rollup/plugin-node-resolve": "16.0.
|
|
66
|
+
"@rollup/plugin-node-resolve": "16.0.3",
|
|
67
67
|
"@rollup/plugin-virtual": "3.0.2",
|
|
68
|
-
"@tus/server": "
|
|
69
|
-
"@tus/utils": "0.
|
|
70
|
-
"argon2": "0.
|
|
68
|
+
"@tus/server": "2.3.0",
|
|
69
|
+
"@tus/utils": "0.6.0",
|
|
70
|
+
"argon2": "0.44.0",
|
|
71
71
|
"async": "3.2.6",
|
|
72
72
|
"async-mutex": "0.5.0",
|
|
73
|
-
"axios": "1.
|
|
73
|
+
"axios": "1.12.2",
|
|
74
74
|
"busboy": "1.6.0",
|
|
75
75
|
"bytes": "3.1.2",
|
|
76
76
|
"camelcase": "8.0.0",
|
|
77
|
-
"chalk": "5.
|
|
77
|
+
"chalk": "5.6.2",
|
|
78
78
|
"chokidar": "4.0.3",
|
|
79
|
-
"commander": "14.0.
|
|
79
|
+
"commander": "14.0.2",
|
|
80
80
|
"content-disposition": "0.5.4",
|
|
81
81
|
"cookie": "1.0.2",
|
|
82
82
|
"cookie-parser": "1.4.7",
|
|
83
83
|
"cors": "2.8.5",
|
|
84
|
-
"cron-parser": "4.9.0",
|
|
85
84
|
"date-fns": "4.1.0",
|
|
86
85
|
"deep-diff": "1.0.2",
|
|
87
86
|
"destroy": "1.2.0",
|
|
88
|
-
"dotenv": "17.2.
|
|
87
|
+
"dotenv": "17.2.3",
|
|
89
88
|
"encodeurl": "2.0.0",
|
|
90
89
|
"eventemitter2": "6.4.9",
|
|
91
90
|
"execa": "9.6.0",
|
|
92
91
|
"exif-reader": "2.0.2",
|
|
93
92
|
"express": "4.21.2",
|
|
94
93
|
"flat": "6.0.1",
|
|
95
|
-
"fs-extra": "11.3.
|
|
94
|
+
"fs-extra": "11.3.2",
|
|
96
95
|
"glob-to-regexp": "0.4.1",
|
|
97
96
|
"graphql": "16.11.0",
|
|
98
97
|
"graphql-compose": "9.1.0",
|
|
99
98
|
"graphql-ws": "6.0.6",
|
|
100
99
|
"helmet": "8.1.0",
|
|
101
100
|
"icc": "3.0.0",
|
|
102
|
-
"inquirer": "12.
|
|
103
|
-
"ioredis": "5.
|
|
101
|
+
"inquirer": "12.10.0",
|
|
102
|
+
"ioredis": "5.8.2",
|
|
104
103
|
"ip-matching": "2.1.2",
|
|
105
104
|
"isolated-vm": "5.0.3",
|
|
106
105
|
"joi": "18.0.1",
|
|
@@ -108,85 +107,85 @@
|
|
|
108
107
|
"js2xmlparser": "5.0.0",
|
|
109
108
|
"json2csv": "5.0.7",
|
|
110
109
|
"jsonwebtoken": "9.0.2",
|
|
111
|
-
"keyv": "5.
|
|
110
|
+
"keyv": "5.5.3",
|
|
112
111
|
"knex": "3.1.0",
|
|
113
112
|
"ldapjs": "2.3.3",
|
|
114
|
-
"liquidjs": "10.
|
|
113
|
+
"liquidjs": "10.24.0",
|
|
115
114
|
"lodash-es": "4.17.21",
|
|
116
|
-
"marked": "16.
|
|
115
|
+
"marked": "16.4.1",
|
|
117
116
|
"micromustache": "8.0.3",
|
|
118
117
|
"mime-types": "3.0.1",
|
|
119
|
-
"minimatch": "10.
|
|
118
|
+
"minimatch": "10.1.1",
|
|
120
119
|
"mnemonist": "0.40.3",
|
|
121
120
|
"ms": "2.1.3",
|
|
122
|
-
"nanoid": "5.1.
|
|
121
|
+
"nanoid": "5.1.6",
|
|
123
122
|
"node-machine-id": "1.1.12",
|
|
124
|
-
"
|
|
125
|
-
"nodemailer": "7.0.
|
|
123
|
+
"cron": "4.3.3",
|
|
124
|
+
"nodemailer": "7.0.10",
|
|
126
125
|
"object-hash": "3.0.0",
|
|
127
126
|
"openapi3-ts": "4.5.0",
|
|
128
127
|
"openid-client": "5.7.1",
|
|
129
128
|
"ora": "8.2.0",
|
|
130
129
|
"otplib": "12.0.1",
|
|
131
|
-
"p-limit": "
|
|
130
|
+
"p-limit": "7.2.0",
|
|
132
131
|
"p-queue": "8.1.0",
|
|
133
132
|
"papaparse": "5.5.3",
|
|
134
133
|
"pino": "9.7.0",
|
|
135
134
|
"pino-http": "10.5.0",
|
|
136
135
|
"pino-http-print": "3.1.0",
|
|
137
|
-
"pino-pretty": "13.1.
|
|
138
|
-
"pm2": "6.0.
|
|
136
|
+
"pino-pretty": "13.1.2",
|
|
137
|
+
"pm2": "6.0.13",
|
|
139
138
|
"prom-client": "15.1.3",
|
|
140
139
|
"proxy-addr": "2.0.7",
|
|
141
140
|
"qs": "6.14.0",
|
|
142
141
|
"rate-limiter-flexible": "7.2.0",
|
|
143
142
|
"rolldown": "1.0.0-beta.31",
|
|
144
|
-
"rollup": "4.
|
|
143
|
+
"rollup": "4.52.5",
|
|
145
144
|
"samlify": "2.10.1",
|
|
146
145
|
"sanitize-html": "2.17.0",
|
|
147
|
-
"sharp": "0.34.
|
|
148
|
-
"snappy": "7.3.
|
|
146
|
+
"sharp": "0.34.4",
|
|
147
|
+
"snappy": "7.3.3",
|
|
149
148
|
"stream-json": "1.9.1",
|
|
150
|
-
"tar": "7.
|
|
151
|
-
"tsx": "4.20.
|
|
149
|
+
"tar": "7.5.2",
|
|
150
|
+
"tsx": "4.20.6",
|
|
152
151
|
"uuid": "11.1.0",
|
|
153
152
|
"wellknown": "0.5.0",
|
|
154
153
|
"ws": "8.18.3",
|
|
155
|
-
"zod": "4.
|
|
156
|
-
"zod-validation-error": "4.0.
|
|
157
|
-
"@directus/
|
|
158
|
-
"@directus/
|
|
159
|
-
"@directus/errors": "2.0.
|
|
160
|
-
"@directus/extensions": "3.0.
|
|
161
|
-
"@directus/
|
|
162
|
-
"@directus/extensions-
|
|
163
|
-
"@directus/extensions-
|
|
164
|
-
"@directus/format-title": "12.1.
|
|
165
|
-
"@directus/memory": "3.0.
|
|
166
|
-
"@directus/pressure": "3.0.
|
|
167
|
-
"@directus/schema": "
|
|
168
|
-
"@directus/schema
|
|
154
|
+
"zod": "4.1.12",
|
|
155
|
+
"zod-validation-error": "4.0.2",
|
|
156
|
+
"@directus/app": "14.1.0",
|
|
157
|
+
"@directus/constants": "14.0.0",
|
|
158
|
+
"@directus/errors": "2.0.5",
|
|
159
|
+
"@directus/extensions": "3.0.12",
|
|
160
|
+
"@directus/env": "5.3.0",
|
|
161
|
+
"@directus/extensions-sdk": "17.0.0",
|
|
162
|
+
"@directus/extensions-registry": "3.0.12",
|
|
163
|
+
"@directus/format-title": "12.1.1",
|
|
164
|
+
"@directus/memory": "3.0.10",
|
|
165
|
+
"@directus/pressure": "3.0.10",
|
|
166
|
+
"@directus/schema-builder": "0.0.7",
|
|
167
|
+
"@directus/schema": "13.0.4",
|
|
168
|
+
"@directus/storage": "12.0.3",
|
|
169
169
|
"@directus/specs": "11.1.1",
|
|
170
|
-
"@directus/storage": "12.0.
|
|
171
|
-
"@directus/storage-driver-
|
|
172
|
-
"@directus/storage-driver-
|
|
173
|
-
"@directus/storage-driver-
|
|
174
|
-
"@directus/
|
|
175
|
-
"@directus/storage-driver-
|
|
176
|
-
"@directus/
|
|
177
|
-
"@directus/
|
|
178
|
-
"@directus/
|
|
179
|
-
"directus": "11.
|
|
180
|
-
"@directus/validation": "2.0.9"
|
|
170
|
+
"@directus/storage-driver-azure": "12.0.10",
|
|
171
|
+
"@directus/storage-driver-cloudinary": "12.0.10",
|
|
172
|
+
"@directus/storage-driver-gcs": "12.0.10",
|
|
173
|
+
"@directus/storage-driver-s3": "12.0.10",
|
|
174
|
+
"@directus/system-data": "3.4.0",
|
|
175
|
+
"@directus/storage-driver-local": "12.0.3",
|
|
176
|
+
"@directus/utils": "13.0.11",
|
|
177
|
+
"@directus/storage-driver-supabase": "3.0.10",
|
|
178
|
+
"@directus/validation": "2.0.10",
|
|
179
|
+
"directus": "11.13.0"
|
|
181
180
|
},
|
|
182
181
|
"devDependencies": {
|
|
183
182
|
"@directus/tsconfig": "3.0.0",
|
|
184
183
|
"@ngneat/falso": "8.0.2",
|
|
185
|
-
"@types/async": "3.2.
|
|
184
|
+
"@types/async": "3.2.25",
|
|
186
185
|
"@types/busboy": "1.5.4",
|
|
187
186
|
"@types/bytes": "3.1.5",
|
|
188
187
|
"@types/content-disposition": "0.5.9",
|
|
189
|
-
"@types/cookie-parser": "1.4.
|
|
188
|
+
"@types/cookie-parser": "1.4.10",
|
|
190
189
|
"@types/cors": "2.8.19",
|
|
191
190
|
"@types/deep-diff": "1.0.5",
|
|
192
191
|
"@types/destroy": "1.0.3",
|
|
@@ -195,7 +194,7 @@
|
|
|
195
194
|
"@types/express-serve-static-core": "4.19.6",
|
|
196
195
|
"@types/fs-extra": "11.0.4",
|
|
197
196
|
"@types/glob-to-regexp": "0.4.4",
|
|
198
|
-
"@types/inquirer": "9.0.
|
|
197
|
+
"@types/inquirer": "9.0.9",
|
|
199
198
|
"@types/js-yaml": "4.0.9",
|
|
200
199
|
"@types/json2csv": "5.0.7",
|
|
201
200
|
"@types/jsonwebtoken": "9.0.10",
|
|
@@ -204,8 +203,7 @@
|
|
|
204
203
|
"@types/mime-types": "3.0.1",
|
|
205
204
|
"@types/ms": "2.1.0",
|
|
206
205
|
"@types/node": "22.13.14",
|
|
207
|
-
"@types/
|
|
208
|
-
"@types/nodemailer": "6.4.17",
|
|
206
|
+
"@types/nodemailer": "7.0.3",
|
|
209
207
|
"@types/object-hash": "3.0.6",
|
|
210
208
|
"@types/papaparse": "5.3.16",
|
|
211
209
|
"@types/proxy-addr": "2.0.3",
|
|
@@ -219,16 +217,16 @@
|
|
|
219
217
|
"form-data": "4.0.4",
|
|
220
218
|
"get-port": "7.1.0",
|
|
221
219
|
"knex-mock-client": "3.0.2",
|
|
222
|
-
"typescript": "5.
|
|
220
|
+
"typescript": "5.9.3",
|
|
223
221
|
"vitest": "3.2.4",
|
|
224
|
-
"@directus/
|
|
225
|
-
"@directus/
|
|
222
|
+
"@directus/types": "13.3.0",
|
|
223
|
+
"@directus/schema-builder": "0.0.7"
|
|
226
224
|
},
|
|
227
225
|
"optionalDependencies": {
|
|
228
226
|
"@keyv/redis": "3.0.1",
|
|
229
|
-
"mysql2": "3.
|
|
227
|
+
"mysql2": "3.15.3",
|
|
230
228
|
"nodemailer-mailgun-transport": "2.1.5",
|
|
231
|
-
"oracledb": "6.
|
|
229
|
+
"oracledb": "6.10.0",
|
|
232
230
|
"pg": "8.16.3",
|
|
233
231
|
"sqlite3": "5.1.7",
|
|
234
232
|
"tedious": "18.6.1"
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export const defaultAdminRole = {
|
|
2
|
-
name: 'Administrator',
|
|
3
|
-
icon: 'verified',
|
|
4
|
-
description: '$t:admin_description',
|
|
5
|
-
};
|
|
6
|
-
export const defaultAdminUser = {
|
|
7
|
-
status: 'active',
|
|
8
|
-
first_name: 'Admin',
|
|
9
|
-
last_name: 'User',
|
|
10
|
-
};
|
|
11
|
-
export const defaultAdminPolicy = {
|
|
12
|
-
name: 'Administrator',
|
|
13
|
-
icon: 'verified',
|
|
14
|
-
admin_access: true,
|
|
15
|
-
app_access: true,
|
|
16
|
-
description: '$t:admin_description',
|
|
17
|
-
};
|