PageSourceSearch

https://rsfdrive.com/js/cookies.js?2

js rsfdrive.com collected 2026-09-30 09:21:37 UTC 3,195 bytes, 114 lines download raw bytes

1/*!
2 * jQuery Cookie Plugin v1.4.1
3 * https://github.com/carhartl/jquery-cookie
4 *
5 * Copyright 2006, 2014 Klaus Hartl
6 * Released under the MIT license
7 */
8(function (factory) {
9    if (typeof define === 'function' && define.amd) {
10	// AMD (Register as an anonymous module)
11	define(['jquery'], factory);
12    } else if (typeof exports === 'object') {
13	// Node/CommonJS
14	module.exports = factory(require('jquery'));
15    } else {
16	// Browser globals
17	factory(jQuery);
18    }
19}(function ($) {
20
21    var pluses = /\+/g;
22
23    function encode(s) {
24	return config.raw ? s : encodeURIComponent(s);
25    }
26
27    function decode(s) {
28	return config.raw ? s : decodeURIComponent(s);
29    }
30
31    function stringifyCookieValue(value) {
32	return encode(config.json ? JSON.stringify(value) : String(value));
33    }
34
35    function parseCookieValue(s) {
36	if (s.indexOf('"') === 0) {
37	    // This is a quoted cookie as according to RFC2068, unescape...
38	    s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
39	}
40
41	try {
42	    // Replace server-side written pluses with spaces.
43	    // If we can't decode the cookie, ignore it, it's unusable.
44	    // If we can't parse the cookie, ignore it, it's unusable.
45	    s = decodeURIComponent(s.replace(pluses, ' '));
46	    return config.json ? JSON.parse(s) : s;
47	} catch(e) {}
48    }
49
50    function read(s, converter) {
51	var value = config.raw ? s : parseCookieValue(s);
52	return $.isFunction(converter) ? converter(value) : value;
53    }
54
55    var config = $.cookie = function (key, value, options) {
56
57	// Write
58
59	if (arguments.length > 1 && !$.isFunction(value)) {
60	    options = $.extend({}, config.defaults, options);
61
62	    if (typeof options.expires === 'number') {
63		var days = options.expires, t = options.expires = new Date();
64		t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
65	    }
66
67	    return (document.cookie = [
68		encode(key), '=', stringifyCookieValue(value),
69		options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
70		options.path    ? '; path=' + options.path : '',
71		options.domain  ? '; domain=' + options.domain : '',
72		options.secure  ? '; secure' : ''
73	    ].join(''));
74	}
75
76	// Read
77
78	var result = key ? undefined : {},
79	    // To prevent the for loop in the first place assign an empty array
80	    // in case there are no cookies at all. Also prevents odd result when
81	    // calling $.cookie().
82	    cookies = document.cookie ? document.cookie.split('; ') : [],
83	    i = 0,
84	    l = cookies.length;
85
86	for (; i < l; i++) {
87	    var parts = cookies[i].split('='),
88		name = decode(parts.shift()),
89		cookie = parts.join('=');
90
91	    if (key === name) {
92		// If second argument (value) is a function it's a converter...
93		result = read(cookie, value);
94		break;
95	    }
96
97	    // Prevent storing a cookie that we couldn't decode.
98	    if (!key && (cookie = read(cookie)) !== undefined) {
99		result[name] = cookie;
100	    }
101	}
102
103	return result;
104    };
105
106    config.defaults = {};
107
108    $.removeCookie = function (key, options) {
109	// Must not alter options, thus extending a fresh object...
110	$.cookie(key, '', $.extend({}, options, { expires: -1 }));
111	return !$.cookie(key);
112    };
113
114}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.