123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /*!
- * Connect - session - Cookie
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
- 'use strict';
- /**
- * Module dependencies.
- */
- var cookie = require('cookie')
- var deprecate = require('depd')('express-session')
- /**
- * Initialize a new `Cookie` with the given `options`.
- *
- * @param {IncomingMessage} req
- * @param {Object} options
- * @api private
- */
- var Cookie = module.exports = function Cookie(options) {
- this.path = '/';
- this.maxAge = null;
- this.httpOnly = true;
- if (options) {
- if (typeof options !== 'object') {
- throw new TypeError('argument options must be a object')
- }
- for (var key in options) {
- if (key !== 'data') {
- this[key] = options[key]
- }
- }
- }
- if (this.originalMaxAge === undefined || this.originalMaxAge === null) {
- this.originalMaxAge = this.maxAge
- }
- };
- /*!
- * Prototype.
- */
- Cookie.prototype = {
- /**
- * Set expires `date`.
- *
- * @param {Date} date
- * @api public
- */
- set expires(date) {
- this._expires = date;
- this.originalMaxAge = this.maxAge;
- },
- /**
- * Get expires `date`.
- *
- * @return {Date}
- * @api public
- */
- get expires() {
- return this._expires;
- },
- /**
- * Set expires via max-age in `ms`.
- *
- * @param {Number} ms
- * @api public
- */
- set maxAge(ms) {
- if (ms && typeof ms !== 'number' && !(ms instanceof Date)) {
- throw new TypeError('maxAge must be a number or Date')
- }
- if (ms instanceof Date) {
- deprecate('maxAge as Date; pass number of milliseconds instead')
- }
- this.expires = typeof ms === 'number'
- ? new Date(Date.now() + ms)
- : ms;
- },
- /**
- * Get expires max-age in `ms`.
- *
- * @return {Number}
- * @api public
- */
- get maxAge() {
- return this.expires instanceof Date
- ? this.expires.valueOf() - Date.now()
- : this.expires;
- },
- /**
- * Return cookie data object.
- *
- * @return {Object}
- * @api private
- */
- get data() {
- return {
- originalMaxAge: this.originalMaxAge
- , expires: this._expires
- , secure: this.secure
- , httpOnly: this.httpOnly
- , domain: this.domain
- , path: this.path
- , sameSite: this.sameSite
- }
- },
- /**
- * Return a serialized cookie string.
- *
- * @return {String}
- * @api public
- */
- serialize: function(name, val){
- return cookie.serialize(name, val, this.data);
- },
- /**
- * Return JSON representation of this cookie.
- *
- * @return {Object}
- * @api private
- */
- toJSON: function(){
- return this.data;
- }
- };
|