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
+ } ) ) ;
0 commit comments