
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@autoscout24/toguru-client
Advanced tools
> A `TypeScript` client for integrating Toguru into a `Node.js` environment
A
TypeScriptclient for integrating Toguru into aNode.jsenvironment
You can install the library with your package manager of choice
$ yarn add toguru-client
# or
$ npm install toguru-client
The client is fully written in TypeScript and comes with types out of the box.
The library provides a base Toguru client that is independent of the framework or environment used, and can be used for AWS lambdas, Kafka streams, generic scripts, etc where toggling functionality might be needed. It allows computing toggle activations based on an activation context. For web application contexts, we recommend using the more specialized Express bridge, see below.
import { toguruClient, TogglingApiByActivationContext } from '@autoscout24/toguru-client'
const client: TogglingApiByActivationContext = toguruClient({
endpoint: 'https://example.com/togglestate',
refreshIntervalMs: 60 * 1000, // 1 minute
})
Once we have instantiated the client, it will poll the Toguru backend automatically and fetch all toggle information. The client needs an ActivationContext (user identifier, possible forced toggles, etc) which we can provide
const activationContext: ActivationContext = {
uuid: 'ad89f957-d646-1111-1111-a02c9aa7faba',
forcedToggles: {
fooToggle: true,
},
}
We can then use this context to finally compute toggle activations
client(activationContext).isToggleEnabled({ id: 'test-toggle', default: false }) // based on toguru data, fallback to `false`
client(activationContext).isToggleEnabled({ id: 'fooToggle', default: false }) // `true`
client(activationContext).togglesForService('service') // `Toggles` based on toguru data
When working with a web application, it makes sense to compute toggle information based on the client's Request. The library provides an Express bridge that takes a base client and uses it to compute toggle activations based on a Request
Request-based client
We can create a client that will compute the activation context based on a Request.
import { client, toguruExpressBridge } from '@autoscout24/toguru-client'
const client = client({...}) // instantiate the base toguru client
const toguruExpressClient = toguruExpressBridge.client({
client,
extractors: {
uuid: toguruExpressBridge.requestExtractors.cookieValue('user-id') // will attempt to pull the user uuid from the `user-id` cookie
}
})
The extractors key allows customizing the behaviour, and will use certain defaults if not specified. When they are not specified, they will use defaults. After the express client is instantiated, it can be used to determine toggle activations
app.get('/some-route', (req, res) => {
const testToggleIsOn = client(req).isToggleEnabled({ id: 'test-toggle', default: false })
// ...
}
))
Middleware
The library also provides an Express middleware that will augment then Request object with an additional toguru attribute. The instantiation options are the same as the express client above, and can be as follows
const toguruClientMiddleware = toguruExpressBridge.middleware(...) // same as `toguruExpressBridge.client`
app.get('/some-route', toguruClientMiddleware, (req, res) => {
const testToggleIsOn = req.toguru.isToggleEnabled({ id: 'test-toggle', default: false })
// ...
}
))
In general, we recommend parametrizing your main application to take a toguru client interface, and instantiating the client itself at the very edge of your application (typically index.ts). This allows you to use different clients during tests that you can fully control without the need to introduce any mocking tools.
Following the pattern align above, a typical Express application will look like
const application = (
toguruMiddleware: Express.RequestHandler
) => {
const app = express()
app.get('/toguru-test', toguruMiddleware,...)
})
During tests, we can pass the express.stubToguruMiddleware or express.stubClient, depending on what the app is using, that easily allows you to instantiate the middleware/client with a given set of toggles, falling back to the toggle defaults for the rest.
stubToguruMiddleware([{ id: 'some-toggle', enabled: false }])
FAQs
> A `TypeScript` client for integrating Toguru into a `Node.js` environment
We found that @autoscout24/toguru-client 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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.