@genzy.io/client
v0.0.1-alpha-7
Published
Genzy - focused on the domain.
Downloads
5
Readme
Genzy Client
Getting started:
npm init -y
npm i -S genzy-client
- Define services
class UserService {
async createUser(user) {}
}
class AccountService {
async getAllAccounts() {}
async createAccount(account) {}
}
- Create a GenzyContainer of remote services
import { GenzyContainer } from 'genzy-client';
const host = 'http://localhost:3000';
const usersGenzyContainer = new GenzyContainer()
.ofRemote(UserService, host)
.andRemote(AccountService, host);
// The instances are available for custom usage
const { userService, accountService } = usersGenzyContainer.services();
// Use the services
accountService.createAccount({
username: 'test',
email: '[email protected]',
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: '[email protected]',
# firstName: 'Test',
# lastName: 'Test',
# }] }
# GET /api/account-service/get-all-accounts
Interceptors
// Intercept all service calls
const usersGenzyContainer = new GenzyContainer()
.ofRemote(UserService, host)
.interceptAllCalls(({setHeader, getHeader, setBody, getBody}) => {
setHeader('Authorization', 'Bearer <token>');
});
// Intercept only specific method calls
const usersGenzyContainer = new GenzyContainer()
.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 usersGenzyContainer = new GenzyContainer()
.ofRemote(UserService, host)
.interceptCalls({
userService: UserServiceCallInterceptor
});
// Intercept all service results
const usersGenzyContainer = new GenzyContainer()
.ofRemote(UserService, host)
.interceptAllResults(({setHeader, getHeader, setBody, getBody}) => {
validateBody(getBody());
setToken(getHeader('Token'));
});
// Intercept only specific method results
const usersGenzyContainer = new GenzyContainer()
.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 usersGenzyContainer = new GenzyContainer()
.ofRemote(UserService, host)
.interceptResults({
userService: UserServiceResultInterceptor
});
Steps for publishing new version
npm run prepublish
npm version major/minor/patch
npm publish