vsegments 0.1.3 → 0.1.5
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/QUICKSTART.md +8 -3
- package/README.md +2 -0
- package/coverage/clover.xml +52 -48
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/core.js.html +55 -22
- package/coverage/lcov-report/index.html +15 -15
- package/coverage/lcov-report/index.js.html +1 -1
- package/coverage/lcov-report/models.js.html +1 -1
- package/coverage/lcov-report/utils.js.html +1 -1
- package/coverage/lcov-report/visualize.js.html +1 -1
- package/coverage/lcov.info +85 -79
- package/package.json +6 -4
- package/src/core.js +62 -40
package/QUICKSTART.md
CHANGED
|
@@ -99,6 +99,9 @@ vsegments -f image.jpg --json results.json
|
|
|
99
99
|
|
|
100
100
|
# Customize visualization
|
|
101
101
|
vsegments -f image.jpg -o output.jpg --line-width 6 --font-size 18
|
|
102
|
+
|
|
103
|
+
# Works with SVG files too
|
|
104
|
+
vsegments -f diagram.svg -o output.jpg
|
|
102
105
|
```
|
|
103
106
|
|
|
104
107
|
## Next Steps
|
|
@@ -125,7 +128,7 @@ export GOOGLE_API_KEY="your-key-here"
|
|
|
125
128
|
### Module Not Found
|
|
126
129
|
|
|
127
130
|
```
|
|
128
|
-
Error: Cannot find module 'canvas'
|
|
131
|
+
Error: Cannot find module 'canvas' or 'sharp'
|
|
129
132
|
```
|
|
130
133
|
|
|
131
134
|
**Solution:** Reinstall dependencies:
|
|
@@ -134,16 +137,18 @@ Error: Cannot find module 'canvas'
|
|
|
134
137
|
npm install
|
|
135
138
|
```
|
|
136
139
|
|
|
137
|
-
|
|
140
|
+
**Note:** This package uses `sharp` for better cross-platform compatibility. If you encounter build issues:
|
|
138
141
|
|
|
142
|
+
On macOS:
|
|
139
143
|
```bash
|
|
140
144
|
brew install pkg-config cairo pango libpng jpeg giflib librsvg
|
|
145
|
+
npm install
|
|
141
146
|
```
|
|
142
147
|
|
|
143
148
|
On Ubuntu/Debian:
|
|
144
|
-
|
|
145
149
|
```bash
|
|
146
150
|
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
|
|
151
|
+
npm install
|
|
147
152
|
```
|
|
148
153
|
|
|
149
154
|
---
|
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
- 🎯 **Bounding Box Detection**: Automatically detect and label objects in images
|
|
13
13
|
- 🎨 **Segmentation Masks**: Generate precise segmentation masks for identified objects
|
|
14
14
|
- 🖼️ **Visualization**: Beautiful visualization with customizable colors, fonts, and transparency
|
|
15
|
+
- 📐 **SVG Support**: Automatic conversion of SVG files to raster format
|
|
15
16
|
- 🛠️ **CLI Tool**: Powerful command-line interface for batch processing
|
|
16
17
|
- 📦 **Library**: Clean JavaScript API for integration into your projects
|
|
17
18
|
- 🚀 **Multiple Models**: Support for various Gemini models (Flash, Pro, etc.)
|
|
@@ -319,6 +320,7 @@ node segmentation.js path/to/image.jpg
|
|
|
319
320
|
- `@google/generative-ai` ^0.21.0
|
|
320
321
|
- `canvas` ^2.11.2
|
|
321
322
|
- `commander` ^12.0.0
|
|
323
|
+
- `sharp` ^0.33.0 (for SVG support and better compatibility)
|
|
322
324
|
|
|
323
325
|
## Publishing to npm
|
|
324
326
|
|
package/coverage/clover.xml
CHANGED
|
@@ -1,72 +1,76 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
4
|
-
<metrics statements="
|
|
2
|
+
<coverage generated="1764946707411" clover="3.2.0">
|
|
3
|
+
<project timestamp="1764946707411" name="All files">
|
|
4
|
+
<metrics statements="215" coveredstatements="82" conditionals="75" coveredconditionals="24" methods="24" coveredmethods="12" elements="314" coveredelements="118" complexity="0" loc="215" ncloc="215" packages="1" files="5" classes="5"/>
|
|
5
5
|
<file name="core.js" path="/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js">
|
|
6
|
-
<metrics statements="
|
|
6
|
+
<metrics statements="67" coveredstatements="23" conditionals="37" coveredconditionals="15" methods="7" coveredmethods="3"/>
|
|
7
7
|
<line num="5" count="2" type="stmt"/>
|
|
8
8
|
<line num="6" count="2" type="stmt"/>
|
|
9
9
|
<line num="7" count="2" type="stmt"/>
|
|
10
10
|
<line num="8" count="2" type="stmt"/>
|
|
11
11
|
<line num="9" count="2" type="stmt"/>
|
|
12
12
|
<line num="15" count="2" type="stmt"/>
|
|
13
|
-
<line num="27" count="
|
|
14
|
-
<line num="29" count="
|
|
13
|
+
<line num="27" count="24" type="cond" truecount="2" falsecount="0"/>
|
|
14
|
+
<line num="29" count="24" type="cond" truecount="2" falsecount="0"/>
|
|
15
15
|
<line num="30" count="1" type="stmt"/>
|
|
16
|
-
<line num="35" count="
|
|
17
|
-
<line num="36" count="
|
|
18
|
-
<line num="37" count="
|
|
19
|
-
<line num="40" count="
|
|
20
|
-
<line num="43" count="
|
|
21
|
-
<line num="49" count="
|
|
16
|
+
<line num="35" count="23" type="cond" truecount="2" falsecount="0"/>
|
|
17
|
+
<line num="36" count="23" type="cond" truecount="2" falsecount="0"/>
|
|
18
|
+
<line num="37" count="23" type="cond" truecount="2" falsecount="0"/>
|
|
19
|
+
<line num="40" count="23" type="stmt"/>
|
|
20
|
+
<line num="43" count="23" type="stmt"/>
|
|
21
|
+
<line num="49" count="23" type="stmt"/>
|
|
22
22
|
<line num="63" count="0" type="stmt"/>
|
|
23
23
|
<line num="64" count="0" type="stmt"/>
|
|
24
|
-
<line num="
|
|
25
|
-
<line num="
|
|
26
|
-
<line num="
|
|
27
|
-
<line num="
|
|
28
|
-
<line num="
|
|
29
|
-
<line num="
|
|
30
|
-
<line num="
|
|
31
|
-
<line num="
|
|
32
|
-
<line num="
|
|
33
|
-
<line num="
|
|
34
|
-
<line num="
|
|
35
|
-
<line num="
|
|
24
|
+
<line num="67" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
25
|
+
<line num="68" count="0" type="stmt"/>
|
|
26
|
+
<line num="69" count="0" type="stmt"/>
|
|
27
|
+
<line num="72" count="0" type="stmt"/>
|
|
28
|
+
<line num="75" count="0" type="stmt"/>
|
|
29
|
+
<line num="77" count="0" type="stmt"/>
|
|
30
|
+
<line num="91" count="10" type="stmt"/>
|
|
31
|
+
<line num="92" count="10" type="stmt"/>
|
|
32
|
+
<line num="100" count="10" type="cond" truecount="2" falsecount="0"/>
|
|
33
|
+
<line num="109" count="3" type="stmt"/>
|
|
34
|
+
<line num="111" count="3" type="cond" truecount="2" falsecount="0"/>
|
|
35
|
+
<line num="112" count="1" type="stmt"/>
|
|
36
|
+
<line num="115" count="3" type="stmt"/>
|
|
37
|
+
<line num="132" count="0" type="stmt"/>
|
|
36
38
|
<line num="135" count="0" type="stmt"/>
|
|
37
|
-
<line num="
|
|
38
|
-
<line num="
|
|
39
|
-
<line num="144" count="0" type="stmt"/>
|
|
40
|
-
<line num="146" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
39
|
+
<line num="138" count="0" type="stmt"/>
|
|
40
|
+
<line num="146" count="0" type="stmt"/>
|
|
41
41
|
<line num="147" count="0" type="stmt"/>
|
|
42
|
-
<line num="
|
|
42
|
+
<line num="154" count="0" type="stmt"/>
|
|
43
43
|
<line num="155" count="0" type="stmt"/>
|
|
44
|
-
<line num="157" count="0" type="
|
|
45
|
-
<line num="
|
|
46
|
-
<line num="
|
|
47
|
-
<line num="
|
|
48
|
-
<line num="
|
|
49
|
-
<line num="180" count="0" type="stmt"/>
|
|
44
|
+
<line num="157" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
45
|
+
<line num="158" count="0" type="stmt"/>
|
|
46
|
+
<line num="162" count="0" type="stmt"/>
|
|
47
|
+
<line num="166" count="0" type="stmt"/>
|
|
48
|
+
<line num="168" count="0" type="stmt"/>
|
|
50
49
|
<line num="183" count="0" type="stmt"/>
|
|
50
|
+
<line num="186" count="0" type="stmt"/>
|
|
51
|
+
<line num="189" count="0" type="stmt"/>
|
|
51
52
|
<line num="190" count="0" type="stmt"/>
|
|
52
53
|
<line num="191" count="0" type="stmt"/>
|
|
53
|
-
<line num="
|
|
54
|
-
<line num="
|
|
55
|
-
<line num="201" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
54
|
+
<line num="194" count="0" type="stmt"/>
|
|
55
|
+
<line num="201" count="0" type="stmt"/>
|
|
56
56
|
<line num="202" count="0" type="stmt"/>
|
|
57
|
-
<line num="
|
|
57
|
+
<line num="209" count="0" type="stmt"/>
|
|
58
58
|
<line num="210" count="0" type="stmt"/>
|
|
59
|
-
<line num="
|
|
59
|
+
<line num="212" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
60
60
|
<line num="213" count="0" type="stmt"/>
|
|
61
|
-
<line num="
|
|
62
|
-
<line num="
|
|
63
|
-
<line num="
|
|
64
|
-
<line num="
|
|
65
|
-
<line num="
|
|
66
|
-
<line num="
|
|
67
|
-
<line num="
|
|
61
|
+
<line num="217" count="0" type="stmt"/>
|
|
62
|
+
<line num="221" count="0" type="stmt"/>
|
|
63
|
+
<line num="222" count="0" type="stmt"/>
|
|
64
|
+
<line num="224" count="0" type="stmt"/>
|
|
65
|
+
<line num="244" count="0" type="stmt"/>
|
|
66
|
+
<line num="247" count="0" type="stmt"/>
|
|
67
|
+
<line num="250" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
68
|
+
<line num="251" count="0" type="stmt"/>
|
|
68
69
|
<line num="257" count="0" type="stmt"/>
|
|
69
|
-
<line num="
|
|
70
|
+
<line num="264" count="0" type="cond" truecount="0" falsecount="2"/>
|
|
71
|
+
<line num="265" count="0" type="stmt"/>
|
|
72
|
+
<line num="268" count="0" type="stmt"/>
|
|
73
|
+
<line num="272" count="2" type="stmt"/>
|
|
70
74
|
</file>
|
|
71
75
|
<file name="index.js" path="/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/index.js">
|
|
72
76
|
<metrics statements="8" coveredstatements="8" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js": {"path":"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js","statementMap":{"0":{"start":{"line":5,"column":31},"end":{"line":5,"column":63}},"1":{"start":{"line":6,"column":22},"end":{"line":6,"column":39}},"2":{"start":{"line":7,"column":11},"end":{"line":7,"column":33}},"3":{"start":{"line":8,"column":31},"end":{"line":8,"column":50}},"4":{"start":{"line":9,"column":55},"end":{"line":9,"column":73}},"5":{"start":{"line":15,"column":4},"end":{"line":15,"column":26}},"6":{"start":{"line":27,"column":4},"end":{"line":27,"column":63}},"7":{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},"8":{"start":{"line":30,"column":6},"end":{"line":32,"column":8}},"9":{"start":{"line":35,"column":4},"end":{"line":35,"column":57}},"10":{"start":{"line":36,"column":4},"end":{"line":36,"column":85}},"11":{"start":{"line":37,"column":4},"end":{"line":37,"column":47}},"12":{"start":{"line":40,"column":4},"end":{"line":40,"column":53}},"13":{"start":{"line":43,"column":4},"end":{"line":46,"column":13}},"14":{"start":{"line":49,"column":4},"end":{"line":54,"column":6}},"15":{"start":{"line":63,"column":24},"end":{"line":63,"column":52}},"16":{"start":{"line":64,"column":23},"end":{"line":64,"column":53}},"17":{"start":{"line":65,"column":21},"end":{"line":65,"column":49}},"18":{"start":{"line":67,"column":4},"end":{"line":72,"column":6}},"19":{"start":{"line":81,"column":16},"end":{"line":81,"column":55}},"20":{"start":{"line":82,"column":22},"end":{"line":88,"column":5}},"21":{"start":{"line":89,"column":4},"end":{"line":89,"column":42}},"22":{"start":{"line":98,"column":23},"end":{"line":98,"column":53}},"23":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"24":{"start":{"line":101,"column":6},"end":{"line":101,"column":48}},"25":{"start":{"line":104,"column":4},"end":{"line":104,"column":24}},"26":{"start":{"line":121,"column":8},"end":{"line":121,"column":15}},"27":{"start":{"line":124,"column":18},"end":{"line":124,"column":50}},"28":{"start":{"line":127,"column":18},"end":{"line":131,"column":6}},"29":{"start":{"line":135,"column":4},"end":{"line":152,"column":5}},"30":{"start":{"line":136,"column":6},"end":{"line":141,"column":9}},"31":{"start":{"line":143,"column":6},"end":{"line":143,"column":33}},"32":{"start":{"line":144,"column":6},"end":{"line":144,"column":29}},"33":{"start":{"line":146,"column":6},"end":{"line":150,"column":7}},"34":{"start":{"line":147,"column":8},"end":{"line":149,"column":10}},"35":{"start":{"line":151,"column":6},"end":{"line":151,"column":18}},"36":{"start":{"line":155,"column":18},"end":{"line":155,"column":42}},"37":{"start":{"line":157,"column":4},"end":{"line":157,"column":53}},"38":{"start":{"line":172,"column":8},"end":{"line":172,"column":15}},"39":{"start":{"line":175,"column":18},"end":{"line":175,"column":50}},"40":{"start":{"line":178,"column":16},"end":{"line":178,"column":42}},"41":{"start":{"line":179,"column":21},"end":{"line":179,"column":30}},"42":{"start":{"line":180,"column":22},"end":{"line":180,"column":32}},"43":{"start":{"line":183,"column":18},"end":{"line":186,"column":6}},"44":{"start":{"line":190,"column":4},"end":{"line":207,"column":5}},"45":{"start":{"line":191,"column":6},"end":{"line":196,"column":9}},"46":{"start":{"line":198,"column":6},"end":{"line":198,"column":33}},"47":{"start":{"line":199,"column":6},"end":{"line":199,"column":29}},"48":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"49":{"start":{"line":202,"column":8},"end":{"line":204,"column":10}},"50":{"start":{"line":206,"column":6},"end":{"line":206,"column":18}},"51":{"start":{"line":210,"column":18},"end":{"line":210,"column":42}},"52":{"start":{"line":211,"column":18},"end":{"line":211,"column":73}},"53":{"start":{"line":213,"column":4},"end":{"line":213,"column":54}},"54":{"start":{"line":233,"column":8},"end":{"line":233,"column":15}},"55":{"start":{"line":236,"column":19},"end":{"line":236,"column":59}},"56":{"start":{"line":239,"column":4},"end":{"line":250,"column":5}},"57":{"start":{"line":240,"column":6},"end":{"line":244,"column":9}},"58":{"start":{"line":246,"column":6},"end":{"line":249,"column":9}},"59":{"start":{"line":253,"column":4},"end":{"line":255,"column":5}},"60":{"start":{"line":254,"column":6},"end":{"line":254,"column":43}},"61":{"start":{"line":257,"column":4},"end":{"line":257,"column":18}},"62":{"start":{"line":261,"column":0},"end":{"line":261,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":26,"column":28},"end":{"line":55,"column":3}},"line":26},"1":{"name":"(anonymous_1)","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":62,"column":30},"end":{"line":73,"column":3}},"line":62},"2":{"name":"(anonymous_2)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":80,"column":25},"end":{"line":90,"column":3}},"line":80},"3":{"name":"(anonymous_3)","decl":{"start":{"line":97,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":97,"column":45},"end":{"line":105,"column":3}},"line":97},"4":{"name":"(anonymous_4)","decl":{"start":{"line":116,"column":2},"end":{"line":116,"column":3}},"loc":{"start":{"line":116,"column":45},"end":{"line":158,"column":3}},"line":116},"5":{"name":"(anonymous_5)","decl":{"start":{"line":168,"column":2},"end":{"line":168,"column":3}},"loc":{"start":{"line":168,"column":41},"end":{"line":214,"column":3}},"line":168},"6":{"name":"(anonymous_6)","decl":{"start":{"line":227,"column":2},"end":{"line":227,"column":3}},"loc":{"start":{"line":227,"column":51},"end":{"line":258,"column":3}},"line":227}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":14},"end":{"line":26,"column":26}},"type":"default-arg","locations":[{"start":{"line":26,"column":24},"end":{"line":26,"column":26}}],"line":26},"1":{"loc":{"start":{"line":27,"column":18},"end":{"line":27,"column":62}},"type":"binary-expr","locations":[{"start":{"line":27,"column":18},"end":{"line":27,"column":32}},{"start":{"line":27,"column":36},"end":{"line":27,"column":62}}],"line":27},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},{"start":{},"end":{}}],"line":29},"3":{"loc":{"start":{"line":35,"column":17},"end":{"line":35,"column":56}},"type":"binary-expr","locations":[{"start":{"line":35,"column":17},"end":{"line":35,"column":30}},{"start":{"line":35,"column":34},"end":{"line":35,"column":56}}],"line":35},"4":{"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":84}},"type":"cond-expr","locations":[{"start":{"line":36,"column":59},"end":{"line":36,"column":78}},{"start":{"line":36,"column":81},"end":{"line":36,"column":84}}],"line":36},"5":{"loc":{"start":{"line":37,"column":22},"end":{"line":37,"column":46}},"type":"binary-expr","locations":[{"start":{"line":37,"column":22},"end":{"line":37,"column":40}},{"start":{"line":37,"column":44},"end":{"line":37,"column":46}}],"line":37},"6":{"loc":{"start":{"line":89,"column":11},"end":{"line":89,"column":41}},"type":"binary-expr","locations":[{"start":{"line":89,"column":11},"end":{"line":89,"column":25}},{"start":{"line":89,"column":29},"end":{"line":89,"column":41}}],"line":89},"7":{"loc":{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},"type":"if","locations":[{"start":{"line":100,"column":4},"end":{"line":102,"column":5}},{"start":{},"end":{}}],"line":100},"8":{"loc":{"start":{"line":116,"column":31},"end":{"line":116,"column":43}},"type":"default-arg","locations":[{"start":{"line":116,"column":41},"end":{"line":116,"column":43}}],"line":116},"9":{"loc":{"start":{"line":118,"column":6},"end":{"line":118,"column":45}},"type":"default-arg","locations":[{"start":{"line":118,"column":15},"end":{"line":118,"column":45}}],"line":118},"10":{"loc":{"start":{"line":119,"column":6},"end":{"line":119,"column":31}},"type":"default-arg","locations":[{"start":{"line":119,"column":27},"end":{"line":119,"column":31}}],"line":119},"11":{"loc":{"start":{"line":120,"column":6},"end":{"line":120,"column":20}},"type":"default-arg","locations":[{"start":{"line":120,"column":16},"end":{"line":120,"column":20}}],"line":120},"12":{"loc":{"start":{"line":146,"column":6},"end":{"line":150,"column":7}},"type":"if","locations":[{"start":{"line":146,"column":6},"end":{"line":150,"column":7}},{"start":{},"end":{}}],"line":146},"13":{"loc":{"start":{"line":168,"column":27},"end":{"line":168,"column":39}},"type":"default-arg","locations":[{"start":{"line":168,"column":37},"end":{"line":168,"column":39}}],"line":168},"14":{"loc":{"start":{"line":170,"column":6},"end":{"line":170,"column":269}},"type":"default-arg","locations":[{"start":{"line":170,"column":15},"end":{"line":170,"column":269}}],"line":170},"15":{"loc":{"start":{"line":171,"column":6},"end":{"line":171,"column":20}},"type":"default-arg","locations":[{"start":{"line":171,"column":16},"end":{"line":171,"column":20}}],"line":171},"16":{"loc":{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},"type":"if","locations":[{"start":{"line":201,"column":6},"end":{"line":205,"column":7}},{"start":{},"end":{}}],"line":201},"17":{"loc":{"start":{"line":227,"column":37},"end":{"line":227,"column":49}},"type":"default-arg","locations":[{"start":{"line":227,"column":47},"end":{"line":227,"column":49}}],"line":227},"18":{"loc":{"start":{"line":229,"column":6},"end":{"line":229,"column":23}},"type":"default-arg","locations":[{"start":{"line":229,"column":19},"end":{"line":229,"column":23}}],"line":229},"19":{"loc":{"start":{"line":230,"column":6},"end":{"line":230,"column":19}},"type":"default-arg","locations":[{"start":{"line":230,"column":18},"end":{"line":230,"column":19}}],"line":230},"20":{"loc":{"start":{"line":231,"column":6},"end":{"line":231,"column":19}},"type":"default-arg","locations":[{"start":{"line":231,"column":17},"end":{"line":231,"column":19}}],"line":231},"21":{"loc":{"start":{"line":232,"column":6},"end":{"line":232,"column":17}},"type":"default-arg","locations":[{"start":{"line":232,"column":14},"end":{"line":232,"column":17}}],"line":232},"22":{"loc":{"start":{"line":239,"column":4},"end":{"line":250,"column":5}},"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":250,"column":5}},{"start":{"line":245,"column":11},"end":{"line":250,"column":5}}],"line":239},"23":{"loc":{"start":{"line":253,"column":4},"end":{"line":255,"column":5}},"type":"if","locations":[{"start":{"line":253,"column":4},"end":{"line":255,"column":5}},{"start":{},"end":{}}],"line":253}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":23,"7":23,"8":1,"9":22,"10":22,"11":22,"12":22,"13":22,"14":22,"15":0,"16":0,"17":0,"18":0,"19":9,"20":9,"21":9,"22":3,"23":3,"24":1,"25":3,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":2},"f":{"0":23,"1":0,"2":9,"3":3,"4":0,"5":0,"6":0},"b":{"0":[2],"1":[23,2],"2":[1,22],"3":[22,21],"4":[2,20],"5":[22,17],"6":[9,2],"7":[1,2],"8":[0],"9":[0],"10":[0],"11":[0],"12":[0,0],"13":[0],"14":[0],"15":[0],"16":[0,0],"17":[0],"18":[0],"19":[0],"20":[0],"21":[0],"22":[0,0],"23":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3b2c399c630d53b96e78d95a49182292a67e620d"}
|
|
1
|
+
{"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js": {"path":"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js","statementMap":{"0":{"start":{"line":5,"column":31},"end":{"line":5,"column":63}},"1":{"start":{"line":6,"column":22},"end":{"line":6,"column":39}},"2":{"start":{"line":7,"column":11},"end":{"line":7,"column":33}},"3":{"start":{"line":8,"column":31},"end":{"line":8,"column":50}},"4":{"start":{"line":9,"column":55},"end":{"line":9,"column":73}},"5":{"start":{"line":15,"column":4},"end":{"line":15,"column":26}},"6":{"start":{"line":27,"column":4},"end":{"line":27,"column":63}},"7":{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},"8":{"start":{"line":30,"column":6},"end":{"line":32,"column":8}},"9":{"start":{"line":35,"column":4},"end":{"line":35,"column":57}},"10":{"start":{"line":36,"column":4},"end":{"line":36,"column":85}},"11":{"start":{"line":37,"column":4},"end":{"line":37,"column":47}},"12":{"start":{"line":40,"column":4},"end":{"line":40,"column":53}},"13":{"start":{"line":43,"column":4},"end":{"line":46,"column":13}},"14":{"start":{"line":49,"column":4},"end":{"line":54,"column":6}},"15":{"start":{"line":63,"column":22},"end":{"line":63,"column":50}},"16":{"start":{"line":64,"column":19},"end":{"line":64,"column":47}},"17":{"start":{"line":67,"column":4},"end":{"line":73,"column":5}},"18":{"start":{"line":68,"column":20},"end":{"line":68,"column":36}},"19":{"start":{"line":69,"column":6},"end":{"line":71,"column":20}},"20":{"start":{"line":72,"column":6},"end":{"line":72,"column":29}},"21":{"start":{"line":75,"column":23},"end":{"line":75,"column":53}},"22":{"start":{"line":77,"column":4},"end":{"line":82,"column":6}},"23":{"start":{"line":91,"column":16},"end":{"line":91,"column":55}},"24":{"start":{"line":92,"column":22},"end":{"line":99,"column":5}},"25":{"start":{"line":100,"column":4},"end":{"line":100,"column":42}},"26":{"start":{"line":109,"column":23},"end":{"line":109,"column":53}},"27":{"start":{"line":111,"column":4},"end":{"line":113,"column":5}},"28":{"start":{"line":112,"column":6},"end":{"line":112,"column":48}},"29":{"start":{"line":115,"column":4},"end":{"line":115,"column":24}},"30":{"start":{"line":132,"column":8},"end":{"line":132,"column":15}},"31":{"start":{"line":135,"column":18},"end":{"line":135,"column":50}},"32":{"start":{"line":138,"column":18},"end":{"line":142,"column":6}},"33":{"start":{"line":146,"column":4},"end":{"line":163,"column":5}},"34":{"start":{"line":147,"column":6},"end":{"line":152,"column":9}},"35":{"start":{"line":154,"column":6},"end":{"line":154,"column":33}},"36":{"start":{"line":155,"column":6},"end":{"line":155,"column":29}},"37":{"start":{"line":157,"column":6},"end":{"line":161,"column":7}},"38":{"start":{"line":158,"column":8},"end":{"line":160,"column":10}},"39":{"start":{"line":162,"column":6},"end":{"line":162,"column":18}},"40":{"start":{"line":166,"column":18},"end":{"line":166,"column":42}},"41":{"start":{"line":168,"column":4},"end":{"line":168,"column":53}},"42":{"start":{"line":183,"column":8},"end":{"line":183,"column":15}},"43":{"start":{"line":186,"column":18},"end":{"line":186,"column":50}},"44":{"start":{"line":189,"column":16},"end":{"line":189,"column":42}},"45":{"start":{"line":190,"column":21},"end":{"line":190,"column":30}},"46":{"start":{"line":191,"column":22},"end":{"line":191,"column":32}},"47":{"start":{"line":194,"column":18},"end":{"line":197,"column":6}},"48":{"start":{"line":201,"column":4},"end":{"line":218,"column":5}},"49":{"start":{"line":202,"column":6},"end":{"line":207,"column":9}},"50":{"start":{"line":209,"column":6},"end":{"line":209,"column":33}},"51":{"start":{"line":210,"column":6},"end":{"line":210,"column":29}},"52":{"start":{"line":212,"column":6},"end":{"line":216,"column":7}},"53":{"start":{"line":213,"column":8},"end":{"line":215,"column":10}},"54":{"start":{"line":217,"column":6},"end":{"line":217,"column":18}},"55":{"start":{"line":221,"column":18},"end":{"line":221,"column":42}},"56":{"start":{"line":222,"column":18},"end":{"line":222,"column":73}},"57":{"start":{"line":224,"column":4},"end":{"line":224,"column":54}},"58":{"start":{"line":244,"column":8},"end":{"line":244,"column":15}},"59":{"start":{"line":247,"column":19},"end":{"line":247,"column":59}},"60":{"start":{"line":250,"column":4},"end":{"line":261,"column":5}},"61":{"start":{"line":251,"column":6},"end":{"line":255,"column":9}},"62":{"start":{"line":257,"column":6},"end":{"line":260,"column":9}},"63":{"start":{"line":264,"column":4},"end":{"line":266,"column":5}},"64":{"start":{"line":265,"column":6},"end":{"line":265,"column":43}},"65":{"start":{"line":268,"column":4},"end":{"line":268,"column":18}},"66":{"start":{"line":272,"column":0},"end":{"line":272,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":26,"column":28},"end":{"line":55,"column":3}},"line":26},"1":{"name":"(anonymous_1)","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":62,"column":30},"end":{"line":83,"column":3}},"line":62},"2":{"name":"(anonymous_2)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":3}},"loc":{"start":{"line":90,"column":25},"end":{"line":101,"column":3}},"line":90},"3":{"name":"(anonymous_3)","decl":{"start":{"line":108,"column":2},"end":{"line":108,"column":3}},"loc":{"start":{"line":108,"column":45},"end":{"line":116,"column":3}},"line":108},"4":{"name":"(anonymous_4)","decl":{"start":{"line":127,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":127,"column":45},"end":{"line":169,"column":3}},"line":127},"5":{"name":"(anonymous_5)","decl":{"start":{"line":179,"column":2},"end":{"line":179,"column":3}},"loc":{"start":{"line":179,"column":41},"end":{"line":225,"column":3}},"line":179},"6":{"name":"(anonymous_6)","decl":{"start":{"line":238,"column":2},"end":{"line":238,"column":3}},"loc":{"start":{"line":238,"column":51},"end":{"line":269,"column":3}},"line":238}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":14},"end":{"line":26,"column":26}},"type":"default-arg","locations":[{"start":{"line":26,"column":24},"end":{"line":26,"column":26}}],"line":26},"1":{"loc":{"start":{"line":27,"column":18},"end":{"line":27,"column":62}},"type":"binary-expr","locations":[{"start":{"line":27,"column":18},"end":{"line":27,"column":32}},{"start":{"line":27,"column":36},"end":{"line":27,"column":62}}],"line":27},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":33,"column":5}},{"start":{},"end":{}}],"line":29},"3":{"loc":{"start":{"line":35,"column":17},"end":{"line":35,"column":56}},"type":"binary-expr","locations":[{"start":{"line":35,"column":17},"end":{"line":35,"column":30}},{"start":{"line":35,"column":34},"end":{"line":35,"column":56}}],"line":35},"4":{"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":84}},"type":"cond-expr","locations":[{"start":{"line":36,"column":59},"end":{"line":36,"column":78}},{"start":{"line":36,"column":81},"end":{"line":36,"column":84}}],"line":36},"5":{"loc":{"start":{"line":37,"column":22},"end":{"line":37,"column":46}},"type":"binary-expr","locations":[{"start":{"line":37,"column":22},"end":{"line":37,"column":40}},{"start":{"line":37,"column":44},"end":{"line":37,"column":46}}],"line":37},"6":{"loc":{"start":{"line":67,"column":4},"end":{"line":73,"column":5}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":73,"column":5}},{"start":{},"end":{}}],"line":67},"7":{"loc":{"start":{"line":100,"column":11},"end":{"line":100,"column":41}},"type":"binary-expr","locations":[{"start":{"line":100,"column":11},"end":{"line":100,"column":25}},{"start":{"line":100,"column":29},"end":{"line":100,"column":41}}],"line":100},"8":{"loc":{"start":{"line":111,"column":4},"end":{"line":113,"column":5}},"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":113,"column":5}},{"start":{},"end":{}}],"line":111},"9":{"loc":{"start":{"line":127,"column":31},"end":{"line":127,"column":43}},"type":"default-arg","locations":[{"start":{"line":127,"column":41},"end":{"line":127,"column":43}}],"line":127},"10":{"loc":{"start":{"line":129,"column":6},"end":{"line":129,"column":45}},"type":"default-arg","locations":[{"start":{"line":129,"column":15},"end":{"line":129,"column":45}}],"line":129},"11":{"loc":{"start":{"line":130,"column":6},"end":{"line":130,"column":31}},"type":"default-arg","locations":[{"start":{"line":130,"column":27},"end":{"line":130,"column":31}}],"line":130},"12":{"loc":{"start":{"line":131,"column":6},"end":{"line":131,"column":20}},"type":"default-arg","locations":[{"start":{"line":131,"column":16},"end":{"line":131,"column":20}}],"line":131},"13":{"loc":{"start":{"line":157,"column":6},"end":{"line":161,"column":7}},"type":"if","locations":[{"start":{"line":157,"column":6},"end":{"line":161,"column":7}},{"start":{},"end":{}}],"line":157},"14":{"loc":{"start":{"line":179,"column":27},"end":{"line":179,"column":39}},"type":"default-arg","locations":[{"start":{"line":179,"column":37},"end":{"line":179,"column":39}}],"line":179},"15":{"loc":{"start":{"line":181,"column":6},"end":{"line":181,"column":269}},"type":"default-arg","locations":[{"start":{"line":181,"column":15},"end":{"line":181,"column":269}}],"line":181},"16":{"loc":{"start":{"line":182,"column":6},"end":{"line":182,"column":20}},"type":"default-arg","locations":[{"start":{"line":182,"column":16},"end":{"line":182,"column":20}}],"line":182},"17":{"loc":{"start":{"line":212,"column":6},"end":{"line":216,"column":7}},"type":"if","locations":[{"start":{"line":212,"column":6},"end":{"line":216,"column":7}},{"start":{},"end":{}}],"line":212},"18":{"loc":{"start":{"line":238,"column":37},"end":{"line":238,"column":49}},"type":"default-arg","locations":[{"start":{"line":238,"column":47},"end":{"line":238,"column":49}}],"line":238},"19":{"loc":{"start":{"line":240,"column":6},"end":{"line":240,"column":23}},"type":"default-arg","locations":[{"start":{"line":240,"column":19},"end":{"line":240,"column":23}}],"line":240},"20":{"loc":{"start":{"line":241,"column":6},"end":{"line":241,"column":19}},"type":"default-arg","locations":[{"start":{"line":241,"column":18},"end":{"line":241,"column":19}}],"line":241},"21":{"loc":{"start":{"line":242,"column":6},"end":{"line":242,"column":19}},"type":"default-arg","locations":[{"start":{"line":242,"column":17},"end":{"line":242,"column":19}}],"line":242},"22":{"loc":{"start":{"line":243,"column":6},"end":{"line":243,"column":17}},"type":"default-arg","locations":[{"start":{"line":243,"column":14},"end":{"line":243,"column":17}}],"line":243},"23":{"loc":{"start":{"line":250,"column":4},"end":{"line":261,"column":5}},"type":"if","locations":[{"start":{"line":250,"column":4},"end":{"line":261,"column":5}},{"start":{"line":256,"column":11},"end":{"line":261,"column":5}}],"line":250},"24":{"loc":{"start":{"line":264,"column":4},"end":{"line":266,"column":5}},"type":"if","locations":[{"start":{"line":264,"column":4},"end":{"line":266,"column":5}},{"start":{},"end":{}}],"line":264}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":24,"7":24,"8":1,"9":23,"10":23,"11":23,"12":23,"13":23,"14":23,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":10,"24":10,"25":10,"26":3,"27":3,"28":1,"29":3,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":2},"f":{"0":24,"1":0,"2":10,"3":3,"4":0,"5":0,"6":0},"b":{"0":[2],"1":[24,2],"2":[1,23],"3":[23,22],"4":[2,21],"5":[23,18],"6":[0,0],"7":[10,2],"8":[1,2],"9":[0],"10":[0],"11":[0],"12":[0],"13":[0,0],"14":[0],"15":[0],"16":[0],"17":[0,0],"18":[0],"19":[0],"20":[0],"21":[0],"22":[0],"23":[0,0],"24":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"628ce280422359d44c6e862a6c0c4237ab4ce67d"}
|
|
2
2
|
,"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/index.js": {"path":"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/index.js","statementMap":{"0":{"start":{"line":12,"column":18},"end":{"line":12,"column":35}},"1":{"start":{"line":13,"column":62},"end":{"line":13,"column":81}},"2":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"3":{"start":{"line":16,"column":0},"end":{"line":16,"column":37}},"4":{"start":{"line":17,"column":0},"end":{"line":17,"column":41}},"5":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"6":{"start":{"line":19,"column":0},"end":{"line":19,"column":55}},"7":{"start":{"line":20,"column":0},"end":{"line":20,"column":33}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"919dc8d2b2062d2a9f4217ee076649d050f5f3a9"}
|
|
3
3
|
,"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/models.js": {"path":"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/models.js","statementMap":{"0":{"start":{"line":15,"column":4},"end":{"line":15,"column":23}},"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":17}},"2":{"start":{"line":17,"column":4},"end":{"line":17,"column":17}},"3":{"start":{"line":18,"column":4},"end":{"line":18,"column":17}},"4":{"start":{"line":19,"column":4},"end":{"line":19,"column":17}},"5":{"start":{"line":29,"column":18},"end":{"line":29,"column":57}},"6":{"start":{"line":30,"column":18},"end":{"line":30,"column":58}},"7":{"start":{"line":31,"column":18},"end":{"line":31,"column":57}},"8":{"start":{"line":32,"column":18},"end":{"line":32,"column":58}},"9":{"start":{"line":33,"column":4},"end":{"line":33,"column":40}},"10":{"start":{"line":42,"column":16},"end":{"line":42,"column":27}},"11":{"start":{"line":43,"column":4},"end":{"line":49,"column":6}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":17}},"13":{"start":{"line":65,"column":4},"end":{"line":65,"column":17}},"14":{"start":{"line":66,"column":4},"end":{"line":66,"column":17}},"15":{"start":{"line":67,"column":4},"end":{"line":67,"column":17}},"16":{"start":{"line":68,"column":4},"end":{"line":68,"column":21}},"17":{"start":{"line":69,"column":4},"end":{"line":69,"column":23}},"18":{"start":{"line":81,"column":4},"end":{"line":81,"column":23}},"19":{"start":{"line":82,"column":4},"end":{"line":82,"column":23}},"20":{"start":{"line":83,"column":4},"end":{"line":83,"column":35}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":29}},"22":{"start":{"line":95,"column":0},"end":{"line":99,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":37},"end":{"line":20,"column":3}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":28,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":28,"column":34},"end":{"line":34,"column":3}},"line":28},"2":{"name":"(anonymous_2)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":41,"column":24},"end":{"line":50,"column":3}},"line":41},"3":{"name":"(anonymous_3)","decl":{"start":{"line":63,"column":2},"end":{"line":63,"column":3}},"loc":{"start":{"line":63,"column":43},"end":{"line":70,"column":3}},"line":63},"4":{"name":"(anonymous_4)","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":80,"column":55},"end":{"line":84,"column":3}},"line":80},"5":{"name":"(anonymous_5)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":3}},"loc":{"start":{"line":90,"column":15},"end":{"line":92,"column":3}},"line":90}},"branchMap":{"0":{"loc":{"start":{"line":80,"column":21},"end":{"line":80,"column":33}},"type":"default-arg","locations":[{"start":{"line":80,"column":29},"end":{"line":80,"column":33}}],"line":80},"1":{"loc":{"start":{"line":80,"column":35},"end":{"line":80,"column":53}},"type":"default-arg","locations":[{"start":{"line":80,"column":49},"end":{"line":80,"column":53}}],"line":80}},"s":{"0":20,"1":20,"2":20,"3":20,"4":20,"5":3,"6":3,"7":3,"8":3,"9":3,"10":8,"11":8,"12":4,"13":4,"14":4,"15":4,"16":4,"17":4,"18":6,"19":6,"20":6,"21":3,"22":4},"f":{"0":20,"1":3,"2":8,"3":4,"4":6,"5":3},"b":{"0":[4],"1":[5]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3d02bea040e833fecbb6ae9f688106aa3a88eb96"}
|
|
4
4
|
,"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/utils.js": {"path":"/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/utils.js","statementMap":{"0":{"start":{"line":5,"column":42},"end":{"line":5,"column":61}},"1":{"start":{"line":6,"column":36},"end":{"line":6,"column":53}},"2":{"start":{"line":14,"column":16},"end":{"line":14,"column":38}},"3":{"start":{"line":15,"column":2},"end":{"line":21,"column":3}},"4":{"start":{"line":15,"column":15},"end":{"line":15,"column":16}},"5":{"start":{"line":16,"column":4},"end":{"line":20,"column":5}},"6":{"start":{"line":17,"column":6},"end":{"line":17,"column":49}},"7":{"start":{"line":18,"column":6},"end":{"line":18,"column":46}},"8":{"start":{"line":19,"column":6},"end":{"line":19,"column":12}},"9":{"start":{"line":22,"column":2},"end":{"line":22,"column":27}},"10":{"start":{"line":31,"column":22},"end":{"line":31,"column":45}},"11":{"start":{"line":32,"column":15},"end":{"line":32,"column":38}},"12":{"start":{"line":34,"column":16},"end":{"line":34,"column":18}},"13":{"start":{"line":35,"column":2},"end":{"line":39,"column":3}},"14":{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},"15":{"start":{"line":37,"column":6},"end":{"line":37,"column":45}},"16":{"start":{"line":41,"column":2},"end":{"line":41,"column":15}},"17":{"start":{"line":52,"column":22},"end":{"line":52,"column":45}},"18":{"start":{"line":53,"column":15},"end":{"line":53,"column":38}},"19":{"start":{"line":55,"column":16},"end":{"line":55,"column":18}},"20":{"start":{"line":57,"column":2},"end":{"line":109,"column":3}},"21":{"start":{"line":58,"column":4},"end":{"line":58,"column":45}},"22":{"start":{"line":58,"column":36},"end":{"line":58,"column":45}},"23":{"start":{"line":60,"column":16},"end":{"line":60,"column":27}},"24":{"start":{"line":61,"column":18},"end":{"line":61,"column":28}},"25":{"start":{"line":64,"column":18},"end":{"line":64,"column":57}},"26":{"start":{"line":65,"column":18},"end":{"line":65,"column":56}},"27":{"start":{"line":66,"column":18},"end":{"line":66,"column":57}},"28":{"start":{"line":67,"column":18},"end":{"line":67,"column":56}},"29":{"start":{"line":69,"column":22},"end":{"line":69,"column":35}},"30":{"start":{"line":70,"column":23},"end":{"line":70,"column":36}},"31":{"start":{"line":73,"column":23},"end":{"line":73,"column":72}},"32":{"start":{"line":74,"column":23},"end":{"line":74,"column":56}},"33":{"start":{"line":77,"column":20},"end":{"line":77,"column":47}},"34":{"start":{"line":78,"column":19},"end":{"line":78,"column":54}},"35":{"start":{"line":79,"column":16},"end":{"line":79,"column":39}},"36":{"start":{"line":80,"column":4},"end":{"line":80,"column":56}},"37":{"start":{"line":83,"column":22},"end":{"line":83,"column":67}},"38":{"start":{"line":84,"column":21},"end":{"line":84,"column":59}},"39":{"start":{"line":86,"column":4},"end":{"line":88,"column":5}},"40":{"start":{"line":86,"column":17},"end":{"line":86,"column":18}},"41":{"start":{"line":87,"column":6},"end":{"line":87,"column":46}},"42":{"start":{"line":91,"column":21},"end":{"line":91,"column":55}},"43":{"start":{"line":93,"column":4},"end":{"line":104,"column":5}},"44":{"start":{"line":93,"column":17},"end":{"line":93,"column":18}},"45":{"start":{"line":94,"column":6},"end":{"line":103,"column":7}},"46":{"start":{"line":94,"column":19},"end":{"line":94,"column":20}},"47":{"start":{"line":95,"column":23},"end":{"line":95,"column":40}},"48":{"start":{"line":96,"column":21},"end":{"line":96,"column":30}},"49":{"start":{"line":97,"column":21},"end":{"line":97,"column":30}},"50":{"start":{"line":99,"column":8},"end":{"line":102,"column":9}},"51":{"start":{"line":100,"column":25},"end":{"line":100,"column":47}},"52":{"start":{"line":101,"column":10},"end":{"line":101,"column":46}},"53":{"start":{"line":106,"column":4},"end":{"line":108,"column":7}},"54":{"start":{"line":111,"column":2},"end":{"line":111,"column":15}},"55":{"start":{"line":114,"column":0},"end":{"line":118,"column":2}}},"fnMap":{"0":{"name":"parseJson","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":31},"end":{"line":23,"column":1}},"line":13},"1":{"name":"parseBoundingBoxes","decl":{"start":{"line":30,"column":9},"end":{"line":30,"column":27}},"loc":{"start":{"line":30,"column":42},"end":{"line":42,"column":1}},"line":30},"2":{"name":"parseSegmentationMasks","decl":{"start":{"line":51,"column":15},"end":{"line":51,"column":37}},"loc":{"start":{"line":51,"column":73},"end":{"line":112,"column":1}},"line":51}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":20,"column":5}},{"start":{},"end":{}}],"line":16},"1":{"loc":{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":38,"column":5}},{"start":{},"end":{}}],"line":36},"2":{"loc":{"start":{"line":58,"column":4},"end":{"line":58,"column":45}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":45}},{"start":{},"end":{}}],"line":58},"3":{"loc":{"start":{"line":58,"column":8},"end":{"line":58,"column":34}},"type":"binary-expr","locations":[{"start":{"line":58,"column":8},"end":{"line":58,"column":20}},{"start":{"line":58,"column":24},"end":{"line":58,"column":34}}],"line":58},"4":{"loc":{"start":{"line":99,"column":8},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":102,"column":9}},{"start":{},"end":{}}],"line":99},"5":{"loc":{"start":{"line":99,"column":12},"end":{"line":99,"column":47}},"type":"binary-expr","locations":[{"start":{"line":99,"column":12},"end":{"line":99,"column":28}},{"start":{"line":99,"column":32},"end":{"line":99,"column":47}}],"line":99}},"s":{"0":3,"1":3,"2":12,"3":12,"4":12,"5":13,"6":4,"7":4,"8":4,"9":12,"10":5,"11":5,"12":5,"13":5,"14":8,"15":7,"16":5,"17":2,"18":2,"19":2,"20":2,"21":3,"22":3,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":2,"55":3},"f":{"0":12,"1":5,"2":2},"b":{"0":[4,9],"1":[7,1],"2":[3,0],"3":[3,2],"4":[0,0],"5":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c6222b511313a24a286eb18bc56c8b87e16a5c13"}
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">34.32% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>23/
|
|
28
|
+
<span class='fraction'>23/67</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">40.54% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>15/
|
|
35
|
+
<span class='fraction'>15/37</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">
|
|
47
|
+
<span class="strong">34.32% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>23/
|
|
49
|
+
<span class='fraction'>23/67</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -324,7 +324,18 @@
|
|
|
324
324
|
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
325
|
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
326
|
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
328
339
|
<span class="cline-any cline-neutral"> </span>
|
|
329
340
|
<span class="cline-any cline-neutral"> </span>
|
|
330
341
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -350,29 +361,29 @@
|
|
|
350
361
|
<span class="cline-any cline-neutral"> </span>
|
|
351
362
|
<span class="cline-any cline-neutral"> </span>
|
|
352
363
|
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-yes">
|
|
364
|
+
<span class="cline-any cline-yes">24x</span>
|
|
354
365
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">
|
|
366
|
+
<span class="cline-any cline-yes">24x</span>
|
|
356
367
|
<span class="cline-any cline-yes">1x</span>
|
|
357
368
|
<span class="cline-any cline-neutral"> </span>
|
|
358
369
|
<span class="cline-any cline-neutral"> </span>
|
|
359
370
|
<span class="cline-any cline-neutral"> </span>
|
|
360
371
|
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-yes">
|
|
362
|
-
<span class="cline-any cline-yes">
|
|
363
|
-
<span class="cline-any cline-yes">
|
|
372
|
+
<span class="cline-any cline-yes">23x</span>
|
|
373
|
+
<span class="cline-any cline-yes">23x</span>
|
|
374
|
+
<span class="cline-any cline-yes">23x</span>
|
|
364
375
|
<span class="cline-any cline-neutral"> </span>
|
|
365
376
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-yes">
|
|
377
|
+
<span class="cline-any cline-yes">23x</span>
|
|
367
378
|
<span class="cline-any cline-neutral"> </span>
|
|
368
379
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-yes">
|
|
380
|
+
<span class="cline-any cline-yes">23x</span>
|
|
370
381
|
<span class="cline-any cline-neutral"> </span>
|
|
371
382
|
<span class="cline-any cline-neutral"> </span>
|
|
372
383
|
<span class="cline-any cline-neutral"> </span>
|
|
373
384
|
<span class="cline-any cline-neutral"> </span>
|
|
374
385
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">
|
|
386
|
+
<span class="cline-any cline-yes">23x</span>
|
|
376
387
|
<span class="cline-any cline-neutral"> </span>
|
|
377
388
|
<span class="cline-any cline-neutral"> </span>
|
|
378
389
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -388,10 +399,19 @@
|
|
|
388
399
|
<span class="cline-any cline-neutral"> </span>
|
|
389
400
|
<span class="cline-any cline-no"> </span>
|
|
390
401
|
<span class="cline-any cline-no"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-no"> </span>
|
|
391
405
|
<span class="cline-any cline-no"> </span>
|
|
406
|
+
<span class="cline-any cline-no"> </span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-no"> </span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
392
411
|
<span class="cline-any cline-neutral"> </span>
|
|
393
412
|
<span class="cline-any cline-no"> </span>
|
|
394
413
|
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-no"> </span>
|
|
395
415
|
<span class="cline-any cline-neutral"> </span>
|
|
396
416
|
<span class="cline-any cline-neutral"> </span>
|
|
397
417
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -404,15 +424,17 @@
|
|
|
404
424
|
<span class="cline-any cline-neutral"> </span>
|
|
405
425
|
<span class="cline-any cline-neutral"> </span>
|
|
406
426
|
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-yes">9x</span>
|
|
408
|
-
<span class="cline-any cline-yes">9x</span>
|
|
409
427
|
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-yes">10x</span>
|
|
429
|
+
<span class="cline-any cline-yes">10x</span>
|
|
410
430
|
<span class="cline-any cline-neutral"> </span>
|
|
411
431
|
<span class="cline-any cline-neutral"> </span>
|
|
412
432
|
<span class="cline-any cline-neutral"> </span>
|
|
413
433
|
<span class="cline-any cline-neutral"> </span>
|
|
414
434
|
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-yes">10x</span>
|
|
416
438
|
<span class="cline-any cline-neutral"> </span>
|
|
417
439
|
<span class="cline-any cline-neutral"> </span>
|
|
418
440
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -647,9 +669,19 @@ If an object is present multiple times, name them according to their unique char
|
|
|
647
669
|
* @returns {Promise<Object>} - Image data for API
|
|
648
670
|
*/
|
|
649
671
|
<span class="fstat-no" title="function not covered" > as</span>ync _loadImage(imagePath) {
|
|
650
|
-
|
|
672
|
+
let imageBuffer = <span class="cstat-no" title="statement not covered" >await fs.readFile(imagePath);</span>
|
|
673
|
+
let mimeType = <span class="cstat-no" title="statement not covered" >this._getMimeType(imagePath);</span>
|
|
674
|
+
|
|
675
|
+
// Convert SVG to PNG for API compatibility
|
|
676
|
+
<span class="cstat-no" title="statement not covered" > if (mimeType === 'image/svg+xml') {</span>
|
|
677
|
+
const sharp = <span class="cstat-no" title="statement not covered" >require('sharp');</span>
|
|
678
|
+
<span class="cstat-no" title="statement not covered" > imageBuffer = await sharp(imageBuffer)</span>
|
|
679
|
+
.png()
|
|
680
|
+
.toBuffer();
|
|
681
|
+
<span class="cstat-no" title="statement not covered" > mimeType = 'image/png';</span>
|
|
682
|
+
}
|
|
683
|
+
|
|
651
684
|
const base64Data = <span class="cstat-no" title="statement not covered" >imageBuffer.toString('base64');</span>
|
|
652
|
-
const mimeType = <span class="cstat-no" title="statement not covered" >this._getMimeType(imagePath);</span>
|
|
653
685
|
|
|
654
686
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
655
687
|
inlineData: {
|
|
@@ -671,7 +703,8 @@ If an object is present multiple times, name them according to their unique char
|
|
|
671
703
|
'jpeg': 'image/jpeg',
|
|
672
704
|
'png': 'image/png',
|
|
673
705
|
'gif': 'image/gif',
|
|
674
|
-
'webp': 'image/webp'
|
|
706
|
+
'webp': 'image/webp',
|
|
707
|
+
'svg': 'image/svg+xml'
|
|
675
708
|
};
|
|
676
709
|
return mimeTypes[ext] || 'image/jpeg';
|
|
677
710
|
}
|
|
@@ -853,7 +886,7 @@ module.exports = VSegments;
|
|
|
853
886
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
854
887
|
Code coverage generated by
|
|
855
888
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
856
|
-
at 2025-12-
|
|
889
|
+
at 2025-12-05T14:58:27.396Z
|
|
857
890
|
</div>
|
|
858
891
|
<script src="prettify.js"></script>
|
|
859
892
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">38
|
|
26
|
+
<span class="strong">38% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>84/
|
|
28
|
+
<span class='fraction'>84/221</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">32
|
|
33
|
+
<span class="strong">32% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>24/
|
|
35
|
+
<span class='fraction'>24/75</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">38.
|
|
47
|
+
<span class="strong">38.13% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>82/
|
|
49
|
+
<span class='fraction'>82/215</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file low" data-value="core.js"><a href="core.js.html">core.js</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="34.32" class="pic low">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 34%"></div><div class="cover-empty" style="width: 66%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="
|
|
86
|
+
<td data-value="34.32" class="pct low">34.32%</td>
|
|
87
|
+
<td data-value="67" class="abs low">23/67</td>
|
|
88
|
+
<td data-value="40.54" class="pct low">40.54%</td>
|
|
89
|
+
<td data-value="37" class="abs low">15/37</td>
|
|
90
90
|
<td data-value="42.85" class="pct low">42.85%</td>
|
|
91
91
|
<td data-value="7" class="abs low">3/7</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
92
|
+
<td data-value="34.32" class="pct low">34.32%</td>
|
|
93
|
+
<td data-value="67" class="abs low">23/67</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -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 2025-12-
|
|
164
|
+
at 2025-12-05T14:58:27.396Z
|
|
165
165
|
</div>
|
|
166
166
|
<script src="prettify.js"></script>
|
|
167
167
|
<script>
|
|
@@ -130,7 +130,7 @@ module.exports.version = '0.1.0';
|
|
|
130
130
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
131
131
|
Code coverage generated by
|
|
132
132
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
133
|
-
at 2025-12-
|
|
133
|
+
at 2025-12-05T14:58:27.396Z
|
|
134
134
|
</div>
|
|
135
135
|
<script src="prettify.js"></script>
|
|
136
136
|
<script>
|
|
@@ -367,7 +367,7 @@ module.exports = {
|
|
|
367
367
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
368
368
|
Code coverage generated by
|
|
369
369
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
370
|
-
at 2025-12-
|
|
370
|
+
at 2025-12-05T14:58:27.396Z
|
|
371
371
|
</div>
|
|
372
372
|
<script src="prettify.js"></script>
|
|
373
373
|
<script>
|
|
@@ -424,7 +424,7 @@ module.exports = {
|
|
|
424
424
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
425
425
|
Code coverage generated by
|
|
426
426
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
427
|
-
at 2025-12-
|
|
427
|
+
at 2025-12-05T14:58:27.396Z
|
|
428
428
|
</div>
|
|
429
429
|
<script src="prettify.js"></script>
|
|
430
430
|
<script>
|
|
@@ -616,7 +616,7 @@ module.exports = {
|
|
|
616
616
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
617
617
|
Code coverage generated by
|
|
618
618
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
619
|
-
at 2025-12-
|
|
619
|
+
at 2025-12-05T14:58:27.396Z
|
|
620
620
|
</div>
|
|
621
621
|
<script src="prettify.js"></script>
|
|
622
622
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -2,16 +2,16 @@ TN:
|
|
|
2
2
|
SF:src/core.js
|
|
3
3
|
FN:26,(anonymous_0)
|
|
4
4
|
FN:62,(anonymous_1)
|
|
5
|
-
FN:
|
|
6
|
-
FN:
|
|
7
|
-
FN:
|
|
8
|
-
FN:
|
|
9
|
-
FN:
|
|
5
|
+
FN:90,(anonymous_2)
|
|
6
|
+
FN:108,(anonymous_3)
|
|
7
|
+
FN:127,(anonymous_4)
|
|
8
|
+
FN:179,(anonymous_5)
|
|
9
|
+
FN:238,(anonymous_6)
|
|
10
10
|
FNF:7
|
|
11
11
|
FNH:3
|
|
12
|
-
FNDA:
|
|
12
|
+
FNDA:24,(anonymous_0)
|
|
13
13
|
FNDA:0,(anonymous_1)
|
|
14
|
-
FNDA:
|
|
14
|
+
FNDA:10,(anonymous_2)
|
|
15
15
|
FNDA:3,(anonymous_3)
|
|
16
16
|
FNDA:0,(anonymous_4)
|
|
17
17
|
FNDA:0,(anonymous_5)
|
|
@@ -22,101 +22,107 @@ DA:7,2
|
|
|
22
22
|
DA:8,2
|
|
23
23
|
DA:9,2
|
|
24
24
|
DA:15,2
|
|
25
|
-
DA:27,
|
|
26
|
-
DA:29,
|
|
25
|
+
DA:27,24
|
|
26
|
+
DA:29,24
|
|
27
27
|
DA:30,1
|
|
28
|
-
DA:35,
|
|
29
|
-
DA:36,
|
|
30
|
-
DA:37,
|
|
31
|
-
DA:40,
|
|
32
|
-
DA:43,
|
|
33
|
-
DA:49,
|
|
28
|
+
DA:35,23
|
|
29
|
+
DA:36,23
|
|
30
|
+
DA:37,23
|
|
31
|
+
DA:40,23
|
|
32
|
+
DA:43,23
|
|
33
|
+
DA:49,23
|
|
34
34
|
DA:63,0
|
|
35
35
|
DA:64,0
|
|
36
|
-
DA:65,0
|
|
37
36
|
DA:67,0
|
|
38
|
-
DA:
|
|
39
|
-
DA:
|
|
40
|
-
DA:
|
|
41
|
-
DA:
|
|
42
|
-
DA:
|
|
43
|
-
DA:
|
|
44
|
-
DA:
|
|
45
|
-
DA:
|
|
46
|
-
DA:
|
|
47
|
-
DA:
|
|
37
|
+
DA:68,0
|
|
38
|
+
DA:69,0
|
|
39
|
+
DA:72,0
|
|
40
|
+
DA:75,0
|
|
41
|
+
DA:77,0
|
|
42
|
+
DA:91,10
|
|
43
|
+
DA:92,10
|
|
44
|
+
DA:100,10
|
|
45
|
+
DA:109,3
|
|
46
|
+
DA:111,3
|
|
47
|
+
DA:112,1
|
|
48
|
+
DA:115,3
|
|
49
|
+
DA:132,0
|
|
48
50
|
DA:135,0
|
|
49
|
-
DA:
|
|
50
|
-
DA:143,0
|
|
51
|
-
DA:144,0
|
|
51
|
+
DA:138,0
|
|
52
52
|
DA:146,0
|
|
53
53
|
DA:147,0
|
|
54
|
-
DA:
|
|
54
|
+
DA:154,0
|
|
55
55
|
DA:155,0
|
|
56
56
|
DA:157,0
|
|
57
|
-
DA:
|
|
58
|
-
DA:
|
|
59
|
-
DA:
|
|
60
|
-
DA:
|
|
61
|
-
DA:180,0
|
|
57
|
+
DA:158,0
|
|
58
|
+
DA:162,0
|
|
59
|
+
DA:166,0
|
|
60
|
+
DA:168,0
|
|
62
61
|
DA:183,0
|
|
62
|
+
DA:186,0
|
|
63
|
+
DA:189,0
|
|
63
64
|
DA:190,0
|
|
64
65
|
DA:191,0
|
|
65
|
-
DA:
|
|
66
|
-
DA:199,0
|
|
66
|
+
DA:194,0
|
|
67
67
|
DA:201,0
|
|
68
68
|
DA:202,0
|
|
69
|
-
DA:
|
|
69
|
+
DA:209,0
|
|
70
70
|
DA:210,0
|
|
71
|
-
DA:
|
|
71
|
+
DA:212,0
|
|
72
72
|
DA:213,0
|
|
73
|
-
DA:
|
|
74
|
-
DA:
|
|
75
|
-
DA:
|
|
76
|
-
DA:
|
|
77
|
-
DA:
|
|
78
|
-
DA:
|
|
79
|
-
DA:
|
|
73
|
+
DA:217,0
|
|
74
|
+
DA:221,0
|
|
75
|
+
DA:222,0
|
|
76
|
+
DA:224,0
|
|
77
|
+
DA:244,0
|
|
78
|
+
DA:247,0
|
|
79
|
+
DA:250,0
|
|
80
|
+
DA:251,0
|
|
80
81
|
DA:257,0
|
|
81
|
-
DA:
|
|
82
|
-
|
|
82
|
+
DA:264,0
|
|
83
|
+
DA:265,0
|
|
84
|
+
DA:268,0
|
|
85
|
+
DA:272,2
|
|
86
|
+
LF:67
|
|
83
87
|
LH:23
|
|
84
88
|
BRDA:26,0,0,2
|
|
85
|
-
BRDA:27,1,0,
|
|
89
|
+
BRDA:27,1,0,24
|
|
86
90
|
BRDA:27,1,1,2
|
|
87
91
|
BRDA:29,2,0,1
|
|
88
|
-
BRDA:29,2,1,
|
|
89
|
-
BRDA:35,3,0,
|
|
90
|
-
BRDA:35,3,1,
|
|
92
|
+
BRDA:29,2,1,23
|
|
93
|
+
BRDA:35,3,0,23
|
|
94
|
+
BRDA:35,3,1,22
|
|
91
95
|
BRDA:36,4,0,2
|
|
92
|
-
BRDA:36,4,1,
|
|
93
|
-
BRDA:37,5,0,
|
|
94
|
-
BRDA:37,5,1,
|
|
95
|
-
BRDA:
|
|
96
|
-
BRDA:
|
|
97
|
-
BRDA:100,7,0,
|
|
96
|
+
BRDA:36,4,1,21
|
|
97
|
+
BRDA:37,5,0,23
|
|
98
|
+
BRDA:37,5,1,18
|
|
99
|
+
BRDA:67,6,0,0
|
|
100
|
+
BRDA:67,6,1,0
|
|
101
|
+
BRDA:100,7,0,10
|
|
98
102
|
BRDA:100,7,1,2
|
|
99
|
-
BRDA:
|
|
100
|
-
BRDA:
|
|
101
|
-
BRDA:
|
|
102
|
-
BRDA:
|
|
103
|
-
BRDA:
|
|
104
|
-
BRDA:
|
|
105
|
-
BRDA:
|
|
106
|
-
BRDA:
|
|
107
|
-
BRDA:
|
|
108
|
-
BRDA:
|
|
109
|
-
BRDA:
|
|
110
|
-
BRDA:
|
|
111
|
-
BRDA:
|
|
112
|
-
BRDA:
|
|
113
|
-
BRDA:
|
|
114
|
-
BRDA:
|
|
115
|
-
BRDA:
|
|
116
|
-
BRDA:
|
|
117
|
-
BRDA:
|
|
118
|
-
BRDA:
|
|
119
|
-
|
|
103
|
+
BRDA:111,8,0,1
|
|
104
|
+
BRDA:111,8,1,2
|
|
105
|
+
BRDA:127,9,0,0
|
|
106
|
+
BRDA:129,10,0,0
|
|
107
|
+
BRDA:130,11,0,0
|
|
108
|
+
BRDA:131,12,0,0
|
|
109
|
+
BRDA:157,13,0,0
|
|
110
|
+
BRDA:157,13,1,0
|
|
111
|
+
BRDA:179,14,0,0
|
|
112
|
+
BRDA:181,15,0,0
|
|
113
|
+
BRDA:182,16,0,0
|
|
114
|
+
BRDA:212,17,0,0
|
|
115
|
+
BRDA:212,17,1,0
|
|
116
|
+
BRDA:238,18,0,0
|
|
117
|
+
BRDA:240,19,0,0
|
|
118
|
+
BRDA:241,20,0,0
|
|
119
|
+
BRDA:242,21,0,0
|
|
120
|
+
BRDA:243,22,0,0
|
|
121
|
+
BRDA:250,23,0,0
|
|
122
|
+
BRDA:250,23,1,0
|
|
123
|
+
BRDA:264,24,0,0
|
|
124
|
+
BRDA:264,24,1,0
|
|
125
|
+
BRF:37
|
|
120
126
|
BRH:15
|
|
121
127
|
end_of_record
|
|
122
128
|
TN:
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vsegments",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Visual segmentation and bounding box detection using Google Gemini AI",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"vsegments": "
|
|
8
|
+
"vsegments": "bin/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "jest",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
33
|
-
"url": "git@github.com
|
|
33
|
+
"url": "git+ssh://git@github.com/nxtphaseai/node_vsegments.git"
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://github.com/nxtphaseai/node_vsegments#readme",
|
|
36
36
|
"bugs": {
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@google/generative-ai": "^0.21.0",
|
|
44
44
|
"canvas": "^2.11.2",
|
|
45
|
-
"commander": "^12.0.0"
|
|
45
|
+
"commander": "^12.0.0",
|
|
46
|
+
"sharp": "^0.33.0",
|
|
47
|
+
"vsegments": "^0.1.4"
|
|
46
48
|
},
|
|
47
49
|
"devDependencies": {
|
|
48
50
|
"@types/jest": "^30.0.0",
|
package/src/core.js
CHANGED
|
@@ -7,11 +7,11 @@ const { loadImage } = require('canvas');
|
|
|
7
7
|
const fs = require('fs').promises;
|
|
8
8
|
const { SegmentationResult } = require('./models');
|
|
9
9
|
const { parseBoundingBoxes, parseSegmentationMasks } = require('./utils');
|
|
10
|
-
const {
|
|
11
|
-
loadImageToCanvas,
|
|
12
|
-
plotBoundingBoxes,
|
|
10
|
+
const {
|
|
11
|
+
loadImageToCanvas,
|
|
12
|
+
plotBoundingBoxes,
|
|
13
13
|
plotSegmentationMasks,
|
|
14
|
-
saveCanvas
|
|
14
|
+
saveCanvas
|
|
15
15
|
} = require('./visualize');
|
|
16
16
|
|
|
17
17
|
class VSegments {
|
|
@@ -25,26 +25,37 @@ class VSegments {
|
|
|
25
25
|
*/
|
|
26
26
|
constructor(options = {}) {
|
|
27
27
|
this.apiKey = options.apiKey || process.env.GOOGLE_API_KEY;
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
if (!this.apiKey) {
|
|
30
30
|
throw new Error(
|
|
31
31
|
'API key must be provided or set in GOOGLE_API_KEY environment variable'
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
this.model = options.model || 'gemini-3-pro-preview';
|
|
36
36
|
this.temperature = options.temperature !== undefined ? options.temperature : 0.5;
|
|
37
37
|
this.maxObjects = options.maxObjects || 25;
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
// Initialize Google AI client
|
|
40
40
|
this.genAI = new GoogleGenerativeAI(this.apiKey);
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
// Default system instructions
|
|
43
43
|
this.defaultSystemInstructions = `
|
|
44
|
-
Return bounding boxes as a JSON array with labels.
|
|
45
|
-
|
|
44
|
+
Return bounding boxes as a JSON array with labels.
|
|
45
|
+
Never return masks or code fencing. Limit to ${this.maxObjects} objects.
|
|
46
|
+
|
|
47
|
+
Follow this intuition:
|
|
48
|
+
If an object is present multiple times, name them according to their unique characteristic
|
|
49
|
+
(colors, size, position, unique characteristics, etc..).
|
|
50
|
+
If the object is a face number them according to how someone would draw the features of the face. First the left eye, then the right eye
|
|
51
|
+
then the nose, then the left ear, then the right ear, then the mouth, then the chin.
|
|
52
|
+
Same with Animal faces.
|
|
53
|
+
|
|
54
|
+
General guideline:
|
|
55
|
+
Follow a drawing order intuitively. People usually do not draw first an eye, and then the background and then the shirt but they
|
|
56
|
+
follow a more natural order with symmetry in mind.
|
|
46
57
|
`.trim();
|
|
47
|
-
|
|
58
|
+
|
|
48
59
|
// Safety settings
|
|
49
60
|
this.safetySettings = [
|
|
50
61
|
{
|
|
@@ -53,17 +64,27 @@ If an object is present multiple times, name them according to their unique char
|
|
|
53
64
|
},
|
|
54
65
|
];
|
|
55
66
|
}
|
|
56
|
-
|
|
67
|
+
|
|
57
68
|
/**
|
|
58
69
|
* Load image from file and convert to format for API
|
|
59
70
|
* @param {string} imagePath - Path to image file
|
|
60
71
|
* @returns {Promise<Object>} - Image data for API
|
|
61
72
|
*/
|
|
62
73
|
async _loadImage(imagePath) {
|
|
63
|
-
|
|
74
|
+
let imageBuffer = await fs.readFile(imagePath);
|
|
75
|
+
let mimeType = this._getMimeType(imagePath);
|
|
76
|
+
|
|
77
|
+
// Convert SVG to PNG for API compatibility
|
|
78
|
+
if (mimeType === 'image/svg+xml') {
|
|
79
|
+
const sharp = require('sharp');
|
|
80
|
+
imageBuffer = await sharp(imageBuffer)
|
|
81
|
+
.png()
|
|
82
|
+
.toBuffer();
|
|
83
|
+
mimeType = 'image/png';
|
|
84
|
+
}
|
|
85
|
+
|
|
64
86
|
const base64Data = imageBuffer.toString('base64');
|
|
65
|
-
|
|
66
|
-
|
|
87
|
+
|
|
67
88
|
return {
|
|
68
89
|
inlineData: {
|
|
69
90
|
data: base64Data,
|
|
@@ -71,7 +92,7 @@ If an object is present multiple times, name them according to their unique char
|
|
|
71
92
|
}
|
|
72
93
|
};
|
|
73
94
|
}
|
|
74
|
-
|
|
95
|
+
|
|
75
96
|
/**
|
|
76
97
|
* Get MIME type from file extension
|
|
77
98
|
* @param {string} filePath - File path
|
|
@@ -84,11 +105,12 @@ If an object is present multiple times, name them according to their unique char
|
|
|
84
105
|
'jpeg': 'image/jpeg',
|
|
85
106
|
'png': 'image/png',
|
|
86
107
|
'gif': 'image/gif',
|
|
87
|
-
'webp': 'image/webp'
|
|
108
|
+
'webp': 'image/webp',
|
|
109
|
+
'svg': 'image/svg+xml'
|
|
88
110
|
};
|
|
89
111
|
return mimeTypes[ext] || 'image/jpeg';
|
|
90
112
|
}
|
|
91
|
-
|
|
113
|
+
|
|
92
114
|
/**
|
|
93
115
|
* Get system instructions with custom additions
|
|
94
116
|
* @param {string} customInstructions - Additional instructions
|
|
@@ -96,14 +118,14 @@ If an object is present multiple times, name them according to their unique char
|
|
|
96
118
|
*/
|
|
97
119
|
_getSystemInstructions(customInstructions) {
|
|
98
120
|
let instructions = this.defaultSystemInstructions;
|
|
99
|
-
|
|
121
|
+
|
|
100
122
|
if (customInstructions) {
|
|
101
123
|
instructions += '\n' + customInstructions;
|
|
102
124
|
}
|
|
103
|
-
|
|
125
|
+
|
|
104
126
|
return instructions;
|
|
105
127
|
}
|
|
106
|
-
|
|
128
|
+
|
|
107
129
|
/**
|
|
108
130
|
* Detect bounding boxes in an image
|
|
109
131
|
* @param {string} imagePath - Path to image file
|
|
@@ -119,17 +141,17 @@ If an object is present multiple times, name them according to their unique char
|
|
|
119
141
|
customInstructions = null,
|
|
120
142
|
maxSize = 1024
|
|
121
143
|
} = options;
|
|
122
|
-
|
|
144
|
+
|
|
123
145
|
// Load image
|
|
124
146
|
const image = await this._loadImage(imagePath);
|
|
125
|
-
|
|
147
|
+
|
|
126
148
|
// Get model
|
|
127
149
|
const model = this.genAI.getGenerativeModel({
|
|
128
150
|
model: this.model,
|
|
129
151
|
safetySettings: this.safetySettings,
|
|
130
152
|
systemInstruction: this._getSystemInstructions(customInstructions)
|
|
131
153
|
});
|
|
132
|
-
|
|
154
|
+
|
|
133
155
|
// Generate content
|
|
134
156
|
let result, response, text;
|
|
135
157
|
try {
|
|
@@ -139,7 +161,7 @@ If an object is present multiple times, name them according to their unique char
|
|
|
139
161
|
temperature: this.temperature,
|
|
140
162
|
}
|
|
141
163
|
});
|
|
142
|
-
|
|
164
|
+
|
|
143
165
|
response = result.response;
|
|
144
166
|
text = response.text();
|
|
145
167
|
} catch (error) {
|
|
@@ -150,13 +172,13 @@ If an object is present multiple times, name them according to their unique char
|
|
|
150
172
|
}
|
|
151
173
|
throw error;
|
|
152
174
|
}
|
|
153
|
-
|
|
175
|
+
|
|
154
176
|
// Parse response
|
|
155
177
|
const boxes = parseBoundingBoxes(text);
|
|
156
|
-
|
|
178
|
+
|
|
157
179
|
return new SegmentationResult(boxes, null, text);
|
|
158
180
|
}
|
|
159
|
-
|
|
181
|
+
|
|
160
182
|
/**
|
|
161
183
|
* Perform segmentation on an image
|
|
162
184
|
* @param {string} imagePath - Path to image file
|
|
@@ -170,21 +192,21 @@ If an object is present multiple times, name them according to their unique char
|
|
|
170
192
|
prompt = 'Give the segmentation masks for the objects. Output a JSON list of segmentation masks where each entry contains the 2D bounding box in the key "box_2d", the segmentation mask in key "mask", and the text label in the key "label". Use descriptive labels.',
|
|
171
193
|
maxSize = 1024
|
|
172
194
|
} = options;
|
|
173
|
-
|
|
195
|
+
|
|
174
196
|
// Load image
|
|
175
197
|
const image = await this._loadImage(imagePath);
|
|
176
|
-
|
|
198
|
+
|
|
177
199
|
// Get image dimensions
|
|
178
200
|
const img = await loadImage(imagePath);
|
|
179
201
|
const imgWidth = img.width;
|
|
180
202
|
const imgHeight = img.height;
|
|
181
|
-
|
|
203
|
+
|
|
182
204
|
// Get model (no system instructions for segmentation)
|
|
183
205
|
const model = this.genAI.getGenerativeModel({
|
|
184
206
|
model: this.model,
|
|
185
207
|
safetySettings: this.safetySettings
|
|
186
208
|
});
|
|
187
|
-
|
|
209
|
+
|
|
188
210
|
// Generate content
|
|
189
211
|
let result, response, text;
|
|
190
212
|
try {
|
|
@@ -194,7 +216,7 @@ If an object is present multiple times, name them according to their unique char
|
|
|
194
216
|
temperature: this.temperature,
|
|
195
217
|
}
|
|
196
218
|
});
|
|
197
|
-
|
|
219
|
+
|
|
198
220
|
response = result.response;
|
|
199
221
|
text = response.text();
|
|
200
222
|
} catch (error) {
|
|
@@ -205,14 +227,14 @@ If an object is present multiple times, name them according to their unique char
|
|
|
205
227
|
}
|
|
206
228
|
throw error;
|
|
207
229
|
}
|
|
208
|
-
|
|
230
|
+
|
|
209
231
|
// Parse response
|
|
210
232
|
const boxes = parseBoundingBoxes(text);
|
|
211
233
|
const masks = await parseSegmentationMasks(text, imgHeight, imgWidth);
|
|
212
|
-
|
|
234
|
+
|
|
213
235
|
return new SegmentationResult(boxes, masks, text);
|
|
214
236
|
}
|
|
215
|
-
|
|
237
|
+
|
|
216
238
|
/**
|
|
217
239
|
* Visualize detection/segmentation results
|
|
218
240
|
* @param {string} imagePath - Path to original image
|
|
@@ -231,10 +253,10 @@ If an object is present multiple times, name them according to their unique char
|
|
|
231
253
|
fontSize = 14,
|
|
232
254
|
alpha = 0.7
|
|
233
255
|
} = options;
|
|
234
|
-
|
|
256
|
+
|
|
235
257
|
// Load image to canvas
|
|
236
258
|
const canvas = await loadImageToCanvas(imagePath, 2048);
|
|
237
|
-
|
|
259
|
+
|
|
238
260
|
// Draw visualizations
|
|
239
261
|
if (result.masks) {
|
|
240
262
|
plotSegmentationMasks(canvas, result.masks, {
|
|
@@ -248,12 +270,12 @@ If an object is present multiple times, name them according to their unique char
|
|
|
248
270
|
fontSize
|
|
249
271
|
});
|
|
250
272
|
}
|
|
251
|
-
|
|
273
|
+
|
|
252
274
|
// Save if requested
|
|
253
275
|
if (outputPath) {
|
|
254
276
|
await saveCanvas(canvas, outputPath);
|
|
255
277
|
}
|
|
256
|
-
|
|
278
|
+
|
|
257
279
|
return canvas;
|
|
258
280
|
}
|
|
259
281
|
}
|