DISCLAIMER: This project is under active development and is updated regularly. The README may not always reflect the most recent changes.
This package is a utility that automatically generates TypeScript types based on your Appwrite database schema. This ensures type safety and improves the developer experience when working with Appwrite databases.
- Simply provide the necessary Appwrite credentials, run the script and wrap your Appwrite client, and you're good to go!
- Automatically generates TypeScript types for your Appwrite database collections and attributes.
- Ensures type safety when interacting with Appwrite databases.
- Configurable via environment variables.
- Create a new
TypedAppwriteClient
instance wrapping your Appwrite client. - Configurable via environment variables.
Install the package via npm:
yarn add typesafe-node-appwrite
Create a .env
file in the root of your project to store your Appwrite configuration:
APPWRITE_ENDPOINT="https://your-appwrite-endpoint"
APPWRITE_PROJECT_ID="your-project-id"
APPWRITE_API_KEY="your-api-key"
To generate TypeScript types based on your Appwrite database schema, run the following command:
yarn generate-types
This command will automatically create types from your Appwrite database, and output them into the client.
To typesafe your database APIs, simply wrap your existing appwrite client inside TypedAppwriteClient
.
This enables suggestions in your functions based on the generated types.
- I have also improved the structure to streamline the development experience a bit, with a more object based approach. Take a look at the example below.
- Most of the methods are also documented.
Here's an example of how to use the generated types and the TypedAppwriteClient
class:
import { TypedAppwriteClient } from 'typesafe-node-appwrite';
import { Client } from 'node-appwrite';
const client = new Client();
client
.setEndpoint(process.env.APPWRITE_ENDPOINT || '')
.setProject(process.env.APPWRITE_PROJECT_ID || '')
.setKey(process.env.APPWRITE_API_KEY || '');
const typedClient = new TypedAppwriteClient(client);
await appwriteClient.createDocument({
databaseId: "app",
collectionId: "posts",
documentId: "test",
data: {
content: "Some title",
title: "Lorem ipsum and so on...",
created_by: "Markus Heien",
},
permissions: {
read: ["guests", "users"],
write: ["users"],
},
})
If you encounter any issues with the generated types, please open an issue or submit a pull request with your changes.
- Node.js
- preferably pnpm or yarn
- Appwrite server
git clone https://github.com/MHeien/typesafe-node-appwrite.git
cd typesafe-node-appwrite
yarn
Contributions are welcome! Please open an issue or submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for more details.