UNPKG

@tdb/util

Version:
57 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var Cookie = require("js-cookie"); var value_1 = require("../value/value"); var events_rx_1 = require("./events.rx"); function prop(key, defaultOptions) { if (defaultOptions === void 0) { defaultOptions = {}; } var func = function (value, options) { if (options === void 0) { options = {}; } var args = tslib_1.__assign({}, defaultOptions, options); return value === undefined ? getValue(key, args) : setValue(key, value, args); }; var result = func; result.key = key; result.isProp = true; result.options = defaultOptions; return result; } exports.prop = prop; function getValue(key, options) { var ctx = options.ctx; var cookies = (ctx && ctx.req && ctx.req.cookies) || Cookie.getJSON() || {}; var value = cookies[key]; if (key.includes('/')) { throw new Error("Cookie keys cannot contain \"/\" character. Given key: \"" + key + "\"."); } if (value_1.isJson(value)) { try { value = JSON.parse(value); } catch (error) { } } if (value === undefined && options.default !== undefined) { value = options.default; } return value; } function setValue(key, value, options) { var fireEvent = function (action, value) { events_rx_1.subject$.next({ key: key, value: value, action: action }); return value; }; if (value === null) { Cookie.remove(key); return fireEvent('DELETE'); } else { var expires = options.expires, path = options.path, domain = options.domain, secure = options.isSecure; Cookie.set(key, value, { expires: expires, path: path, domain: domain, secure: secure }); return fireEvent('UPDATE', getValue(key, options)); } } //# sourceMappingURL=prop.js.map