@urso/core 0.3.6 → 0.3.10

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 (144) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +29 -29
  5. package/package.json +51 -51
  6. package/src/js/app.js +77 -77
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +7 -7
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +55 -55
  15. package/src/js/components/debug/timescale.js +60 -60
  16. package/src/js/components/deviceRotate/_info.js +3 -3
  17. package/src/js/components/deviceRotate/controller.js +86 -86
  18. package/src/js/components/fullscreen/_info.js +6 -6
  19. package/src/js/components/fullscreen/android.js +104 -104
  20. package/src/js/components/fullscreen/controller.js +64 -64
  21. package/src/js/components/fullscreen/desktop.js +49 -49
  22. package/src/js/components/fullscreen/ios.js +111 -111
  23. package/src/js/components/loader/_info.js +4 -4
  24. package/src/js/components/loader/controller.js +66 -66
  25. package/src/js/components/loader/template.js +70 -70
  26. package/src/js/components/soundInitialPopup/_info.js +3 -3
  27. package/src/js/components/soundInitialPopup/controller.js +42 -42
  28. package/src/js/components/soundInitialPopup/template.js +109 -109
  29. package/src/js/components/stateDriven/_info.js +3 -3
  30. package/src/js/components/stateDriven/controller.js +118 -96
  31. package/src/js/config/load.js +5 -5
  32. package/src/js/config/main.js +10 -10
  33. package/src/js/extra/_info.js +22 -21
  34. package/src/js/extra/browserEvents.js +38 -32
  35. package/src/js/extra/setTimeout.js +7 -0
  36. package/src/js/index.js +8 -8
  37. package/src/js/lib/_info.js +13 -13
  38. package/src/js/lib/cache.js +105 -98
  39. package/src/js/lib/composition.js +89 -89
  40. package/src/js/lib/device.js +1276 -1276
  41. package/src/js/lib/helper.js +539 -539
  42. package/src/js/lib/loader.js +127 -121
  43. package/src/js/lib/localData.js +15 -15
  44. package/src/js/lib/logger.js +22 -22
  45. package/src/js/lib/math.js +35 -35
  46. package/src/js/lib/objectPool.js +54 -54
  47. package/src/js/lib/time.js +18 -18
  48. package/src/js/lib/tween.js +147 -147
  49. package/src/js/modules/_info.js +11 -11
  50. package/src/js/modules/assets/_info.js +7 -7
  51. package/src/js/modules/assets/baseModel.js +18 -18
  52. package/src/js/modules/assets/config.js +35 -35
  53. package/src/js/modules/assets/controller.js +39 -39
  54. package/src/js/modules/assets/models/_info.js +11 -11
  55. package/src/js/modules/assets/models/atlas.js +8 -8
  56. package/src/js/modules/assets/models/audiosprite.js +27 -27
  57. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  58. package/src/js/modules/assets/models/container.js +16 -16
  59. package/src/js/modules/assets/models/font.js +8 -8
  60. package/src/js/modules/assets/models/image.js +13 -14
  61. package/src/js/modules/assets/models/json.js +8 -8
  62. package/src/js/modules/assets/models/sound.js +14 -14
  63. package/src/js/modules/assets/models/spine.js +14 -8
  64. package/src/js/modules/assets/service.js +353 -327
  65. package/src/js/modules/instances/_info.js +3 -3
  66. package/src/js/modules/instances/controller.js +219 -219
  67. package/src/js/modules/logic/_info.js +4 -4
  68. package/src/js/modules/logic/config/_info.js +2 -2
  69. package/src/js/modules/logic/config/sounds.js +23 -23
  70. package/src/js/modules/logic/controller.js +48 -48
  71. package/src/js/modules/logic/sounds.js +96 -96
  72. package/src/js/modules/objects/_info.js +11 -11
  73. package/src/js/modules/objects/baseModel.js +161 -161
  74. package/src/js/modules/objects/cache.js +99 -99
  75. package/src/js/modules/objects/controller.js +121 -121
  76. package/src/js/modules/objects/create.js +230 -230
  77. package/src/js/modules/objects/find.js +140 -140
  78. package/src/js/modules/objects/models/_info.js +24 -24
  79. package/src/js/modules/objects/models/atlasImage.js +50 -50
  80. package/src/js/modules/objects/models/bitmapText.js +23 -23
  81. package/src/js/modules/objects/models/button.js +184 -184
  82. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  83. package/src/js/modules/objects/models/checkbox.js +96 -96
  84. package/src/js/modules/objects/models/collection.js +54 -54
  85. package/src/js/modules/objects/models/component.js +44 -44
  86. package/src/js/modules/objects/models/container.js +19 -19
  87. package/src/js/modules/objects/models/emitter.js +54 -54
  88. package/src/js/modules/objects/models/graphics.js +38 -38
  89. package/src/js/modules/objects/models/group.js +19 -19
  90. package/src/js/modules/objects/models/hitArea.js +104 -104
  91. package/src/js/modules/objects/models/image.js +34 -34
  92. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  93. package/src/js/modules/objects/models/mask.js +38 -38
  94. package/src/js/modules/objects/models/scrollbox.js +61 -61
  95. package/src/js/modules/objects/models/slider.js +223 -199
  96. package/src/js/modules/objects/models/spine.js +89 -89
  97. package/src/js/modules/objects/models/text.js +38 -38
  98. package/src/js/modules/objects/models/textInput.js +66 -66
  99. package/src/js/modules/objects/models/toggle.js +178 -178
  100. package/src/js/modules/objects/models/world.js +19 -19
  101. package/src/js/modules/objects/propertyAdapter.js +421 -421
  102. package/src/js/modules/objects/proxy.js +182 -182
  103. package/src/js/modules/objects/styles.js +116 -116
  104. package/src/js/modules/observer/_info.js +4 -4
  105. package/src/js/modules/observer/controller.js +99 -99
  106. package/src/js/modules/observer/events.js +38 -36
  107. package/src/js/modules/scenes/_info.js +8 -8
  108. package/src/js/modules/scenes/controller.js +42 -42
  109. package/src/js/modules/scenes/model.js +35 -35
  110. package/src/js/modules/scenes/pixiWrapper.js +202 -194
  111. package/src/js/modules/scenes/resolutions.js +176 -168
  112. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  113. package/src/js/modules/scenes/service.js +92 -92
  114. package/src/js/modules/soundManager/_info.js +3 -3
  115. package/src/js/modules/soundManager/controller.js +99 -99
  116. package/src/js/modules/soundManager/soundSprite.js +202 -202
  117. package/src/js/modules/statesManager/_info.js +12 -12
  118. package/src/js/modules/statesManager/action.js +60 -60
  119. package/src/js/modules/statesManager/actions/_info.js +3 -3
  120. package/src/js/modules/statesManager/all.js +23 -23
  121. package/src/js/modules/statesManager/configStates.js +71 -71
  122. package/src/js/modules/statesManager/controller.js +170 -140
  123. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  124. package/src/js/modules/statesManager/helper.js +27 -27
  125. package/src/js/modules/statesManager/race.js +75 -75
  126. package/src/js/modules/statesManager/sequence.js +47 -47
  127. package/src/js/modules/template/_info.js +6 -6
  128. package/src/js/modules/template/controller.js +28 -28
  129. package/src/js/modules/template/model.js +11 -11
  130. package/src/js/modules/template/service.js +125 -125
  131. package/src/js/modules/template/types.js +44 -44
  132. package/src/js/modules/transport/_info.js +8 -8
  133. package/src/js/modules/transport/baseConnectionType.js +24 -24
  134. package/src/js/modules/transport/config.js +13 -13
  135. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  136. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  137. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  138. package/src/js/modules/transport/controller.js +48 -48
  139. package/src/js/modules/transport/decorator.js +17 -17
  140. package/src/js/modules/transport/service.js +153 -153
  141. package/src/js/templates/_info.js +4 -4
  142. package/src/js/templates/groups/_info.js +1 -1
  143. package/src/js/templates/scenes/_info.js +1 -1
  144. package/webpack.config.js +47 -47
