vsegments 0.1.0 → 0.1.2

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.
@@ -0,0 +1,365 @@
1
+ TN:
2
+ SF:src/core.js
3
+ FN:26,(anonymous_0)
4
+ FN:62,(anonymous_1)
5
+ FN:80,(anonymous_2)
6
+ FN:97,(anonymous_3)
7
+ FN:116,(anonymous_4)
8
+ FN:158,(anonymous_5)
9
+ FN:207,(anonymous_6)
10
+ FNF:7
11
+ FNH:3
12
+ FNDA:23,(anonymous_0)
13
+ FNDA:0,(anonymous_1)
14
+ FNDA:9,(anonymous_2)
15
+ FNDA:3,(anonymous_3)
16
+ FNDA:0,(anonymous_4)
17
+ FNDA:0,(anonymous_5)
18
+ FNDA:0,(anonymous_6)
19
+ DA:5,2
20
+ DA:6,2
21
+ DA:7,2
22
+ DA:8,2
23
+ DA:9,2
24
+ DA:15,2
25
+ DA:27,23
26
+ DA:29,23
27
+ DA:30,1
28
+ DA:35,22
29
+ DA:36,22
30
+ DA:37,22
31
+ DA:40,22
32
+ DA:43,22
33
+ DA:49,22
34
+ DA:63,0
35
+ DA:64,0
36
+ DA:65,0
37
+ DA:67,0
38
+ DA:81,9
39
+ DA:82,9
40
+ DA:89,9
41
+ DA:98,3
42
+ DA:100,3
43
+ DA:101,1
44
+ DA:104,3
45
+ DA:121,0
46
+ DA:124,0
47
+ DA:127,0
48
+ DA:134,0
49
+ DA:141,0
50
+ DA:142,0
51
+ DA:145,0
52
+ DA:147,0
53
+ DA:162,0
54
+ DA:165,0
55
+ DA:168,0
56
+ DA:169,0
57
+ DA:170,0
58
+ DA:173,0
59
+ DA:179,0
60
+ DA:186,0
61
+ DA:187,0
62
+ DA:190,0
63
+ DA:191,0
64
+ DA:193,0
65
+ DA:213,0
66
+ DA:216,0
67
+ DA:219,0
68
+ DA:220,0
69
+ DA:226,0
70
+ DA:233,0
71
+ DA:234,0
72
+ DA:237,0
73
+ DA:241,2
74
+ LF:55
75
+ LH:23
76
+ BRDA:26,0,0,2
77
+ BRDA:27,1,0,23
78
+ BRDA:27,1,1,2
79
+ BRDA:29,2,0,1
80
+ BRDA:29,2,1,22
81
+ BRDA:35,3,0,22
82
+ BRDA:35,3,1,21
83
+ BRDA:36,4,0,2
84
+ BRDA:36,4,1,20
85
+ BRDA:37,5,0,22
86
+ BRDA:37,5,1,17
87
+ BRDA:89,6,0,9
88
+ BRDA:89,6,1,2
89
+ BRDA:100,7,0,1
90
+ BRDA:100,7,1,2
91
+ BRDA:116,8,0,0
92
+ BRDA:118,9,0,0
93
+ BRDA:119,10,0,0
94
+ BRDA:120,11,0,0
95
+ BRDA:158,12,0,0
96
+ BRDA:160,13,0,0
97
+ BRDA:161,14,0,0
98
+ BRDA:207,15,0,0
99
+ BRDA:209,16,0,0
100
+ BRDA:210,17,0,0
101
+ BRDA:211,18,0,0
102
+ BRDA:212,19,0,0
103
+ BRDA:219,20,0,0
104
+ BRDA:219,20,1,0
105
+ BRDA:233,21,0,0
106
+ BRDA:233,21,1,0
107
+ BRF:31
108
+ BRH:15
109
+ end_of_record
110
+ TN:
111
+ SF:src/index.js
112
+ FNF:0
113
+ FNH:0
114
+ DA:12,1
115
+ DA:13,1
116
+ DA:15,1
117
+ DA:16,1
118
+ DA:17,1
119
+ DA:18,1
120
+ DA:19,1
121
+ DA:20,1
122
+ LF:8
123
+ LH:8
124
+ BRF:0
125
+ BRH:0
126
+ end_of_record
127
+ TN:
128
+ SF:src/models.js
129
+ FN:14,(anonymous_0)
130
+ FN:28,(anonymous_1)
131
+ FN:41,(anonymous_2)
132
+ FN:63,(anonymous_3)
133
+ FN:80,(anonymous_4)
134
+ FN:90,(anonymous_5)
135
+ FNF:6
136
+ FNH:6
137
+ FNDA:20,(anonymous_0)
138
+ FNDA:3,(anonymous_1)
139
+ FNDA:8,(anonymous_2)
140
+ FNDA:4,(anonymous_3)
141
+ FNDA:6,(anonymous_4)
142
+ FNDA:3,(anonymous_5)
143
+ DA:15,20
144
+ DA:16,20
145
+ DA:17,20
146
+ DA:18,20
147
+ DA:19,20
148
+ DA:29,3
149
+ DA:30,3
150
+ DA:31,3
151
+ DA:32,3
152
+ DA:33,3
153
+ DA:42,8
154
+ DA:43,8
155
+ DA:64,4
156
+ DA:65,4
157
+ DA:66,4
158
+ DA:67,4
159
+ DA:68,4
160
+ DA:69,4
161
+ DA:81,6
162
+ DA:82,6
163
+ DA:83,6
164
+ DA:91,3
165
+ DA:95,4
166
+ LF:23
167
+ LH:23
168
+ BRDA:80,0,0,4
169
+ BRDA:80,1,0,5
170
+ BRF:2
171
+ BRH:2
172
+ end_of_record
173
+ TN:
174
+ SF:src/utils.js
175
+ FN:13,parseJson
176
+ FN:30,parseBoundingBoxes
177
+ FN:51,parseSegmentationMasks
178
+ FNF:3
179
+ FNH:3
180
+ FNDA:12,parseJson
181
+ FNDA:5,parseBoundingBoxes
182
+ FNDA:2,parseSegmentationMasks
183
+ DA:5,3
184
+ DA:6,3
185
+ DA:14,12
186
+ DA:15,12
187
+ DA:16,13
188
+ DA:17,4
189
+ DA:18,4
190
+ DA:19,4
191
+ DA:22,12
192
+ DA:31,5
193
+ DA:32,5
194
+ DA:34,5
195
+ DA:35,5
196
+ DA:36,8
197
+ DA:37,7
198
+ DA:41,5
199
+ DA:52,2
200
+ DA:53,2
201
+ DA:55,2
202
+ DA:57,2
203
+ DA:58,3
204
+ DA:60,0
205
+ DA:61,0
206
+ DA:64,0
207
+ DA:65,0
208
+ DA:66,0
209
+ DA:67,0
210
+ DA:69,0
211
+ DA:70,0
212
+ DA:73,0
213
+ DA:74,0
214
+ DA:77,0
215
+ DA:78,0
216
+ DA:79,0
217
+ DA:80,0
218
+ DA:83,0
219
+ DA:84,0
220
+ DA:86,0
221
+ DA:87,0
222
+ DA:91,0
223
+ DA:93,0
224
+ DA:94,0
225
+ DA:95,0
226
+ DA:96,0
227
+ DA:97,0
228
+ DA:99,0
229
+ DA:100,0
230
+ DA:101,0
231
+ DA:106,0
232
+ DA:111,2
233
+ DA:114,3
234
+ LF:51
235
+ LH:23
236
+ BRDA:16,0,0,4
237
+ BRDA:16,0,1,9
238
+ BRDA:36,1,0,7
239
+ BRDA:36,1,1,1
240
+ BRDA:58,2,0,3
241
+ BRDA:58,2,1,0
242
+ BRDA:58,3,0,3
243
+ BRDA:58,3,1,2
244
+ BRDA:99,4,0,0
245
+ BRDA:99,4,1,0
246
+ BRDA:99,5,0,0
247
+ BRDA:99,5,1,0
248
+ BRF:12
249
+ BRH:7
250
+ end_of_record
251
+ TN:
252
+ SF:src/visualize.js
253
+ FN:25,plotBoundingBoxes
254
+ FN:39,(anonymous_1)
255
+ FN:66,overlayMask
256
+ FN:100,plotSegmentationMasks
257
+ FN:113,(anonymous_4)
258
+ FN:122,(anonymous_5)
259
+ FN:145,loadImageToCanvas
260
+ FN:171,saveCanvas
261
+ FNF:8
262
+ FNH:0
263
+ FNDA:0,plotBoundingBoxes
264
+ FNDA:0,(anonymous_1)
265
+ FNDA:0,overlayMask
266
+ FNDA:0,plotSegmentationMasks
267
+ FNDA:0,(anonymous_4)
268
+ FNDA:0,(anonymous_5)
269
+ FNDA:0,loadImageToCanvas
270
+ FNDA:0,saveCanvas
271
+ DA:5,2
272
+ DA:6,2
273
+ DA:7,2
274
+ DA:10,2
275
+ DA:30,0
276
+ DA:32,0
277
+ DA:33,0
278
+ DA:34,0
279
+ DA:36,0
280
+ DA:37,0
281
+ DA:39,0
282
+ DA:40,0
283
+ DA:41,0
284
+ DA:44,0
285
+ DA:45,0
286
+ DA:48,0
287
+ DA:49,0
288
+ DA:50,0
289
+ DA:54,0
290
+ DA:67,0
291
+ DA:68,0
292
+ DA:69,0
293
+ DA:72,0
294
+ DA:73,0
295
+ DA:74,0
296
+ DA:75,0
297
+ DA:78,0
298
+ DA:79,0
299
+ DA:80,0
300
+ DA:81,0
301
+ DA:82,0
302
+ DA:84,0
303
+ DA:85,0
304
+ DA:86,0
305
+ DA:90,0
306
+ DA:106,0
307
+ DA:108,0
308
+ DA:109,0
309
+ DA:110,0
310
+ DA:113,0
311
+ DA:114,0
312
+ DA:115,0
313
+ DA:119,0
314
+ DA:120,0
315
+ DA:122,0
316
+ DA:123,0
317
+ DA:126,0
318
+ DA:127,0
319
+ DA:130,0
320
+ DA:131,0
321
+ DA:132,0
322
+ DA:136,0
323
+ DA:146,0
324
+ DA:149,0
325
+ DA:150,0
326
+ DA:152,0
327
+ DA:153,0
328
+ DA:154,0
329
+ DA:155,0
330
+ DA:159,0
331
+ DA:160,0
332
+ DA:161,0
333
+ DA:163,0
334
+ DA:172,0
335
+ DA:173,0
336
+ DA:176,2
337
+ LF:66
338
+ LH:5
339
+ BRDA:25,0,0,0
340
+ BRDA:27,1,0,0
341
+ BRDA:28,2,0,0
342
+ BRDA:29,3,0,0
343
+ BRDA:48,4,0,0
344
+ BRDA:48,4,1,0
345
+ BRDA:48,5,0,0
346
+ BRDA:48,5,1,0
347
+ BRDA:80,6,0,0
348
+ BRDA:80,6,1,0
349
+ BRDA:100,7,0,0
350
+ BRDA:102,8,0,0
351
+ BRDA:103,9,0,0
352
+ BRDA:104,10,0,0
353
+ BRDA:105,11,0,0
354
+ BRDA:130,12,0,0
355
+ BRDA:130,12,1,0
356
+ BRDA:130,13,0,0
357
+ BRDA:130,13,1,0
358
+ BRDA:145,14,0,0
359
+ BRDA:152,15,0,0
360
+ BRDA:152,15,1,0
361
+ BRDA:152,16,0,0
362
+ BRDA:152,16,1,0
363
+ BRF:24
364
+ BRH:0
365
+ end_of_record
package/jest.config.js ADDED
@@ -0,0 +1,15 @@
1
+ module.exports = {
2
+ testEnvironment: 'node',
3
+ testMatch: ['**/test/**/*.test.js'],
4
+ coverageDirectory: 'coverage',
5
+ collectCoverageFrom: [
6
+ 'src/**/*.js',
7
+ '!src/index.d.ts',
8
+ '!src/**/*.test.js'
9
+ ],
10
+ coveragePathIgnorePatterns: [
11
+ '/node_modules/'
12
+ ],
13
+ verbose: true,
14
+ testTimeout: 10000
15
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vsegments",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
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",
@@ -8,7 +8,10 @@
8
8
  "vsegments": "./bin/cli.js"
9
9
  },
