directus 9.13.0 → 9.14.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 +9 -4
- package/dist/auth/drivers/openid.js +4 -1
- package/dist/cli/commands/security/key.d.ts +1 -0
- package/dist/cli/commands/security/key.js +8 -0
- package/dist/cli/commands/security/secret.d.ts +1 -0
- package/dist/cli/commands/security/secret.js +8 -0
- package/dist/cli/index.js +6 -0
- package/dist/controllers/extensions.js +9 -1
- package/dist/controllers/files.js +1 -1
- package/dist/database/helpers/fn/dialects/mssql.d.ts +2 -2
- package/dist/database/helpers/fn/dialects/mssql.js +2 -2
- package/dist/database/helpers/fn/dialects/mysql.d.ts +2 -2
- package/dist/database/helpers/fn/dialects/mysql.js +2 -2
- package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/oracle.js +2 -2
- package/dist/database/helpers/fn/dialects/postgres.d.ts +2 -2
- package/dist/database/helpers/fn/dialects/postgres.js +2 -2
- package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/sqlite.js +2 -2
- package/dist/database/helpers/fn/types.d.ts +3 -2
- package/dist/database/helpers/fn/types.js +11 -8
- package/dist/database/helpers/index.d.ts +3 -3
- package/dist/database/helpers/schema/dialects/sqlite.d.ts +5 -0
- package/dist/database/helpers/schema/dialects/sqlite.js +17 -0
- package/dist/database/helpers/schema/index.d.ts +1 -1
- package/dist/database/helpers/schema/index.js +4 -4
- package/dist/database/helpers/schema/types.d.ts +2 -0
- package/dist/database/helpers/schema/types.js +6 -0
- package/dist/database/run-ast.js +8 -5
- package/dist/emitter.js +12 -7
- package/dist/logger.d.ts +0 -1
- package/dist/middleware/authenticate.d.ts +0 -1
- package/dist/middleware/cache.js +3 -3
- package/dist/middleware/graphql.js +9 -7
- package/dist/middleware/respond.js +5 -5
- package/dist/operations/item-read/index.d.ts +1 -0
- package/dist/operations/item-read/index.js +3 -3
- package/dist/operations/request/index.js +1 -1
- package/dist/services/authorization.js +15 -5
- package/dist/services/fields.js +4 -0
- package/dist/services/graphql/index.js +40 -15
- package/dist/services/import-export.js +6 -1
- package/dist/services/items.d.ts +1 -0
- package/dist/services/items.js +21 -17
- package/dist/services/notifications.js +22 -11
- package/dist/services/payload.js +11 -8
- package/dist/services/server.js +13 -2
- package/dist/types/ast.d.ts +11 -4
- package/dist/utils/apply-query.js +5 -13
- package/dist/utils/apply-snapshot.js +41 -17
- package/dist/utils/filter-items.js +3 -6
- package/dist/utils/get-ast-from-query.js +18 -0
- package/dist/utils/get-column-path.d.ts +5 -1
- package/dist/utils/get-column-path.js +3 -1
- package/dist/utils/get-column.d.ts +2 -2
- package/dist/utils/get-column.js +2 -2
- package/dist/utils/get-config-from-env.js +1 -1
- package/dist/utils/merge-permissions.d.ts +0 -1
- package/package.json +232 -226
- package/dist/utils/generate-joi.d.ts +0 -3
- package/dist/utils/generate-joi.js +0 -145
|
@@ -1,145 +0,0 @@
|
|
|
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
|
-
const joi_1 = __importDefault(require("joi"));
|
|
7
|
-
const lodash_1 = require("lodash");
|
|
8
|
-
const Joi = joi_1.default.extend({
|
|
9
|
-
type: 'string',
|
|
10
|
-
base: joi_1.default.string(),
|
|
11
|
-
messages: {
|
|
12
|
-
'string.contains': '{{#label}} must contain [{{#substring}}]',
|
|
13
|
-
'string.ncontains': "{{#label}} can't contain [{{#substring}}]",
|
|
14
|
-
},
|
|
15
|
-
rules: {
|
|
16
|
-
contains: {
|
|
17
|
-
args: [
|
|
18
|
-
{
|
|
19
|
-
name: 'substring',
|
|
20
|
-
ref: true,
|
|
21
|
-
assert: (val) => typeof val === 'string',
|
|
22
|
-
message: 'must be a string',
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
method(substring) {
|
|
26
|
-
return this.$_addRule({ name: 'contains', args: { substring } });
|
|
27
|
-
},
|
|
28
|
-
validate(value, helpers, { substring }) {
|
|
29
|
-
if (value.includes(substring) === false) {
|
|
30
|
-
return helpers.error('string.contains', { substring });
|
|
31
|
-
}
|
|
32
|
-
return value;
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
ncontains: {
|
|
36
|
-
args: [
|
|
37
|
-
{
|
|
38
|
-
name: 'substring',
|
|
39
|
-
ref: true,
|
|
40
|
-
assert: (val) => typeof val === 'string',
|
|
41
|
-
message: 'must be a string',
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
method(substring) {
|
|
45
|
-
return this.$_addRule({ name: 'ncontains', args: { substring } });
|
|
46
|
-
},
|
|
47
|
-
validate(value, helpers, { substring }) {
|
|
48
|
-
if (value.includes(substring) === true) {
|
|
49
|
-
return helpers.error('string.ncontains', { substring });
|
|
50
|
-
}
|
|
51
|
-
return value;
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
function generateJoi(filter) {
|
|
57
|
-
filter = filter || {};
|
|
58
|
-
if (Object.keys(filter).length === 0)
|
|
59
|
-
return Joi.any();
|
|
60
|
-
let schema;
|
|
61
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
62
|
-
if (key.startsWith('_') === false) {
|
|
63
|
-
if (!schema)
|
|
64
|
-
schema = {};
|
|
65
|
-
const operator = Object.keys(value)[0];
|
|
66
|
-
const val = Object.values(value)[0];
|
|
67
|
-
schema[key] = getJoi(operator, val);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return Joi.object(schema).unknown();
|
|
71
|
-
}
|
|
72
|
-
exports.default = generateJoi;
|
|
73
|
-
function getJoi(operator, value) {
|
|
74
|
-
if (operator === '_eq') {
|
|
75
|
-
return Joi.any().equal(value);
|
|
76
|
-
}
|
|
77
|
-
if (operator === '_neq') {
|
|
78
|
-
return Joi.any().not(value);
|
|
79
|
-
}
|
|
80
|
-
if (operator === '_contains') {
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
return Joi.string().contains(value);
|
|
83
|
-
}
|
|
84
|
-
if (operator === '_ncontains') {
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
return Joi.string().ncontains(value);
|
|
87
|
-
}
|
|
88
|
-
if (operator === '_starts_with') {
|
|
89
|
-
return Joi.string().pattern(new RegExp(`^${(0, lodash_1.escapeRegExp)(value)}.*`), { name: 'starts_with' });
|
|
90
|
-
}
|
|
91
|
-
if (operator === '_nstarts_with') {
|
|
92
|
-
return Joi.string().pattern(new RegExp(`^${(0, lodash_1.escapeRegExp)(value)}.*`), { name: 'starts_with', invert: true });
|
|
93
|
-
}
|
|
94
|
-
if (operator === '_ends_with') {
|
|
95
|
-
return Joi.string().pattern(new RegExp(`.*${(0, lodash_1.escapeRegExp)(value)}$`), { name: 'ends_with' });
|
|
96
|
-
}
|
|
97
|
-
if (operator === '_nends_with') {
|
|
98
|
-
return Joi.string().pattern(new RegExp(`.*${(0, lodash_1.escapeRegExp)(value)}$`), { name: 'ends_with', invert: true });
|
|
99
|
-
}
|
|
100
|
-
if (operator === '_in') {
|
|
101
|
-
return Joi.any().equal(...value);
|
|
102
|
-
}
|
|
103
|
-
if (operator === '_nin') {
|
|
104
|
-
return Joi.any().not(...value);
|
|
105
|
-
}
|
|
106
|
-
if (operator === '_gt') {
|
|
107
|
-
return Joi.number().greater(Number(value));
|
|
108
|
-
}
|
|
109
|
-
if (operator === '_gte') {
|
|
110
|
-
return Joi.number().min(Number(value));
|
|
111
|
-
}
|
|
112
|
-
if (operator === '_lt') {
|
|
113
|
-
return Joi.number().less(Number(value));
|
|
114
|
-
}
|
|
115
|
-
if (operator === '_lte') {
|
|
116
|
-
return Joi.number().max(Number(value));
|
|
117
|
-
}
|
|
118
|
-
if (operator === '_null') {
|
|
119
|
-
return Joi.any().valid(null);
|
|
120
|
-
}
|
|
121
|
-
if (operator === '_nnull') {
|
|
122
|
-
return Joi.any().invalid(null);
|
|
123
|
-
}
|
|
124
|
-
if (operator === '_empty') {
|
|
125
|
-
return Joi.any().valid('');
|
|
126
|
-
}
|
|
127
|
-
if (operator === '_nempty') {
|
|
128
|
-
return Joi.any().invalid('');
|
|
129
|
-
}
|
|
130
|
-
if (operator === '_between') {
|
|
131
|
-
const values = value;
|
|
132
|
-
return Joi.number().greater(values[0]).less(values[1]);
|
|
133
|
-
}
|
|
134
|
-
if (operator === '_nbetween') {
|
|
135
|
-
const values = value;
|
|
136
|
-
return Joi.number().less(values[0]).greater(values[1]);
|
|
137
|
-
}
|
|
138
|
-
if (operator === '_submitted') {
|
|
139
|
-
return Joi.required();
|
|
140
|
-
}
|
|
141
|
-
if (operator === '_regex') {
|
|
142
|
-
const wrapped = value.startsWith('/') && value.endsWith('/');
|
|
143
|
-
return Joi.string().regex(new RegExp(wrapped ? value.slice(1, -1) : value));
|
|
144
|
-
}
|
|
145
|
-
}
|