Skip to content

Latest commit

 

History

History

zod-schemas

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Zod Schemas for apps on ICP

A collection of reusable Zod schemas and validators for common data patterns in Internet Computer applications.

npm version GitHub license

Table of contents

Installation

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

Features

The library implements following features:

🧰 Functions

⚙️ createUrlSchema

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

🔗 Source

🔧 Constants

⚙️ PrincipalTextSchema

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

🔗 Source

⚙️ UrlSchema

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)

🔗 Source