{"_id":"@felipe-lib/schema-local","_rev":"26-30ab9ee0eefab07a580f6ba0af292e0e","name":"@felipe-lib/schema-local","dist-tags":{"latest":"2.3.3"},"versions":{"1.0.0":{"name":"@felipe-lib/schema-local","version":"1.0.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.0.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"02a4f6948a96024b3f355654245ce756a3217d50","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.0.0.tgz","fileCount":10,"integrity":"sha512-QZwBnxb6jz0xh60okZ7OxAgN+LVzj3rJjUQb1UCzrcHKsy8vqU/L3VAlzDzfCf6Zu9XpqBKje2bZUlSQj3Yn0Q==","signatures":[{"sig":"MEUCIQDhHKVHxVM/xuULgrIZaQkaKVkBgVocxySl93uHZWbqfwIgOwB70YIlBNYeQIyyBHoHn3R4axEpz0YCNL89TWfrDBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8141},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e9a19e714382ef67bd1a8a825a3f270bd51c6212","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","publishConfig":{"team":"felipe-lib/developers","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.0.0_1777907109472_0.29280078186865977","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@felipe-lib/schema-local","version":"1.1.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"235f99f626ad5941a3e2b838964aeadab4bd30a8","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.0.tgz","fileCount":10,"integrity":"sha512-4g7rI2SrxXT0cj9xmQmVQ86hGTlIFaCgP5M7/xB7G7xFNrwz6r/TyR5JFzweiHWleTvNzlHwZB4OU6Tf4cPfew==","signatures":[{"sig":"MEUCIH9qQDlkMuqk+uXmQNlTkDJHXDjcqWBvG07W7qDCvqymAiEA+geNp0cHAR0EDv87HNEPpdmQyY1ArGH7LmR8nsti5S0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d3e75126bafbbed753294b8ea3c028d6bce0a7ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.0_1777927292699_0.46701283489191225","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@felipe-lib/schema-local","version":"1.1.1","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"1ca2a6205afe96dbf8205498c1ab55267c7234f7","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.1.tgz","fileCount":10,"integrity":"sha512-AvOkbsOJCauK/rqPnfZf8eeXtieXMdLGbLj6BTE2/zSgSempQLp6iovOQNmHV5zlUB+YCeinSiP5bsID1hVklQ==","signatures":[{"sig":"MEQCIGRu1YD+QFg0FFCuC0fFcyRjdz/98eHNume9XABmGjTHAiBUqY2j/JOCk9l62XkOWBVpy8JSKOSyreSQPAtzoUX+PA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19674},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"d3e75126bafbbed753294b8ea3c028d6bce0a7ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.1_1777937754611_0.3075978450603589","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@felipe-lib/schema-local","version":"1.1.2","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"339e61774b661348ee6c85be13dbb10720c4a7dd","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.2.tgz","fileCount":10,"integrity":"sha512-Q78XunCIlCrBzxEe+ZvBP5ZA6hBWGkLntDU9C7udfRyiZBbhZ7G3hwALkOiYcf53YJbi++I4zPZZ836rSP4ZQw==","signatures":[{"sig":"MEYCIQC7gN/VaOWP9tpx/0SC9xMsqhMCyX+qPmXKq2jEVYlc8gIhAL9B+vjiP8geob/uI/w4PP8yrruuWb4E7zzWOXKauWnE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19674},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"d3e75126bafbbed753294b8ea3c028d6bce0a7ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.2_1777938423479_0.37967367246943784","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@felipe-lib/schema-local","version":"1.1.3","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"2ec1521f172132a075043aa19f9c862d48369f55","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.3.tgz","fileCount":10,"integrity":"sha512-q4+JpbYu6CCbu217pbcKWXONDCw+4BI70ijp2g66+lhrzLz0BXvthCjID1LSeThhKmhExCanbi/ZlnpsWfciXQ==","signatures":[{"sig":"MEUCIF7dha32RUGI9yWafU82S+2dHxqXKd2ZwxrDvnL3PhjbAiEA/ejDR9JWVe7vfZIjejUxckrmZFL6oVu70jeZWn3gsJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19865},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"d3e75126bafbbed753294b8ea3c028d6bce0a7ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.3_1777938810151_0.9015914789256445","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@felipe-lib/schema-local","version":"1.1.4","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.4","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"2539d01a24f195d7aa4e8bf4a00894733b65a80b","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.4.tgz","fileCount":10,"integrity":"sha512-6F9k69IQ2PJBtrHydVBUtrmxh/Wo6FBLp/y30XJzvf09CB19QSGHqHaUMXQI2zdAYcJVkawSbOyum8dNibg5bA==","signatures":[{"sig":"MEUCIQCr+EoApw/RlxIlIjaYFaIKfRrqqxctxB9tzacgSgZ1+gIgPnmFIexRFxXezg+KitjnAMF9EmjrniwdsuPLXeYwrgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19865},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"f0cab1ccefe3f180daf1f91672382a1ae00e9c7e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.4_1777939837338_0.7113330153736277","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@felipe-lib/schema-local","version":"1.1.5","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"9253e58292d6e77d849b02b725111f48a0a038af","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.5.tgz","fileCount":10,"integrity":"sha512-y0FeSoYV02+XaOzizQIU9lExeyypTOVIhdmXxhuOj0GVtRZlcBwIZyNzUzx0NkNZjQA+qDSs7LW+SC072Iu1jA==","signatures":[{"sig":"MEQCIB8eLLvnO8aYb9qVMYjJ8QjDJKg4+AyIPImTgxHN5lVyAiBowCZbzKnT7y0hZGbHl3issYEQAG5h5CuH3iO8p/v73A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21494},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"15e0ae15f42be6b1897c45378bd9ff08b911cb8a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.5_1777940290509_0.7209149612765464","host":"s3://npm-registry-packages-npm-production"}},"1.1.55":{"name":"@felipe-lib/schema-local","version":"1.1.55","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.1.55","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"3d519c095782147f9681873d4e4fd504c7990d2d","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.1.55.tgz","fileCount":14,"integrity":"sha512-PRSh/lCqc3m1Ga+8Gi0dR1n7A4m1jDa3aLVRML5k9dnE/ti3GL+riYQ6z9S68iVnl97unD4moZzAz6UpoEgmpg==","signatures":[{"sig":"MEUCIQDz2S8dXfmoM1Kmpx2NLF+D9Dsf9RZjzm6og7HNtdyawgIgOp+/WVqeQEFXe3jwtpz8hxBlJ78dt3q0D4iiJ5ghKfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40853},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"15e0ae15f42be6b1897c45378bd9ff08b911cb8a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.1.55_1777940444196_0.16549316241031287","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@felipe-lib/schema-local","version":"1.2.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.2.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"3182e8176fe818d9215ad988aa188f95ea078aac","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.2.0.tgz","fileCount":14,"integrity":"sha512-+9sGmOyK5ECOyTNNnyBpSPHqVX1DaCx5xQeyh/kJhZDoCmsUBLRR7ATiyKaDNOost9PqdWazNVUqm+9gpWWJFg==","signatures":[{"sig":"MEYCIQC+9oZSPqIhugUk/mj+cL/0XqQUSHpEuY8XA9gChejzEQIhAO77gEQAoneTnn2WxX9veOUZlgDxMb42SkkHzkz7thBu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30407},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"c7a60a387d6f4701fb5c446f40c60462f59f79ab","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.2.0_1777942286031_0.6779603179680505","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@felipe-lib/schema-local","version":"1.3.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.3.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"17465f4f07c73ea8b740cb874c37a4e65f5763b2","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.3.0.tgz","fileCount":14,"integrity":"sha512-EVPPBhXlAOF5K++4Aj6IbNjvg36LiC2LRegQ6wTmr9ghRudeilt6iqR6kUdOd/sIumlXYngefesTE16cI9gtFg==","signatures":[{"sig":"MEQCIHfzHWatyN+ZwRyYecD5nDOqyOzB3puCpWVIkznfcPgaAiAvebFtim15CQhxr4UNauXgpLakF1BTHFC8ghwARzIHRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29904},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","export":"./dist/index.js","import":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts"}},"gitHead":"ba52e65e00e09a5ed5520677832445ae07e266b9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.3.0_1777994054080_0.885958910792797","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@felipe-lib/schema-local","version":"1.4.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.4.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"8ff672e2f4dfd75adbbde06d14d6eb60f5cbeef2","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.4.0.tgz","fileCount":14,"integrity":"sha512-ToUTdTNLgp0Ei0mI1z6I5Nw21vAbCV6MyMuS0xuYlpblV6lsuVPzQa9+Hs8pynL26PWPKDSUYXzG3CB+QAXP5g==","signatures":[{"sig":"MEYCIQDTvIcHCkpQdx0QU2a18bRuK8QmjpJwPeEf75EXa1n8DQIhAOwoXBF4sBWQVPRPwY+PMbrj48qtiFNH4xyTghAu8Jvi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"2c262c6cd55c8aea93ab58e87b3ea8ca3d34a96e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.4.0_1777996218472_0.20288124892773873","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@felipe-lib/schema-local","version":"1.5.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.5.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"bc7f48f7330c49792835cdd96f58495e6402c59f","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.5.0.tgz","fileCount":10,"integrity":"sha512-fLAyP4pleYGX4PqmYUhKpKiQkLSbO0hPBftpoixysNu4gadB9l609iLCGrvUNq7W1KHOMo049O3I7UegUorm5A==","signatures":[{"sig":"MEUCIQD0bvywHa9jAOvyZNK+OCRMG0g6dPkdCAXlOtwzt/RwqgIgNfxYg6IrHXohUpuZpuuNiXyA/CjcPOs0vAgC4c6w73I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21761},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"7f7cfa574041fa72483272642dea1f91cc4d250e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.5.0_1778024972672_0.45332696753603985","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@felipe-lib/schema-local","version":"1.6.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.6.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"f662cbd9dfad71c607643048ac1bb65ef7df3229","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.6.0.tgz","fileCount":10,"integrity":"sha512-f+JAv3wsTDsr2xLNQDJE5pvmEO5BSnhnaRzSVcdh+wWpr7FOpUV/jEbxIuBXKPytMncEf7CF1rcIie4HCo/Lhw==","signatures":[{"sig":"MEUCIEDX1cCfQx9BLLeLH4rdCEttQrqNLnkqdbMBi5+knddcAiEA/8leiNwZ6Uq+BjHO24c+zmYaZBbjPp33rSa5jdynt4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23636},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"b3d4dc3271840e186ce8a8ef32e3de786de49eee","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.6.0_1779167923407_0.7841967014519617","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@felipe-lib/schema-local","version":"1.7.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@1.7.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"404cddcab4df52414f1631a73bff53a26d77e876","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-1.7.0.tgz","fileCount":10,"integrity":"sha512-X2NsDoFpyJXIZN51rU0k6vphZxp5JrS40858V5KRMkgOuy4m/oUwC5mj4Jy/Ev87VqJQh/syBOmP6ReMTgCEtQ==","signatures":[{"sig":"MEUCIQCZ+qnRMt9fRGc0DRsk8o4u7/9W8SMyfO01cpeh1k8NawIgEKirVbuzHI/bo8igtIG2jJRrJOSAGUOs0+WN3s6E6xo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"b3d4dc3271840e186ce8a8ef32e3de786de49eee","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_1.7.0_1779753047847_0.15797076920702025","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@felipe-lib/schema-local","version":"2.0.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"2c1736b9f366dfe15f792d9f49339be80b29ce83","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.0.tgz","fileCount":10,"integrity":"sha512-qBCjr20VC9bYkG/3aN2Rr6RTSYctbnu/NFyqWc43kY/0+Qhk1VA8us5LI0x6GDAK69HCDrox31cB3TVPRcdUqw==","signatures":[{"sig":"MEUCICEQhPUrYGwX22Szp1GpJlLuWeNKfklafJJVJuV6E0F7AiEA/Qhwm0ClMftigpOQe21vVLa/fUkwLth3YlsOyOFL+Y4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32828},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"6a2c5feff1a1c76715f439e550a361fead8b88c2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.0_1780470760115_0.42154700080999596","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@felipe-lib/schema-local","version":"2.0.1","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"879f7a19aba6712727efd2a4d5e12ff8f7913ba7","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.1.tgz","fileCount":10,"integrity":"sha512-SYLuVg0ss0aDdscisbK2Km/C3AYeq85b0+saAhOZjUVG2+ZjNso5wRFkPOgX7KKJePNCjbpquK8yS4puVu49ew==","signatures":[{"sig":"MEUCIQDPbikHbdHgnCgcZs0zcjw8R6ppIw0+BbTKRbkuhjmxXAIgdGfVD8tgAY1P5ZFUTzJcHOEOvVCHbEH8SgovqO+Sueo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31540},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"942acd1501b211c773e7f3022e67026cb052148b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.1_1780472096569_0.3835114053695978","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@felipe-lib/schema-local","version":"2.0.2","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"8e379cfdfc2bf58112300e5bffda1e101d35944f","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.2.tgz","fileCount":10,"integrity":"sha512-RqiZzW5BQ6dotlJUaVNeAM4wJattBamKHGe7Pf+YNQC0ukPgqWgJL0102NUW/rOTazW/BhnB9Yn9NIj+gQGPJw==","signatures":[{"sig":"MEQCIF9yg+lYFtrisFTerbV1cW964rF4dAO+8CfiuWy2VxSvAiBNH48SWWijfta3GZ++8G+xKAlC80UcoaKltCXVifzkHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31540},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"942acd1501b211c773e7f3022e67026cb052148b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.2_1780472189359_0.30141878578627046","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@felipe-lib/schema-local","version":"2.0.3","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"e6608aebce4dce790da128291d8f649d94d1273e","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.3.tgz","fileCount":11,"integrity":"sha512-FwiP7WTlRFgHT+Zc5DukRzg8xhaBO6rwU5rqiG56hNad2nebtKGxn7AGndKY332qHozvN7mck8BiOrGiJeGbmQ==","signatures":[{"sig":"MEQCIEVPW3hW+7TCY1vh6ygAJk9oaDjIGNqnCJxcDK70lkzGAiA1pspjOqPBANGHup6BAAW/R1UIMBnrtlgBJh1eJp6Dyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61835},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"cc64455c36e9e887ab6d078fd4542f5804652ee2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.3_1780473151538_0.041365255136526446","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@felipe-lib/schema-local","version":"2.0.4","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.4","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"b366c25784f2840eb3992dd3e37cd6e9cb518e7e","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.4.tgz","fileCount":11,"integrity":"sha512-V7I/cIj3ko8G2h916s/0RcfhfcDoJ2ZXn/D76GYqFS2ZWtZiaM3/QDkZJO+9Rn/7futkUmAXbQ4OOSD250cf4Q==","signatures":[{"sig":"MEUCIQCW+OfBubnZHzgX5TzPHJVw2zJkQNjbXqVv7jk+BpaazAIgFcyCoxyIYpivyDC9qBF5LhxhOnVWe8zGliGNWtT/IzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62720},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"cc64455c36e9e887ab6d078fd4542f5804652ee2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.4_1780516324084_0.5110291111859673","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@felipe-lib/schema-local","version":"2.0.5","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.0.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"afd8edcad3620de77d1b683bf697097f5dc0fce3","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.0.5.tgz","fileCount":11,"integrity":"sha512-o0VZJNfZ6wRxkqoK1Wxm5bPHwA8cCwin1VZ4M6hE4iMWhmTN4Ki1JHd3toxbf/Y/HWSC+iX7e7IAUzjLL3iKZw==","signatures":[{"sig":"MEUCIQDXC4AgjtlWcXOGAbrlk5soMMqwUMvnCCrjy9C236nOVwIgb3yc/LpGzx1tNDshhLaWFoKO7TFyQaOJIy4zV5AGsOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66208},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"857bcd62bf504ac839d894ad0fb4a91557f8d6ac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.0.5_1780516696222_0.7911730830400412","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@felipe-lib/schema-local","version":"2.1.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.1.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"0d49f6bd223a77ae26c4ab88f1adcbbf54da1156","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.1.0.tgz","fileCount":11,"integrity":"sha512-4Vv3p7QpggedBJYBy3j5chiS/sJIP3K21CMubWlYxHpWqxY9Cq32M8dsHvjnlBM3ZYKf+8eRbU/wVLn1VB5QPg==","signatures":[{"sig":"MEYCIQDB/3z/POJUI/bAP/VbloXK3hKMRdn7CtNrlx3SwbU2cgIhALoffiv1PtwRd8R485dCsI/GdiYy+85OJSBmOg8XSI4s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72242},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"cbe9c4d0e15e57bc1887bc30bb3969bb28db2882","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.1.0_1782266743310_0.46081611948987455","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@felipe-lib/schema-local","version":"2.2.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.2.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"a718e2fa4ffe4a74981e379f0bc89e70c22224dd","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.2.0.tgz","fileCount":11,"integrity":"sha512-4JNP2aaGWW67Fbsc/cQqq50TyowOezVPF/g+viXdctxTaajXcOBh8FlwKrT2MWK+lfEurM+cKVEytIILH2Y0rQ==","signatures":[{"sig":"MEQCIAaF9R9I6/o4CpV5ZyzM8tPXnO4xfIhbCFuXr1i9v+kgAiAJ0r/Ckr6UAQgG0Q0pLAv1UQUkwwFWuv2M+JJjJ6QsHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76371},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"ab536df80acc68eb903ed1467b198fd5befd4fdc","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.2.0_1782268012963_0.9552151920289846","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@felipe-lib/schema-local","version":"2.2.1","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.2.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"aea868480ccdc5024958c5735f5e0ec9c2d58eef","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.2.1.tgz","fileCount":11,"integrity":"sha512-2swOVJgBU/RFVW71sfJINpgucQtAIXM0O8/7FhoKd+iCar9e/90a62+IZspWtWJalcyNGt8yi1/+ALb95kafeQ==","signatures":[{"sig":"MEUCIFU3P4F9qZNfCqeX/v3vgla3k4tcypKSVZvPvLgqSCFuAiEA4uPT5wPTdwHPmboIMUgonHb+BZNxCyiE1O2x/iD3Vjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76404},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"12dc9b69a527a81c17e3ae2b90a396bce83b9887","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.2.1_1782269058785_0.513439217802008","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@felipe-lib/schema-local","version":"2.3.0","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.3.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"70031f35cee72dbdf0ecc945274d6ea2a88262f8","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.3.0.tgz","fileCount":11,"integrity":"sha512-q+Swmhmvp55S0lFVUlxLqxkVtfwr3deglsAYqkSbJu8Lri0Pd1JM+qhsylLde/gHGSdFervQqK/81l1FEEBy+Q==","signatures":[{"sig":"MEQCIETftA5Vdf0jnYE+YhE5zwZH5Wf+Yd0ZCtuX1m7G4m2CAiAIoq2oX5F7Agh3W8DcPjdjEbYk/xvz7V5ofM1/r9qBkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85476},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"f709353817251e65f5ae01101d8acbe927a09592","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.3.0_1782363565938_0.27118232791291286","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@felipe-lib/schema-local","version":"2.3.1","keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","_id":"@felipe-lib/schema-local@2.3.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"homepage":"https://github.com/felca/schemaValidation#readme","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"dist":{"shasum":"392d8569707db44ea594631459d0c149da7ccd01","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.3.1.tgz","fileCount":11,"integrity":"sha512-OFpVuyNaGZekbWyUE9ud2eG8ltztoRyyyaltnx3KWgRPmuP5gJXIViMJM+xRWu9vkzgfhz9SVwn23BN9TSWKqw==","signatures":[{"sig":"MEQCIFBtx82pA+3kXL/Q6+cdSo+0tq75+ampkml/soF3cwv3AiAn1qBLNp4E2KvbpdJ6NEuA9dypHgiaI8sA5YU3B6EuKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85476},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js","require":"./dist/types.js"}},"gitHead":"af87ccb936983a6c7c3213ca6a5add4dc800dc5a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"repository":{"url":"git+https://github.com/felca/schemaValidation.git","type":"git"},"_npmVersion":"11.7.0","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema-local_2.3.1_1783378501687_0.24341209488925886","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"@felipe-lib/schema-local","version":"2.3.3","description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"import":"./dist/types.js","require":"./dist/types.js","types":"./dist/types.d.ts","default":"./dist/types.js"}},"scripts":{"build":"tsc","clean":"rm -rf dist","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["validacao","schema","validador","types","notification","result","pattern"],"author":{"name":"Felca"},"license":"MIT","engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/felca/schemaValidation.git"},"devDependencies":{"typescript":"^6.0.3"},"packageManager":"pnpm@10.20.0","gitHead":"972ff1c52dc315934343d94080214678225d7c0e","_id":"@felipe-lib/schema-local@2.3.3","bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"homepage":"https://github.com/felca/schemaValidation#readme","_nodeVersion":"24.11.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-mQ7ktleoPtgkIOOKF3hYTdxmBt689hPe5ElXtz6jByQxIjFSFqEhVWLkhAoY9KyPaMZa2bxvCASu6HjsVBb6lg==","shasum":"9944f097e257df1c319d7d6a906224ff8aaa1dbd","tarball":"https://registry.npmjs.org/@felipe-lib/schema-local/-/schema-local-2.3.3.tgz","fileCount":11,"unpackedSize":88358,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEiLjXYNxp4sQ3ZLnWy2nPa2Xq/T6bpo/lWLmE3bKdSoAiEA/lGimuD5HLNHOyYBxEWHa6bEJEaatJGpAqNnKtIq6EU="}]},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"directories":{},"maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/schema-local_2.3.3_1783388307399_0.615914714005257"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T15:05:09.411Z","modified":"2026-07-07T01:38:27.655Z","1.0.0":"2026-05-04T15:05:09.616Z","1.1.0":"2026-05-04T20:41:32.848Z","1.1.1":"2026-05-04T23:35:54.758Z","1.1.2":"2026-05-04T23:47:03.630Z","1.1.3":"2026-05-04T23:53:30.293Z","1.1.4":"2026-05-05T00:10:37.495Z","1.1.5":"2026-05-05T00:18:10.682Z","1.1.55":"2026-05-05T00:20:44.335Z","1.2.0":"2026-05-05T00:51:26.169Z","1.3.0":"2026-05-05T15:14:14.226Z","1.4.0":"2026-05-05T15:50:18.613Z","1.5.0":"2026-05-05T23:49:32.813Z","1.6.0":"2026-05-19T05:18:43.594Z","1.7.0":"2026-05-25T23:50:47.995Z","2.0.0":"2026-06-03T07:12:40.253Z","2.0.1":"2026-06-03T07:34:56.693Z","2.0.2":"2026-06-03T07:36:29.495Z","2.0.3":"2026-06-03T07:52:31.684Z","2.0.4":"2026-06-03T19:52:04.220Z","2.0.5":"2026-06-03T19:58:16.358Z","2.1.0":"2026-06-24T02:05:43.470Z","2.2.0":"2026-06-24T02:26:53.119Z","2.2.1":"2026-06-24T02:44:18.926Z","2.3.0":"2026-06-25T04:59:26.109Z","2.3.1":"2026-07-06T22:55:01.819Z","2.3.3":"2026-07-07T01:38:27.538Z"},"bugs":{"url":"https://github.com/felca/schemaValidation/issues"},"author":{"name":"Felca"},"license":"MIT","homepage":"https://github.com/felca/schemaValidation#readme","keywords":["validacao","schema","validador","types","notification","result","pattern"],"repository":{"type":"git","url":"git+https://github.com/felca/schemaValidation.git"},"description":"Biblioteca de validação simples, leve e agnóstica com NotificationPattern e ResultPattern para respostas padronizadas","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"readme":"# schemaValidation v2.3.3\n\nBiblioteca de validação simples, leve e agnóstica com **NotificationPattern** e **ResultPattern** para respostas padronizadas.\n\n---\n\n## Sumário\n\n- [Por que usar?](#por-que-usar)\n- [Modelo Mental](#modelo-mental)\n- [Quick Start](#quick-start)\n- [Conceitos Fundamentais](#conceitos-fundamentais)\n- [Guias Práticos](#guias-práticos)\n    - [Validar objetos aninhados](#validar-objetos-aninhados)\n    - [Validar com chamadas assíncronas](#validar-com-chamadas-assíncronas)\n    - [Validar arrays](#validar-arrays)\n    - [Criar regras reutilizáveis](#criar-regras-reutilizáveis)\n    - [Transformar dados antes de validar](#transformar-dados-antes-de-validar)\n    - [Validar condicionalmente](#validar-condicionalmente)\n    - [Parar no primeiro erro](#parar-no-primeiro-erro)\n    - [Combinar transform + condition + abortEarly](#combinar-transform--condition--abortearly)\n    - [Retry com backoff em validações](#retry-com-backoff-em-validações)\n    - [Criar padrões customizados](#criar-padrões-customizados)\n    - [Integrar com APIs REST](#integrar-com-apis-rest)\n    - [Passar contexto para as regras](#passar-contexto-para-as-regras)\n    - [Filtrar regras por groups, pick e omit](#filtrar-regras-por-groups-pick-e-omit)\n- [API Reference](#api-reference)\n- [Funcionalidades](#funcionalidades)\n- [Licença](#licença)\n\n---\n\n## Por que usar?\n\nValidar dados é uma das tarefas mais comuns em qualquer aplicação. A maioria das bibliotecas de validação ou é acoplada a um framework, ou força um schema declarativo com DSL própria, ou é pesada em dependências.\n\nO **schemaValidation** adota uma abordagem diferente:\n\n| Característica   | schemaValidation                | Outras libs                                |\n| ---------------- | ------------------------------- | ------------------------------------------ |\n| **Dependências** | Zero                            | Zod (~10), Joi (~15), class-validator (~5) |\n| **Estilo**       | Regras como funções puras       | DSL declarativa / decorators               |\n| **Acoplamento**  | Agnóstico (qualquer objeto)     | Muitas vezes acoplado a framework          |\n| **Padrões**      | Notification + Result + Command | Apenas validação                           |\n| **Tamanho**      | ~174 linhas de código           | Milhares de linhas                         |\n\n**Ideal para:**\n\n- APIs REST que precisam de respostas estruturadas com lista de erros\n- Validação de formulários, payloads, DTOs\n- Projetos que valorizam zero dependências\n- Quem prefere código imperativo/explícito a DSLs mágicas\n\n**Talvez não seja ideal se:**\n\n- Você precisa de type narrowing por schema (type inference da forma dos dados) — use Zod\n- Você precisa de parsing + validação em cadeia — use Zod\n\n---\n\n## Modelo Mental\n\nA biblioteca implementa três padrões de design que trabalham juntos:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                     SchemaValidator                         │\n│                                                             │\n│  execute(data, context, options?) ───────────────────────►  │\n│                                                             │\n│  Schema (Rule[])                                            │\n│  ┌─────────┐   ┌─────────┐   ┌─────────┐                   │\n│  │ Rule 1  │──►│ Rule 2  │──►│ Rule 3  │──► ...            │\n│  │         │   │         │   │         │                    │\n│  │ 1. transform (opcional)                                  │\n│  │ 2. condition (opcional)                                  │\n│  │ 3. runValidate                                           │\n│  └────┬────┘   └────┬────┘   └────┬────┘                   │\n│       │              │              │                        │\n│       ▼              ▼              ▼                        │\n│  ┌────────────────────────────────────┐                     │\n│  │     NotificationPattern[]          │                     │\n│  │  { key, error, description, ... }  │                     │\n│  └───────────────┬────────────────────┘                     │\n│                  ▼                                          │\n│  ┌────────────────────────────────────┐                     │\n│  │        ResultPattern<T>            │                     │\n│  │  { success, notification[], data } │                     │\n│  └────────────────────────────────────┘                     │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Os três padrões\n\n**Command Pattern** — `SchemaValidator` implementa `Command<T, R, C>`. Você instancia com um schema e chama `execute(data, context, options?)`. O terceiro parâmetro aceita `{ groups?, pick?, omit? }` para filtrar quais regras serão executadas. O validator encapsula toda a lógica de execução.\n\n**Notification Pattern** — Cada falha de validação gera uma `Notification` com `key` (campo), `error` (mensagem) e `description` (detalhe opcional). Todas as notificações são coletadas em um array.\n\n**Result Pattern** — O resultado final é um objeto com `success` (booleano), `notification` (array de notificações) e `data` (dados originais/transformados).\n\n### Ordem de execução dentro de cada Rule\n\n```\npara cada rule:\n  1. transform(data, context)      → modifica os dados (encadeado entre regras)\n  2. condition(data, context)      → se false, pula a regra\n  3. runValidate(data, context)    → executa a validação\n  4. se inválido → notificationMappers → adiciona ao array\n  ── se algum passo acima lançar erro ──\n  5. retry (opcional)              → loop com backoff (ver seção \"Retry\")\n```\n\n---\n\n## Quick Start\n\n### Instalação\n\n```bash\nnpm install @felipe-lib/schema-local\n```\n\n### Sua primeira validação\n\n```typescript\nimport { SchemaValidator } from \"@felipe-lib/schema-local\";\n\ninterface User {\n    name: string;\n    email: string;\n}\n\nconst validator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            runValidate: (data) => data.name.trim().length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n    ],\n});\n\nconst result = await validator.execute({\n    name: \"João\",\n    email: \"joao@email.com\",\n});\n\nconsole.log(result.success); // true\nconsole.log(result.notification); // []\nconsole.log(result.data); // { name: \"João\", email: \"joao@email.com\" }\n```\n\n**O que aconteceu aqui?**\n\n1. Criamos uma interface `User` com os campos a validar.\n2. Instanciamos `SchemaValidator<User>` passando um `schema` — array de regras.\n3. Cada regra tem `key` (nome do campo), `error` (mensagem de erro) e `runValidate` (função que retorna `true` se válido).\n4. Chamamos `execute(data)` e recebemos um `ResultPattern` com `success`, `notification` e `data`.\n5. Como o nome e o email eram válidos, `success` é `true` e `notification` está vazio.\n\n> **Nota:** Os mappers são opcionais — a biblioteca já fornece defaults que geram o `NotificationPattern` e `ResultPattern` padrão. Você só precisa customizá-los se quiser formatos diferentes (ex: resposta de API HTTP).\n\n### Adicionando mais regras\n\n```typescript\ninterface User {\n    name: string;\n    email: string;\n    age: number;\n}\n\nconst validator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            runValidate: (data) => data.name.trim().length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n        {\n            key: \"age\",\n            error: () => \"Idade deve ser maior que 0\",\n            description: () => \"Verifica se a idade é positiva\",\n            runValidate: (data) => data.age > 0,\n        },\n    ],\n});\n```\n\n### Lendo erros\n\n```typescript\nconst result = await validator.execute({\n    name: \"\",\n    email: \"invalido\",\n    age: -5,\n});\n\nif (!result.success) {\n    for (const err of result.notification) {\n        console.log(`${String(err.key)}: ${err.error}`);\n    }\n}\n// name: Nome é obrigatório\n// email: Email inválido\n// age: Idade deve ser maior que 0\n```\n\nPor padrão, **todas as regras são executadas** e **todos os erros são coletados** — você recebe uma lista completa do que está errado, não apenas o primeiro erro.\n\n---\n\n## Conceitos Fundamentais\n\n### Anatomia de uma Rule\n\n```typescript\ninterface Rule<T, C> {\n    key: keyof T; // campo que está sendo validado\n    error: (data: T, context?: C) => string; // mensagem de erro (pode ser dinâmica)\n    groups?: string[]; // grupos para filtrar execução (ver seção \"Filtrar regras\")\n    retry?: RetryType; // config de retry com backoff (ver seção \"Retry\")\n    transform?: (data: T, context?: C) => T | Promise<T>; // transforma dados antes da validação\n    condition?: (data: T, context?: C) => boolean | Promise<boolean>; // se false, regra é ignorada\n    runValidate(data: T, context?: C): boolean | Promise<boolean>; // lógica da validação\n    description?: (data: T, context?: C) => string; // descrição opcional (pode ser dinâmica)\n}\n```\n\nTodos os callbacks (`transform`, `condition`, `runValidate`, `error`, `description`) suportam tanto execução **síncrona** quanto **assíncrona** (retornando `Promise`). Todos recebem `(data, context)` — permitindo passar dependências externas como conexão de banco, request object, etc.\n\n### RetryType\n\nConfigura o loop de retry com backoff quando `transform`, `condition` ou `runValidate` lançarem um erro:\n\n```typescript\ninterface RetryType {\n    active: boolean;      // liga/desliga o retry\n    maxAttemps: number;   // delay inicial em ms (ex: 2000)\n    multiply?: number;    // multiplicador de backoff (ex: 2 → 2s, 4s, 8s)\n    maxRetries: number;   // número máximo de tentativas\n}\n```\n\n**Comportamento:** se `active` for `true` e qualquer etapa da pipeline lançar erro, o validador:\n1. Aguarda `maxAttemps` ms\n2. Restaura os dados ao estado original\n3. Reexecuta `transform` → `condition` → `runValidate`\n4. Se `condition` retornar `false` → break (regra ignorada com sucesso)\n5. Se `runValidate` retornar `true` → break (sucesso)\n6. Senão → multiplica o timeout (`timeout *= multiply`) e tenta novamente\n7. Após `maxRetries` tentativas sem sucesso, o loop termina e uma única notificação de erro é gerada\n\n### NotificationPattern\n\nEstrutura padronizada de notificação de erro:\n\n```typescript\ninterface NotificationPattern {\n    success: boolean; // sempre false para notificações de erro\n    key: string | number | symbol; // campo que falhou\n    error: string; // mensagem de erro\n    description?: string; // detalhamento opcional\n}\n```\n\n### ResultPattern\\<T\\>\n\nEstrutura padronizada do resultado:\n\n```typescript\ninterface ResultPattern<T> {\n    success: boolean; // true se nenhum erro\n    notification: NotificationPattern[]; // array de erros encontrados\n    data: T; // dados originais ou transformados\n}\n```\n\n### Mappers Customizados\n\nOs mappers traduzem a regra e os dados para os formatos de notificação e resultado. Use-os quando precisar de estruturas diferentes da padrão:\n\n```typescript\n// Mapper de notificação — transforma Rule + data + context em NotificationPattern\nnotificationMappers: (rule, data, context?) => ({\n    success: false,\n    key: rule.key,\n    error: rule.error(data, context),\n    description: rule.description?.(data, context),\n});\n\n// Mapper de resultado — transforma data + notificações em ResultPattern\nresultMappers: (data, notif) => ({\n    data,\n    notification: notif,\n    success: notif.length === 0,\n});\n```\n\nSe você **não fornecer mappers**, a biblioteca usa os defaults — que produzem exatamente as estruturas acima. Forneça mappers customizados apenas quando seu `NotificationPattern` ou `ResultPattern` tiverem campos extras.\n\n### Command\\<T, R, C\\>\n\nInterface que `SchemaValidator` implementa:\n\n```typescript\ninterface Command<\n    T extends object,\n    R extends object,\n    C extends object = {},\n> {\n    execute(data: T, context?: C, options?: OptionsCommand): Promise<R>;\n}\n```\n\nIsso permite tratar qualquer validador como um comando executável, facilitando integração com padrões como **Command Bus**, **Mediator** ou **Use Case**.\n\n---\n\n## Guias Práticos\n\n### Validar objetos aninhados\n\nComponha validators: crie um validador para o objeto interno e chame-o dentro da regra do objeto externo.\n\n```typescript\ninterface Address {\n    street: string;\n    zipCode: string;\n}\n\ninterface User {\n    name: string;\n    address: Address;\n}\n\nconst addressValidator = new SchemaValidator<Address>({\n    schema: [\n        {\n            key: \"street\",\n            error: () => \"Rua é obrigatória\",\n            runValidate: (data) => data.street.length > 0,\n        },\n        {\n            key: \"zipCode\",\n            error: () => \"CEP inválido\",\n            runValidate: (data) => /^\\d{5}-\\d{3}$/.test(data.zipCode),\n        },\n    ],\n});\n\nconst userValidator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            runValidate: (data) => data.name.trim().length > 0,\n        },\n        {\n            key: \"address\",\n            error: (data) => \"Endereço inválido\",\n            runValidate: async (data) => {\n                const result = await addressValidator.execute(data.address);\n                return result.success;\n            },\n        },\n    ],\n});\n```\n\n### Validar com chamadas assíncronas\n\n`runValidate` aceita funções assíncronas — ideal para verificar existência no banco, chamadas de API, etc.\n\n```typescript\ninterface LoginData {\n    email: string;\n    password: string;\n}\n\nconst loginValidator = new SchemaValidator<LoginData>({\n    schema: [\n        {\n            key: \"email\",\n            error: () => \"Email é obrigatório\",\n            runValidate: (data) => !!data.email,\n        },\n        {\n            key: \"password\",\n            error: () => \"Senha deve ter pelo menos 8 caracteres\",\n            runValidate: (data) => data.password.length >= 8,\n        },\n        {\n            key: \"email\",\n            error: () => \"Usuário não encontrado\",\n            description: () => \"Verifica se o email existe na base\",\n            runValidate: async (data) => {\n                const response = await fetch(\"/api/verify-user\", {\n                    method: \"POST\",\n                    body: JSON.stringify({ email: data.email }),\n                });\n                return response.ok;\n            },\n        },\n    ],\n});\n```\n\n### Validar arrays\n\nUse métodos como `every()`, `some()` ou `filter()` para validar cada item do array.\n\n```typescript\ninterface Product {\n    name: string;\n    price: number;\n}\n\ninterface Order {\n    items: Product[];\n}\n\nconst orderValidator = new SchemaValidator<Order>({\n    schema: [\n        {\n            key: \"items\",\n            error: () => \"Pedido vazio\",\n            runValidate: (data) => data.items.length > 0,\n        },\n        {\n            key: \"items\",\n            error: () => \"Produto sem nome\",\n            runValidate: (data) =>\n                data.items.every((item) => item.name.trim().length > 0),\n        },\n        {\n            key: \"items\",\n            error: () => \"Preço inválido\",\n            runValidate: (data) => data.items.every((item) => item.price > 0),\n        },\n    ],\n});\n```\n\n### Criar regras reutilizáveis\n\nEncapsule regras comuns em **factory functions** para evitar repetição.\n\n```typescript\ninterface User {\n    username: string;\n    email: string;\n    password: string;\n    confirmPassword: string;\n}\n\nconst isRequired = (field: keyof User, error: string) => ({\n    key: field,\n    error: () => error,\n    description: () => `Verifica se ${String(field)} foi fornecido`,\n    runValidate: (data: User) => {\n        const value = data[field];\n        return typeof value === \"string\" ? value.trim().length > 0 : !!value;\n    },\n});\n\nconst isEmail = (error: string) => ({\n    key: \"email\" as const,\n    error: () => error,\n    description: () => \"Valida formato do email\",\n    runValidate: (data: User) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n});\n\nconst minLength = (field: keyof User, min: number, error: string) => ({\n    key: field,\n    error: () => error,\n    description: () => `Mínimo de ${min} caracteres`,\n    runValidate: (data: User) => {\n        const value = data[field];\n        return typeof value === \"string\" ? value.length >= min : false;\n    },\n});\n\nconst passwordsMatch = {\n    key: \"confirmPassword\" as const,\n    error: () => \"Senhas não conferem\",\n    description: () => \"Confirmação deve ser igual à senha\",\n    runValidate: (data: User) => data.password === data.confirmPassword,\n};\n\nconst validator = new SchemaValidator<User>({\n    schema: [\n        isRequired(\"username\", \"Nome de usuário é obrigatório\"),\n        isEmail(\"Email inválido\"),\n        minLength(\"password\", 8, \"Senha deve ter pelo menos 8 caracteres\"),\n        passwordsMatch,\n    ],\n});\n```\n\n### Transformar dados antes de validar\n\nO campo `transform` modifica os dados antes da validação. O resultado é **encadeado** entre regras — cada regra recebe os dados já transformados pelas anteriores.\n\n```typescript\ninterface User {\n    name: string;\n    email: string;\n}\n\nconst validator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            transform: (data) => ({ ...data, name: data.name.trim() }),\n            runValidate: (data) => data.name.length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            transform: (data) => ({\n                ...data,\n                email: data.email.toLowerCase().trim(),\n            }),\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n    ],\n});\n\nconst result = await validator.execute({\n    name: \"  João  \",\n    email: \"  JOAO@EMAIL.COM  \",\n});\n\nconsole.log(result.data.name); // \"João\"\nconsole.log(result.data.email); // \"joao@email.com\"\n```\n\n**Transform assíncrono:**\n\n```typescript\nconst validator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"email\",\n            error: () => \"Email já cadastrado\",\n            transform: async (data) => {\n                const normalized = data.email.toLowerCase().trim();\n                return { ...data, email: normalized };\n            },\n            runValidate: async (data) => {\n                const response = await fetch(\n                    `/api/check-email?email=${data.email}`,\n                );\n                const { exists } = await response.json();\n                return !exists;\n            },\n        },\n    ],\n});\n```\n\n### Validar condicionalmente\n\nO campo `condition` determina se a regra deve ser executada. Se a condição retornar `false`, a regra é ignorada.\n\n```typescript\ninterface FormData {\n    type: \"individual\" | \"company\";\n    cpf: string;\n    cnpj: string;\n    companyName: string;\n}\n\nconst formValidator = new SchemaValidator<FormData>({\n    schema: [\n        {\n            key: \"type\",\n            error: () => \"Tipo inválido\",\n            runValidate: (data) =>\n                [\"individual\", \"company\"].includes(data.type),\n        },\n        {\n            key: \"cpf\",\n            error: () => \"CPF inválido\",\n            condition: (data) => data.type === \"individual\",\n            runValidate: (data) => /^\\d{11}$/.test(data.cpf),\n        },\n        {\n            key: \"cnpj\",\n            error: () => \"CNPJ inválido\",\n            condition: (data) => data.type === \"company\",\n            runValidate: (data) => /^\\d{14}$/.test(data.cnpj),\n        },\n        {\n            key: \"companyName\",\n            error: () => \"Razão social obrigatória\",\n            condition: (data) => data.type === \"company\",\n            runValidate: (data) => data.companyName.length > 0,\n        },\n    ],\n});\n```\n\n**Condition assíncrona:**\n\n```typescript\ninterface ProductForm {\n    categoryId: string;\n    discount: number;\n}\n\nconst validator = new SchemaValidator<ProductForm>({\n    schema: [\n        {\n            key: \"discount\",\n            error: () => \"Desconto inválido\",\n            condition: async (data) => {\n                const response = await fetch(\n                    `/api/categories/${data.categoryId}`,\n                );\n                const category = await response.json();\n                return category.allowDiscount;\n            },\n            runValidate: (data) => data.discount >= 0 && data.discount <= 100,\n        },\n    ],\n});\n```\n\n### Parar no primeiro erro\n\nCom `abortEarly: true`, a validação é interrompida assim que o primeiro erro é encontrado.\n\n```typescript\ninterface LoginData {\n    email: string;\n    password: string;\n}\n\nconst loginValidator = new SchemaValidator<LoginData>({\n    schema: [\n        {\n            key: \"email\",\n            error: () => \"Email é obrigatório\",\n            runValidate: (data) => data.email.trim().length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n        {\n            key: \"password\",\n            error: () => \"Senha é obrigatória\",\n            runValidate: (data) => data.password.length > 0,\n        },\n        {\n            key: \"password\",\n            error: () => \"Mínimo de 8 caracteres\",\n            runValidate: (data) => data.password.length >= 8,\n        },\n    ],\n    abortEarly: true,\n});\n\nconst result = await loginValidator.execute({\n    email: \"\",\n    password: \"123\",\n});\n\nconsole.log(result.notification.length); // 1 — apenas o primeiro erro\n```\n\n### Combinar transform + condition + abortEarly\n\nAs funcionalidades podem ser combinadas livremente. A ordem de execução dentro de cada regra segue o pipeline: **transform → condition → runValidate**.\n\n```typescript\ninterface OrderData {\n    total: number;\n    couponCode: string;\n    finalTotal: number;\n}\n\nconst orderValidator = new SchemaValidator<OrderData>({\n    schema: [\n        {\n            key: \"total\",\n            error: () => \"Total deve ser positivo\",\n            runValidate: (data) => data.total > 0,\n        },\n        {\n            key: \"couponCode\",\n            error: () => \"Cupom inválido\",\n            condition: (data) => data.couponCode.length > 0,\n            transform: async (data) => {\n                const response = await fetch(`/api/coupons/${data.couponCode}`);\n                const coupon = await response.json();\n                return {\n                    ...data,\n                    finalTotal: data.total * (1 - coupon.discount / 100),\n                };\n            },\n            runValidate: async (data) => {\n                const response = await fetch(`/api/coupons/${data.couponCode}`);\n                return response.ok;\n            },\n        },\n    ],\n    abortEarly: true,\n});\n\nconst result = await orderValidator.execute({\n    total: 200,\n    couponCode: \"BLACK20\",\n    finalTotal: 0,\n});\n\nconsole.log(result.data.finalTotal); // 160 (200 - 20%)\n```\n\n### Retry com backoff em validações\n\nSe `transform`, `condition` ou `runValidate` lançarem um erro (ex: falha de rede, timeout), você pode configurar um **loop de retry** com backoff exponencial usando o campo `retry`.\n\n```typescript\ninterface PaymentData {\n    transactionId: string;\n    amount: number;\n}\n\nconst validator = new SchemaValidator<PaymentData>({\n    schema: [\n        {\n            key: \"transactionId\",\n            error: () => \"Falha na confirmação do pagamento\",\n            runValidate: async (data) => {\n                const response = await fetch(\n                    `/api/transactions/${data.transactionId}`,\n                );\n                return response.ok;\n            },\n            retry: {\n                active: true,\n                maxRetries: 3,\n                maxAttemps: 1000,\n                multiply: 2,\n            },\n        },\n    ],\n});\n```\n\n**Como funciona:**\n\n1. Se `transform`, `condition` ou `runValidate` lançarem erro, o validador entra no loop de retry\n2. Cada tentativa espera `maxAttemps` ms (com backoff multiplicativo se `multiply` estiver definido)\n3. A cada retry os dados são restaurados ao estado original e toda pipeline é reexecutada\n4. Se `condition` retornar `false` → a regra é ignorada (break silencioso)\n5. Se `runValidate` retornar `true` → sucesso, sai do loop\n6. Se todas as tentativas falharem → uma única notificação de erro é gerada\n\n**Exemplo com backoff:** `maxAttemps: 1000, multiply: 2, maxRetries: 3`\n\n```\n1ª tentativa: falhou → espera 1s\n2ª tentativa: falhou → espera 2s\n3ª tentativa: falhou → espera 4s → notificação final\n```\n\n### Criar padrões customizados\n\nQuando os mappers padrão não bastam, você pode estender `NotificationPattern` e `ResultPattern` com campos específicos do seu domínio.\n\n**Notification customizado com tipo de erro:**\n\n```typescript\ninterface CustomNotification {\n    success: boolean;\n    key: string | number | symbol;\n    error: string;\n    field: string;\n    message: string;\n    type: \"error\" | \"warning\";\n}\n\ninterface CustomResult<T> {\n    success: boolean;\n    notification: CustomNotification[];\n    isValid: boolean;\n    errors: CustomNotification[];\n    data: T;\n}\n\ninterface User {\n    name: string;\n    email: string;\n}\n\nconst validator = new SchemaValidator<\n    User,\n    CustomNotification,\n    CustomResult<User>\n>({\n    schema: [\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n    ],\n    notificationMappers: (rule, data) => ({\n        success: false,\n        key: rule.key,\n        error: rule.error(data),\n        field: String(rule.key),\n        message: rule.error(data),\n        type: \"error\" as const,\n    }),\n    resultMappers: (data, notif) => ({\n        success: notif.length === 0,\n        notification: notif,\n        isValid: notif.length === 0,\n        errors: notif,\n        data,\n    }),\n});\n\nconst result = await validator.execute({\n    name: \"João\",\n    email: \"invalido\",\n});\n\nconsole.log(result.isValid); // false\nconsole.log(result.errors[0].field); // \"email\"\nconsole.log(result.errors[0].type); // \"error\"\n```\n\n### Integrar com APIs REST\n\nUse mappers customizados para gerar respostas no formato que sua API espera.\n\n```typescript\ninterface ApiResponse<T> {\n    status: number;\n    message: string;\n    payload?: T;\n    errors: { field: string; reason: string }[];\n}\n\ninterface ApiNotification {\n    success: boolean;\n    key: string | number | symbol;\n    error: string;\n    field: string;\n    message: string;\n}\n\ninterface User {\n    name: string;\n    email: string;\n}\n\nconst apiValidator = new SchemaValidator<\n    User,\n    ApiNotification,\n    ApiResponse<User>\n>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            runValidate: (data) => data.name.trim().length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n    ],\n    notificationMappers: (rule, data) => ({\n        success: false,\n        key: rule.key,\n        error: rule.error(data),\n        field: String(rule.key),\n        message: rule.error(data),\n    }),\n    resultMappers: (data, notif) => ({\n        success: notif.length === 0,\n        notification: notif as NotificationPattern[],\n        data,\n        status: notif.length === 0 ? 200 : 400,\n        message: notif.length === 0 ? \"OK\" : \"Erro de validação\",\n        payload: notif.length === 0 ? data : undefined,\n        errors: notif.map((n) => ({\n            field: n.field,\n            reason: n.message,\n        })),\n    }),\n});\n\nconst result = await apiValidator.execute({\n    name: \"João\",\n    email: \"joao@email.com\",\n});\n\n// result.status === 200\n// result.errors === []\n// Uso em um controller Express/Fastify:\n// res.status(result.status).json(result);\n```\n\n---\n\n### Passar contexto para as regras\n\nO parâmetro genérico `C` permite passar um objeto de contexto (`context`) que fica disponível em todos os callbacks das regras. Isso é útil para injetar dependências como conexão de banco, objetos de request, ou qualquer dado externo.\n\n```typescript\ninterface DatabaseCtx {\n    db: DatabaseConnection;\n    userId: string;\n}\n\ninterface User {\n    email: string;\n}\n\nconst validator = new SchemaValidator<\n    User,\n    NotificationPattern,\n    ResultPattern<User>,\n    DatabaseCtx\n>({\n    schema: [\n        {\n            key: \"email\",\n            error: (data, ctx) =>\n                `Email já cadastrado para o usuário ${ctx.userId}`,\n            description: (data, ctx) =>\n                `Verifica unicidade do email no tenant ${ctx.userId}`,\n            runValidate: async (data, ctx) => {\n                const exists = await ctx.db.findByEmail(data.email);\n                return !exists;\n            },\n        },\n    ],\n});\n\nconst db = await connectToDatabase();\nconst result = await validator.execute(\n    { email: \"teste@email.com\" },\n    { db, userId: \"usr_123\" },\n);\n```\n\nPor padrão, `C = {}` — se você não passa contexto, o TypeScript não exige o segundo argumento no `execute()` e os callbacks recebem `{}` como `context`.\n\n---\n\n### Filtrar regras por groups, pick e omit\n\nO terceiro parâmetro do `execute` permite filtrar quais regras serão executadas sem modificar o schema original.\n\n**groups:** execute apenas regras que pertençam a determinados grupos.\n\n```typescript\ninterface User {\n    name: string;\n    email: string;\n    password: string;\n}\n\nconst validator = new SchemaValidator<User>({\n    schema: [\n        {\n            key: \"name\",\n            error: () => \"Nome é obrigatório\",\n            groups: [\"create\", \"update\"],\n            runValidate: (data) => data.name.trim().length > 0,\n        },\n        {\n            key: \"email\",\n            error: () => \"Email inválido\",\n            groups: [\"create\", \"update\"],\n            runValidate: (data) =>\n                /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(data.email),\n        },\n        {\n            key: \"password\",\n            error: () => \"Mínimo de 8 caracteres\",\n            groups: [\"create\"],\n            runValidate: (data) => data.password.length >= 8,\n        },\n    ],\n});\n\n// Apenas regras do grupo \"create\"\nconst result = await validator.execute(data, {}, { groups: [\"create\"] });\n```\n\n**pick:** execute apenas regras cujo `key` **ou** `groups` corresponda à lista.\n\n```typescript\n// Por campo\nconst result = await validator.execute(data, {}, { pick: [\"name\", \"email\"] });\n\n// Por grupo\nconst result = await validator.execute(data, {}, { pick: [\"admin\", \"audit\"] });\n```\n\n**omit:** execute todas as regras exceto as cujo `key` **ou** `groups` corresponda à lista.\n\n```typescript\n// Por campo\nconst result = await validator.execute(data, {}, { omit: [\"password\"] });\n\n// Por grupo\nconst result = await validator.execute(data, {}, { omit: [\"admin\"] });\n```\n\nRegras que **não possuem `groups`** são executadas independentemente do filtro de grupos. Os filtros podem ser combinados: `{ groups: [\"create\"], pick: [\"name\", \"email\"] }`. Tanto `pick` quanto `omit` verificam **simultaneamente** `rule.key` e `rule.groups` — se qualquer um dos dois corresponder, a regra é incluída (pick) ou excluída (omit).\n\n---\n\n## API Reference\n\n### `SchemaValidator<T, N, R, C>`\n\nClasse principal. Implementa `Command<T, R, C>`.\n\n| Parâmetro genérico              | Default               | Descrição                                           |\n| ------------------------------- | --------------------- | --------------------------------------------------- |\n| `T extends object`              | —                     | Tipo do objeto a ser validado                       |\n| `N extends NotificationPattern` | `NotificationPattern` | Tipo da notificação de erro                         |\n| `R extends ResultPattern<T>`    | `ResultPattern<T>`    | Tipo do resultado                                   |\n| `C extends object`              | `{}`                  | Contexto passado para todos os callbacks das regras |\n\n**Construtor:**\n\n```typescript\nnew SchemaValidator<T, N, R, C>({\n  schema: Rule<T, C>[];\n  notificationMappers?: (rule: Rule<T, C>, data: T, context?: C) => N;\n  resultMappers?: (data: T, notif: N[]) => R;\n  abortEarly?: boolean;\n})\n```\n\n| Opção                 | Obrigatório | Padrão        | Descrição                               |\n| --------------------- | ----------- | ------------- | --------------------------------------- |\n| `schema`              | Sim         | —             | Array de regras de validação            |\n| `notificationMappers` | Não         | mapper padrão | Customiza como notificações são geradas |\n| `resultMappers`       | Não         | mapper padrão | Customiza como o resultado é montado    |\n| `abortEarly`          | Não         | `false`       | Se `true`, para no primeiro erro        |\n\n**Métodos:**\n\n| Método                                                      | Retorno      | Descrição                                                     |\n| ----------------------------------------------------------- | ------------ | ------------------------------------------------------------- |\n| `execute(data: T, context?: C, options?: OptionsCommand)`    | `Promise<R>` | Executa as regras (com filtro opcional) e retorna o resultado |\n| `validation(data: T, context?: C, options?: OptionsCommand)` | `Promise<R>` | Alias interno — mesmo comportamento de `execute`              |\n\n### Tipos exportados\n\n```typescript\nimport type {\n    NotificationPattern,\n    ResultPattern,\n    Rule,\n    Command,\n    OptionsCommand,\n    RetryType,\n} from \"@felipe-lib/schema-local/types\";\n```\n\n#### `Rule<T, C>`\n\n```typescript\ninterface Rule<T, C> {\n    key: keyof T;\n    error: (data: T, context?: C) => string;\n    groups?: string[];\n    retry?: RetryType;\n    transform?: (data: T, context?: C) => T | Promise<T>;\n    condition?: (data: T, context?: C) => boolean | Promise<boolean>;\n    runValidate(data: T, context?: C): boolean | Promise<boolean>;\n    description?: (data: T, context?: C) => string;\n}\n```\n\n#### `RetryType`\n\n```typescript\ninterface RetryType {\n    active: boolean;\n    maxAttemps: number;\n    multiply?: number;\n    maxRetries: number;\n}\n```\n\n#### `NotificationPattern`\n\n```typescript\ninterface NotificationPattern {\n    success: boolean;\n    key: string | number | symbol;\n    error: string;\n    description?: string;\n}\n```\n\n#### `ResultPattern<T>`\n\n```typescript\ninterface ResultPattern<T> {\n    success: boolean;\n    notification: NotificationPattern[];\n    data: T;\n}\n```\n\n#### `Command<T, R, C>`\n\n```typescript\ninterface Command<\n    T extends object,\n    R extends object,\n    C extends object = {},\n> {\n    execute(data: T, context?: C, options?: OptionsCommand): Promise<R>;\n}\n\ninterface OptionsCommand {\n    groups?: string[];\n    pick?: string[];\n    omit?: string[];\n}\n```\n\n---\n\n## Funcionalidades\n\n- **Zero dependências** — não requer bibliotecas externas\n- **NotificationPattern** — notificações de erro padronizadas\n- **ResultPattern** — resultado padronizado com `success`, `notification[]` e `data`\n- **Mappers customizáveis** — personalize os formatos de notificação e resultado\n- **Suporte sync/async** — todos os callbacks aceitam funções síncronas e assíncronas\n- **`transform`** — modifique os dados antes da validação (encadeado entre regras)\n- **`condition`** — execute regras apenas quando uma condição for atendida\n- **`abortEarly`** — interrompa no primeiro erro\n- **`retry`** — backoff automático com repetição em caso de falha\n- **Validação contínua** — execute todas as regras e colete todos os erros (padrão)\n- **Totalmente tipado** — TypeScript nativo com genéricos\n- **Command Pattern** — interface `Command<T, R>` para integração com Command Bus / Mediator\n- **Filtro por `groups`, `pick` e `omit`** — execute apenas regras específicas sem modificar o schema\n- **Agnóstico** — funciona com qualquer formato de objeto\n\n---\n\n## Licença\n\nMIT © Felca\n","readmeFilename":"README.md"}