
Security News
PodRocket Podcast: Inside the Recent npm Supply Chain Attacks
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
@d3vtool/validator
Advanced tools
A Schema validation library.
You can install the package using npm or yarn:
npm install @d3vtool/validator
yarn add @d3vtool/validator
import { Validator, ValidationError, type VInfer } from "@d3vtool/validator";
const usernameSchema = Validator.string().minLength(5);
type Username = VInfer<typeof usernameSchema>;
const username: Username = "popHero83";
const errors = usernameSchema.validateSafely(username)
console.log(errors);
// or
try {
usernameSchema.validate(username);
} catch(err: unknown) {
if(err instanceof ValidationError) {
// do something with it
console.log(err);
}
}
import { Validator, ValidationError, type VInfer } from "@d3vtool/validator";
const phoneSchema = Validator.number().requiredLength(10);
type Phone = VInfer<typeof phoneSchema>;
const phone: Phone = 1234567890;
const errors = phoneSchema.validateSafely(phone)
console.log(errors);
// or
try {
phoneSchema.validate(phone);
} catch(err: unknown) {
if(err instanceof ValidationError) {
// do something with it
console.log(err);
}
}
import { Validator, SchemaValidationError, type VInfer } from "@d3vtool/validator";
const schema = Validator.schema({
name: Validator.string().minLength(5),
email: Validator.string().email(),
});
type schema = VInfer<typeof schema>;
const schemaObj: schema = {
name: "Sudhanshu",
email: "email@email.abc"
}
const errors = schema.validateSafely(schemaObj);
console.log(errors);
// or
try {
schema.validate(schemaObj);
} catch(err: unknown) {
if(err instanceof SchemaValidationError) {
// do something with it
console.log(err);
}
}
optional()
Schema Validationimport { Validator, SchemaValidationError, type VInfer } from "@d3vtool/validator";
const schema = Validator.schema({
name: Validator.string().minLength(5), // name is required with a minimum length of 5
email: Validator.string().email().optional(), // email is optional
});
type schema = VInfer<typeof schema>;
const schemaObj: schema = {
name: "Sudhanshu",
email: "email@email.abc", // This is valid, but email can also be omitted
};
const errors = schema.validateSafely(schemaObj);
console.log(errors); // Should show no errors
// or
try {
schema.validate(schemaObj);
} catch(err: unknown) {
if(err instanceof SchemaValidationError) {
// do something with it
console.log(err);
}
}
// Example with email missing
const schemaObjWithoutEmail: schema = {
name: "Sudhanshu",
// email is omitted, which is allowed because it's optional
};
const errorsWithoutEmail = schema.validateSafely(schemaObjWithoutEmail);
console.log(errorsWithoutEmail); // Should show no errors as email is optional
// or
try {
schema.validate(schemaObjWithoutEmail);
} catch(err: unknown) {
if(err instanceof SchemaValidationError) {
// do something with it
console.log(err);
}
}
name
field: This field is required, and it must be a string with a minimum length of 5 characters.email
field: This field is optional due to .optional()
. If it's provided, it must be a valid email address; if not, the validation will still pass without errors.name
and email
are provided, the validation will pass.name
is provided and email
is omitted, the validation will still pass because email
is marked as optional.import { Validator, SchemaValidationError, type VInfer } from "@d3vtool/validator";
const schema = Validator.schema({
name: Validator.number().minLength(5),
email: Validator.string().email(),
password: Validator.string().password().minLength(8),
confirmPassword: Validator.string().ref("password").optional(),
});
type schema = VInfer<typeof schema>;
const schemaObj: schema = {
name: 12345,
email: "email@email.abc",
password: "securepassword123",
confirmPassword: "securepassword123", // Optional, but must match password if provided
}
const errors = schema.validateSafely(schemaObj);
// or
try {
schema.validate(schemaObj);
} catch(err: unknown) {
if(err instanceof SchemaValidationError) {
// do something with it
console.log(err);
}
}
name
: The name
field must be a number and have a minimum value of 5.email
: The email
field must be a valid email address.password
: The password
field must be at least 8 characters long and a valid password format.confirmPassword
: The confirmPassword
field is optional but, if provided, must match the value of the password
field (using ref("password")
).In this example, the validateSafely
function will check the provided schemaObj
and return any validation errors, ensuring that confirmPassword
(if present) matches password
.
FAQs
Schema validator
The npm package @d3vtool/validator receives a total of 5 weekly downloads. As such, @d3vtool/validator popularity was classified as not popular.
We found that @d3vtool/validator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.