inertia-sails
Version:
The Sails adapter for Inertia.
37 lines (34 loc) • 1.13 kB
JavaScript
const MergeableProp = require('./mergeable-prop')
/**
* @typedef {import('../types').PropCallback} PropCallback
*/
/**
* AlwaysProp - A prop that is always resolved, even during partial reloads.
*
* By default, props are only re-evaluated when explicitly requested in a partial reload.
* AlwaysProp ensures the callback is executed on every request, making it useful for
* data that must always be fresh (e.g., CSRF tokens, current user state).
*
* @extends MergeableProp
* @example
* // Always include fresh CSRF token
* csrf: sails.inertia.always(() => req.csrfToken())
*
* @example
* // Always include current auth state
* auth: sails.inertia.always(async () => ({
* user: req.session.userId ? await User.findOne({ id: req.session.userId }) : null,
* isAuthenticated: !!req.session.userId
* }))
*/
module.exports = class AlwaysProp extends MergeableProp {
/**
* Create a new AlwaysProp instance
* @param {PropCallback} callback - The callback function to resolve the prop value
*/
constructor(callback) {
super()
/** @type {PropCallback} */
this.callback = callback
}
}