UNPKG

swiss-ssn

Version:

Small utility for validating and generating Swiss national identification number.

157 lines (117 loc) 3.46 kB
Swiss National Identification Number (AHV/AVS) or (SSN) validation and generation =================================== [![npm version](https://badge.fury.io/js/swiss-ssn.svg)](https://badge.fury.io/js/swiss-ssn) ![Downloads](https://img.shields.io/npm/dm/swiss-ssn.svg) A lightweight JavaScript library for validating and generating Swiss National Identification Numbers with: - Zero dependencies - Modern ES Module support - Full test coverage - TypeScript-friendly JSDoc annotations - Browser-ready UMD bundle ## Installation ```bash # NPM npm install swiss-ssn # Yarn yarn add swiss-ssn # pnpm pnpm add swiss-ssn ``` ## Usage ### ES Modules (Node.js) ```js import SwissSSN from 'swiss-ssn'; // Validate a SSN const isValid = SwissSSN.validateSSN('756.9217.0769.85'); console.log(isValid); // true // Generate a random valid SSN const newSSN = SwissSSN.generateSSN(); console.log(newSSN); // e.g., '756.1234.5678.90' ``` ### Browser ```html <!-- Use the minified UMD bundle --> <script src="https://unpkg.com/swiss-ssn/dist/swiss-ssn.min.js"></script> <script> // The SwissSSN class is available globally const isValid = SwissSSN.validateSSN('756.9217.0769.85'); console.log(isValid); // true // Generate a random SSN const newSSN = SwissSSN.generateSSN(); console.log(newSSN); </script> ``` ### Browser (ES Modules) ```html <!-- Use as ES Module in modern browsers --> <script type="module"> import SwissSSN from 'https://unpkg.com/swiss-ssn/dist/swiss-ssn.js'; const isValid = SwissSSN.validateSSN('756.9217.0769.85'); console.log(isValid); </script> ``` ## API Reference ### `validateSSN(ssn: string): boolean` Validates a Swiss SSN number. ```js // Valid SSN examples SwissSSN.validateSSN('756.9217.0769.85'); // true SwissSSN.validateSSN('7569217076985'); // true (without dots) // Invalid SSN examples SwissSSN.validateSSN('756.9217.0769.84'); // false (wrong check digit) SwissSSN.validateSSN('756.9217.076'); // false (incomplete) SwissSSN.validateSSN(''); // false ``` ### `generateSSN(): string` Generates a random valid Swiss SSN. ```js const ssn = SwissSSN.generateSSN(); // Returns a formatted SSN like '756.9217.0769.85' ``` ## Development ```bash # Install dependencies npm install # Run tests npm test # Run tests in watch mode npm run test:watch # Build distribution files npm run dist # Lint code npm run lint ``` Test Online --------- [check from my website](http://teaddict.net/swiss-ssn.html) ## Changelog ### 1.0.6 - Fixed npm package configuration to include dist files - Added explicit files field in package.json - Updated build process to ensure proper file inclusion - Fixed unpkg CDN availability ### 1.0.5 - Fixed version number in package.json ### 1.0.3 - Fixed jest configuration ### 1.0.3 - Fixed browser compatibility issues with UMD bundle - Added proper global exports for browser environments - Improved documentation for browser usage - Added ES Module example for modern browsers - Updated build configuration for better browser support ### 1.0.2 - Modernized codebase with ES Modules - Added Jest for testing - Improved test coverage - Added ESLint with modern config - Updated all dependencies - Added TypeScript-friendly JSDoc annotations ### 1.0.1 - Dependencies upgraded for security fixes ### 1.0.0 - Initial release ## License [GPL License](LICENSE) ## Contributing Contributions are welcome! Please feel free to submit a Pull Request.