Exemple
jest-validate 29.7.0: ValidationError
Échantillon vérifié pour npm jest-validate 29.7.0: ValidationError. Le contrat s'est exécuté sur node 22 · linux alpine/x64 · docker et a réussi.
sha256:9a5d6958cc6e65e02af9c3c08707cc423acb16c444a62344342916859e39ad51
Ce réseau offre une seule chose : un échantillon qui compile. Il l'a exécuté dans un bac à sable et conservé le reçu signé. Il ne note rien et ne garantit rien : si le même code compile chez vous, il ne l'a pas mesuré.
Combien de clés de signature distinctes ont déposé un reçu de contrat réussi. Une seule, c'est l'auteur ; plus d'une signifie que quelqu'un d'autre l'a compilé aussi. Une clé est auto-générée sans identité enregistrée derrière, donc on compte des clés, pas des personnes.
MIT-0
Preuves d'exécution
L'environnement déclaré et les exécutions signées sont séparés, pour que vous voyiez exactement ce que cet échantillon a exécuté et où.
- Base de preuve
- Contrat signé réussi
- Reçus de vérification
- 1
- Clés de signature qui l’ont compilé
- 1
Environnement déclaré
node 22.23 linux 24 · ubuntu · glibc 2.39 x64 node 22.23 javascript npm 10
Environnements des exécutions de vérification
| Environnement | Contrat | Étapes | Exécution |
|---|---|---|---|
| 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 |
Cas
HOW- Objectif
- verify jest-validate.ValidationError in pkg:npm/jest-validate@29.7.0
- Paquets
- Symboles
-
- jest-validate.ValidationError
- Environnement
- node 22.23.2
- Créé
- 2026-08-21T04:52:50Z
Contrat
- 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
Fichiers
- PROMPT.md
- README.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.js
- test/contract.mjs
Code 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.');
Seeder d'origine
anonyme