gamelet-cli 0.7.10 → 0.7.13

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.
Files changed (51) hide show
  1. package/assets/package.json.twig +3 -3
  2. package/assets/server/static/js/monitor.js +6 -0
  3. package/assets/server/views/monitor.twig +1 -0
  4. package/assets/tsconfig.json.twig +1 -1
  5. package/build/package.json +67 -67
  6. package/build/src/gamelet/download.js +773 -737
  7. package/build/src/gamelet/merges.js +181 -179
  8. package/build/src/gamelet/prepare.js +276 -277
  9. package/build/src/gamelet/upload.js +280 -279
  10. package/build/src/index.js +86 -86
  11. package/build/src/server/Constant.js +9 -9
  12. package/build/src/server/entities/Client.js +78 -78
  13. package/build/src/server/entities/ClientOwner.js +67 -67
  14. package/build/src/server/entities/ClientProject.js +84 -84
  15. package/build/src/server/entities/Gameroom.js +89 -89
  16. package/build/src/server/entities/GameroomBase.js +276 -276
  17. package/build/src/server/entities/Gamezone.js +73 -73
  18. package/build/src/server/entities/ListFilter.js +193 -193
  19. package/build/src/server/entities/Monitor.js +94 -81
  20. package/build/src/server/entities/Player.js +140 -140
  21. package/build/src/server/managers/ApiManager.js +75 -75
  22. package/build/src/server/managers/ClientManager.js +64 -64
  23. package/build/src/server/managers/Database.js +627 -627
  24. package/build/src/server/managers/GameroomManager.js +392 -392
  25. package/build/src/server/managers/ManagerBase.js +17 -17
  26. package/build/src/server/managers/MonitorManager.js +73 -73
  27. package/build/src/server/managers/PlayerManager.js +108 -108
  28. package/build/src/server/managers/SocketManager.js +60 -60
  29. package/build/src/server/managers/UserManager.js +58 -58
  30. package/build/src/server/messages/Message.js +143 -143
  31. package/build/src/server/server.js +112 -113
  32. package/build/src/server/services/ServiceBase.js +25 -25
  33. package/build/src/server/services/clientService.js +23 -23
  34. package/build/src/server/services/gameroomService.js +121 -121
  35. package/build/src/server/services/gltserver.service.js +23 -23
  36. package/build/src/server/services/playerService.js +32 -32
  37. package/build/src/server/startServer.js +32 -33
  38. package/build/src/server/types/BadgeStatus.js +25 -25
  39. package/build/src/server/types/OrderType.js +38 -38
  40. package/build/src/server/types/SubmitType.js +24 -24
  41. package/build/src/server/types/TimeRange.js +26 -26
  42. package/build/src/server/utils/ArrayUtil.js +126 -126
  43. package/build/src/server/utils/IntUtil.js +9 -9
  44. package/build/src/server/utils/ObjectUtil.js +191 -191
  45. package/build/src/server/utils/StringUtil.js +37 -37
  46. package/build/src/utils/cli.js +53 -53
  47. package/build/src/utils/file.js +350 -337
  48. package/build/src/utils/init.js +57 -42
  49. package/build/src/utils/log.js +18 -17
  50. package/build/src/utils/net.js +43 -39
  51. package/package.json +2 -2
@@ -1,73 +1,73 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Gamezone = void 0;
4
- const ArrayUtil_1 = require("./../utils/ArrayUtil");
5
- const GameroomBase_1 = require("./GameroomBase");
6
- class Gamezone extends GameroomBase_1.GameroomBase {
7
- constructor(code, server, client) {
8
- super('gamezone', code, server, client);
9
- this.gamerooms = [];
10
- this._socketChannel = this.client.key + '|' + this.code;
11
- }
12
- get monitorChannel() {
13
- return `(zone) ${this.code}`;
14
- }
15
- get socketChannel() {
16
- return this._socketChannel;
17
- }
18
- listGamerooms(filter, length) {
19
- let list = [];
20
- for (let room of this.gamerooms) {
21
- if (filter.test(room)) {
22
- list.push(room);
23
- if (list.length >= length) {
24
- break;
25
- }
26
- }
27
- }
28
- return list;
29
- }
30
- listAllGamerooms() {
31
- return this.gamerooms;
32
- }
33
- addPlayer(player) {
34
- if (super.addPlayer(player)) {
35
- player.addGamezone(this);
36
- return true;
37
- }
38
- return false;
39
- }
40
- removePlayer(player) {
41
- if (super.removePlayer(player)) {
42
- player.removeGamezone(this);
43
- return true;
44
- }
45
- return false;
46
- }
47
- addGameroom(gameroom) {
48
- return ArrayUtil_1.ArrayUtil.addUniqueElement(this.gamerooms, gameroom);
49
- }
50
- removeGameroom(gameroom) {
51
- return ArrayUtil_1.ArrayUtil.removeElement(this.gamerooms, gameroom);
52
- }
53
- toVo() {
54
- return {
55
- code: this.code
56
- };
57
- }
58
- toStatusVo() {
59
- return {
60
- stateJson: this.stateJson,
61
- players: this.players.length,
62
- brainer: this.brainer ? this.brainer.code : '',
63
- };
64
- }
65
- toAndStatusVo() {
66
- return {
67
- zone: this.toVo(),
68
- status: this.toStatusVo(),
69
- };
70
- }
71
- }
72
- exports.Gamezone = Gamezone;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0dhbWV6b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG9EQUFpRDtBQUNqRCxpREFBOEM7QUFJOUMsTUFBYSxRQUFTLFNBQVEsMkJBQVk7SUFNdEMsWUFDSSxJQUFZLEVBQ1osTUFBMEIsRUFDMUIsTUFBYztRQUVkLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQVRwQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBVS9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCLEVBQUUsTUFBYztRQUM1QyxJQUFJLElBQUksR0FBZSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzdCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtvQkFDdkIsTUFBTTtpQkFDVDthQUNKO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3ZCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWtCO1FBQzFCLE9BQU8scUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBa0I7UUFDN0IsT0FBTyxxQkFBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJO1FBQ0EsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFBO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPO1lBQ0gsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2pELENBQUE7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNULE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUM1QixDQUFBO0lBQ0wsQ0FBQztDQUNKO0FBcEZELDRCQW9GQyJ9
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Gamezone = void 0;
4
+ const ArrayUtil_1 = require("./../utils/ArrayUtil");
5
+ const GameroomBase_1 = require("./GameroomBase");
6
+ class Gamezone extends GameroomBase_1.GameroomBase {
7
+ constructor(code, server, client) {
8
+ super('gamezone', code, server, client);
9
+ this.gamerooms = [];
10
+ this._socketChannel = this.client.key + '|' + this.code;
11
+ }
12
+ get monitorChannel() {
13
+ return `(zone) ${this.code}`;
14
+ }
15
+ get socketChannel() {
16
+ return this._socketChannel;
17
+ }
18
+ listGamerooms(filter, length) {
19
+ let list = [];
20
+ for (let room of this.gamerooms) {
21
+ if (filter.test(room)) {
22
+ list.push(room);
23
+ if (list.length >= length) {
24
+ break;
25
+ }
26
+ }
27
+ }
28
+ return list;
29
+ }
30
+ listAllGamerooms() {
31
+ return this.gamerooms;
32
+ }
33
+ addPlayer(player) {
34
+ if (super.addPlayer(player)) {
35
+ player.addGamezone(this);
36
+ return true;
37
+ }
38
+ return false;
39
+ }
40
+ removePlayer(player) {
41
+ if (super.removePlayer(player)) {
42
+ player.removeGamezone(this);
43
+ return true;
44
+ }
45
+ return false;
46
+ }
47
+ addGameroom(gameroom) {
48
+ return ArrayUtil_1.ArrayUtil.addUniqueElement(this.gamerooms, gameroom);
49
+ }
50
+ removeGameroom(gameroom) {
51
+ return ArrayUtil_1.ArrayUtil.removeElement(this.gamerooms, gameroom);
52
+ }
53
+ toVo() {
54
+ return {
55
+ code: this.code
56
+ };
57
+ }
58
+ toStatusVo() {
59
+ return {
60
+ stateJson: this.stateJson,
61
+ players: this.players.length,
62
+ brainer: this.brainer ? this.brainer.code : '',
63
+ };
64
+ }
65
+ toAndStatusVo() {
66
+ return {
67
+ zone: this.toVo(),
68
+ status: this.toStatusVo(),
69
+ };
70
+ }
71
+ }
72
+ exports.Gamezone = Gamezone;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0dhbWV6b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG9EQUFpRDtBQUNqRCxpREFBOEM7QUFJOUMsTUFBYSxRQUFTLFNBQVEsMkJBQVk7SUFNdEMsWUFDSSxJQUFZLEVBQ1osTUFBMEIsRUFDMUIsTUFBYztRQUVkLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQVRwQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBVS9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCLEVBQUUsTUFBYztRQUM1QyxJQUFJLElBQUksR0FBZSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsTUFBTTtnQkFDVixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFrQjtRQUMxQixPQUFPLHFCQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWtCO1FBQzdCLE9BQU8scUJBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSTtRQUNBLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDbEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTztZQUNILFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNqRCxDQUFBO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDNUIsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQXBGRCw0QkFvRkMifQ==
@@ -1,193 +1,193 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parsePropFilter = exports.PropFilter = void 0;
4
- /*
5
- export class ListFilter {
6
-
7
- static EMPTY = new ListFilter([]);
8
-
9
- constructor(private propFilters: Array<PropFilter>) {
10
-
11
- }
12
-
13
- filter(list: Array<any>): Array<any> {
14
- return list.filter(item => this.test(item));
15
- }
16
-
17
- test(item: any): boolean {
18
- for(let filter of this.propFilters) {
19
- if(!filter.test(item)) {
20
- return false;
21
- }
22
- }
23
- return true;
24
- }
25
-
26
- static parse(list: IPropFilter[]): ListFilter {
27
- if (list && list.length) {
28
- let filters: Array<PropFilter> = list.map(json => parsePropFilter(json));
29
- return new ListFilter(filters);
30
- }
31
- return ListFilter.EMPTY;
32
- }
33
- }
34
- */
35
- class PropFilter {
36
- constructor(property) {
37
- this.property = property;
38
- this.propertyList = this.property.split('.');
39
- }
40
- getPropertyValue(obj) {
41
- for (let prop of this.propertyList) {
42
- if (!obj) {
43
- return null;
44
- }
45
- obj = obj[prop];
46
- }
47
- return obj;
48
- }
49
- test(obj) {
50
- return this.getPropertyValue(obj);
51
- }
52
- }
53
- exports.PropFilter = PropFilter;
54
- class FakeFilter extends PropFilter {
55
- constructor() {
56
- super('');
57
- }
58
- test(_obj) {
59
- return true;
60
- }
61
- }
62
- const fakeFilter = new FakeFilter();
63
- class ExistFilter extends PropFilter {
64
- constructor(property) {
65
- super(property);
66
- }
67
- test(obj) {
68
- return !!this.getPropertyValue(obj);
69
- }
70
- }
71
- class EmptyFilter extends PropFilter {
72
- constructor(property) {
73
- super(property);
74
- }
75
- test(obj) {
76
- return !this.getPropertyValue(obj);
77
- }
78
- }
79
- class EqualFilter extends PropFilter {
80
- constructor(property, value) {
81
- super(property);
82
- this.value = value;
83
- }
84
- test(obj) {
85
- return this.getPropertyValue(obj) === this.value;
86
- }
87
- }
88
- class IncludeFilter extends PropFilter {
89
- constructor(property, values) {
90
- super(property);
91
- this.values = values;
92
- }
93
- test(obj) {
94
- return this.values.includes(this.getPropertyValue(obj));
95
- }
96
- }
97
- class ExcludeFilter extends PropFilter {
98
- constructor(property, values) {
99
- super(property);
100
- this.values = values;
101
- }
102
- test(obj) {
103
- return !this.values.includes(this.getPropertyValue(obj));
104
- }
105
- }
106
- class RangeFilter extends PropFilter {
107
- constructor(property, min, max) {
108
- super(property);
109
- this.min = min;
110
- this.max = max;
111
- }
112
- test(obj) {
113
- let value = this.getPropertyValue(obj);
114
- if (value !== null) {
115
- return value >= this.min && value <= this.max;
116
- }
117
- return false;
118
- }
119
- }
120
- class MatchFilter extends PropFilter {
121
- constructor(property, regexp) {
122
- super(property);
123
- let search = regexp.match(/^\/(.+)\/$/);
124
- if (search) {
125
- this.regexp = new RegExp(search[1]);
126
- }
127
- else {
128
- this.regexp = new RegExp(regexp);
129
- }
130
- }
131
- test(obj) {
132
- let value = this.getPropertyValue(obj);
133
- if (value !== null) {
134
- return this.regexp.test(value);
135
- }
136
- return false;
137
- }
138
- }
139
- class OrFilter extends PropFilter {
140
- constructor(filters) {
141
- super('');
142
- this.filters = filters.map(f => parsePropFilter(f));
143
- }
144
- test(obj) {
145
- for (let filter of this.filters) {
146
- if (filter.test(obj)) {
147
- return true;
148
- }
149
- }
150
- return false;
151
- }
152
- }
153
- class AndFilter extends OrFilter {
154
- test(obj) {
155
- for (let filter of this.filters) {
156
- if (!filter.test(obj)) {
157
- return false;
158
- }
159
- }
160
- return true;
161
- }
162
- }
163
- class NotFilter extends PropFilter {
164
- constructor(filter) {
165
- super('');
166
- this.filter = parsePropFilter(filter);
167
- }
168
- test(obj) {
169
- return !this.filter.test(obj);
170
- }
171
- }
172
- function parsePropFilter(json) {
173
- if (json && json.type) {
174
- switch (json.type) {
175
- case 'equal': return new EqualFilter(json.prop, json.data);
176
- case 'include': return new IncludeFilter(json.prop, json.data);
177
- case 'exclude': return new ExcludeFilter(json.prop, json.data);
178
- case 'range': return new RangeFilter(json.prop, json.data.min, json.data.max);
179
- case 'match': return new MatchFilter(json.prop, json.data);
180
- case 'exist': return new ExistFilter(json.prop);
181
- case 'empty': return new EmptyFilter(json.prop);
182
- case 'or': return new OrFilter(json.data);
183
- case 'and': return new AndFilter(json.data);
184
- case 'not': return new NotFilter(json.data);
185
- }
186
- return new PropFilter(json.prop);
187
- }
188
- else {
189
- return fakeFilter;
190
- }
191
- }
192
- exports.parsePropFilter = parsePropFilter;
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdEZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTGlzdEZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBOEJFO0FBRUYsTUFBYSxVQUFVO0lBSW5CLFlBQW1CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBUTtRQUNyQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDaEMsSUFBRyxDQUFDLEdBQUcsRUFBRTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFRO1FBQ1QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUVKO0FBdEJELGdDQXNCQztBQUVELE1BQU0sVUFBVyxTQUFRLFVBQVU7SUFDL0I7UUFDSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVM7UUFDVixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBR3BDLE1BQU0sV0FBWSxTQUFRLFVBQVU7SUFDaEMsWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFRO1FBQ1QsT0FBTyxDQUFDLENB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
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PropFilter = void 0;
4
+ exports.parsePropFilter = parsePropFilter;
5
+ /*
6
+ export class ListFilter {
7
+
8
+ static EMPTY = new ListFilter([]);
9
+
10
+ constructor(private propFilters: Array<PropFilter>) {
11
+
12
+ }
13
+
14
+ filter(list: Array<any>): Array<any> {
15
+ return list.filter(item => this.test(item));
16
+ }
17
+
18
+ test(item: any): boolean {
19
+ for(let filter of this.propFilters) {
20
+ if(!filter.test(item)) {
21
+ return false;
22
+ }
23
+ }
24
+ return true;
25
+ }
26
+
27
+ static parse(list: IPropFilter[]): ListFilter {
28
+ if (list && list.length) {
29
+ let filters: Array<PropFilter> = list.map(json => parsePropFilter(json));
30
+ return new ListFilter(filters);
31
+ }
32
+ return ListFilter.EMPTY;
33
+ }
34
+ }
35
+ */
36
+ class PropFilter {
37
+ constructor(property) {
38
+ this.property = property;
39
+ this.propertyList = this.property.split('.');
40
+ }
41
+ getPropertyValue(obj) {
42
+ for (let prop of this.propertyList) {
43
+ if (!obj) {
44
+ return null;
45
+ }
46
+ obj = obj[prop];
47
+ }
48
+ return obj;
49
+ }
50
+ test(obj) {
51
+ return this.getPropertyValue(obj);
52
+ }
53
+ }
54
+ exports.PropFilter = PropFilter;
55
+ class FakeFilter extends PropFilter {
56
+ constructor() {
57
+ super('');
58
+ }
59
+ test(_obj) {
60
+ return true;
61
+ }
62
+ }
63
+ const fakeFilter = new FakeFilter();
64
+ class ExistFilter extends PropFilter {
65
+ constructor(property) {
66
+ super(property);
67
+ }
68
+ test(obj) {
69
+ return !!this.getPropertyValue(obj);
70
+ }
71
+ }
72
+ class EmptyFilter extends PropFilter {
73
+ constructor(property) {
74
+ super(property);
75
+ }
76
+ test(obj) {
77
+ return !this.getPropertyValue(obj);
78
+ }
79
+ }
80
+ class EqualFilter extends PropFilter {
81
+ constructor(property, value) {
82
+ super(property);
83
+ this.value = value;
84
+ }
85
+ test(obj) {
86
+ return this.getPropertyValue(obj) === this.value;
87
+ }
88
+ }
89
+ class IncludeFilter extends PropFilter {
90
+ constructor(property, values) {
91
+ super(property);
92
+ this.values = values;
93
+ }
94
+ test(obj) {
95
+ return this.values.includes(this.getPropertyValue(obj));
96
+ }
97
+ }
98
+ class ExcludeFilter extends PropFilter {
99
+ constructor(property, values) {
100
+ super(property);
101
+ this.values = values;
102
+ }
103
+ test(obj) {
104
+ return !this.values.includes(this.getPropertyValue(obj));
105
+ }
106
+ }
107
+ class RangeFilter extends PropFilter {
108
+ constructor(property, min, max) {
109
+ super(property);
110
+ this.min = min;
111
+ this.max = max;
112
+ }
113
+ test(obj) {
114
+ let value = this.getPropertyValue(obj);
115
+ if (value !== null) {
116
+ return value >= this.min && value <= this.max;
117
+ }
118
+ return false;
119
+ }
120
+ }
121
+ class MatchFilter extends PropFilter {
122
+ constructor(property, regexp) {
123
+ super(property);
124
+ let search = regexp.match(/^\/(.+)\/$/);
125
+ if (search) {
126
+ this.regexp = new RegExp(search[1]);
127
+ }
128
+ else {
129
+ this.regexp = new RegExp(regexp);
130
+ }
131
+ }
132
+ test(obj) {
133
+ let value = this.getPropertyValue(obj);
134
+ if (value !== null) {
135
+ return this.regexp.test(value);
136
+ }
137
+ return false;
138
+ }
139
+ }
140
+ class OrFilter extends PropFilter {
141
+ constructor(filters) {
142
+ super('');
143
+ this.filters = filters.map(f => parsePropFilter(f));
144
+ }
145
+ test(obj) {
146
+ for (let filter of this.filters) {
147
+ if (filter.test(obj)) {
148
+ return true;
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ }
154
+ class AndFilter extends OrFilter {
155
+ test(obj) {
156
+ for (let filter of this.filters) {
157
+ if (!filter.test(obj)) {
158
+ return false;
159
+ }
160
+ }
161
+ return true;
162
+ }
163
+ }
164
+ class NotFilter extends PropFilter {
165
+ constructor(filter) {
166
+ super('');
167
+ this.filter = parsePropFilter(filter);
168
+ }
169
+ test(obj) {
170
+ return !this.filter.test(obj);
171
+ }
172
+ }
173
+ function parsePropFilter(json) {
174
+ if (json && json.type) {
175
+ switch (json.type) {
176
+ case 'equal': return new EqualFilter(json.prop, json.data);
177
+ case 'include': return new IncludeFilter(json.prop, json.data);
178
+ case 'exclude': return new ExcludeFilter(json.prop, json.data);
179
+ case 'range': return new RangeFilter(json.prop, json.data.min, json.data.max);
180
+ case 'match': return new MatchFilter(json.prop, json.data);
181
+ case 'exist': return new ExistFilter(json.prop);
182
+ case 'empty': return new EmptyFilter(json.prop);
183
+ case 'or': return new OrFilter(json.data);
184
+ case 'and': return new AndFilter(json.data);
185
+ case 'not': return new NotFilter(json.data);
186
+ }
187
+ return new PropFilter(json.prop);
188
+ }
189
+ else {
190
+ return fakeFilter;
191
+ }
192
+ }
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdEZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTGlzdEZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyTUEsMENBa0JDO0FBeE5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QkU7QUFFRixNQUFhLFVBQVU7SUFJbkIsWUFBbUIsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFRO1FBQ3JCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pDLElBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVE7UUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBRUo7QUF0QkQsZ0NBc0JDO0FBRUQsTUFBTSxVQUFXLFNBQVEsVUFBVTtJQUMvQjtRQUNJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBUztRQUNWLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQUNELE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7QUFHcEMsTUFBTSxXQUFZLFNBQVEsVUFBVTtJQUNoQyxZQUFZLFFBQWdCO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQixDQUFDO0lB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