{"_id":"@desource/phone-mask","_rev":"14-64790ed18af292a5fd8e1901effb1418","name":"@desource/phone-mask","dist-tags":{"internal-beta":"1.2.1-beta.2","latest":"1.4.0"},"versions":{"0.2.0":{"name":"@desource/phone-mask","version":"0.2.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@0.2.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"9966c2c88af9f123bc1e62553480b8dc03db3573","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-0.2.0.tgz","fileCount":21,"integrity":"sha512-4ar2/m+tXvVxElxEME/usobj12PicPE3YaH8M3NA3NVT/LL7p4O5VOjYIpyrNfu+rodE+ZSPARLvPeQTmj5/PA==","signatures":[{"sig":"MEUCIQCnC6S8lR8BEEC/shC2AFoU2nMoJifbpi3FD8Tz9h67rQIgFY2kw+cI0qJqqlY2dg9JkhYiNDgrSxHo+p2T8pglVOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62129},"main":"dist/phone-mask.cjs.js","_from":"file:desource-phone-mask-0.2.0.tgz","types":"dist/types/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs.js"}},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"vite build","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"_resolved":"/private/var/folders/g3/x7p07yx57kd2nrtdsjq0zwz40000gn/T/057a4559eedddc29b6925f25ae15767b/desource-phone-mask-0.2.0.tgz","_integrity":"sha512-4ar2/m+tXvVxElxEME/usobj12PicPE3YaH8M3NA3NVT/LL7p4O5VOjYIpyrNfu+rodE+ZSPARLvPeQTmj5/PA==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.9.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^0.4.4","google-libphonenumber":"^3.2.43"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_0.2.0_1762215627978_0.9884802577209613","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@desource/phone-mask","version":"0.2.1","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@0.2.1","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"e337dfba106be96923c107d6be614a8eee4f438f","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-0.2.1.tgz","fileCount":21,"integrity":"sha512-fhrzlEY0zyL/JKxXP1Clq0STI8t7rmc83aexm0CXbaBDHxaRrt6xguS6j/m/SPHZGpJ6QKaLGHMYPzi6TaWySA==","signatures":[{"sig":"MEQCIFKzDzFlElsK5vv8apixOpiX0nCoKhIS8jMHIKXgz9/0AiBX3f5uHoM5jFihTzKblnDWllD27kEUZpyfNp+MNKO26Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62246},"main":"dist/phone-mask.cjs.js","_from":"file:desource-phone-mask-0.2.1.tgz","types":"dist/types/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs.js"}},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"vite build","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"_resolved":"/tmp/b5cbbaa4d280972ccc98f1cadccf3abf/desource-phone-mask-0.2.1.tgz","_integrity":"sha512-fhrzlEY0zyL/JKxXP1Clq0STI8t7rmc83aexm0CXbaBDHxaRrt6xguS6j/m/SPHZGpJ6QKaLGHMYPzi6TaWySA==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.8.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^0.4.4","google-libphonenumber":"^3.2.43"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_0.2.1_1762390374716_0.9313002964146735","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@desource/phone-mask","version":"0.2.2","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@0.2.2","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"a210102e4437858e4933d400c6c08dc848f0e0f5","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-0.2.2.tgz","fileCount":21,"integrity":"sha512-kOfc+PKrrBkq7nGMzsdwMcsHzTYg5orJkobLuv0GXxUngjb/7dCyYtsE2i0y+KZ1fB/Bj953hD+OUsnXcSamjA==","signatures":[{"sig":"MEUCIFwr+o4jtV5UGEq1GybUWiCaT11nnA0E8YmzuD+6fWbdAiEAkQ5pE61pN4jPP5hnuDuXogJDWyMLYus1ItBajk/6gX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62271},"main":"dist/phone-mask.cjs.js","_from":"file:desource-phone-mask-0.2.2.tgz","types":"dist/types/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs.js"}},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"vite build","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"_resolved":"/tmp/915fc74a9b45218fd63a4f29a05d85f5/desource-phone-mask-0.2.2.tgz","_integrity":"sha512-kOfc+PKrrBkq7nGMzsdwMcsHzTYg5orJkobLuv0GXxUngjb/7dCyYtsE2i0y+KZ1fB/Bj953hD+OUsnXcSamjA==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.8.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^0.4.4","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_0.2.2_1769192007483_0.1284254638361355","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@desource/phone-mask","version":"0.2.3","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@0.2.3","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"35086898adcd698daa20303fd638893c74d29b1e","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-0.2.3.tgz","fileCount":21,"integrity":"sha512-ZchYL6hAFyCCequy7Jb9PFtkcd7sIDvF5oU5l9c8jbQ/6RlBe+Bm8LREzfzvofDQnxQzYosIBKC5m6HKgy20FA==","signatures":[{"sig":"MEUCID3+lA2CMmEbjJ6YHIZNG9d9o2DbIfP5t5N9V6LoQ2eeAiEA1Sz2fRDf0TLu6w7KID2wI1COsMOu/M5vXec2NHSZqJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62340},"main":"dist/phone-mask.cjs.js","_from":"file:desource-phone-mask-0.2.3.tgz","types":"dist/types/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs.js"}},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"vite build","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"_resolved":"/tmp/998596a9ef365379badd12ef995fa7d7/desource-phone-mask-0.2.3.tgz","_integrity":"sha512-ZchYL6hAFyCCequy7Jb9PFtkcd7sIDvF5oU5l9c8jbQ/6RlBe+Bm8LREzfzvofDQnxQzYosIBKC5m6HKgy20FA==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.8.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^0.4.4","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_0.2.3_1770772163623_0.8328936884031286","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@desource/phone-mask","version":"0.3.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@0.3.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"683ebe8429a414b44cfcff57e53120b3e0d2887f","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-0.3.0.tgz","fileCount":33,"integrity":"sha512-TSFzQWA9cTOhZzlVWbQUrcgA/w3uvT5wa48J/OKPuiXUoCd04o/f+GIsgsTP0zR6ZMIn6aLIi7es0HApphjpBg==","signatures":[{"sig":"MEUCIFQvv4jCKyRz4KXHQEvSeaZwuPEJz0te3MUiMXFVIHWoAiEA8tU97EZenoPQJBjQCxCpQfD9OzQ2VY9EccXSePBoG78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69918},"main":"dist/phone-mask.cjs.js","_from":"file:desource-phone-mask-0.3.0.tgz","types":"dist/types/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs.js"}},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"vite build","clean":"rimraf dist","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"_resolved":"/tmp/c5878de59a76bab0c7d782a31b2fb3b0/desource-phone-mask-0.3.0.tgz","_integrity":"sha512-TSFzQWA9cTOhZzlVWbQUrcgA/w3uvT5wa48J/OKPuiXUoCd04o/f+GIsgsTP0zR6ZMIn6aLIi7es0HApphjpBg==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.8.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^0.4.4","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_0.3.0_1771186368636_0.00887858667742325","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@desource/phone-mask","version":"1.0.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.0.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"d2f78ae056650291eebb416736495d46acbd7b9b","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.0.0.tgz","fileCount":39,"integrity":"sha512-pxb8ZDS+s+GUYW14tnqAu7J6x+MU+6/04Dyi2EpVVCyoTkp1u2FS5JKF+3dMtCjUJUSjnBu8s6pySsHU6Mkpmg==","signatures":[{"sig":"MEUCIDH044CIw9f0Y7Zz90wmNhmo1TyNgToGoWtjtBVswaqDAiEAsHY8c593gwxn9EBQNVwlGHTbuNoB+dk915KGAsrY36g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89986},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.0.0.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/d428ec49e21a308a22fce9c51fff1711/desource-phone-mask-1.0.0.tgz","_integrity":"sha512-pxb8ZDS+s+GUYW14tnqAu7J6x+MU+6/04Dyi2EpVVCyoTkp1u2FS5JKF+3dMtCjUJUSjnBu8s6pySsHU6Mkpmg==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.0","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^1.0.0","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.0.0_1772815349192_0.026218658846583587","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@desource/phone-mask","version":"1.1.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.1.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"3478f918733ecb94f13728e88344adab704ef75d","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.1.0.tgz","fileCount":63,"integrity":"sha512-zXiu6NCc41mfwXdh//h8fylj91qTaHfwlqcOsmJVtWBh2161OiycFywwUwojjUDZsg/zmCydqlspC6cDevx0iw==","signatures":[{"sig":"MEYCIQDchjFkik99V2fVTXX/xO5gEeP8x00Orqxi1wXng6kYhAIhAOSN2YNXdVsZbT5E0SorAv7etbfXXrGyUtKNRb9RW/rz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110499},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.1.0.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/77d35ec1755beeebff72a8ea4a8d6f88/desource-phone-mask-1.1.0.tgz","_integrity":"sha512-zXiu6NCc41mfwXdh//h8fylj91qTaHfwlqcOsmJVtWBh2161OiycFywwUwojjUDZsg/zmCydqlspC6cDevx0iw==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.0","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^1.0.0","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.1.0_1773596887465_0.7339453552132915","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@desource/phone-mask","version":"1.1.1","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.1.1","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"6eb24743343dabeaf5f6dcee326234a550c8aca7","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.1.1.tgz","fileCount":39,"integrity":"sha512-A+BCRQx53NKKquHZ4sabk7nmmPuBk9mTYjl4gr7/5Lmj2k/bJMd0rpSKMvFN6iNeZE3Xb+JrH0hdUHkxyBLcAQ==","signatures":[{"sig":"MEUCIAO36lfuLgYewId1mkvExC9qtd0VVJKT0i6ftOoCt6bYAiEAl4zaWxUQfhFD3Vk1gZYGq3TH7/FQ3+ClcFIDGUPar/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91309},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.1.1.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"pnpm add -D google-libphonenumber@latest && node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json --emitDeclarationOnly","build:internal":"pnpm build:lib","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/d877ee054bd5c494123b5db64516fb53/desource-phone-mask-1.1.1.tgz","_integrity":"sha512-A+BCRQx53NKKquHZ4sabk7nmmPuBk9mTYjl4gr7/5Lmj2k/bJMd0rpSKMvFN6iNeZE3Xb+JrH0hdUHkxyBLcAQ==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.0","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite-plugin-dts":"^4.5.4","@rollup/plugin-terser":"^1.0.0","google-libphonenumber":"^3.2.44"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.1.1_1773599968564_0.45647017078908947","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@desource/phone-mask","version":"1.1.2","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.1.2","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"04afc2d6f0f6cbb1f4859d43ed16ed9385b961f2","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.1.2.tgz","fileCount":39,"integrity":"sha512-bT7CSlNQUghZkH/IQlDmMBkCTWudmoBjcL7yGNTuzdKlyiW77uOQY3m47+jB7EFNDKIOz5xDivvUqvUsk3AH1A==","signatures":[{"sig":"MEYCIQCiyNGFzZ3ODOcSKolSg0f+wuq6ii8aZyY+rrPliVQ31gIhALd2yxB+mDsYXOnAsHK8iSm92B5pbnzSE/pCjiErFM4H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89172},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.1.2.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json","clean:modules":"rimraf node_modules","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/7451a39059e0d0f8d73108afbe37c628/desource-phone-mask-1.1.2.tgz","_integrity":"sha512-bT7CSlNQUghZkH/IQlDmMBkCTWudmoBjcL7yGNTuzdKlyiW77uOQY3m47+jB7EFNDKIOz5xDivvUqvUsk3AH1A==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.0","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.1.2_1774194533576_0.7079031270929852","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@desource/phone-mask","version":"1.2.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.2.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"48e56d9452edca6ba44e0c95042440a1b1889b13","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.2.0.tgz","fileCount":39,"integrity":"sha512-RaLGxDs8VDQXsiJ5CJtc5tEuj6/Q70x9dSE0zQcj7UxBq+nD6d1Iib2ZxIN8MAayrDmI2xX/wfQAx0Fc93/gow==","signatures":[{"sig":"MEUCIQDh84BNnRNT15lLhuS/LwVs+omGXH7fwHbBGu7gkFei4gIgWaVHay1PBHny3XR5Ze/XhblWofo1VlZ+Sadh7OEosXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72007},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.2.0.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json","clean:modules":"rimraf node_modules","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/1e9a8504840dc92c934470a9a5091b14/desource-phone-mask-1.2.0.tgz","_integrity":"sha512-RaLGxDs8VDQXsiJ5CJtc5tEuj6/Q70x9dSE0zQcj7UxBq+nD6d1Iib2ZxIN8MAayrDmI2xX/wfQAx0Fc93/gow==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.1","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.2.0_1774433039529_0.7067372164713035","host":"s3://npm-registry-packages-npm-production"}},"1.2.1-beta.2":{"name":"@desource/phone-mask","version":"1.2.1-beta.2","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.2.1-beta.2","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"9862ff4471c27fe055c06973a65968b25d8eae0d","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.2.1-beta.2.tgz","fileCount":39,"integrity":"sha512-GvdLigplz9EFOHyT42ZANAXQnRpM+NuDBMbIDTOvMea2CblMAkrMjtuYrV0KZr0qGAXN+AEgn1B1aQnL3eCMmQ==","signatures":[{"sig":"MEYCIQDd9KFwMnRmNhsa/GjJSDDfI0jneHTtviCadn4TbI6JfwIhAPpK9Zixc/p5ORKpOpEb2oBf72MOMGe/dqxVMSx/wEuU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69712},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.2.1-beta.2.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json","clean:modules":"rimraf node_modules","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"stefanpopov","email":"stef4n.popov@gmail.com"},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/private/var/folders/g3/x7p07yx57kd2nrtdsjq0zwz40000gn/T/155ce6d962744c1e54612e1cfe3d0761/desource-phone-mask-1.2.1-beta.2.tgz","_integrity":"sha512-GvdLigplz9EFOHyT42ZANAXQnRpM+NuDBMbIDTOvMea2CblMAkrMjtuYrV0KZr0qGAXN+AEgn1B1aQnL3eCMmQ==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"10.9.2","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.2.1-beta.2_1774559774601_0.06678031526701034","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@desource/phone-mask","version":"1.3.0","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.3.0","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"01ea66be132493478d0b0c48837fce2ee7614e96","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.3.0.tgz","fileCount":39,"integrity":"sha512-8J87eMVyTg8RICQfOfwFn3nQonTWwGsy0YN9WUIR3xCw33nWK2a3hibJMwP6962yYto/OB8JFFOeAWwxr3bhAA==","signatures":[{"sig":"MEUCIQDxdi9uQCdwgBetzLroZnhcu7XFqMJ+60uXU7zQv75p4QIgI7kHeTva+rbCJkFMlgDctv7EN6Ru86MECYy+fhfsW9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@desource%2fphone-mask@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74936},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.3.0.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"node scripts/gen.js","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json","clean:modules":"rimraf node_modules","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3890ca0c-7af6-474e-abfe-b18f93b9f32d"}},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/7d954540df16863de24e0ffef6596745/desource-phone-mask-1.3.0.tgz","_integrity":"sha512-8J87eMVyTg8RICQfOfwFn3nQonTWwGsy0YN9WUIR3xCw33nWK2a3hibJMwP6962yYto/OB8JFFOeAWwxr3bhAA==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.11.1","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.3.0_1774905963179_0.4803409588630192","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@desource/phone-mask","version":"1.3.1","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","_id":"@desource/phone-mask@1.3.1","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"dist":{"shasum":"e4078f116c33c3d79d92139c9cb28ec8bf55b804","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.3.1.tgz","fileCount":39,"integrity":"sha512-Bf17mS3gotMNQMVVWEOSkYl3TJdwZ041MvvKgE+i4LF9Pl/Q2i082YmGD5rjL0I9DDx/jCbQqwEPzTRIgUb0Ww==","signatures":[{"sig":"MEUCIQDWjTsZpFriDiVlAsSS1TzM6Ay+JCPiwEF76qSn9BTg7QIgR3vulBT3iAtf4ZRyViTAB+u6GpDl4xbdU8YfiBkZZQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@desource%2fphone-mask@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79053},"main":"dist/phone-mask.cjs","type":"module","_from":"file:desource-phone-mask-1.3.1.tgz","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","module":"dist/esm/index.js","browser":"dist/phone-mask.umd.min.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/phone-mask.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite","gen":"node scripts/gen.mts","build":"pnpm clean && pnpm build:internal","clean":"rimraf dist coverage tsconfig.tsbuildinfo","build:lib":"vite build","test:unit":"vitest run --config vitest.config.ts","typecheck":"tsc -p tsconfig.json --noEmit","build:types":"tsc -p tsconfig.json","clean:modules":"rimraf node_modules","build:internal":"pnpm build:lib && pnpm build:types","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3890ca0c-7af6-474e-abfe-b18f93b9f32d"}},"jsdelivr":"dist/phone-mask.umd.min.js","_resolved":"/tmp/9bcca0546aede03129dab74105691915/desource-phone-mask-1.3.1.tgz","_integrity":"sha512-Bf17mS3gotMNQMVVWEOSkYl3TJdwZ041MvvKgE+i4LF9Pl/Q2i082YmGD5rjL0I9DDx/jCbQqwEPzTRIgUb0Ww==","repository":{"url":"git+https://github.com/DeSource-Labs/phone-mask.git","type":"git","directory":"packages/phone-mask"},"_npmVersion":"11.12.1","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/phone-mask_1.3.1_1777638838790_0.6529698524458663","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@desource/phone-mask","version":"1.4.0","description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/DeSource-Labs/phone-mask.git","directory":"packages/phone-mask"},"bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","private":false,"publishConfig":{"access":"public"},"type":"module","main":"dist/phone-mask.cjs","module":"dist/esm/index.js","types":"dist/types/index.d.ts","unpkg":"dist/phone-mask.umd.min.js","jsdelivr":"dist/phone-mask.umd.min.js","browser":"dist/phone-mask.umd.min.js","sideEffects":false,"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/phone-mask.cjs","default":"./dist/esm/index.js"},"./kit":{"types":"./dist/types/kit.d.ts","import":"./dist/esm/kit.js","require":"./dist/kit.cjs","default":"./dist/esm/kit.js"},"./package.json":"./package.json"},"devDependencies":{"@rollup/plugin-terser":"^1.0.0"},"scripts":{"clean":"rimraf dist coverage tsconfig.tsbuildinfo","clean:modules":"rimraf node_modules","build":"pnpm clean && pnpm build:internal","build:internal":"pnpm build:lib && pnpm build:types","build:lib":"vite build --mode kit && vite build --mode root","build:types":"tsc -p tsconfig.json","dev":"vite","typecheck":"tsc -p tsconfig.json --noEmit","test:unit":"vitest run --config vitest.config.ts","test:unit:coverage":"vitest run --config vitest.config.ts --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage","gen":"node scripts/gen.mts"},"_id":"@desource/phone-mask@1.4.0","_integrity":"sha512-kd0NqccJ6kBCknsShPEhT8ocBJ86N/8kLQwH6xIm2CkSWK+Gzrlq9mgC8dyuA4tk7gGpyOb6XmCKb2Dbl0oxQA==","_resolved":"/tmp/b9f6ab0b84f8221ef5cbd279456c4334/desource-phone-mask-1.4.0.tgz","_from":"file:desource-phone-mask-1.4.0.tgz","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-kd0NqccJ6kBCknsShPEhT8ocBJ86N/8kLQwH6xIm2CkSWK+Gzrlq9mgC8dyuA4tk7gGpyOb6XmCKb2Dbl0oxQA==","shasum":"b1f749262b139c0568d0164afc2f5b9825be3634","tarball":"https://registry.npmjs.org/@desource/phone-mask/-/phone-mask-1.4.0.tgz","fileCount":46,"unpackedSize":90190,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@desource%2fphone-mask@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCsRBN37gZzOVsjn2eHebof71zo9/RcAT6n5MQAkw2howIgRd1jUs7bTNPiKnpH41pu2QhnQMTHR1rVhiC7/ljawpw="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3890ca0c-7af6-474e-abfe-b18f93b9f32d"}},"directories":{},"maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/phone-mask_1.4.0_1778254287527_0.8823019170798645"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-04T00:20:27.874Z","modified":"2026-05-08T15:31:27.968Z","0.2.0":"2025-11-04T00:20:28.173Z","0.2.1":"2025-11-06T00:52:54.960Z","0.2.2":"2026-01-23T18:13:27.621Z","0.2.3":"2026-02-11T01:09:23.781Z","0.3.0":"2026-02-15T20:12:48.788Z","1.0.0":"2026-03-06T16:42:29.359Z","1.1.0":"2026-03-15T17:48:07.607Z","1.1.1":"2026-03-15T18:39:28.697Z","1.1.2":"2026-03-22T15:48:53.716Z","1.2.0":"2026-03-25T10:03:59.681Z","1.2.1-beta.2":"2026-03-26T21:16:14.795Z","1.3.0":"2026-03-30T21:26:03.294Z","1.3.1":"2026-05-01T12:33:59.013Z","1.4.0":"2026-05-08T15:31:27.681Z"},"bugs":{"url":"https://github.com/DeSource-Labs/phone-mask/issues"},"author":{"name":"Stefan Popov","email":"stefan@desource-labs.org"},"license":"MIT","homepage":"https://github.com/DeSource-Labs/phone-mask/tree/main/packages/phone-mask#readme","keywords":["phone","mask","international","libphonenumber","google","phone-number","formatting","validation","country-code","intl","input","typescript","tree-shakeable"],"repository":{"type":"git","url":"git+https://github.com/DeSource-Labs/phone-mask.git","directory":"packages/phone-mask"},"description":"⚡ Ultra-lightweight international phone number formatter & validator with auto-sync to Google libphonenumber. Framework-agnostic core library.","maintainers":[{"name":"stefanpopov","email":"stef4n.popov@gmail.com"}],"readme":"# @desource/phone-mask\n\n> Core TypeScript library for international phone number masking with Google's libphonenumber data\n\n[![npm version](https://img.shields.io/npm/v/@desource/phone-mask?color=blue&logo=npm)](https://www.npmjs.com/package/@desource/phone-mask)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/@desource/phone-mask?label=gzip%20size&color=purple)](https://bundlephobia.com/package/@desource/phone-mask)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/DeSource-Labs/phone-mask/blob/main/LICENSE)\n\nFramework-agnostic phone masking library that stays up-to-date with Google's libphonenumber database.\n\n## ✨ Features\n\n- 🌍 **240+ countries** with accurate masks and dialing codes\n- 🔄 **Auto-synced** from Google's libphonenumber\n- 🪶 **Tiny** — root entry is 6.1 KB minified, 2.9 KB gzipped, 2.3 KB brotli\n- 🌳 **Tree-shakeable** — import only what you need\n- 🔧 **TypeScript** — fully typed\n- 🎯 **Zero dependencies**\n\n## 📦 Installation\n\n```bash\nnpm install @desource/phone-mask\n# or\nyarn add @desource/phone-mask\n# or\npnpm add @desource/phone-mask\n```\n\n## Import Paths\n\nThe root entry contains country metadata and mask data. Formatter, input handling, detection, and utility helpers live in the `kit` subpath.\n\n```ts\nimport { MasksFullMapEn, type CountryKey } from '@desource/phone-mask';\nimport { createPhoneFormatter, formatDigitsWithMap } from '@desource/phone-mask/kit';\n```\n\n## 🚀 Quick Start\n\n### Basic Formatting\n\n```ts\nimport { MasksBaseMap, MasksMap } from '@desource/phone-mask';\nimport { formatDigitsWithMap } from '@desource/phone-mask/kit';\n\n// Get US mask with country code prefix\nconst prefixUsMask = MasksBaseMap.US;\n// [\"+1 ###-###-####\"]\n\n// Format digits\nconst result = formatDigitsWithMap(prefixUsMask[0], '2025551234');\nconsole.log(result.display); // \"+1 202-555-1234\"\nconsole.log(result.map); // [-1, -1, -1, 0, 1, 2, -1, 3, 4, 5, -1, 6, 7, 8, 9]\n\n// Get US mask without country code prefix\nconst usMask = MasksMap.US.mask;\n// [\"###-###-####\"]\n\n// Format digits without country code\nconst resultNoCode = formatDigitsWithMap(usMask[0], '2025551234');\nconsole.log(resultNoCode.display); // \"202-555-1234\"\nconsole.log(resultNoCode.map); // [0, 1, 2, -1, 3, 4, 5, -1, 6, 7, 8, 9]\n```\n\n### Working with Country Data\n\n```ts\nimport { MasksFullMapEn, type MaskFull } from '@desource/phone-mask';\n\n// Access country data\nconst us = MasksFullMapEn.US;\n\nconsole.log(us.name); // \"United States\"\nconsole.log(us.code); // \"+1\"\nconsole.log(us.mask); // [\"###-###-####\"]\nconsole.log(us.flag); // \"🇺🇸\"\n```\n\n### Multiple Mask Variants\n\nSome countries have multiple mask formats:\n\n```ts\nimport { MasksFullMapEn } from '@desource/phone-mask';\n\nconst gb = MasksFullMapEn.GB;\nconsole.log(gb.mask);\n// [\n//   \"### ### ####\",\n//   \"#### ######\",\n//   \"## #### ####\"\n// ]\n```\n\n### Localized Country Names\n\n```ts\nimport { MasksFullMap } from '@desource/phone-mask';\n\n// Get localized names\nconst germanMap = MasksFullMap('de');\nconsole.log(germanMap.US.name); // \"Vereinigte Staaten\"\n\nconst frenchMap = MasksFullMap('fr');\nconsole.log(frenchMap.US.name); // \"États-Unis\"\n```\n\n### Utility Functions\n\n```ts\nimport { countPlaceholders, removeCountryCodePrefix, pickMaskVariant, extractDigits } from '@desource/phone-mask/kit';\n\n// Count placeholder digits\nconst count = countPlaceholders('+1 ###-###-####');\n// 10\n\n// Remove country code prefix\nconst stripped = removeCountryCodePrefix('+1 ###-###-####');\n// \"###-###-####\"\n\n// Pick best mask variant for digit count\nconst variants = ['+44 ### ### ####', '+44 #### ######'];\nconst best = pickMaskVariant(variants, 11);\n// \"+44 #### ######\"\n\n// Extract only digits from string\nconst digits = extractDigits('+1 (202) 555-1234');\n// \"12025551234\"\n```\n\n### Validate Number Against Country Rules\n\nUse `createPhoneFormatter()` to validate length against a specific country's mask variants.\n\n```ts\nimport { MasksFullMapEn, type CountryKey } from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, removeCountryCodePrefix } from '@desource/phone-mask/kit';\n\nfunction validateForCountry(input: string, id: CountryKey) {\n  const country = MasksFullMapEn[id];\n  if (!country) {\n    return {\n      digits: '',\n      display: '',\n      isComplete: false\n    };\n  }\n\n  const formatter = createPhoneFormatter({ ...country, id });\n  const inputWithoutCode = removeCountryCodePrefix(input);\n  const digits = extractDigits(inputWithoutCode, formatter.getMaxDigits());\n\n  return {\n    digits,\n    display: formatter.formatDisplay(digits),\n    isComplete: formatter.isComplete(digits)\n  };\n}\n\nvalidateForCountry('+1 (202) 555-1234', 'US');\n// { digits: \"2025551234\", display: \"202-555-1234\", isComplete: true }\n```\n\n### Raw Digits for Backend Processing\n\nUse raw digits for storage and transport. Keep formatting on the client only.\n\n```ts\nimport { MasksFullMapEn, type CountryKey } from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, removeCountryCodePrefix } from '@desource/phone-mask/kit';\n\nfunction buildPhonePayload(input: string, id: CountryKey) {\n  const country = MasksFullMapEn[id];\n  if (!country) return null;\n\n  const formatter = createPhoneFormatter({ ...country, id });\n  const inputWithoutCode = removeCountryCodePrefix(input);\n  const localDigits = extractDigits(inputWithoutCode, formatter.getMaxDigits());\n\n  return {\n    country: id,\n    phoneDigits: localDigits, // canonical backend field\n    phoneE164: `${country.code}${localDigits}` // optional: with dialing prefix\n  };\n}\n```\n\n### Custom Regex + Metadata (Regional/Carrier Prefixes)\n\nCombine Phone Mask metadata with region-specific regex rules:\n\n```ts\nimport { MasksFullMapEn, type CountryKey } from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, removeCountryCodePrefix } from '@desource/phone-mask/kit';\n\nconst tenantCarrierRules: Partial<Record<CountryKey, RegExp>> = {\n  BR: /^(11|21|31)\\d{8,9}$/,\n  IN: /^(98|99)\\d{8}$/\n};\n\nfunction validateWithCarrierRule(input: string, id: CountryKey): boolean {\n  const country = MasksFullMapEn[id];\n  if (!country) return false;\n\n  const formatter = createPhoneFormatter({ ...country, id });\n  const inputWithoutCode = removeCountryCodePrefix(input);\n  const digits = extractDigits(inputWithoutCode, formatter.getMaxDigits());\n  const carrierRule = tenantCarrierRules[id];\n\n  if (!formatter.isComplete(digits)) return false;\n  return carrierRule ? carrierRule.test(digits) : true;\n}\n```\n\n### Multi-tenant: tenantId Default Country + Tenant-specific Validation Rules\n\n```ts\nimport { MasksFullMapEn, type CountryKey } from '@desource/phone-mask';\nimport { createPhoneFormatter, extractDigits, removeCountryCodePrefix } from '@desource/phone-mask/kit';\n\ntype TenantPolicy = {\n  defaultCountry: CountryKey;\n  prefixRule?: RegExp;\n};\n\nconst TENANT_POLICIES: Record<string, TenantPolicy> = {\n  acme: { defaultCountry: 'US', prefixRule: /^(202|303)\\d{7}$/ },\n  globex: { defaultCountry: 'GB', prefixRule: /^7\\d{9}$/ }\n};\n\nfunction createTenantPhoneService(tenantId: string) {\n  const policy = TENANT_POLICIES[tenantId] ?? { defaultCountry: 'US' as const };\n  const id = policy.defaultCountry;\n  const country = MasksFullMapEn[id];\n  const formatter = createPhoneFormatter({ ...country, id });\n\n  return {\n    defaultCountry: id,\n    format(input: string) {\n      const inputWithoutCode = removeCountryCodePrefix(input);\n      const digits = extractDigits(inputWithoutCode, formatter.getMaxDigits());\n      return formatter.formatDisplay(digits);\n    },\n    validate(input: string) {\n      const inputWithoutCode = removeCountryCodePrefix(input);\n      const digits = extractDigits(inputWithoutCode, formatter.getMaxDigits());\n      const complete = formatter.isComplete(digits);\n      const prefixOk = policy.prefixRule ? policy.prefixRule.test(digits) : true;\n      return complete && prefixOk;\n    }\n  };\n}\n```\n\n## 📖 API Reference\n\n### Types\n\n```ts\n// Country ISO 3166-1 alpha-2 code\ntype CountryKey = 'US' | 'GB' | 'DE' | ... // 240+ countries\n\n// Mask interfaces\ninterface MaskBase {\n  id: CountryKey;\n  mask: Array<string>;\n}\ninterface Mask extends MaskBase {\n  code: string;\n}\ninterface MaskWithFlag extends Mask {\n  flag: string;\n}\ninterface MaskFull extends MaskWithFlag {\n  name: string;\n}\ntype MaskBaseMap = Record<CountryKey, Array<string>>;\ntype MaskMap = Record<CountryKey, Omit<Mask, 'id'>>;\ntype MaskWithFlagMap = Record<CountryKey, Omit<MaskWithFlag, 'id'>>;\ntype MaskFullMap = Record<CountryKey, Omit<MaskFull, 'id'>>;\n```\n\n### Root Entry Exports\n\nImport mask data and country types from `@desource/phone-mask`.\n\n#### `MasksBaseMap` & `MasksBase`\n\nBasic country masks including country code prefix (lightweight version):\n\n```ts\nconst MasksBaseMap: MaskBaseMap;\nconst MasksBase: MaskBase[];\n```\n\nUse these to get raw masks with country code prefix.\n**Note:** some helper functions may expect masks without country code.\n\n#### `MasksMap` & `Masks`\n\nMasks with country code as separate property:\n\n```ts\nconst MasksMap: MaskMap;\nconst Masks: Mask[];\n```\n\n#### `MasksWithFlagMap` & `MasksWithFlag`\n\nMasks with country code and flag:\n\n```ts\nconst MasksWithFlagMap: MaskWithFlagMap;\nconst MasksWithFlag: MaskWithFlag[];\n```\n\n#### `MasksFullMapEn` & `MasksFullEn`\n\nFull country data with country names in English:\n\n```ts\nconst MasksFullMapEn: MaskFullMap;\nconst MasksFullEn: MaskFull[];\n```\n\n#### `MasksFullMap(locale: string)` & `MasksFull(locale: string)`\n\nGet full country data with localized country names:\n\n```ts\nfunction MasksFullMap(locale: string): MaskFullMap;\nfunction MasksFull(locale: string): MaskFull[];\n```\n\n**Supported locales**: `en`, `de`, `fr`, `es`, `it`, `pt`, `ru`, `zh`, `ja`, `ko`, and more.\n\n#### `getFlagEmoji(countryCode: CountryKey)`\n\nGet flag emoji for country code:\n\n```ts\nfunction getFlagEmoji(countryCode: CountryKey): string;\n```\n\n### Kit Subpath Exports\n\nImport formatter, input handling, detection, and utility helpers from `@desource/phone-mask/kit`.\n\n```ts\n// Count # placeholders in mask\nfunction countPlaceholders(mask: string): number;\n\n// Remove country code prefix from mask\nfunction removeCountryCodePrefix(mask: string): string;\n\n// Pick best mask variant for digit length\nfunction pickMaskVariant(masks: string[], digitLength: number): string;\n\n// Extract digits from any string\nfunction extractDigits(value: string, maxLength?: number): string;\n\n// Format digits according to template\nfunction formatDigitsWithMap(value: string, digits: string): { display: string; map: number[] };\n```\n\n## 🎯 Use Cases\n\n### Custom Input Formatting\n\n```ts\nimport { MasksFullMapEn } from '@desource/phone-mask';\nimport { formatDigitsWithMap, extractDigits } from '@desource/phone-mask/kit';\n\nfunction formatPhoneInput(value: string, countryCode: string = 'US') {\n  const country = MasksFullMapEn[countryCode];\n  const mask = country?.mask[0];\n  if (!mask) return value;\n\n  const digits = extractDigits(value);\n\n  return `${country.code} ${formatDigitsWithMap(mask, digits).display}`;\n}\n\n// Usage\nconst formatted = formatPhoneInput('2025551234', 'US');\n// \"+1 202-555-1234\"\n```\n\n### Phone Number Validation\n\n```ts\nimport { MasksFullMapEn } from '@desource/phone-mask';\nimport { countPlaceholders } from '@desource/phone-mask/kit';\n\nfunction isValidPhoneLength(digits: string, country: string): boolean {\n  const masks = MasksFullMapEn[country]?.mask;\n  if (!masks) return false;\n  const validLengths = masks.map((m) => countPlaceholders(m));\n\n  return validLengths.includes(digits.length);\n}\n\n// Usage\nisValidPhoneLength('2025551234', 'US'); // true (10 digits)\nisValidPhoneLength('202555', 'US'); // false (too short)\n```\n\n### Building a Country Selector\n\n```ts\nimport { MasksFullEn, type CountryKey, type MaskFull } from '@desource/phone-mask';\n\ntype CountryOption = Omit<MaskFull, 'mask'>;\n\nfunction getCountryOptions(): CountryOption[] {\n  return MasksFullEn.map((data) => ({\n    id: data.id,\n    name: data.name,\n    code: data.code,\n    flag: data.flag\n  }));\n}\n\n// Usage\nconst countries = getCountryOptions();\n// [\n//   { id: 'US', name: 'United States', code: '+1', flag: '🇺🇸' },\n//   { id: 'GB', name: 'United Kingdom', code: '+44', flag: '🇬🇧' },\n//   ...\n// ]\n```\n\n### Getting Flag Emojis\n\n```ts\nimport { getFlagEmoji } from '@desource/phone-mask';\n\n// Get flag emoji for country code\nconst flag = getFlagEmoji('US'); // \"🇺🇸\"\n```\n\n## 🔄 Data Updates\n\nThe library syncs with [Google's libphonenumber](https://github.com/google/libphonenumber) weekly via automated workflow. To update manually:\n\n```bash\npnpm gen\n```\n\nThis fetches the latest data and regenerates `data.json`.\nThis updates generated metadata files used by the package (`src/data.json`, `src/data.min.js`, and `src/data-types.ts`).\n\n## 📊 Bundle Size\n\nMeasured by bundling the packed package in a real consumer build with tree-shaking enabled:\n\n| Consumer import                                                   | Size (minified) | Gzipped |  Brotli |\n| ----------------------------------------------------------------- | --------------: | ------: | ------: |\n| `import * as PhoneMask from '@desource/phone-mask'`               |         6.09 KB | 2.86 KB | 2.30 KB |\n| `import { MasksFullMapEn } from '@desource/phone-mask'`           |         5.75 KB | 2.67 KB | 2.13 KB |\n| `import * as Kit from '@desource/phone-mask/kit'`                 |        13.28 KB | 5.83 KB | 4.90 KB |\n| `import { createPhoneFormatter } from '@desource/phone-mask/kit'` |         1.03 KB | 0.59 KB | 0.53 KB |\n| `import { formatDigitsWithMap } from '@desource/phone-mask/kit'`  |         0.25 KB | 0.21 KB | 0.18 KB |\n| `import { extractDigits } from '@desource/phone-mask/kit'`        |         0.08 KB | 0.10 KB | 0.08 KB |\n| `import { getCountry } from '@desource/phone-mask/kit'`           |         5.84 KB | 2.72 KB | 2.18 KB |\n\nThe root entry contains country metadata and mask data. Use `@desource/phone-mask/kit` when you need formatter, input handling, detection, or utility helpers. Data-dependent helpers such as `getCountry` include mask data; pure formatter and input helpers tree-shake to small standalone bundles.\n\n## 🔗 Related Packages\n\n- [@desource/phone-mask-vue](../phone-mask-vue) — Vue 3 component + composable + directive\n- [@desource/phone-mask-nuxt](../phone-mask-nuxt) — Nuxt module\n- [@desource/phone-mask-react](../phone-mask-react) — React component + hook\n- [@desource/phone-mask-svelte](../phone-mask-svelte) — Svelte component + composable + action + attachment\n\n## 📄 License\n\n[MIT](../../LICENSE) © 2026 DeSource Labs\n\n## 🤝 Contributing\n\nSee [Contributing Guide](../../CONTRIBUTING.md)\n\n---\n\n<div align=\"center\">\n  <sub>Made with ❤️ by <a href=\"https://github.com/DeSource-Labs\">DeSource Labs</a></sub>\n</div>\n","readmeFilename":"README.md"}