diff options
author | Vincent Ambo <mail@tazj.in> | 2021-09-21T10·03+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-09-21T11·29+0300 |
commit | 43b1791ec601732ac31195df96781a848360a9ac (patch) | |
tree | daae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/gitweb/static/js/lib | |
parent | 2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff) |
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping it in sync with cgit would be easier this way, but it has proven not to be a big issue. On the other hand, a vendored copy of git is an annoying maintenance burden. It is much easier to rebase the single (dottime) patch that we have. This removes the vendored copy of git and instead passes the git source code to cgit via `pkgs.srcOnly`, which includes the applied patch so that cgit can continue rendering dottime. Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/gitweb/static/js/lib')
-rw-r--r-- | third_party/git/gitweb/static/js/lib/common-lib.js | 224 | ||||
-rw-r--r-- | third_party/git/gitweb/static/js/lib/cookies.js | 114 | ||||
-rw-r--r-- | third_party/git/gitweb/static/js/lib/datetime.js | 176 |
3 files changed, 0 insertions, 514 deletions
diff --git a/third_party/git/gitweb/static/js/lib/common-lib.js b/third_party/git/gitweb/static/js/lib/common-lib.js deleted file mode 100644 index 018bbb7d4cb7..000000000000 --- a/third_party/git/gitweb/static/js/lib/common-lib.js +++ /dev/null @@ -1,224 +0,0 @@ -// Copyright (C) 2007, Fredrik Kuivinen <frekui@gmail.com> -// 2007, Petr Baudis <pasky@suse.cz> -// 2008-2011, Jakub Narebski <jnareb@gmail.com> - -/** - * @fileOverview Generic JavaScript code (helper functions) - * @license GPLv2 or later - */ - - -/* ============================================================ */ -/* ............................................................ */ -/* Padding */ - -/** - * pad INPUT on the left with STR that is assumed to have visible - * width of single character (for example nonbreakable spaces), - * to WIDTH characters - * - * example: padLeftStr(12, 3, '\u00A0') == '\u00A012' - * ('\u00A0' is nonbreakable space) - * - * @param {Number|String} input: number to pad - * @param {Number} width: visible width of output - * @param {String} str: string to prefix to string, defaults to '\u00A0' - * @returns {String} INPUT prefixed with STR x (WIDTH - INPUT.length) - */ -function padLeftStr(input, width, str) { - var prefix = ''; - if (typeof str === 'undefined') { - ch = '\u00A0'; // using ' ' doesn't work in all browsers - } - - width -= input.toString().length; - while (width > 0) { - prefix += str; - width--; - } - return prefix + input; -} - -/** - * Pad INPUT on the left to WIDTH, using given padding character CH, - * for example padLeft('a', 3, '_') is '__a' - * padLeft(4, 2) is '04' (same as padLeft(4, 2, '0')) - * - * @param {String} input: input value converted to string. - * @param {Number} width: desired length of output. - * @param {String} ch: single character to prefix to string, defaults to '0'. - * - * @returns {String} Modified string, at least SIZE length. - */ -function padLeft(input, width, ch) { - var s = input + ""; - if (typeof ch === 'undefined') { - ch = '0'; - } - - while (s.length < width) { - s = ch + s; - } - return s; -} - - -/* ............................................................ */ -/* Handling browser incompatibilities */ - -/** - * Create XMLHttpRequest object in cross-browser way - * @returns XMLHttpRequest object, or null - */ -function createRequestObject() { - try { - return new XMLHttpRequest(); - } catch (e) {} - try { - return window.createRequest(); - } catch (e) {} - try { - return new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) {} - try { - return new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e) {} - - return null; -} - - -/** - * Insert rule giving specified STYLE to given SELECTOR at the end of - * first CSS stylesheet. - * - * @param {String} selector: CSS selector, e.g. '.class' - * @param {String} style: rule contents, e.g. 'background-color: red;' - */ -function addCssRule(selector, style) { - var stylesheet = document.styleSheets[0]; - - var theRules = []; - if (stylesheet.cssRules) { // W3C way - theRules = stylesheet.cssRules; - } else if (stylesheet.rules) { // IE way - theRules = stylesheet.rules; - } - - if (stylesheet.insertRule) { // W3C way - stylesheet.insertRule(selector + ' { ' + style + ' }', theRules.length); - } else if (stylesheet.addRule) { // IE way - stylesheet.addRule(selector, style); - } -} - - -/* ............................................................ */ -/* Support for legacy browsers */ - -/** - * Provides getElementsByClassName method, if there is no native - * implementation of this method. - * - * NOTE that there are limits and differences compared to native - * getElementsByClassName as defined by e.g.: - * https://developer.mozilla.org/en/DOM/document.getElementsByClassName - * http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-getelementsbyclassname - * http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#dom-document-getelementsbyclassname - * - * Namely, this implementation supports only single class name as - * argument and not set of space-separated tokens representing classes, - * it returns Array of nodes rather than live NodeList, and has - * additional optional argument where you can limit search to given tags - * (via getElementsByTagName). - * - * Based on - * http://code.google.com/p/getelementsbyclassname/ - * http://www.dustindiaz.com/getelementsbyclass/ - * http://stackoverflow.com/questions/1818865/do-we-have-getelementsbyclassname-in-javascript - * - * See also http://ejohn.org/blog/getelementsbyclassname-speed-comparison/ - * - * @param {String} class: name of _single_ class to find - * @param {String} [taghint] limit search to given tags - * @returns {Node[]} array of matching elements - */ -if (!('getElementsByClassName' in document)) { - document.getElementsByClassName = function (classname, taghint) { - taghint = taghint || "*"; - var elements = (taghint === "*" && document.all) ? - document.all : - document.getElementsByTagName(taghint); - var pattern = new RegExp("(^|\\s)" + classname + "(\\s|$)"); - var matches= []; - for (var i = 0, j = 0, n = elements.length; i < n; i++) { - var el= elements[i]; - if (el.className && pattern.test(el.className)) { - // matches.push(el); - matches[j] = el; - j++; - } - } - return matches; - }; -} // end if - - -/* ............................................................ */ -/* unquoting/unescaping filenames */ - -/**#@+ - * @constant - */ -var escCodeRe = /\\([^0-7]|[0-7]{1,3})/g; -var octEscRe = /^[0-7]{1,3}$/; -var maybeQuotedRe = /^\"(.*)\"$/; -/**#@-*/ - -/** - * unquote maybe C-quoted filename (as used by git, i.e. it is - * in double quotes '"' if there is any escape character used) - * e.g. 'aa' -> 'aa', '"a\ta"' -> 'a a' - * - * @param {String} str: git-quoted string - * @returns {String} Unquoted and unescaped string - * - * @globals escCodeRe, octEscRe, maybeQuotedRe - */ -function unquote(str) { - function unq(seq) { - var es = { - // character escape codes, aka escape sequences (from C) - // replacements are to some extent JavaScript specific - t: "\t", // tab (HT, TAB) - n: "\n", // newline (NL) - r: "\r", // return (CR) - f: "\f", // form feed (FF) - b: "\b", // backspace (BS) - a: "\x07", // alarm (bell) (BEL) - e: "\x1B", // escape (ESC) - v: "\v" // vertical tab (VT) - }; - - if (seq.search(octEscRe) !== -1) { - // octal char sequence - return String.fromCharCode(parseInt(seq, 8)); - } else if (seq in es) { - // C escape sequence, aka character escape code - return es[seq]; - } - // quoted ordinary character - return seq; - } - - var match = str.match(maybeQuotedRe); - if (match) { - str = match[1]; - // perhaps str = eval('"'+str+'"'); would be enough? - str = str.replace(escCodeRe, - function (substr, p1, offset, s) { return unq(p1); }); - } - return str; -} - -/* end of common-lib.js */ diff --git a/third_party/git/gitweb/static/js/lib/cookies.js b/third_party/git/gitweb/static/js/lib/cookies.js deleted file mode 100644 index 66b9a072a4a3..000000000000 --- a/third_party/git/gitweb/static/js/lib/cookies.js +++ /dev/null @@ -1,114 +0,0 @@ -/** - * @fileOverview Accessing cookies from JavaScript - * @license GPLv2 or later - */ - -/* - * Based on subsection "Cookies in JavaScript" of "Professional - * JavaScript for Web Developers" by Nicholas C. Zakas and cookie - * plugin from jQuery (dual licensed under the MIT and GPL licenses) - */ - - -/** - * Create a cookie with the given name and value, - * and other optional parameters. - * - * @example - * setCookie('foo', 'bar'); // will be deleted when browser exits - * setCookie('foo', 'bar', { expires: new Date(Date.parse('Jan 1, 2012')) }); - * setCookie('foo', 'bar', { expires: 7 }); // 7 days = 1 week - * setCookie('foo', 'bar', { expires: 14, path: '/' }); - * - * @param {String} sName: Unique name of a cookie (letters, numbers, underscores). - * @param {String} sValue: The string value stored in a cookie. - * @param {Object} [options] An object literal containing key/value pairs - * to provide optional cookie attributes. - * @param {String|Number|Date} [options.expires] Either literal string to be used as cookie expires, - * or an integer specifying the expiration date from now on in days, - * or a Date object to be used as cookie expiration date. - * If a negative value is specified or a date in the past), - * the cookie will be deleted. - * If set to null or omitted, the cookie will be a session cookie - * and will not be retained when the browser exits. - * @param {String} [options.path] Restrict access of a cookie to particular directory - * (default: path of page that created the cookie). - * @param {String} [options.domain] Override what web sites are allowed to access cookie - * (default: domain of page that created the cookie). - * @param {Boolean} [options.secure] If true, the secure attribute of the cookie will be set - * and the cookie would be accessible only from secure sites - * (cookie transmission will require secure protocol like HTTPS). - */ -function setCookie(sName, sValue, options) { - options = options || {}; - if (sValue === null) { - sValue = ''; - option.expires = 'delete'; - } - - var sCookie = sName + '=' + encodeURIComponent(sValue); - - if (options.expires) { - var oExpires = options.expires, sDate; - if (oExpires === 'delete') { - sDate = 'Thu, 01 Jan 1970 00:00:00 GMT'; - } else if (typeof oExpires === 'string') { - sDate = oExpires; - } else { - var oDate; - if (typeof oExpires === 'number') { - oDate = new Date(); - oDate.setTime(oDate.getTime() + (oExpires * 24 * 60 * 60 * 1000)); // days to ms - } else { - oDate = oExpires; - } - sDate = oDate.toGMTString(); - } - sCookie += '; expires=' + sDate; - } - - if (options.path) { - sCookie += '; path=' + (options.path); - } - if (options.domain) { - sCookie += '; domain=' + (options.domain); - } - if (options.secure) { - sCookie += '; secure'; - } - document.cookie = sCookie; -} - -/** - * Get the value of a cookie with the given name. - * - * @param {String} sName: Unique name of a cookie (letters, numbers, underscores) - * @returns {String|null} The string value stored in a cookie - */ -function getCookie(sName) { - var sRE = '(?:; )?' + sName + '=([^;]*);?'; - var oRE = new RegExp(sRE); - if (oRE.test(document.cookie)) { - return decodeURIComponent(RegExp['$1']); - } else { - return null; - } -} - -/** - * Delete cookie with given name - * - * @param {String} sName: Unique name of a cookie (letters, numbers, underscores) - * @param {Object} [options] An object literal containing key/value pairs - * to provide optional cookie attributes. - * @param {String} [options.path] Must be the same as when setting a cookie - * @param {String} [options.domain] Must be the same as when setting a cookie - */ -function deleteCookie(sName, options) { - options = options || {}; - options.expires = 'delete'; - - setCookie(sName, '', options); -} - -/* end of cookies.js */ diff --git a/third_party/git/gitweb/static/js/lib/datetime.js b/third_party/git/gitweb/static/js/lib/datetime.js deleted file mode 100644 index f78c60a9125f..000000000000 --- a/third_party/git/gitweb/static/js/lib/datetime.js +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright (C) 2007, Fredrik Kuivinen <frekui@gmail.com> -// 2007, Petr Baudis <pasky@suse.cz> -// 2008-2011, Jakub Narebski <jnareb@gmail.com> - -/** - * @fileOverview Datetime manipulation: parsing and formatting - * @license GPLv2 or later - */ - - -/* ............................................................ */ -/* parsing and retrieving datetime related information */ - -/** - * used to extract hours and minutes from timezone info, e.g '-0900' - * @constant - */ -var tzRe = /^([+\-])([0-9][0-9])([0-9][0-9])$/; - -/** - * convert numeric timezone +/-ZZZZ to offset from UTC in seconds - * - * @param {String} timezoneInfo: numeric timezone '(+|-)HHMM' - * @returns {Number} offset from UTC in seconds for timezone - * - * @globals tzRe - */ -function timezoneOffset(timezoneInfo) { - var match = tzRe.exec(timezoneInfo); - var tz_sign = (match[1] === '-' ? -1 : +1); - var tz_hour = parseInt(match[2],10); - var tz_min = parseInt(match[3],10); - - return tz_sign*(((tz_hour*60) + tz_min)*60); -} - -/** - * return local (browser) timezone as offset from UTC in seconds - * - * @returns {Number} offset from UTC in seconds for local timezone - */ -function localTimezoneOffset() { - // getTimezoneOffset returns the time-zone offset from UTC, - // in _minutes_, for the current locale - return ((new Date()).getTimezoneOffset() * -60); -} - -/** - * return local (browser) timezone as numeric timezone '(+|-)HHMM' - * - * @returns {String} locat timezone as -/+ZZZZ - */ -function localTimezoneInfo() { - var tzOffsetMinutes = (new Date()).getTimezoneOffset() * -1; - - return formatTimezoneInfo(0, tzOffsetMinutes); -} - - -/** - * Parse RFC-2822 date into a Unix timestamp (into epoch) - * - * @param {String} date: date in RFC-2822 format, e.g. 'Thu, 21 Dec 2000 16:01:07 +0200' - * @returns {Number} epoch i.e. seconds since '00:00:00 1970-01-01 UTC' - */ -function parseRFC2822Date(date) { - // Date.parse accepts the IETF standard (RFC 1123 Section 5.2.14 and elsewhere) - // date syntax, which is defined in RFC 2822 (obsoletes RFC 822) - // and returns number of _milli_seconds since January 1, 1970, 00:00:00 UTC - return Date.parse(date) / 1000; -} - - -/* ............................................................ */ -/* formatting date */ - -/** - * format timezone offset as numerical timezone '(+|-)HHMM' or '(+|-)HH:MM' - * - * @param {Number} hours: offset in hours, e.g. 2 for '+0200' - * @param {Number} [minutes] offset in minutes, e.g. 30 for '-4030'; - * it is split into hours if not 0 <= minutes < 60, - * for example 1200 would give '+0100'; - * defaults to 0 - * @param {String} [sep] separator between hours and minutes part, - * default is '', might be ':' for W3CDTF (rfc-3339) - * @returns {String} timezone in '(+|-)HHMM' or '(+|-)HH:MM' format - */ -function formatTimezoneInfo(hours, minutes, sep) { - minutes = minutes || 0; // to be able to use formatTimezoneInfo(hh) - sep = sep || ''; // default format is +/-ZZZZ - - if (minutes < 0 || minutes > 59) { - hours = minutes > 0 ? Math.floor(minutes / 60) : Math.ceil(minutes / 60); - minutes = Math.abs(minutes - 60*hours); // sign of minutes is sign of hours - // NOTE: this works correctly because there is no UTC-00:30 timezone - } - - var tzSign = hours >= 0 ? '+' : '-'; - if (hours < 0) { - hours = -hours; // sign is stored in tzSign - } - - return tzSign + padLeft(hours, 2, '0') + sep + padLeft(minutes, 2, '0'); -} - -/** - * translate 'utc' and 'local' to numerical timezone - * @param {String} timezoneInfo: might be 'utc' or 'local' (browser) - */ -function normalizeTimezoneInfo(timezoneInfo) { - switch (timezoneInfo) { - case 'utc': - return '+0000'; - case 'local': // 'local' is browser timezone - return localTimezoneInfo(); - } - return timezoneInfo; -} - - -/** - * return date in local time formatted in iso-8601 like format - * 'yyyy-mm-dd HH:MM:SS +/-ZZZZ' e.g. '2005-08-07 21:49:46 +0200' - * - * @param {Number} epoch: seconds since '00:00:00 1970-01-01 UTC' - * @param {String} timezoneInfo: numeric timezone '(+|-)HHMM' - * @returns {String} date in local time in iso-8601 like format - */ -function formatDateISOLocal(epoch, timezoneInfo) { - // date corrected by timezone - var localDate = new Date(1000 * (epoch + - timezoneOffset(timezoneInfo))); - var localDateStr = // e.g. '2005-08-07' - localDate.getUTCFullYear() + '-' + - padLeft(localDate.getUTCMonth()+1, 2, '0') + '-' + - padLeft(localDate.getUTCDate(), 2, '0'); - var localTimeStr = // e.g. '21:49:46' - padLeft(localDate.getUTCHours(), 2, '0') + ':' + - padLeft(localDate.getUTCMinutes(), 2, '0') + ':' + - padLeft(localDate.getUTCSeconds(), 2, '0'); - - return localDateStr + ' ' + localTimeStr + ' ' + timezoneInfo; -} - -/** - * return date in local time formatted in rfc-2822 format - * e.g. 'Thu, 21 Dec 2000 16:01:07 +0200' - * - * @param {Number} epoch: seconds since '00:00:00 1970-01-01 UTC' - * @param {String} timezoneInfo: numeric timezone '(+|-)HHMM' - * @param {Boolean} [padDay] e.g. 'Sun, 07 Aug' if true, 'Sun, 7 Aug' otherwise - * @returns {String} date in local time in rfc-2822 format - */ -function formatDateRFC2882(epoch, timezoneInfo, padDay) { - // A short textual representation of a month, three letters - var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - // A textual representation of a day, three letters - var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - // date corrected by timezone - var localDate = new Date(1000 * (epoch + - timezoneOffset(timezoneInfo))); - var localDateStr = // e.g. 'Sun, 7 Aug 2005' or 'Sun, 07 Aug 2005' - days[localDate.getUTCDay()] + ', ' + - (padDay ? padLeft(localDate.getUTCDate(),2,'0') : localDate.getUTCDate()) + ' ' + - months[localDate.getUTCMonth()] + ' ' + - localDate.getUTCFullYear(); - var localTimeStr = // e.g. '21:49:46' - padLeft(localDate.getUTCHours(), 2, '0') + ':' + - padLeft(localDate.getUTCMinutes(), 2, '0') + ':' + - padLeft(localDate.getUTCSeconds(), 2, '0'); - - return localDateStr + ' ' + localTimeStr + ' ' + timezoneInfo; -} - -/* end of datetime.js */ |