Sample
jest-validate 29.7.0: ValidationError
Verified sample for npm jest-validate 29.7.0: ValidationError. The contract ran on node 22 · linux alpine/x64 · docker and passed.
sha256:9a5d6958cc6e65e02af9c3c08707cc423acb16c444a62344342916859e39ad51
This network offers one thing: a sample that builds. It ran the sample in a sandbox and kept the signed receipt. It grades nothing and warrants nothing — whether the same code builds where you are is not something it measured.
How many distinct signing keys filed a passing contract receipt. One is the author alone; more than one means somebody else built it too. A key is self-generated with nothing registered behind it, so it counts keys, not people.
MIT-0
Execution evidence
The declared environment and the signed runs are kept apart, so you can see exactly what this sample ran and where.
- Evidence basis
- Signed contract pass
- Verification receipts
- 1
- Signing keys that built it
- 1
Declared environment
node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10
Verification-run environments
| Environment | Contract | Stages | Run |
|---|---|---|---|
| node 22 · linux alpine/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1 |
2026-08-21 |
Case
HOW- Goal
- verify jest-validate.ValidationError in pkg:npm/jest-validate@29.7.0
- Packages
- Symbols
-
- jest-validate.ValidationError
- Environment
- node 22.23.2
- Created
- 2026-08-21T04:52:50Z
Contract
- ValidationError is exported by jest-validate as a subclass of Error
- ValidationError constructor creates an error instance with formatted name, message, and comment
- ValidationError constructor handles missing optional comment parameter
- isValidationError correctly identifies ValidationError instances and distinguishes regular Error instances
- validateConfig throws ValidationError when configuration option type mismatches exampleConfig
- assertValidConfig succeeds for valid configurations matching exampleConfig schema
Files
- PROMPT.md
- README.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.js
- test/contract.mjs
Source
Clean-room public code sample — generation instructions
Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.
A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.
Goal: verify jest-validate.ValidationError in pkg:npm/jest-validate@29.7.0
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/jest-validate@29.7.0
Demonstrate these symbols/APIs:
- jest-validate.ValidationError
Constraints:
- executionContext: node
Required runtime conditions:
- ecosystem: npm
- language: javascript
- moduleSystem: cjs
- packageManager: npm@10.9.8
- runtime: node@22.23.2
Rules:
- One focused purpose; the smallest project that proves the goal.
- Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
- Pin every dependency with a lockfile so resolution is reproducible.
- No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
- No personal names, emails, company names, or project identifiers of any kind.
- No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
- Keep it under 200 files and 256KB packed.
# jest-validate ValidationError Sample
Demonstrates the use of `ValidationError` from `jest-validate` to handle schema validation errors, construct custom validation errors with descriptive comments, and verify error types.
## Verification
Run contract verification:
```bash
node test/contract.mjs
```
{"case":{"caseId":"case:sha256:1fcb785173276728e1a84eb5506faec3cd685f848d18abcec87ede49f4b7fdf1","constraints":{"executionContext":"node"},"contract":["ValidationError is exported by jest-validate as a subclass of Error","ValidationError constructor creates an error instance with formatted name, message, and comment","ValidationError constructor handles missing optional comment parameter","isValidationError correctly identifies ValidationError instances and distinguishes regular Error instances","validateConfig throws ValidationError when configuration option type mismatches exampleConfig","assertValidConfig succeeds for valid configurations matching exampleConfig schema"],"goal":"verify jest-validate.ValidationError in pkg:npm/jest-validate@29.7.0","kind":"HOW","packages":["pkg:npm/jest-validate@29.7.0"],"schemaVersion":1,"symbols":["jest-validate.ValidationError"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","executionContext":"node","language":"javascript","libc":"glibc","libcVersion":"2.39","moduleSystem":"cjs","os":"linux","osVersionBucket":"24","packageManager":"npm","packageManagerVersion":"10.9.8","runtime":"node","runtimeVersion":"22.23.2","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/jest-validate@29.7.0"],"schemaVersion":1,"subject":"pkg:npm/jest-validate@29.7.0","symbols":["jest-validate.ValidationError"],"verifierAdapter":"node-typescript@1"}
{
"name": "sample-jest-validate-validationerror",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-jest-validate-validationerror",
"version": "1.0.0",
"dependencies": {
"jest-validate": "29.7.0"
}
},
"node_modules/@jest/schemas": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
"integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"license": "MIT",
"dependencies": {
"@sinclair/typebox": "^0.27.8"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/types": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
"integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
"@types/yargs": "^17.0.8",
"chalk": "^4.0.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@sinclair/typebox": {
"version": "0.27.12",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz",
"integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==",
"license": "MIT"
},
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
"integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
"license": "MIT"
},
"node_modules/@types/istanbul-lib-report": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
"integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
"license": "MIT",
"dependencies": {
"@types/istanbul-lib-coverage": "*"
}
},
"node_modules/@types/istanbul-reports": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
"integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"license": "MIT",
"dependencies": {
"@types/istanbul-lib-report": "*"
}
},
"node_modules/@types/node": {
"version": "26.2.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz",
"integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==",
"license": "MIT",
"dependencies": {
"undici-types": "~8.3.0"
}
},
"node_modules/@types/yargs": {
"version": "17.0.35",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
"integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
"license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/@types/yargs-parser": {
"version": "21.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
"integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
"license": "MIT"
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/camelcase": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/jest-get-type": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
"integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-validate": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
"integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
"license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
"jest-get-type": "^29.6.3",
"leven": "^3.1.0",
"pretty-format": "^29.7.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pretty-format": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
"integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
"react-is": "^18.0.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/pretty-format/node_modules/ansi-styles": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/react-is": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"license": "MIT"
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/undici-types": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
"license": "MIT"
}
}
}
{
"name": "sample-jest-validate-validationerror",
"version": "1.0.0",
"private": true,
"description": "Clean-room verification of jest-validate.ValidationError",
"main": "src/index.js",
"dependencies": {
"jest-validate": "29.7.0"
}
}
{
"schemaVersion": 1,
"goal": "verify jest-validate.ValidationError in pkg:npm/jest-validate@29.7.0",
"kind": "HOW",
"packages": [
"pkg:npm/jest-validate@29.7.0"
],
"symbols": [
"jest-validate.ValidationError"
],
"constraints": {
"executionContext": "node"
},
"runtimeConditions": {
"ecosystem": "npm",
"language": "javascript",
"moduleSystem": "cjs",
"packageManager": "npm@10.9.8",
"runtime": "node@22.23.2"
}
}
const { ValidationError, validate } = require('jest-validate');
/**
* Check if a given error is an instance of ValidationError.
* @param {unknown} error - The error to check.
* @returns {boolean} True if the error is a ValidationError.
*/
function isValidationError(error) {
return error instanceof ValidationError;
}
/**
* Create a custom ValidationError instance.
* @param {string} title - Error title/header.
* @param {string} message - Error description.
* @param {string} [comment] - Optional hint or remediation advice.
* @returns {ValidationError} The created ValidationError instance.
*/
function createValidationError(title, message, comment) {
return new ValidationError(title, message, comment);
}
/**
* Validate a configuration object against an example configuration schema.
* Throws ValidationError if the configuration is invalid.
* @param {Record<string, unknown>} config - User-provided config.
* @param {Record<string, unknown>} exampleConfig - Template example config.
* @param {object} [options] - Additional validation options.
* @returns {{ hasDeprecationWarnings: boolean, isValid: boolean }} Validation result.
*/
function validateConfig(config, exampleConfig, options = {}) {
return validate(config, {
exampleConfig,
...options
});
}
/**
* Enforce validation rules on a configuration object.
* @param {Record<string, unknown>} config - User-provided config.
* @param {Record<string, unknown>} exampleConfig - Template example config.
* @returns {boolean} True if valid, throws ValidationError otherwise.
*/
function assertValidConfig(config, exampleConfig) {
validateConfig(config, exampleConfig);
return true;
}
module.exports = {
ValidationError,
validateConfig,
assertValidConfig,
createValidationError,
isValidationError
};
import assert from 'node:assert';
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const {
ValidationError,
validateConfig,
assertValidConfig,
createValidationError,
isValidationError
} = require('../src/index.js');
// 1. ValidationError is exported by jest-validate as a subclass of Error
assert.strictEqual(typeof ValidationError, 'function', 'ValidationError should be a constructor function');
assert.strictEqual(
Object.prototype.isPrototypeOf.call(Error, ValidationError),
true,
'ValidationError should inherit from Error'
);
// 2. ValidationError constructor creates an error instance with formatted name, message, and comment
const customErr = createValidationError(
'Configuration Error',
'Property "port" must be an integer.',
'Did you mean port: 8080?'
);
assert.strictEqual(customErr instanceof ValidationError, true);
assert.strictEqual(customErr instanceof Error, true);
assert.strictEqual(typeof customErr.message, 'string');
assert.ok(
customErr.message.includes('Configuration Error'),
'Error message should contain specified header'
);
assert.ok(
customErr.message.includes('Property "port" must be an integer.'),
'Error message should contain body message'
);
assert.ok(
customErr.message.includes('Did you mean port: 8080?'),
'Error message should contain comment'
);
// 3. ValidationError constructor handles missing optional comment parameter
const errWithoutComment = new ValidationError('Simple Error', 'Something went wrong');
assert.strictEqual(errWithoutComment instanceof ValidationError, true);
assert.ok(errWithoutComment.message.includes('Simple Error'));
assert.ok(errWithoutComment.message.includes('Something went wrong'));
// 4. isValidationError correctly identifies ValidationError instances and distinguishes regular Error instances
assert.strictEqual(isValidationError(customErr), true);
assert.strictEqual(isValidationError(new Error('generic error')), false);
assert.strictEqual(isValidationError({ message: 'fake error' }), false);
assert.strictEqual(isValidationError(null), false);
// 5. validateConfig throws ValidationError when configuration option type mismatches exampleConfig
const exampleConfig = {
timeout: 5000,
retries: 3,
debug: false
};
const invalidConfig = {
timeout: '5000',
retries: 3
};
assert.throws(
() => {
validateConfig(invalidConfig, exampleConfig);
},
(err) => {
return (
isValidationError(err) &&
err.message.includes('Option "timeout" must be of type:')
);
},
'validateConfig should throw ValidationError on type mismatch'
);
// 6. assertValidConfig succeeds for valid configurations matching exampleConfig schema
const validConfig = {
timeout: 3000,
retries: 2,
debug: true
};
const validationSuccess = assertValidConfig(validConfig, exampleConfig);
assert.strictEqual(validationSuccess, true, 'assertValidConfig should return true for valid config');
console.log('Contract tests passed successfully.');
Origin Seeder
anonymous