PageSourceSearch

https://www.vernier.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.js?ver=2.1.4-wc.11.1.0

js vernier.com collected 2026-10-01 10:42:04 UTC 3,812 bytes, 147 lines download raw bytes

vendor: 1,548 bytes, lines 1-54
1/*! js-cookie v3.0.5 | MIT */
2;
3(function (global, factory) {
4	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
5		typeof define === 'function' && define.amd ? define(factory) :
6			(global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
7				var current = global.Cookies;
8				var exports = global.Cookies = factory();
9				exports.noConflict = function () { global.Cookies = current; return exports; };
10			})());
11})(this, (function () { 'use strict';
12
13	/* eslint-disable no-var */
14	function assign (target) {
15		for (var i = 1; i < arguments.length; i++) {
16			var source = arguments[i];
17			for (var key in source) {
18				target[key] = source[key];
19			}
20		}
21		return target
22	}
23	/* eslint-enable no-var */
24
25	/* eslint-disable no-var */
26	var defaultConverter = {
27		read: function (value) {
28			if (value[0] === '"') {
29				value = value.slice(1, -1);
30			}
31			return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent)
32		},
33		write: function (value) {
34			return encodeURIComponent(value).replace(
35				/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
36				decodeURIComponent
37			)
38		}
39	};
40	/* eslint-enable no-var */
41
42	/* eslint-disable no-var */
43
44	function init (converter, defaultAttributes) {
45		function set (name, value, attributes) {
46			if (typeof document === 'undefined') {
47				return
48			}
49
50			attributes = assign({}, defaultAttributes, attributes);
51
52			if (typeof attributes.expires === 'number') {
53				attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
54			}
vendor: 2,264 bytes, lines 55-147
55			if (attributes.expires) {
56				attributes.expires = attributes.expires.toUTCString();
57			}
58
59			name = encodeURIComponent(name)
60				.replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
61				.replace(/[()]/g, escape);
62
63			var stringifiedAttributes = '';
64			for (var attributeName in attributes) {
65				if (!attributes[attributeName]) {
66					continue
67				}
68
69				stringifiedAttributes += '; ' + attributeName;
70
71				if (attributes[attributeName] === true) {
72					continue
73				}
74
75				// Considers RFC 6265 section 5.2:
76				// ...
77				// 3.  If the remaining unparsed-attributes contains a %x3B (";")
78				//     character:
79				// Consume the characters of the unparsed-attributes up to,
80				// not including, the first %x3B (";") character.
81				// ...
82				stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
83			}
84
85			return (document.cookie =
86				name + '=' + converter.write(value, name) + stringifiedAttributes)
87		}
88
89		function get (name) {
90			if (typeof document === 'undefined' || (arguments.length && !name)) {
91				return
92			}
93
94			// To prevent the for loop in the first place assign an empty array
95			// in case there are no cookies at all.
96			var cookies = document.cookie ? document.cookie.split('; ') : [];
97			var jar = {};
98			for (var i = 0; i < cookies.length; i++) {
99				var parts = cookies[i].split('=');
100				var value = parts.slice(1).join('=');
101
102				try {
103					var found = decodeURIComponent(parts[0]);
104					jar[found] = converter.read(value, found);
105
106					if (name === found) {
107						break
108					}
109				} catch (e) {}
110			}
111
112			return name ? jar[name] : jar
113		}
114
115		return Object.create(
116			{
117				set,
118				get,
119				remove: function (name, attributes) {
120					set(
121						name,
122						'',
123						assign({}, attributes, {
124							expires: -1
125						})
126					);
127				},
128				withAttributes: function (attributes) {
129					return init(this.converter, assign({}, this.attributes, attributes))
130				},
131				withConverter: function (converter) {
132					return init(assign({}, this.converter, converter), this.attributes)
133				}
134			},
135			{
136				attributes: { value: Object.freeze(defaultAttributes) },
137				converter: { value: Object.freeze(converter) }
138			}
139		)
140	}
141
142	var api = init(defaultConverter, { path: '/' });
143	/* eslint-enable no-var */
144
145	return api;
146
147}));

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.