| # Troubleshooting Guide | ||
| ## Common Issues and Solutions | ||
| ### 1. Google Gemini API Errors | ||
| #### Error: 500 Internal Server Error | ||
| ``` | ||
| GoogleGenerativeAIFetchError: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/...: [500 Internal Server Error] | ||
| ``` | ||
| **Possible Causes:** | ||
| - Temporary API outage | ||
| - Model name is incorrect or unavailable | ||
| - API quota exceeded | ||
| - Image is too large or in unsupported format | ||
| **Solutions:** | ||
| 1. **Try a different model:** | ||
| ```javascript | ||
| const vs = new VSegments({ | ||
| apiKey: 'YOUR_API_KEY', | ||
| model: 'gemini-3-pro-preview' // Default model | ||
| }); | ||
| ``` | ||
| 2. **Wait and retry:** The API may be experiencing temporary issues | ||
| 3. **Check your API key:** Verify it's valid and has proper permissions | ||
| 4. **Reduce image size:** Ensure images are under 4MB and reasonable dimensions | ||
| 5. **Verify image path:** Make sure the image file exists and is readable | ||
| #### Error: 403 Forbidden | ||
| ``` | ||
| GoogleGenerativeAIFetchError: [403 Forbidden] | ||
| ``` | ||
| **Causes:** | ||
| - Invalid API key | ||
| - API key doesn't have necessary permissions | ||
| - API not enabled for your project | ||
| **Solutions:** | ||
| 1. Verify your API key is correct | ||
| 2. Enable the Generative Language API in Google Cloud Console | ||
| 3. Check API key restrictions in Google Cloud Console | ||
| #### Error: 429 Too Many Requests | ||
| ``` | ||
| GoogleGenerativeAIFetchError: [429 Too Many Requests] | ||
| ``` | ||
| **Causes:** | ||
| - Rate limit exceeded | ||
| - Quota exceeded | ||
| **Solutions:** | ||
| 1. Wait before making more requests | ||
| 2. Implement rate limiting in your code | ||
| 3. Upgrade your API quota if needed | ||
| ### 2. Image Loading Issues | ||
| #### Error: Image file not found | ||
| ``` | ||
| Error: Image file not found: path/to/image.jpg | ||
| ``` | ||
| **Solutions:** | ||
| 1. Check the file path is correct (use absolute paths) | ||
| 2. Verify the file exists: `ls path/to/image.jpg` | ||
| 3. Check file permissions | ||
| #### Unsupported Image Format | ||
| **Supported formats:** JPG, JPEG, PNG, GIF, WEBP | ||
| **Solutions:** | ||
| 1. Convert your image to a supported format | ||
| 2. Check the file extension is correct | ||
| ### 3. Module/Package Issues | ||
| #### Warning: MODULE_TYPELESS_PACKAGE_JSON | ||
| ``` | ||
| (node:xxxxx) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///... is not specified | ||
| ``` | ||
| **Solution:** | ||
| Add to your `package.json`: | ||
| ```json | ||
| { | ||
| "type": "module" | ||
| } | ||
| ``` | ||
| Or use CommonJS syntax: | ||
| ```javascript | ||
| const VSegments = require('vsegments'); | ||
| ``` | ||
| #### Error: Cannot find module 'vsegments' | ||
| ``` | ||
| Error: Cannot find module 'vsegments' | ||
| ``` | ||
| **Solutions:** | ||
| 1. Install the package: `npm install vsegments` | ||
| 2. Check you're in the right directory | ||
| 3. Verify `node_modules` exists | ||
| ### 4. Segmentation Issues | ||
| #### No objects detected | ||
| ``` | ||
| Found 0 objects | ||
| ``` | ||
| **Possible causes:** | ||
| - Image is too simple/blank | ||
| - Objects are not clear enough | ||
| - Prompt is too specific | ||
| **Solutions:** | ||
| 1. Use a clearer image | ||
| 2. Try a custom prompt | ||
| 3. Adjust the model settings | ||
| #### Poor segmentation quality | ||
| **Solutions:** | ||
| 1. **Use higher quality images:** | ||
| ```javascript | ||
| const result = await vs.segment('image.jpg', { | ||
| maxSize: 2048 // Increase max size | ||
| }); | ||
| ``` | ||
| 2. **Adjust temperature:** | ||
| ```javascript | ||
| const vs = new VSegments({ | ||
| apiKey: 'YOUR_API_KEY', | ||
| temperature: 0.2 // Lower = more consistent | ||
| }); | ||
| ``` | ||
| 3. **Use custom prompts:** | ||
| ```javascript | ||
| const result = await vs.segment('image.jpg', { | ||
| prompt: 'Detect and segment all people and vehicles in this image' | ||
| }); | ||
| ``` | ||
| ### 5. Performance Issues | ||
| #### Slow processing | ||
| **Solutions:** | ||
| 1. **Reduce image size:** | ||
| ```javascript | ||
| const result = await vs.segment('image.jpg', { | ||
| maxSize: 512 // Smaller = faster | ||
| }); | ||
| ``` | ||
| 2. **Use recommended model:** | ||
| ```javascript | ||
| const vs = new VSegments({ | ||
| apiKey: 'YOUR_API_KEY', | ||
| model: 'gemini-3-pro-preview' // Default high-quality model | ||
| }); | ||
| ``` | ||
| 3. **Process images in batches** rather than all at once | ||
| ### 6. Canvas/Visualization Issues | ||
| #### Error: Cannot find module 'canvas' | ||
| ``` | ||
| Error: Cannot find module 'canvas' | ||
| ``` | ||
| **Solutions:** | ||
| 1. The `canvas` dependency requires native compilation | ||
| 2. Install build tools: | ||
| - **macOS:** `xcode-select --install` | ||
| - **Ubuntu/Debian:** `sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev` | ||
| - **Windows:** Install windows-build-tools | ||
| 3. Reinstall canvas: `npm install canvas --build-from-source` | ||
| ## Testing Your Setup | ||
| Create a simple test script (`test-setup.js`): | ||
| ```javascript | ||
| import VSegments from 'vsegments'; | ||
| import fs from 'fs'; | ||
| async function test() { | ||
| console.log('Testing vsegments setup...\n'); | ||
| // 1. Test API key | ||
| const apiKey = process.env.GOOGLE_API_KEY; | ||
| if (!apiKey) { | ||
| console.error('❌ GOOGLE_API_KEY not set'); | ||
| process.exit(1); | ||
| } | ||
| console.log('✅ API key found'); | ||
| // 2. Test initialization | ||
| try { | ||
| const vs = new VSegments({ apiKey }); | ||
| console.log('✅ VSegments initialized'); | ||
| } catch (error) { | ||
| console.error('❌ Initialization failed:', error.message); | ||
| process.exit(1); | ||
| } | ||
| // 3. Test image file | ||
| const imagePath = 'test-image.jpg'; | ||
| if (!fs.existsSync(imagePath)) { | ||
| console.error(`❌ Test image not found: ${imagePath}`); | ||
| console.log(' Create a test-image.jpg to continue'); | ||
| process.exit(1); | ||
| } | ||
| console.log('✅ Test image found'); | ||
| console.log('\n✅ Setup looks good! Try running your script.'); | ||
| } | ||
| test().catch(console.error); | ||
| ``` | ||
| ## Getting Help | ||
| If you continue to experience issues: | ||
| 1. **Check the examples:** Review the example scripts in the `examples/` directory | ||
| 2. **Review the API documentation:** [Google Gemini API Docs](https://ai.google.dev/docs) | ||
| 3. **File an issue:** [GitHub Issues](https://github.com/nxtphaseai/node_vsegments/issues) | ||
| 4. **Check API status:** [Google Cloud Status Dashboard](https://status.cloud.google.com/) | ||
| ## Recommended Models (as of December 2025) | ||
| - **Default (Best quality):** `gemini-3-pro-preview` | ||
| - **Alternative:** `gemini-2.5-flash` | ||
| Update your code: | ||
| ```javascript | ||
| const vs = new VSegments({ | ||
| apiKey: 'YOUR_API_KEY', | ||
| model: 'gemini-3-pro-preview' // Default | ||
| }); | ||
| ``` |
+33
-25
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <coverage generated="1764937975239" clover="3.2.0"> | ||
| <project timestamp="1764937975239" name="All files"> | ||
| <metrics statements="203" coveredstatements="82" conditionals="69" coveredconditionals="24" methods="24" coveredmethods="12" elements="296" coveredelements="118" complexity="0" loc="203" ncloc="203" packages="1" files="5" classes="5"/> | ||
| <coverage generated="1764938703619" clover="3.2.0"> | ||
| <project timestamp="1764938703620" name="All files"> | ||
| <metrics statements="211" coveredstatements="82" conditionals="73" coveredconditionals="24" methods="24" coveredmethods="12" elements="308" coveredelements="118" complexity="0" loc="211" ncloc="211" packages="1" files="5" classes="5"/> | ||
| <file name="core.js" path="/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/core.js"> | ||
| <metrics statements="55" coveredstatements="23" conditionals="31" coveredconditionals="15" methods="7" coveredmethods="3"/> | ||
| <metrics statements="63" coveredstatements="23" conditionals="35" coveredconditionals="15" methods="7" coveredmethods="3"/> | ||
| <line num="5" count="2" type="stmt"/> | ||
@@ -36,28 +36,36 @@ <line num="6" count="2" type="stmt"/> | ||
| <line num="127" count="0" type="stmt"/> | ||
| <line num="134" count="0" type="stmt"/> | ||
| <line num="141" count="0" type="stmt"/> | ||
| <line num="142" count="0" type="stmt"/> | ||
| <line num="145" count="0" type="stmt"/> | ||
| <line num="135" count="0" type="stmt"/> | ||
| <line num="136" count="0" type="stmt"/> | ||
| <line num="143" count="0" type="stmt"/> | ||
| <line num="144" count="0" type="stmt"/> | ||
| <line num="146" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="147" count="0" type="stmt"/> | ||
| <line num="162" count="0" type="stmt"/> | ||
| <line num="165" count="0" type="stmt"/> | ||
| <line num="168" count="0" type="stmt"/> | ||
| <line num="169" count="0" type="stmt"/> | ||
| <line num="170" count="0" type="stmt"/> | ||
| <line num="173" count="0" type="stmt"/> | ||
| <line num="151" count="0" type="stmt"/> | ||
| <line num="155" count="0" type="stmt"/> | ||
| <line num="157" count="0" type="stmt"/> | ||
| <line num="172" count="0" type="stmt"/> | ||
| <line num="175" count="0" type="stmt"/> | ||
| <line num="178" count="0" type="stmt"/> | ||
| <line num="179" count="0" type="stmt"/> | ||
| <line num="186" count="0" type="stmt"/> | ||
| <line num="187" count="0" type="stmt"/> | ||
| <line num="180" count="0" type="stmt"/> | ||
| <line num="183" count="0" type="stmt"/> | ||
| <line num="190" count="0" type="stmt"/> | ||
| <line num="191" count="0" type="stmt"/> | ||
| <line num="193" count="0" type="stmt"/> | ||
| <line num="198" count="0" type="stmt"/> | ||
| <line num="199" count="0" type="stmt"/> | ||
| <line num="201" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="202" count="0" type="stmt"/> | ||
| <line num="206" count="0" type="stmt"/> | ||
| <line num="210" count="0" type="stmt"/> | ||
| <line num="211" count="0" type="stmt"/> | ||
| <line num="213" count="0" type="stmt"/> | ||
| <line num="216" count="0" type="stmt"/> | ||
| <line num="219" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="220" count="0" type="stmt"/> | ||
| <line num="226" count="0" type="stmt"/> | ||
| <line num="233" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="234" count="0" type="stmt"/> | ||
| <line num="237" count="0" type="stmt"/> | ||
| <line num="241" count="2" type="stmt"/> | ||
| <line num="233" count="0" type="stmt"/> | ||
| <line num="236" count="0" type="stmt"/> | ||
| <line num="239" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="240" count="0" type="stmt"/> | ||
| <line num="246" count="0" type="stmt"/> | ||
| <line num="253" count="0" type="cond" truecount="0" falsecount="2"/> | ||
| <line num="254" count="0" type="stmt"/> | ||
| <line num="257" count="0" type="stmt"/> | ||
| <line num="261" count="2" type="stmt"/> | ||
| </file> | ||
@@ -64,0 +72,0 @@ <file name="index.js" path="/Users/marcokotrotsos/NXTPHASE/visualsegmenting/node_vsegments/src/index.js"> |
@@ -1,2 +0,2 @@ | ||
| {"/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":56}},"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":134,"column":19},"end":{"line":139,"column":6}},"30":{"start":{"line":141,"column":21},"end":{"line":141,"column":36}},"31":{"start":{"line":142,"column":17},"end":{"line":142,"column":32}},"32":{"start":{"line":145,"column":18},"end":{"line":145,"column":42}},"33":{"start":{"line":147,"column":4},"end":{"line":147,"column":53}},"34":{"start":{"line":162,"column":8},"end":{"line":162,"column":15}},"35":{"start":{"line":165,"column":18},"end":{"line":165,"column":50}},"36":{"start":{"line":168,"column":16},"end":{"line":168,"column":42}},"37":{"start":{"line":169,"column":21},"end":{"line":169,"column":30}},"38":{"start":{"line":170,"column":22},"end":{"line":170,"column":32}},"39":{"start":{"line":173,"column":18},"end":{"line":176,"column":6}},"40":{"start":{"line":179,"column":19},"end":{"line":184,"column":6}},"41":{"start":{"line":186,"column":21},"end":{"line":186,"column":36}},"42":{"start":{"line":187,"column":17},"end":{"line":187,"column":32}},"43":{"start":{"line":190,"column":18},"end":{"line":190,"column":42}},"44":{"start":{"line":191,"column":18},"end":{"line":191,"column":73}},"45":{"start":{"line":193,"column":4},"end":{"line":193,"column":54}},"46":{"start":{"line":213,"column":8},"end":{"line":213,"column":15}},"47":{"start":{"line":216,"column":19},"end":{"line":216,"column":59}},"48":{"start":{"line":219,"column":4},"end":{"line":230,"column":5}},"49":{"start":{"line":220,"column":6},"end":{"line":224,"column":9}},"50":{"start":{"line":226,"column":6},"end":{"line":229,"column":9}},"51":{"start":{"line":233,"column":4},"end":{"line":235,"column":5}},"52":{"start":{"line":234,"column":6},"end":{"line":234,"column":43}},"53":{"start":{"line":237,"column":4},"end":{"line":237,"column":18}},"54":{"start":{"line":241,"column":0},"end":{"line":241,"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":148,"column":3}},"line":116},"5":{"name":"(anonymous_5)","decl":{"start":{"line":158,"column":2},"end":{"line":158,"column":3}},"loc":{"start":{"line":158,"column":41},"end":{"line":194,"column":3}},"line":158},"6":{"name":"(anonymous_6)","decl":{"start":{"line":207,"column":2},"end":{"line":207,"column":3}},"loc":{"start":{"line":207,"column":51},"end":{"line":238,"column":3}},"line":207}},"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":55}},"type":"binary-expr","locations":[{"start":{"line":35,"column":17},"end":{"line":35,"column":30}},{"start":{"line":35,"column":34},"end":{"line":35,"column":55}}],"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":158,"column":27},"end":{"line":158,"column":39}},"type":"default-arg","locations":[{"start":{"line":158,"column":37},"end":{"line":158,"column":39}}],"line":158},"13":{"loc":{"start":{"line":160,"column":6},"end":{"line":160,"column":269}},"type":"default-arg","locations":[{"start":{"line":160,"column":15},"end":{"line":160,"column":269}}],"line":160},"14":{"loc":{"start":{"line":161,"column":6},"end":{"line":161,"column":20}},"type":"default-arg","locations":[{"start":{"line":161,"column":16},"end":{"line":161,"column":20}}],"line":161},"15":{"loc":{"start":{"line":207,"column":37},"end":{"line":207,"column":49}},"type":"default-arg","locations":[{"start":{"line":207,"column":47},"end":{"line":207,"column":49}}],"line":207},"16":{"loc":{"start":{"line":209,"column":6},"end":{"line":209,"column":23}},"type":"default-arg","locations":[{"start":{"line":209,"column":19},"end":{"line":209,"column":23}}],"line":209},"17":{"loc":{"start":{"line":210,"column":6},"end":{"line":210,"column":19}},"type":"default-arg","locations":[{"start":{"line":210,"column":18},"end":{"line":210,"column":19}}],"line":210},"18":{"loc":{"start":{"line":211,"column":6},"end":{"line":211,"column":19}},"type":"default-arg","locations":[{"start":{"line":211,"column":17},"end":{"line":211,"column":19}}],"line":211},"19":{"loc":{"start":{"line":212,"column":6},"end":{"line":212,"column":17}},"type":"default-arg","locations":[{"start":{"line":212,"column":14},"end":{"line":212,"column":17}}],"line":212},"20":{"loc":{"start":{"line":219,"column":4},"end":{"line":230,"column":5}},"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":230,"column":5}},{"start":{"line":225,"column":11},"end":{"line":230,"column":5}}],"line":219},"21":{"loc":{"start":{"line":233,"column":4},"end":{"line":235,"column":5}},"type":"if","locations":[{"start":{"line":233,"column":4},"end":{"line":235,"column":5}},{"start":{},"end":{}}],"line":233}},"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":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],"13":[0],"14":[0],"15":[0],"16":[0],"17":[0],"18":[0],"19":[0],"20":[0,0],"21":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bf6161d7489f642b263454c505b791081bf6a6eb"} | ||
| {"/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"} | ||
| ,"/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,0 +3,0 @@ ,"/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"} |
@@ -26,5 +26,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">41.81% </span> | ||
| <span class="strong">36.5% </span> | ||
| <span class="quiet">Statements</span> | ||
| <span class='fraction'>23/55</span> | ||
| <span class='fraction'>23/63</span> | ||
| </div> | ||
@@ -34,5 +34,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">48.38% </span> | ||
| <span class="strong">42.85% </span> | ||
| <span class="quiet">Branches</span> | ||
| <span class='fraction'>15/31</span> | ||
| <span class='fraction'>15/35</span> | ||
| </div> | ||
@@ -49,5 +49,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">41.81% </span> | ||
| <span class="strong">36.5% </span> | ||
| <span class="quiet">Lines</span> | ||
| <span class='fraction'>23/55</span> | ||
| <span class='fraction'>23/63</span> | ||
| </div> | ||
@@ -310,3 +310,23 @@ | ||
| <a name='L241'></a><a href='#L241'>241</a> | ||
| <a name='L242'></a><a href='#L242'>242</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> | ||
| <a name='L242'></a><a href='#L242'>242</a> | ||
| <a name='L243'></a><a href='#L243'>243</a> | ||
| <a name='L244'></a><a href='#L244'>244</a> | ||
| <a name='L245'></a><a href='#L245'>245</a> | ||
| <a name='L246'></a><a href='#L246'>246</a> | ||
| <a name='L247'></a><a href='#L247'>247</a> | ||
| <a name='L248'></a><a href='#L248'>248</a> | ||
| <a name='L249'></a><a href='#L249'>249</a> | ||
| <a name='L250'></a><a href='#L250'>250</a> | ||
| <a name='L251'></a><a href='#L251'>251</a> | ||
| <a name='L252'></a><a href='#L252'>252</a> | ||
| <a name='L253'></a><a href='#L253'>253</a> | ||
| <a name='L254'></a><a href='#L254'>254</a> | ||
| <a name='L255'></a><a href='#L255'>255</a> | ||
| <a name='L256'></a><a href='#L256'>256</a> | ||
| <a name='L257'></a><a href='#L257'>257</a> | ||
| <a name='L258'></a><a href='#L258'>258</a> | ||
| <a name='L259'></a><a href='#L259'>259</a> | ||
| <a name='L260'></a><a href='#L260'>260</a> | ||
| <a name='L261'></a><a href='#L261'>261</a> | ||
| <a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
@@ -444,3 +464,5 @@ <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
@@ -455,7 +477,14 @@ <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
@@ -474,2 +503,3 @@ <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
@@ -492,3 +522,5 @@ <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
@@ -503,5 +535,13 @@ <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-no"> </span> | ||
| <span class="cline-any cline-neutral"> </span> | ||
@@ -591,3 +631,3 @@ <span class="cline-any cline-no"> </span> | ||
| this.model = options.model || 'gemini-flash-latest'; | ||
| this.model = options.model || 'gemini-3-pro-preview'; | ||
| this.temperature = options.temperature !== undefined ? options.temperature : 0.5; | ||
@@ -691,12 +731,22 @@ this.maxObjects = options.maxObjects || 25; | ||
| // Generate content | ||
| const result = <span class="cstat-no" title="statement not covered" >await model.generateContent({</span> | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| let result, response, text; | ||
| <span class="cstat-no" title="statement not covered" > try {</span> | ||
| <span class="cstat-no" title="statement not covered" > result = await model.generateContent({</span> | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| } | ||
| }); | ||
| <span class="cstat-no" title="statement not covered" > response = result.response;</span> | ||
| <span class="cstat-no" title="statement not covered" > text = response.text();</span> | ||
| } catch (error) { | ||
| <span class="cstat-no" title="statement not covered" > if (error.status === 500) {</span> | ||
| <span class="cstat-no" title="statement not covered" > throw new Error(</span> | ||
| `Google Gemini API error (500): This may be a temporary issue. Try again later or verify your API key and image. Original error: ${error.message}` | ||
| ); | ||
| } | ||
| }); | ||
| <span class="cstat-no" title="statement not covered" > throw error;</span> | ||
| } | ||
| const response = <span class="cstat-no" title="statement not covered" >result.response;</span> | ||
| const text = <span class="cstat-no" title="statement not covered" >response.text();</span> | ||
| // Parse response | ||
@@ -737,12 +787,22 @@ const boxes = <span class="cstat-no" title="statement not covered" >parseBoundingBoxes(text);</span> | ||
| // Generate content | ||
| const result = <span class="cstat-no" title="statement not covered" >await model.generateContent({</span> | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| let result, response, text; | ||
| <span class="cstat-no" title="statement not covered" > try {</span> | ||
| <span class="cstat-no" title="statement not covered" > result = await model.generateContent({</span> | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| } | ||
| }); | ||
| <span class="cstat-no" title="statement not covered" > response = result.response;</span> | ||
| <span class="cstat-no" title="statement not covered" > text = response.text();</span> | ||
| } catch (error) { | ||
| <span class="cstat-no" title="statement not covered" > if (error.status === 500) {</span> | ||
| <span class="cstat-no" title="statement not covered" > throw new Error(</span> | ||
| `Google Gemini API error (500): This may be a temporary issue. Try again later or verify your API key and image. Original error: ${error.message}` | ||
| ); | ||
| } | ||
| }); | ||
| <span class="cstat-no" title="statement not covered" > throw error;</span> | ||
| } | ||
| const response = <span class="cstat-no" title="statement not covered" >result.response;</span> | ||
| const text = <span class="cstat-no" title="statement not covered" >response.text();</span> | ||
| // Parse response | ||
@@ -808,3 +868,3 @@ const boxes = <span class="cstat-no" title="statement not covered" >parseBoundingBoxes(text);</span> | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -811,0 +871,0 @@ <script src="prettify.js"></script> |
@@ -26,5 +26,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">40.19% </span> | ||
| <span class="strong">38.7% </span> | ||
| <span class="quiet">Statements</span> | ||
| <span class='fraction'>84/209</span> | ||
| <span class='fraction'>84/217</span> | ||
| </div> | ||
@@ -34,5 +34,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">34.78% </span> | ||
| <span class="strong">32.87% </span> | ||
| <span class="quiet">Branches</span> | ||
| <span class='fraction'>24/69</span> | ||
| <span class='fraction'>24/73</span> | ||
| </div> | ||
@@ -49,5 +49,5 @@ | ||
| <div class='fl pad1y space-right2'> | ||
| <span class="strong">40.39% </span> | ||
| <span class="strong">38.86% </span> | ||
| <span class="quiet">Lines</span> | ||
| <span class='fraction'>82/203</span> | ||
| <span class='fraction'>82/211</span> | ||
| </div> | ||
@@ -86,13 +86,13 @@ | ||
| <td class="file low" data-value="core.js"><a href="core.js.html">core.js</a></td> | ||
| <td data-value="41.81" class="pic low"> | ||
| <div class="chart"><div class="cover-fill" style="width: 41%"></div><div class="cover-empty" style="width: 59%"></div></div> | ||
| <td data-value="36.5" class="pic low"> | ||
| <div class="chart"><div class="cover-fill" style="width: 36%"></div><div class="cover-empty" style="width: 64%"></div></div> | ||
| </td> | ||
| <td data-value="41.81" class="pct low">41.81%</td> | ||
| <td data-value="55" class="abs low">23/55</td> | ||
| <td data-value="48.38" class="pct low">48.38%</td> | ||
| <td data-value="31" class="abs low">15/31</td> | ||
| <td data-value="36.5" class="pct low">36.5%</td> | ||
| <td data-value="63" class="abs low">23/63</td> | ||
| <td data-value="42.85" class="pct low">42.85%</td> | ||
| <td data-value="35" class="abs low">15/35</td> | ||
| <td data-value="42.85" class="pct low">42.85%</td> | ||
| <td data-value="7" class="abs low">3/7</td> | ||
| <td data-value="41.81" class="pct low">41.81%</td> | ||
| <td data-value="55" class="abs low">23/55</td> | ||
| <td data-value="36.5" class="pct low">36.5%</td> | ||
| <td data-value="63" class="abs low">23/63</td> | ||
| </tr> | ||
@@ -168,3 +168,3 @@ | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -171,0 +171,0 @@ <script src="prettify.js"></script> |
@@ -133,3 +133,3 @@ | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -136,0 +136,0 @@ <script src="prettify.js"></script> |
@@ -370,3 +370,3 @@ | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -373,0 +373,0 @@ <script src="prettify.js"></script> |
@@ -427,3 +427,3 @@ | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -430,0 +430,0 @@ <script src="prettify.js"></script> |
@@ -619,3 +619,3 @@ | ||
| <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> | ||
| at 2025-12-05T12:32:55.225Z | ||
| at 2025-12-05T12:45:03.605Z | ||
| </div> | ||
@@ -622,0 +622,0 @@ <script src="prettify.js"></script> |
+1
-1
| { | ||
| "name": "vsegments", | ||
| "version": "0.1.2", | ||
| "version": "0.1.3", | ||
| "description": "Visual segmentation and bounding box detection using Google Gemini AI", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
+31
-1
@@ -174,3 +174,3 @@ # vsegments (Node.js) | ||
| - `--api-key <key>`: Google API key (default: `GOOGLE_API_KEY` env var) | ||
| - `-m, --model <model>`: Model name (default: `gemini-flash-latest`) | ||
| - `-m, --model <model>`: Model name (default: `gemini-3-pro-preview`) | ||
| - `--temperature <temp>`: Sampling temperature 0.0-1.0 (default: 0.5) | ||
@@ -365,2 +365,31 @@ - `--max-objects <n>`: Maximum objects to detect (default: 25) | ||
| ## Troubleshooting | ||
| ### Common Issues | ||
| #### 500 Internal Server Error | ||
| If you get a 500 error from the Google Gemini API: | ||
| 1. **Try a different model:** | ||
| ```javascript | ||
| const vs = new VSegments({ | ||
| apiKey: 'YOUR_API_KEY', | ||
| model: 'gemini-3-pro-preview' // default model | ||
| }); | ||
| ``` | ||
| 2. **Check your image:** Ensure it's under 4MB and in a supported format (JPG, PNG, GIF, WEBP) | ||
| 3. **Wait and retry:** The API may be experiencing temporary issues | ||
| 4. **Verify API key:** Make sure your API key is valid and has proper permissions | ||
| For more detailed troubleshooting, see [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | ||
| ### Recommended Models | ||
| - **Default (High quality):** `gemini-3-pro-preview` | ||
| - **Alternative:** `gemini-2.5-flash` | ||
| ## License | ||
@@ -379,2 +408,3 @@ | ||
| - **Documentation**: [GitHub README](https://github.com/nxtphaseai/vsegments#readme) | ||
| - **Troubleshooting**: [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | ||
@@ -381,0 +411,0 @@ --- |
+37
-17
@@ -35,3 +35,3 @@ /** | ||
| this.model = options.model || 'gemini-flash-latest'; | ||
| this.model = options.model || 'gemini-3-pro-preview'; | ||
| this.temperature = options.temperature !== undefined ? options.temperature : 0.5; | ||
@@ -135,12 +135,22 @@ this.maxObjects = options.maxObjects || 25; | ||
| // Generate content | ||
| const result = await model.generateContent({ | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| let result, response, text; | ||
| try { | ||
| result = await model.generateContent({ | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| } | ||
| }); | ||
| response = result.response; | ||
| text = response.text(); | ||
| } catch (error) { | ||
| if (error.status === 500) { | ||
| throw new Error( | ||
| `Google Gemini API error (500): This may be a temporary issue. Try again later or verify your API key and image. Original error: ${error.message}` | ||
| ); | ||
| } | ||
| }); | ||
| throw error; | ||
| } | ||
| const response = result.response; | ||
| const text = response.text(); | ||
| // Parse response | ||
@@ -181,12 +191,22 @@ const boxes = parseBoundingBoxes(text); | ||
| // Generate content | ||
| const result = await model.generateContent({ | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| let result, response, text; | ||
| try { | ||
| result = await model.generateContent({ | ||
| contents: [{ role: 'user', parts: [{ text: prompt }, image] }], | ||
| generationConfig: { | ||
| temperature: this.temperature, | ||
| } | ||
| }); | ||
| response = result.response; | ||
| text = response.text(); | ||
| } catch (error) { | ||
| if (error.status === 500) { | ||
| throw new Error( | ||
| `Google Gemini API error (500): This may be a temporary issue. Try again later or verify your API key and image. Original error: ${error.message}` | ||
| ); | ||
| } | ||
| }); | ||
| throw error; | ||
| } | ||
| const response = result.response; | ||
| const text = response.text(); | ||
| // Parse response | ||
@@ -193,0 +213,0 @@ const boxes = parseBoundingBoxes(text); |
Sorry, the diff of this file is not supported yet
267454
4.75%32
3.23%1578
1.54%411
7.87%