| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /**
- * Cloudflare Worker-compatible JSON Schema validator provider
- *
- * This provider uses @cfworker/json-schema for validation without code generation,
- * making it compatible with edge runtimes like Cloudflare Workers that restrict
- * eval and new Function.
- */
- import { Validator } from '@cfworker/json-schema';
- /**
- *
- * @example
- * ```typescript
- * // Use with default configuration (2020-12, shortcircuit)
- * const validator = new CfWorkerJsonSchemaValidator();
- *
- * // Use with custom configuration
- * const validator = new CfWorkerJsonSchemaValidator({
- * draft: '2020-12',
- * shortcircuit: false // Report all errors
- * });
- * ```
- */
- export class CfWorkerJsonSchemaValidator {
- /**
- * Create a validator
- *
- * @param options - Configuration options
- * @param options.shortcircuit - If true, stop validation after first error (default: true)
- * @param options.draft - JSON Schema draft version to use (default: '2020-12')
- */
- constructor(options) {
- this.shortcircuit = options?.shortcircuit ?? true;
- this.draft = options?.draft ?? '2020-12';
- }
- /**
- * Create a validator for the given JSON Schema
- *
- * Unlike AJV, this validator is not cached internally
- *
- * @param schema - Standard JSON Schema object
- * @returns A validator function that validates input data
- */
- getValidator(schema) {
- // Cast to the cfworker Schema type - our JsonSchemaType is structurally compatible
- const validator = new Validator(schema, this.draft, this.shortcircuit);
- return (input) => {
- const result = validator.validate(input);
- if (result.valid) {
- return {
- valid: true,
- data: input,
- errorMessage: undefined
- };
- }
- else {
- return {
- valid: false,
- data: undefined,
- errorMessage: result.errors.map(err => `${err.instanceLocation}: ${err.error}`).join('; ')
- };
- }
- };
- }
- }
- //# sourceMappingURL=cfworker-provider.js.map
|