{"_id":"@aleezahussain/form-validation-sdk","name":"@aleezahussain/form-validation-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aleezahussain/form-validation-sdk","version":"1.0.0","description":"A simple and lightweight form validation SDK for JavaScript and TypeScript applications","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"echo \"Tests coming soon\" && exit 0","dev":"tsc --watch"},"keywords":["form","validation","typescript","javascript","sdk","form-validation","input-validation","client-side-validation"],"author":{"name":"Aleeza Hussain","email":"your-email@example.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Bitsframe/form-sdk.git"},"bugs":{"url":"https://github.com/Bitsframe/form-sdk/issues"},"homepage":"https://github.com/Bitsframe/form-sdk#readme","devDependencies":{"typescript":"^5.0.0","@types/node":"^18.0.0"},"engines":{"node":">=14.0.0"},"_id":"@aleezahussain/form-validation-sdk@1.0.0","gitHead":"d7ca570b94a1641efa6fc698ca38ebf123820c45","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-U30W5pHhvz/bmRtLuUEEdnj7pGU1e4p+w8gjBQ4ze6tDbFNj3sr7o+CIwNT5vcda4ZUS2Y9bBlSr4sLdkXBdLg==","shasum":"c301ebe732d2b0bbf8697f9d26990d628e178b33","tarball":"https://registry.npmjs.org/@aleezahussain/form-validation-sdk/-/form-validation-sdk-1.0.0.tgz","fileCount":6,"unpackedSize":13665,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCPDDKqLts94gxWPtadqQiKcGQ3xtk+tkIP8WZdsq88YwIhANG14YmO+2c3dnS//1yjYv4w0KvtOPWOqeV3KBCqmsD5"}]},"_npmUser":{"name":"aleezahussain","email":"aleezahussain237@gmail.com"},"directories":{},"maintainers":[{"name":"aleezahussain","email":"aleezahussain237@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/form-validation-sdk_1.0.0_1759266405896_0.6110700452691893"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-30T21:06:45.769Z","1.0.0":"2025-09-30T21:06:46.085Z","modified":"2025-09-30T21:06:46.399Z"},"maintainers":[{"name":"aleezahussain","email":"aleezahussain237@gmail.com"}],"description":"A simple and lightweight form validation SDK for JavaScript and TypeScript applications","homepage":"https://github.com/Bitsframe/form-sdk#readme","keywords":["form","validation","typescript","javascript","sdk","form-validation","input-validation","client-side-validation"],"repository":{"type":"git","url":"git+https://github.com/Bitsframe/form-sdk.git"},"author":{"name":"Aleeza Hussain","email":"your-email@example.com"},"bugs":{"url":"https://github.com/Bitsframe/form-sdk/issues"},"license":"MIT","readme":"# Form Validation SDK\r\n\r\nA simple and lightweight form validation SDK for JavaScript and TypeScript applications.\r\n\r\n[![npm version](https://badge.fury.io/js/@aleezahussain%2Fform-validation-sdk.svg)](https://badge.fury.io/js/@aleezahussain%2Fform-validation-sdk)\r\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install @aleezahussain/form-validation-sdk\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n### JavaScript\r\n\r\n```javascript\r\nconst { FormSDK } = require('@aleezahussain/form-validation-sdk');\r\n\r\n// Create form data\r\nconst formData = {\r\n  name: 'John Doe',\r\n  email: 'john@example.com',\r\n  phone: '123-456-7890'\r\n};\r\n\r\n// Create SDK instance\r\nconst sdk = new FormSDK(formData);\r\n\r\n// Validate the form\r\nconst result = sdk.validate();\r\n\r\nif (Array.isArray(result)) {\r\n  console.log('Validation errors:', result);\r\n  // Output: [\"name is required\", \"email is required\"]\r\n} else {\r\n  console.log('Success:', result);\r\n  // Output: \"Form is valid!\"\r\n}\r\n```\r\n\r\n### TypeScript\r\n\r\n```typescript\r\nimport { FormSDK, Fields, ValidationResult } from '@aleezahussain/form-validation-sdk';\r\n\r\n// Define your form data with types\r\nconst formData: Fields = {\r\n  name: 'John Doe',\r\n  email: 'john@example.com',\r\n  phone: ''  // This will trigger validation error\r\n};\r\n\r\n// Create SDK instance\r\nconst sdk = new FormSDK(formData);\r\n\r\n// Validate with typed result\r\nconst result: ValidationResult = sdk.validate();\r\n\r\nif (Array.isArray(result)) {\r\n  console.log('Validation errors:', result);\r\n  // Output: [\"phone is required\"]\r\n} else {\r\n  console.log('Success:', result);\r\n}\r\n```\r\n\r\n## 📚 API Reference\r\n\r\n### `FormSDK`\r\n\r\nThe main class for form validation.\r\n\r\n#### Constructor\r\n\r\n```typescript\r\nnew FormSDK(fields: Fields)\r\n```\r\n\r\n- `fields`: Object containing form field data where keys are field names and values are strings or undefined.\r\n\r\n#### Methods\r\n\r\n##### `validate(): ValidationResult`\r\n\r\nValidates all form fields and returns either an array of error messages or a success message.\r\n\r\n**Returns:**\r\n- `string[]`: Array of error messages if validation fails\r\n- `string`: Success message if all fields are valid\r\n\r\n**Example:**\r\n```typescript\r\nconst result = sdk.validate();\r\n// Returns: [\"name is required\"] or \"Form is valid!\"\r\n```\r\n\r\n##### `getFields(): Fields`\r\n\r\nReturns a copy of the current form field data.\r\n\r\n**Example:**\r\n```typescript\r\nconst currentFields = sdk.getFields();\r\nconsole.log(currentFields); // { name: 'John', email: 'john@example.com' }\r\n```\r\n\r\n##### `updateFields(newFields: Partial<Fields>): void`\r\n\r\nUpdates form fields with new data.\r\n\r\n**Example:**\r\n```typescript\r\nsdk.updateFields({ name: 'Jane Doe', age: '25' });\r\n```\r\n\r\n##### `isFieldValid(fieldName: string): boolean`\r\n\r\nChecks if a specific field is valid (not empty).\r\n\r\n**Example:**\r\n```typescript\r\nconst isNameValid = sdk.isFieldValid('name');\r\nconsole.log(isNameValid); // true or false\r\n```\r\n\r\n### Types\r\n\r\n#### `Fields`\r\n\r\n```typescript\r\ninterface Fields {\r\n  [key: string]: string | undefined;\r\n}\r\n```\r\n\r\n#### `ValidationResult`\r\n\r\n```typescript\r\ntype ValidationResult = string[] | string;\r\n```\r\n\r\n## 🌟 Examples\r\n\r\n### Basic Web Form\r\n\r\n```html\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <title>Form Validation Example</title>\r\n</head>\r\n<body>\r\n    <form id=\"myForm\">\r\n        <input type=\"text\" name=\"name\" placeholder=\"Name\" />\r\n        <input type=\"email\" name=\"email\" placeholder=\"Email\" />\r\n        <input type=\"tel\" name=\"phone\" placeholder=\"Phone\" />\r\n        <button type=\"submit\">Submit</button>\r\n    </form>\r\n\r\n    <script src=\"https://unpkg.com/@aleezahussain/form-validation-sdk/dist/index.js\"></script>\r\n    <script>\r\n        document.getElementById('myForm').addEventListener('submit', (e) => {\r\n            e.preventDefault();\r\n            \r\n            const formData = new FormData(e.target);\r\n            const fields = Object.fromEntries(formData.entries());\r\n            \r\n            const sdk = new FormSDK(fields);\r\n            const result = sdk.validate();\r\n            \r\n            if (Array.isArray(result)) {\r\n                alert('Errors: ' + result.join(', '));\r\n            } else {\r\n                alert('Success: ' + result);\r\n            }\r\n        });\r\n    </script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### Express.js Server\r\n\r\n```javascript\r\nconst express = require('express');\r\nconst { FormSDK } = require('@aleezahussain/form-validation-sdk');\r\n\r\nconst app = express();\r\napp.use(express.json());\r\n\r\napp.post('/submit-form', (req, res) => {\r\n    const formSDK = new FormSDK(req.body);\r\n    const result = formSDK.validate();\r\n    \r\n    if (Array.isArray(result)) {\r\n        return res.status(400).json({ errors: result });\r\n    }\r\n    \r\n    res.json({ message: result });\r\n});\r\n\r\napp.listen(3000, () => {\r\n    console.log('Server running on port 3000');\r\n});\r\n```\r\n\r\n### React Component\r\n\r\n```tsx\r\nimport React, { useState } from 'react';\r\nimport { FormSDK, Fields } from '@aleezahussain/form-validation-sdk';\r\n\r\nconst MyForm: React.FC = () => {\r\n  const [fields, setFields] = useState<Fields>({\r\n    name: '',\r\n    email: '',\r\n    phone: ''\r\n  });\r\n  const [errors, setErrors] = useState<string[]>([]);\r\n\r\n  const handleSubmit = (e: React.FormEvent) => {\r\n    e.preventDefault();\r\n    \r\n    const sdk = new FormSDK(fields);\r\n    const result = sdk.validate();\r\n    \r\n    if (Array.isArray(result)) {\r\n      setErrors(result);\r\n    } else {\r\n      setErrors([]);\r\n      alert('Form submitted successfully!');\r\n    }\r\n  };\r\n\r\n  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n    setFields({\r\n      ...fields,\r\n      [e.target.name]: e.target.value\r\n    });\r\n  };\r\n\r\n  return (\r\n    <form onSubmit={handleSubmit}>\r\n      <input\r\n        name=\"name\"\r\n        value={fields.name || ''}\r\n        onChange={handleChange}\r\n        placeholder=\"Name\"\r\n      />\r\n      <input\r\n        name=\"email\"\r\n        value={fields.email || ''}\r\n        onChange={handleChange}\r\n        placeholder=\"Email\"\r\n      />\r\n      <input\r\n        name=\"phone\"\r\n        value={fields.phone || ''}\r\n        onChange={handleChange}\r\n        placeholder=\"Phone\"\r\n      />\r\n      \r\n      {errors.length > 0 && (\r\n        <div>\r\n          {errors.map((error, index) => (\r\n            <p key={index} style={{ color: 'red' }}>{error}</p>\r\n          ))}\r\n        </div>\r\n      )}\r\n      \r\n      <button type=\"submit\">Submit</button>\r\n    </form>\r\n  );\r\n};\r\n\r\nexport default MyForm;\r\n```\r\n\r\n## 🔧 Development\r\n\r\n### Building from Source\r\n\r\n```bash\r\n# Clone the repository\r\ngit clone https://github.com/Bitsframe/form-sdk.git\r\ncd form-sdk\r\n\r\n# Install dependencies\r\nnpm install\r\n\r\n# Build the package\r\nnpm run build\r\n\r\n# Run in development mode\r\nnpm run dev\r\n```\r\n\r\n### Testing\r\n\r\n```bash\r\nnpm test\r\n```\r\n\r\n## 📝 License\r\n\r\nMIT © [Aleeza Hussain](https://github.com/Bitsframe)\r\n\r\n## 🤝 Contributing\r\n\r\nContributions, issues, and feature requests are welcome!\r\n\r\n1. Fork the project\r\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\r\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\r\n4. Push to the branch (`git push origin feature/AmazingFeature`)\r\n5. Open a Pull Request\r\n\r\n## 📞 Support\r\n\r\nIf you have any questions or need help, please [open an issue](https://github.com/Bitsframe/form-sdk/issues) on GitHub.\r\n\r\n---\r\n\r\n**Happy coding! 🚀**","readmeFilename":"README.md","_rev":"1-ee9b7e1a43b5688e86a93e74d65a7ccf"}