Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@janiscommerce/api
Advanced tools
A package for managing API from any origin.
npm install @janiscommerce/api
The module can detect and inject a client. This works with configurable identifiers.
The api can receive the identifier and an internal model will get an inject the client for you.
The identifiers can be configurated with the package Settings in the key api.identifiers
.
For the client injection functionality si required to install the package active-client
.
The package active-client
will get in DB by the field configurated in the identifiers and received in the api.
For more information see Active Client
api
will use the header 'client' getting in DB using the field name{
"api": {
"identifiers": {
"header": "client",
"clientField": "name"
}
}
}
api
will search the client using client-id
or client-code
(sent in qs or requestBody), the field in DB is id
and code
respectively.{
"api": {
"identifiers": [{
"data": "client-id",
"clientField": "id"
}, {
"data": "client-code",
"clientField": "code"
}]
}
}
code
and the body
.const { Dispatcher } = require('@janiscommerce/api');
const dispatcher = new Dispatcher({
endpoint: 'api/pets',
method: 'get', // this is the default verb
data: { status: 'active' },
headers: { 'Content-Type': 'application/json' },
cookies: { 'my-cookie': 123 }
});
const response = await dispatcher.dispatch();
console.log(response);
/**
expected output:
{
code: 200,
body: [
{
id: 1,
type: 'dog',
breed: 'pug',
name: 'Batman'
}, {
id: 2,
type: 'dog',
breed: 'chihuahua',
name: 'Chico'
}
]
}
*/
You should extend your apis from this module.
pathParameters (getter). Returns the path parameters of the request.
headers (getter). Returns the the headers of the request.
cookies (getter). Returns the the cookies of the request.
setCode(code).
Set a response httpCode. code
must be a integer.
setHeader(headerName, headerValue).
Set an individual response header. headerName
must be a string.
setHeaders(headers).
Set response headers. headers
must be an object with "key-value" headers.
setCookie(cookieName, cookieValue).
Set an individual response cookie. cookieName
must be a string.
setCookies(cookies).
Set response cookies. cookies
must be an object with "key-value" cookies.
setBody(body). Set the response body.
getController(ControllerName). Get a Controller instance with client injected.
The API Struct is easily validated using superstruct (Thank's superstruct :pray:)
If you want to use this validation, you should add a getter method struct()
.
const { API } = require('@janiscommerce/api');
class MyApi extends API {
/**
* Optional method for struct validation (qs or requestBody)
*/
get struct() {
return {
id: 'number',
name: 'string'
};
}
}
module.exports = MyApi;
The way to add some custom validation is adding a validate()
method.
This method is called by Dispatcher
after validate de Struct.
const { API } = require('@janiscommerce/api');
class MyApi extends API {
/**
* Optional method for extra validation
*/
async validate() {
if(this.data.id > 10)
throw new Error('Weird validation fail'); // this will response a 400 error
if(!existsInMyDB(this.data.id)) {
this.setCode(404); // set a custom http resposne code
throw new Error('resource not found'); // this will response a 404 error
}
}
}
module.exports = MyApi;
const { API } = require('@janiscommerce/api');
class MyApi extends API {
/**
* Required method for api process
*/
async process() {
if(!saveInMyDB(this.data))
throw new Error('internal save error'); // this will response a 500 error
if(!saveOtherThingInMyDB(this.data)) {
this.setCode(504); // set a custom http resposne code
throw new Error('internal save error');
}
this
.setHeader('my-header-1', 'foo')
.setHeaders({ 'my-header-2': 'foo', 'my-header-3': 'foo' })
.setCookie('my-cookie-1', 'bar')
.setCookies({ 'my-cookie-2': 'bar', 'my-cookie-3': 'bar' })
.setBody({
'response-body': 123
});
}
}
module.exports = MyApi;
[1.7.0] - 2019-07-11
MS_PATH
- path prefixFAQs
A package for managing API from any origin
The npm package @janiscommerce/api receives a total of 520 weekly downloads. As such, @janiscommerce/api popularity was classified as not popular.
We found that @janiscommerce/api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.