@next-k8s/tickets 1.0.25 → 1.0.26

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.26](https://github.com/mathiscode/next-k8s/compare/@next-k8s/tickets@1.0.25...@next-k8s/tickets@1.0.26) (2022-07-12)
7
+
8
+ **Note:** Version bump only for package @next-k8s/tickets
9
+
10
+
11
+
12
+
13
+
6
14
  ## [1.0.25](https://github.com/mathiscode/next-k8s/compare/@next-k8s/tickets@1.0.24...@next-k8s/tickets@1.0.25) (2022-07-11)
7
15
 
8
16
  **Note:** Version bump only for package @next-k8s/tickets
@@ -1,6 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1657409706814" clover="3.2.0">
3
- <project timestamp="1657409706814" name="All files">
4
- <metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0" elements="0" coveredelements="0" complexity="0" loc="0" ncloc="0" packages="0" files="0" classes="0"/>
2
+ <coverage generated="1657649017388" clover="3.2.0">
3
+ <project timestamp="1657649017388" name="All files">
4
+ <metrics statements="11" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="1" elements="13" coveredelements="9" complexity="0" loc="11" ncloc="11" packages="1" files="1" classes="1"/>
5
+ <file name="ticket.ts" path="/home/j/code/next-k8s/packages/tickets/src/models/ticket.ts">
6
+ <metrics statements="11" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="1"/>
7
+ <line num="1" count="1" type="stmt"/>
8
+ <line num="2" count="1" type="stmt"/>
9
+ <line num="12" count="1" type="stmt"/>
10
+ <line num="30" count="0" type="stmt"/>
11
+ <line num="31" count="0" type="stmt"/>
12
+ <line num="32" count="0" type="stmt"/>
13
+ <line num="37" count="1" type="stmt"/>
14
+ <line num="38" count="1" type="stmt"/>
15
+ <line num="40" count="1" type="stmt"/>
16
+ <line num="41" count="1" type="stmt"/>
17
+ <line num="43" count="4" type="stmt"/>
18
+ </file>
5
19
  </project>
6
20
  </coverage>
@@ -1 +1,2 @@
1
- {}
1
+ {"/home/j/code/next-k8s/packages/tickets/src/models/ticket.ts": {"path":"/home/j/code/next-k8s/packages/tickets/src/models/ticket.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":66}},"2":{"start":{"line":12,"column":21},"end":{"line":35,"column":2}},"3":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"4":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"5":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"6":{"start":{"line":37,"column":0},"end":{"line":37,"column":null}},"7":{"start":{"line":38,"column":0},"end":{"line":38,"column":null}},"8":{"start":{"line":40,"column":13},"end":{"line":40,"column":null}},"9":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"10":{"start":{"line":41,"column":0},"end":{"line":41,"column":21}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":13}},"loc":{"start":{"line":29,"column":23},"end":{"line":33,"column":5}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":2},"end":{"line":42,"column":14}},"loc":{"start":{"line":42,"column":42},"end":{"line":44,"column":3}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":1,"7":1,"8":1,"9":4,"10":1},"f":{"0":0,"1":4},"b":{}}
2
+ }
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">Unknown% </span>
26
+ <span class="strong">72.72% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/0</span>
28
+ <span class='fraction'>8/11</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">Unknown% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>0/0</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">Unknown% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/0</span>
42
+ <span class='fraction'>1/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">Unknown% </span>
47
+ <span class="strong">72.72% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/0</span>
49
+ <span class='fraction'>8/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -78,7 +78,22 @@
78
78
  <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
79
  </tr>
80
80
  </thead>
81
- <tbody></tbody>
81
+ <tbody><tr>
82
+ <td class="file medium" data-value="ticket.ts"><a href="ticket.ts.html">ticket.ts</a></td>
83
+ <td data-value="72.72" class="pic medium">
84
+ <div class="chart"><div class="cover-fill" style="width: 72%"></div><div class="cover-empty" style="width: 28%"></div></div>
85
+ </td>
86
+ <td data-value="72.72" class="pct medium">72.72%</td>
87
+ <td data-value="11" class="abs medium">8/11</td>
88
+ <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="0" class="abs high">0/0</td>
90
+ <td data-value="50" class="pct medium">50%</td>
91
+ <td data-value="2" class="abs medium">1/2</td>
92
+ <td data-value="72.72" class="pct medium">72.72%</td>
93
+ <td data-value="11" class="abs medium">8/11</td>
94
+ </tr>
95
+
96
+ </tbody>
82
97
  </table>
