{"_id":"@bernierllc/validators-schema-shape","_rev":"7-d4ea3b4d229442ca8c8b07818ab4beb1","name":"@bernierllc/validators-schema-shape","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/validators-schema-shape","version":"1.0.0","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"72e4630cb5fba2535764d81fa22a04b76f38c935","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.0.0.tgz","fileCount":18,"integrity":"sha512-0QCc4KdCPGS/u/0/T5nw4ISHP6E4up53PMouiPt3qX1zYiKpU+pRr/vAL+XkZnY+zweTrpNfrhe4VBVIvlBKnQ==","signatures":[{"sig":"MEUCIEt0VV+qc0KbWP2y0Sr5Jnj9tTTaqr8dZSkF0LjUpEHCAiEAnyKMgoYiwmfh7vNsFtB6k9Rf/D8K7LtlaMw33XDKV54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52619},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f184001df6da605bb9584b5f5bc17a1b93ee29f4","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"11.4.2","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.0.0_1760037598910_0.1600208151664395","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-schema-shape","version":"1.2.0","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"fda42366420653ce350fbfa4355abbff1aac9f6b","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.2.0.tgz","fileCount":18,"integrity":"sha512-fg/UhwSZaCPZfItq/8RLxUkCy/5EzDIjrc3KbtMzhfK/ua6huZgPrXQyW6wSLovs+hkrjuCyyDN3aS4IoRETaQ==","signatures":[{"sig":"MEUCIQDNsUWR/AcH8wsti6eKjMiZ3pXLbiAeFxUis0zBSya0IgIgChHOPqIUV1tcZp9TcKICzlxMyPvTzTwGFnqo+dYqnz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52722},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.2.0_1767642373956_0.733606277981085","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-schema-shape","version":"1.2.1","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"fc9f6968a16ed19083f45ab7f93e292a9823aece","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.2.1.tgz","fileCount":18,"integrity":"sha512-dGniC9gprPadm883rhyycs+X4CH2X1cKHB1Ri9LKWjIR7mpNfw1b8IPcikkeEJOZBnwQD5rey2gKtfbRDkNNOA==","signatures":[{"sig":"MEYCIQDjTLLKVjnKI6PegiD2rkSOlMDagjVKKGpRsSgZpn9DDgIhAKBkqKbO07k2sQPdt4P2pc1SrpkoseVybhzxxvSNPLXj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52664},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-schema-shape-1.2.1.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"_resolved":"/tmp/6860a615fd816725c3d5a53c84853925/bernierllc-validators-schema-shape-1.2.1.tgz","_integrity":"sha512-dGniC9gprPadm883rhyycs+X4CH2X1cKHB1Ri9LKWjIR7mpNfw1b8IPcikkeEJOZBnwQD5rey2gKtfbRDkNNOA==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"11.11.0","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.2.1_1773078323294_0.13846611161818867","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-schema-shape","version":"1.2.2","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"42df05d1a1c9f7654bcfdf1113f5d0face4fa81f","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.2.2.tgz","fileCount":18,"integrity":"sha512-+xTkzuZTe9FzC59v9UgfpQbEU0P1zDshr86My8ydO4SpD8YuGIIY4xT6NjLUWQHnFpdiWPGhLAnNad59q01S7Q==","signatures":[{"sig":"MEUCIHMK752w0GAzI9lemnxMkzVQvGOs2H/PMagP69hdQxxNAiEA+0MlrLBkkX7iREiBogYc3GvVVIzmqrgdwsYHcEZaTqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52664},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-schema-shape-1.2.2.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-schema-shape/bernierllc-validators-schema-shape-1.2.2.tgz","_integrity":"sha512-+xTkzuZTe9FzC59v9UgfpQbEU0P1zDshr86My8ydO4SpD8YuGIIY4xT6NjLUWQHnFpdiWPGhLAnNad59q01S7Q==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"11.11.0","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.2.2_1773163981070_0.18354067583065992","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-schema-shape","version":"1.3.0","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"0efc732f3cfaac7c41f620cc942b639312bf8bc1","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.3.0.tgz","fileCount":18,"integrity":"sha512-h36vShwZBspXXBJefEbAuwcCFeQ4s32iT0o/a+ZWGQGHmz8XHJJb/Otb0Yccun6uXdJ8kQPN48VbTRskMij7Ug==","signatures":[{"sig":"MEUCICfwjk02hKwh3iCFTmj4XwHJyc5dhLD5N+CEzuh35SGGAiEAq2d+oQKCMwD5hdFGMli5Ysl6TbDR4JblOTMEWYJdqlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52664},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-schema-shape-1.3.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-schema-shape/bernierllc-validators-schema-shape-1.3.0.tgz","_integrity":"sha512-h36vShwZBspXXBJefEbAuwcCFeQ4s32iT0o/a+ZWGQGHmz8XHJJb/Otb0Yccun6uXdJ8kQPN48VbTRskMij7Ug==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"11.14.1","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.3.0_1779242216868_0.40327958151084853","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-schema-shape","version":"1.4.0","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-schema-shape@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/BernierLLC/tools#readme","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"dist":{"shasum":"1f1531f8282b9e6fa4736952be5ec8c02e88ea52","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.4.0.tgz","fileCount":18,"integrity":"sha512-2o5AFaZx2k3OBZiLUMekHmZP/5D2PpsxdrpDPL7VgARh2cQnnXEQAeYK2fAllhonvuUyaTKkycg0wqiKBYNzGg==","signatures":[{"sig":"MEUCIAQ+0cgJsxalVeoP31ip+Yw/mnna4D8zU8s6Pw8II3yOAiEAx2ZPBFia/dP69sK4yJCy6mGMn+9iEldz8g+RNohDu5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52664},"main":"./dist/index.js","type":"module","_from":"file:bernierllc-validators-schema-shape-1.4.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","typecheck":"tsc --noEmit","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-schema-shape/bernierllc-validators-schema-shape-1.4.0.tgz","_integrity":"sha512-2o5AFaZx2k3OBZiLUMekHmZP/5D2PpsxdrpDPL7VgARh2cQnnXEQAeYK2fAllhonvuUyaTKkycg0wqiKBYNzGg==","repository":{"url":"git+https://github.com/BernierLLC/tools.git","type":"git","directory":"packages/validators/validators-schema-shape"},"_npmVersion":"11.14.1","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.40.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-schema-shape_1.4.0_1779250972133_0.6971899404620103","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-schema-shape","version":"1.6.0","description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.40.0","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/validators/validators-schema-shape"},"scripts":{"build":"tsc","clean":"rm -rf dist","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","typecheck":"tsc --noEmit"},"_id":"@bernierllc/validators-schema-shape@1.6.0","bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"homepage":"https://github.com/BernierLLC/tools#readme","_integrity":"sha512-LZ8oFKLcTm42BJDt0aIKccG1k7pEoaY9u/7o9el8xoZot6cqXIOVL4iIXy4R1oW/4BQ9PTSRajtFN6JhQMbqUQ==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-schema-shape/bernierllc-validators-schema-shape-1.6.0.tgz","_from":"file:bernierllc-validators-schema-shape-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-LZ8oFKLcTm42BJDt0aIKccG1k7pEoaY9u/7o9el8xoZot6cqXIOVL4iIXy4R1oW/4BQ9PTSRajtFN6JhQMbqUQ==","shasum":"943ad10eee9b74e0d5788d6fcaaae811806c30f1","tarball":"https://registry.npmjs.org/@bernierllc/validators-schema-shape/-/validators-schema-shape-1.6.0.tgz","fileCount":20,"unpackedSize":54204,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5JU5xPJKTeU9tBS2PLJNIcUUxJbAFBQQHQzCmYekTygIga2AsxPm+LQujFqg/33pD7j6mj+QX6dQ6NCIaYZen8uY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a10157b-d73b-4b71-b0f2-eaaae7f3d3d2"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-schema-shape_1.6.0_1779252259121_0.7093746882227365"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-09T19:19:58.824Z","modified":"2026-05-20T04:44:19.421Z","1.0.0":"2025-10-09T19:19:59.122Z","1.2.0":"2026-01-05T19:46:14.088Z","1.2.1":"2026-03-09T17:45:23.454Z","1.2.2":"2026-03-10T17:33:01.215Z","1.3.0":"2026-05-20T01:56:57.060Z","1.4.0":"2026-05-20T04:22:52.293Z","1.6.0":"2026-05-20T04:44:19.270Z"},"bugs":{"url":"https://github.com/BernierLLC/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/BernierLLC/tools#readme","keywords":["validator","schema","validation","type-checking","primitive","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/BernierLLC/tools.git","directory":"packages/validators/validators-schema-shape"},"description":"Primitive validator for schema shape validation - required fields, types, enums, constraints","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-schema-shape\n\nPrimitive validator for schema shape validation - validates data against schema definitions including required fields, type checking, enum values, constraints, and patterns.\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-schema-shape\n```\n\n## Usage\n\n### Basic Validation\n\n```typescript\nimport { validateSchema, type Schema } from '@bernierllc/validators-schema-shape';\n\n// Define a schema\nconst schema: Schema = {\n  properties: {\n    name: { type: 'string', required: true, min: 2, max: 50 },\n    email: { type: 'string', required: true, pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/ },\n    age: { type: 'number', min: 18, max: 120 },\n    role: { type: 'string', enum: ['admin', 'user', 'guest'] },\n    tags: { type: 'array', min: 1, max: 10, items: { type: 'string' } },\n  },\n  required: ['name', 'email'],\n};\n\n// Validate data\nconst data = {\n  name: 'John Doe',\n  email: 'john@example.com',\n  age: 30,\n  role: 'user',\n  tags: ['developer', 'typescript'],\n};\n\nconst problems = await validateSchema(data, schema);\n\nif (problems.length === 0) {\n  console.log('Data is valid!');\n} else {\n  problems.forEach(problem => {\n    console.error(`${problem.severity}: ${problem.message}`);\n  });\n}\n```\n\n### Quick Validation\n\n```typescript\nimport { isValidSchema } from '@bernierllc/validators-schema-shape';\n\nconst schema = {\n  properties: {\n    username: { type: 'string', required: true },\n    password: { type: 'string', required: true, min: 8 },\n  },\n};\n\nconst isValid = await isValidSchema({ username: 'john', password: 'secret123' }, schema);\nconsole.log(isValid ? 'Valid' : 'Invalid');\n```\n\n### Detailed Validation\n\n```typescript\nimport { validateSchemaDetailed } from '@bernierllc/validators-schema-shape';\n\nconst result = await validateSchemaDetailed(data, schema);\n\nconsole.log('Success:', result.success);\nconsole.log('Total problems:', result.problems.length);\nconsole.log('Errors:', result.errors.length);\nconsole.log('Warnings:', result.warnings.length);\n```\n\n## Schema Definition\n\n### Field Types\n\nSupported field types:\n- `'string'` - String values\n- `'number'` - Numeric values\n- `'boolean'` - Boolean values\n- `'object'` - Object values\n- `'array'` - Array values\n- `'null'` - Null values\n- `'any'` - Any type (no validation)\n- Multiple types: `['string', 'number']` - Value can be any of the specified types\n\n### Field Properties\n\n```typescript\ninterface SchemaField {\n  type: SchemaFieldType | SchemaFieldType[];\n  required?: boolean;           // Field is required\n  enum?: unknown[];            // Allowed enum values\n  min?: number;                // Min value/length\n  max?: number;                // Max value/length\n  pattern?: string | RegExp;   // Pattern to match (strings only)\n  properties?: Record<string, SchemaField>; // Nested object schema\n  items?: SchemaField;         // Array item schema\n  message?: string;            // Custom error message\n}\n```\n\n### Validation Options\n\n```typescript\ninterface SchemaShapeOptions {\n  checkRequired?: boolean;              // Check required fields (default: true)\n  checkTypes?: boolean;                 // Check type constraints (default: true)\n  checkEnums?: boolean;                 // Check enum values (default: true)\n  checkConstraints?: boolean;           // Check min/max constraints (default: true)\n  checkPatterns?: boolean;              // Check string patterns (default: true)\n  checkArrayLength?: boolean;           // Check array lengths (default: true)\n  allowAdditionalProperties?: boolean;  // Allow extra properties (default: true)\n  checkNested?: boolean;                // Check nested objects (default: true)\n}\n```\n\n## Examples\n\n### Required Fields\n\n```typescript\nconst schema = {\n  properties: {\n    username: { type: 'string', required: true },\n    email: { type: 'string', required: true },\n  },\n  required: ['username'], // Schema-level required\n};\n\n// Missing required field\nconst problems = await validateSchema({ email: 'test@example.com' }, schema);\n// Error: Missing required field: \"username\"\n```\n\n### Type Checking\n\n```typescript\nconst schema = {\n  properties: {\n    age: { type: 'number' },\n    active: { type: 'boolean' },\n    tags: { type: 'array' },\n  },\n};\n\nconst problems = await validateSchema({\n  age: '25',        // Error: expected number, got string\n  active: 'true',   // Error: expected boolean, got string\n  tags: 'a,b,c',    // Error: expected array, got string\n}, schema);\n```\n\n### Multiple Types\n\n```typescript\nconst schema = {\n  properties: {\n    value: { type: ['string', 'number', 'null'] },\n  },\n};\n\nawait validateSchema({ value: 'text' }, schema);  // Valid\nawait validateSchema({ value: 123 }, schema);     // Valid\nawait validateSchema({ value: null }, schema);    // Valid\nawait validateSchema({ value: true }, schema);    // Error: expected string | number | null, got boolean\n```\n\n### Enum Values\n\n```typescript\nconst schema = {\n  properties: {\n    status: { type: 'string', enum: ['active', 'inactive', 'pending'] },\n    priority: { type: 'number', enum: [1, 2, 3] },\n  },\n};\n\nconst problems = await validateSchema({\n  status: 'deleted',  // Error: must be one of ['active', 'inactive', 'pending']\n  priority: 5,        // Error: must be one of [1, 2, 3]\n}, schema);\n```\n\n### Constraints (Min/Max)\n\n```typescript\nconst schema = {\n  properties: {\n    age: { type: 'number', min: 0, max: 150 },\n    username: { type: 'string', min: 3, max: 20 },\n    tags: { type: 'array', min: 1, max: 10 },\n  },\n};\n\nconst problems = await validateSchema({\n  age: -5,            // Error: less than minimum 0\n  username: 'ab',     // Error: length less than minimum 3\n  tags: [],           // Error: array length less than minimum 1\n}, schema);\n```\n\n### String Patterns\n\n```typescript\nconst schema = {\n  properties: {\n    email: {\n      type: 'string',\n      pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n    },\n    phone: {\n      type: 'string',\n      pattern: '^\\\\d{3}-\\\\d{3}-\\\\d{4}$'\n    },\n    zipCode: {\n      type: 'string',\n      pattern: /^\\d{5}(-\\d{4})?$/,\n    },\n  },\n};\n\nconst problems = await validateSchema({\n  email: 'invalid-email',    // Error: does not match pattern\n  phone: '1234567890',       // Error: does not match pattern\n  zipCode: 'ABCDE',          // Error: does not match pattern\n}, schema);\n```\n\n### Array Item Types\n\n```typescript\nconst schema = {\n  properties: {\n    scores: {\n      type: 'array',\n      items: { type: 'number', min: 0, max: 100 },\n    },\n    tags: {\n      type: 'array',\n      items: { type: 'string', min: 1 },\n    },\n  },\n};\n\nconst problems = await validateSchema({\n  scores: [85, 90, '95'],  // Error: array item at index 2 has invalid type\n  tags: ['valid', ''],     // Error: array item at index 1 has invalid length\n}, schema);\n```\n\n### Nested Objects\n\n```typescript\nconst schema = {\n  properties: {\n    user: {\n      type: 'object',\n      properties: {\n        name: { type: 'string', required: true },\n        email: { type: 'string', pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/ },\n        address: {\n          type: 'object',\n          properties: {\n            street: { type: 'string', required: true },\n            city: { type: 'string', required: true },\n            zipCode: { type: 'string', pattern: /^\\d{5}$/ },\n          },\n        },\n      },\n    },\n  },\n};\n\nconst problems = await validateSchema({\n  user: {\n    email: 'invalid',\n    address: {\n      street: '123 Main St',\n      // Missing city\n    },\n  },\n}, schema);\n// Errors: missing name, invalid email, missing city\n```\n\n### Additional Properties\n\n```typescript\n// Allow additional properties (default)\nconst schema1 = {\n  properties: {\n    name: { type: 'string' },\n  },\n};\n\nawait validateSchema({ name: 'John', age: 30 }, schema1);  // Valid\n\n// Disallow additional properties\nconst schema2 = {\n  properties: {\n    name: { type: 'string' },\n  },\n  additionalProperties: false,\n};\n\nconst problems = await validateSchema(\n  { name: 'John', age: 30 },\n  schema2,\n  { allowAdditionalProperties: false }\n);\n// Error: Additional property \"age\" is not allowed\n```\n\n### Custom Error Messages\n\n```typescript\nconst schema = {\n  properties: {\n    email: {\n      type: 'string',\n      required: true,\n      pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n      message: 'Please provide a valid email address in the format user@domain.com',\n    },\n    age: {\n      type: 'number',\n      min: 18,\n      message: 'You must be at least 18 years old to register',\n    },\n  },\n};\n\nconst problems = await validateSchema({ email: 'invalid', age: 16 }, schema);\n// Custom messages appear in suggestions\n```\n\n## API Reference\n\n### `validateSchema(data, schema, options?, utils?)`\n\nValidates data against a schema definition.\n\n**Parameters:**\n- `data: unknown` - Data to validate\n- `schema: Schema` - Schema definition\n- `options?: SchemaShapeOptions` - Validation options (optional)\n- `utils?: SharedUtils` - Shared utilities (optional)\n\n**Returns:** `Promise<Problem[]>` - Array of validation problems\n\n### `isValidSchema(data, schema, options?)`\n\nChecks if data is valid according to schema (only checks errors, ignores warnings).\n\n**Parameters:**\n- `data: unknown` - Data to validate\n- `schema: Schema` - Schema definition\n- `options?: SchemaShapeOptions` - Validation options (optional)\n\n**Returns:** `Promise<boolean>` - True if valid, false otherwise\n\n### `validateSchemaDetailed(data, schema, options?)`\n\nValidates data with detailed result including success flag and separated errors/warnings.\n\n**Parameters:**\n- `data: unknown` - Data to validate\n- `schema: Schema` - Schema definition\n- `options?: SchemaShapeOptions` - Validation options (optional)\n\n**Returns:** `Promise<{ success: boolean; problems: Problem[]; errors: Problem[]; warnings: Problem[] }>`\n\n### Individual Rules\n\nAll rules can be imported individually:\n\n```typescript\nimport {\n  requiredFieldsRule,\n  typeCheckingRule,\n  enumValidationRule,\n  constraintsRule,\n  patternValidationRule,\n  additionalPropertiesRule,\n} from '@bernierllc/validators-schema-shape';\n```\n\n### Primitive Validator\n\nThe composed primitive validator:\n\n```typescript\nimport { schemaShapeValidator } from '@bernierllc/validators-schema-shape';\n\nconsole.log(schemaShapeValidator.name);    // 'schema-shape'\nconsole.log(schemaShapeValidator.domain);  // 'schema'\nconsole.log(schemaShapeValidator.rules);   // Array of all rules\n```\n\n## Integration Status\n\n- **Logger**: not-applicable - Pure validation function with no logging requirements\n- **Docs-Suite**: ready - Full TypeDoc documentation with markdown README\n- **NeverHub**: not-applicable - Primitive validator with no service dependencies\n\n## Performance\n\nThis validator is optimized for performance:\n- Minimal dependencies (@bernierllc/validators-core only)\n- Pure functions with no side effects\n- Early returns for invalid data\n- Efficient type checking and pattern matching\n- Suitable for real-time validation in forms and APIs\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the package\nnpm run build\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run linter\nnpm run lint\n\n# Type check\nnpm run typecheck\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## See Also\n\n- [@bernierllc/validators-core](../validators-core) - Core validation infrastructure\n- [@bernierllc/validators-runner](../validators-runner) - Validation runner for executing validators\n- [@bernierllc/validators-reporters](../validators-reporters) - Reporting utilities for validation results\n","readmeFilename":"README.md"}