Helpers
Formidable includes a variety of "helper" functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.
Usage
To use a formidable helper function, you need to import it from @formidablejs/framework/lib/Support/Helpers:
import { slug } from '@formidablejs/framework/lib/Support/Helpers'
slug('Donald Pakkies') # donald-pakkies
Available Functions
Arrays & Objects
asObject
The asObject function, converts a custom object into a JavaScript object:
const object = asObject(customObject)
dotNotation
The dotNotation function turns an object into a single level value that uses "dot" notation to indicate depth:
const object = {
app: {
name: 'Formidable'
}
}
const appName = dotNotation(object, 'app.locale')
You may also use dot, an alias of dotNotation:
const object = {
app: {
name: 'Formidable'
}
}
const appName = dot(object, 'app.locale')
without
The without helper removes specified data from the given object:
without({
name: 'Donald',
city: 'East Rand'
}, ['city'])
# { name: 'Donald' }
isArray
The isArray helper checks if the given variable is a valid Array:
if isArray([])
# do something
isBoolean
The isBoolean helper checks if the given variable is a valid Boolean:
if isBoolean(variable)
# do something
isClass
The isClass helper checks if the given variable is a valid Class:
if isClass(variable)
# do something
isFunction
The isFunction helper checks if the given variable is a valid Function:
if isFunction(variable)
# do something
isNumber
The isNumber helper checks if the given variable is a valid Number:
if isNumber(variable)
# do something
isObject
The isObject helper checks if the given variable is a valid Object:
if isObject(variable)
# do something
isString
The isString helper checks if the given variable is a valid String:
if isString(variable)
# do something
toBoolean
The toBoolean helper converts the given variable into a Boolean value:
toBoolean('true') # true
toBoolean(true) # true
toBoolean(1) # true
wildcard
The wildcard helper checks if the given variable matches a wildcard:
wildcard('/user/*/edit', '/user/1/edit') # true
wildcard('/tasks/*', 'tasks/learn-imba') # true
Strings
slug
The slug helper converts the given string into a slug:
slug('Hello world', '-') # hello-world
strRandom
The strRandom helper generates a random string:
strRandom() # bfd809fc
# with custom length
strRandom(40) # 485f8c73737030df7872e2c3e5e2d3b0eb1d769f
Note,
lengthmust be divisible by 2.
Security
encrypt
The encrypt helper encrypts an object.
encrypt('Hello World') # f8867ec8f7960de147f4c2da37fe4b99
decrypt
The decrypt helper decrypts an encrypted value.
decrypt('f8867ec8f7960de147f4c2da37fe4b99') # Hello World
Miscellaneous
now
The now helper returns the current timestamp instance for Database queries:
now!
expiresIn
The expiresIn helper creates an expiration date for Redis:
expiresIn('2 minutes')
expiresIn('1 hour')
expiresIn('3 days')
config
The config function gets the value of a configuration variable. The configuration values are accessed using "dot" syntax, which includes the name of the file and the option you wish to access. A default value may be specified and is returned if the configuration option does not exist:
const appName = config('app.name')
const appName = config('app.name', 'Something else')
env
The env function retrieves the value of an environment variable or returns a default value:
const appUrl = env('APP_URL')
const appUrl = env('APP_URL', 'http://localhost:3000')
response
The response function returns a response object to the client:
response('Hello', 200)
response().json({
message: 'Hello'
})
response().code(200)
view
The view function returns a view response to the client:
view(Profile, { user }, 200)
tap & multitap
The tap function accepts two arguments: an arbitrary value and a callback. The value will be passed to the callback and then be returned by the tap function. The return value of the callback is irrelevant:
const user = tap User.forge!.first!, do(user)
user.name = 'Donald'
user.save!
If no callback is passed to the tap function, you may call any method on the given value. The return value of the method you call will always be value, regardless of what the method actually returns in its definition:
user = tap(user).save({
name: 'Donald'
})
You may also use the multitap function, this function allows you to access any method that's part of value by always returning value after you call a value method:
user = multitap(user)
.setName('Donald')
.setLocation('East Rand')
.untap!
In the example above, we have a untap method which we call at the end of our method calls, we do this so we can exit multitap.