JAVASCRIPT   42

cookies.js

Guest on 22nd July 2021 02:10:56 AM

  1. /**
  2.  * Copyright آ© Magento, Inc. All rights reserved.
  3.  * See COPYING.txt for license details.
  4.  */*/
  5.  
  6. (function (factory) {
  7.     'use strict';
  8.  
  9.     if (typeof define === 'function' && define.amd) {
  10.         define([
  11.             'jquery',
  12.             'mage/mage',
  13.             'jquery/jquery.cookie'
  14.         ], factory);
  15.     } else {
  16.         factory(jQuery);
  17.     }
  18. }(function ($) {
  19.     'use strict';
  20.  
  21.   /**
  22.      * Helper for cookies manipulation
  23.      * @returns {CookieHelper}
  24.      * @constructor
  25.      */*/
  26.     var CookieHelper = function () {
  27.  
  28.       /**
  29.          * Cookie default values.
  30.          * @type {Object}
  31.          */*/
  32.         this.defaults = {
  33.             expires: null,
  34.             path: ',
  35.            domain: null,
  36.            secure: false,
  37.            lifetime: null
  38.        };
  39.  
  40.        /**
  41.         * Calculate cookie expiration date based on its lifetime.
  42.         * @param {Object} options - Cookie option values
  43.         * @return {Date|null} Calculated cookie expiration date or null if no lifetime provided.
  44.         * @private
  45.         */
  46.        function lifetimeToExpires(options, defaults) {
  47.            var expires,
  48.                lifetime;
  49.  
  50.            lifetime = options.lifetime || defaults.lifetime;
  51.  
  52.            if (lifetime && lifetime > 0) {
  53.                expires = options.expires || new Date();
  54.  
  55.                return new Date(expires.getTime() + lifetime * 1000);
  56.            }
  57.  
  58.            return null;
  59.        }
  60.  
  61.        /**
  62.         * Set a cookie'e's value by cookie name based on optional cookie options.
  63.          * @param {String} name - The name of the cookie.
  64.          * @param {String} value - The cookie's value.
  65.          * @param {Object} options - Optional options (e.g. lifetime, expires, path, etc.)
  66.          */
  67.         this.set = function (name, value, options) {
  68.             var expires,
  69.                 path,
  70.                 domain,
  71.                 secure;
  72.  
  73.             options = $.extend({}, this.defaults, options || {});
  74.             expires = lifetimeToExpires(options, this.defaults) || options.expires;
  75.             path = options.path;
  76.             domain = options.domain;
  77.             secure = options.secure;
  78.  
  79.             document.cookie = name + ' + encodeURIComponent(value) +
  80.                (expires ? ' '; expires=' + expires.toUTCString() :  '') +
  81.                 (path ? '; path=' + path : '') +
  82.                 (domain ? '; domain=' + domain : '') +
  83.                 (secure ? '; secure' : '');
  84.         };
  85.  
  86.       /**
  87.          * Get a cookie's value by cookie name.
  88.          * @param {String} name  - The name of the cookie.
  89.          * @return {(null|String)}
  90.          */*/
  91.         this.get = function (name) {
  92.             var arg = name + ',
  93.                aLength = arg.length,
  94.                cookie = document.cookie,
  95.                cLength = cookie.length,
  96.                i = 0,
  97.                j = 0;
  98.  
  99.            while (i < cLength) {
  100.                j = i + aLength;
  101.  
  102.                if (cookie.substring(i, j) === arg) {
  103.                    return this.getCookieVal(j);
  104.                }
  105.                i = cookie.indexOf('(', i) + 1;
  106.  
  107.                if (i === 0) {
  108.                    break;
  109.                }
  110.            }
  111.  
  112.            return null;
  113.        };
  114.  
  115.        /**
  116.         * Clear a cookie'e's value by name.
  117.          * @param {String} name - The name of the cookie being cleared.
  118.          */
  119.         this.clear = function (name) {
  120.             if (this.get(name)) {
  121.                 this.set(name, '', {
  122.                     expires: new Date('Jan 01 1970 00:00:01 GMT')
  123.                 });
  124.             }
  125.         };
  126.  
  127.       /**
  128.          * Return URI decoded cookie component value (e.g. expires, path, etc.) based on a
  129.          * numeric offset in the document's cookie value.
  130.          * @param {Number} offset - Offset into the document's cookie value.
  131.          * @return {String}
  132.          */*/
  133.         this.getCookieVal = function (offset) {
  134.             var cookie = document.cookie,
  135.                 endstr = cookie.indexOf(', offset);
  136.  
  137.            if (endstr === -1) {
  138.                endstr = cookie.length;
  139.            }
  140.  
  141.            return decodeURIComponent(cookie.substring(offset, endstr));
  142.        };
  143.  
  144.        return this;
  145.    };
  146.  
  147.    $.extend(true, $, {
  148.        mage: {
  149.            cookies: new CookieHelper()
  150.        }
  151.    });
  152.  
  153.    return function (pageOptions) {
  154.        $.extend($.mage.cookies.defaults, pageOptions);
  155.        $.extend($.cookie.defaults, $.mage.cookies.defaults);
  156.    };
  157. }));

Raw Paste


Login or Register to edit or fork this paste. It's free.