83
98
  </div>
84
99
  <div class='push'></div><!-- for sticky footer -->
@@ -86,7 +101,7 @@
86
101
  <div class='footer quiet pad2 space-top1 center small'>
87
102
  Code coverage generated by
88
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
89
- at Sat Jul 09 2022 18:35:06 GMT-0500 (Central Daylight Time)
104
+ at Tue Jul 12 2022 13:03:37 GMT-0500 (Central Daylight Time)
90
105
  </div>
91
106
  <script src="prettify.js"></script>
92
107
  <script>
@@ -133,7 +133,7 @@ export default app
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
136
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
137
137
  </div>
138
138
  <script src="../prettify.js"></script>
139
139
  <script>
@@ -0,0 +1,106 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/events/publishers/created.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/events/publishers</a> created.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>4/4</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>4/4</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
74
+ <span class="cline-any cline-neutral">&nbsp;</span>
75
+ <span class="cline-any cline-yes">4x</span>
76
+ <span class="cline-any cline-yes">10x</span>
77
+ <span class="cline-any cline-neutral">&nbsp;</span>
78
+ <span class="cline-any cline-neutral">&nbsp;</span>
79
+ <span class="cline-any cline-yes">4x</span>
80
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Publisher, Subjects, TicketCreatedEvent } from '@next-k8s/common'
81
+ &nbsp;
82
+ export class TicketCreatedPublisher extends Publisher&lt;TicketCreatedEvent&gt; {
83
+ readonly subject = Subjects.TicketCreated
84
+ }
85
+ &nbsp;
86
+ export default TicketCreatedPublisher
87
+ &nbsp;</pre></td></tr></table></pre>
88
+
89
+ <div class='push'></div><!-- for sticky footer -->
90
+ </div><!-- /wrapper -->
91
+ <div class='footer quiet pad2 space-top1 center small'>
92
+ Code coverage generated by
93
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
95
+ </div>
96
+ <script src="../../../prettify.js"></script>
97
+ <script>
98
+ window.onload = function () {
99
+ prettyPrint();
100
+ };
101
+ </script>
102
+ <script src="../../../sorter.js"></script>
103
+ <script src="../../../block-navigation.js"></script>
104
+ </body>
105
+ </html>
106
+
@@ -0,0 +1,131 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/events/publishers</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> src/events/publishers</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>8/8</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>2/2</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>8/8</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <div class="pad1">
66
+ <table class="coverage-summary">
67
+ <thead>
68
+ <tr>
69
+ <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70
+ <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71
+ <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72
+ <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73
+ <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74
+ <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75
+ <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76
+ <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77
+ <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78
+ <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
+ </tr>
80
+ </thead>
81
+ <tbody><tr>
82
+ <td class="file high" data-value="created.ts"><a href="created.ts.html">created.ts</a></td>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
+ </td>
86
+ <td data-value="100" class="pct high">100%</td>
87
+ <td data-value="4" class="abs high">4/4</td>
88
+ <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="0" class="abs high">0/0</td>
90
+ <td data-value="100" class="pct high">100%</td>
91
+ <td data-value="1" class="abs high">1/1</td>
92
+ <td data-value="100" class="pct high">100%</td>
93
+ <td data-value="4" class="abs high">4/4</td>
94
+ </tr>
95
+
96
+ <tr>
97
+ <td class="file high" data-value="updated.ts"><a href="updated.ts.html">updated.ts</a></td>
98
+ <td data-value="100" class="pic high">
99
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
100
+ </td>
101
+ <td data-value="100" class="pct high">100%</td>
102
+ <td data-value="4" class="abs high">4/4</td>
103
+ <td data-value="100" class="pct high">100%</td>
104
+ <td data-value="0" class="abs high">0/0</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="1" class="abs high">1/1</td>
107
+ <td data-value="100" class="pct high">100%</td>
108
+ <td data-value="4" class="abs high">4/4</td>
109
+ </tr>
110
+
111
+ </tbody>
112
+ </table>
113
+ </div>
114
+ <div class='push'></div><!-- for sticky footer -->
115
+ </div><!-- /wrapper -->
116
+ <div class='footer quiet pad2 space-top1 center small'>
117
+ Code coverage generated by
118
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
120
+ </div>
121
+ <script src="../../../prettify.js"></script>
122
+ <script>
123
+ window.onload = function () {
124
+ prettyPrint();
125
+ };
126
+ </script>
127
+ <script src="../../../sorter.js"></script>
128
+ <script src="../../../block-navigation.js"></script>
129
+ </body>
130
+ </html>
131
+
@@ -0,0 +1,106 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/events/publishers/updated.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/events/publishers</a> updated.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>4/4</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>4/4</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
74
+ <span class="cline-any cline-neutral">&nbsp;</span>
75
+ <span class="cline-any cline-yes">4x</span>
76
+ <span class="cline-any cline-yes">1x</span>
77
+ <span class="cline-any cline-neutral">&nbsp;</span>
78
+ <span class="cline-any cline-neutral">&nbsp;</span>
79
+ <span class="cline-any cline-yes">4x</span>
80
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Publisher, Subjects, TicketUpdatedEvent } from '@next-k8s/common'
81
+ &nbsp;
82
+ export class TicketUpdatedPublisher extends Publisher&lt;TicketUpdatedEvent&gt; {
83
+ readonly subject = Subjects.TicketUpdated
84
+ }
85
+ &nbsp;
86
+ export default TicketUpdatedPublisher
87
+ &nbsp;</pre></td></tr></table></pre>
88
+
89
+ <div class='push'></div><!-- for sticky footer -->
90
+ </div><!-- /wrapper -->
91
+ <div class='footer quiet pad2 space-top1 center small'>
92
+ Code coverage generated by
93
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
95
+ </div>
96
+ <script src="../../../prettify.js"></script>
97
+ <script>
98
+ window.onload = function () {
99
+ prettyPrint();
100
+ };
101
+ </script>
102
+ <script src="../../../sorter.js"></script>
103
+ <script src="../../../block-navigation.js"></script>
104
+ </body>
105
+ </html>
106
+
@@ -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 Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
104
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
28
+ <span class='fraction'>11/11</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="8" class="abs high">8/8</td>
87
+ <td data-value="11" class="abs high">11/11</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
89
  <td data-value="0" class="abs high">0/0</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="2" class="abs high">2/2</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="8" class="abs high">8/8</td>
