eservices-back-core 2.0.34 → 2.0.36
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/Server.d.ts +0 -2
- package/dist/Server.d.ts.map +1 -1
- package/dist/Server.js.map +1 -1
- package/dist/auth/use-auth.d.ts +1 -2
- package/dist/auth/use-auth.d.ts.map +1 -1
- package/dist/middleware/auth-middleware.d.ts +1 -1
- package/dist/model/Filter.d.ts +135 -0
- package/dist/model/Filter.d.ts.map +1 -0
- package/dist/model/Filter.js +236 -0
- package/dist/model/Filter.js.map +1 -0
- package/dist/model/filter-config.d.ts +69 -0
- package/dist/model/filter-config.d.ts.map +1 -0
- package/dist/model/filter-config.js +146 -0
- package/dist/model/filter-config.js.map +1 -0
- package/dist/services/list-setting-service.d.ts +5 -3
- package/dist/services/list-setting-service.d.ts.map +1 -1
- package/dist/services/list-setting-service.js +111 -101
- package/dist/services/list-setting-service.js.map +1 -1
- package/dist/socket/events/entity_read.d.ts +8 -0
- package/dist/socket/events/entity_read.d.ts.map +1 -1
- package/dist/socket/events/entity_read.js +20 -0
- package/dist/socket/events/entity_read.js.map +1 -1
- package/dist/store/custom-filters-store.d.ts +7 -0
- package/dist/store/custom-filters-store.d.ts.map +1 -0
- package/dist/store/custom-filters-store.js +29 -0
- package/dist/store/custom-filters-store.js.map +1 -0
- package/dist/store/filters-store.d.ts +7 -0
- package/dist/store/filters-store.d.ts.map +1 -0
- package/dist/store/filters-store.js +28 -0
- package/dist/store/filters-store.js.map +1 -0
- package/dist/templates/error.html +4 -3
- package/dist/utils/Filter.d.ts +1 -0
- package/dist/utils/Filter.d.ts.map +1 -1
- package/dist/utils/Filter.js +1 -0
- package/dist/utils/Filter.js.map +1 -1
- package/dist/utils/get-extend-customer-filters.d.ts +1 -0
- package/dist/utils/get-extend-customer-filters.d.ts.map +1 -1
- package/dist/utils/get-extend-customer-filters.js +2 -1
- package/dist/utils/get-extend-customer-filters.js.map +1 -1
- package/dist/utils/get-required-attribute-values.d.ts +11 -0
- package/dist/utils/get-required-attribute-values.d.ts.map +1 -0
- package/dist/utils/get-required-attribute-values.js +46 -0
- package/dist/utils/get-required-attribute-values.js.map +1 -0
- package/dist/utils/use-config.d.ts.map +1 -1
- package/dist/utils/use-config.js +42 -17
- package/dist/utils/use-config.js.map +1 -1
- package/package.json +3 -2
package/dist/Server.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node/http" />
|
|
3
|
-
/// <reference types="got/dist/source/core/utils/timed-out" />
|
|
4
2
|
import { Express, Router } from "express";
|
|
5
3
|
import { Server as HTTPServer } from 'http';
|
|
6
4
|
import CoreSocketServer from "./socket/core-socket-server";
|
package/dist/Server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";AAAA,OAAgB,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AACjD,OAAa,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAQhD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAC,yBAAyB,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAQzF,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,MAAM,EAAE,aAAa,CAAA;IAErB;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAA;IAExB,IAAI,SAAS,WAEZ;IAED,MAAM,KAAK,IAAI,WAEd;IACD,MAAM,KAAK,KAAK,YAKf;IACD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,CAAC,SAAS,IAAI,MAAM;gBAGd,MAAM,EAAE,aAAa;IAiB3B,GAAG;YAoBK,eAAe;CAgB7B;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,mBAwBvD;AAID,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/Server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/use-auth.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Client } from 'openid-client';
|
|
2
1
|
import { Request } from "express";
|
|
3
2
|
import { IAuthOptions } from "../types/auth-type";
|
|
4
3
|
import { getAuthStateFormRequest } from "./get-auth-state-form-request";
|
|
@@ -7,7 +6,7 @@ import { getAuthStateFormRequest } from "./get-auth-state-form-request";
|
|
|
7
6
|
* также для WS.
|
|
8
7
|
*/
|
|
9
8
|
export default function useAuth(options: IAuthOptions): {
|
|
10
|
-
client:
|
|
9
|
+
client: import("openid-client").BaseClient;
|
|
11
10
|
useAuthMiddleware: () => import("express-serve-static-core").Router;
|
|
12
11
|
useWSAuthMiddleware: (req: Request) => Promise<void>;
|
|
13
12
|
silentLogout: (req: Request) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"AACA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAmB,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAUlE,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AActE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,YAAY;;;+BA0JZ,OAAO;wBAqDpB,OAAO;;;;;EAuBlC;AA8DD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,UAIlD;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,UAExD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,UAE1D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="express" />
|
|
3
3
|
import { IAuthOptions } from "../types/auth-type";
|
|
4
4
|
export declare function authModule(): {
|
|
5
|
-
client: import("openid-client").
|
|
5
|
+
client: import("openid-client").BaseClient;
|
|
6
6
|
useAuthMiddleware: () => import("express-serve-static-core").Router;
|
|
7
7
|
useWSAuthMiddleware: (req: import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>) => Promise<void>;
|
|
8
8
|
silentLogout: (req: import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>) => void;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { IFilterEnum, IFilterNumber, IFilterString } from "../utils/Filter";
|
|
2
|
+
/**
|
|
3
|
+
* @description Класс предназначенный для работы с фильтрами. Предоставляет одиночные static методы
|
|
4
|
+
* при помощи, которых можно самостоятельно создать фильтр или полноценный механизм задачи фильтра
|
|
5
|
+
* через объект(Более краткий и удобный) через new.
|
|
6
|
+
*
|
|
7
|
+
* @example Using array declaration
|
|
8
|
+
* const filter = new Filter([
|
|
9
|
+
* ["eq", ["Name", "Jack"] ],
|
|
10
|
+
* ["eq", ["Age", "@age"] ]
|
|
11
|
+
* ]);
|
|
12
|
+
* const data = { age: 25 }
|
|
13
|
+
* const strFilter = filter.generate(data);
|
|
14
|
+
*
|
|
15
|
+
* @example Using array declaration
|
|
16
|
+
* const filter = new Filter([
|
|
17
|
+
* "or",
|
|
18
|
+
* [
|
|
19
|
+
* ["in", ["Status", ["A", "D"] ] ],
|
|
20
|
+
* ["in", ["Type", "$userType" ] ]
|
|
21
|
+
* ]
|
|
22
|
+
* ])
|
|
23
|
+
* const data = {
|
|
24
|
+
* userType: ["User", "Person"]
|
|
25
|
+
* }
|
|
26
|
+
* const strFilter = filter.generate(data)
|
|
27
|
+
*
|
|
28
|
+
* @example With Object
|
|
29
|
+
* const filter = new Filter({
|
|
30
|
+
* operation: "and",
|
|
31
|
+
* arguments: [
|
|
32
|
+
* {
|
|
33
|
+
* operation: "eq", arguments: ["StatusCode", "A"]
|
|
34
|
+
* },
|
|
35
|
+
* {
|
|
36
|
+
* operation: "eq", arguments: ["TypeCode", "New"]
|
|
37
|
+
* }
|
|
38
|
+
* ]
|
|
39
|
+
* })
|
|
40
|
+
* @example Use static eq function
|
|
41
|
+
* const strFilter = Filter.eq("StatusCode", "A");
|
|
42
|
+
*
|
|
43
|
+
* @example With String
|
|
44
|
+
* const filter = new Filter([
|
|
45
|
+
* "Status eq 'A'",
|
|
46
|
+
* "Type eq 'Person'"
|
|
47
|
+
* ])
|
|
48
|
+
*/
|
|
49
|
+
export default class Filter {
|
|
50
|
+
/**
|
|
51
|
+
* @description Набор доступных операций. Устанавливается напрямую программистом.
|
|
52
|
+
*/
|
|
53
|
+
static readonly AVAILABLE_OPERATION: string[];
|
|
54
|
+
static readonly ARGUMENT_SYMBOL = "$";
|
|
55
|
+
private readonly compileFn;
|
|
56
|
+
/**
|
|
57
|
+
* @description Массив обзятальных полей (без ARGUMENT_SYMBOL в начале!), который заправшиваются в конфигурации фильтра.
|
|
58
|
+
*/
|
|
59
|
+
readonly requiredArguments: string[];
|
|
60
|
+
private addRequiredArgument;
|
|
61
|
+
constructor(value: unknown);
|
|
62
|
+
/**
|
|
63
|
+
* @description Функция генерирует фильтр и возвращает строковое значение.
|
|
64
|
+
* @param data {object} Объект данных(Значения аргументов), которые будут использоватьс для полной генерации фильтра
|
|
65
|
+
*/
|
|
66
|
+
generate(data?: IArgumentsData): string;
|
|
67
|
+
/**
|
|
68
|
+
* @description Базовая функция компиляции элемента оъекта. Она разбирается в каком формате описан элемент и вызывается
|
|
69
|
+
* compileExpressionByType.
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
private compileItem;
|
|
73
|
+
/**
|
|
74
|
+
* @description В зависимости от operation, выбирается нужная функция компиляции объекта.
|
|
75
|
+
* @param {string} operation Строкове значение операции.
|
|
76
|
+
* @param attributes Набор аргументов
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
79
|
+
private compileExpressionByType;
|
|
80
|
+
private compileArray;
|
|
81
|
+
private compileEqual;
|
|
82
|
+
private compileInclude;
|
|
83
|
+
/**
|
|
84
|
+
* @description Проверяет переданное значение. Если это строка и начинается с @ вернёт true.
|
|
85
|
+
*/
|
|
86
|
+
private isRequiredCalculatedArgument;
|
|
87
|
+
private checkForRequiredCalculatedArgument;
|
|
88
|
+
/**
|
|
89
|
+
* @description Проверка на валдиность фильтрованного выражения.
|
|
90
|
+
*/
|
|
91
|
+
private isValidObjectExpression;
|
|
92
|
+
/**
|
|
93
|
+
* @description Для замены значения используется данная функция
|
|
94
|
+
* @param {string} argumentName
|
|
95
|
+
* @param availableArgumentData
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private treatArgument;
|
|
99
|
+
/**
|
|
100
|
+
* @description Not Equal(!==).
|
|
101
|
+
* @param operandName
|
|
102
|
+
* @param operandValue
|
|
103
|
+
*/
|
|
104
|
+
static notEq(operandName: string, operandValue: IFilterString | IFilterNumber): string;
|
|
105
|
+
/**
|
|
106
|
+
* @description Equal(===)
|
|
107
|
+
* @param operandName
|
|
108
|
+
* @param operandValue
|
|
109
|
+
*/
|
|
110
|
+
static eq(operandName: string, operandValue: IFilterString | IFilterNumber | IFilterEnum): string;
|
|
111
|
+
/**
|
|
112
|
+
* @description Include.
|
|
113
|
+
* @param operandName
|
|
114
|
+
* @param operandValue
|
|
115
|
+
*/
|
|
116
|
+
static in(operandName: string, operandValue: IFilterEnum): string;
|
|
117
|
+
private static combine;
|
|
118
|
+
static and(...expressions: string[]): string;
|
|
119
|
+
static or(...expressions: string[]): string;
|
|
120
|
+
static notIn(operandName: string, operandValue: unknown): string;
|
|
121
|
+
/**
|
|
122
|
+
* @description Универсальная функция для обёртки элемента.
|
|
123
|
+
* @param {string} value строкове значение, которое необходимо обернуть
|
|
124
|
+
* @param wrapSymbolStart Начальный символ обёртки
|
|
125
|
+
* @param wrapSymbolEnd Конечный символ обёртки
|
|
126
|
+
* @example just wrap with round brackets
|
|
127
|
+
* Filter.wrap('name'); // '(name)'
|
|
128
|
+
* @example just wrap with provided symbols
|
|
129
|
+
* Filter.wrap('name', '*', '*'); // '*name*'
|
|
130
|
+
*/
|
|
131
|
+
static wrap(value: string, wrapSymbolStart?: string, wrapSymbolEnd?: string): string;
|
|
132
|
+
}
|
|
133
|
+
type IArgumentsData = Record<string, any>;
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=Filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../src/model/Filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,WAAyC;IAC5E,MAAM,CAAC,QAAQ,CAAC,eAAe,OAAO;IAEtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IAErD;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAC1C,OAAO,CAAC,mBAAmB;gBAKf,KAAK,EAAE,OAAO;IAI1B;;;OAGG;IACI,QAAQ,CAAC,IAAI,GAAE,cAAmB;IAIzC;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,kCAAkC;IAK1C;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IAI7E;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW;IAKzF;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW;IAOxD,OAAO,CAAC,MAAM,CAAC,OAAO;IAUtB,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE;IAGnC,MAAM,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE;IAGlC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO;IAKvD;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,GAAE,MAAY,EAAE,aAAa,GAAE,MAAY;CAcxF;AAaD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function wrapString(str) {
|
|
4
|
+
return typeof str === 'string' ? `'${str}'` : `${str}`;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @description Класс предназначенный для работы с фильтрами. Предоставляет одиночные static методы
|
|
8
|
+
* при помощи, которых можно самостоятельно создать фильтр или полноценный механизм задачи фильтра
|
|
9
|
+
* через объект(Более краткий и удобный) через new.
|
|
10
|
+
*
|
|
11
|
+
* @example Using array declaration
|
|
12
|
+
* const filter = new Filter([
|
|
13
|
+
* ["eq", ["Name", "Jack"] ],
|
|
14
|
+
* ["eq", ["Age", "@age"] ]
|
|
15
|
+
* ]);
|
|
16
|
+
* const data = { age: 25 }
|
|
17
|
+
* const strFilter = filter.generate(data);
|
|
18
|
+
*
|
|
19
|
+
* @example Using array declaration
|
|
20
|
+
* const filter = new Filter([
|
|
21
|
+
* "or",
|
|
22
|
+
* [
|
|
23
|
+
* ["in", ["Status", ["A", "D"] ] ],
|
|
24
|
+
* ["in", ["Type", "$userType" ] ]
|
|
25
|
+
* ]
|
|
26
|
+
* ])
|
|
27
|
+
* const data = {
|
|
28
|
+
* userType: ["User", "Person"]
|
|
29
|
+
* }
|
|
30
|
+
* const strFilter = filter.generate(data)
|
|
31
|
+
*
|
|
32
|
+
* @example With Object
|
|
33
|
+
* const filter = new Filter({
|
|
34
|
+
* operation: "and",
|
|
35
|
+
* arguments: [
|
|
36
|
+
* {
|
|
37
|
+
* operation: "eq", arguments: ["StatusCode", "A"]
|
|
38
|
+
* },
|
|
39
|
+
* {
|
|
40
|
+
* operation: "eq", arguments: ["TypeCode", "New"]
|
|
41
|
+
* }
|
|
42
|
+
* ]
|
|
43
|
+
* })
|
|
44
|
+
* @example Use static eq function
|
|
45
|
+
* const strFilter = Filter.eq("StatusCode", "A");
|
|
46
|
+
*
|
|
47
|
+
* @example With String
|
|
48
|
+
* const filter = new Filter([
|
|
49
|
+
* "Status eq 'A'",
|
|
50
|
+
* "Type eq 'Person'"
|
|
51
|
+
* ])
|
|
52
|
+
*/
|
|
53
|
+
class Filter {
|
|
54
|
+
addRequiredArgument(name) {
|
|
55
|
+
this.requiredArguments.push(name);
|
|
56
|
+
}
|
|
57
|
+
constructor(value) {
|
|
58
|
+
this.compileFn = null;
|
|
59
|
+
/**
|
|
60
|
+
* @description Массив обзятальных полей (без ARGUMENT_SYMBOL в начале!), который заправшиваются в конфигурации фильтра.
|
|
61
|
+
*/
|
|
62
|
+
this.requiredArguments = [];
|
|
63
|
+
this.compileFn = this.compileItem(value);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @description Функция генерирует фильтр и возвращает строковое значение.
|
|
67
|
+
* @param data {object} Объект данных(Значения аргументов), которые будут использоватьс для полной генерации фильтра
|
|
68
|
+
*/
|
|
69
|
+
generate(data = {}) {
|
|
70
|
+
return this.compileFn(data);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @description Базовая функция компиляции элемента оъекта. Она разбирается в каком формате описан элемент и вызывается
|
|
74
|
+
* compileExpressionByType.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
compileItem(item) {
|
|
78
|
+
if (Array.isArray(item)) {
|
|
79
|
+
return (Filter.AVAILABLE_OPERATION.includes(item[0]))
|
|
80
|
+
? this.compileExpressionByType(item[0], item[1])
|
|
81
|
+
: this.compileExpressionByType('and', item);
|
|
82
|
+
}
|
|
83
|
+
else if (typeof item === 'string') {
|
|
84
|
+
return () => item;
|
|
85
|
+
}
|
|
86
|
+
else if (this.isValidObjectExpression(item))
|
|
87
|
+
return this.compileExpressionByType(item.operation, item.arguments);
|
|
88
|
+
else {
|
|
89
|
+
throw new Error(`Unknown filter item ${JSON.stringify(item)}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description В зависимости от operation, выбирается нужная функция компиляции объекта.
|
|
94
|
+
* @param {string} operation Строкове значение операции.
|
|
95
|
+
* @param attributes Набор аргументов
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
compileExpressionByType(operation, attributes) {
|
|
99
|
+
switch (operation) {
|
|
100
|
+
case 'and':
|
|
101
|
+
case 'or': {
|
|
102
|
+
if (!Array.isArray(attributes))
|
|
103
|
+
throw new Error(`Filter Config: with "and" should be provided array data.`);
|
|
104
|
+
return this.compileArray(operation, attributes);
|
|
105
|
+
}
|
|
106
|
+
case 'eq': return this.compileEqual(attributes[0], attributes[1]);
|
|
107
|
+
case 'in': return this.compileInclude(attributes[0], attributes[1]);
|
|
108
|
+
default: throw new Error(`filter-config: Unknown operation '${operation}'`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
compileArray(combineType, data) {
|
|
112
|
+
const arrayCompileItems = data.map(item => this.compileItem(item));
|
|
113
|
+
return (compileValues) => Filter.combine(combineType, arrayCompileItems.map(fn => fn(compileValues)));
|
|
114
|
+
}
|
|
115
|
+
compileEqual(field, value) {
|
|
116
|
+
this.checkForRequiredCalculatedArgument(value);
|
|
117
|
+
return (data) => Filter.eq(field, this.treatArgument(value, data));
|
|
118
|
+
}
|
|
119
|
+
compileInclude(field, value) {
|
|
120
|
+
this.checkForRequiredCalculatedArgument(value);
|
|
121
|
+
return (data) => Filter.in(field, this.treatArgument(value, data));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @description Проверяет переданное значение. Если это строка и начинается с @ вернёт true.
|
|
125
|
+
*/
|
|
126
|
+
isRequiredCalculatedArgument(argumentName) {
|
|
127
|
+
return (typeof argumentName === 'string' && argumentName.startsWith(Filter.ARGUMENT_SYMBOL));
|
|
128
|
+
}
|
|
129
|
+
checkForRequiredCalculatedArgument(argumentName) {
|
|
130
|
+
if (!this.isRequiredCalculatedArgument(argumentName))
|
|
131
|
+
return;
|
|
132
|
+
this.addRequiredArgument(argumentName.slice(1));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description Проверка на валдиность фильтрованного выражения.
|
|
136
|
+
*/
|
|
137
|
+
isValidObjectExpression(expression) {
|
|
138
|
+
if (!(typeof expression === 'object' && expression !== null))
|
|
139
|
+
return false;
|
|
140
|
+
return Filter.AVAILABLE_OPERATION.includes(expression.operation);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @description Для замены значения используется данная функция
|
|
144
|
+
* @param {string} argumentName
|
|
145
|
+
* @param availableArgumentData
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
148
|
+
treatArgument(argumentName, availableArgumentData) {
|
|
149
|
+
if (!this.isRequiredCalculatedArgument(argumentName))
|
|
150
|
+
return argumentName;
|
|
151
|
+
return availableArgumentData[argumentName.slice(1)];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @description Not Equal(!==).
|
|
155
|
+
* @param operandName
|
|
156
|
+
* @param operandValue
|
|
157
|
+
*/
|
|
158
|
+
static notEq(operandName, operandValue) {
|
|
159
|
+
return `@${operandName} nq ${wrapString(operandValue)}`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* @description Equal(===)
|
|
163
|
+
* @param operandName
|
|
164
|
+
* @param operandValue
|
|
165
|
+
*/
|
|
166
|
+
static eq(operandName, operandValue) {
|
|
167
|
+
if (Array.isArray(operandValue))
|
|
168
|
+
return Filter.in(operandName, operandValue);
|
|
169
|
+
return `@${operandName} eq ${wrapString(operandValue)}`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @description Include.
|
|
173
|
+
* @param operandName
|
|
174
|
+
* @param operandValue
|
|
175
|
+
*/
|
|
176
|
+
static in(operandName, operandValue) {
|
|
177
|
+
if (!Array.isArray(operandValue))
|
|
178
|
+
throw new Error(`Filter: Value for in must be array. But provided ${operandValue}.`);
|
|
179
|
+
const parsedValues = operandValue.map(wrapString).join(', ');
|
|
180
|
+
return `@${operandName} in (${parsedValues})`;
|
|
181
|
+
}
|
|
182
|
+
static combine(type, expressions) {
|
|
183
|
+
return expressions
|
|
184
|
+
.filter(item => {
|
|
185
|
+
if (typeof item !== 'string')
|
|
186
|
+
return false;
|
|
187
|
+
if (item.trim().length === 0)
|
|
188
|
+
return false;
|
|
189
|
+
return item;
|
|
190
|
+
})
|
|
191
|
+
.map(x => Filter.wrap(x))
|
|
192
|
+
.join(' ' + type + ' ');
|
|
193
|
+
}
|
|
194
|
+
static and(...expressions) {
|
|
195
|
+
return Filter.combine('and', expressions);
|
|
196
|
+
}
|
|
197
|
+
static or(...expressions) {
|
|
198
|
+
return Filter.combine('or', expressions);
|
|
199
|
+
}
|
|
200
|
+
static notIn(operandName, operandValue) {
|
|
201
|
+
if (!Array.isArray(operandValue) || operandValue.length === 0)
|
|
202
|
+
return '';
|
|
203
|
+
return Filter.and(...operandValue.map(value => Filter.notEq(operandName, value)));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* @description Универсальная функция для обёртки элемента.
|
|
207
|
+
* @param {string} value строкове значение, которое необходимо обернуть
|
|
208
|
+
* @param wrapSymbolStart Начальный символ обёртки
|
|
209
|
+
* @param wrapSymbolEnd Конечный символ обёртки
|
|
210
|
+
* @example just wrap with round brackets
|
|
211
|
+
* Filter.wrap('name'); // '(name)'
|
|
212
|
+
* @example just wrap with provided symbols
|
|
213
|
+
* Filter.wrap('name', '*', '*'); // '*name*'
|
|
214
|
+
*/
|
|
215
|
+
static wrap(value, wrapSymbolStart = '(', wrapSymbolEnd = ')') {
|
|
216
|
+
/*
|
|
217
|
+
Не верно!
|
|
218
|
+
-->
|
|
219
|
+
if (value.startsWith(wrapSymbolStart) && value.endsWith(wrapSymbolEnd)) return value;
|
|
220
|
+
<--
|
|
221
|
+
Контр пример value = "(expr1) and (expr2)". В таком случае, мы не обернём выражение, однако
|
|
222
|
+
это не обходимо, если дальше идёт or и вместо
|
|
223
|
+
(() and ()) or ()
|
|
224
|
+
Мы получим
|
|
225
|
+
() and () or ()
|
|
226
|
+
*/
|
|
227
|
+
return [wrapSymbolStart, value, wrapSymbolEnd].join(' ');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* @description Набор доступных операций. Устанавливается напрямую программистом.
|
|
232
|
+
*/
|
|
233
|
+
Filter.AVAILABLE_OPERATION = ['and', 'or', 'eq', 'nq', 'in', 'nin'];
|
|
234
|
+
Filter.ARGUMENT_SYMBOL = '$';
|
|
235
|
+
exports.default = Filter;
|
|
236
|
+
//# sourceMappingURL=Filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../src/model/Filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { IFilterEnum, IFilterNumber, IFilterString } from "../utils/Filter";
|
|
2
|
+
/**
|
|
3
|
+
* @description Класс предназначенный для работы с фильтрами. Предоставляет одиночные static методы
|
|
4
|
+
* при помощи, которых можно самостоятельно создать фильтр или полноценный механизм задачи фильтра
|
|
5
|
+
* через объект(Более краткий и удобный) через new.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const filter = new Filter([
|
|
9
|
+
* ["eq", ["Name", "Jack"] ],
|
|
10
|
+
* ["eq", ["Age", "@age"] ]
|
|
11
|
+
* ]);
|
|
12
|
+
* const data = { age: 25 }
|
|
13
|
+
* const strFilter = filter.generate(data);
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const filter = new Filter([
|
|
17
|
+
* "or",
|
|
18
|
+
* [
|
|
19
|
+
* ["in", ["Status", ["A", "D"] ] ],
|
|
20
|
+
* ["in", ["Type", "$userType" ] ]
|
|
21
|
+
* ]
|
|
22
|
+
* ])
|
|
23
|
+
* const data = {
|
|
24
|
+
* userType: ["User", "Person"]
|
|
25
|
+
* }
|
|
26
|
+
* const strFilter = filter.generate(data)
|
|
27
|
+
*/
|
|
28
|
+
export default class Filter {
|
|
29
|
+
static readonly AVAILABLE_OPERATION: string[];
|
|
30
|
+
private readonly compileFn;
|
|
31
|
+
get valid(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* @description Массив обзятальных полей, еоторый заправшиваются в конфигурации фильтра.
|
|
34
|
+
*/
|
|
35
|
+
readonly requiredArguments: string[];
|
|
36
|
+
private addRequiredArgument;
|
|
37
|
+
constructor(value: unknown);
|
|
38
|
+
generate(data?: ICompileData): string;
|
|
39
|
+
private compileItem;
|
|
40
|
+
private compileExpressionByType;
|
|
41
|
+
private compileArray;
|
|
42
|
+
private compileEqual;
|
|
43
|
+
private compileInclude;
|
|
44
|
+
private isRequiredValue;
|
|
45
|
+
private isValidObjectExpression;
|
|
46
|
+
private checkForRequiredValue;
|
|
47
|
+
private convertValue;
|
|
48
|
+
/**
|
|
49
|
+
* @description Not Equal(!==).
|
|
50
|
+
* @param name
|
|
51
|
+
* @param values
|
|
52
|
+
*/
|
|
53
|
+
static notEq(name: string, values: IFilterString | IFilterNumber): string;
|
|
54
|
+
/**
|
|
55
|
+
* @description Equal(===)
|
|
56
|
+
* @param name
|
|
57
|
+
* @param values
|
|
58
|
+
*/
|
|
59
|
+
static eq(name: string, values: IFilterString | IFilterNumber | IFilterEnum): string;
|
|
60
|
+
/**
|
|
61
|
+
* @description Include.
|
|
62
|
+
* @param name
|
|
63
|
+
* @param values
|
|
64
|
+
*/
|
|
65
|
+
static in(name: string, values: IFilterEnum): string;
|
|
66
|
+
}
|
|
67
|
+
type ICompileData = Record<string, any>;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=filter-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-config.d.ts","sourceRoot":"","sources":["../../src/model/filter-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,WAAkC;IAErE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,IAAI,KAAK,YAER;IAED;;OAEG;IAEH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAC1C,OAAO,CAAC,mBAAmB;gBAKf,KAAK,EAAE,OAAO;IAOnB,QAAQ,CAAC,IAAI,GAAE,YAAiB;IAIvC,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY;IAKpB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa;IAIhE;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW;IAK5E;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;CAI9C;AAaD,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}
|