@webiny/api-headless-cms-ddb 0.0.0-unstable.bca7b3e350 → 0.0.0-unstable.c27f4d8a31
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/README.md +6 -20
- package/definitions/entry.d.ts +4 -5
- package/definitions/entry.js +6 -89
- package/definitions/entry.js.map +1 -1
- package/definitions/group.d.ts +4 -5
- package/definitions/group.js +6 -63
- package/definitions/group.js.map +1 -1
- package/definitions/model.d.ts +4 -5
- package/definitions/model.js +6 -90
- package/definitions/model.js.map +1 -1
- package/definitions/table.d.ts +4 -6
- package/definitions/table.js +7 -28
- package/definitions/table.js.map +1 -1
- package/definitions/types.d.ts +60 -0
- package/definitions/types.js +3 -0
- package/definitions/types.js.map +1 -0
- package/dynamoDb/index.d.ts +1 -1
- package/dynamoDb/index.js +8 -20
- package/dynamoDb/index.js.map +1 -1
- package/dynamoDb/path/locationFolderId.d.ts +2 -0
- package/dynamoDb/path/locationFolderId.js +34 -0
- package/dynamoDb/path/locationFolderId.js.map +1 -0
- package/dynamoDb/path/plainObject.d.ts +1 -1
- package/dynamoDb/path/plainObject.js +6 -20
- package/dynamoDb/path/plainObject.js.map +1 -1
- package/dynamoDb/storage/longText.js +13 -35
- package/dynamoDb/storage/longText.js.map +1 -1
- package/dynamoDb/storage/richText.js +27 -88
- package/dynamoDb/storage/richText.js.map +1 -1
- package/dynamoDb/transformValue/datetime.d.ts +1 -1
- package/dynamoDb/transformValue/datetime.js +7 -19
- package/dynamoDb/transformValue/datetime.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +47 -111
- package/index.js.map +1 -1
- package/operations/entry/dataLoader/DataLoaderCache.d.ts +16 -0
- package/operations/entry/dataLoader/DataLoaderCache.js +31 -0
- package/operations/entry/dataLoader/DataLoaderCache.js.map +1 -0
- package/operations/entry/dataLoader/constants.d.ts +1 -0
- package/operations/entry/dataLoader/constants.js +4 -0
- package/operations/entry/dataLoader/constants.js.map +1 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.d.ts +8 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.js +19 -0
- package/operations/entry/dataLoader/createBatchScheduleFn.js.map +1 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.d.ts +4 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.js +35 -0
- package/operations/entry/dataLoader/getAllEntryRevisions.js.map +1 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.d.ts +4 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js +50 -0
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js.map +1 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.d.ts +4 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js +50 -0
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js.map +1 -0
- package/operations/entry/dataLoader/getRevisionById.d.ts +4 -0
- package/operations/entry/dataLoader/getRevisionById.js +56 -0
- package/operations/entry/dataLoader/getRevisionById.js.map +1 -0
- package/operations/entry/dataLoader/index.d.ts +8 -0
- package/operations/entry/dataLoader/index.js +19 -0
- package/operations/entry/dataLoader/index.js.map +1 -0
- package/operations/entry/dataLoader/types.d.ts +6 -0
- package/operations/entry/dataLoader/types.js +3 -0
- package/operations/entry/dataLoader/types.js.map +1 -0
- package/operations/entry/dataLoaders.d.ts +14 -30
- package/operations/entry/dataLoaders.js +58 -271
- package/operations/entry/dataLoaders.js.map +1 -1
- package/operations/entry/filtering/createExpressions.d.ts +5 -5
- package/operations/entry/filtering/createExpressions.js +30 -68
- package/operations/entry/filtering/createExpressions.js.map +1 -1
- package/operations/entry/filtering/createFields.d.ts +6 -4
- package/operations/entry/filtering/createFields.js +86 -103
- package/operations/entry/filtering/createFields.js.map +1 -1
- package/operations/entry/filtering/extractSort.d.ts +6 -6
- package/operations/entry/filtering/extractSort.js +39 -32
- package/operations/entry/filtering/extractSort.js.map +1 -1
- package/operations/entry/filtering/filter.d.ts +6 -6
- package/operations/entry/filtering/filter.js +36 -64
- package/operations/entry/filtering/filter.js.map +1 -1
- package/operations/entry/filtering/fullTextSearch.d.ts +3 -3
- package/operations/entry/filtering/fullTextSearch.js +6 -24
- package/operations/entry/filtering/fullTextSearch.js.map +1 -1
- package/operations/entry/filtering/getValue.js +5 -27
- package/operations/entry/filtering/getValue.js.map +1 -1
- package/operations/entry/filtering/index.d.ts +2 -2
- package/operations/entry/filtering/index.js +3 -20
- package/operations/entry/filtering/index.js.map +1 -1
- package/operations/entry/filtering/mapPlugins.d.ts +2 -2
- package/operations/entry/filtering/mapPlugins.js +4 -18
- package/operations/entry/filtering/mapPlugins.js.map +1 -1
- package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +2 -2
- package/operations/entry/filtering/plugins/defaultFilterCreate.js +9 -20
- package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +1 -1
- package/operations/entry/filtering/plugins/index.d.ts +1 -1
- package/operations/entry/filtering/plugins/index.js +7 -16
- package/operations/entry/filtering/plugins/index.js.map +1 -1
- package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +2 -2
- package/operations/entry/filtering/plugins/objectFilterCreate.js +16 -39
- package/operations/entry/filtering/plugins/objectFilterCreate.js.map +1 -1
- package/operations/entry/filtering/plugins/refFilterCreate.d.ts +3 -2
- package/operations/entry/filtering/plugins/refFilterCreate.js +21 -36
- package/operations/entry/filtering/plugins/refFilterCreate.js.map +1 -1
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.d.ts +2 -0
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js +57 -0
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js.map +1 -0
- package/operations/entry/filtering/sort.d.ts +6 -6
- package/operations/entry/filtering/sort.js +17 -34
- package/operations/entry/filtering/sort.js.map +1 -1
- package/operations/entry/filtering/systemFields.d.ts +2 -4
- package/operations/entry/filtering/systemFields.js +102 -43
- package/operations/entry/filtering/systemFields.js.map +1 -1
- package/operations/entry/filtering/transform.d.ts +1 -1
- package/operations/entry/filtering/transform.js +2 -10
- package/operations/entry/filtering/transform.js.map +1 -1
- package/operations/entry/filtering/types.d.ts +3 -3
- package/operations/entry/filtering/types.js +2 -4
- package/operations/entry/filtering/types.js.map +1 -1
- package/operations/entry/filtering/values.d.ts +1 -1
- package/operations/entry/filtering/values.js +5 -17
- package/operations/entry/filtering/values.js.map +1 -1
- package/operations/entry/filtering/where.js +5 -15
- package/operations/entry/filtering/where.js.map +1 -1
- package/operations/entry/index.d.ts +3 -4
- package/operations/entry/index.js +732 -410
- package/operations/entry/index.js.map +1 -1
- package/operations/entry/keys.d.ts +40 -2
- package/operations/entry/keys.js +54 -47
- package/operations/entry/keys.js.map +1 -1
- package/operations/group/index.d.ts +4 -4
- package/operations/group/index.js +44 -91
- package/operations/group/index.js.map +1 -1
- package/operations/model/index.d.ts +3 -3
- package/operations/model/index.js +36 -70
- package/operations/model/index.js.map +1 -1
- package/package.json +22 -29
- package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +4 -3
- package/plugins/CmsEntryFieldFilterPathPlugin.js +14 -29
- package/plugins/CmsEntryFieldFilterPathPlugin.js.map +1 -1
- package/plugins/CmsEntryFieldFilterPlugin.d.ts +10 -10
- package/plugins/CmsEntryFieldFilterPlugin.js +9 -19
- package/plugins/CmsEntryFieldFilterPlugin.js.map +1 -1
- package/plugins/CmsEntryFieldSortingPlugin.d.ts +2 -2
- package/plugins/CmsEntryFieldSortingPlugin.js +5 -24
- package/plugins/CmsEntryFieldSortingPlugin.js.map +1 -1
- package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +11 -0
- package/plugins/CmsFieldFilterValueTransformPlugin.js +16 -0
- package/plugins/CmsFieldFilterValueTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +4 -3
- package/plugins/index.js +5 -43
- package/plugins/index.js.map +1 -1
- package/types.d.ts +24 -19
- package/types.js +5 -13
- package/types.js.map +1 -1
- package/definitions/settings.d.ts +0 -9
- package/definitions/settings.js +0 -58
- package/definitions/settings.js.map +0 -1
- package/definitions/system.d.ts +0 -9
- package/definitions/system.js +0 -46
- package/definitions/system.js.map +0 -1
- package/dynamoDb/storage/date.d.ts +0 -3
- package/dynamoDb/storage/date.js +0 -109
- package/dynamoDb/storage/date.js.map +0 -1
- package/operations/entry/systemFields.d.ts +0 -2
- package/operations/entry/systemFields.js +0 -74
- package/operations/entry/systemFields.js.map +0 -1
- package/operations/settings/index.d.ts +0 -7
- package/operations/settings/index.js +0 -135
- package/operations/settings/index.js.map +0 -1
- package/operations/system/index.d.ts +0 -7
- package/operations/system/index.js +0 -99
- package/operations/system/index.js.map +0 -1
|
@@ -1,61 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
11
|
-
|
|
12
|
-
var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin");
|
|
13
|
-
|
|
14
|
-
var _mapPlugins = require("./mapPlugins");
|
|
15
|
-
|
|
16
|
-
var _where = require("./where");
|
|
17
|
-
|
|
18
|
-
var _transform = require("./transform");
|
|
19
|
-
|
|
20
|
-
var _CmsEntryFieldFilterPlugin = require("../../../plugins/CmsEntryFieldFilterPlugin");
|
|
21
|
-
|
|
22
|
-
var _values = require("./values");
|
|
23
|
-
|
|
24
|
-
const createExpressions = params => {
|
|
1
|
+
import WebinyError from "@webiny/error";
|
|
2
|
+
import { ValueFilterPlugin } from "@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin.js";
|
|
3
|
+
import { getMappedPlugins } from "./mapPlugins.js";
|
|
4
|
+
import { extractWhereParams } from "./where.js";
|
|
5
|
+
import { transformValue } from "./transform.js";
|
|
6
|
+
import { CmsEntryFieldFilterPlugin } from "../../../plugins/CmsEntryFieldFilterPlugin.js";
|
|
7
|
+
import { getWhereValues } from "./values.js";
|
|
8
|
+
import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
|
|
9
|
+
export const createExpressions = params => {
|
|
25
10
|
const {
|
|
26
11
|
where,
|
|
27
12
|
plugins,
|
|
28
13
|
fields
|
|
29
14
|
} = params;
|
|
30
|
-
const filterPlugins =
|
|
15
|
+
const filterPlugins = getMappedPlugins({
|
|
31
16
|
plugins,
|
|
32
|
-
type:
|
|
17
|
+
type: ValueFilterPlugin.type,
|
|
33
18
|
property: "operation"
|
|
34
19
|
});
|
|
35
|
-
const transformValuePlugins =
|
|
20
|
+
const transformValuePlugins = getMappedPlugins({
|
|
36
21
|
plugins,
|
|
37
22
|
type: "cms-field-filter-value-transform",
|
|
38
23
|
property: "fieldType"
|
|
39
24
|
});
|
|
40
|
-
const fieldFilterCreatePlugins =
|
|
25
|
+
const fieldFilterCreatePlugins = getMappedPlugins({
|
|
41
26
|
plugins,
|
|
42
|
-
type:
|
|
27
|
+
type: CmsEntryFieldFilterPlugin.type,
|
|
43
28
|
property: "fieldType"
|
|
44
29
|
});
|
|
45
30
|
const defaultFilterCreatePlugin = fieldFilterCreatePlugins["*"];
|
|
46
|
-
|
|
47
31
|
const getFilterCreatePlugin = type => {
|
|
48
|
-
const
|
|
49
|
-
|
|
32
|
+
const fieldType = getBaseFieldType({
|
|
33
|
+
type
|
|
34
|
+
});
|
|
35
|
+
const filterCreatePlugin = fieldFilterCreatePlugins[fieldType] || defaultFilterCreatePlugin;
|
|
50
36
|
if (filterCreatePlugin) {
|
|
51
37
|
return filterCreatePlugin;
|
|
52
38
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
type
|
|
39
|
+
throw new WebinyError(`There is no filter create plugin for the field type "${fieldType}".`, "MISSING_FILTER_CREATE_PLUGIN", {
|
|
40
|
+
fieldType
|
|
56
41
|
});
|
|
57
42
|
};
|
|
58
|
-
|
|
59
43
|
const createExpression = ({
|
|
60
44
|
where,
|
|
61
45
|
condition
|
|
@@ -65,29 +49,25 @@ const createExpressions = params => {
|
|
|
65
49
|
expressions: [],
|
|
66
50
|
condition
|
|
67
51
|
};
|
|
68
|
-
|
|
69
52
|
for (const key in where) {
|
|
70
53
|
const value = where[key];
|
|
71
|
-
|
|
72
54
|
if (value === undefined) {
|
|
73
55
|
continue;
|
|
74
56
|
}
|
|
57
|
+
|
|
75
58
|
/**
|
|
76
59
|
* If there are "AND" or "OR" keys, let's sort them out first.
|
|
77
60
|
*
|
|
78
61
|
*
|
|
79
62
|
* AND conditional
|
|
80
63
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
64
|
if (key === "AND") {
|
|
84
|
-
const childWhereList =
|
|
65
|
+
const childWhereList = getWhereValues(value, key);
|
|
85
66
|
const childExpression = {
|
|
86
67
|
condition: "AND",
|
|
87
68
|
filters: [],
|
|
88
69
|
expressions: []
|
|
89
70
|
};
|
|
90
|
-
|
|
91
71
|
for (const childWhere of childWhereList) {
|
|
92
72
|
const result = createExpression({
|
|
93
73
|
where: childWhere,
|
|
@@ -95,23 +75,19 @@ const createExpressions = params => {
|
|
|
95
75
|
});
|
|
96
76
|
childExpression.expressions.push(result);
|
|
97
77
|
}
|
|
98
|
-
|
|
99
78
|
expression.expressions.push(childExpression);
|
|
100
79
|
continue;
|
|
101
80
|
}
|
|
102
81
|
/**
|
|
103
82
|
* OR conditional
|
|
104
83
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
84
|
if (key === "OR") {
|
|
108
|
-
const childWhereList =
|
|
85
|
+
const childWhereList = getWhereValues(value, key);
|
|
109
86
|
const childExpression = {
|
|
110
87
|
condition: "OR",
|
|
111
88
|
filters: [],
|
|
112
89
|
expressions: []
|
|
113
90
|
};
|
|
114
|
-
|
|
115
91
|
for (const childWhere of childWhereList) {
|
|
116
92
|
const result = createExpression({
|
|
117
93
|
where: childWhere,
|
|
@@ -119,48 +95,40 @@ const createExpressions = params => {
|
|
|
119
95
|
});
|
|
120
96
|
childExpression.expressions.push(result);
|
|
121
97
|
}
|
|
122
|
-
|
|
123
98
|
expression.expressions.push(childExpression);
|
|
124
99
|
continue;
|
|
125
100
|
}
|
|
126
|
-
|
|
127
|
-
const whereParams = (0, _where.extractWhereParams)(key);
|
|
128
|
-
|
|
101
|
+
const whereParams = extractWhereParams(key);
|
|
129
102
|
if (!whereParams) {
|
|
130
103
|
continue;
|
|
131
104
|
}
|
|
132
|
-
|
|
133
105
|
const {
|
|
134
106
|
fieldId,
|
|
135
107
|
operation,
|
|
136
108
|
negate
|
|
137
109
|
} = whereParams;
|
|
138
110
|
const field = fields[fieldId];
|
|
139
|
-
|
|
140
111
|
if (!field) {
|
|
141
|
-
throw new
|
|
112
|
+
throw new WebinyError(`There is no field with the fieldId "${fieldId}".`, "FIELD_ERROR", {
|
|
142
113
|
fieldId
|
|
143
114
|
});
|
|
144
115
|
}
|
|
116
|
+
|
|
145
117
|
/**
|
|
146
118
|
* We need a filter create plugin for this type.
|
|
147
119
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
120
|
const filterCreatePlugin = getFilterCreatePlugin(field.type);
|
|
151
|
-
const
|
|
152
|
-
|
|
121
|
+
const fieldType = getBaseFieldType(field);
|
|
122
|
+
const transformValuePlugin = transformValuePlugins[fieldType];
|
|
153
123
|
const transformValueCallable = value => {
|
|
154
124
|
if (!transformValuePlugin) {
|
|
155
125
|
return value;
|
|
156
126
|
}
|
|
157
|
-
|
|
158
127
|
return transformValuePlugin.transform({
|
|
159
128
|
field,
|
|
160
129
|
value
|
|
161
130
|
});
|
|
162
131
|
};
|
|
163
|
-
|
|
164
132
|
const result = filterCreatePlugin.create({
|
|
165
133
|
key,
|
|
166
134
|
value,
|
|
@@ -171,7 +139,7 @@ const createExpressions = params => {
|
|
|
171
139
|
negate,
|
|
172
140
|
field,
|
|
173
141
|
fields,
|
|
174
|
-
compareValue:
|
|
142
|
+
compareValue: transformValue({
|
|
175
143
|
value,
|
|
176
144
|
transform: transformValueCallable
|
|
177
145
|
}),
|
|
@@ -183,17 +151,13 @@ const createExpressions = params => {
|
|
|
183
151
|
* - result being an array
|
|
184
152
|
* - result being an object
|
|
185
153
|
*/
|
|
186
|
-
|
|
187
154
|
if (!result || Array.isArray(result) && result.length === 0) {
|
|
188
155
|
continue;
|
|
189
156
|
}
|
|
190
|
-
|
|
191
157
|
expression.filters.push(...(Array.isArray(result) ? result : [result]));
|
|
192
158
|
}
|
|
193
|
-
|
|
194
159
|
return expression;
|
|
195
160
|
};
|
|
196
|
-
|
|
197
161
|
const expression = createExpression({
|
|
198
162
|
where,
|
|
199
163
|
condition: "AND"
|
|
@@ -202,12 +166,10 @@ const createExpressions = params => {
|
|
|
202
166
|
* If the first expression has no filters and has only one expression, put that expression as main one.
|
|
203
167
|
* This will mostly be used when having an OR condition as the single expression in the root level of the where
|
|
204
168
|
*/
|
|
205
|
-
|
|
206
169
|
if (expression.filters.length > 0 || expression.expressions.length !== 1) {
|
|
207
170
|
return expression;
|
|
208
171
|
}
|
|
209
|
-
|
|
210
172
|
return expression.expressions[0];
|
|
211
173
|
};
|
|
212
174
|
|
|
213
|
-
|
|
175
|
+
//# sourceMappingURL=createExpressions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createExpressions","params","where","plugins","fields","filterPlugins","getMappedPlugins","type","ValueFilterPlugin","property","transformValuePlugins","fieldFilterCreatePlugins","CmsEntryFieldFilterPlugin","defaultFilterCreatePlugin","getFilterCreatePlugin","filterCreatePlugin","WebinyError","createExpression","condition","expression","filters","expressions","key","value","undefined","childWhereList","getWhereValues","childExpression","childWhere","result","push","whereParams","extractWhereParams","fieldId","operation","negate","field","transformValuePlugin","transformValueCallable","transform","create","valueFilterPlugins","compareValue","transformValue","Array","isArray","length"],"sources":["createExpressions.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\nimport { CmsFieldFilterValueTransformPlugin } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { Field } from \"./types\";\nimport { getMappedPlugins } from \"./mapPlugins\";\nimport { extractWhereParams } from \"./where\";\nimport { transformValue } from \"./transform\";\nimport { CmsEntryFieldFilterPlugin } from \"~/plugins/CmsEntryFieldFilterPlugin\";\nimport { getWhereValues } from \"~/operations/entry/filtering/values\";\n\ninterface CreateExpressionParams {\n where: Partial<CmsEntryListWhere>;\n condition: ExpressionCondition;\n}\n\ninterface CreateExpressionCb {\n (params: CreateExpressionParams): Expression;\n}\n\ninterface Params {\n plugins: PluginsContainer;\n where: Partial<CmsEntryListWhere>;\n fields: Record<string, Field>;\n}\n\nexport type ExpressionCondition = \"AND\" | \"OR\";\n\nexport interface Expression {\n expressions: Expression[];\n filters: Filter[];\n condition: ExpressionCondition;\n}\n\nexport interface Filter {\n field: Field;\n path: string;\n fieldPathId: string;\n plugin: ValueFilterPlugin;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport const createExpressions = (params: Params): Expression => {\n const { where, plugins, fields } = params;\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n plugins,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const fieldFilterCreatePlugins = getMappedPlugins<CmsEntryFieldFilterPlugin>({\n plugins,\n type: CmsEntryFieldFilterPlugin.type,\n property: \"fieldType\"\n });\n\n const defaultFilterCreatePlugin = fieldFilterCreatePlugins[\"*\"] as CmsEntryFieldFilterPlugin;\n\n const getFilterCreatePlugin = (type: string) => {\n const filterCreatePlugin = fieldFilterCreatePlugins[type] || defaultFilterCreatePlugin;\n if (filterCreatePlugin) {\n return filterCreatePlugin;\n }\n throw new WebinyError(\n `There is no filter create plugin for the field type \"${type}\".`,\n \"MISSING_FILTER_CREATE_PLUGIN\",\n {\n type\n }\n );\n };\n\n const createExpression: CreateExpressionCb = ({ where, condition }) => {\n const expression: Expression = {\n filters: [],\n expressions: [],\n condition\n };\n\n for (const key in where) {\n const value = (where as any)[key];\n if (value === undefined) {\n continue;\n }\n\n /**\n * If there are \"AND\" or \"OR\" keys, let's sort them out first.\n *\n *\n * AND conditional\n */\n if (key === \"AND\") {\n const childWhereList = getWhereValues(value, key);\n const childExpression: Expression = {\n condition: \"AND\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n /**\n * OR conditional\n */\n if (key === \"OR\") {\n const childWhereList = getWhereValues(value, key);\n\n const childExpression: Expression = {\n condition: \"OR\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n\n const whereParams = extractWhereParams(key);\n if (!whereParams) {\n continue;\n }\n\n const { fieldId, operation, negate } = whereParams;\n\n const field = fields[fieldId];\n if (!field) {\n throw new WebinyError(\n `There is no field with the fieldId \"${fieldId}\".`,\n \"FIELD_ERROR\",\n {\n fieldId\n }\n );\n }\n\n /**\n * We need a filter create plugin for this type.\n */\n const filterCreatePlugin = getFilterCreatePlugin(field.type);\n\n const transformValuePlugin: CmsFieldFilterValueTransformPlugin =\n transformValuePlugins[field.type];\n\n const transformValueCallable = (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({\n field,\n value\n });\n };\n\n const result = filterCreatePlugin.create({\n key,\n value,\n valueFilterPlugins: filterPlugins,\n transformValuePlugins,\n getFilterCreatePlugin,\n operation,\n negate,\n field,\n fields,\n compareValue: transformValue({\n value,\n transform: transformValueCallable\n }),\n transformValue: transformValueCallable\n });\n /**\n * There is a possibility of\n * - no result\n * - result being an array\n * - result being an object\n */\n if (!result || (Array.isArray(result) && result.length === 0)) {\n continue;\n }\n\n expression.filters.push(...(Array.isArray(result) ? result : [result]));\n }\n\n return expression;\n };\n\n const expression = createExpression({\n where,\n condition: \"AND\"\n });\n /**\n * If the first expression has no filters and has only one expression, put that expression as main one.\n * This will mostly be used when having an OR condition as the single expression in the root level of the where\n */\n if (expression.filters.length > 0 || expression.expressions.length !== 1) {\n return expression;\n }\n return expression.expressions[0];\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["WebinyError","ValueFilterPlugin","getMappedPlugins","extractWhereParams","transformValue","CmsEntryFieldFilterPlugin","getWhereValues","getBaseFieldType","createExpressions","params","where","plugins","fields","filterPlugins","type","property","transformValuePlugins","fieldFilterCreatePlugins","defaultFilterCreatePlugin","getFilterCreatePlugin","fieldType","filterCreatePlugin","createExpression","condition","expression","filters","expressions","key","value","undefined","childWhereList","childExpression","childWhere","result","push","whereParams","fieldId","operation","negate","field","transformValuePlugin","transformValueCallable","transform","create","valueFilterPlugins","compareValue","Array","isArray","length"],"sources":["createExpressions.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { CmsEntryListWhere } from \"@webiny/api-headless-cms/types/index.js\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin.js\";\nimport type { CmsFieldFilterValueTransformPlugin } from \"~/types.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport type { Field } from \"./types.js\";\nimport { getMappedPlugins } from \"./mapPlugins.js\";\nimport { extractWhereParams } from \"./where.js\";\nimport { transformValue } from \"./transform.js\";\nimport { CmsEntryFieldFilterPlugin } from \"~/plugins/CmsEntryFieldFilterPlugin.js\";\nimport { getWhereValues } from \"~/operations/entry/filtering/values.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\n\ninterface CreateExpressionParams {\n where: Partial<CmsEntryListWhere>;\n condition: ExpressionCondition;\n}\n\ninterface Params {\n plugins: PluginsContainer;\n where: Partial<CmsEntryListWhere>;\n fields: Record<string, Field>;\n}\n\nexport type ExpressionCondition = \"AND\" | \"OR\";\n\nexport interface Expression {\n expressions: Expression[];\n filters: Filter[];\n condition: ExpressionCondition;\n}\n\nexport interface Filter {\n field: Field;\n path: string;\n fieldPathId: string;\n plugin: ValueFilterPlugin;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\nexport const createExpressions = (params: Params): Expression => {\n const { where, plugins, fields } = params;\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n plugins,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const fieldFilterCreatePlugins = getMappedPlugins<CmsEntryFieldFilterPlugin>({\n plugins,\n type: CmsEntryFieldFilterPlugin.type,\n property: \"fieldType\"\n });\n\n const defaultFilterCreatePlugin = fieldFilterCreatePlugins[\"*\"] as CmsEntryFieldFilterPlugin;\n\n const getFilterCreatePlugin = (type: string) => {\n const fieldType = getBaseFieldType({\n type\n });\n const filterCreatePlugin = fieldFilterCreatePlugins[fieldType] || defaultFilterCreatePlugin;\n if (filterCreatePlugin) {\n return filterCreatePlugin;\n }\n throw new WebinyError(\n `There is no filter create plugin for the field type \"${fieldType}\".`,\n \"MISSING_FILTER_CREATE_PLUGIN\",\n {\n fieldType\n }\n );\n };\n\n const createExpression = ({ where, condition }: CreateExpressionParams): Expression => {\n const expression: Expression = {\n filters: [],\n expressions: [],\n condition\n };\n\n for (const key in where) {\n const value = where[key as keyof typeof where];\n if (value === undefined) {\n continue;\n }\n\n /**\n * If there are \"AND\" or \"OR\" keys, let's sort them out first.\n *\n *\n * AND conditional\n */\n if (key === \"AND\") {\n const childWhereList = getWhereValues(value, key);\n const childExpression: Expression = {\n condition: \"AND\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n /**\n * OR conditional\n */\n if (key === \"OR\") {\n const childWhereList = getWhereValues(value, key);\n\n const childExpression: Expression = {\n condition: \"OR\",\n filters: [],\n expressions: []\n };\n for (const childWhere of childWhereList) {\n const result = createExpression({\n where: childWhere,\n condition: \"AND\"\n });\n childExpression.expressions.push(result);\n }\n expression.expressions.push(childExpression);\n continue;\n }\n\n const whereParams = extractWhereParams(key);\n if (!whereParams) {\n continue;\n }\n\n const { fieldId, operation, negate } = whereParams;\n\n const field = fields[fieldId];\n if (!field) {\n throw new WebinyError(\n `There is no field with the fieldId \"${fieldId}\".`,\n \"FIELD_ERROR\",\n {\n fieldId\n }\n );\n }\n\n /**\n * We need a filter create plugin for this type.\n */\n const filterCreatePlugin = getFilterCreatePlugin(field.type);\n\n const fieldType = getBaseFieldType(field);\n\n const transformValuePlugin: CmsFieldFilterValueTransformPlugin =\n transformValuePlugins[fieldType];\n\n const transformValueCallable = (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({\n field,\n value\n });\n };\n\n const result = filterCreatePlugin.create({\n key,\n value,\n valueFilterPlugins: filterPlugins,\n transformValuePlugins,\n getFilterCreatePlugin,\n operation,\n negate,\n field,\n fields,\n compareValue: transformValue({\n value,\n transform: transformValueCallable\n }),\n transformValue: transformValueCallable\n });\n /**\n * There is a possibility of\n * - no result\n * - result being an array\n * - result being an object\n */\n if (!result || (Array.isArray(result) && result.length === 0)) {\n continue;\n }\n\n expression.filters.push(...(Array.isArray(result) ? result : [result]));\n }\n\n return expression;\n };\n\n const expression = createExpression({\n where,\n condition: \"AND\"\n });\n /**\n * If the first expression has no filters and has only one expression, put that expression as main one.\n * This will mostly be used when having an OR condition as the single expression in the root level of the where\n */\n if (expression.filters.length > 0 || expression.expressions.length !== 1) {\n return expression;\n }\n return expression.expressions[0];\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CmsModelField } from "@webiny/api-headless-cms/types";
|
|
2
|
-
import { Field } from "./types";
|
|
3
|
-
import { PluginsContainer } from "@webiny/plugins";
|
|
1
|
+
import type { CmsModelField } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { Field } from "./types.js";
|
|
3
|
+
import type { PluginsContainer } from "@webiny/plugins";
|
|
4
4
|
interface Params {
|
|
5
5
|
fields: CmsModelField[];
|
|
6
6
|
plugins: PluginsContainer;
|
|
@@ -10,5 +10,7 @@ interface Params {
|
|
|
10
10
|
*
|
|
11
11
|
* In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).
|
|
12
12
|
*/
|
|
13
|
-
export declare const createFields: (params: Params) =>
|
|
13
|
+
export declare const createFields: (params: Params) => {
|
|
14
|
+
[x: string]: Field;
|
|
15
|
+
};
|
|
14
16
|
export {};
|
|
@@ -1,123 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { createSystemFields } from "./systemFields.js";
|
|
2
|
+
import { CmsEntryFieldFilterPathPlugin } from "../../../plugins/index.js";
|
|
3
|
+
import { getMappedPlugins } from "./mapPlugins.js";
|
|
4
|
+
import { getBaseFieldType } from "@webiny/api-headless-cms/utils/getBaseFieldType.js";
|
|
5
|
+
const createFieldCollection = params => {
|
|
6
|
+
const {
|
|
7
|
+
fields,
|
|
8
|
+
parents,
|
|
9
|
+
transformValuePlugins,
|
|
10
|
+
valuePathPlugins,
|
|
11
|
+
system
|
|
12
|
+
} = params;
|
|
13
|
+
return fields.reduce((collection, field) => {
|
|
14
|
+
const fieldType = getBaseFieldType(field);
|
|
15
|
+
const transformPlugin = transformValuePlugins[fieldType];
|
|
16
|
+
const valuePathPlugin = valuePathPlugins[fieldType];
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The required fieldId is a product of all of its parents and its own fieldId.
|
|
20
|
+
*/
|
|
21
|
+
const fieldId = [...parents, {
|
|
22
|
+
fieldId: field.fieldId,
|
|
23
|
+
list: field.list
|
|
24
|
+
}].map(f => f.fieldId).join(".");
|
|
25
|
+
collection[fieldId] = {
|
|
26
|
+
...field,
|
|
27
|
+
parents,
|
|
28
|
+
system,
|
|
29
|
+
createPath: params => {
|
|
30
|
+
if (valuePathPlugin && valuePathPlugin.canUse(field, parents.map(p => p.fieldId))) {
|
|
31
|
+
return valuePathPlugin.createPath(params);
|
|
32
|
+
}
|
|
33
|
+
return parents.map(parent => parent.fieldId).concat([params.field.fieldId]).join(".");
|
|
34
|
+
},
|
|
35
|
+
transform: value => {
|
|
36
|
+
if (!transformPlugin) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
return transformPlugin.transform({
|
|
40
|
+
field,
|
|
41
|
+
value
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const childFields = field.settings?.fields;
|
|
46
|
+
if (!childFields?.length) {
|
|
47
|
+
return collection;
|
|
48
|
+
}
|
|
49
|
+
const result = createFieldCollection({
|
|
50
|
+
fields: childFields,
|
|
51
|
+
parents: [...parents, {
|
|
52
|
+
fieldId: field.fieldId,
|
|
53
|
+
list: field.list
|
|
54
|
+
}],
|
|
55
|
+
transformValuePlugins,
|
|
56
|
+
valuePathPlugins,
|
|
57
|
+
system
|
|
58
|
+
});
|
|
59
|
+
Object.assign(collection, result);
|
|
60
|
+
return collection;
|
|
61
|
+
}, {});
|
|
62
|
+
};
|
|
18
63
|
/**
|
|
19
64
|
* This method will map the fieldId (fieldId -> field) to the actual field.
|
|
20
65
|
*
|
|
21
66
|
* In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).
|
|
22
67
|
*/
|
|
23
|
-
const createFields = params => {
|
|
68
|
+
export const createFields = params => {
|
|
24
69
|
const {
|
|
25
70
|
fields,
|
|
26
71
|
plugins
|
|
27
72
|
} = params;
|
|
28
|
-
const transformValuePlugins =
|
|
73
|
+
const transformValuePlugins = getMappedPlugins({
|
|
29
74
|
plugins,
|
|
30
75
|
type: "cms-field-filter-value-transform",
|
|
31
76
|
property: "fieldType"
|
|
32
77
|
});
|
|
33
|
-
const valuePathPlugins =
|
|
78
|
+
const valuePathPlugins = getMappedPlugins({
|
|
34
79
|
plugins,
|
|
35
|
-
type:
|
|
80
|
+
type: CmsEntryFieldFilterPathPlugin.type,
|
|
36
81
|
property: "fieldType"
|
|
37
82
|
});
|
|
38
|
-
const collection = (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
return fields;
|
|
62
|
-
}, {});
|
|
63
|
-
|
|
64
|
-
const addFieldsToCollection = (fields, parents = []) => {
|
|
65
|
-
/**
|
|
66
|
-
* Exit early if no fields are sent.
|
|
67
|
-
*/
|
|
68
|
-
if (fields.length === 0) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
for (const field of fields) {
|
|
73
|
-
var _field$settings2;
|
|
74
|
-
|
|
75
|
-
const transformPlugin = transformValuePlugins[field.type];
|
|
76
|
-
const valuePathPlugin = valuePathPlugins[field.type];
|
|
77
|
-
/**
|
|
78
|
-
* The required fieldId is a product of all of its parents and its own fieldId.
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
const fieldId = [...parents, {
|
|
82
|
-
fieldId: field.fieldId,
|
|
83
|
-
multipleValues: field.multipleValues
|
|
84
|
-
}].map(f => f.fieldId).join(".");
|
|
85
|
-
collection[fieldId] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
|
|
86
|
-
parents,
|
|
87
|
-
system: false,
|
|
88
|
-
createPath: params => {
|
|
89
|
-
if (valuePathPlugin) {
|
|
90
|
-
return valuePathPlugin.createPath(params);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return ["values"].concat(parents.map(parent => parent.fieldId)).concat([params.field.fieldId]).join(".");
|
|
94
|
-
},
|
|
95
|
-
transform: value => {
|
|
96
|
-
if (!transformPlugin) {
|
|
97
|
-
return value;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return transformPlugin.transform({
|
|
101
|
-
field,
|
|
102
|
-
value
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
const childFields = (_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.fields;
|
|
107
|
-
|
|
108
|
-
if (!childFields || childFields.length === 0) {
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
addFieldsToCollection(childFields, [...parents, {
|
|
113
|
-
fieldId: field.fieldId,
|
|
114
|
-
multipleValues: field.multipleValues
|
|
115
|
-
}]);
|
|
116
|
-
}
|
|
83
|
+
const collection = createFieldCollection({
|
|
84
|
+
fields: createSystemFields(),
|
|
85
|
+
transformValuePlugins,
|
|
86
|
+
valuePathPlugins,
|
|
87
|
+
parents: [],
|
|
88
|
+
system: true
|
|
89
|
+
});
|
|
90
|
+
const result = createFieldCollection({
|
|
91
|
+
fields,
|
|
92
|
+
transformValuePlugins,
|
|
93
|
+
valuePathPlugins,
|
|
94
|
+
parents: [{
|
|
95
|
+
fieldId: "values",
|
|
96
|
+
list: false
|
|
97
|
+
}],
|
|
98
|
+
system: false
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
...collection,
|
|
102
|
+
...result
|
|
117
103
|
};
|
|
118
|
-
|
|
119
|
-
addFieldsToCollection(fields);
|
|
120
|
-
return collection;
|
|
121
104
|
};
|
|
122
105
|
|
|
123
|
-
|
|
106
|
+
//# sourceMappingURL=createFields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["createSystemFields","CmsEntryFieldFilterPathPlugin","getMappedPlugins","getBaseFieldType","createFieldCollection","params","fields","parents","transformValuePlugins","valuePathPlugins","system","reduce","collection","field","fieldType","transformPlugin","valuePathPlugin","fieldId","list","map","f","join","createPath","canUse","p","parent","concat","transform","value","childFields","settings","length","result","Object","assign","createFields","plugins","type","property"],"sources":["createFields.ts"],"sourcesContent":["import type { CmsModelField } from \"@webiny/api-headless-cms/types/index.js\";\nimport { createSystemFields } from \"./systemFields.js\";\nimport type { Field, FieldParent } from \"./types.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsFieldFilterValueTransformPlugin } from \"~/types.js\";\nimport { CmsEntryFieldFilterPathPlugin } from \"~/plugins/index.js\";\nimport { getMappedPlugins } from \"./mapPlugins.js\";\nimport { getBaseFieldType } from \"@webiny/api-headless-cms/utils/getBaseFieldType.js\";\n\ninterface Params {\n fields: CmsModelField[];\n plugins: PluginsContainer;\n}\n\ninterface FieldCollection {\n [key: string]: Field;\n}\n\ninterface AddFieldsToCollectionParams {\n fields: CmsModelField[];\n parents: FieldParent[];\n transformValuePlugins: Record<string, CmsFieldFilterValueTransformPlugin>;\n valuePathPlugins: Record<string, CmsEntryFieldFilterPathPlugin>;\n system: boolean;\n}\n\nconst createFieldCollection = (params: AddFieldsToCollectionParams): FieldCollection => {\n const { fields, parents, transformValuePlugins, valuePathPlugins, system } = params;\n return fields.reduce<FieldCollection>((collection, field) => {\n const fieldType = getBaseFieldType(field);\n const transformPlugin = transformValuePlugins[fieldType];\n const valuePathPlugin = valuePathPlugins[fieldType];\n\n /**\n * The required fieldId is a product of all of its parents and its own fieldId.\n */\n const fieldId = [\n ...parents,\n {\n fieldId: field.fieldId,\n list: field.list\n }\n ]\n .map(f => f.fieldId)\n .join(\".\");\n\n collection[fieldId] = {\n ...field,\n parents,\n system,\n createPath: params => {\n if (\n valuePathPlugin &&\n valuePathPlugin.canUse(\n field,\n parents.map(p => p.fieldId)\n )\n ) {\n return valuePathPlugin.createPath(params);\n }\n\n return parents\n .map(parent => parent.fieldId)\n .concat([params.field.fieldId])\n .join(\".\");\n },\n transform: value => {\n if (!transformPlugin) {\n return value;\n }\n return transformPlugin.transform({\n field,\n value\n });\n }\n };\n const childFields = field.settings?.fields;\n if (!childFields?.length) {\n return collection;\n }\n\n const result = createFieldCollection({\n fields: childFields,\n parents: [\n ...parents,\n {\n fieldId: field.fieldId,\n list: field.list\n }\n ],\n transformValuePlugins,\n valuePathPlugins,\n system\n });\n Object.assign(collection, result);\n return collection;\n }, {});\n};\n/**\n * This method will map the fieldId (fieldId -> field) to the actual field.\n *\n * In case of nested fields, fieldId is all the parent fieldIds + current one, joined by the dot (.).\n */\nexport const createFields = (params: Params) => {\n const { fields, plugins } = params;\n\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n plugins,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const valuePathPlugins = getMappedPlugins<CmsEntryFieldFilterPathPlugin>({\n plugins,\n type: CmsEntryFieldFilterPathPlugin.type,\n property: \"fieldType\"\n });\n\n const collection = createFieldCollection({\n fields: createSystemFields(),\n transformValuePlugins,\n valuePathPlugins,\n parents: [],\n system: true\n });\n\n const result = createFieldCollection({\n fields,\n transformValuePlugins,\n valuePathPlugins,\n parents: [\n {\n fieldId: \"values\",\n list: false\n }\n ],\n system: false\n });\n\n return {\n ...collection,\n ...result\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Field } from "./types";
|
|
2
|
-
import { PluginsContainer } from "@webiny/plugins";
|
|
3
|
-
import { CmsModel } from "@webiny/api-headless-cms/types";
|
|
4
|
-
interface
|
|
1
|
+
import type { Field } from "./types.js";
|
|
2
|
+
import type { PluginsContainer } from "@webiny/plugins";
|
|
3
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
4
|
+
interface IResponse {
|
|
5
5
|
valuePath: string;
|
|
6
6
|
reverse: boolean;
|
|
7
7
|
fieldId: string;
|
|
8
8
|
field: Field;
|
|
9
9
|
}
|
|
10
|
-
interface
|
|
10
|
+
interface IParams {
|
|
11
11
|
model: CmsModel;
|
|
12
12
|
sortBy: string;
|
|
13
13
|
fields: Record<string, Field>;
|
|
14
14
|
plugins: PluginsContainer;
|
|
15
15
|
}
|
|
16
|
-
export declare const extractSort: (params:
|
|
16
|
+
export declare const extractSort: (params: IParams) => IResponse;
|
|
17
17
|
export {};
|