Networking utilities and services for SMESS platform.
npm install @smess/networking- Per-instance configuration (no global config)
- RxJS-based HTTP services
- Extensible provider/service architecture
- TypeScript-first
- Bundler-friendly (Webpack, Vite, Rollup compatible)
``bash`
npm install @smess/networking
`typescript`
const configA = {
baseUrl: "https://api-a",
isProd: false,
clientId: "A",
apiKey: "keyA",
};
const configB = {
baseUrl: "https://api-b",
isProd: true,
clientId: "B",
apiKey: "keyB",
};
`typescript
import { ProductService, UserService, AuthService } from "@smess/networking";
const productServiceA = new ProductService(configA);
const productServiceB = new ProductService(configB);
const userServiceA = new UserService(configA);
const authServiceA = new AuthService(configA);
`
`typescript
// Using RxJS Observables
productServiceA.fetchAllProducts().subscribe(...);
productServiceB.createProduct({ name: 'X', price: 10 }).subscribe(...);
userServiceA.fetchUserById(1).subscribe(...);
authServiceA.login({ identifier: 'user', password: 'pass' }).subscribe(...);
// Or convert to Promises for async/await
const user = await userServiceA.fetchUserById(1).toPromise();
const products = await productServiceA.fetchAllProducts().toPromise();
`
`typescript
import { BaseProvider, SmessService } from "@smess/networking";
const config = {
baseUrl: "https://custom-api",
isProd: false,
clientId: "custom-client",
apiKey: "custom-key",
};
class ExampleProvider extends BaseProvider {
constructor(config, resourceId: string) {
super({
config,
path: /resource/${resourceId},/resource/${resourceId}
method: "GET",
headers: { "Custom-Header": "value" },
getPath: () => ,
});
}
}
const provider = new ExampleProvider(config, "123");
const service = new SmessService(provider);
service.request().subscribe((result) => {
// handle result
});
`
This package is designed to work seamlessly with modern bundlers:
- Webpack ✅
- Vite ✅
- Rollup ✅
- Parcel ✅
The package uses extensionless imports in TypeScript source code, which bundlers handle automatically. No .js extensions needed in your imports!
`typescript
// ✅ This works perfectly with bundlers
import { UserService, ProductService } from "@smess/networking";
const config = { baseUrl: "https://api.example.com", isProd: false };
const userService = new UserService(config);
const productService = new ProductService(config);
`
- UserService - User management operationsProductService
- - Product CRUD operationsAuthService
- - Authentication (login, logout, password reset)CustomerService
- - Customer registration and profile managementOrderService
- - Order managementStoreService
- - Store and product catalog operations
`bashInstall dependencies
npm install
---
Private Package Usage
See SETUP.md for instructions on using this package as a private dependency (GitHub repo, GitHub Packages, npm private registry) with the correct package name:
@smess/networking`.---
MIT License