@smess/networking
v1.1.2
Published
Networking utilities and services for SMESS platform.
Readme
SMESS Networking Package
Features
- Per-instance configuration (no global config)
- RxJS-based HTTP services
- Extensible provider/service architecture
- TypeScript-first
- Bundler-friendly (Webpack, Vite, Rollup compatible)
Installation
npm install @smess/networkingUsage
1. Define your config
const configA = {
baseUrl: "https://api-a",
isProd: false,
clientId: "A",
apiKey: "keyA",
};
const configB = {
baseUrl: "https://api-b",
isProd: true,
clientId: "B",
apiKey: "keyB",
};2. Create providers/services with config
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);3. Use services independently
// 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();4. Example: Custom Provider
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}`,
method: "GET",
headers: { "Custom-Header": "value" },
getPath: () => `/resource/${resourceId}`,
});
}
}
const provider = new ExampleProvider(config, "123");
const service = new SmessService(provider);
service.request().subscribe((result) => {
// handle result
});Bundler Compatibility
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!
Example with Webpack/Vite
// ✅ 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);Available Services
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
Development
# Install dependencies
npm install
# Build the package
npm run build
# Run tests
npm test
# Clean build artifacts
npm run cleanPrivate 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