10
10
  "scripts": {
11
- "test": "echo \"Error: no test specified\" && exit 1",
11
+ "test": "jest",
12
+ "test:watch": "jest --watch",
13
+ "test:coverage": "jest --coverage",
14
+ "pre-deploy": "node scripts/pre-deploy.js",
12
15
  "lint": "eslint src/**/*.js",
13
16
  "format": "prettier --write \"src/**/*.js\""
14
17
  },
@@ -42,7 +45,7 @@
42
45
  "commander": "^12.0.0"
43
46
  },
44
47
  "devDependencies": {
45
- "eslint": "^8.57.0",
46
- "prettier": "^3.2.5"
48
+ "@types/jest": "^30.0.0",
49
+ "jest": "^30.2.0"
47
50
  }
48
51
  }
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Pre-deployment verification script
5
+ * Run this before publishing to npm to ensure everything is ready
6
+ */
7
+
8
+ const { execSync } = require('child_process');
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ console.log('🔍 Running pre-deployment checks...\n');
13
+
14
+ let hasErrors = false;
15
+
16
+ // Check 1: Run tests
17
+ console.log('1️⃣ Running tests...');
18
+ try {
19
+ execSync('npm test', { stdio: 'inherit' });
20
+ console.log('✅ All tests passed\n');
21
+ } catch (error) {
22
+ console.error('❌ Tests failed\n');
23
+ hasErrors = true;
24
+ }
25
+
26
+ // Check 2: Check for required files
27
+ console.log('2️⃣ Checking required files...');
28
+ const requiredFiles = [
29
+ 'package.json',
30
+ 'README.md',
31
+ 'LICENSE',
32
+ 'src/index.js',
33
+ 'src/core.js',
34
+ 'src/models.js',
35
+ 'src/utils.js',
36
+ 'bin/cli.js'
37
+ ];
38
+
39
+ let allFilesExist = true;
40
+ for (const file of requiredFiles) {
41
+ if (!fs.existsSync(path.join(__dirname, '..', file))) {
42
+ console.error(`❌ Missing required file: ${file}`);
43
+ allFilesExist = false;
44
+ hasErrors = true;
45
+ }
46
+ }
47
+ if (allFilesExist) {
48
+ console.log('✅ All required files present\n');
49
+ }
50
+
51
+ // Check 3: Verify package.json
52
+ console.log('3️⃣ Verifying package.json...');
53
+ const pkg = require('../package.json');
54
+ const requiredFields = ['name', 'version', 'description', 'main', 'author', 'license'];
55
+ let allFieldsPresent = true;
56
+
57
+ for (const field of requiredFields) {
58
+ if (!pkg[field]) {
59
+ console.error(`❌ Missing required field in package.json: ${field}`);
60
+ allFieldsPresent = false;
61
+ hasErrors = true;
62
+ }
63
+ }
64
+ if (allFieldsPresent) {
65
+ console.log('✅ package.json is valid\n');
66
+ }
67
+
68
+ // Check 4: Verify dependencies
69
+ console.log('4️⃣ Checking dependencies...');
70
+ const requiredDeps = ['@google/generative-ai', 'canvas', 'commander'];
71
+ let allDepsPresent = true;
72
+
73
+ for (const dep of requiredDeps) {
74
+ if (!pkg.dependencies || !pkg.dependencies[dep]) {
75
+ console.error(`❌ Missing required dependency: ${dep}`);
76
+ allDepsPresent = false;
77
+ hasErrors = true;
78
+ }
79
+ }
80
+ if (allDepsPresent) {
81
+ console.log('✅ All dependencies present\n');
82
+ }
83
+
84
+ // Check 5: Test coverage
85
+ console.log('5️⃣ Running test coverage...');
86
+ try {
87
+ execSync('npm run test:coverage -- --silent', { stdio: 'pipe' });
88
+ console.log('✅ Coverage report generated\n');
89
+ } catch (error) {
90
+ console.error('❌ Coverage check failed\n');
91
+ hasErrors = true;
92
+ }
93
+
94
+ // Final result
95
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
96
+ if (hasErrors) {
97
+ console.log('❌ Pre-deployment checks failed!');
98
+ console.log('Please fix the issues above before deploying.\n');
99
+ process.exit(1);
100
+ } else {
101
+ console.log('✅ All pre-deployment checks passed!');
102
+ console.log('Your package is ready to deploy.\n');
103
+ console.log('To publish to npm, run: npm publish\n');
104
+ process.exit(0);
105
+ }