{"_id":"@elmabs/elewise.elma365.ui.validation","_rev":"9-795975956888d1cffdfcef5ea5a0a8d7","name":"@elmabs/elewise.elma365.ui.validation","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.0","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.0","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"cb0570515bd0d8ed3acabeb11ad5c2c0c4cd1b64","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.0.tgz","fileCount":23,"integrity":"sha512-+7L8p0/B3q7093W+HRvYFcbjmw3Cf6W/14EZSSslvUk4mdCK8NO1MRblchk5r+5FW40aqE/istOcNJ8GZtCHKQ==","signatures":[{"sig":"MEUCIFgPb1mlq6MJPKSAsu29ZrzJEI7aztIru19dIz21Y3qIAiEAzIDCZcfWdHBIN9yISJzLYUldrJ0oIC4drF70GuMbzV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43425},"main":"./dist/elewise.elma365.ui.validation.umd.js","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"a9ca5112f65851b8ecace8a13691671514436d6b","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","prettier":"^3.5.3","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.0_1749327365780_0.03724244523588216","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.1","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.1","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"e0b28c864c24edd4c941df2eb8c0e4fcab85cac8","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.1.tgz","fileCount":25,"integrity":"sha512-uhP4WaNC82UDq3ZfLKBnd+8YK/X1BRvRijMDV1y8InOgRMZo9om0IDkGFHvjPeFbK9jVToes4u2HneQcFyxarw==","signatures":[{"sig":"MEUCIHqTpOvOnLbTyE6os1jlaRY93OWWTtVq4F2PGe3KYJkSAiEAitbVEDi8QMpLCFMmQkeEsJX8sF2hMXE5aJ7nLl0KJnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57363},"main":"./dist/elewise.elma365.ui.validation.umd.js","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"065a9b4e90edf3f7b9d00a70dbc5f6776d68169b","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","prettier":"^3.5.3","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.1_1749408617861_0.5101776249250971","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.2","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.2","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"af31c77df91132e1ec209e03971daf199bbea023","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.2.tgz","fileCount":25,"integrity":"sha512-lyYBhzsB5VMwIyDXAd3p12BAVcNz9D24bRqJiCNxy3SWy1wvKHRV9mkQr/NnT37k3EYJXamiT5WEYrtguBRgzA==","signatures":[{"sig":"MEUCIQDkAoVNNJ5DyXh+wcM4fz/+TJOLF+s1m7AgjNCt/dCZ/QIgFil90f+6/xnHrhIvu9AukpSRqT6gOg5Z+ne/Wl8xsnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57481},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"5f654afbf1221bea45e2f4843064f9d99ac571f6","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.2_1749411735525_0.017755154438351184","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.3","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.3","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"69a476431b1a8d7c9b1dea4ed77ed725457eceaf","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.3.tgz","fileCount":25,"integrity":"sha512-h2epCEfCuusU4bmFyC+oEkTp6xjP274SGo51uoSzHJl+JWf/pMImSSZcWrUOCz0E0yFSKg/6xYZKr9nJay5i3g==","signatures":[{"sig":"MEQCIE1p2ioYu1jMmlfVc6TpGp1mJyCLNFFqnBHTJyfmFQkSAiA++e0kk9E0lFfI8wtu7Of/LyI/PM5KKbi1WLjWbaVDAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57481},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"5f654afbf1221bea45e2f4843064f9d99ac571f6","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.3_1749437829984_0.07294965725178981","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.4","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.4","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"63e68fda4f0073a73e071c6d63626fde9871b1d0","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.4.tgz","fileCount":25,"integrity":"sha512-qfcpTTrZyDjg1Tk+nP9ObiiP/vIt2kZIFfDX2aYcbZ8G+DdIHVW+t52yA34md21UtYqrH4PRpWMGujJlTxA27A==","signatures":[{"sig":"MEYCIQCMscsHdcrwfTEZgJBhUmmGDRMBF17nAFteOVxzBBnw7QIhAKV0EqGinH+b5bv9ajEOwM9hreHz6ussYpprE7C/chtD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62422},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"25ecb3e1d779bbc2f98669b13d4955ee59cef6d3","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.4_1749460929363_0.05663767498390082","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.5","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.5","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"8e1cf145c00557a713a36450cf28ceb576302885","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.5.tgz","fileCount":25,"integrity":"sha512-06Ex6bnCH1M41vJiIxzxTzfLr4uuKVCAHlubQ3josZBPGP0OjW6riaYEf0ECDARIXvxft9fKrTl/2NwR0Ml8Rg==","signatures":[{"sig":"MEUCIQDLAnjh3ln2FYckj4Ct9M2XzFkLOzsBGsv3HvlifDB7EQIgAyTPDX49hUhLuPVX8YHtZhVk/eSoFjJaH3Dh8iHfKwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62394},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"e7c9f71a75cf8dc4cfc04344810182472fcd8719","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.5_1749491121673_0.8811426443947781","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.6","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.6","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"b370e5ce8edddbdb207047734f679592f37091d2","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.6.tgz","fileCount":27,"integrity":"sha512-RnUsNxCV1kQkZQHlFfgynUSsfJ64XZGGhPpmQnOrE5xv4hWn4W7v1C5cNcmkAPdtq+ZMDDJ2+02BAAB+f1YSRw==","signatures":[{"sig":"MEYCIQDEclo+ygva+/ibDwc2xm5UbEpx/PJVAsjRQYQ/2KyayQIhAKwo0UVIVNWzMxIn3uUGgthF2s298yg7Uf2AQTsbR1Nq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79997},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"11df34f6627bcf8c8f1f66f1119cb5c48e7df282","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.6_1749506736580_0.28060016021560474","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.7","keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","_id":"@elmabs/elewise.elma365.ui.validation@1.0.7","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"dist":{"shasum":"9436c7ae5566653638a606cc04ba2f695fc8ae6e","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.7.tgz","fileCount":27,"integrity":"sha512-ce7berRONdb1ypvHpqxWHfNEUej4UCPIu9rLjhJKzjNMGgT32IV0PHOF2NnR9ypDCRH50G1edw9e2UM2R28ZBg==","signatures":[{"sig":"MEUCIQCUfJX2BDZ5Qeop8odz/+bf41T0hGuhJ4ZHAKJ6YWCRiwIgdOYfZlber2yWqxw1292cfIpM05shhTVu+IfIGbYCwQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84177},"main":"./dist/elewise.elma365.ui.validation.umd.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/elewise.elma365.ui.validation.es.js","gitHead":"5085a073b58e0fb54753134ed66081b1100d0f5e","scripts":{"lint":"eslint src --ext .ts,.tsx","build":"tsc && vite build","format":"prettier --write \"src/**/*.{ts,tsx}\"","examples":"live-server --open=examples","prepublishOnly":"npm run build"},"_npmUser":{"name":"npmint","actor":{"name":"npmint","type":"user","email":"s.lyalin@elma-bs.ru"},"email":"s.lyalin@elma-bs.ru"},"_npmVersion":"11.3.0","description":"Validation library for ELMA365","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"^9.28.0","globals":"^16.2.0","prettier":"^3.5.3","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"^22.15.30","vite-plugin-dts":"^4.5.4","typescript-eslint":"^8.33.1","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@typescript-eslint/parser":"^8.33.1","@typescript-eslint/eslint-plugin":"^8.33.1"},"_npmOperationalInternal":{"tmp":"tmp/elewise.elma365.ui.validation_1.0.7_1750183602976_0.40801063250868363","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@elmabs/elewise.elma365.ui.validation","version":"1.0.8","description":"Validation library for ELMA365","main":"./dist/elewise.elma365.ui.validation.umd.js","module":"./dist/elewise.elma365.ui.validation.es.js","types":"./dist/types/index.d.ts","type":"module","scripts":{"build":"tsc && vite build","lint":"eslint src --ext .ts,.tsx","format":"prettier --write \"src/**/*.{ts,tsx}\"","prepublishOnly":"npm run build","examples":"live-server --open=examples"},"keywords":["elewise","elma365","validation","typescript"],"author":{"name":"ESB"},"license":"MIT","devDependencies":{"@eslint/js":"^9.28.0","@types/node":"^22.15.30","@typescript-eslint/eslint-plugin":"^8.33.1","@typescript-eslint/parser":"^8.33.1","eslint":"^9.28.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","globals":"^16.2.0","prettier":"^3.5.3","typescript":"~5.8.3","typescript-eslint":"^8.33.1","vite":"^6.3.5","vite-plugin-dts":"^4.5.4"},"_id":"@elmabs/elewise.elma365.ui.validation@1.0.8","gitHead":"043f7960516e6e0373ef3e8f05e917e8463efe54","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-NxwL8QGJdZTKTPKIcGkVTjlk+KTrHuzIwIOL+9j6kI/WcZbaTDUGsIYMhuRR0xIGJPzcok6g2kWbdUOi9nAlTQ==","shasum":"e45cd7a0f5f34077084ce654fbddc24dbd264876","tarball":"https://registry.npmjs.org/@elmabs/elewise.elma365.ui.validation/-/elewise.elma365.ui.validation-1.0.8.tgz","fileCount":27,"unpackedSize":85097,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICXruXhTUe3uGwQEYHnP7W+G4SbmpZJ0myVYMtuASSUlAiAL1Yk/FmAhaL/elr2PcErMPhx6omtauxPwzcVVtSvMVA=="}]},"_npmUser":{"name":"npmint","email":"s.lyalin@elma-bs.ru","actor":{"name":"npmint","email":"s.lyalin@elma-bs.ru","type":"user"}},"directories":{},"maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elewise.elma365.ui.validation_1.0.8_1750184713049_0.09194888506946675"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-07T20:16:05.655Z","modified":"2025-06-17T18:25:13.462Z","1.0.0":"2025-06-07T20:16:05.968Z","1.0.1":"2025-06-08T18:50:18.044Z","1.0.2":"2025-06-08T19:42:15.702Z","1.0.3":"2025-06-09T02:57:10.186Z","1.0.4":"2025-06-09T09:22:09.605Z","1.0.5":"2025-06-09T17:45:21.854Z","1.0.6":"2025-06-09T22:05:36.805Z","1.0.7":"2025-06-17T18:06:43.168Z","1.0.8":"2025-06-17T18:25:13.268Z"},"author":{"name":"ESB"},"license":"MIT","keywords":["elewise","elma365","validation","typescript"],"description":"Validation library for ELMA365","maintainers":[{"name":"npmint","email":"s.lyalin@elma-bs.ru"}],"readme":"# EleWise.ELMA365.UI.Validation\n\n> [`npm i @elmabs/elewise.elma365.ui.validation`](https://www.npmjs.com/package/@elmabs/elewise.elma365.ui.validation)\n\n## Содержание\n\n- [Быстрый старт](#быстрый-старт)\n- [Основные типы](#основные-типы)\n- [Свой провайдер валидации](#свой-провайдер-валидации)\n\n### Быстрый старт\n\n```ts\nimport { ValidationManager, PropertyType } from '@elmabs/elewise.elma365.ui.validation';\n\n// 1. Создаем менеджер валидации\nconst manager = new ValidationManager([\n   {\n      name: 'email',\n      display: 'Email',\n      type: PropertyType.String,\n      rules: {\n         required: true,\n         pattern: '^\\\\w+@[a-zA-Z_]+?\\\\.[a-zA-Z]{2,3}$',\n      },\n   },\n   {\n      name: 'age',\n      display: 'Возраст',\n      type: PropertyType.Number,\n      rules: {\n         required: true,\n         min: 18,\n         max: 99,\n      },\n   },\n]);\n\n// 2. Выполняем валидацию\nconst result = manager.validate({\n   email: 'test@example.com',\n   age: 25,\n});\n\n// 3. Обрабатываем результат\nconst valid = manager.validity(result);\nif (valid) {\n   console.log('Данные валидны!');\n} else {\n   console.error('Ошибки валидации:', result.errors);\n}\n```\n\n### Основные типы\n\n#### Тип свойства\n\n```ts\nclass PropertyType {\n   static readonly Nullable: number = 0;  // Тип принимающий null\n   static readonly String: number = 1;    // Строка\n   static readonly Number: number = 2;    // Число\n   static readonly Object: number = 3;    // Объект\n   static readonly Boolean: number = 4;   // Булевое\n}\n```\n\n#### Ошибка валидации свойства\n\n```ts\ntype TPropertyValidationError = {\n   name: string;     // Имя\n   display: string;  // Отображаемое имя\n   message: string;  // Сообщение\n}\n```\n\n#### Результат валидации\n\n```ts\ntype TValidationResult = {\n   messages: string[];                  // Сообщения\n   errors: TPropertyValidationError[];  // Ошибки\n}\n```\n\n#### Валидируемое свойство\n\n```ts\ntype TValidationProperty = {\n   name: string;     // Имя\n   display: string;  // Отображаемое имя\n   type: number;     // Тип свойства\n   rules: any;       // Правила валидации\n}\n```\n\n#### Правила валидации\n\n```ts\ninterface IValidationRules {\n   required: boolean;   // Обязательное\n}\n```\n\n#### Правила валидации строки\n\n```ts\ninterface IStringValidationRules extends IValidationRules {\n   pattern?: string;    // Шаблон\n   minLenght?: number;  // Минимальная длина\n   maxLenght?: number;  // Максимальная длина\n}\n```\n\n#### Правила валидации числа\n\n```ts\ninterface INumberValidationRules extends IValidationRules {\n   min?: number;  // Минимальное значение\n   max?: number;  // Максимальное значение\n}\n```\n\n#### Провайдер валидации\n\n```ts\ninterface IValidationProvider {\n   readonly propertyType: number;                          // Тип свойства\n   validate(\n      property: TValidationProperty, \n      target: any): TPropertyValidationError | undefined;  // Выполнить валидацию\n}\n```\n\n#### Менеджер валидации\n\n```ts\nclass ValidationManager {\n   constructor(properties: TValidationProperty[]);                                     // Конструктор\n   constructor(properties: TValidationProperty[], providers: IValidationProvider[]);   // Конструктор\n   get providers(): ProviderCollection;                                                // Провайдеры валидации\n   validate(target: any): TValidationResult;                                           // Выполнить валидацию\n   validity(result: TValidationResult | undefined): boolean;                           // Проверить валидность\n}\nclass ProviderCollection {\n   public entries(): IValidationProvider[];              // Получить провайдеры\n   public register(...providers: IValidationProvider[]); // Добавить провайдеры\n}\n```\n\n### Свой провайдер валидации\n\n```ts\n// Расширенный список типов свойств\nclass PropertyTypeExt extends PropertyType {\n    static readonly ContactPhones: number = 100;   // Телефоны представителя\n}\n\ntype TContactPhones = [{ phone: { tel: string|undefined }}];\n\n// Провайдер валидации телефонов представителя (Обязательность)\nclass RequiredContactPhonesValidator implements IValidationProvider {\n    readonly propertyType = PropertyTypeExt.ContactPhones;\n    public validate(property: TValidationProperty, target: any): TPropertyValidationError | undefined {\n        const rules: IValidationRules = property.rules;\n        if (rules.required) {\n            const phones: TContactPhones = target[property.name];\n            if (phones == undefined || phones.length == 0) {\n                return { name: property.name, display: property.display, message: 'Обязательное поле' };\n            }\n            const correctPhones = phones.filter(item => item.phone && item.phone.tel && item.phone.tel.length);\n            if (correctPhones.length == 0) {\n                return { name: property.name, display: property.display, message: 'Обязательное поле' };\n            }\n        }\n        return undefined;\n    }\n}\n\nconst manager = new ValidationManager([{\n   name: 'phones', display: 'Телефон', type: PropertyTypeExt.ContactPhones, rules: { required: true }\n}]);\nmanager.providers.register(new RequiredContactPhonesValidator());\nconst result = manager.validate({ phones: [{ phone:{ tel: undefined }}, { phone: { tel: '' }}]});\nconsole.log(result.errors);\n\n// Выведет:\n// [\n//   { name: 'phones', display: 'Телефон', message: 'Обязательное поле' }\n// ]\n```","readmeFilename":"README.md"}