A TypeScript type generator for PocketBase collections. This tool automatically generates TypeScript interfaces and types from your PocketBase schema.
- Generates TypeScript interfaces for all PocketBase collections
- Supports all PocketBase field types
- Generates union types for select fields
- Handles optional fields
- Supports file fields (single and multiple)
- Excludes system collections by default
- Generates a Collections interface for type-safe access
# Using bun
bun add pocketbase-typegen
# Using npm
npm install pocketbase-typegen
# Using yarn
yarn add pocketbase-typegen
import { pbTypegenFromFile, pbTypegenToFile } from 'pocketbase-typegen';
// Generate types and get as string
const types = await pbTypegenFromFile('./schema.json');
console.log(types);
// Generate types and save to file
await pbTypegenToFile('./schema.json', './types.ts');
import { pbTypegen } from 'pocketbase-typegen';
const schema = [/* your PocketBase schema */];
const types = pbTypegen(schema);
The generator creates TypeScript interfaces and types like this:
export type CategoryOptions =
'web' |
'mobile' |
'design';
export interface ProjectRecord {
id: string;
title: string;
description?: string;
category?: CategoryOptions;
files?: string[];
created?: string;
updated?: string;
}
export interface Collections {
projects: ProjectRecord;
}
text
,email
,url
,editor
→string
number
→number
bool
→boolean
date
→string
select
→ Custom union typejson
→any
file
(single) →string
file
(multiple) →string[]
relation
→string
password
→never
This project uses Bun for development. Make sure you have Bun installed.
# Install dependencies
bun install
# Run tests
bun test
# Generate types from sample schema
bun run generate
MIT
Contributions are welcome! Please feel free to submit a Pull Request.