ingeni-validation 1.1.13 → 1.1.15

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.
@@ -429,7 +429,7 @@ async function isValidStopDetails(stop_details){
429
429
 
430
430
  //allow this format only ("20.2849144,85.8078186")
431
431
 
432
- function isValidCoordinates(location) {
432
+ async function isValidCoordinates(location) {
433
433
 
434
434
  if (location === null || location === undefined) return false;
435
435
 
@@ -460,5 +460,57 @@ function isValidCoordinates(location) {
460
460
 
461
461
 
462
462
 
463
+ //Stop time edit json format - [{"stop_id":"2","stop_name":"Stop_D","arrival_time":"08:15","departure_time":"08:16"}]
463
464
 
464
- export {validateMandate,validateOptional,isValidMobile,isValidEmail,isValidOtp,isValidPin,isValidNumber,isValidBoolean,checkBooleanParams,isValidDate,isValidTime,isValidPrice,isValidStopDetails,isValidCoordinates};
465
+ async function isValidStopTime(data) {
466
+
467
+ if (!Array.isArray(data) || data.length === 0) return false;
468
+
469
+ const seenIds = new Set();
470
+
471
+ const timeRegex = /^([01]\d|2[0-3]):([0-5]\d)$/;
472
+
473
+ const toMinutes = (t) => {
474
+ const parts = t.split(":");
475
+ if (parts.length !== 2) return NaN;
476
+ const [h, m] = parts.map(Number);
477
+ return h * 60 + m;
478
+ };
479
+
480
+ for (let item of data) {
481
+
482
+ if (typeof item !== "object" || item === null || Array.isArray(item)) return false;
483
+
484
+ let { stop_id, stop_name, arrival_time, departure_time } = item;
485
+
486
+ // stop_id validation
487
+ if (stop_id === undefined || stop_id === null) return false;
488
+ if (typeof stop_id === "boolean") return false;
489
+
490
+ const idStr = String(stop_id).trim();
491
+
492
+ if (!/^\d+$/.test(idStr)) return false;
493
+
494
+ if (seenIds.has(idStr)) return false;
495
+ seenIds.add(idStr);
496
+
497
+ // stop_name
498
+ if (typeof stop_name !== "string" || stop_name.trim().length === 0) return false;
499
+
500
+ // time fields
501
+ if (arrival_time === undefined || departure_time === undefined) return false;
502
+
503
+ const arrTime = String(arrival_time).trim();
504
+ const depTime = String(departure_time).trim();
505
+
506
+ if (!timeRegex.test(arrTime)) return false;
507
+ if (!timeRegex.test(depTime)) return false;
508
+
509
+ if (toMinutes(arrTime) > toMinutes(depTime)) return false;
510
+ }
511
+
512
+ return true;
513
+ }
514
+
515
+
516
+ export {validateMandate,validateOptional,isValidMobile,isValidEmail,isValidOtp,isValidPin,isValidNumber,isValidBoolean,checkBooleanParams,isValidDate,isValidTime,isValidPrice,isValidStopDetails,isValidStopTime,isValidCoordinates};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingeni-validation",
3
- "version": "1.1.13",
3
+ "version": "1.1.15",
4
4
  "description": "Ingeni Validation",
5
5
  "license": "ISC",
6
6
  "author": "",