PageSourceSearch

https://www.jalan.net/js/squilla_iux.js?0_1_1_0

js jalan.net collected 2026-09-24 08:47:50 UTC 27,610 bytes, 758 lines download raw bytes

1var __extends = (this && this.__extends) || (function () {
2    var extendStatics = function (d, b) {
3        extendStatics = Object.setPrototypeOf ||
4            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6        return extendStatics(d, b);
7    };
8    return function (d, b) {
9        if (typeof b !== "function" && b !== null)
10            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11        extendStatics(d, b);
12        function __() { this.constructor = d; }
13        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14    };
15})();
16var SquillaIUX;
17(function (SquillaIUX) {
18    function emptyConfigData() {
19        return { tests: {} };
20    }
21    SquillaIUX.emptyConfigData = emptyConfigData;
22})(SquillaIUX || (SquillaIUX = {}));
23var SquillaIUX;
24(function (SquillaIUX) {
25    function convertTestConfigData(_data) {
26        if (!_data) {
27            return null;
28        }
29        var testConfig = _data;
30        if (typeof _data.cookieName !== "undefined") {
31            testConfig.storeKeyName = _data.cookieName;
32        }
33        if (typeof _data.remakeCookie !== "undefined") {
34            testConfig.remakeValue = _data.remakeCookie;
35        }
36        if (typeof _data.patterns !== "undefined") {
37            for (var i = 0, l = _data.patterns.length; i < l; i++) {
38                if (typeof _data.patterns[i].cookie !== "undefined") {
39                    testConfig.patterns[i].range = _data.patterns[i].cookie;
40                }
41            }
42        }
43        return testConfig;
44    }
45    SquillaIUX.convertTestConfigData = convertTestConfigData;
46    function convertConfigData(_data) {
47        var configData = SquillaIUX.emptyConfigData();
48        if (!_data) {
49            return configData;
50        }
51        if (typeof _data.tests !== "undefined") {
52            for (var testName in _data.tests) {
53                configData.tests[testName] = convertTestConfigData(_data.tests[testName]);
54            }
55        }
56        return configData;
57    }
58    SquillaIUX.convertConfigData = convertConfigData;
59})(SquillaIUX || (SquillaIUX = {}));
60var SquillaIUX;
61(function (SquillaIUX) {
62    var Config = (function () {
63        function Config(configData) {
64            this.setConfigData(configData);
65        }
66        Config.prototype.setConfigData = function (_data) {
67            if (_data) {
68                this.data = SquillaIUX.convertConfigData(_data);
69            }
70            else {
71                this.data = SquillaIUX.emptyConfigData();
72            }
73        };
74        Config.prototype.getTest = function (testName) {
75            if (!this.data) {
76                return null;
77            }
78            return this.data.tests[testName];
79        };
80        Config.prototype.getTests = function () {
81            if (!this.data) {
82                return null;
83            }
84            return this.data.tests;
85        };
86        Config.prototype.setTest = function (testName, testConfig) {
87            if (!this.data) {
88                this.setConfigData(null);
89            }
90            this.data.tests = this.data.tests || {};
91            this.data.tests[testName] = SquillaIUX.convertTestConfigData(testConfig);
92        };
93        return Config;
94    }());
95    SquillaIUX.Config = Config;
96})(SquillaIUX || (SquillaIUX = {}));
97var SquillaIUX;
98(function (SquillaIUX) {
99    var originalPattern = "O";
100    function setOriginalPattern(pattern) {
101        originalPattern = pattern;
102    }
103    SquillaIUX.setOriginalPattern = setOriginalPattern;
104    function getOriginalPattern() {
105        return originalPattern;
106    }
107    SquillaIUX.getOriginalPattern = getOriginalPattern;
108    var cookieExpiresDate = 14;
109    function setTestCookieExpiresDate(date) {
110        cookieExpiresDate = date;
111    }
112    SquillaIUX.setTestCookieExpiresDate = setTestCookieExpiresDate;
113    function getTestCookieExpiresDate() {
114        return cookieExpiresDate;
115    }
116    SquillaIUX.getTestCookieExpiresDate = getTestCookieExpiresDate;
117    var storageKeyName = "jln_ab_squilla";
118    function setStorageKeyName(name) {
119        storageKeyName = name;
120    }
121    SquillaIUX.setStorageKeyName = setStorageKeyName;
122    function getStorageKeyName() {
123        return storageKeyName;
124    }
125    SquillaIUX.getStorageKeyName = getStorageKeyName;
126    var storageExpiresDate = 14;
127    function setStorageExpiresDate(date) {
128        storageExpiresDate = date;
129    }
130    SquillaIUX.setStorageExpiresDate = setStorageExpiresDate;
131    function getStorageExpiresDate() {
132        return storageExpiresDate;
133    }
134    SquillaIUX.getStorageExpiresDate = getStorageExpiresDate;
135    var StoreType;
136    (function (StoreType) {
137        StoreType[StoreType["cookie"] = 0] = "cookie";
138        StoreType[StoreType["localStorage"] = 1] = "localStorage";
139    })(StoreType = SquillaIUX.StoreType || (SquillaIUX.StoreType = {}));
140    var storeType = StoreType.localStorage;
141    function setStoreType(type) {
142        storeType = type;
143    }
144    SquillaIUX.setStoreType = setStoreType;
145    function getStoreType() {
146        return storeType;
147    }
148    SquillaIUX.getStoreType = getStoreType;
149    function sendResult(testKey, pattern) {
150        pattern = pattern || originalPattern;
151        window["iux_abtest"] = testKey + "-" + pattern;
152        return;
153    }
154    SquillaIUX.sendResult = sendResult;
155    function setSendResultFunction(fn) {
156        var _fn = fn;
157        SquillaIUX.sendResult = function (key, pat) {
158            if (pat === void 0) { pat = originalPattern; }
159            _fn(key, pat);
160        };
161    }
162    SquillaIUX.setSendResultFunction = setSendResultFunction;
163})(SquillaIUX || (SquillaIUX = {}));
164var SquillaIUX;
165(function (SquillaIUX) {
166    function isBot() {
167        var ua = (function () {
168            if (!navigator || !navigator.userAgent) {
169                return null;
170            }
171            return navigator.userAgent;
172        })();
173        return (!ua ||
174            !/^Mozilla|^DoCoMo|^KDDI|^SoftBank|^Opera|^Dalvik|^BlackBerry/.test(ua) ||
175            /[b|B]ot|[c|C]rawler|[s|S]pider/.test(ua));
176    }
177    SquillaIUX.isBot = isBot;
178    function triggerCall(checkTrigger, fn) {
179        var ti, isDone = false, d = document;
180        if (checkTrigger()) {
181            fn();
182            return;
183        }
184        var onReadyStateChange = function () {
185            if (d.readyState === "interactive") {
186                if (!isDone) {
187                    if (checkTrigger()) {
188                        isDone = true;
189                        fn();
190                    }
191                }
192                return;
193            }
194            if (d.readyState === "complete") {
195                if (!isDone) {
196                    isDone = true;
197                    if (checkTrigger()) {
198                        fn();
199                    }
200                }
201            }
202        };
203        if (d.addEventListener) {
204            d.addEventListener("readystatechange", onReadyStateChange);
205        }
206        else {
207            d.onreadystatechange = onReadyStateChange;
208        }
209        ti = setInterval(function () {
210            if (isDone) {
211                clearInterval(ti);
212                return;
213            }
214            if (checkTrigger()) {
215                clearInterval(ti);
216                isDone = true;
217                fn();
218            }
219        }, 0);
220    }
221    function triggerBySelector(selector, fn) {
222        var checkTrigger, d = document;
223        if (typeof jQuery === "undefined") {
224            if (!d.querySelectorAll) {
225                checkTrigger = function () {
226                    return false;
227                };
228            }
229            checkTrigger = function () {
230                return d.querySelectorAll(selector).length > 0;
231            };
232        }
233        else {
234            checkTrigger = function () {
235                return jQuery(selector).length > 0;
236            };
237        }
238        triggerCall(checkTrigger, fn);
239    }
240    SquillaIUX.triggerBySelector = triggerBySelector;
241    function triggerByVariable(varName, fn) {
242        triggerCall(function () {
243            return typeof window[varName] !== "undefined";
244        }, fn);
245    }
246    SquillaIUX.triggerByVariable = triggerByVariable;
247    function addResources(resources) {
248        addStyleResources(resources.css);
249        addScriptResources(resources.script);
250    }
251    SquillaIUX.addResources = addResources;
252    function preLoadStyleResources(csses) {
253        if (typeof csses !== "undefined" && csses.length > 0) {
254            var hd = document.getElementsByTagName("head")[0];
255            for (var _i = 0, csses_1 = csses; _i < csses_1.length; _i++) {
256                var url = csses_1[_i];
257                var link = document.createElement("link");
258                link.rel = "stylesheet";
259                link.type = "text/css";
260                link.href = url;
261                link.media = "all";
262                hd.appendChild(link);
263                setTimeout((function (_link) {
264                    return function () {
265                        hd.removeChild(_link);
266                    };
267                })(link), 10);
268            }
269        }
270    }
271    SquillaIUX.preLoadStyleResources = preLoadStyleResources;
272    function addStyleResources(csses) {
273        if (typeof csses !== "undefined" && csses.length > 0) {
274            var hd = document.getElementsByTagName("head")[0];
275            for (var _i = 0, csses_2 = csses; _i < csses_2.length; _i++) {
276                var url = csses_2[_i];
277                var link = document.createElement("link");
278                link.rel = "stylesheet";
279                link.type = "text/css";
280                link.href = url;
281                link.media = "all";
282                hd.appendChild(link);
283            }
284        }
285    }
286    SquillaIUX.addStyleResources = addStyleResources;
287    function addScriptResources(scripts) {
288        if (typeof scripts !== "undefined" && scripts.length > 0) {
289            var hd = document.getElementsByTagName("head")[0];
290            for (var _i = 0, scripts_1 = scripts; _i < scripts_1.length; _i++) {
291                var url = scripts_1[_i];
292                if (document.readyState === "complete") {
293                    var scr = document.createElement("script");
294                    scr.type = "text/javascript";
295                    scr.src = url;
296                    hd.appendChild(scr);
297                }
298                else {
299                    document.write([
300                        "<scr",
301                        'ipt type="text/javascript" src="',
302                        url,
303                        '"></scr',
304                        "ipt>"
305                    ].join(""));
306                }
307            }
308        }
309    }
310    SquillaIUX.addScriptResources = addScriptResources;
311    function isLocalStorageEnable() {
312        try {
313            var storage = window.localStorage;
314            if (!storage) {
315                return false;
316            }
317            if (!("getItem" in storage &&
318                "setItem" in storage &&
319                "removeItem" in storage)) {
320                return false;
321            }
322            var key = "__squilla__check__";
323            var val = "check";
324            storage.setItem(key, val);
325            if (storage.getItem(key) !== val) {
326                return false;
327            }
328            storage.removeItem(key);
329            return true;
330        }
331        catch (e) {
332            return false;
333        }
334    }
335    SquillaIUX.isLocalStorageEnable = isLocalStorageEnable;
336    function getCookie(key) {
337        var value = "";
338        var cookie = "; ".concat(document.cookie);
339        var parts = cookie.split("; ".concat(key, "="));
340        if (parts.length === 2) {
341            value = decodeURIComponent(parts
342                .pop()
343                .split(";")
344                .shift());
345        }
346        return value;
347    }
348    SquillaIUX.getCookie = getCookie;
349    function getObjectFromRequestParameters() {
350        var queries = location.search.replace(/^\?/, "").split("&");
351        var params = {};
352        var decode = function (s) {
353            return decodeURIComponent(s.replace(/\+/g, " "));
354        };
355        for (var _i = 0, queries_1 = queries; _i < queries_1.length; _i++) {
356            var query = queries_1[_i];
357            var pair = query.split("=");
358            if (pair[0]) {
359                try {
360                    params[decode(pair[0])] = decode(pair[1] || "");
361                }
362                catch (e) { }
363            }
364        }
365        return params;
366    }
367    SquillaIUX.getObjectFromRequestParameters = getObjectFromRequestParameters;
368})(SquillaIUX || (SquillaIUX = {}));
369var SquillaIUX;
370(function (SquillaIUX) {
371    var Test = (function () {
372        function Test(testName, config) {
373            this.events = {
374                begin: function () {
375                    return;
376                },
377                end: function () {
378                    return;
379                },
380            };
381            this.testVal = null;
382            this.addtionalStyles = [];
383            var conf = config.getTest(testName);
384            if (!conf) {
385                return;
386            }
387            if (typeof conf.stopDate !== 'undefined') {
388                try {
389                    var stopDate = Date.parse("".concat(conf.stopDate, " 23:59:59 GMT+0900"));
390                    if (stopDate < new Date().getTime()) {
391                        return;
392                    }
393                }
394                catch (e) {
395                    return;
396                }
397            }
398            var testStore = SquillaIUX.TestStoreManager.getTestStore(config);
399            if (!testStore.isEnable()) {
400                return;
401            }
402            this.testVal = testStore.getVal(testName);
403            this.testName = testName;
404            this.testConfig = conf;
405            var testPattern = testStore.checkPattern(testName);
406            this.pattern = testPattern !== null ? testPattern.pattern : void 0;
407            if (testPattern &&
408                typeof testPattern.additionalResources !== 'undefined') {
409                SquillaIUX.addScriptResources(testPattern.additionalResources.script);
410                this.addtionalStyles = testPattern.additionalResources.css;
411                SquillaIUX.preLoadStyleResources(this.addtionalStyles);
412            }
413        }
414        Test.prototype.on = function (eventName, proc) {
415            if (typeof this.events[eventName] === 'function') {
416                this.events[eventName] = proc;
417                return this;
418            }
419            if (!this.pattern) {
420                return this;
421            }
422            if (eventName === this.pattern) {
423                this.testProc = proc;
424            }
425            return this;
426        };
427        Test.prototype.begin = function (proc) {
428            return this.on('begin', proc);
429        };
430        Test.prototype.end = function (proc) {
431            return this.on('end', proc);
432        };
433        Test.prototype.proc = function (pattern, proc) {
434            return this.on(pattern, proc);
435        };
436        Test.prototype.run = function () {
437            if (SquillaIUX.isBot()) {
438                return;
439            }
440            var ydUse = SquillaIUX.getCookie('ydUse');
441            if (ydUse === '1' || ydUse === '2') {
442                return;
443            }
444            if (SquillaIUX.getObjectFromRequestParameters()['sc_ap'] === '1' ||
445                SquillaIUX.getCookie('sc_ap') === '1') {
446                return;
447            }
448            var ua = SquillaIUX.target;
449            if (ua.browser.android && ua.browser.version < 10) {
450                return;
451            }
452            if (ua.browser.ios && ua.browser.version < 16) {
453                return;
454            }
455            if (ua.browser.ffos) {
456                return;
457            }
458            if (ua.isPC && ua.browser.ie && ua.browser.version < 11) {
459                return;
460            }
461            if (ua.isPC &&
462                !ua.browser.chrome &&
463                !ua.browser.edge &&
464                !ua.browser.ie &&
465                !ua.browser.safari) {
466                return;
467            }
468            SquillaIUX.addStyleResources(this.addtionalStyles);
469            this.events['begin']();
470            if (typeof this.testProc === 'function') {
471                this.testProc();
472            }
473            if (this.testVal !== null) {
474                var conf = this.testConfig;
475                SquillaIUX.sendResult(typeof conf.testKey === 'string' ? conf.testKey : this.testName, this.pattern);
476            }
477            this.events['end']();
478        };
479        return Test;
480    }());
481    SquillaIUX.Test = Test;
482})(SquillaIUX || (SquillaIUX = {}));
483var SquillaIUX;
484(function (SquillaIUX) {
485    var config;
486    SquillaIUX.target = getUA();
487    function version() {
488        return "Squilla IUX 0.1.8 1852bf5 build: 2025-01-08T01:08Z";
489    }
490    SquillaIUX.version = version;
491    function init(_config) {
492        config = new SquillaIUX.Config(_config);
493    }
494    SquillaIUX.init = init;
495    function setTestConfig(testName, testConfig) {
496        config = config || new SquillaIUX.Config(null);
497        config.setTest(testName, testConfig);
498    }
499    SquillaIUX.setTestConfig = setTestConfig;
500    function test(testName) {
501        var abTest = new SquillaIUX.Test(testName, config);
502        return abTest;
503    }
504    SquillaIUX.test = test;
505    function __c() {
506        return config;
507    }
508    SquillaIUX.__c = __c;
509    function getUA() {
510        var target = {
511            isPC: false,
512            isTablet: false,
513            isMobile: false,
514            browser: {}
515        };
516        var ua = navigator.userAgent.toLowerCase();
517        target.isMobile =
518            (ua.indexOf("windows") !== -1 && ua.indexOf("phone") !== -1) ||
519                ua.indexOf("iphone") !== -1 ||
520                ua.indexOf("ipod") !== -1 ||
521                (ua.indexOf("android") !== -1 && ua.indexOf("mobile") !== -1) ||
522                (ua.indexOf("firefox") !== -1 && ua.indexOf("mobile") !== -1) ||
523                ua.indexOf("blackberry") !== -1;
524        target.isTablet =
525            (ua.indexOf("windows") !== -1 && ua.indexOf("touch") !== -1) ||
526                ua.indexOf("ipad") !== -1 ||
527                (ua.indexOf("android") !== -1 && ua.indexOf("mobile") === -1) ||
528                (ua.indexOf("firefox") !== -1 && ua.indexOf("tablet") !== -1) ||
529                ua.indexOf("kindle") !== -1 ||
530                ua.indexOf("silk") !== -1 ||
531                ua.indexOf("playbook") !== -1;
532        target.isPC = !target.isMobile && !target.isTablet;
533        var versionMatcher = {
534            ie: /(msie|rv:?)\s?([0-9]+)([\.0-9]+)/,
535            ios: /(os)\s([0-9]+)([_0-9]+)/,
536            android: /(android)\s([0-9]+)([\.0-9]+)?/
537        };
538        var prop, matcher;
539        target.browser.version = null;
540        target.browser.ie = /msie/.test(ua) || /trident/.test(ua);
541        target.browser.opera = /opera/.test(ua);
542        target.browser.safari = /safari/.test(ua) && !/chrome/.test(ua);
543        target.browser.iphone = /iphone/.test(ua);
544        target.browser.ipod = /ipod/.test(ua);
545        target.browser.ipad = /ipad/.test(ua);
546        target.browser.android = /android/.test(ua);
547        target.browser.ios =
548            target.browser.iphone || target.browser.ipod || target.browser.ipad;
549        target.browser.ffos =
550            /firefox/.test(ua) &&
551                /gecko/.test(ua) &&
552                /mobile/.test(ua) &&
553                !/android/.test(ua);
554        target.browser.chrome = /chrome/.test(ua) && !/edge/.test(ua);
555        target.browser.edge = /chrome/.test(ua) && /edge/.test(ua);
556        if (target.browser.ie || target.browser.ios || target.browser.android) {
557            if (target.browser.ie) {
558                prop = "ie";
559            }
560            else if (target.browser.ios) {
561                prop = "ios";
562            }
563            else if (target.browser.android) {
564                prop = "android";
565            }
566            matcher = ua.match(versionMatcher[prop]);
567            if (matcher) {
568                target.browser.version = parseInt(matcher[2], 10);
569            }
570        }
571        return target;
572    }
573})(SquillaIUX || (SquillaIUX = {}));
574var SquillaIUX;
575(function (SquillaIUX) {
576    var TestStore = (function () {
577        function TestStore(config) {
578            this.config = config;
579        }
580        TestStore.prototype.getTestConfig = function (testName) {
581            if (!this.isEnable()) {
582                return null;
583            }
584            if (!this.config) {
585                return null;
586            }
587            var conf = this.config.getTest(testName);
588            if (!conf) {
589                return null;
590            }
591            return conf;
592        };
593        TestStore.prototype.getStoreKey = function (testName) {
594            var conf = this.getTestConfig(testName);
595            if (!conf) {
596                return null;
597            }
598            return conf.storeKeyName ? conf.storeKeyName : testName;
599        };
600        TestStore.prototype.getVal = function (testName) {
601            var _this = this;
602            var conf = this.getTestConfig(testName);
603            if (!conf) {
604                return null;
605            }
606            var storeVal = (function (keyName, remake) {
607                var val = _this.getItem(keyName);
608                if (val === null && remake) {
609                    val = 0 | (Math.random() * 100);
610                }
611                return val;
612            })(this.getStoreKey(testName), typeof conf.remakeValue === "boolean" ? conf.remakeValue : true);
613            if (storeVal !== null) {
614                this.setVal(testName, storeVal);
615            }
616            return storeVal;
617        };
618        TestStore.prototype.setVal = function (testName, val) {
619            var keyName = this.getStoreKey(testName);
620            if (keyName) {
621                this.setItem(keyName, val);
622            }
623        };
624        TestStore.prototype.checkPattern = function (testName) {
625            var conf = this.getTestConfig(testName);
626            if (!conf) {
627                return null;
628            }
629            var pattern = (function (storeVal, patterns) {
630                if (storeVal !== null) {
631                    for (var _i = 0, patterns_1 = patterns; _i < patterns_1.length; _i++) {
632                        var pattern = patterns_1[_i];
633                        if (pattern.range) {
634                            if (pattern.range.min <= storeVal &&
635                                storeVal <= pattern.range.max) {
636                                return pattern;
637                            }
638                        }
639                    }
640                }
641                return null;
642            })(this.getVal(testName), conf.patterns);
643            return pattern;
644        };
645        return TestStore;
646    }());
647    SquillaIUX.TestStore = TestStore;
648    var CookieTestStore = (function (_super) {
649        __extends(CookieTestStore, _super);
650        function CookieTestStore() {
651            return _super !== null && _super.apply(this, arguments) || this;
652        }
653        CookieTestStore.prototype.isEnable = function () {
654            return "cookie" in document;
655        };
656        CookieTestStore.prototype.getItem = function (name) {
657            var cookies = document.cookie.split(";");
658            for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) {
659                var cookie = cookies_1[_i];
660                var parts = cookie.split("=");
661                var key = decodeURIComponent(parts.shift()).replace(" ", "");
662                if (key === name) {
663                    return +decodeURIComponent(parts.shift());
664                }
665            }
666            return null;
667        };
668        CookieTestStore.prototype.setItem = function (name, value) {
669            var cookie = "".concat(encodeURIComponent(name), "=").concat(encodeURIComponent(value.toString()), "; path=/");
670            var cookieExpiresDate = SquillaIUX.getTestCookieExpiresDate();
671            if (cookieExpiresDate) {
672                var dt = new Date();
673                dt.setDate(dt.getDate() + cookieExpiresDate);
674                cookie += "; expires=".concat(dt.toUTCString());
675            }
676            document.cookie = cookie;
677        };
678        return CookieTestStore;
679    }(TestStore));
680    var LocalStorageTestStore = (function (_super) {
681        __extends(LocalStorageTestStore, _super);
682        function LocalStorageTestStore() {
683            return _super !== null && _super.apply(this, arguments) || this;
684        }
685        LocalStorageTestStore.prototype.isEnable = function () {
686            return SquillaIUX.isLocalStorageEnable();
687        };
688        LocalStorageTestStore.prototype.getStorageData = function () {
689            var storageData = localStorage.getItem(SquillaIUX.getStorageKeyName());
690            if (!storageData) {
691                return null;
692            }
693            try {
694                return JSON.parse(storageData);
695            }
696            catch (e) {
697                return null;
698            }
699        };
700        LocalStorageTestStore.prototype.clearStorageData = function (storageData) {
701            var delKeys = {};
702            var dt = new Date().getTime();
703            for (var key in storageData) {
704                var data = storageData[key];
705                if (data.expires < dt) {
706                    delKeys[key] = true;
707                }
708            }
709            for (var delKey in delKeys) {
710                delete storageData[delKey];
711            }
712        };
713        LocalStorageTestStore.prototype.getItem = function (keyName) {
714            var storageData = this.getStorageData();
715            if (!storageData) {
716                return null;
717            }
718            var data = storageData[keyName];
719            if (typeof data === "undefined") {
720                return null;
721            }
722            if (data.expires < new Date().getTime()) {
723                return null;
724            }
725            return data.value;
726        };
727        LocalStorageTestStore.prototype.setItem = function (keyName, val) {
728            var storageData = this.getStorageData();
729            if (!storageData) {
730                storageData = {};
731            }
732            this.clearStorageData(storageData);
733            var expires = (function () {
734                var storageExpiresDate = SquillaIUX.getStorageExpiresDate();
735                if (storageExpiresDate) {
736                    var dt = new Date();
737                    dt.setDate(dt.getDate() + storageExpiresDate);
738                    return dt.getTime();
739                }
740                return 0;
741            })();
742            storageData[keyName] = { value: val, expires: expires };
743            localStorage.setItem(SquillaIUX.getStorageKeyName(), JSON.stringify(storageData));
744        };
745        return LocalStorageTestStore;
746    }(TestStore));
747    var TestStoreManager;
748    (function (TestStoreManager) {
749        var storeMap = {};
750        storeMap[SquillaIUX.StoreType.cookie] = CookieTestStore;
751        storeMap[SquillaIUX.StoreType.localStorage] = LocalStorageTestStore;
752        function getTestStore(config) {
753            var storeClass = storeMap[SquillaIUX.getStoreType()];
754            return new storeClass(config);
755        }
756        TestStoreManager.getTestStore = getTestStore;
757    })(TestStoreManager = SquillaIUX.TestStoreManager || (SquillaIUX.TestStoreManager = {}));
758})(SquillaIUX || (SquillaIUX = {}));

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.