@@ -1,71 +1,71 @@
1
- class ModulesStatesManagerConfigStates {
2
- constructor() {
3
- this.singleton = true;
4
-
5
- this.contents = {
6
- IDLE: { action: 'startSpin' },
7
-
8
- SPIN_START: {
9
- all: [
10
- { action: 'serverSpinRequest' },
11
- { action: 'slotMachineSpinStart' }
12
- ]
13
- },
14
-
15
- SPIN_FINISHING: { action: 'spin' },
16
-
17
- WINLINES_ANIMATE_ALL: { action: 'showWinlinesAnimationAll' },
18
-
19
- PICK_GAME1: {
20
- sequence: [
21
- { action: 'someAction' },
22
- { action: 'showPickGame' }, //showPickGame --> addActionGuard(showPickGame, funk)
23
- { action: 'showBIGWin' }
24
- ],
25
- nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"] //nextState is optional //setGuardState(PICK_GAME2, func)
26
- },
27
-
28
- PICK_GAME2: {
29
- sequence: [
30
- { action: 'showWheel' }, //showWheel --> addActionGuard(showWheel, funk)
31
- { action: 'showBIGWin' }
32
- ],
33
- nextState: ["PICK_GAME1", "IDLE"] //nextState is optional
34
- },
35
-
36
- WINLINES_ANIMATE_BY_ONE: { action: 'showWinlinesAnimation' },
37
-
38
- GAMBLE: {
39
- race: [
40
- { action: 'playerLooseinGamble' },
41
- { action: 'playerCollectMoney' }
42
- ]
43
- },
44
-
45
- UPDATE_BALANCE: {
46
- race: [
47
- {
48
- all: [
49
- {
50
- sequence: [
51
- { action: 'showWinPopup' },
52
- { action: 'closeWinPopup' }
53
- ]
54
- },
55
- { action: 'counterUpdate' }
56
- ]
57
- },
58
- { action: 'playerPressSpace' },
59
- { action: 'playerPressSPIN' }
60
- ]
61
- }
62
- };
63
- }
64
-
65
- get() {
66
- return this.contents;
67
- };
68
-
69
- }
70
-
71
- module.exports = ModulesStatesManagerConfigStates;
1
+ class ModulesStatesManagerConfigStates {
2
+ constructor() {
3
+ this.singleton = true;
4
+
5
+ this.contents = {
6
+ IDLE: { action: 'startSpin' },
7
+
8
+ SPIN_START: {
9
+ all: [
10
+ { action: 'serverSpinRequest' },
11
+ { action: 'slotMachineSpinStart' }
12
+ ]
13
+ },
14
+
15
+ SPIN_FINISHING: { action: 'spin' },
16
+
17
+ WINLINES_ANIMATE_ALL: { action: 'showWinlinesAnimationAll' },
18
+
19
+ PICK_GAME1: {
20
+ sequence: [
21
+ { action: 'someAction' },
22
+ { action: 'showPickGame' }, //showPickGame --> addActionGuard(showPickGame, funk)
23
+ { action: 'showBIGWin' }
24
+ ],
25
+ nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"] //nextState is optional //setGuardState(PICK_GAME2, func)
26
+ },
27
+
28
+ PICK_GAME2: {
29
+ sequence: [
30
+ { action: 'showWheel' }, //showWheel --> addActionGuard(showWheel, funk)
31
+ { action: 'showBIGWin' }
32
+ ],
33
+ nextState: ["PICK_GAME1", "IDLE"] //nextState is optional
34
+ },
35
+
36
+ WINLINES_ANIMATE_BY_ONE: { action: 'showWinlinesAnimation' },
37
+
38
+ GAMBLE: {
39
+ race: [
40
+ { action: 'playerLooseinGamble' },
41
+ { action: 'playerCollectMoney' }
42
+ ]
43
+ },
44
+
45
+ UPDATE_BALANCE: {
46
+ race: [
47
+ {
48
+ all: [
49
+ {
50
+ sequence: [
51
+ { action: 'showWinPopup' },
52
+ { action: 'closeWinPopup' }
53
+ ]
54
+ },
55
+ { action: 'counterUpdate' }
56
+ ]
57
+ },
58
+ { action: 'playerPressSpace' },
59
+ { action: 'playerPressSPIN' }
60
+ ]
61
+ }
62
+ };
63
+ }
64
+
65
+ get() {
66
+ return this.contents;
67
+ };
68
+
69
+ }
70
+
71
+ module.exports = ModulesStatesManagerConfigStates;
@@ -1,140 +1,170 @@
1
- class ModulesStatesManagerController {
2
- constructor() {
3
- this.singleton = true;
4
-
5
- this._configStates;
6
- this._currentState;
7
- this._started = false;
8
-
9
- this.statesGuards = this.getInstance('FunctionsStorage');
10
- this.actionsGuards = this.getInstance('FunctionsStorage');
11
- this.actionsRuns = this.getInstance('FunctionsStorage');
12
- this.actionsTerminations = this.getInstance('FunctionsStorage');
13
-
14
-
15
- this._iterator = this._iteratorConstructor();
16
- this._nextState = this._nextState.bind(this);
17
- }
18
-
19
- start() {
20
- if (this._started)
21
- return;
22
-
23
- this._started = true;
24
- this._configStates = this.getInstance('ConfigStates').get();
25
- this._nextState();
26
- }
27
-
28
- _iteratorConstructor() {
29
- let nextIndex = 0;
30
-
31
-
32
- const getNextStateByOrder = () => {
33
- let statesArray = Object.keys(this._configStates);
34
-
35
- if (nextIndex === statesArray.length)
36
- nextIndex = 0;
37
-
38
- return statesArray[nextIndex++];
39
- }
40
-
41
- return {
42
- next: (() => {
43
- let statesArray = Object.keys(this._configStates);
44
-
45
- //nextState
46
- if (this._currentState) {
47
- const currentState = this._configStates[this._currentState];
48
-
49
- if (currentState.nextState) { //nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"]
50
- for (const stateKey of currentState.nextState) {
51
- if (this.checkStateGuard(stateKey)) {
52
- nextIndex = statesArray.indexOf(stateKey) + 1;
53
-
54
- if (nextIndex === -1) {
55
- Urso.logger.error('ModulesStatesManagerController: nextState name error', stateKey);
56
- continue;
57
- }
58
-
59
- return stateKey;
60
- }
61
- }
62
- }
63
- }
64
-
65
- //go next state by order
66
- let stateName;
67
-
68
- do {
69
- stateName = getNextStateByOrder();
70
- } while (!this.checkStateGuard(stateName));
71
-
72
- return stateName;
73
- }).bind(this)
74
- }
75
- }
76
-
77
- _nextState() {
78
- this._currentState = this._iterator.next();
79
-
80
- this.emit(Urso.events.MODULES_STATES_MANAGER_STATE_CHANGE, this._currentState);
81
-
82
- log('%c State ' + this._currentState, 'background: #bada55; color: #000')
83
-
84
- let config = this._configStates[this._currentState];
85
- let classInstance = this.getInstance('Helper').getActionByConfig(config);
86
-
87
- //actions instances guard
88
- if (!classInstance.guard())
89
- return this._nextState();
90
-
91
- classInstance.run(this._nextState);
92
- }
93
-
94
- //actions guards
95
- addActionGuard(key, guard) {
96
- this.actionsGuards.add(key, guard, true);
97
- }
98
-
99
- checkActionGuard(key) {
100
- return this.actionsGuards.checkGuard(key);
101
- }
102
-
103
- removeActionGuard(key, guard) {
104
- this.actionsGuards.remove(key, guard);
105
- }
106
-
107
- //actions runs
108
- addActionRun(key, runFunction) {
109
- this.actionsRuns.add(key, runFunction);
110
- }
111
-
112
- runAction(key, onFinishCallback) {
113
- this.actionsRuns.runAndCallbackOnFinish(key, onFinishCallback);
114
- }
115
-
116
- //actions terminations
117
- addActionTerminate(key, terminateFunction) {
118
- this.actionsTerminations.add(key, terminateFunction);
119
- }
120
-
121
- terminateAction(key) {
122
- this.actionsTerminations.run(key);
123
- }
124
-
125
- //states guards
126
- setStateGuard(key, guard) {
127
- this.statesGuards.add(key, guard, true);
128
- }
129
-
130
- checkStateGuard(key) {
131
- return this.statesGuards.checkGuard(key);
132
- }
133
-
134
- removeStateGuard(key, guard) {
135
- this.statesGuards.remove(key, guard);
136
- }
137
-
138
- }
139
-
140
- module.exports = ModulesStatesManagerController;
1
+ class ModulesStatesManagerController {
2
+ constructor() {
3
+ this.singleton = true;
4
+
5
+ this._configStates;
6
+ this._currentState;
7
+ this._started = false;
8
+ this._paused = false;
9
+ this._pauseNeedResume = false;
10
+
11
+ this.statesGuards = this.getInstance('FunctionsStorage');
12
+ this.actionsGuards = this.getInstance('FunctionsStorage');
13
+ this.actionsRuns = this.getInstance('FunctionsStorage');
14
+ this.actionsTerminations = this.getInstance('FunctionsStorage');
15
+
16
+
17
+ this._iterator; //will be defined after start
18
+ this._nextState = this._nextState.bind(this);
19
+ }
20
+
21
+ start() {
22
+ if (this._started)
23
+ return;
24
+
25
+ this._currentState = null;
26
+ this._iterator = this._iteratorConstructor();
27
+ this._started = true;
28
+ this._configStates = this.getInstance('ConfigStates').get();
29
+ this._nextState();
30
+ }
31
+
32
+ pause() {
33
+ this._paused = true;
34
+ }
35
+
36
+ resume() {
37
+ this._paused = false;
38
+
39
+ if (this._pauseNeedResume) {
40
+ this._pauseNeedResume = false;
41
+ this._nextState();
42
+ }
43
+ }
44
+
45
+ _iteratorConstructor() {
46
+ let nextIndex = 0;
47
+
48
+
49
+ const getNextStateByOrder = () => {
50
+ let statesArray = Object.keys(this._configStates);
51
+
52
+ if (nextIndex === statesArray.length)
53
+ nextIndex = 0;
54
+
55
+ return statesArray[nextIndex++];
56
+ }
57
+
58
+ return {
59
+ next: (() => {
60
+ let statesArray = Object.keys(this._configStates);
61
+
62
+ //nextState
63
+ if (this._currentState) {
64
+ const currentState = this._configStates[this._currentState];
65
+
66
+ if (currentState.nextState) { //nextState: ["PICK_GAME2", "PICK_GAME1", "IDLE"]
67
+ for (const stateKey of currentState.nextState) {
68
+ if (this.checkStateGuard(stateKey)) {
69
+ nextIndex = statesArray.indexOf(stateKey) + 1;
70
+
71
+ if (nextIndex === -1) {
72
+ Urso.logger.error('ModulesStatesManagerController: nextState name error', stateKey);
73
+ continue;
74
+ }
75
+
76
+ return stateKey;
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+ //go next state by order
83
+ let stateName;
84
+
85
+ do {
86
+ stateName = getNextStateByOrder();
87
+ } while (!this.checkStateGuard(stateName));
88
+
89
+ return stateName;
90
+ }).bind(this)
91
+ }
92
+ }
93
+
94
+ _nextState() {
95
+ if (this._paused) {
96
+ this._pauseNeedResume = true;
97
+ return;
98
+ }
99
+
100
+ this._currentState = this._iterator.next();
101
+
102
+ this.emit(Urso.events.MODULES_STATES_MANAGER_STATE_CHANGE, this._currentState);
103
+
104
+ log('%c State ' + this._currentState, 'background: #bada55; color: #000')
105
+
106
+ let config = this._configStates[this._currentState];
107
+ let classInstance = this.getInstance('Helper').getActionByConfig(config);
108
+
109
+ //actions instances guard
110
+ if (!classInstance.guard())
111
+ return this._nextState();
112
+
113
+ classInstance.run(this._nextState);
114
+ }
115
+
116
+ //actions guards
117
+ addActionGuard = (key, guard) => {
118
+ this.actionsGuards.add(key, guard, true);
119
+ }
120
+
121
+ checkActionGuard = (key) => {
122
+ return this.actionsGuards.checkGuard(key);
123
+ }
124
+
125
+ removeActionGuard = (key, guard) => {
126
+ this.actionsGuards.remove(key, guard);
127
+ }
128
+
129
+ //actions runs
130
+ addActionRun = (key, runFunction) => {
131
+ this.actionsRuns.add(key, runFunction);
132
+ }
133
+
134
+ runAction = (key, onFinishCallback) => {
135
+ this.actionsRuns.runAndCallbackOnFinish(key, onFinishCallback);
136
+ }
137
+
138
+ removeActionRun = (key, runFunction) => {
139
+ this.actionsRuns.remove(key, runFunction);
140
+ }
141
+
142
+ //actions terminations
143
+ addActionTerminate = (key, terminateFunction) => {
144
+ this.actionsTerminations.add(key, terminateFunction);
145
+ }
146
+
147
+ terminateAction = (key) => {
148
+ this.actionsTerminations.run(key);
149
+ }
150
+
151
+ removeActionTerminate = (key, terminateFunction) => {
152
+ this.actionsTerminations.remove(key, terminateFunction);
153
+ }
154
+
155
+ //states guards
156
+ setStateGuard = (key, guard) => {
157
+ this.statesGuards.add(key, guard, true);
158
+ }
159
+
160
+ checkStateGuard = (key) => {
161
+ return this.statesGuards.checkGuard(key);
162
+ }
163
+
164
+ removeStateGuard = (key, guard) => {
165
+ this.statesGuards.remove(key, guard);
166
+ }
167
+
168
+ }
169
+
170
+ module.exports = ModulesStatesManagerController;
@@ -1,83 +1,83 @@
1
-
2
- class ModulesStatesManagerFunctionsStorage {
3
- constructor() {
4
- this._functionsCounter = 0;
5
- this._functions = {};
6
- }
7
-
8
- //guards
9
- add(key, guard, onlyOneFlag = false) {
10
- this._addToStorage(key, guard, onlyOneFlag);
11
- }
12
-
13
- run(key) {
14
- if (this._functions[key]) {
15
- const functionsArray = Object.values(this._functions[key]);
16
-
17
- for (const func of functionsArray) {
18
- func();
19
- }
20
- }
21
- }
22
-
23
- runAndCallbackOnFinish(key, onFinishCallback) {
24
- if (this._functions[key]) {
25
- const functionsArray = Object.values(this._functions[key]);
26
-
27
- const promises = [];
28
-
29
- for (const func of functionsArray) {
30
- promises.push(new Promise((resolve, reject) => { func(resolve); }));
31
- }
32
-
33
- Promise.all(promises).then(onFinishCallback);
34
- } else {
35
- onFinishCallback();
36
- }
37
- }
38
-
39
- checkGuard(key) {
40
- if (this._functions[key]) {
41
- const guardsArray = Object.values(this._functions[key]);
42
-
43
- for (const guard of guardsArray) {
44
- if (!guard())
45
- return false;
46
- }
47
- }
48
-
49
- return true;
50
- }
51
-
52
- remove(key, guard) {
53
- this._removeFromStorage(key, guard);
54
- }
55
-
56
- _addToStorage(key, func, onlyOneFlag) {
57
- if (!this._functions[key])
58
- this._functions[key] = {};
59
- else if (onlyOneFlag) {
60
- Urso.logger.error('ModulesStatesManagerFunctionsStorage: action or state can have only one guard', key, func);
61
- return;
62
- }
63
-
64
- const guid = this._getGuardsUid();
65
- func._guid = guid;
66
- this._functions[key][guid] = func;
67
- }
68
-
69
- _removeFromStorage(key, func) {
70
- const guid = func._guid;
71
- delete this._functions[key][guid];
72
-
73
- if (Urso.helper.getObjectSize(this._functions[key]) === 0)
74
- delete this._functions[key];
75
- }
76
-
77
- _getGuardsUid() {
78
- this._functionsCounter++;
79
- return 'guard_' + this._functionsCounter;
80
- }
81
- }
82
-
1
+
2
+ class ModulesStatesManagerFunctionsStorage {
3
+ constructor() {
4
+ this._functionsCounter = 0;
5
+ this._functions = {};
6
+ }
7
+
8
+ //guards
9
+ add(key, guard, onlyOneFlag = false) {
10
+ this._addToStorage(key, guard, onlyOneFlag);
11
+ }
12
+
13
+ run(key) {
14
+ if (this._functions[key]) {
15
+ const functionsArray = Object.values(this._functions[key]);
16
+
17
+ for (const func of functionsArray) {
18
+ func();
19
+ }
20
+ }
21
+ }
22
+
23
+ runAndCallbackOnFinish(key, onFinishCallback) {
24
+ if (this._functions[key]) {
25
+ const functionsArray = Object.values(this._functions[key]);
26
+
27
+ const promises = [];
28
+
29
+ for (const func of functionsArray) {
30
+ promises.push(new Promise((resolve, reject) => { func(resolve); }));
31
+ }
32
+
33
+ Promise.all(promises).then(onFinishCallback);
34
+ } else {
35
+ onFinishCallback();
36
+ }
37
+ }
38
+
39
+ checkGuard(key) {
40
+ if (this._functions[key]) {
41
+ const guardsArray = Object.values(this._functions[key]);
42
+
43
+ for (const guard of guardsArray) {
44
+ if (!guard())
45
+ return false;
46
+ }
47
+ }
48
+
49
+ return true;
50
+ }
51
+
52
+ remove(key, guard) {
53
+ this._removeFromStorage(key, guard);
54
+ }
55
+
56
+ _addToStorage(key, func, onlyOneFlag) {
57
+ if (!this._functions[key])
58
+ this._functions[key] = {};
59
+ else if (onlyOneFlag) {
60
+ Urso.logger.error('ModulesStatesManagerFunctionsStorage: action or state can have only one guard', key, func);
61
+ return;
62
+ }
63
+
64
+ const guid = this._getGuardsUid();
65
+ func._guid = guid;
66
+ this._functions[key][guid] = func;
67
+ }
68
+
69
+ _removeFromStorage(key, func) {
70
+ const guid = func._guid;
71
+ delete this._functions[key][guid];
72
+
73
+ if (Urso.helper.getObjectSize(this._functions[key]) === 0)
74
+ delete this._functions[key];
75
+ }
76
+
77
+ _getGuardsUid() {
78
+ this._functionsCounter++;
79
+ return 'guard_' + this._functionsCounter;
80
+ }
81
+ }
82
+
83
83
  module.exports = ModulesStatesManagerFunctionsStorage;
@@ -1,27 +1,27 @@
1
- class ModulesStatesManagerHelper {
2
- constructor() {
3
- this.singleton = true;
4
- }
5
-
6
- getActionByConfig(config) {
7
- let actionType = Object.keys(config)[0];
8
- let actionParams = config[actionType];
9
-
10
- if (actionType === "action") {
11
- //actionParams is action name
12
- let actionName = actionParams;
13
-
14
- let customActionInstance = this.getInstance('Actions.' + Urso.helper.capitaliseFirstLetter(actionName));
15
-
16
- if (customActionInstance) {
17
- return customActionInstance;
18
- }
19
- }
20
-
21
- let className = Urso.helper.capitaliseFirstLetter(actionType);
22
- return this.getInstance(className, actionParams);
23
- };
24
-
25
- }
26
-
27
- module.exports = ModulesStatesManagerHelper;
1
+ class ModulesStatesManagerHelper {
2
+ constructor() {
3
+ this.singleton = true;
4
+ }
5
+
6
+ getActionByConfig(config) {
7
+ let actionType = Object.keys(config)[0];
8
+ let actionParams = config[actionType];
9
+
10
+ if (actionType === "action") {
11
+ //actionParams is action name
12
+ let actionName = actionParams;
13
+
14
+ let customActionInstance = this.getInstance('Actions.' + Urso.helper.capitaliseFirstLetter(actionName));
15
+
16
+ if (customActionInstance) {
17
+ return customActionInstance;
18
+ }
19
+ }
20
+
21
+ let className = Urso.helper.capitaliseFirstLetter(actionType);
22
+ return this.getInstance(className, actionParams);
23
+ };
24
+
25
+ }
26
+
27
+ module.exports = ModulesStatesManagerHelper;