1.0.2 • Published 12 months ago

@bts2/sdk-cli v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

@bts/sdk-cli

Background Task System SDK Generator CLI - A tool to generate type-safe SDKs for interacting with the Background Task System.

Features

  • 🚀 Easy SDK Generation: Simple CLI tool to generate SDKs with minimal configuration
  • 📘 TypeScript Support: Full TypeScript support with type definitions
  • 🔄 Watch Mode: Automatic SDK regeneration when task definitions change
  • 🔐 Secure: Built-in API key management and authentication
  • 📦 Environment Variables: Support for configuration via environment variables
  • 🎯 Task Management: Create, schedule, and manage background tasks
  • Type-Safe: Generated SDK provides full type safety for your tasks

Installation

npm install -g @bts/sdk-cli

Usage

Basic Usage

Generate an SDK for your project:

bts generate

Configuration

Create a bts.config.json file in your project root:

{
  "apiUrl": "https://your-api-url.com",
  "outputDir": "./generated",
  "tasksDir": "./tasks",
  "apiKey": "your-api-key"
}

Environment Variables

You can also configure the CLI using environment variables:

BTS_API_URL=https://your-api-url.com
BTS_API_KEY=your-api-key
BTS_OUTPUT_DIR=./generated
BTS_TASKS_DIR=./tasks

Watch Mode

Run the CLI in watch mode to automatically regenerate the SDK when task definitions change:

bts generate --watch

Command Options

Options:
  -w, --watch    Watch for changes and regenerate SDK
  -o, --output   Specify output directory
  -t, --tasks    Specify tasks directory
  -c, --config   Specify config file path
  -h, --help     Display help information

Generated SDK Usage

Once generated, you can use the SDK in your TypeScript project:

import { BtsClient } from './generated';

const client = new BtsClient({
  apiKey: 'your-api-key',
  apiUrl: 'https://your-api-url.com'
});

// Schedule a task
await client.scheduleTask('taskName', {
  // type-safe payload based on your task definition
  payload: {
    foo: 'bar'
  }
});

// Get task status
const status = await client.getTaskStatus('taskId');

Task Definition Example

Create task definitions in your tasks directory:

// tasks/emailTask.ts
import { defineTask } from '@bts/sdk-cli';

export default defineTask({
  name: 'sendEmail',
  input: {
    to: 'string',
    subject: 'string',
    body: 'string'
  },
  output: {
    sent: 'boolean',
    messageId: 'string'
  }
});

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support, please open an issue in the GitHub repository or contact the maintainers.

Changelog

See CHANGELOG.md for a list of changes.

Related Projects

  • @bts/runtime - Runtime library for Background Task System
  • @bts/server - Server implementation for Background Task System

Authors

Acknowledgments

  • Thanks to all contributors who have helped shape this project
  • Inspired by various SDK generators in the TypeScript ecosystem