93
+ <td data-value="11" class="abs high">11/11</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 Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
104
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
28
+ <span class='fraction'>11/11</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
49
+ <span class='fraction'>11/11</span>
50
50
  </div>
51
51
 
52
52
 
@@ -105,7 +105,11 @@
105
105
  <a name='L40'></a><a href='#L40'>40</a>
106
106
  <a name='L41'></a><a href='#L41'>41</a>
107
107
  <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">5x</span>
112
+ <span class="cline-any cline-yes">5x</span>
109
113
  <span class="cline-any cline-neutral">&nbsp;</span>
110
114
  <span class="cline-any cline-neutral">&nbsp;</span>
111
115
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -115,8 +119,7 @@
115
119
  <span class="cline-any cline-neutral">&nbsp;</span>
116
120
  <span class="cline-any cline-neutral">&nbsp;</span>
117
121
  <span class="cline-any cline-neutral">&nbsp;</span>
118
- <span class="cline-any cline-yes">4x</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-yes">5x</span>
120
123
  <span class="cline-any cline-neutral">&nbsp;</span>
121
124
  <span class="cline-any cline-neutral">&nbsp;</span>
122
125
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -141,13 +144,17 @@
141
144
  <span class="cline-any cline-neutral">&nbsp;</span>
142
145
  <span class="cline-any cline-neutral">&nbsp;</span>
143
146
  <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-yes">4x</span>
145
- <span class="cline-any cline-yes">4x</span>
147
+ <span class="cline-any cline-yes">5x</span>
148
+ <span class="cline-any cline-yes">5x</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">5x</span>
151
+ <span class="cline-any cline-yes">5x</span>
146
152
  <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-yes">17x</span>
153
+ <span class="cline-any cline-yes">20x</span>
148
154
  <span class="cline-any cline-neutral">&nbsp;</span>
149
155
  <span class="cline-any cline-neutral">&nbsp;</span>
150
156
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import mongoose, { ObjectId } from 'mongoose'
157
+ import { updateIfCurrentPlugin } from 'mongoose-update-if-current'
151
158
  &nbsp;
152
159
  interface TicketAttributes {
153
160
  title: String;
@@ -174,7 +181,6 @@ const ticketSchema = new mongoose.Schema({
174
181
  }
175
182
  }, {
176
183
  toJSON: {
177
- versionKey: false,
178
184
  transform (doc, ret) {
179
185
  ret.id = ret._id
180
186
  delete ret._id
@@ -183,6 +189,9 @@ const ticketSchema = new mongoose.Schema({
183
189
  }
184
190
  })
185
191
  &nbsp;
192
+ ticketSchema.set('versionKey', 'version')
193
+ ticketSchema.plugin(updateIfCurrentPlugin)
194
+ &nbsp;
186
195
  export const TicketModel = mongoose.model('Ticket', ticketSchema)
187
196
  export default class Ticket extends TicketModel {
188
197
  constructor(attributes: TicketAttributes) {
@@ -196,7 +205,7 @@ export default class Ticket extends TicketModel {
196
205
  <div class='footer quiet pad2 space-top1 center small'>
197
206
  Code coverage generated by
198
207
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
199
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
208
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
200
209
  </div>
201
210
  <script src="../../prettify.js"></script>
202
211
  <script>
@@ -116,7 +116,7 @@ import { body } from 'express-validator'
116
116
  import { requireAuth, validateRequest } from '@next-k8s/common'
117
117
  &nbsp;
118
118
  import Ticket from '../models/ticket'
119
- import { TicketCreatedPublisher } from '../events/publishers/tickets/created'
119
+ import TicketCreatedPublisher from '../events/publishers/created'
120
120
  import natsClient from '../nats-client'
121
121
  &nbsp;
122
122
  const router = express.Router()
@@ -142,7 +142,7 @@ export default router
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
145
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
146
146
  </div>
147
147
  <script src="../../prettify.js"></script>
148
148
  <script>
@@ -103,7 +103,7 @@ export default router
103
103
  <div class='footer quiet pad2 space-top1 center small'>
104
104
  Code coverage generated by
105
105
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
106
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
106
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
107
107
  </div>
108
108
  <script src="../../prettify.js"></script>
109
109
  <script>
@@ -118,7 +118,7 @@ export default router
118
118
  <div class='footer quiet pad2 space-top1 center small'>
119
119
  Code coverage generated by
120
120
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
121
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
121
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
122
122
  </div>
123
123
  <script src="../../prettify.js"></script>
124
124
  <script>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
164
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
167
167
  <script>
@@ -88,7 +88,7 @@ export default [findTickets, getTicket, createTicket, updateTicket]
88
88
  <div class='footer quiet pad2 space-top1 center small'>
89
89
  Code coverage generated by
90
90
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
91
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
91
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
92
92
  </div>
93
93
  <script src="../../prettify.js"></script>
94
94
  <script>
@@ -91,12 +91,10 @@
91
91
  <a name='L26'></a><a href='#L26'>26</a>
92
92
  <a name='L27'></a><a href='#L27'>27</a>
93
93
  <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
94
+ <a name='L29'></a><a href='#L29'>29</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">4x</span>
96
95
  <span class="cline-any cline-yes">4x</span>
97
96
  <span class="cline-any cline-yes">4x</span>
98
97
  <span class="cline-any cline-yes">4x</span>
99
- <span class="cline-any cline-neutral">&nbsp;</span>
100
98
  <span class="cline-any cline-yes">4x</span>
101
99
  <span class="cline-any cline-yes">4x</span>
102
100
  <span class="cline-any cline-yes">4x</span>
@@ -125,9 +123,8 @@
125
123
  import express, { Request, Response } from 'express'
126
124
  import { body } from 'express-validator'
127
125
  import { isValidObjectId } from 'mongoose'
128
- &nbsp;
129
126
  import Ticket from '../models/ticket'
130
- import TicketUpdatedPublisher from '../events/publishers/tickets/updated'
127
+ import TicketUpdatedPublisher from '../events/publishers/updated'
131
128
  import natsClient from '../nats-client'
132
129
  &nbsp;
133
130
  const router = express.Router()
@@ -157,7 +154,7 @@ export default router
157
154
  <div class='footer quiet pad2 space-top1 center small'>
158
155
  Code coverage generated by
159
156
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
160
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
157
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
161
158
  </div>
162
159
  <script src="../../prettify.js"></script>
163
160
  <script>
@@ -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 Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
104
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -97,7 +97,7 @@ export const createTicket = (app: Express.Application, cookie?: string, title =
97
97
  <div class='footer quiet pad2 space-top1 center small'>
98
98
  Code coverage generated by
99
99
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
100
- at Sat Jul 09 2022 13:25:54 GMT-0500 (Central Daylight Time)
100
+ at Tue Jul 12 2022 12:57:10 GMT-0500 (Central Daylight Time)
101
101
  </div>
102
102
  <script src="../../prettify.js"></script>
103
103
  <script>
@@ -0,0 +1,220 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for ticket.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="prettify.css" />
9
+ <link rel="stylesheet" href="base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="index.html">All files</a> ticket.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">72.72% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>8/11</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">50% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/2</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">72.72% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>8/11</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line medium'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-neutral">&nbsp;</span>
114
+ <span class="cline-any cline-neutral">&nbsp;</span>
115
+ <span class="cline-any cline-neutral">&nbsp;</span>
116
+ <span class="cline-any cline-neutral">&nbsp;</span>
117
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
+ <span class="cline-any cline-neutral">&nbsp;</span>
119
+ <span class="cline-any cline-neutral">&nbsp;</span>
120
+ <span class="cline-any cline-neutral">&nbsp;</span>
121
+ <span class="cline-any cline-neutral">&nbsp;</span>
122
+ <span class="cline-any cline-yes">1x</span>
123
+ <span class="cline-any cline-neutral">&nbsp;</span>
124
+ <span class="cline-any cline-neutral">&nbsp;</span>
125
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
+ <span class="cline-any cline-neutral">&nbsp;</span>
127
+ <span class="cline-any cline-neutral">&nbsp;</span>
128
+ <span class="cline-any cline-neutral">&nbsp;</span>
129
+ <span class="cline-any cline-neutral">&nbsp;</span>
130
+ <span class="cline-any cline-neutral">&nbsp;</span>
131
+ <span class="cline-any cline-neutral">&nbsp;</span>
132
+ <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-neutral">&nbsp;</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
136
+ <span class="cline-any cline-neutral">&nbsp;</span>
137
+ <span class="cline-any cline-neutral">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-no">&nbsp;</span>
141
+ <span class="cline-any cline-no">&nbsp;</span>
142
+ <span class="cline-any cline-no">&nbsp;</span>
143
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-neutral">&nbsp;</span>
147
+ <span class="cline-any cline-yes">1x</span>
148
+ <span class="cline-any cline-yes">1x</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">1x</span>
151
+ <span class="cline-any cline-yes">1x</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-yes">4x</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import mongoose, { ObjectId } from 'mongoose'
157
+ import { updateIfCurrentPlugin } from 'mongoose-update-if-current'
158
+ &nbsp;
159
+ interface TicketAttributes {
160
+ title: String;
161
+ price: Number;
162
+ owner: string;
163
+ createdAt?: Date;
164
+ updatedAt?: Date;
165
+ }
166
+ &nbsp;
167
+ const ticketSchema = new mongoose.Schema({
168
+ title: {
169
+ type: String,
170
+ required: true
171
+ },
172
+ &nbsp;
173
+ price: {
174
+ type: Number,
175
+ required: true
176
+ },
177
+ &nbsp;
178
+ owner: {
179
+ type: mongoose.Schema.Types.ObjectId,
180
+ required: true
181
+ }
182
+ }, {
183
+ toJSON: {
184
+ <span class="fstat-no" title="function not covered" > transform </span>(doc, ret) {
185
+ <span class="cstat-no" title="statement not covered" > ret.id = ret._id</span>
186
+ <span class="cstat-no" title="statement not covered" > delete ret._id</span>
187
+ <span class="cstat-no" title="statement not covered" > delete ret.password</span>
188
+ }
189
+ }
190
+ })
191
+ &nbsp;
192
+ ticketSchema.set('versionKey', 'version')
193
+ ticketSchema.plugin(updateIfCurrentPlugin)
194
+ &nbsp;
195
+ export const TicketModel = mongoose.model('Ticket', ticketSchema)
196
+ export default class Ticket extends TicketModel {
197
+ constructor(attributes: TicketAttributes) {
198
+ super(attributes)
199
+ }
200
+ }
201
+ &nbsp;</pre></td></tr></table></pre>
202
+
203
+ <div class='push'></div><!-- for sticky footer -->
204
+ </div><!-- /wrapper -->
205
+ <div class='footer quiet pad2 space-top1 center small'>
206
+ Code coverage generated by
207
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
208
+ at Tue Jul 12 2022 13:03:37 GMT-0500 (Central Daylight Time)
209
+ </div>
210
+ <script src="prettify.js"></script>
211
+ <script>
212
+ window.onload = function () {
213
+ prettyPrint();
214
+ };
215
+ </script>
216
+ <script src="sorter.js"></script>
217
+ <script src="block-navigation.js"></script>
218
+ </body>
219
+ </html>
220
+
@@ -0,0 +1,24 @@
1
+ TN:
2
+ SF:src/models/ticket.ts
3
+ FN:29,(anonymous_1)
4
+ FN:42,(anonymous_2)
5
+ FNF:2
6
+ FNH:1
7
+ FNDA:0,(anonymous_1)
8
+ FNDA:4,(anonymous_2)
9
+ DA:1,1
10
+ DA:2,1
11
+ DA:12,1
12
+ DA:30,0
13
+ DA:31,0
14
+ DA:32,0
15
+ DA:37,1
16
+ DA:38,1
17
+ DA:40,1
18
+ DA:41,1
19
+ DA:43,4
20
+ LF:11
21
+ LH:8
22
+ BRF:0
23
+ BRH:0
24
+ end_of_record
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-k8s/tickets",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -34,7 +34,7 @@
34
34
  ]
35
35
  },
36
36
  "dependencies": {
37
- "@next-k8s/common": "^0.1.33",
37
+ "@next-k8s/common": "^0.1.34",
38
38
  "@types/cookie-session": "^2.0.44",
39
39
  "@types/express": "^4.17.13",
40
40
  "@types/jsonwebtoken": "^8.5.8",
@@ -46,6 +46,7 @@
46
46
  "jsonwebtoken": "^8.5.1",
47
47
  "mongoose": "^6.3.5",
48
48
  "mongoose-bcrypt": "^1.9.0",
49
+ "mongoose-update-if-current": "^1.4.0",
49
50
  "node-nats-streaming": "^0.3.2",
50
51
  "ts-node-dev": "^2.0.0",
51
52
  "typescript": "^4.7.3"
@@ -61,5 +62,5 @@
61
62
  "supertest": "^6.2.3",
62
63
  "ts-jest": "^28.0.4"
63
64
  },
64
- "gitHead": "e182566d2a65f731ed1ae69091a1336359a99c0b"
65
+ "gitHead": "10be151191ede8c7f7f5c459c716e09502e8e4d1"
65
66
  }
package/pnpm-lock.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  lockfileVersion: 5.4
2
2
 
3
3
  specifiers:
4
- '@next-k8s/common': ^0.1.30
4
+ '@next-k8s/common': ^0.1.33
5
5
  '@types/body-parser': ^1.19.2
6
6
  '@types/cookie-session': ^2.0.44
7
7
  '@types/express': ^4.17.13
@@ -19,6 +19,7 @@ specifiers:
19
19
  mongodb-memory-server: ^8.6.0
20
20
  mongoose: ^6.3.5
21
21
  mongoose-bcrypt: ^1.9.0
22
+ mongoose-update-if-current: ^1.4.0
22
23
  node-nats-streaming: ^0.3.2
23
24
  node-notifier: ^10.0.1
24
25
  supertest: ^6.2.3
@@ -27,7 +28,7 @@ specifiers:
27
28
  typescript: ^4.7.3
28
29
 
29
30
  dependencies:
30
- '@next-k8s/common': 0.1.30
31
+ '@next-k8s/common': 0.1.33
31
32
  '@types/cookie-session': 2.0.44
32
33
  '@types/express': 4.17.13
33
34
  '@types/jsonwebtoken': 8.5.8
@@ -39,6 +40,7 @@ dependencies:
39
40
  jsonwebtoken: 8.5.1
40
41
  mongoose: 6.3.5
41
42
  mongoose-bcrypt: 1.9.0
43
+ mongoose-update-if-current: 1.4.0_mongoose@6.3.5
42
44
  node-nats-streaming: 0.3.2
43
45
  ts-node-dev: 2.0.0_mdwa2u5d66aaselucuqqyziihu
44
46
  typescript: 4.7.3
@@ -653,8 +655,8 @@ packages:
653
655
  '@jridgewell/resolve-uri': 3.0.7
654
656
  '@jridgewell/sourcemap-codec': 1.4.13
655
657
 
656
- /@next-k8s/common/0.1.30:
657
- resolution: {integrity: sha512-weuxOM1+zCGCSgIjYa1dAyRgJISRODxl5tolxE/yeEorVoykI+UgHUEA1y60UprnjX+BBRvujuDzBtwAsnOIng==}
658
+ /@next-k8s/common/0.1.33:
659
+ resolution: {integrity: sha512-OMNES7oDpgNcI0NXFRI5zIsn1mRga29QwIJr2Km7wXKc0tvbL+t6bZEFzR7LTYlqX0PszTc1rR5NkkGy30VPFg==}
658
660
  dependencies:
659
661
  cookie-session: 2.0.0
660
662
  express: 4.18.1
@@ -1338,6 +1340,11 @@ packages:
1338
1340
  keygrip: 1.1.0
1339
1341
  dev: false
1340
1342
 
1343
+ /core-js/3.23.4:
1344
+ resolution: {integrity: sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==}
1345
+ requiresBuild: true
1346
+ dev: false
1347
+
1341
1348
  /create-require/1.1.1:
1342
1349
  resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
1343
1350
  dev: false
@@ -2700,6 +2707,18 @@ packages:
2700
2707
  - supports-color
2701
2708
  dev: false
2702
2709
 
2710
+ /mongoose-update-if-current/1.4.0_mongoose@6.3.5:
2711
+ resolution: {integrity: sha512-Rau2nvdiLExqXrSOwMMgDYQgf/fwTJQpPidTcT7C9UMQ282gTKXjDuh5vrjVvVQpfuvkiPis0tGHdXffaD54bg==}
2712
+ engines: {node: '>=8.0.0'}
2713
+ peerDependencies:
2714
+ mongoose: '>=5.0.0'
2715
+ dependencies:
2716
+ core-js: 3.23.4
2717
+ kareem: 2.3.5
2718
+ mongoose: 6.3.5
2719
+ regenerator-runtime: 0.13.9
2720
+ dev: false
2721
+
2703
2722
  /mongoose/6.3.5:
2704
2723
  resolution: {integrity: sha512-Ho3b/MK3lFyb87NjzyVwrjCqQ5DuLsIPSMFYDuZjaIJNhZfHNPQIcUDR1RLZ0/l+uznwo0VBu3WSwdu8EfAZTA==}
2705
2724
  engines: {node: '>=12.0.0'}
@@ -3003,6 +3022,10 @@ packages:
3003
3022
  picomatch: 2.3.1
3004
3023
  dev: false
3005
3024
 
3025
+ /regenerator-runtime/0.13.9:
3026
+ resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
3027
+ dev: false
3028
+
3006
3029
  /require-directory/2.1.1:
3007
3030
  resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
3008
3031
  engines: {node: '>=0.10.0'}
@@ -0,0 +1,37 @@
1
+ import mongoose from 'mongoose'
2
+ import Ticket from '../ticket'
3
+
4
+ describe('[Models] Ticket Model', () => {
5
+ it('implements optimistic concurrency control', async () => {
6
+ const ticket = new Ticket({ title: 'Test Ticket', price: 20000, owner: new mongoose.Types.ObjectId().toHexString() })
7
+ await ticket.save()
8
+
9
+ const copies = [
10
+ await Ticket.findById(ticket.id),
11
+ await Ticket.findById(ticket.id)
12
+ ]
13
+
14
+ copies[0].set({ price: 15000 })
15
+ copies[1].set({ price: 23000 })
16
+
17
+ await copies[0].save()
18
+
19
+ try {
20
+ await copies[1].save()
21
+ } catch {
22
+ return
23
+ }
24
+
25
+ throw new Error('Ticket was saved when it should not have been')
26
+ })
27
+
28
+ it('increments the version number on update', async () => {
29
+ const ticket = new Ticket({ title: 'Test Ticket', price: 20000, owner: new mongoose.Types.ObjectId().toHexString() })
30
+ await ticket.save()
31
+ expect(ticket.version).toEqual(0)
32
+ await ticket.save()
33
+ expect(ticket.version).toEqual(1)
34
+ await ticket.save()
35
+ expect(ticket.version).toEqual(2)
36
+ })
37
+ })
@@ -1,4 +1,5 @@
1
1
  import mongoose, { ObjectId } from 'mongoose'
2
+ import { updateIfCurrentPlugin } from 'mongoose-update-if-current'
2
3
 
3
4
  interface TicketAttributes {
4
5
  title: String;
@@ -25,7 +26,6 @@ const ticketSchema = new mongoose.Schema({
25
26
  }
26
27
  }, {
27
28
  toJSON: {
28
- versionKey: false,
29
29
  transform (doc, ret) {
30
30
  ret.id = ret._id
31
31
  delete ret._id
@@ -34,6 +34,9 @@ const ticketSchema = new mongoose.Schema({
34
34
  }
35
35
  })
36
36
 
37
+ ticketSchema.set('versionKey', 'version')
38
+ ticketSchema.plugin(updateIfCurrentPlugin)
39
+
37
40
  export const TicketModel = mongoose.model('Ticket', ticketSchema)
38
41
  export default class Ticket extends TicketModel {
39
42
  constructor(attributes: TicketAttributes) {
@@ -3,7 +3,7 @@ import { body } from 'express-validator'
3
3
  import { requireAuth, validateRequest } from '@next-k8s/common'
4
4
 
5
5
  import Ticket from '../models/ticket'
6
- import { TicketCreatedPublisher } from '../events/publishers/tickets/created'
6
+ import TicketCreatedPublisher from '../events/publishers/created'
7
7
  import natsClient from '../nats-client'
8
8
 
9
9
  const router = express.Router()
@@ -2,9 +2,8 @@ import { BadRequestError, NotFoundError, UnauthorizedError, validateRequest, req
2
2
  import express, { Request, Response } from 'express'
3
3
  import { body } from 'express-validator'
4
4
  import { isValidObjectId } from 'mongoose'
5
-
6
5
  import Ticket from '../models/ticket'
7
- import TicketUpdatedPublisher from '../events/publishers/tickets/updated'
6
+ import TicketUpdatedPublisher from '../events/publishers/updated'
8
7
  import natsClient from '../nats-client'
9
8
 
10
9
  const router = express.Router()