
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
loopback-stats-mixin
Advanced tools
A mixin to provide statistical functionallity for Loopback Models, Relations and Nested Datasets
This module is designed for the Strongloop Loopback framework. It provides statistical functionallity to any Model, Relation or Nested Dataset.
The loopback-stats-mixin module provides the following mixins and functionallity.
Thanks to these 2 mixins we can create a full set of services that can automatically handle statistical information for the Models in which the mixin is implemented.
npm install loopback-stats-mixin --save
With loopback-boot@v2.8.0 mixinSources have been implemented in a way which allows for loading this mixin without changes to the server.js
file previously required.
Add the mixins
property to your server/model-config.json
like the following:
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models"
],
"mixins": [
"loopback/common/mixins",
"../node_modules/loopback-stats-mixin/dist",
"../common/mixins"
]
}
}
This mixin creates a Remote Method for each configuration object provided within the mixin options, being possible to set configuration objects as needed.
The following is the most basic example of how to create a stats
micro-service:
"mixins": {
"Stats": [
{
"method": "stats",
"endpoint": "/stats",
"description": "A Description for Loopback Explorer",
"type": "model",
"count": {
"on": "createdAt",
"by": "index"
}
}
]
}
The code defined above would create a localhost:3000/api/model/stats
endpoint with the ability to fetch hourly, daily, weekly, monthly, yearly and custom start and end
statistics with information related to the model.
In this example, the information will be processed upon the createdAt
date property counted by index
which means everytime the createdAt property matches within a timeframe, it will be counted as 1.
HINT 1: "count.on" can be any date property within a model, e.g. created, createdAt, updated, deletedAt, etc.
HINT 2: "count.by" can be the constant word "index" or any numeric/boolean property within the model, e.g. count, amount, isMember.
The following options are needed in order to create a micro-service to provide statistical information regarding a model, relation or nested dataset.
HINT: you can create as many micro-services as you need.
Options | Type | Requried | Possible Values | Examples |
---|---|---|---|---|
method | String | Yes | Any | stat, myStat, modelStat, etc |
endpoint | String | Yes | URL Form | /stats, /:id/stats |
description | String | No | Any | Loopback Explorer Description |
type | String | Yes | [model | relation | nested] | model, relation, nested |
relation | String | No | Model relation name | accounts iff Organization.accounts |
nested | String | No | Model nested property | locations iff Organization.locations |
count | Object | Yes | [on | by | as | avg] | SEE COUNT OPTIONS |
Different configurations can be specified depending on the needs, since you can create statistical information over Models, Relations and Nested Datasets, different configurations will be needed.
Please refer to configuration examples.
The counting options are the statistical pieces that makes possible to count results over a timeframe according to indexal counts, sums or averages.
There are different ways to create statistical information and depending on the needs different configurations may be defined.
Options | Type | Requried | Possible Values | Examples |
---|---|---|---|---|
on | String | Yes | Model date property | created, createdAt, updatedAt, etc |
by | String | Yes | [index | number property | boolean property] | index, amount, isClosed |
as | Number | No | Any numeric value (default: 1) | 1, 5, 10 |
avg | Boolean | No | [true | false] | true, false |
This mixin creates a Remote Method that wraps multiple micro-service into 1 service bundle. It provides a way to group micro-services but also bundled services by creating a statistics tree allowing to fetch a full set of data for multiple stats in just one call.
The following is an example of how to create a stats
bundled-service:
"mixins": {
"StatsWrapper": [
{
"type": "model",
"method": "bundledStats",
"endpoint": "/bundled-stats",
"description": "Loopback Explorer Description",
"wraps": [
"microServiceStats1",
"microServiceStats2",
"microServiceStats3",
"microServiceStats4"
]
}
]
}
The code defined above would create a localhost:3000/api/model/bundled-stats
endpoint that will result in an object containing the result from all of the micro-services wrapped.
HIN: Wrapping can be done in multiple levels, so you can wrap a set of micro-services, but also a set of bundled-services by creating a tree of services.
The following options are needed in order to create a bundled-service to provide statistical information regarding multiple micro-services.
HINT: you can create as many bundled-services as you need.
Options | Type | Requried | Possible Values | Examples |
---|---|---|---|---|
method | String | Yes | Any | stat, myStat, modelStat, etc |
endpoint | String | Yes | URL Form | /stats, /:id/stats |
description | String | No | Any | Loopback Explorer Description |
type | String | Yes | [model | relation | nested] | model, relation, nested |
relation | String | No | Model relation name | accounts iff Organization.accounts |
nested | String | No | Model nested property | locations iff Organization.locations |
wraps | [String] | Yes | Micro services name list | ['microService1', 'microService2', '..'] |
FAQs
A mixin to provide statistical functionallity for Loopback Models, Relations and Nested Datasets
The npm package loopback-stats-mixin receives a total of 172 weekly downloads. As such, loopback-stats-mixin popularity was classified as not popular.
We found that loopback-stats-mixin demonstrated a not healthy version release cadence and project activity because the last version was released 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
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.