Nest.js SDK Usage
DevCycle Client
With the DevCycleModule imported, the DevCycleClient
can be injected into your controllers or providers.
The Nest.js SDK is a wrapper for DevCycle's Node.js SDK. For more information about methods available on the DevCycleClient, see the Node.js Usage documentation.
import { DevCycleClient } from '@devcycle/nestjs-server-sdk'
export class MyController {
constructor(
private readonly devcycleClient: DevCycleClient
) {}
async update() {
const user = {
user_id: 'user1@devcycle.com',
name: 'user 1 name',
customData: {
customKey: 'customValue',
},
}
const variable = this.devcycleClient.variable(user, 'test-variable', false)
}
}
DevCycle Service
With the DevCycleModule imported, the DevCycleService
can be injected into your controllers or providers. The DevCycleService methods evaluate variables with the user returned from your userFactory, so you don't need to specify a user each time a method is called.
import { DevCycleService } from '@devcycle/nestjs-server-sdk'
export class MyService {
constructor(
private readonly devcycleService: DevCycleService,
) {}
async update() {
const enabled = this.devcycleService.isEnabled('allow-feature-edits')
if (enabled) {
// do something
}
}
}
variableValue
The variableValue
method accepts a variable key and default value, and returns the served value.
const value = this.devcycleService.variableValue('variable-key', 'hello world')
isEnabled
The isEnabled
method accepts a key for a boolean variable. The default value is always false
when using the isEnabled
method.
const enabled = this.devcycleService.isEnabled('boolean-variable')
getUser
The getUser
method returns the user object from your userFactory.
const devcycleUser = this.devcycleService.getUser()
Decorators
DevCycle decorators evaluate variables with the user returned from your userFactory, so you don't need to specify a user each time a decorator is used.
VariableValue
The VariableValue
decorator can be used to access variable values directly in your route handlers.
async findAll(
@VariableValue({ key: 'test-variable', default: false }) testValue: boolean,
) {
if (testValue) {
// do something
}
}
RequireVariableValue
The RequireVariableValue
decorator can be used to guard an endpoint or controller.
If the user is not served the specified value, the request will return a 404 NotFound as though the endpoint does not exist.
@RequireVariableValue({
'test-variable': true
})
async findAll() {
...
}