@feedbakkr/cli
v0.1.0
Published
CLI tools for Feedbakkr — pull schemas and generate TypeScript types
Maintainers
Readme
@feedbakkr/cli
CLI tools for Feedbakkr — pull channel schemas and generate TypeScript types.
Installation
npm install -g @feedbakkr/cli
# or use directly with npx
npx @feedbakkr/cli --helpCommands
pull-schema
Pull the published schema for a channel and save it locally.
npx @feedbakkr/cli pull-schema <channel-id> --out ./feedbakkr/contact.schema.jsonOptions:
| Flag | Description | Default |
|------|-------------|---------|
| -o, --out <path> | Output file path | ./feedbakkr/schema.json |
| -k, --api-key <key> | Secret API key (or set FEEDBAKKR_API_KEY env var) | — |
| --base-url <url> | API base URL | https://api.feedbakkr.com |
Authentication:
Pass your secret API key via --api-key or the FEEDBAKKR_API_KEY environment variable:
export FEEDBAKKR_API_KEY=fbk_sk_live_your-secret-key
npx @feedbakkr/cli pull-schema 01ABC123...codegen
Generate TypeScript types from a Feedbakkr schema JSON file.
npx @feedbakkr/cli codegen ./feedbakkr/contact.schema.json --out ./src/generated/contact.tsOptions:
| Flag | Description | Default |
|------|-------------|---------|
| -o, --out <path> | Output TypeScript file path | Same directory, .ts extension |
| -n, --name <name> | Interface name | Derived from file name (PascalCase + Fields) |
Example output:
Given a schema with fields for name, email, priority, and tags:
// Generated by @feedbakkr/cli — do not edit manually
/** Contact Form */
export interface ContactFormFields {
/** Full Name */
name: string;
/** Email Address */
email: string;
/** Priority */
priority?: "low" | "medium" | "high";
/** Tags */
tags?: string[];
}Type mapping
| Schema field type | TypeScript type |
|-------------------|-----------------|
| text | string |
| textarea | string |
| date | string |
| bool | boolean |
| number | number |
| fixed | Union of literal string values |
| dynlist | Array of the item type |
Required fields (req: true) generate non-optional properties. All other fields are optional (?).
Workflow with @feedbakkr/sdk
Use the CLI to generate types, then pass them to the SDK for type-safe submissions:
# 1. Pull the schema
npx @feedbakkr/cli pull-schema 01ABC... --out ./feedbakkr/contact.schema.json
# 2. Generate types
npx @feedbakkr/cli codegen ./feedbakkr/contact.schema.json --out ./src/generated/contact.ts// 3. Use with the SDK
import { createFeedbakkrClient } from "@feedbakkr/sdk";
import type { ContactFields } from "./generated/contact";
const feedbakkr = createFeedbakkrClient({
apiKey: process.env.FEEDBAKKR_SECRET_KEY!,
});
const fields: ContactFields = {
name: "Jane Doe",
email: "[email protected]",
message: "Great product!",
};
await feedbakkr.submit({ channelId: "01ABC...", fields });License
MIT
