gamelet-cli 0.7.12 → 0.8.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.
Files changed (49) hide show
  1. package/assets/package.json.twig +3 -3
  2. package/assets/tsconfig.json.twig +1 -1
  3. package/build/package.json +68 -67
  4. package/build/src/gamelet/download.js +773 -737
  5. package/build/src/gamelet/merges.js +181 -179
  6. package/build/src/gamelet/prepare.js +276 -277
  7. package/build/src/gamelet/upload.js +280 -279
  8. package/build/src/index.js +86 -86
  9. package/build/src/server/Constant.js +9 -9
  10. package/build/src/server/entities/Client.js +78 -78
  11. package/build/src/server/entities/ClientOwner.js +67 -67
  12. package/build/src/server/entities/ClientProject.js +84 -84
  13. package/build/src/server/entities/Gameroom.js +89 -89
  14. package/build/src/server/entities/GameroomBase.js +276 -276
  15. package/build/src/server/entities/Gamezone.js +73 -73
  16. package/build/src/server/entities/ListFilter.js +193 -193
  17. package/build/src/server/entities/Monitor.js +94 -94
  18. package/build/src/server/entities/Player.js +140 -140
  19. package/build/src/server/managers/ApiManager.js +75 -75
  20. package/build/src/server/managers/ClientManager.js +64 -64
  21. package/build/src/server/managers/Database.js +625 -627
  22. package/build/src/server/managers/GameroomManager.js +392 -392
  23. package/build/src/server/managers/ManagerBase.js +17 -17
  24. package/build/src/server/managers/MonitorManager.js +73 -73
  25. package/build/src/server/managers/PlayerManager.js +108 -108
  26. package/build/src/server/managers/SocketManager.js +60 -60
  27. package/build/src/server/managers/UserManager.js +118 -58
  28. package/build/src/server/messages/Message.js +143 -143
  29. package/build/src/server/server.js +117 -113
  30. package/build/src/server/services/ServiceBase.js +25 -25
  31. package/build/src/server/services/clientService.js +23 -23
  32. package/build/src/server/services/gameroomService.js +121 -121
  33. package/build/src/server/services/gltserver.service.js +23 -23
  34. package/build/src/server/services/playerService.js +32 -32
  35. package/build/src/server/startServer.js +32 -33
  36. package/build/src/server/types/BadgeStatus.js +25 -25
  37. package/build/src/server/types/OrderType.js +38 -38
  38. package/build/src/server/types/SubmitType.js +24 -24
  39. package/build/src/server/types/TimeRange.js +26 -26
  40. package/build/src/server/utils/ArrayUtil.js +126 -126
  41. package/build/src/server/utils/IntUtil.js +9 -9
  42. package/build/src/server/utils/ObjectUtil.js +191 -191
  43. package/build/src/server/utils/StringUtil.js +37 -37
  44. package/build/src/utils/cli.js +53 -53
  45. package/build/src/utils/file.js +350 -337
  46. package/build/src/utils/init.js +57 -42
  47. package/build/src/utils/log.js +18 -17
  48. package/build/src/utils/net.js +65 -39
  49. package/package.json +3 -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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