@peter.naydenov/notice 2.2.3 → 2.3.1

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/Changelog.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # Release History
2
2
 
3
3
 
4
+ ### 2.3.1 ( 2024-03-15 )
5
+ - [x] Fix: Callback stop should stop the wildcard callbacks as well;
6
+
7
+
8
+ ### 2.3.0 ( 2024-03-14 )
9
+ - [x] Stop execution of the event callbacks on first callback that returns string 'stop';
10
+ - [ ] Bug: Callback stop should stop the wildcard callbacks as well;
11
+
4
12
 
5
13
  ### 2.2.3 ( 2024-01-29)
6
14
  - [x] Folder 'dist' was added. It contains compiled files for commonjs and es6 modules;
@@ -16,6 +24,8 @@
16
24
  ### 2.2.1 ( 2023-10-23)
17
25
  - [x] Fix: Calling 'Reset' breaks callback execution;
18
26
 
27
+
28
+
19
29
  ### 2.2.0 ( 2023-09-20)
20
30
  - [x] Listen with wildcard was added;
21
31
  - [ ] Bug: Calling 'Reset' breaks callback execution;
package/README.md CHANGED
@@ -6,14 +6,25 @@
6
6
 
7
7
  # Notice (@peter.naydenov/notice)
8
8
 
9
- ![version](https://img.shields.io/github/package-json/v/peterNaydenov/notice)
10
- ![license](https://img.shields.io/github/license/peterNaydenov/notice)
11
- ![issues](https://img.shields.io/github/issues/peterNaydenov/notice)
9
+ ![Version](https://img.shields.io/github/package-json/v/peterNaydenov/notice)
10
+ ![License](https://img.shields.io/github/license/peterNaydenov/notice)
11
+ ![Issues](https://img.shields.io/github/issues/peterNaydenov/notice)
12
12
  ![npm bundle size](https://img.shields.io/bundlephobia/minzip/%40peter.naydenov%2Fnotice)
13
13
 
14
14
 
15
+ `Notice` is an simple event emitter. Define a behaviour related to event and then trigger the event.
16
+ Register multiple callbacks to the same event. Order of execution is the same as the order of registration.
17
+ Use method '**stop**' to mute the event for a while. Use method '**start**' to unmute the event. Method '**off**' will remove the event and all related callbacks. Method 'reset' will remove all events and functions from the event emitter.
18
+
19
+
20
+
21
+ ## Last Updates
22
+ - After version 2.1.0 Method 'reset' was added. It removes all events and functions from the event emitter;
23
+ - After version 2.3.0 If callback that returns a string 'stop', the execution of followed callbacks will be stopped. Use this functionality to create a condition checking functions before your main callback if needed;
24
+ - In version 2.3.1 and above: Callback stop will stop the wildcard callbacks as well;
25
+
26
+
15
27
 
16
- Notice is an simple event emitter. Define a behaviour related to event and then trigger the event.
17
28
 
18
29
  ## Installation
19
30
  Write in your project
@@ -29,12 +40,53 @@ npm install @peter.naydenov/notice
29
40
  ## How to use it
30
41
  Here is simple example for using this trivial event emitter:
31
42
  ```js
43
+ // with ES6 modules:
32
44
  import notice from '@peter.naydenov/notice'
45
+ // with CommonJS:
46
+ // const notice = require('@peter.naydenov/notice')
33
47
  const eBus = notice ();
34
48
 
35
49
  eBus.on ( 'note' , () => console.log ( 'hey!') )
36
50
  eBus.emit ( 'note' )
37
51
  // ---> 'hey!'
52
+
53
+ // example 2
54
+ eBus.on ( 'note' , () => console.log ( 'hey!') )
55
+ eBus.on ( 'note' , () => console.log ( 'ho!') )
56
+ eBus.emit ( 'note' ) // will execute all functions related to the event
57
+ // ---> 'hey!ho!'
58
+
59
+ // example 3
60
+ eBus.on ( 'note' , () => console.log ( 'hey!') )
61
+ eBus.on ( 'note' , () => console.log ( 'ho!') )
62
+ eBus.off ( 'note' ) // will remove all functions related to the event
63
+ eBus.emit ( 'note' ) // nothing will happen
64
+
65
+ // example 4
66
+ let x = 0;
67
+ eBus.on ( 'note' , () => {
68
+ console.log ( 'hey!')
69
+ if ( x === 0 ) {
70
+ x++
71
+ return 'stop'
72
+ }
73
+ })
74
+ eBus.on ( 'note' , () => {
75
+ console.log ( 'ho!')
76
+ x++
77
+ })
78
+ eBus.emit ( 'note' ) // Will execute only the first function. If callback returns 'stop', the execution of callbacks will be stopped.
79
+ // ---> 'hey!'
80
+ // x == 1
81
+
82
+
83
+
84
+ // example 5
85
+ eBus.on ( 'note' , () => console.log ( 'hey!') )
86
+ eBus.stop ( 'note' ) // will mute the event
87
+ eBus.emit ( 'note' ) // nothing will happen
88
+ eBus.start ( 'note' ) // will unmute the event
89
+ eBus.emit ( 'note' ) // ---> 'hey!'
38
90
  ```
39
91
 
40
92
 
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">90.74% </span>
26
+ <span class="strong">90.26% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>98/108</span>
28
+ <span class='fraction'>102/113</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">95.83% </span>
33
+ <span class="strong">94.11% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>46/48</span>
35
+ <span class='fraction'>48/51</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">90.74% </span>
47
+ <span class="strong">90.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>98/108</span>
49
+ <span class='fraction'>102/113</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="main.js"><a href="main.js.html">main.js</a></td>
83
- <td data-value="90.74" class="pic high">
83
+ <td data-value="90.26" class="pic high">
84
84
  <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
85
85
  </td>
86
- <td data-value="90.74" class="pct high">90.74%</td>
87
- <td data-value="108" class="abs high">98/108</td>
88
- <td data-value="95.83" class="pct high">95.83%</td>
89
- <td data-value="48" class="abs high">46/48</td>
86
+ <td data-value="90.26" class="pct high">90.26%</td>
87
+ <td data-value="113" class="abs high">102/113</td>
88
+ <td data-value="94.11" class="pct high">94.11%</td>
89
+ <td data-value="51" class="abs high">48/51</td>
90
90
  <td data-value="90.9" class="pct high">90.9%</td>
91
91
  <td data-value="11" class="abs high">10/11</td>
92
- <td data-value="90.74" class="pct high">90.74%</td>
93
- <td data-value="108" class="abs high">98/108</td>
92
+ <td data-value="90.26" class="pct high">90.26%</td>
93
+ <td data-value="113" class="abs high">102/113</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-01-29T06:32:42.881Z
104
+ at 2024-03-14T06:34:16.346Z
105
105
  </div>
106
106
  <script src="prettify.js"></script>
107
107
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">90.74% </span>
26
+ <span class="strong">90.26% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>98/108</span>
28
+ <span class='fraction'>102/113</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">95.83% </span>
33
+ <span class="strong">94.11% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>46/48</span>
35
+ <span class='fraction'>48/51</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">90.74% </span>
47
+ <span class="strong">90.26% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>98/108</span>
49
+ <span class='fraction'>102/113</span>
50
50
  </div>
51
51
 
52
52
 
@@ -173,26 +173,31 @@
173
173
  <a name='L108'></a><a href='#L108'>108</a>
174
174
  <a name='L109'></a><a href='#L109'>109</a>
175
175
  <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
177
- <span class="cline-any cline-yes">22x</span>
178
- <span class="cline-any cline-yes">22x</span>
179
- <span class="cline-any cline-yes">22x</span>
180
- <span class="cline-any cline-yes">22x</span>
181
- <span class="cline-any cline-yes">22x</span>
182
- <span class="cline-any cline-yes">22x</span>
183
- <span class="cline-any cline-yes">22x</span>
184
- <span class="cline-any cline-yes">22x</span>
185
- <span class="cline-any cline-yes">22x</span>
186
- <span class="cline-any cline-yes">22x</span>
187
- <span class="cline-any cline-yes">26x</span>
188
- <span class="cline-any cline-yes">26x</span>
189
- <span class="cline-any cline-yes">22x</span>
190
- <span class="cline-any cline-yes">22x</span>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
182
+ <span class="cline-any cline-yes">23x</span>
183
+ <span class="cline-any cline-yes">23x</span>
184
+ <span class="cline-any cline-yes">23x</span>
185
+ <span class="cline-any cline-yes">23x</span>
186
+ <span class="cline-any cline-yes">23x</span>
187
+ <span class="cline-any cline-yes">23x</span>
188
+ <span class="cline-any cline-yes">23x</span>
189
+ <span class="cline-any cline-yes">23x</span>
190
+ <span class="cline-any cline-yes">23x</span>
191
+ <span class="cline-any cline-yes">23x</span>
192
+ <span class="cline-any cline-yes">29x</span>
193
+ <span class="cline-any cline-yes">29x</span>
194
+ <span class="cline-any cline-yes">23x</span>
195
+ <span class="cline-any cline-yes">23x</span>
191
196
  <span class="cline-any cline-yes">9x</span>
192
197
  <span class="cline-any cline-yes">9x</span>
193
198
  <span class="cline-any cline-yes">9x</span>
194
- <span class="cline-any cline-yes">22x</span>
195
- <span class="cline-any cline-yes">22x</span>
199
+ <span class="cline-any cline-yes">23x</span>
200
+ <span class="cline-any cline-yes">23x</span>
196
201
  <span class="cline-any cline-yes">7x</span>
197
202
  <span class="cline-any cline-yes">5x</span>
198
203
  <span class="cline-any cline-yes">5x</span>
@@ -202,19 +207,19 @@
202
207
  <span class="cline-any cline-yes">5x</span>
203
208
  <span class="cline-any cline-yes">7x</span>
204
209
  <span class="cline-any cline-yes">7x</span>
205
- <span class="cline-any cline-yes">22x</span>
206
- <span class="cline-any cline-yes">22x</span>
210
+ <span class="cline-any cline-yes">23x</span>
211
+ <span class="cline-any cline-yes">23x</span>
207
212
  <span class="cline-any cline-yes">1x</span>
208
213
  <span class="cline-any cline-yes">1x</span>
209
214
  <span class="cline-any cline-yes">1x</span>
210
- <span class="cline-any cline-yes">22x</span>
211
- <span class="cline-any cline-yes">22x</span>
215
+ <span class="cline-any cline-yes">23x</span>
216
+ <span class="cline-any cline-yes">23x</span>
212
217
  <span class="cline-any cline-no">&nbsp;</span>
213
218
  <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-yes">22x</span>
215
- <span class="cline-any cline-yes">22x</span>
216
- <span class="cline-any cline-yes">38x</span>
217
- <span class="cline-any cline-yes">38x</span>
219
+ <span class="cline-any cline-yes">23x</span>
220
+ <span class="cline-any cline-yes">23x</span>
221
+ <span class="cline-any cline-yes">39x</span>
222
+ <span class="cline-any cline-yes">39x</span>
218
223
  <span class="cline-any cline-no">&nbsp;</span>
219
224
  <span class="cline-any cline-no">&nbsp;</span>
220
225
  <span class="cline-any cline-no">&nbsp;</span>
@@ -223,36 +228,41 @@
223
228
  <span class="cline-any cline-no">&nbsp;</span>
224
229
  <span class="cline-any cline-no">&nbsp;</span>
225
230
  <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-yes">38x</span>
227
- <span class="cline-any cline-yes">38x</span>
228
- <span class="cline-any cline-yes">28x</span>
229
- <span class="cline-any cline-yes">28x</span>
230
- <span class="cline-any cline-yes">21x</span>
231
- <span class="cline-any cline-yes">21x</span>
232
- <span class="cline-any cline-yes">38x</span>
233
- <span class="cline-any cline-yes">38x</span>
234
- <span class="cline-any cline-yes">38x</span>
231
+ <span class="cline-any cline-yes">39x</span>
232
+ <span class="cline-any cline-yes">39x</span>
233
+ <span class="cline-any cline-yes">29x</span>
234
+ <span class="cline-any cline-yes">29x</span>
235
+ <span class="cline-any cline-yes">22x</span>
236
+ <span class="cline-any cline-yes">24x</span>
237
+ <span class="cline-any cline-yes">24x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-yes">22x</span>
241
+ <span class="cline-any cline-yes">22x</span>
242
+ <span class="cline-any cline-yes">39x</span>
243
+ <span class="cline-any cline-yes">39x</span>
244
+ <span class="cline-any cline-yes">39x</span>
235
245
  <span class="cline-any cline-yes">3x</span>
236
246
  <span class="cline-any cline-yes">3x</span>
237
247
  <span class="cline-any cline-yes">3x</span>
238
248
  <span class="cline-any cline-yes">3x</span>
239
- <span class="cline-any cline-yes">38x</span>
249
+ <span class="cline-any cline-yes">39x</span>
240
250
  <span class="cline-any cline-yes">6x</span>
241
251
  <span class="cline-any cline-yes">5x</span>
242
252
  <span class="cline-any cline-yes">5x</span>
243
253
  <span class="cline-any cline-yes">5x</span>
244
- <span class="cline-any cline-yes">38x</span>
245
- <span class="cline-any cline-yes">19x</span>
246
- <span class="cline-any cline-yes">19x</span>
247
- <span class="cline-any cline-yes">22x</span>
248
- <span class="cline-any cline-yes">22x</span>
254
+ <span class="cline-any cline-yes">39x</span>
255
+ <span class="cline-any cline-yes">20x</span>
256
+ <span class="cline-any cline-yes">20x</span>
257
+ <span class="cline-any cline-yes">23x</span>
258
+ <span class="cline-any cline-yes">23x</span>
249
259
  <span class="cline-any cline-yes">3x</span>
250
260
  <span class="cline-any cline-yes">1x</span>
251
261
  <span class="cline-any cline-yes">1x</span>
252
262
  <span class="cline-any cline-yes">1x</span>
253
263
  <span class="cline-any cline-yes">2x</span>
254
- <span class="cline-any cline-yes">22x</span>
255
- <span class="cline-any cline-yes">22x</span>
264
+ <span class="cline-any cline-yes">23x</span>
265
+ <span class="cline-any cline-yes">23x</span>
256
266
  <span class="cline-any cline-yes">4x</span>
257
267
  <span class="cline-any cline-yes">1x</span>
258
268
  <span class="cline-any cline-yes">1x</span>
@@ -262,21 +272,21 @@
262
272
  <span class="cline-any cline-yes">1x</span>
263
273
  <span class="cline-any cline-yes">1x</span>
264
274
  <span class="cline-any cline-yes">3x</span>
265
- <span class="cline-any cline-yes">22x</span>
266
- <span class="cline-any cline-yes">22x</span>
267
- <span class="cline-any cline-yes">22x</span>
268
- <span class="cline-any cline-yes">22x</span>
269
- <span class="cline-any cline-yes">22x</span>
270
- <span class="cline-any cline-yes">22x</span>
271
- <span class="cline-any cline-yes">22x</span>
272
- <span class="cline-any cline-yes">22x</span>
273
- <span class="cline-any cline-yes">22x</span>
274
- <span class="cline-any cline-yes">22x</span>
275
- <span class="cline-any cline-yes">22x</span>
276
- <span class="cline-any cline-yes">22x</span>
277
- <span class="cline-any cline-yes">22x</span>
278
- <span class="cline-any cline-yes">22x</span>
279
- <span class="cline-any cline-yes">22x</span>
275
+ <span class="cline-any cline-yes">23x</span>
276
+ <span class="cline-any cline-yes">23x</span>
277
+ <span class="cline-any cline-yes">23x</span>
278
+ <span class="cline-any cline-yes">23x</span>
279
+ <span class="cline-any cline-yes">23x</span>
280
+ <span class="cline-any cline-yes">23x</span>
281
+ <span class="cline-any cline-yes">23x</span>
282
+ <span class="cline-any cline-yes">23x</span>
283
+ <span class="cline-any cline-yes">23x</span>
284
+ <span class="cline-any cline-yes">23x</span>
285
+ <span class="cline-any cline-yes">23x</span>
286
+ <span class="cline-any cline-yes">23x</span>
287
+ <span class="cline-any cline-yes">23x</span>
288
+ <span class="cline-any cline-yes">23x</span>
289
+ <span class="cline-any cline-yes">23x</span>
280
290
  <span class="cline-any cline-yes">1x</span>
281
291
  <span class="cline-any cline-yes">1x</span>
282
292
  <span class="cline-any cline-yes">1x</span>
@@ -337,7 +347,12 @@ function notice () {
337
347
  function exeCallback ( name ) {
338
348
  if ( name === '*' ) return
339
349
  if ( ignore.includes(name) ) return
340
- scroll[name].forEach ( fn =&gt; fn(...args))
350
+ scroll[name].every ( fn =&gt; {
351
+ const r = fn ( ...args );
352
+ if ( typeof(r) !== 'string' ) return true
353
+ if ( r.toUpperCase() === 'STOP' ) return false
354
+ <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > return true</span></span>
355
+ })
341
356
  scroll['*'].forEach ( fn =&gt; fn(e,...args) )
342
357
  } // exeCallback func.
343
358
  &nbsp;
@@ -400,7 +415,7 @@ export default notice
400
415
  <div class='footer quiet pad2 space-top1 center small'>
401
416
  Code coverage generated by
402
417
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
403
- at 2024-01-29T06:32:42.881Z
418
+ at 2024-03-14T06:34:16.346Z
404
419
  </div>
405
420
  <script src="prettify.js"></script>
406
421
  <script>