@webiny/db-dynamodb 6.3.0-beta.4 → 6.4.0-beta.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/DynamoDbDriver.js +204 -209
- package/DynamoDbDriver.js.map +1 -1
- package/exports/api/db.js +0 -2
- package/feature/FilterUtil/FilterUtil.js +18 -20
- package/feature/FilterUtil/FilterUtil.js.map +1 -1
- package/feature/FilterUtil/abstractions/FilterUtil.js +2 -1
- package/feature/FilterUtil/abstractions/FilterUtil.js.map +1 -1
- package/feature/FilterUtil/createFilters.js +82 -120
- package/feature/FilterUtil/createFilters.js.map +1 -1
- package/feature/FilterUtil/extractWhereArgs.js +15 -19
- package/feature/FilterUtil/extractWhereArgs.js.map +1 -1
- package/feature/FilterUtil/feature.js +6 -5
- package/feature/FilterUtil/feature.js.map +1 -1
- package/feature/FilterUtil/index.js +0 -2
- package/feature/ValueFilter/ValueFilterRegistry.js +21 -17
- package/feature/ValueFilter/ValueFilterRegistry.js.map +1 -1
- package/feature/ValueFilter/abstractions/ValueFilter.js +2 -1
- package/feature/ValueFilter/abstractions/ValueFilter.js.map +1 -1
- package/feature/ValueFilter/abstractions/ValueFilterRegistry.js +2 -1
- package/feature/ValueFilter/abstractions/ValueFilterRegistry.js.map +1 -1
- package/feature/ValueFilter/feature.js +17 -16
- package/feature/ValueFilter/feature.js.map +1 -1
- package/feature/ValueFilter/filters/AndInFilter.js +19 -23
- package/feature/ValueFilter/filters/AndInFilter.js.map +1 -1
- package/feature/ValueFilter/filters/BetweenFilter.js +23 -25
- package/feature/ValueFilter/filters/BetweenFilter.js.map +1 -1
- package/feature/ValueFilter/filters/ContainsFilter.js +34 -53
- package/feature/ValueFilter/filters/ContainsFilter.js.map +1 -1
- package/feature/ValueFilter/filters/EqFilter.js +17 -27
- package/feature/ValueFilter/filters/EqFilter.js.map +1 -1
- package/feature/ValueFilter/filters/FuzzyFilter.js +30 -30
- package/feature/ValueFilter/filters/FuzzyFilter.js.map +1 -1
- package/feature/ValueFilter/filters/GtFilter.js +16 -16
- package/feature/ValueFilter/filters/GtFilter.js.map +1 -1
- package/feature/ValueFilter/filters/GteFilter.js +16 -16
- package/feature/ValueFilter/filters/GteFilter.js.map +1 -1
- package/feature/ValueFilter/filters/InFilter.js +19 -23
- package/feature/ValueFilter/filters/InFilter.js.map +1 -1
- package/feature/ValueFilter/filters/LtFilter.js +16 -16
- package/feature/ValueFilter/filters/LtFilter.js.map +1 -1
- package/feature/ValueFilter/filters/LteFilter.js +16 -16
- package/feature/ValueFilter/filters/LteFilter.js.map +1 -1
- package/feature/ValueFilter/filters/StartsWithFilter.js +20 -36
- package/feature/ValueFilter/filters/StartsWithFilter.js.map +1 -1
- package/feature/ValueFilter/index.js +0 -2
- package/index.js +7 -9
- package/index.js.map +1 -1
- package/package.json +13 -13
- package/plugins/definitions/DateTimeTransformPlugin.js +18 -30
- package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -1
- package/plugins/definitions/FieldPlugin.js +34 -37
- package/plugins/definitions/FieldPlugin.js.map +1 -1
- package/plugins/definitions/TimeTransformPlugin.js +25 -37
- package/plugins/definitions/TimeTransformPlugin.js.map +1 -1
- package/plugins/definitions/ValueTransformPlugin.js +18 -17
- package/plugins/definitions/ValueTransformPlugin.js.map +1 -1
- package/plugins/definitions/assignFields.js +14 -18
- package/plugins/definitions/assignFields.js.map +1 -1
- package/plugins/index.js +0 -2
- package/store/entity.js +6 -9
- package/store/entity.js.map +1 -1
- package/store/keys.js +6 -13
- package/store/keys.js.map +1 -1
- package/store/types.js +0 -3
- package/toolbox.js +0 -5
- package/types.js +0 -3
- package/utils/batch/batchRead.js +37 -56
- package/utils/batch/batchRead.js.map +1 -1
- package/utils/batch/batchWrite.js +33 -51
- package/utils/batch/batchWrite.js.map +1 -1
- package/utils/batch/index.js +0 -2
- package/utils/batch/types.js +0 -3
- package/utils/cleanup.js +35 -25
- package/utils/cleanup.js.map +1 -1
- package/utils/count.js +8 -14
- package/utils/count.js.map +1 -1
- package/utils/createEntity.d.ts +1 -1
- package/utils/createEntity.js +75 -78
- package/utils/createEntity.js.map +1 -1
- package/utils/createTable.js +25 -35
- package/utils/createTable.js.map +1 -1
- package/utils/cursor.js +7 -10
- package/utils/cursor.js.map +1 -1
- package/utils/delete.js +6 -8
- package/utils/delete.js.map +1 -1
- package/utils/entity/Entity.js +85 -90
- package/utils/entity/Entity.js.map +1 -1
- package/utils/entity/EntityReadBatch.js +23 -31
- package/utils/entity/EntityReadBatch.js.map +1 -1
- package/utils/entity/EntityReadBatchBuilder.js +12 -15
- package/utils/entity/EntityReadBatchBuilder.js.map +1 -1
- package/utils/entity/EntityWriteBatch.js +34 -41
- package/utils/entity/EntityWriteBatch.js.map +1 -1
- package/utils/entity/EntityWriteBatchBuilder.js +15 -16
- package/utils/entity/EntityWriteBatchBuilder.js.map +1 -1
- package/utils/entity/getEntity.js +8 -9
- package/utils/entity/getEntity.js.map +1 -1
- package/utils/entity/index.js +0 -2
- package/utils/entity/types.js +0 -4
- package/utils/get.js +12 -26
- package/utils/get.js.map +1 -1
- package/utils/index.js +1 -3
- package/utils/put.js +7 -9
- package/utils/put.js.map +1 -1
- package/utils/query.js +77 -129
- package/utils/query.js.map +1 -1
- package/utils/scan.js +47 -73
- package/utils/scan.js.map +1 -1
- package/utils/sort.js +37 -61
- package/utils/sort.js.map +1 -1
- package/utils/table/Table.js +22 -21
- package/utils/table/Table.js.map +1 -1
- package/utils/table/TableReadBatch.js +37 -45
- package/utils/table/TableReadBatch.js.map +1 -1
- package/utils/table/TableWriteBatch.js +47 -56
- package/utils/table/TableWriteBatch.js.map +1 -1
- package/utils/table/index.js +0 -2
- package/utils/table/types.js +0 -3
- package/exports/api/db.js.map +0 -1
- package/feature/FilterUtil/index.js.map +0 -1
- package/feature/ValueFilter/index.js.map +0 -1
- package/plugins/index.js.map +0 -1
- package/store/types.js.map +0 -1
- package/toolbox.js.map +0 -1
- package/types.js.map +0 -1
- package/utils/batch/index.js.map +0 -1
- package/utils/batch/types.js.map +0 -1
- package/utils/entity/index.js.map +0 -1
- package/utils/entity/types.js.map +0 -1
- package/utils/index.js.map +0 -1
- package/utils/table/index.js.map +0 -1
- package/utils/table/types.js.map +0 -1
|
@@ -1,130 +1,92 @@
|
|
|
1
|
-
import * as dotProp from "dot-prop";
|
|
2
1
|
import { WebinyError } from "@webiny/error";
|
|
3
2
|
import { extractWhereArgs } from "./extractWhereArgs.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return filter;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
3
|
+
import * as __rspack_external_dot_prop_de53db47 from "dot-prop";
|
|
4
|
+
const findFilter = (registry, operation)=>{
|
|
5
|
+
const filter = registry.get(operation);
|
|
6
|
+
if (filter) return filter;
|
|
7
|
+
throw new WebinyError("Missing filter plugin definition.", "FILTER_PLUGIN_ERROR", {
|
|
8
|
+
operation
|
|
9
|
+
});
|
|
12
10
|
};
|
|
13
|
-
const multiSearchFieldOperations = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
filterRegistry
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
11
|
+
const multiSearchFieldOperations = [
|
|
12
|
+
"contains",
|
|
13
|
+
"fuzzy"
|
|
14
|
+
];
|
|
15
|
+
const createFilters = (params)=>{
|
|
16
|
+
const { where, fields, filterRegistry } = params;
|
|
17
|
+
const keys = Object.keys(where);
|
|
18
|
+
if (0 === keys.length) return [];
|
|
19
|
+
return keys.reduce((filters, key)=>{
|
|
20
|
+
const compareValue = where[key];
|
|
21
|
+
if (void 0 === compareValue) return filters;
|
|
22
|
+
if (true === multiSearchFieldOperations.includes(key)) {
|
|
23
|
+
const data = compareValue;
|
|
24
|
+
let transformValue;
|
|
25
|
+
const paths = data.fields.map((field)=>{
|
|
26
|
+
const fieldPlugin = fields.find((plugin)=>plugin.getField() === field);
|
|
27
|
+
if (fieldPlugin) {
|
|
28
|
+
transformValue = (value)=>fieldPlugin.transformValue(value);
|
|
29
|
+
return fieldPlugin.getPath();
|
|
30
|
+
}
|
|
31
|
+
return field;
|
|
32
|
+
});
|
|
33
|
+
const filter = findFilter(filterRegistry, key);
|
|
34
|
+
filters.push({
|
|
35
|
+
operation: filter.operation,
|
|
36
|
+
compareValue: data.value,
|
|
37
|
+
filter,
|
|
38
|
+
transformValue,
|
|
39
|
+
paths,
|
|
40
|
+
negate: false
|
|
41
|
+
});
|
|
42
|
+
return filters;
|
|
43
|
+
}
|
|
44
|
+
const { field, operation, negate } = extractWhereArgs(key);
|
|
45
|
+
const filter = findFilter(filterRegistry, operation);
|
|
46
|
+
const fieldPlugin = fields.find((plugin)=>plugin.getField() === field);
|
|
47
|
+
let path = field;
|
|
48
|
+
let transformValue;
|
|
40
49
|
if (fieldPlugin) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
return fieldPlugin.getPath();
|
|
50
|
+
transformValue = (value)=>fieldPlugin.transformValue(value);
|
|
51
|
+
path = fieldPlugin.getPath();
|
|
45
52
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
const {
|
|
60
|
-
field,
|
|
61
|
-
operation,
|
|
62
|
-
negate
|
|
63
|
-
} = extractWhereArgs(key);
|
|
64
|
-
const filter = findFilter(filterRegistry, operation);
|
|
65
|
-
const fieldPlugin = fields.find(plugin => plugin.getField() === field);
|
|
66
|
-
let path = field;
|
|
67
|
-
let transformValue = undefined;
|
|
68
|
-
if (fieldPlugin) {
|
|
69
|
-
transformValue = value => {
|
|
70
|
-
return fieldPlugin.transformValue(value);
|
|
71
|
-
};
|
|
72
|
-
path = fieldPlugin.getPath();
|
|
73
|
-
}
|
|
74
|
-
filters.push({
|
|
75
|
-
operation: filter.operation,
|
|
76
|
-
compareValue,
|
|
77
|
-
filter,
|
|
78
|
-
transformValue,
|
|
79
|
-
paths: [path],
|
|
80
|
-
negate
|
|
81
|
-
});
|
|
82
|
-
return filters;
|
|
83
|
-
}, []);
|
|
53
|
+
filters.push({
|
|
54
|
+
operation: filter.operation,
|
|
55
|
+
compareValue,
|
|
56
|
+
filter,
|
|
57
|
+
transformValue,
|
|
58
|
+
paths: [
|
|
59
|
+
path
|
|
60
|
+
],
|
|
61
|
+
negate
|
|
62
|
+
});
|
|
63
|
+
return filters;
|
|
64
|
+
}, []);
|
|
84
65
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const transform = (value, transformValue) => {
|
|
90
|
-
if (!transformValue) {
|
|
91
|
-
return value;
|
|
92
|
-
}
|
|
93
|
-
if (Array.isArray(value)) {
|
|
94
|
-
return value.map(v => transformValue(v));
|
|
95
|
-
}
|
|
96
|
-
return transformValue(value);
|
|
66
|
+
const transform = (value, transformValue)=>{
|
|
67
|
+
if (!transformValue) return value;
|
|
68
|
+
if (Array.isArray(value)) return value.map((v)=>transformValue(v));
|
|
69
|
+
return transformValue(value);
|
|
97
70
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const matched = filter.filter.matches({
|
|
117
|
-
value,
|
|
118
|
-
compareValue
|
|
119
|
-
});
|
|
120
|
-
return filter.negate ? !matched : matched;
|
|
121
|
-
});
|
|
122
|
-
if (result === false) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
};
|
|
71
|
+
const createFilterCallable = (params)=>{
|
|
72
|
+
const filters = createFilters(params);
|
|
73
|
+
if (0 === filters.length) return null;
|
|
74
|
+
return (item)=>{
|
|
75
|
+
for (const filter of filters){
|
|
76
|
+
const result = filter.paths.some((path)=>{
|
|
77
|
+
const value = transform(__rspack_external_dot_prop_de53db47.getProperty(item, path), filter.transformValue);
|
|
78
|
+
const compareValue = transform(filter.compareValue, filter.transformValue);
|
|
79
|
+
const matched = filter.filter.matches({
|
|
80
|
+
value,
|
|
81
|
+
compareValue
|
|
82
|
+
});
|
|
83
|
+
return filter.negate ? !matched : matched;
|
|
84
|
+
});
|
|
85
|
+
if (false === result) return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
};
|
|
128
89
|
};
|
|
90
|
+
export { createFilterCallable, createFilters };
|
|
129
91
|
|
|
130
92
|
//# sourceMappingURL=createFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/FilterUtil/createFilters.js","sources":["../../../src/feature/FilterUtil/createFilters.ts"],"sourcesContent":["import * as dotProp from \"dot-prop\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { FieldPlugin } from \"~/plugins/definitions/FieldPlugin.js\";\nimport type { DynamoDbContainsFilter } from \"~/types.js\";\nimport type { ValueFilter, ValueFilterRegistry } from \"~/feature/ValueFilter/index.js\";\nimport { extractWhereArgs } from \"./extractWhereArgs.js\";\n\ntype TransformValue = (value: any) => any;\n\ninterface Filter {\n operation: string;\n compareValue: any;\n filter: ValueFilter.Interface;\n transformValue?: TransformValue;\n paths: string[];\n negate: boolean;\n}\n\ninterface CreateFiltersParams {\n filterRegistry: ValueFilterRegistry.Interface;\n where: Record<string, any>;\n fields: FieldPlugin[];\n}\n\nconst findFilter = (\n registry: ValueFilterRegistry.Interface,\n operation: string\n): ValueFilter.Interface => {\n const filter = registry.get(operation);\n if (filter) {\n return filter;\n }\n throw new WebinyError(`Missing filter plugin definition.`, \"FILTER_PLUGIN_ERROR\", {\n operation\n });\n};\n\nconst multiSearchFieldOperations = [\"contains\", \"fuzzy\"];\n\nexport const createFilters = (params: CreateFiltersParams): Filter[] => {\n const { where, fields, filterRegistry } = params;\n\n const keys = Object.keys(where);\n /**\n * Skip everything if there are no conditions to be applied.\n */\n if (keys.length === 0) {\n return [];\n }\n\n return keys.reduce((filters, key) => {\n const compareValue = where[key];\n if (compareValue === undefined) {\n return filters;\n }\n /**\n * @see DynamoDbContainsFilter\n */\n if (multiSearchFieldOperations.includes(key) === true) {\n const data: DynamoDbContainsFilter = compareValue;\n let transformValue: TransformValue | undefined = undefined;\n const paths = data.fields.map(field => {\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n return fieldPlugin.getPath();\n }\n return field;\n });\n\n const filter = findFilter(filterRegistry, key);\n filters.push({\n operation: filter.operation,\n compareValue: data.value,\n filter,\n transformValue,\n paths,\n negate: false\n });\n return filters;\n }\n\n const { field, operation, negate } = extractWhereArgs(key);\n\n const filter = findFilter(filterRegistry, operation);\n\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n let path: string = field;\n let transformValue: TransformValue | undefined = undefined;\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n path = fieldPlugin.getPath();\n }\n\n filters.push({\n operation: filter.operation,\n compareValue,\n filter,\n transformValue,\n paths: [path],\n negate\n });\n\n return filters;\n }, [] as Filter[]);\n};\n\n/**\n * Transforms the value with given transformer callable.\n */\nconst transform = (value: any, transformValue?: TransformValue): any => {\n if (!transformValue) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(v => transformValue(v));\n }\n return transformValue(value);\n};\n\n/**\n * Creates a filter callable that we can send to the .filter() method of the array.\n */\nexport const createFilterCallable = (\n params: CreateFiltersParams\n): ((item: any) => boolean) | null => {\n const filters = createFilters(params);\n /**\n * Just return null so there are no filters to be applied.\n * Later in the code we check for null so we do not loop through the items.\n */\n if (filters.length === 0) {\n return null;\n }\n\n return (item: any) => {\n for (const filter of filters) {\n const result = filter.paths.some(path => {\n const value = transform(dotProp.getProperty(item, path), filter.transformValue);\n const compareValue = transform(filter.compareValue, filter.transformValue);\n const matched = filter.filter.matches({\n value,\n compareValue\n });\n\n return filter.negate ? !matched : matched;\n });\n if (result === false) {\n return false;\n }\n }\n return true;\n };\n};\n"],"names":["findFilter","registry","operation","filter","WebinyError","multiSearchFieldOperations","createFilters","params","where","fields","filterRegistry","keys","Object","filters","key","compareValue","undefined","data","transformValue","paths","field","fieldPlugin","plugin","value","negate","extractWhereArgs","path","transform","Array","v","createFilterCallable","item","result","dotProp","matched"],"mappings":";;;AAwBA,MAAMA,aAAa,CACfC,UACAC;IAEA,MAAMC,SAASF,SAAS,GAAG,CAACC;IAC5B,IAAIC,QACA,OAAOA;IAEX,MAAM,IAAIC,YAAY,qCAAqC,uBAAuB;QAC9EF;IACJ;AACJ;AAEA,MAAMG,6BAA6B;IAAC;IAAY;CAAQ;AAEjD,MAAMC,gBAAgB,CAACC;IAC1B,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,cAAc,EAAE,GAAGH;IAE1C,MAAMI,OAAOC,OAAO,IAAI,CAACJ;IAIzB,IAAIG,AAAgB,MAAhBA,KAAK,MAAM,EACX,OAAO,EAAE;IAGb,OAAOA,KAAK,MAAM,CAAC,CAACE,SAASC;QACzB,MAAMC,eAAeP,KAAK,CAACM,IAAI;QAC/B,IAAIC,AAAiBC,WAAjBD,cACA,OAAOF;QAKX,IAAIR,AAA6C,SAA7CA,2BAA2B,QAAQ,CAACS,MAAe;YACnD,MAAMG,OAA+BF;YACrC,IAAIG;YACJ,MAAMC,QAAQF,KAAK,MAAM,CAAC,GAAG,CAACG,CAAAA;gBAC1B,MAAMC,cAAcZ,OAAO,IAAI,CAACa,CAAAA,SAAUA,OAAO,QAAQ,OAAOF;gBAChE,IAAIC,aAAa;oBACbH,iBAAiB,CAACK,QACPF,YAAY,cAAc,CAACE;oBAEtC,OAAOF,YAAY,OAAO;gBAC9B;gBACA,OAAOD;YACX;YAEA,MAAMjB,SAASH,WAAWU,gBAAgBI;YAC1CD,QAAQ,IAAI,CAAC;gBACT,WAAWV,OAAO,SAAS;gBAC3B,cAAcc,KAAK,KAAK;gBACxBd;gBACAe;gBACAC;gBACA,QAAQ;YACZ;YACA,OAAON;QACX;QAEA,MAAM,EAAEO,KAAK,EAAElB,SAAS,EAAEsB,MAAM,EAAE,GAAGC,iBAAiBX;QAEtD,MAAMX,SAASH,WAAWU,gBAAgBR;QAE1C,MAAMmB,cAAcZ,OAAO,IAAI,CAACa,CAAAA,SAAUA,OAAO,QAAQ,OAAOF;QAChE,IAAIM,OAAeN;QACnB,IAAIF;QACJ,IAAIG,aAAa;YACbH,iBAAiB,CAACK,QACPF,YAAY,cAAc,CAACE;YAEtCG,OAAOL,YAAY,OAAO;QAC9B;QAEAR,QAAQ,IAAI,CAAC;YACT,WAAWV,OAAO,SAAS;YAC3BY;YACAZ;YACAe;YACA,OAAO;gBAACQ;aAAK;YACbF;QACJ;QAEA,OAAOX;IACX,GAAG,EAAE;AACT;AAKA,MAAMc,YAAY,CAACJ,OAAYL;IAC3B,IAAI,CAACA,gBACD,OAAOK;IAEX,IAAIK,MAAM,OAAO,CAACL,QACd,OAAOA,MAAM,GAAG,CAACM,CAAAA,IAAKX,eAAeW;IAEzC,OAAOX,eAAeK;AAC1B;AAKO,MAAMO,uBAAuB,CAChCvB;IAEA,MAAMM,UAAUP,cAAcC;IAK9B,IAAIM,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAO;IAGX,OAAO,CAACkB;QACJ,KAAK,MAAM5B,UAAUU,QAAS;YAC1B,MAAMmB,SAAS7B,OAAO,KAAK,CAAC,IAAI,CAACuB,CAAAA;gBAC7B,MAAMH,QAAQI,UAAUM,oCAAAA,WAAmB,CAACF,MAAML,OAAOvB,OAAO,cAAc;gBAC9E,MAAMY,eAAeY,UAAUxB,OAAO,YAAY,EAAEA,OAAO,cAAc;gBACzE,MAAM+B,UAAU/B,OAAO,MAAM,CAAC,OAAO,CAAC;oBAClCoB;oBACAR;gBACJ;gBAEA,OAAOZ,OAAO,MAAM,GAAG,CAAC+B,UAAUA;YACtC;YACA,IAAIF,AAAW,UAAXA,QACA,OAAO;QAEf;QACA,OAAO;IACX;AACJ"}
|
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
const extractWhereArgs = (key)=>{
|
|
2
|
+
const result = key.split("_");
|
|
3
|
+
const field = result.shift();
|
|
4
|
+
const rawOp = 0 === result.length ? "eq" : result.join("_");
|
|
5
|
+
if ("not" === rawOp) return {
|
|
6
|
+
field,
|
|
7
|
+
operation: "eq",
|
|
8
|
+
negate: true
|
|
9
|
+
};
|
|
10
|
+
const negate = null !== rawOp.match("not_");
|
|
11
|
+
const operation = rawOp.replace("not_", "");
|
|
9
12
|
return {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
field,
|
|
14
|
+
operation,
|
|
15
|
+
negate
|
|
13
16
|
};
|
|
14
|
-
}
|
|
15
|
-
const negate = rawOp.match("not_") !== null;
|
|
16
|
-
const operation = rawOp.replace("not_", "");
|
|
17
|
-
return {
|
|
18
|
-
field,
|
|
19
|
-
operation,
|
|
20
|
-
negate
|
|
21
|
-
};
|
|
22
17
|
};
|
|
18
|
+
export { extractWhereArgs };
|
|
23
19
|
|
|
24
20
|
//# sourceMappingURL=extractWhereArgs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/FilterUtil/extractWhereArgs.js","sources":["../../../src/feature/FilterUtil/extractWhereArgs.ts"],"sourcesContent":["interface ExtractWhereArgsResult {\n field: string;\n operation: string;\n negate: boolean;\n}\n\nexport const extractWhereArgs = (key: string): ExtractWhereArgsResult => {\n const result = key.split(\"_\");\n const field = result.shift() as string;\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n field,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return {\n field,\n operation,\n negate\n };\n};\n"],"names":["extractWhereArgs","key","result","field","rawOp","negate","operation"],"mappings":"AAMO,MAAMA,mBAAmB,CAACC;IAC7B,MAAMC,SAASD,IAAI,KAAK,CAAC;IACzB,MAAME,QAAQD,OAAO,KAAK;IAC1B,MAAME,QAAQF,AAAkB,MAAlBA,OAAO,MAAM,GAAS,OAAOA,OAAO,IAAI,CAAC;IAIvD,IAAIE,AAAU,UAAVA,OACA,OAAO;QACHD;QACA,WAAW;QACX,QAAQ;IACZ;IAEJ,MAAME,SAASD,AAAwB,SAAxBA,MAAM,KAAK,CAAC;IAC3B,MAAME,YAAYF,MAAM,OAAO,CAAC,QAAQ;IACxC,OAAO;QACHD;QACAG;QACAD;IACJ;AACJ"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { FilterUtil } from "./FilterUtil.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const FilterUtilFeature = createFeature({
|
|
4
|
+
name: "Db/DynamoDB/FilterUtilFeature",
|
|
5
|
+
register: (container)=>{
|
|
6
|
+
container.register(FilterUtil);
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { FilterUtilFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/FilterUtil/feature.js","sources":["../../../src/feature/FilterUtil/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { FilterUtil } from \"./FilterUtil.js\";\n\nexport const FilterUtilFeature = createFeature({\n name: \"Db/DynamoDB/FilterUtilFeature\",\n register: container => {\n container.register(FilterUtil);\n }\n});\n"],"names":["FilterUtilFeature","createFeature","container","FilterUtil"],"mappings":";;AAGO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAAUC,CAAAA;QACNA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import { ValueFilterRegistry
|
|
1
|
+
import { ValueFilterRegistry } from "./abstractions/ValueFilterRegistry.js";
|
|
2
2
|
import { ValueFilter } from "./abstractions/ValueFilter.js";
|
|
3
3
|
class ValueFilterRegistryImpl {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return this.filters;
|
|
14
|
-
}
|
|
4
|
+
constructor(filters){
|
|
5
|
+
this.filters = filters;
|
|
6
|
+
}
|
|
7
|
+
get(operation) {
|
|
8
|
+
return this.filters.find((filter)=>filter.is(operation));
|
|
9
|
+
}
|
|
10
|
+
getAll() {
|
|
11
|
+
return this.filters;
|
|
12
|
+
}
|
|
15
13
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const ValueFilterRegistry_ValueFilterRegistry = ValueFilterRegistry.createImplementation({
|
|
15
|
+
implementation: ValueFilterRegistryImpl,
|
|
16
|
+
dependencies: [
|
|
17
|
+
[
|
|
18
|
+
ValueFilter,
|
|
19
|
+
{
|
|
20
|
+
multiple: true
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
]
|
|
21
24
|
});
|
|
25
|
+
export { ValueFilterRegistry_ValueFilterRegistry as ValueFilterRegistry };
|
|
22
26
|
|
|
23
27
|
//# sourceMappingURL=ValueFilterRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/ValueFilter/ValueFilterRegistry.js","sources":["../../../src/feature/ValueFilter/ValueFilterRegistry.ts"],"sourcesContent":["import { ValueFilterRegistry as Abstraction } from \"./abstractions/ValueFilterRegistry.js\";\nimport { ValueFilter } from \"./abstractions/ValueFilter.js\";\n\nclass ValueFilterRegistryImpl implements Abstraction.Interface {\n public constructor(private readonly filters: ValueFilter.Interface[]) {}\n\n public get(operation: string): ValueFilter.Interface | undefined {\n return this.filters.find(filter => {\n return filter.is(operation);\n });\n }\n\n public getAll(): ValueFilter.Interface[] {\n return this.filters;\n }\n}\n\nexport const ValueFilterRegistry = Abstraction.createImplementation({\n implementation: ValueFilterRegistryImpl,\n dependencies: [[ValueFilter, { multiple: true }]]\n});\n"],"names":["ValueFilterRegistryImpl","filters","operation","filter","ValueFilterRegistry","Abstraction","ValueFilter"],"mappings":";;AAGA,MAAMA;IACF,YAAoCC,OAAgC,CAAE;aAAlCA,OAAO,GAAPA;IAAmC;IAEhE,IAAIC,SAAiB,EAAqC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAACC,CAAAA,SACdA,OAAO,EAAE,CAACD;IAEzB;IAEO,SAAkC;QACrC,OAAO,IAAI,CAAC,OAAO;IACvB;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBL;IAChB,cAAc;QAAC;YAACM;YAAa;gBAAE,UAAU;YAAK;SAAE;KAAC;AACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/ValueFilter/abstractions/ValueFilter.js","sources":["../../../../src/feature/ValueFilter/abstractions/ValueFilter.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\nexport interface IValueFilterCanUseParams<TValue = any, TCompareValue = any> {\n value: TValue;\n compareValue: TCompareValue;\n}\n\nexport interface IValueFilterMatchesParams<TValue = any, TCompareValue = any> {\n value: TValue;\n compareValue: TCompareValue;\n}\n\nexport type IValueFilterMatchesResult = boolean;\n\nexport interface IValueFilter<TValue = any, TCompareValue = any> {\n readonly operation: string;\n is(operation: string): boolean;\n canUse(params: IValueFilterCanUseParams): boolean;\n matches(params: IValueFilterMatchesParams<TValue, TCompareValue>): IValueFilterMatchesResult;\n}\n\nexport const ValueFilter = createAbstraction<IValueFilter>(\"Db/DynamoDB/ValueFilter\");\n\nexport namespace ValueFilter {\n export type Interface<TValue = any, TCompareValue = any> = IValueFilter<TValue, TCompareValue>;\n export type CanUseParams = IValueFilterCanUseParams;\n export type MatchesParams = IValueFilterMatchesParams;\n export type Result = IValueFilterMatchesResult;\n}\n"],"names":["ValueFilter","createAbstraction"],"mappings":";AAqBO,MAAMA,cAAcC,kBAAgC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
2
|
+
const ValueFilterRegistry = createAbstraction("Db/DynamoDB/ValueFilterRegistry");
|
|
3
|
+
export { ValueFilterRegistry };
|
|
3
4
|
|
|
4
5
|
//# sourceMappingURL=ValueFilterRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/ValueFilter/abstractions/ValueFilterRegistry.js","sources":["../../../../src/feature/ValueFilter/abstractions/ValueFilterRegistry.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ValueFilter } from \"./ValueFilter.js\";\n\nexport interface IValueFilterRegistry {\n get(operation: string): ValueFilter.Interface | undefined;\n getAll(): ValueFilter.Interface[];\n}\n\nexport const ValueFilterRegistry = createAbstraction<IValueFilterRegistry>(\n \"Db/DynamoDB/ValueFilterRegistry\"\n);\n\nexport namespace ValueFilterRegistry {\n export type Interface = IValueFilterRegistry;\n export type Filter = ValueFilter.Interface;\n}\n"],"names":["ValueFilterRegistry","createAbstraction"],"mappings":";AAQO,MAAMA,sBAAsBC,kBAC/B"}
|
|
@@ -11,22 +11,23 @@ import { ContainsFilter } from "./filters/ContainsFilter.js";
|
|
|
11
11
|
import { FuzzyFilter } from "./filters/FuzzyFilter.js";
|
|
12
12
|
import { StartsWithFilter } from "./filters/StartsWithFilter.js";
|
|
13
13
|
import { ValueFilterRegistry } from "./ValueFilterRegistry.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
14
|
+
const ValueFilterFeature = createFeature({
|
|
15
|
+
name: "Db/DynamoDB/ValueFilterFeature",
|
|
16
|
+
register: (container)=>{
|
|
17
|
+
container.register(EqFilter);
|
|
18
|
+
container.register(GtFilter);
|
|
19
|
+
container.register(GteFilter);
|
|
20
|
+
container.register(LtFilter);
|
|
21
|
+
container.register(LteFilter);
|
|
22
|
+
container.register(BetweenFilter);
|
|
23
|
+
container.register(InFilter);
|
|
24
|
+
container.register(AndInFilter);
|
|
25
|
+
container.register(ContainsFilter);
|
|
26
|
+
container.register(FuzzyFilter);
|
|
27
|
+
container.register(StartsWithFilter);
|
|
28
|
+
container.register(ValueFilterRegistry);
|
|
29
|
+
}
|
|
30
30
|
});
|
|
31
|
+
export { ValueFilterFeature };
|
|
31
32
|
|
|
32
33
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/ValueFilter/feature.js","sources":["../../../src/feature/ValueFilter/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { EqFilter } from \"./filters/EqFilter.js\";\nimport { GtFilter } from \"./filters/GtFilter.js\";\nimport { GteFilter } from \"./filters/GteFilter.js\";\nimport { LtFilter } from \"./filters/LtFilter.js\";\nimport { LteFilter } from \"./filters/LteFilter.js\";\nimport { BetweenFilter } from \"./filters/BetweenFilter.js\";\nimport { InFilter } from \"./filters/InFilter.js\";\nimport { AndInFilter } from \"./filters/AndInFilter.js\";\nimport { ContainsFilter } from \"./filters/ContainsFilter.js\";\nimport { FuzzyFilter } from \"./filters/FuzzyFilter.js\";\nimport { StartsWithFilter } from \"./filters/StartsWithFilter.js\";\nimport { ValueFilterRegistry } from \"./ValueFilterRegistry.js\";\n\nexport const ValueFilterFeature = createFeature({\n name: \"Db/DynamoDB/ValueFilterFeature\",\n register: container => {\n container.register(EqFilter);\n container.register(GtFilter);\n container.register(GteFilter);\n container.register(LtFilter);\n container.register(LteFilter);\n container.register(BetweenFilter);\n container.register(InFilter);\n container.register(AndInFilter);\n container.register(ContainsFilter);\n container.register(FuzzyFilter);\n container.register(StartsWithFilter);\n container.register(ValueFilterRegistry);\n }\n});\n"],"names":["ValueFilterFeature","createFeature","container","EqFilter","GtFilter","GteFilter","LtFilter","LteFilter","BetweenFilter","InFilter","AndInFilter","ContainsFilter","FuzzyFilter","StartsWithFilter","ValueFilterRegistry"],"mappings":";;;;;;;;;;;;;AAcO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAAUC,CAAAA;QACNA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QACnBR,UAAU,QAAQ,CAACS;QACnBT,UAAU,QAAQ,CAACU;QACnBV,UAAU,QAAQ,CAACW;QACnBX,UAAU,QAAQ,CAACY;IACvB;AACJ"}
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import { WebinyError } from "@webiny/error";
|
|
2
2
|
import { ValueFilter } from "../abstractions/ValueFilter.js";
|
|
3
3
|
class AndInFilterImpl {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return this.operation === operation;
|
|
7
|
-
}
|
|
8
|
-
canUse() {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
matches({
|
|
12
|
-
value,
|
|
13
|
-
compareValue
|
|
14
|
-
}) {
|
|
15
|
-
if (!compareValue || Array.isArray(compareValue) === false) {
|
|
16
|
-
throw new WebinyError(`The value given as "compareValue" must be an array!`, "COMPARE_VALUE_ERROR", {
|
|
17
|
-
value,
|
|
18
|
-
compareValue
|
|
19
|
-
});
|
|
4
|
+
is(operation) {
|
|
5
|
+
return this.operation === operation;
|
|
20
6
|
}
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
canUse() {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
matches({ value, compareValue }) {
|
|
11
|
+
if (!compareValue || false === Array.isArray(compareValue)) throw new WebinyError('The value given as "compareValue" must be an array!', "COMPARE_VALUE_ERROR", {
|
|
12
|
+
value,
|
|
13
|
+
compareValue
|
|
14
|
+
});
|
|
15
|
+
if (true === Array.isArray(value)) return compareValue.every((c)=>value.includes(c));
|
|
16
|
+
return compareValue.includes(value);
|
|
17
|
+
}
|
|
18
|
+
constructor(){
|
|
19
|
+
this.operation = "and_in";
|
|
23
20
|
}
|
|
24
|
-
return compareValue.includes(value);
|
|
25
|
-
}
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const AndInFilter = ValueFilter.createImplementation({
|
|
23
|
+
implementation: AndInFilterImpl,
|
|
24
|
+
dependencies: []
|
|
30
25
|
});
|
|
26
|
+
export { AndInFilter };
|
|
31
27
|
|
|
32
28
|
//# sourceMappingURL=AndInFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"feature/ValueFilter/filters/AndInFilter.js","sources":["../../../../src/feature/ValueFilter/filters/AndInFilter.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { ValueFilter } from \"../abstractions/ValueFilter.js\";\n\nclass AndInFilterImpl implements ValueFilter.Interface {\n public readonly operation = \"and_in\";\n\n public is(operation: string): boolean {\n return this.operation === operation;\n }\n\n public canUse(): boolean {\n return true;\n }\n\n public matches({ value, compareValue }: ValueFilter.MatchesParams): ValueFilter.Result {\n if (!compareValue || Array.isArray(compareValue) === false) {\n throw new WebinyError(\n `The value given as \"compareValue\" must be an array!`,\n \"COMPARE_VALUE_ERROR\",\n {\n value,\n compareValue\n }\n );\n }\n if (Array.isArray(value) === true) {\n return compareValue.every((c: any) => value.includes(c));\n }\n return compareValue.includes(value);\n }\n}\n\nexport const AndInFilter = ValueFilter.createImplementation({\n implementation: AndInFilterImpl,\n dependencies: []\n});\n"],"names":["AndInFilterImpl","operation","value","compareValue","Array","WebinyError","c","AndInFilter","ValueFilter"],"mappings":";;AAGA,MAAMA;IAGK,GAAGC,SAAiB,EAAW;QAClC,OAAO,IAAI,CAAC,SAAS,KAAKA;IAC9B;IAEO,SAAkB;QACrB,OAAO;IACX;IAEO,QAAQ,EAAEC,KAAK,EAAEC,YAAY,EAA6B,EAAsB;QACnF,IAAI,CAACA,gBAAgBC,AAAgC,UAAhCA,MAAM,OAAO,CAACD,eAC/B,MAAM,IAAIE,YACN,uDACA,uBACA;YACIH;YACAC;QACJ;QAGR,IAAIC,AAAyB,SAAzBA,MAAM,OAAO,CAACF,QACd,OAAOC,aAAa,KAAK,CAAC,CAACG,IAAWJ,MAAM,QAAQ,CAACI;QAEzD,OAAOH,aAAa,QAAQ,CAACD;IACjC;;aAzBgB,SAAS,GAAG;;AA0BhC;AAEO,MAAMK,cAAcC,YAAY,oBAAoB,CAAC;IACxD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|