A collection of reusable Zod schemas and validators for common data patterns in Internet Computer applications.
You can use the library by installing it in your project.
npm i @dfinity/zod-schemas
The bundle needs peer dependencies, be sure that following resources are available in your project as well.
npm i @dfinity/principal
The library implements following features:
Creates a Zod schema for validating URLs. By default, it validates that the URL protocol is HTTPS and allow usage of HTTP only locally.
Function | Type |
---|---|
createUrlSchema |
({ additionalProtocols, allowHttpLocally, }: { additionalProtocols?: ${string}:[] or undefined; allowHttpLocally?: boolean or undefined; }) => ZodEffects<ZodString, string, string> |
Parameters:
options
: - Configuration options for the schema.options.additionalProtocols
: - Additional protocols to allow (e.g., "wss:" or "ftp:").⚠️ Usage of insecure protocols is discouraged.options.allowHttpLocally
: - Whether to allow HTTP for localhost and 127.0.0.1. Default: true.
Examples:
const schema = createUrlSchema({ additionalProtocols: ["wss:"], allowHttpLocally: false });
schema.parse("https://example.com"); // Valid schema.parse("wss://example.com"); // Valid schema.parse("http://localhost"); // Invalid if allowHttpLocally is false
Zod schema to validate a string as a valid textual representation of a Principal.
This schema checks if the provided string can be converted into a Principal
instance.
If the conversion fails, validation will return an error message.
Constant | Type |
---|---|
PrincipalTextSchema |
ZodEffects<ZodString, string, string> |
Examples:
const result = PrincipalTextSchema.safeParse("aaaaa-aa");
console.log(result.success); // true or false
Default URL schema that enforces HTTPS and allows HTTP locally.
Constant | Type |
---|---|
UrlSchema |
ZodEffects<ZodString, string, string> |
Examples:
UrlSchema.parse("https://example.com"); // Valid UrlSchema.parse("http://127.0.0.1"); // Valid (localhost exception)