0.0.2 • Published 4 months ago

firestore-ts-client-builder v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

firestore-ts-client-builder

firestore-ts-client-builder is a powerful tool that generates a ready-to-use, typed data layer in TypeScript for your Firestore database. By providing metadata about your data model, you can create a typed client data layer that simplifies data access and ensures type safety.

Usage

Install the package as a development dependency:

yarn add firestore-ts-client-builder --D

Create a script to generate the data layer (e.g., generateDataLayer.js):

import path from "path";
import dotenv from "dotenv";
import { createClientDataLayer } from "firestore-ts-client-builder";

// Load environment variables from .env file
dotenv.config();

createClientDataLayer({
  outdir: path.join(__dirname, "../src/data"),
  metadata: {
    entities: {
      customer: {
        properties: {
          name: { type: "string", isRequired: true },
          dob: { type: "number" },
          address: {
            type: "object",
            properties: {
              street: {
                type: "string",
                isRequired: true,
              },
              city: {
                type: "string",
                isRequired: true,
              },
              state: {
                type: "string",
                isRequired: true,
              },
              zip: {
                type: "number",
                isRequired: true,
              },
            },
          },
          colors: {
            type: "array",
            items: { type: "string" },
          },
        },
      },
    },
  },
  firebaseConfig: {
    apiKey: process.env.FIREBASE_API_KEY,
    authDomain: process.env.FIREBASE_AUTH_DOMAIN,
    projectId: process.env.FIREBASE_PROJECT_ID,
    storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
    appId: process.env.FIREBASE_APP_ID,
    measurementId: process.env.FIREBASE_MEASUREMENT_ID,
  },
});

Execute the script prior to building or starting your application. This will generate a typed Firestore client data layer that is ready for use in your TypeScript React application:

node generateDataLayer.js

Now you can access the generated data layer in your application:

import getCustomer from "path/to/data/customer/get";

useEffect(() => {
  (async () => {
    const customer = await getCustomer(
      "z9atwfoVsiZ3vl5F2YiJ" /** customerId */
    );
    console.log(customer?.name);
  })();
}, []);

By using firestore-ts-client-builder, you can benefit from type-safety, cleaner code, and faster development.

0.0.2-canary.150

4 months ago

0.0.2-canary.151

4 months ago

0.0.2-canary.146

4 months ago

0.0.2-canary.147

4 months ago

0.0.2-canary.148

4 months ago

0.0.2-canary.149

4 months ago

0.0.2-canary.145

11 months ago

0.0.2-canary.140

2 years ago

0.0.2-canary.139

2 years ago

0.0.2-canary.132

2 years ago

0.0.2-canary.133

2 years ago

0.0.2-canary.134

2 years ago

0.0.2-canary.135

2 years ago

0.0.2-canary.136

2 years ago

0.0.2-canary.137

2 years ago

0.0.2-canary.138

2 years ago

0.0.2-canary.129

2 years ago

0.0.2-canary.120

2 years ago

0.0.2-canary.125

2 years ago

0.0.2-canary.127

2 years ago

0.0.2-canary.131

2 years ago

0.0.2-canary.117

2 years ago

0.0.2-canary.118

2 years ago

0.0.2-canary.112

2 years ago

0.0.2-canary.106

2 years ago

0.0.2-canary.108

2 years ago

0.0.2-canary.86

2 years ago

0.0.2-canary.102

2 years ago

0.0.2-canary.103

2 years ago

0.0.2-canary.105

2 years ago

0.0.2-canary.91

2 years ago

0.0.2-canary.110

2 years ago

0.0.2-canary.99

2 years ago

0.0.2-canary.96

2 years ago

0.0.2-canary.93

2 years ago

0.0.2-canary.81

2 years ago

0.0.2-canary.74

2 years ago

0.0.2-canary.73

2 years ago

0.0.2-canary.71

2 years ago

0.0.2-canary.69

2 years ago

0.0.2-canary.67

2 years ago

0.0.2-canary.64

2 years ago

0.0.2-canary.62

2 years ago

0.0.2-canary.60

2 years ago

0.0.2-canary.58

2 years ago

0.0.2-canary.56

2 years ago

0.0.2-canary.54

2 years ago

0.0.2-canary.51

2 years ago

0.0.2-canary.48

2 years ago

0.0.2-canary.46

2 years ago

0.0.2-canary.44

2 years ago

0.0.2-canary.42

2 years ago

0.0.2-canary.40

2 years ago

0.0.2-canary.38

2 years ago

0.0.2-canary.36

2 years ago

0.0.2-canary.34

2 years ago

0.0.2-canary.33

2 years ago

0.0.2-canary.31

2 years ago

0.0.2-canary.26

2 years ago

0.0.2-canary.22

2 years ago

0.0.2-canary.19

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago