Back to skills
SKILL.md
1006 Validation Utilities Consolidation 4b1bc2e6
ASecurity**Version:** 0.234.216 **Implemented in:** 0.234.216 **Type:** Code Quality Improvement - Refactoring
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
100/100npx -y skills add tools-only/X-Skills --skill 1006-validation_utilities_consolidation_4b1bc2e6 --agent claude-codeAre you the author of 1006 Validation Utilities Consolidation 4b1bc2e6?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-1006-validation-utilities-consolidation-4b1bc2e6)# JavaScript Validation Utilities Consolidation
**Version:** 0.234.216
**Implemented in:** 0.234.216
**Type:** Code Quality Improvement - Refactoring
## Problem
The codebase contained **duplicate validation functions** across multiple files:
### Duplicated Functions
- `validateGuid()` - Duplicated in 4 locations
- `validateEmail()` - Duplicated in 2 locations
### Affected Files (Before)
1. `control_center.html` - Inline JavaScript with both functions
2. `workspace-manager.js` - Both functions
3. `manage_group.js` - validateGuid only
4. `manage_public_workspace.js` - validateGuid only
### Issues with Duplication
- **Maintenance burden**: Changes required updates in multiple places
- **Inconsistency risk**: Implementations could drift over time
- **Code bloat**: Unnecessary repetition of identical logic
- **Testing complexity**: Same logic tested in multiple places
## Solution
Created a centralized validation utilities module at:
```
application/single_app/static/js/validation-utils.js
```
### ValidationUtils Module
```javascript
const ValidationUtils = {
validateGuid: function(guid) {
const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
return guidRegex.test(guid);
},
validateEmail: function(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
};
```
## Implementation Details
### Files Modified
#### 1. Created New Utility File
- **File**: `static/js/validation-utils.js`
- **Purpose**: Centralized validation logic
- **Functions**: `validateGuid`, `validateEmail`
#### 2. Updated Templates to Load Utility
- `control_center.html` - Added `<script src="validation-utils.js">`
- `manage_group.html` - Added `<script src="validation-utils.js">`
- `manage_public_workspace.html` - Added `<script src="validation-utils.js">`
#### 3. Refactored JavaScript Files
All instances now delegate to `ValidationUtils`:
**control_center.html**:
```javascript
validateGuid: function(guid) {
return ValidationUtils.validateGuid(guid);
},
validateEmail: function(email) {
return ValidationUtils.validateEmail(email);
}
```
**workspace-manager.js**:
```javascript
validateGuid: function(guid) {
return ValidationUtils.validateGuid(guid);
},
validateEmail: function(email) {
return ValidationUtils.validateEmail(email);
}
```
**manage_group.js**:
```javascript
function validateGuid(guid) {
return ValidationUtils.validateGuid(guid);
}
```
**manage_public_workspace.js**:
```javascript
function validateGuid(guid) {
return ValidationUtils.validateGuid(guid);
}
```
## Benefits
### Maintainability
- ✅ Single source of truth for validation logic
- ✅ Changes propagate automatically to all usage points
- ✅ Easier to add new validations
### Code Quality
- ✅ Reduced code duplication from 6 implementations to 1
- ✅ Consistent validation behavior across the application
- ✅ Clear, documented validation interface
### Testing
- ✅ Single place to test validation logic
- ✅ Validation changes automatically covered by existing tests
- ✅ Easier to add comprehensive validation test suites
## Usage Guidelines
### For Developers
When adding new validation functions:
1. **Add to ValidationUtils**: Place new validators in `validation-utils.js`
2. **Document**: Add JSDoc comments for parameters and return values
3. **Load script**: Ensure templates load `validation-utils.js` before other scripts
4. **Reference**: Call via `ValidationUtils.yourFunction()`
### Example: Adding New Validation
```javascript
// In validation-utils.js
const ValidationUtils = {
// ... existing functions ...
/**
* Validates if a string is a valid phone number.
* @param {string} phone - The phone number to validate
* @returns {boolean} True if valid, false otherwise
*/
validatePhone: function(phone) {
const phoneRegex = /^\+?[\d\s\-()]+$/;
return phoneRegex.test(phone);
}
};
```
Then use it anywhere:
```javascript
if (ValidationUtils.validatePhone(userInput)) {
// Process valid phone number
}
```
## Script Loading Order
**Critical**: `validation-utils.js` must load **before** any scripts that use it:
```html
<script src="validation-utils.js"></script>
<script src="control-center.js"></script>
<script src="workspace-manager.js"></script>
```
## Backward Compatibility
All existing code continues to work without changes because:
- Local wrapper functions still exist (they delegate to ValidationUtils)
- Function signatures unchanged
- Return values unchanged
- No breaking changes to APIs
## Future Enhancements
Consider adding to ValidationUtils:
- `validateUrl()` - URL validation
- `validatePhone()` - Phone number validation
- `validateDate()` - Date format validation
- `validatePassword()` - Password strength validation
- `sanitizeInput()` - Input sanitization helpers
## Testing
### Manual Testing Checklist
- [ ] Control Center bulk member upload (CSV validation)
- [ ] Control Center single member add (GUID/email validation)
- [ ] Workspace manager member operations
- [ ] Group management member operations
- [ ] Public workspace member operations
### Areas Using Validation
1. **Member Management**: Adding members via CSV or single entry
2. **User Search**: Validating user IDs and emails
3. **Group Operations**: Validating member GUIDs
4. **Workspace Operations**: Validating user identifiers
## Files Changed
### Created
- `application/single_app/static/js/validation-utils.js`
### Modified
- `application/single_app/templates/control_center.html`
- `application/single_app/templates/manage_group.html`
- `application/single_app/templates/manage_public_workspace.html`
- `application/single_app/static/js/workspace-manager.js`
- `application/single_app/static/js/group/manage_group.js`
- `application/single_app/static/js/public/manage_public_workspace.js`
- `application/single_app/config.py` (version bump)
## Metrics
- **Files with duplicated code**: 4
- **Duplicate function instances removed**: 6
- **Lines of code reduced**: ~30 (net reduction after creating utility)
- **Single source of validation logic**: 1 file
- **Templates updated**: 3
- **JavaScript files refactored**: 5
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.