@piggly/fastify-chassis
Version:
An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.
149 lines • 4.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CookieBuilderService = void 0;
const ddd_toolkit_1 = require("@piggly/ddd-toolkit");
/**
* @file Cookie builder service.
* @copyright Piggly Lab 2024
*/
class CookieBuilderService {
/**
* Settings.
*
* @type {CookieBuilderServiceSettings}
* @protected
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
_settings;
/**
* Constructor.
*
* @public
* @constructor
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
constructor(settings) {
this._settings = settings;
}
/**
* Clear cookie.
*
* @param {FastifyReply} reply
* @param {string} name
* @public
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
clear(reply, name) {
if (!reply?.clearCookie) {
console.warn('CookieBuilderService', 'Reply does not have clearCookie method.');
return;
}
reply.clearCookie(name, {
domain: this._settings.domain,
path: '/',
});
}
/**
* Get cookie value.
*
* @param {FastifyRequest} request
* @param {string} name
* @param {string} default_value
* @returns {TOrUndefined<string>}
* @public
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
get(request, name, default_value) {
if (!request?.cookies) {
console.warn('CookieBuilderService', 'Request does not have cookies.');
return default_value;
}
return request.cookies[name] ?? default_value;
}
/**
* Check if has cookie.
*
* @param {FastifyRequest} request
* @param {string} name
* @returns {boolean}
* @public
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
has(request, name) {
return request.cookies[name] !== undefined;
}
/**
* Register application service.
*
* @param {FastifyReply} reply
* @param {string} name
* @param {string} value
* @param {CookieOptions} options
* @public
* @static
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
set(reply, name, value, options) {
if (!reply?.setCookie) {
console.warn('CookieBuilderService', 'Reply does not have setCookie method.');
return;
}
reply.setCookie(name, value, {
domain: options?.domain ?? this._settings.domain,
encode: options?.encode,
expires: options?.expires,
httpOnly: options?.httpOnly ?? false,
maxAge: options?.maxAge,
partitioned: options?.partitioned,
path: options?.path ?? '/',
priority: options?.priority,
sameSite: options?.sameSite ?? 'lax',
secure: options?.secure ?? this._settings.environment === 'production',
signed: options?.signed ?? false,
});
}
/**
* Register application service.
*
* @param {CookieBuilderService} service
* @public
* @static
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
static register(service) {
if (ddd_toolkit_1.ServiceProvider.has('CookieBuilderService')) {
return;
}
ddd_toolkit_1.ServiceProvider.register('CookieBuilderService', service);
}
/**
* Resolve application service.
*
* @returns {CookieBuilderService}
* @throws {Error} If service is not registered.
* @public
* @static
* @memberof CookieBuilderService
* @since 5.1.0
* @author Caique Araujo <caique@piggly.com.br>
*/
static resolve() {
return ddd_toolkit_1.ServiceProvider.resolve('CookieBuilderService');
}
}
exports.CookieBuilderService = CookieBuilderService;
//# sourceMappingURL=CookieBuilderService.js.map