@saurabhatt/product-sdk
v0.1.2
Published
Production-grade Product SDK and Express API server in TypeScript.
Maintainers
Readme
product-sdk
A TypeScript SDK for interacting with the Product API.
Install
npm install @saurabhatt/product-sdkQuick Start
const { ProductClient } = require("@saurabhatt/product-sdk");
const client = new ProductClient({
apiKey: "your-api-key",
baseUrl: "http://localhost:3000",
});
(async () => {
const products = await client.products.list();
console.log(products);
})();Configuration
new ProductClient({
apiKey: string; // required
baseUrl?: string; // default: http://localhost:3000
timeout?: number; // default: 10000ms
});Products API
Create Product
const product = await client.products.create({
name: "Mechanical Keyboard",
description: "Hot-swappable wireless keyboard",
price: 129.99,
currency: "USD",
stock: 25,
});Get Product
const product = await client.products.get(productId);List Products
const products = await client.products.list({
page: 1,
limit: 20,
search: "keyboard",
});Update Product
const updated = await client.products.update(productId, {
price: 119.99,
stock: 10,
});Delete Product
await client.products.delete(productId);Error Handling
const {
ProductSDKError,
ProductSDKValidationError,
} = require("@saurabhatt/product-sdk");
try {
await client.products.get("invalid-id");
} catch (error) {
if (error instanceof ProductSDKValidationError) {
console.error(error.fieldErrors);
}
if (error instanceof ProductSDKError) {
console.error(error.statusCode, error.requestId, error.message);
}
}Using Environment Variables
API_KEY=your-api-key
BASE_URL=http://localhost:3000require("dotenv").config();
const client = new ProductClient({
apiKey: process.env.API_KEY,
baseUrl: process.env.BASE_URL,
});Requirements
- A running Product API server
- Valid API key
Notes
- This SDK does not manage database connections
- All requests are made over HTTP
- Ensure your API server is running before making requests
Versioning
Follows semantic versioning:
- Patch → bug fixes
- Minor → new features
- Major → breaking changes
