0.2.15 • Published 7 months ago
@n1mbly/client v0.2.15
Nimbly Client
Getting started:
npm init -y
npm i -S nimbly-client
- Define services
class UserService {
async createUser(user) {}
}
class AccountService {
async getAllAccounts() {}
async createAccount(account) {}
}
- Create a Nimble of remote services
import { Nimble } from 'nimbly-client';
const host = 'http://localhost:3000';
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.andRemote(AccountService, host);
// The instances are available for custom usage
const { userService, accountService } = usersNimble.services();
// Use the services
accountService.createAccount({
username: 'test',
email: 'test@test.com',
firstName: 'Test',
lastName: 'Test',
})
.then(newAccount => console.log(newAccount)) // created account from server
.catch(error => console.log(error));
// Fetch all accounts
const allAccounts = await accountService.getAllAccounts();
# 2 requests have been sent
# POST /api/account-service/create-account
# body: { args: [{
# username: 'test',
# email: 'test@test.com',
# firstName: 'Test',
# lastName: 'Test',
# }] }
# GET /api/account-service/get-all-accounts
Interceptors
// Intercept all service calls
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptAllCalls(({setHeader, getHeader, setBody, getBody}) => {
setHeader('Authorization', 'Bearer <token>');
});
// Intercept only specific method calls
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptCalls({
userService: {
getTest({setHeader, getHeader, setBody, getBody}) {
setBody({ ...getBody(), timestamp: new Date() });
}
}
});
// Define interceptors with an interceptor class
class UserServiceCallInterceptor {
getTest({setHeader, getHeader, setBody, getBody}) {
setHeader('classCallInterceptor', 'Works!')
}
}
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptCalls({
userService: UserServiceCallInterceptor
});
// Intercept all service results
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptAllResults(({setHeader, getHeader, setBody, getBody}) => {
validateBody(getBody());
setToken(getHeader('Token'));
});
// Intercept only specific method results
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptResults({
userService: {
getTest({setHeader, getHeader, setBody, getBody}) {
setBody({ ...getBody(), count: getBody().items.length });
}
}
});
// Define interceptors with an interceptor class
class UserServiceResultInterceptor {
getTest({setHeader, getHeader, setBody, getBody}) {
setHeader('classResultInterceptor', 'Works!')
}
}
const usersNimble = new Nimble()
.ofRemote(UserService, host)
.interceptResults({
userService: UserServiceResultInterceptor
});
Steps for publishing new version
npm run prepublish
npm version major/minor/patch
npm publish
0.2.15
7 months ago
0.2.14
7 months ago
0.2.13
7 months ago
0.2.12
7 months ago
0.2.11
7 months ago
0.2.10
7 months ago
0.1.0
8 months ago
0.0.1
8 months ago
0.2.1
7 months ago
0.2.0
8 months ago
0.2.7
7 months ago
0.2.6
7 months ago
0.2.9
7 months ago
0.2.8
7 months ago
0.2.3
7 months ago
0.2.2
7 months ago
0.2.5
7 months ago
0.2.4
7 months ago
0.0.1-beta
2 years ago