16076 lines
621 KiB
JavaScript
16076 lines
621 KiB
JavaScript
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||
if you want to view the source visit the plugins github repository (https://github.com/phibr0/obsidian-dictionary)
|
||
*/
|
||
|
||
var __create = Object.create;
|
||
var __defProp = Object.defineProperty;
|
||
var __defProps = Object.defineProperties;
|
||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
||
var __getProtoOf = Object.getPrototypeOf;
|
||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
||
var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
|
||
var __spreadValues = (a, b) => {
|
||
for (var prop in b || (b = {}))
|
||
if (__hasOwnProp.call(b, prop))
|
||
__defNormalProp(a, prop, b[prop]);
|
||
if (__getOwnPropSymbols)
|
||
for (var prop of __getOwnPropSymbols(b)) {
|
||
if (__propIsEnum.call(b, prop))
|
||
__defNormalProp(a, prop, b[prop]);
|
||
}
|
||
return a;
|
||
};
|
||
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
||
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||
var __commonJS = (cb, mod) => function __require() {
|
||
return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||
};
|
||
var __export = (target, all) => {
|
||
__markAsModule(target);
|
||
for (var name in all)
|
||
__defProp(target, name, { get: all[name], enumerable: true });
|
||
};
|
||
var __reExport = (target, module2, desc) => {
|
||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||
for (let key2 of __getOwnPropNames(module2))
|
||
if (!__hasOwnProp.call(target, key2) && key2 !== "default")
|
||
__defProp(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc(module2, key2)) || desc.enumerable });
|
||
}
|
||
return target;
|
||
};
|
||
var __toModule = (module2) => {
|
||
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
||
};
|
||
var __async = (__this, __arguments, generator) => {
|
||
return new Promise((resolve, reject) => {
|
||
var fulfilled = (value) => {
|
||
try {
|
||
step(generator.next(value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
};
|
||
var rejected = (value) => {
|
||
try {
|
||
step(generator.throw(value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
};
|
||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||
step((generator = generator.apply(__this, __arguments)).next());
|
||
});
|
||
};
|
||
|
||
// node_modules/ms/index.js
|
||
var require_ms = __commonJS({
|
||
"node_modules/ms/index.js"(exports, module2) {
|
||
var s = 1e3;
|
||
var m = s * 60;
|
||
var h = m * 60;
|
||
var d = h * 24;
|
||
var w = d * 7;
|
||
var y = d * 365.25;
|
||
module2.exports = function(val, options) {
|
||
options = options || {};
|
||
var type = typeof val;
|
||
if (type === "string" && val.length > 0) {
|
||
return parse(val);
|
||
} else if (type === "number" && isFinite(val)) {
|
||
return options.long ? fmtLong(val) : fmtShort(val);
|
||
}
|
||
throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
|
||
};
|
||
function parse(str) {
|
||
str = String(str);
|
||
if (str.length > 100) {
|
||
return;
|
||
}
|
||
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
|
||
if (!match) {
|
||
return;
|
||
}
|
||
var n = parseFloat(match[1]);
|
||
var type = (match[2] || "ms").toLowerCase();
|
||
switch (type) {
|
||
case "years":
|
||
case "year":
|
||
case "yrs":
|
||
case "yr":
|
||
case "y":
|
||
return n * y;
|
||
case "weeks":
|
||
case "week":
|
||
case "w":
|
||
return n * w;
|
||
case "days":
|
||
case "day":
|
||
case "d":
|
||
return n * d;
|
||
case "hours":
|
||
case "hour":
|
||
case "hrs":
|
||
case "hr":
|
||
case "h":
|
||
return n * h;
|
||
case "minutes":
|
||
case "minute":
|
||
case "mins":
|
||
case "min":
|
||
case "m":
|
||
return n * m;
|
||
case "seconds":
|
||
case "second":
|
||
case "secs":
|
||
case "sec":
|
||
case "s":
|
||
return n * s;
|
||
case "milliseconds":
|
||
case "millisecond":
|
||
case "msecs":
|
||
case "msec":
|
||
case "ms":
|
||
return n;
|
||
default:
|
||
return void 0;
|
||
}
|
||
}
|
||
function fmtShort(ms) {
|
||
var msAbs = Math.abs(ms);
|
||
if (msAbs >= d) {
|
||
return Math.round(ms / d) + "d";
|
||
}
|
||
if (msAbs >= h) {
|
||
return Math.round(ms / h) + "h";
|
||
}
|
||
if (msAbs >= m) {
|
||
return Math.round(ms / m) + "m";
|
||
}
|
||
if (msAbs >= s) {
|
||
return Math.round(ms / s) + "s";
|
||
}
|
||
return ms + "ms";
|
||
}
|
||
function fmtLong(ms) {
|
||
var msAbs = Math.abs(ms);
|
||
if (msAbs >= d) {
|
||
return plural(ms, msAbs, d, "day");
|
||
}
|
||
if (msAbs >= h) {
|
||
return plural(ms, msAbs, h, "hour");
|
||
}
|
||
if (msAbs >= m) {
|
||
return plural(ms, msAbs, m, "minute");
|
||
}
|
||
if (msAbs >= s) {
|
||
return plural(ms, msAbs, s, "second");
|
||
}
|
||
return ms + " ms";
|
||
}
|
||
function plural(ms, msAbs, n, name) {
|
||
var isPlural = msAbs >= n * 1.5;
|
||
return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/debug/src/common.js
|
||
var require_common = __commonJS({
|
||
"node_modules/debug/src/common.js"(exports, module2) {
|
||
function setup(env) {
|
||
createDebug.debug = createDebug;
|
||
createDebug.default = createDebug;
|
||
createDebug.coerce = coerce;
|
||
createDebug.disable = disable;
|
||
createDebug.enable = enable;
|
||
createDebug.enabled = enabled;
|
||
createDebug.humanize = require_ms();
|
||
createDebug.destroy = destroy;
|
||
Object.keys(env).forEach((key2) => {
|
||
createDebug[key2] = env[key2];
|
||
});
|
||
createDebug.names = [];
|
||
createDebug.skips = [];
|
||
createDebug.formatters = {};
|
||
function selectColor(namespace) {
|
||
let hash2 = 0;
|
||
for (let i = 0; i < namespace.length; i++) {
|
||
hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i);
|
||
hash2 |= 0;
|
||
}
|
||
return createDebug.colors[Math.abs(hash2) % createDebug.colors.length];
|
||
}
|
||
createDebug.selectColor = selectColor;
|
||
function createDebug(namespace) {
|
||
let prevTime;
|
||
let enableOverride = null;
|
||
let namespacesCache;
|
||
let enabledCache;
|
||
function debug2(...args) {
|
||
if (!debug2.enabled) {
|
||
return;
|
||
}
|
||
const self3 = debug2;
|
||
const curr = Number(new Date());
|
||
const ms = curr - (prevTime || curr);
|
||
self3.diff = ms;
|
||
self3.prev = prevTime;
|
||
self3.curr = curr;
|
||
prevTime = curr;
|
||
args[0] = createDebug.coerce(args[0]);
|
||
if (typeof args[0] !== "string") {
|
||
args.unshift("%O");
|
||
}
|
||
let index = 0;
|
||
args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
|
||
if (match === "%%") {
|
||
return "%";
|
||
}
|
||
index++;
|
||
const formatter = createDebug.formatters[format];
|
||
if (typeof formatter === "function") {
|
||
const val = args[index];
|
||
match = formatter.call(self3, val);
|
||
args.splice(index, 1);
|
||
index--;
|
||
}
|
||
return match;
|
||
});
|
||
createDebug.formatArgs.call(self3, args);
|
||
const logFn = self3.log || createDebug.log;
|
||
logFn.apply(self3, args);
|
||
}
|
||
debug2.namespace = namespace;
|
||
debug2.useColors = createDebug.useColors();
|
||
debug2.color = createDebug.selectColor(namespace);
|
||
debug2.extend = extend;
|
||
debug2.destroy = createDebug.destroy;
|
||
Object.defineProperty(debug2, "enabled", {
|
||
enumerable: true,
|
||
configurable: false,
|
||
get: () => {
|
||
if (enableOverride !== null) {
|
||
return enableOverride;
|
||
}
|
||
if (namespacesCache !== createDebug.namespaces) {
|
||
namespacesCache = createDebug.namespaces;
|
||
enabledCache = createDebug.enabled(namespace);
|
||
}
|
||
return enabledCache;
|
||
},
|
||
set: (v) => {
|
||
enableOverride = v;
|
||
}
|
||
});
|
||
if (typeof createDebug.init === "function") {
|
||
createDebug.init(debug2);
|
||
}
|
||
return debug2;
|
||
}
|
||
function extend(namespace, delimiter) {
|
||
const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
|
||
newDebug.log = this.log;
|
||
return newDebug;
|
||
}
|
||
function enable(namespaces) {
|
||
createDebug.save(namespaces);
|
||
createDebug.namespaces = namespaces;
|
||
createDebug.names = [];
|
||
createDebug.skips = [];
|
||
let i;
|
||
const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
|
||
const len = split.length;
|
||
for (i = 0; i < len; i++) {
|
||
if (!split[i]) {
|
||
continue;
|
||
}
|
||
namespaces = split[i].replace(/\*/g, ".*?");
|
||
if (namespaces[0] === "-") {
|
||
createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
|
||
} else {
|
||
createDebug.names.push(new RegExp("^" + namespaces + "$"));
|
||
}
|
||
}
|
||
}
|
||
function disable() {
|
||
const namespaces = [
|
||
...createDebug.names.map(toNamespace),
|
||
...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
|
||
].join(",");
|
||
createDebug.enable("");
|
||
return namespaces;
|
||
}
|
||
function enabled(name) {
|
||
if (name[name.length - 1] === "*") {
|
||
return true;
|
||
}
|
||
let i;
|
||
let len;
|
||
for (i = 0, len = createDebug.skips.length; i < len; i++) {
|
||
if (createDebug.skips[i].test(name)) {
|
||
return false;
|
||
}
|
||
}
|
||
for (i = 0, len = createDebug.names.length; i < len; i++) {
|
||
if (createDebug.names[i].test(name)) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
function toNamespace(regexp) {
|
||
return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
|
||
}
|
||
function coerce(val) {
|
||
if (val instanceof Error) {
|
||
return val.stack || val.message;
|
||
}
|
||
return val;
|
||
}
|
||
function destroy() {
|
||
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
||
}
|
||
createDebug.enable(createDebug.load());
|
||
return createDebug;
|
||
}
|
||
module2.exports = setup;
|
||
}
|
||
});
|
||
|
||
// node_modules/debug/src/browser.js
|
||
var require_browser = __commonJS({
|
||
"node_modules/debug/src/browser.js"(exports, module2) {
|
||
exports.formatArgs = formatArgs;
|
||
exports.save = save;
|
||
exports.load = load;
|
||
exports.useColors = useColors;
|
||
exports.storage = localstorage();
|
||
exports.destroy = (() => {
|
||
let warned = false;
|
||
return () => {
|
||
if (!warned) {
|
||
warned = true;
|
||
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
||
}
|
||
};
|
||
})();
|
||
exports.colors = [
|
||
"#0000CC",
|
||
"#0000FF",
|
||
"#0033CC",
|
||
"#0033FF",
|
||
"#0066CC",
|
||
"#0066FF",
|
||
"#0099CC",
|
||
"#0099FF",
|
||
"#00CC00",
|
||
"#00CC33",
|
||
"#00CC66",
|
||
"#00CC99",
|
||
"#00CCCC",
|
||
"#00CCFF",
|
||
"#3300CC",
|
||
"#3300FF",
|
||
"#3333CC",
|
||
"#3333FF",
|
||
"#3366CC",
|
||
"#3366FF",
|
||
"#3399CC",
|
||
"#3399FF",
|
||
"#33CC00",
|
||
"#33CC33",
|
||
"#33CC66",
|
||
"#33CC99",
|
||
"#33CCCC",
|
||
"#33CCFF",
|
||
"#6600CC",
|
||
"#6600FF",
|
||
"#6633CC",
|
||
"#6633FF",
|
||
"#66CC00",
|
||
"#66CC33",
|
||
"#9900CC",
|
||
"#9900FF",
|
||
"#9933CC",
|
||
"#9933FF",
|
||
"#99CC00",
|
||
"#99CC33",
|
||
"#CC0000",
|
||
"#CC0033",
|
||
"#CC0066",
|
||
"#CC0099",
|
||
"#CC00CC",
|
||
"#CC00FF",
|
||
"#CC3300",
|
||
"#CC3333",
|
||
"#CC3366",
|
||
"#CC3399",
|
||
"#CC33CC",
|
||
"#CC33FF",
|
||
"#CC6600",
|
||
"#CC6633",
|
||
"#CC9900",
|
||
"#CC9933",
|
||
"#CCCC00",
|
||
"#CCCC33",
|
||
"#FF0000",
|
||
"#FF0033",
|
||
"#FF0066",
|
||
"#FF0099",
|
||
"#FF00CC",
|
||
"#FF00FF",
|
||
"#FF3300",
|
||
"#FF3333",
|
||
"#FF3366",
|
||
"#FF3399",
|
||
"#FF33CC",
|
||
"#FF33FF",
|
||
"#FF6600",
|
||
"#FF6633",
|
||
"#FF9900",
|
||
"#FF9933",
|
||
"#FFCC00",
|
||
"#FFCC33"
|
||
];
|
||
function useColors() {
|
||
if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
|
||
return true;
|
||
}
|
||
if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
|
||
return false;
|
||
}
|
||
return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
|
||
}
|
||
function formatArgs(args) {
|
||
args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
|
||
if (!this.useColors) {
|
||
return;
|
||
}
|
||
const c = "color: " + this.color;
|
||
args.splice(1, 0, c, "color: inherit");
|
||
let index = 0;
|
||
let lastC = 0;
|
||
args[0].replace(/%[a-zA-Z%]/g, (match) => {
|
||
if (match === "%%") {
|
||
return;
|
||
}
|
||
index++;
|
||
if (match === "%c") {
|
||
lastC = index;
|
||
}
|
||
});
|
||
args.splice(lastC, 0, c);
|
||
}
|
||
exports.log = console.debug || console.log || (() => {
|
||
});
|
||
function save(namespaces) {
|
||
try {
|
||
if (namespaces) {
|
||
exports.storage.setItem("debug", namespaces);
|
||
} else {
|
||
exports.storage.removeItem("debug");
|
||
}
|
||
} catch (error) {
|
||
}
|
||
}
|
||
function load() {
|
||
let r;
|
||
try {
|
||
r = exports.storage.getItem("debug");
|
||
} catch (error) {
|
||
}
|
||
if (!r && typeof process !== "undefined" && "env" in process) {
|
||
r = process.env.DEBUG;
|
||
}
|
||
return r;
|
||
}
|
||
function localstorage() {
|
||
try {
|
||
return localStorage;
|
||
} catch (error) {
|
||
}
|
||
}
|
||
module2.exports = require_common()(exports);
|
||
var { formatters } = module2.exports;
|
||
formatters.j = function(v) {
|
||
try {
|
||
return JSON.stringify(v);
|
||
} catch (error) {
|
||
return "[UnexpectedJSONParseError]: " + error.message;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
|
||
// node_modules/has-flag/index.js
|
||
var require_has_flag = __commonJS({
|
||
"node_modules/has-flag/index.js"(exports, module2) {
|
||
"use strict";
|
||
module2.exports = (flag, argv = process.argv) => {
|
||
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
||
const position = argv.indexOf(prefix + flag);
|
||
const terminatorPosition = argv.indexOf("--");
|
||
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
||
};
|
||
}
|
||
});
|
||
|
||
// node_modules/supports-color/index.js
|
||
var require_supports_color = __commonJS({
|
||
"node_modules/supports-color/index.js"(exports, module2) {
|
||
"use strict";
|
||
var os = require("os");
|
||
var tty = require("tty");
|
||
var hasFlag = require_has_flag();
|
||
var { env } = process;
|
||
var forceColor;
|
||
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
|
||
forceColor = 0;
|
||
} else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
|
||
forceColor = 1;
|
||
}
|
||
if ("FORCE_COLOR" in env) {
|
||
if (env.FORCE_COLOR === "true") {
|
||
forceColor = 1;
|
||
} else if (env.FORCE_COLOR === "false") {
|
||
forceColor = 0;
|
||
} else {
|
||
forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
|
||
}
|
||
}
|
||
function translateLevel(level) {
|
||
if (level === 0) {
|
||
return false;
|
||
}
|
||
return {
|
||
level,
|
||
hasBasic: true,
|
||
has256: level >= 2,
|
||
has16m: level >= 3
|
||
};
|
||
}
|
||
function supportsColor(haveStream, streamIsTTY) {
|
||
if (forceColor === 0) {
|
||
return 0;
|
||
}
|
||
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
|
||
return 3;
|
||
}
|
||
if (hasFlag("color=256")) {
|
||
return 2;
|
||
}
|
||
if (haveStream && !streamIsTTY && forceColor === void 0) {
|
||
return 0;
|
||
}
|
||
const min = forceColor || 0;
|
||
if (env.TERM === "dumb") {
|
||
return min;
|
||
}
|
||
if (process.platform === "win32") {
|
||
const osRelease = os.release().split(".");
|
||
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
||
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
||
}
|
||
return 1;
|
||
}
|
||
if ("CI" in env) {
|
||
if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
|
||
return 1;
|
||
}
|
||
return min;
|
||
}
|
||
if ("TEAMCITY_VERSION" in env) {
|
||
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
||
}
|
||
if (env.COLORTERM === "truecolor") {
|
||
return 3;
|
||
}
|
||
if ("TERM_PROGRAM" in env) {
|
||
const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
|
||
switch (env.TERM_PROGRAM) {
|
||
case "iTerm.app":
|
||
return version >= 3 ? 3 : 2;
|
||
case "Apple_Terminal":
|
||
return 2;
|
||
}
|
||
}
|
||
if (/-256(color)?$/i.test(env.TERM)) {
|
||
return 2;
|
||
}
|
||
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
||
return 1;
|
||
}
|
||
if ("COLORTERM" in env) {
|
||
return 1;
|
||
}
|
||
return min;
|
||
}
|
||
function getSupportLevel(stream) {
|
||
const level = supportsColor(stream, stream && stream.isTTY);
|
||
return translateLevel(level);
|
||
}
|
||
module2.exports = {
|
||
supportsColor: getSupportLevel,
|
||
stdout: translateLevel(supportsColor(true, tty.isatty(1))),
|
||
stderr: translateLevel(supportsColor(true, tty.isatty(2)))
|
||
};
|
||
}
|
||
});
|
||
|
||
// node_modules/debug/src/node.js
|
||
var require_node = __commonJS({
|
||
"node_modules/debug/src/node.js"(exports, module2) {
|
||
var tty = require("tty");
|
||
var util = require("util");
|
||
exports.init = init2;
|
||
exports.log = log;
|
||
exports.formatArgs = formatArgs;
|
||
exports.save = save;
|
||
exports.load = load;
|
||
exports.useColors = useColors;
|
||
exports.destroy = util.deprecate(() => {
|
||
}, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
||
exports.colors = [6, 2, 3, 4, 5, 1];
|
||
try {
|
||
const supportsColor = require_supports_color();
|
||
if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
|
||
exports.colors = [
|
||
20,
|
||
21,
|
||
26,
|
||
27,
|
||
32,
|
||
33,
|
||
38,
|
||
39,
|
||
40,
|
||
41,
|
||
42,
|
||
43,
|
||
44,
|
||
45,
|
||
56,
|
||
57,
|
||
62,
|
||
63,
|
||
68,
|
||
69,
|
||
74,
|
||
75,
|
||
76,
|
||
77,
|
||
78,
|
||
79,
|
||
80,
|
||
81,
|
||
92,
|
||
93,
|
||
98,
|
||
99,
|
||
112,
|
||
113,
|
||
128,
|
||
129,
|
||
134,
|
||
135,
|
||
148,
|
||
149,
|
||
160,
|
||
161,
|
||
162,
|
||
163,
|
||
164,
|
||
165,
|
||
166,
|
||
167,
|
||
168,
|
||
169,
|
||
170,
|
||
171,
|
||
172,
|
||
173,
|
||
178,
|
||
179,
|
||
184,
|
||
185,
|
||
196,
|
||
197,
|
||
198,
|
||
199,
|
||
200,
|
||
201,
|
||
202,
|
||
203,
|
||
204,
|
||
205,
|
||
206,
|
||
207,
|
||
208,
|
||
209,
|
||
214,
|
||
215,
|
||
220,
|
||
221
|
||
];
|
||
}
|
||
} catch (error) {
|
||
}
|
||
exports.inspectOpts = Object.keys(process.env).filter((key2) => {
|
||
return /^debug_/i.test(key2);
|
||
}).reduce((obj, key2) => {
|
||
const prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
|
||
return k.toUpperCase();
|
||
});
|
||
let val = process.env[key2];
|
||
if (/^(yes|on|true|enabled)$/i.test(val)) {
|
||
val = true;
|
||
} else if (/^(no|off|false|disabled)$/i.test(val)) {
|
||
val = false;
|
||
} else if (val === "null") {
|
||
val = null;
|
||
} else {
|
||
val = Number(val);
|
||
}
|
||
obj[prop] = val;
|
||
return obj;
|
||
}, {});
|
||
function useColors() {
|
||
return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd);
|
||
}
|
||
function formatArgs(args) {
|
||
const { namespace: name, useColors: useColors2 } = this;
|
||
if (useColors2) {
|
||
const c = this.color;
|
||
const colorCode = "[3" + (c < 8 ? c : "8;5;" + c);
|
||
const prefix = ` ${colorCode};1m${name} [0m`;
|
||
args[0] = prefix + args[0].split("\n").join("\n" + prefix);
|
||
args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "[0m");
|
||
} else {
|
||
args[0] = getDate() + name + " " + args[0];
|
||
}
|
||
}
|
||
function getDate() {
|
||
if (exports.inspectOpts.hideDate) {
|
||
return "";
|
||
}
|
||
return new Date().toISOString() + " ";
|
||
}
|
||
function log(...args) {
|
||
return process.stderr.write(util.format(...args) + "\n");
|
||
}
|
||
function save(namespaces) {
|
||
if (namespaces) {
|
||
process.env.DEBUG = namespaces;
|
||
} else {
|
||
delete process.env.DEBUG;
|
||
}
|
||
}
|
||
function load() {
|
||
return process.env.DEBUG;
|
||
}
|
||
function init2(debug2) {
|
||
debug2.inspectOpts = {};
|
||
const keys = Object.keys(exports.inspectOpts);
|
||
for (let i = 0; i < keys.length; i++) {
|
||
debug2.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
|
||
}
|
||
}
|
||
module2.exports = require_common()(exports);
|
||
var { formatters } = module2.exports;
|
||
formatters.o = function(v) {
|
||
this.inspectOpts.colors = this.useColors;
|
||
return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
|
||
};
|
||
formatters.O = function(v) {
|
||
this.inspectOpts.colors = this.useColors;
|
||
return util.inspect(v, this.inspectOpts);
|
||
};
|
||
}
|
||
});
|
||
|
||
// node_modules/debug/src/index.js
|
||
var require_src = __commonJS({
|
||
"node_modules/debug/src/index.js"(exports, module2) {
|
||
if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
|
||
module2.exports = require_browser();
|
||
} else {
|
||
module2.exports = require_node();
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/@kwsites/file-exists/dist/src/index.js
|
||
var require_src2 = __commonJS({
|
||
"node_modules/@kwsites/file-exists/dist/src/index.js"(exports) {
|
||
"use strict";
|
||
var __importDefault2 = exports && exports.__importDefault || function(mod) {
|
||
return mod && mod.__esModule ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var fs_1 = require("fs");
|
||
var debug_1 = __importDefault2(require_src());
|
||
var log = debug_1.default("@kwsites/file-exists");
|
||
function check(path2, isFile, isDirectory) {
|
||
log(`checking %s`, path2);
|
||
try {
|
||
const stat = fs_1.statSync(path2);
|
||
if (stat.isFile() && isFile) {
|
||
log(`[OK] path represents a file`);
|
||
return true;
|
||
}
|
||
if (stat.isDirectory() && isDirectory) {
|
||
log(`[OK] path represents a directory`);
|
||
return true;
|
||
}
|
||
log(`[FAIL] path represents something other than a file or directory`);
|
||
return false;
|
||
} catch (e) {
|
||
if (e.code === "ENOENT") {
|
||
log(`[FAIL] path is not accessible: %o`, e);
|
||
return false;
|
||
}
|
||
log(`[FATAL] %o`, e);
|
||
throw e;
|
||
}
|
||
}
|
||
function exists2(path2, type = exports.READABLE) {
|
||
return check(path2, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);
|
||
}
|
||
exports.exists = exists2;
|
||
exports.FILE = 1;
|
||
exports.FOLDER = 2;
|
||
exports.READABLE = exports.FILE + exports.FOLDER;
|
||
}
|
||
});
|
||
|
||
// node_modules/@kwsites/file-exists/dist/index.js
|
||
var require_dist = __commonJS({
|
||
"node_modules/@kwsites/file-exists/dist/index.js"(exports) {
|
||
"use strict";
|
||
function __export3(m) {
|
||
for (var p in m)
|
||
if (!exports.hasOwnProperty(p))
|
||
exports[p] = m[p];
|
||
}
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
__export3(require_src2());
|
||
}
|
||
});
|
||
|
||
// node_modules/@kwsites/promise-deferred/dist/index.js
|
||
var require_dist2 = __commonJS({
|
||
"node_modules/@kwsites/promise-deferred/dist/index.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.createDeferred = exports.deferred = void 0;
|
||
function deferred2() {
|
||
let done;
|
||
let fail;
|
||
let status = "pending";
|
||
const promise2 = new Promise((_done, _fail) => {
|
||
done = _done;
|
||
fail = _fail;
|
||
});
|
||
return {
|
||
promise: promise2,
|
||
done(result) {
|
||
if (status === "pending") {
|
||
status = "resolved";
|
||
done(result);
|
||
}
|
||
},
|
||
fail(error) {
|
||
if (status === "pending") {
|
||
status = "rejected";
|
||
fail(error);
|
||
}
|
||
},
|
||
get fulfilled() {
|
||
return status !== "pending";
|
||
},
|
||
get status() {
|
||
return status;
|
||
}
|
||
};
|
||
}
|
||
exports.deferred = deferred2;
|
||
exports.createDeferred = deferred2;
|
||
exports.default = deferred2;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/types.js
|
||
var require_types = __commonJS({
|
||
"node_modules/diff2html/lib/types.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.DiffStyleType = exports.LineMatchingType = exports.OutputFormatType = exports.LineType = void 0;
|
||
var LineType;
|
||
(function(LineType2) {
|
||
LineType2["INSERT"] = "insert";
|
||
LineType2["DELETE"] = "delete";
|
||
LineType2["CONTEXT"] = "context";
|
||
})(LineType = exports.LineType || (exports.LineType = {}));
|
||
exports.OutputFormatType = {
|
||
LINE_BY_LINE: "line-by-line",
|
||
SIDE_BY_SIDE: "side-by-side"
|
||
};
|
||
exports.LineMatchingType = {
|
||
LINES: "lines",
|
||
WORDS: "words",
|
||
NONE: "none"
|
||
};
|
||
exports.DiffStyleType = {
|
||
WORD: "word",
|
||
CHAR: "char"
|
||
};
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/utils.js
|
||
var require_utils = __commonJS({
|
||
"node_modules/diff2html/lib/utils.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.hashCode = exports.unifyPath = exports.escapeForRegExp = void 0;
|
||
var specials = [
|
||
"-",
|
||
"[",
|
||
"]",
|
||
"/",
|
||
"{",
|
||
"}",
|
||
"(",
|
||
")",
|
||
"*",
|
||
"+",
|
||
"?",
|
||
".",
|
||
"\\",
|
||
"^",
|
||
"$",
|
||
"|"
|
||
];
|
||
var regex = RegExp("[" + specials.join("\\") + "]", "g");
|
||
function escapeForRegExp(str) {
|
||
return str.replace(regex, "\\$&");
|
||
}
|
||
exports.escapeForRegExp = escapeForRegExp;
|
||
function unifyPath(path2) {
|
||
return path2 ? path2.replace(/\\/g, "/") : path2;
|
||
}
|
||
exports.unifyPath = unifyPath;
|
||
function hashCode(text2) {
|
||
var i, chr, len;
|
||
var hash2 = 0;
|
||
for (i = 0, len = text2.length; i < len; i++) {
|
||
chr = text2.charCodeAt(i);
|
||
hash2 = (hash2 << 5) - hash2 + chr;
|
||
hash2 |= 0;
|
||
}
|
||
return hash2;
|
||
}
|
||
exports.hashCode = hashCode;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/diff-parser.js
|
||
var require_diff_parser = __commonJS({
|
||
"node_modules/diff2html/lib/diff-parser.js"(exports) {
|
||
"use strict";
|
||
var __spreadArray2 = exports && exports.__spreadArray || function(to, from, pack) {
|
||
if (pack || arguments.length === 2)
|
||
for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar)
|
||
ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || Array.prototype.slice.call(from));
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.parse = void 0;
|
||
var types_1 = require_types();
|
||
var utils_1 = require_utils();
|
||
function getExtension(filename, language) {
|
||
var filenameParts = filename.split(".");
|
||
return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language;
|
||
}
|
||
function startsWithAny(str, prefixes) {
|
||
return prefixes.reduce(function(startsWith, prefix) {
|
||
return startsWith || str.startsWith(prefix);
|
||
}, false);
|
||
}
|
||
var baseDiffFilenamePrefixes = ["a/", "b/", "i/", "w/", "c/", "o/"];
|
||
function getFilename(line, linePrefix, extraPrefix) {
|
||
var prefixes = extraPrefix !== void 0 ? __spreadArray2(__spreadArray2([], baseDiffFilenamePrefixes, true), [extraPrefix], false) : baseDiffFilenamePrefixes;
|
||
var FilenameRegExp = linePrefix ? new RegExp("^".concat((0, utils_1.escapeForRegExp)(linePrefix), ' "?(.+?)"?$')) : new RegExp('^"?(.+?)"?$');
|
||
var _a2 = FilenameRegExp.exec(line) || [], _b = _a2[1], filename = _b === void 0 ? "" : _b;
|
||
var matchingPrefix = prefixes.find(function(p) {
|
||
return filename.indexOf(p) === 0;
|
||
});
|
||
var fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename;
|
||
return fnameWithoutPrefix.replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/, "");
|
||
}
|
||
function getSrcFilename(line, srcPrefix) {
|
||
return getFilename(line, "---", srcPrefix);
|
||
}
|
||
function getDstFilename(line, dstPrefix) {
|
||
return getFilename(line, "+++", dstPrefix);
|
||
}
|
||
function parse(diffInput, config) {
|
||
if (config === void 0) {
|
||
config = {};
|
||
}
|
||
var files = [];
|
||
var currentFile = null;
|
||
var currentBlock = null;
|
||
var oldLine = null;
|
||
var oldLine2 = null;
|
||
var newLine = null;
|
||
var possibleOldName = null;
|
||
var possibleNewName = null;
|
||
var oldFileNameHeader = "--- ";
|
||
var newFileNameHeader = "+++ ";
|
||
var hunkHeaderPrefix = "@@";
|
||
var oldMode = /^old mode (\d{6})/;
|
||
var newMode = /^new mode (\d{6})/;
|
||
var deletedFileMode = /^deleted file mode (\d{6})/;
|
||
var newFileMode = /^new file mode (\d{6})/;
|
||
var copyFrom = /^copy from "?(.+)"?/;
|
||
var copyTo = /^copy to "?(.+)"?/;
|
||
var renameFrom = /^rename from "?(.+)"?/;
|
||
var renameTo = /^rename to "?(.+)"?/;
|
||
var similarityIndex = /^similarity index (\d+)%/;
|
||
var dissimilarityIndex = /^dissimilarity index (\d+)%/;
|
||
var index = /^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/;
|
||
var binaryFiles = /^Binary files (.*) and (.*) differ/;
|
||
var binaryDiff = /^GIT binary patch/;
|
||
var combinedIndex = /^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/;
|
||
var combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/;
|
||
var combinedNewFile = /^new file mode (\d{6})/;
|
||
var combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/;
|
||
var diffLines = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n");
|
||
function saveBlock() {
|
||
if (currentBlock !== null && currentFile !== null) {
|
||
currentFile.blocks.push(currentBlock);
|
||
currentBlock = null;
|
||
}
|
||
}
|
||
function saveFile() {
|
||
if (currentFile !== null) {
|
||
if (!currentFile.oldName && possibleOldName !== null) {
|
||
currentFile.oldName = possibleOldName;
|
||
}
|
||
if (!currentFile.newName && possibleNewName !== null) {
|
||
currentFile.newName = possibleNewName;
|
||
}
|
||
if (currentFile.newName) {
|
||
files.push(currentFile);
|
||
currentFile = null;
|
||
}
|
||
}
|
||
possibleOldName = null;
|
||
possibleNewName = null;
|
||
}
|
||
function startFile() {
|
||
saveBlock();
|
||
saveFile();
|
||
currentFile = {
|
||
blocks: [],
|
||
deletedLines: 0,
|
||
addedLines: 0
|
||
};
|
||
}
|
||
function startBlock(line) {
|
||
saveBlock();
|
||
var values;
|
||
if (currentFile !== null) {
|
||
if (values = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(line)) {
|
||
currentFile.isCombined = false;
|
||
oldLine = parseInt(values[1], 10);
|
||
newLine = parseInt(values[2], 10);
|
||
} else if (values = /^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(line)) {
|
||
currentFile.isCombined = true;
|
||
oldLine = parseInt(values[1], 10);
|
||
oldLine2 = parseInt(values[2], 10);
|
||
newLine = parseInt(values[3], 10);
|
||
} else {
|
||
if (line.startsWith(hunkHeaderPrefix)) {
|
||
console.error("Failed to parse lines, starting in 0!");
|
||
}
|
||
oldLine = 0;
|
||
newLine = 0;
|
||
currentFile.isCombined = false;
|
||
}
|
||
}
|
||
currentBlock = {
|
||
lines: [],
|
||
oldStartLine: oldLine,
|
||
oldStartLine2: oldLine2,
|
||
newStartLine: newLine,
|
||
header: line
|
||
};
|
||
}
|
||
function createLine(line) {
|
||
if (currentFile === null || currentBlock === null || oldLine === null || newLine === null)
|
||
return;
|
||
var currentLine = {
|
||
content: line
|
||
};
|
||
var addedPrefixes = currentFile.isCombined ? ["+ ", " +", "++"] : ["+"];
|
||
var deletedPrefixes = currentFile.isCombined ? ["- ", " -", "--"] : ["-"];
|
||
if (startsWithAny(line, addedPrefixes)) {
|
||
currentFile.addedLines++;
|
||
currentLine.type = types_1.LineType.INSERT;
|
||
currentLine.oldNumber = void 0;
|
||
currentLine.newNumber = newLine++;
|
||
} else if (startsWithAny(line, deletedPrefixes)) {
|
||
currentFile.deletedLines++;
|
||
currentLine.type = types_1.LineType.DELETE;
|
||
currentLine.oldNumber = oldLine++;
|
||
currentLine.newNumber = void 0;
|
||
} else {
|
||
currentLine.type = types_1.LineType.CONTEXT;
|
||
currentLine.oldNumber = oldLine++;
|
||
currentLine.newNumber = newLine++;
|
||
}
|
||
currentBlock.lines.push(currentLine);
|
||
}
|
||
function existHunkHeader(line, lineIdx) {
|
||
var idx = lineIdx;
|
||
while (idx < diffLines.length - 3) {
|
||
if (line.startsWith("diff")) {
|
||
return false;
|
||
}
|
||
if (diffLines[idx].startsWith(oldFileNameHeader) && diffLines[idx + 1].startsWith(newFileNameHeader) && diffLines[idx + 2].startsWith(hunkHeaderPrefix)) {
|
||
return true;
|
||
}
|
||
idx++;
|
||
}
|
||
return false;
|
||
}
|
||
diffLines.forEach(function(line, lineIndex) {
|
||
if (!line || line.startsWith("*")) {
|
||
return;
|
||
}
|
||
var values;
|
||
var prevLine = diffLines[lineIndex - 1];
|
||
var nxtLine = diffLines[lineIndex + 1];
|
||
var afterNxtLine = diffLines[lineIndex + 2];
|
||
if (line.startsWith("diff")) {
|
||
startFile();
|
||
var gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/;
|
||
if (values = gitDiffStart.exec(line)) {
|
||
possibleOldName = getFilename(values[1], void 0, config.dstPrefix);
|
||
possibleNewName = getFilename(values[2], void 0, config.srcPrefix);
|
||
}
|
||
if (currentFile === null) {
|
||
throw new Error("Where is my file !!!");
|
||
}
|
||
currentFile.isGitDiff = true;
|
||
return;
|
||
}
|
||
if (!currentFile || !currentFile.isGitDiff && currentFile && line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) && afterNxtLine.startsWith(hunkHeaderPrefix)) {
|
||
startFile();
|
||
}
|
||
if (currentFile === null || currentFile === void 0 ? void 0 : currentFile.isTooBig) {
|
||
return;
|
||
}
|
||
if (currentFile && (typeof config.diffMaxChanges === "number" && currentFile.addedLines + currentFile.deletedLines > config.diffMaxChanges || typeof config.diffMaxLineLength === "number" && line.length > config.diffMaxLineLength)) {
|
||
currentFile.isTooBig = true;
|
||
currentFile.addedLines = 0;
|
||
currentFile.deletedLines = 0;
|
||
currentFile.blocks = [];
|
||
currentBlock = null;
|
||
var message = typeof config.diffTooBigMessage === "function" ? config.diffTooBigMessage(files.length) : "Diff too big to be displayed";
|
||
startBlock(message);
|
||
return;
|
||
}
|
||
if (line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) || line.startsWith(newFileNameHeader) && prevLine.startsWith(oldFileNameHeader)) {
|
||
if (currentFile && !currentFile.oldName && line.startsWith("--- ") && (values = getSrcFilename(line, config.srcPrefix))) {
|
||
currentFile.oldName = values;
|
||
currentFile.language = getExtension(currentFile.oldName, currentFile.language);
|
||
return;
|
||
}
|
||
if (currentFile && !currentFile.newName && line.startsWith("+++ ") && (values = getDstFilename(line, config.dstPrefix))) {
|
||
currentFile.newName = values;
|
||
currentFile.language = getExtension(currentFile.newName, currentFile.language);
|
||
return;
|
||
}
|
||
}
|
||
if (currentFile && (line.startsWith(hunkHeaderPrefix) || currentFile.isGitDiff && currentFile.oldName && currentFile.newName && !currentBlock)) {
|
||
startBlock(line);
|
||
return;
|
||
}
|
||
if (currentBlock && (line.startsWith("+") || line.startsWith("-") || line.startsWith(" "))) {
|
||
createLine(line);
|
||
return;
|
||
}
|
||
var doesNotExistHunkHeader = !existHunkHeader(line, lineIndex);
|
||
if (currentFile === null) {
|
||
throw new Error("Where is my file !!!");
|
||
}
|
||
if (values = oldMode.exec(line)) {
|
||
currentFile.oldMode = values[1];
|
||
} else if (values = newMode.exec(line)) {
|
||
currentFile.newMode = values[1];
|
||
} else if (values = deletedFileMode.exec(line)) {
|
||
currentFile.deletedFileMode = values[1];
|
||
currentFile.isDeleted = true;
|
||
} else if (values = newFileMode.exec(line)) {
|
||
currentFile.newFileMode = values[1];
|
||
currentFile.isNew = true;
|
||
} else if (values = copyFrom.exec(line)) {
|
||
if (doesNotExistHunkHeader) {
|
||
currentFile.oldName = values[1];
|
||
}
|
||
currentFile.isCopy = true;
|
||
} else if (values = copyTo.exec(line)) {
|
||
if (doesNotExistHunkHeader) {
|
||
currentFile.newName = values[1];
|
||
}
|
||
currentFile.isCopy = true;
|
||
} else if (values = renameFrom.exec(line)) {
|
||
if (doesNotExistHunkHeader) {
|
||
currentFile.oldName = values[1];
|
||
}
|
||
currentFile.isRename = true;
|
||
} else if (values = renameTo.exec(line)) {
|
||
if (doesNotExistHunkHeader) {
|
||
currentFile.newName = values[1];
|
||
}
|
||
currentFile.isRename = true;
|
||
} else if (values = binaryFiles.exec(line)) {
|
||
currentFile.isBinary = true;
|
||
currentFile.oldName = getFilename(values[1], void 0, config.srcPrefix);
|
||
currentFile.newName = getFilename(values[2], void 0, config.dstPrefix);
|
||
startBlock("Binary file");
|
||
} else if (binaryDiff.test(line)) {
|
||
currentFile.isBinary = true;
|
||
startBlock(line);
|
||
} else if (values = similarityIndex.exec(line)) {
|
||
currentFile.unchangedPercentage = parseInt(values[1], 10);
|
||
} else if (values = dissimilarityIndex.exec(line)) {
|
||
currentFile.changedPercentage = parseInt(values[1], 10);
|
||
} else if (values = index.exec(line)) {
|
||
currentFile.checksumBefore = values[1];
|
||
currentFile.checksumAfter = values[2];
|
||
values[3] && (currentFile.mode = values[3]);
|
||
} else if (values = combinedIndex.exec(line)) {
|
||
currentFile.checksumBefore = [values[2], values[3]];
|
||
currentFile.checksumAfter = values[1];
|
||
} else if (values = combinedMode.exec(line)) {
|
||
currentFile.oldMode = [values[2], values[3]];
|
||
currentFile.newMode = values[1];
|
||
} else if (values = combinedNewFile.exec(line)) {
|
||
currentFile.newFileMode = values[1];
|
||
currentFile.isNew = true;
|
||
} else if (values = combinedDeletedFile.exec(line)) {
|
||
currentFile.deletedFileMode = values[1];
|
||
currentFile.isDeleted = true;
|
||
}
|
||
});
|
||
saveBlock();
|
||
saveFile();
|
||
return files;
|
||
}
|
||
exports.parse = parse;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/base.js
|
||
var require_base = __commonJS({
|
||
"node_modules/diff/lib/diff/base.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports["default"] = Diff;
|
||
function Diff() {
|
||
}
|
||
Diff.prototype = {
|
||
diff: function diff(oldString, newString) {
|
||
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
||
var callback = options.callback;
|
||
if (typeof options === "function") {
|
||
callback = options;
|
||
options = {};
|
||
}
|
||
this.options = options;
|
||
var self3 = this;
|
||
function done(value) {
|
||
if (callback) {
|
||
setTimeout(function() {
|
||
callback(void 0, value);
|
||
}, 0);
|
||
return true;
|
||
} else {
|
||
return value;
|
||
}
|
||
}
|
||
oldString = this.castInput(oldString);
|
||
newString = this.castInput(newString);
|
||
oldString = this.removeEmpty(this.tokenize(oldString));
|
||
newString = this.removeEmpty(this.tokenize(newString));
|
||
var newLen = newString.length, oldLen = oldString.length;
|
||
var editLength = 1;
|
||
var maxEditLength = newLen + oldLen;
|
||
if (options.maxEditLength) {
|
||
maxEditLength = Math.min(maxEditLength, options.maxEditLength);
|
||
}
|
||
var bestPath = [{
|
||
newPos: -1,
|
||
components: []
|
||
}];
|
||
var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
|
||
if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
|
||
return done([{
|
||
value: this.join(newString),
|
||
count: newString.length
|
||
}]);
|
||
}
|
||
function execEditLength() {
|
||
for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
|
||
var basePath = void 0;
|
||
var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
|
||
if (addPath) {
|
||
bestPath[diagonalPath - 1] = void 0;
|
||
}
|
||
var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
|
||
if (!canAdd && !canRemove) {
|
||
bestPath[diagonalPath] = void 0;
|
||
continue;
|
||
}
|
||
if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
|
||
basePath = clonePath(removePath);
|
||
self3.pushComponent(basePath.components, void 0, true);
|
||
} else {
|
||
basePath = addPath;
|
||
basePath.newPos++;
|
||
self3.pushComponent(basePath.components, true, void 0);
|
||
}
|
||
_oldPos = self3.extractCommon(basePath, newString, oldString, diagonalPath);
|
||
if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
|
||
return done(buildValues(self3, basePath.components, newString, oldString, self3.useLongestToken));
|
||
} else {
|
||
bestPath[diagonalPath] = basePath;
|
||
}
|
||
}
|
||
editLength++;
|
||
}
|
||
if (callback) {
|
||
(function exec() {
|
||
setTimeout(function() {
|
||
if (editLength > maxEditLength) {
|
||
return callback();
|
||
}
|
||
if (!execEditLength()) {
|
||
exec();
|
||
}
|
||
}, 0);
|
||
})();
|
||
} else {
|
||
while (editLength <= maxEditLength) {
|
||
var ret = execEditLength();
|
||
if (ret) {
|
||
return ret;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
pushComponent: function pushComponent(components, added, removed) {
|
||
var last2 = components[components.length - 1];
|
||
if (last2 && last2.added === added && last2.removed === removed) {
|
||
components[components.length - 1] = {
|
||
count: last2.count + 1,
|
||
added,
|
||
removed
|
||
};
|
||
} else {
|
||
components.push({
|
||
count: 1,
|
||
added,
|
||
removed
|
||
});
|
||
}
|
||
},
|
||
extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
|
||
var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0;
|
||
while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
|
||
newPos++;
|
||
oldPos++;
|
||
commonCount++;
|
||
}
|
||
if (commonCount) {
|
||
basePath.components.push({
|
||
count: commonCount
|
||
});
|
||
}
|
||
basePath.newPos = newPos;
|
||
return oldPos;
|
||
},
|
||
equals: function equals(left, right) {
|
||
if (this.options.comparator) {
|
||
return this.options.comparator(left, right);
|
||
} else {
|
||
return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
|
||
}
|
||
},
|
||
removeEmpty: function removeEmpty(array) {
|
||
var ret = [];
|
||
for (var i = 0; i < array.length; i++) {
|
||
if (array[i]) {
|
||
ret.push(array[i]);
|
||
}
|
||
}
|
||
return ret;
|
||
},
|
||
castInput: function castInput(value) {
|
||
return value;
|
||
},
|
||
tokenize: function tokenize(value) {
|
||
return value.split("");
|
||
},
|
||
join: function join2(chars) {
|
||
return chars.join("");
|
||
}
|
||
};
|
||
function buildValues(diff, components, newString, oldString, useLongestToken) {
|
||
var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0;
|
||
for (; componentPos < componentLen; componentPos++) {
|
||
var component = components[componentPos];
|
||
if (!component.removed) {
|
||
if (!component.added && useLongestToken) {
|
||
var value = newString.slice(newPos, newPos + component.count);
|
||
value = value.map(function(value2, i) {
|
||
var oldValue = oldString[oldPos + i];
|
||
return oldValue.length > value2.length ? oldValue : value2;
|
||
});
|
||
component.value = diff.join(value);
|
||
} else {
|
||
component.value = diff.join(newString.slice(newPos, newPos + component.count));
|
||
}
|
||
newPos += component.count;
|
||
if (!component.added) {
|
||
oldPos += component.count;
|
||
}
|
||
} else {
|
||
component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
|
||
oldPos += component.count;
|
||
if (componentPos && components[componentPos - 1].added) {
|
||
var tmp = components[componentPos - 1];
|
||
components[componentPos - 1] = components[componentPos];
|
||
components[componentPos] = tmp;
|
||
}
|
||
}
|
||
}
|
||
var lastComponent = components[componentLen - 1];
|
||
if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff.equals("", lastComponent.value)) {
|
||
components[componentLen - 2].value += lastComponent.value;
|
||
components.pop();
|
||
}
|
||
return components;
|
||
}
|
||
function clonePath(path2) {
|
||
return {
|
||
newPos: path2.newPos,
|
||
components: path2.components.slice(0)
|
||
};
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/character.js
|
||
var require_character = __commonJS({
|
||
"node_modules/diff/lib/diff/character.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffChars = diffChars;
|
||
exports.characterDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var characterDiff = new _base["default"]();
|
||
exports.characterDiff = characterDiff;
|
||
function diffChars(oldStr, newStr, options) {
|
||
return characterDiff.diff(oldStr, newStr, options);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/util/params.js
|
||
var require_params = __commonJS({
|
||
"node_modules/diff/lib/util/params.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.generateOptions = generateOptions;
|
||
function generateOptions(options, defaults) {
|
||
if (typeof options === "function") {
|
||
defaults.callback = options;
|
||
} else if (options) {
|
||
for (var name in options) {
|
||
if (options.hasOwnProperty(name)) {
|
||
defaults[name] = options[name];
|
||
}
|
||
}
|
||
}
|
||
return defaults;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/word.js
|
||
var require_word = __commonJS({
|
||
"node_modules/diff/lib/diff/word.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffWords = diffWords;
|
||
exports.diffWordsWithSpace = diffWordsWithSpace;
|
||
exports.wordDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
var _params = require_params();
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
|
||
var reWhitespace = /\S/;
|
||
var wordDiff = new _base["default"]();
|
||
exports.wordDiff = wordDiff;
|
||
wordDiff.equals = function(left, right) {
|
||
if (this.options.ignoreCase) {
|
||
left = left.toLowerCase();
|
||
right = right.toLowerCase();
|
||
}
|
||
return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
|
||
};
|
||
wordDiff.tokenize = function(value) {
|
||
var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/);
|
||
for (var i = 0; i < tokens.length - 1; i++) {
|
||
if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
|
||
tokens[i] += tokens[i + 2];
|
||
tokens.splice(i + 1, 2);
|
||
i--;
|
||
}
|
||
}
|
||
return tokens;
|
||
};
|
||
function diffWords(oldStr, newStr, options) {
|
||
options = (0, _params.generateOptions)(options, {
|
||
ignoreWhitespace: true
|
||
});
|
||
return wordDiff.diff(oldStr, newStr, options);
|
||
}
|
||
function diffWordsWithSpace(oldStr, newStr, options) {
|
||
return wordDiff.diff(oldStr, newStr, options);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/line.js
|
||
var require_line = __commonJS({
|
||
"node_modules/diff/lib/diff/line.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffLines = diffLines;
|
||
exports.diffTrimmedLines = diffTrimmedLines;
|
||
exports.lineDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
var _params = require_params();
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var lineDiff = new _base["default"]();
|
||
exports.lineDiff = lineDiff;
|
||
lineDiff.tokenize = function(value) {
|
||
var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
|
||
if (!linesAndNewlines[linesAndNewlines.length - 1]) {
|
||
linesAndNewlines.pop();
|
||
}
|
||
for (var i = 0; i < linesAndNewlines.length; i++) {
|
||
var line = linesAndNewlines[i];
|
||
if (i % 2 && !this.options.newlineIsToken) {
|
||
retLines[retLines.length - 1] += line;
|
||
} else {
|
||
if (this.options.ignoreWhitespace) {
|
||
line = line.trim();
|
||
}
|
||
retLines.push(line);
|
||
}
|
||
}
|
||
return retLines;
|
||
};
|
||
function diffLines(oldStr, newStr, callback) {
|
||
return lineDiff.diff(oldStr, newStr, callback);
|
||
}
|
||
function diffTrimmedLines(oldStr, newStr, callback) {
|
||
var options = (0, _params.generateOptions)(callback, {
|
||
ignoreWhitespace: true
|
||
});
|
||
return lineDiff.diff(oldStr, newStr, options);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/sentence.js
|
||
var require_sentence = __commonJS({
|
||
"node_modules/diff/lib/diff/sentence.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffSentences = diffSentences;
|
||
exports.sentenceDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var sentenceDiff = new _base["default"]();
|
||
exports.sentenceDiff = sentenceDiff;
|
||
sentenceDiff.tokenize = function(value) {
|
||
return value.split(/(\S.+?[.!?])(?=\s+|$)/);
|
||
};
|
||
function diffSentences(oldStr, newStr, callback) {
|
||
return sentenceDiff.diff(oldStr, newStr, callback);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/css.js
|
||
var require_css = __commonJS({
|
||
"node_modules/diff/lib/diff/css.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffCss = diffCss;
|
||
exports.cssDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var cssDiff = new _base["default"]();
|
||
exports.cssDiff = cssDiff;
|
||
cssDiff.tokenize = function(value) {
|
||
return value.split(/([{}:;,]|\s+)/);
|
||
};
|
||
function diffCss(oldStr, newStr, callback) {
|
||
return cssDiff.diff(oldStr, newStr, callback);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/json.js
|
||
var require_json = __commonJS({
|
||
"node_modules/diff/lib/diff/json.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffJson = diffJson;
|
||
exports.canonicalize = canonicalize;
|
||
exports.jsonDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
var _line = require_line();
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
function _typeof(obj) {
|
||
"@babel/helpers - typeof";
|
||
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
||
_typeof = function _typeof2(obj2) {
|
||
return typeof obj2;
|
||
};
|
||
} else {
|
||
_typeof = function _typeof2(obj2) {
|
||
return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
|
||
};
|
||
}
|
||
return _typeof(obj);
|
||
}
|
||
var objectPrototypeToString = Object.prototype.toString;
|
||
var jsonDiff = new _base["default"]();
|
||
exports.jsonDiff = jsonDiff;
|
||
jsonDiff.useLongestToken = true;
|
||
jsonDiff.tokenize = _line.lineDiff.tokenize;
|
||
jsonDiff.castInput = function(value) {
|
||
var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) {
|
||
return typeof v === "undefined" ? undefinedReplacement : v;
|
||
} : _this$options$stringi;
|
||
return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " ");
|
||
};
|
||
jsonDiff.equals = function(left, right) {
|
||
return _base["default"].prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1"));
|
||
};
|
||
function diffJson(oldObj, newObj, options) {
|
||
return jsonDiff.diff(oldObj, newObj, options);
|
||
}
|
||
function canonicalize(obj, stack, replacementStack, replacer, key2) {
|
||
stack = stack || [];
|
||
replacementStack = replacementStack || [];
|
||
if (replacer) {
|
||
obj = replacer(key2, obj);
|
||
}
|
||
var i;
|
||
for (i = 0; i < stack.length; i += 1) {
|
||
if (stack[i] === obj) {
|
||
return replacementStack[i];
|
||
}
|
||
}
|
||
var canonicalizedObj;
|
||
if (objectPrototypeToString.call(obj) === "[object Array]") {
|
||
stack.push(obj);
|
||
canonicalizedObj = new Array(obj.length);
|
||
replacementStack.push(canonicalizedObj);
|
||
for (i = 0; i < obj.length; i += 1) {
|
||
canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2);
|
||
}
|
||
stack.pop();
|
||
replacementStack.pop();
|
||
return canonicalizedObj;
|
||
}
|
||
if (obj && obj.toJSON) {
|
||
obj = obj.toJSON();
|
||
}
|
||
if (_typeof(obj) === "object" && obj !== null) {
|
||
stack.push(obj);
|
||
canonicalizedObj = {};
|
||
replacementStack.push(canonicalizedObj);
|
||
var sortedKeys = [], _key;
|
||
for (_key in obj) {
|
||
if (obj.hasOwnProperty(_key)) {
|
||
sortedKeys.push(_key);
|
||
}
|
||
}
|
||
sortedKeys.sort();
|
||
for (i = 0; i < sortedKeys.length; i += 1) {
|
||
_key = sortedKeys[i];
|
||
canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
|
||
}
|
||
stack.pop();
|
||
replacementStack.pop();
|
||
} else {
|
||
canonicalizedObj = obj;
|
||
}
|
||
return canonicalizedObj;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/diff/array.js
|
||
var require_array = __commonJS({
|
||
"node_modules/diff/lib/diff/array.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.diffArrays = diffArrays;
|
||
exports.arrayDiff = void 0;
|
||
var _base = _interopRequireDefault(require_base());
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
var arrayDiff = new _base["default"]();
|
||
exports.arrayDiff = arrayDiff;
|
||
arrayDiff.tokenize = function(value) {
|
||
return value.slice();
|
||
};
|
||
arrayDiff.join = arrayDiff.removeEmpty = function(value) {
|
||
return value;
|
||
};
|
||
function diffArrays(oldArr, newArr, callback) {
|
||
return arrayDiff.diff(oldArr, newArr, callback);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/patch/parse.js
|
||
var require_parse = __commonJS({
|
||
"node_modules/diff/lib/patch/parse.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.parsePatch = parsePatch;
|
||
function parsePatch(uniDiff) {
|
||
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||
var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], list = [], i = 0;
|
||
function parseIndex() {
|
||
var index = {};
|
||
list.push(index);
|
||
while (i < diffstr.length) {
|
||
var line = diffstr[i];
|
||
if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
|
||
break;
|
||
}
|
||
var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
|
||
if (header) {
|
||
index.index = header[1];
|
||
}
|
||
i++;
|
||
}
|
||
parseFileHeader(index);
|
||
parseFileHeader(index);
|
||
index.hunks = [];
|
||
while (i < diffstr.length) {
|
||
var _line = diffstr[i];
|
||
if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
|
||
break;
|
||
} else if (/^@@/.test(_line)) {
|
||
index.hunks.push(parseHunk());
|
||
} else if (_line && options.strict) {
|
||
throw new Error("Unknown line " + (i + 1) + " " + JSON.stringify(_line));
|
||
} else {
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
function parseFileHeader(index) {
|
||
var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
|
||
if (fileHeader) {
|
||
var keyPrefix = fileHeader[1] === "---" ? "old" : "new";
|
||
var data = fileHeader[2].split(" ", 2);
|
||
var fileName = data[0].replace(/\\\\/g, "\\");
|
||
if (/^".*"$/.test(fileName)) {
|
||
fileName = fileName.substr(1, fileName.length - 2);
|
||
}
|
||
index[keyPrefix + "FileName"] = fileName;
|
||
index[keyPrefix + "Header"] = (data[1] || "").trim();
|
||
i++;
|
||
}
|
||
}
|
||
function parseHunk() {
|
||
var chunkHeaderIndex = i, chunkHeaderLine = diffstr[i++], chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
|
||
var hunk = {
|
||
oldStart: +chunkHeader[1],
|
||
oldLines: typeof chunkHeader[2] === "undefined" ? 1 : +chunkHeader[2],
|
||
newStart: +chunkHeader[3],
|
||
newLines: typeof chunkHeader[4] === "undefined" ? 1 : +chunkHeader[4],
|
||
lines: [],
|
||
linedelimiters: []
|
||
};
|
||
if (hunk.oldLines === 0) {
|
||
hunk.oldStart += 1;
|
||
}
|
||
if (hunk.newLines === 0) {
|
||
hunk.newStart += 1;
|
||
}
|
||
var addCount = 0, removeCount = 0;
|
||
for (; i < diffstr.length; i++) {
|
||
if (diffstr[i].indexOf("--- ") === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf("+++ ") === 0 && diffstr[i + 2].indexOf("@@") === 0) {
|
||
break;
|
||
}
|
||
var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? " " : diffstr[i][0];
|
||
if (operation === "+" || operation === "-" || operation === " " || operation === "\\") {
|
||
hunk.lines.push(diffstr[i]);
|
||
hunk.linedelimiters.push(delimiters[i] || "\n");
|
||
if (operation === "+") {
|
||
addCount++;
|
||
} else if (operation === "-") {
|
||
removeCount++;
|
||
} else if (operation === " ") {
|
||
addCount++;
|
||
removeCount++;
|
||
}
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
if (!addCount && hunk.newLines === 1) {
|
||
hunk.newLines = 0;
|
||
}
|
||
if (!removeCount && hunk.oldLines === 1) {
|
||
hunk.oldLines = 0;
|
||
}
|
||
if (options.strict) {
|
||
if (addCount !== hunk.newLines) {
|
||
throw new Error("Added line count did not match for hunk at line " + (chunkHeaderIndex + 1));
|
||
}
|
||
if (removeCount !== hunk.oldLines) {
|
||
throw new Error("Removed line count did not match for hunk at line " + (chunkHeaderIndex + 1));
|
||
}
|
||
}
|
||
return hunk;
|
||
}
|
||
while (i < diffstr.length) {
|
||
parseIndex();
|
||
}
|
||
return list;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/util/distance-iterator.js
|
||
var require_distance_iterator = __commonJS({
|
||
"node_modules/diff/lib/util/distance-iterator.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports["default"] = _default;
|
||
function _default(start, minLine, maxLine) {
|
||
var wantForward = true, backwardExhausted = false, forwardExhausted = false, localOffset = 1;
|
||
return function iterator() {
|
||
if (wantForward && !forwardExhausted) {
|
||
if (backwardExhausted) {
|
||
localOffset++;
|
||
} else {
|
||
wantForward = false;
|
||
}
|
||
if (start + localOffset <= maxLine) {
|
||
return localOffset;
|
||
}
|
||
forwardExhausted = true;
|
||
}
|
||
if (!backwardExhausted) {
|
||
if (!forwardExhausted) {
|
||
wantForward = true;
|
||
}
|
||
if (minLine <= start - localOffset) {
|
||
return -localOffset++;
|
||
}
|
||
backwardExhausted = true;
|
||
return iterator();
|
||
}
|
||
};
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/patch/apply.js
|
||
var require_apply = __commonJS({
|
||
"node_modules/diff/lib/patch/apply.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.applyPatch = applyPatch;
|
||
exports.applyPatches = applyPatches;
|
||
var _parse = require_parse();
|
||
var _distanceIterator = _interopRequireDefault(require_distance_iterator());
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
function applyPatch(source, uniDiff) {
|
||
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
||
if (typeof uniDiff === "string") {
|
||
uniDiff = (0, _parse.parsePatch)(uniDiff);
|
||
}
|
||
if (Array.isArray(uniDiff)) {
|
||
if (uniDiff.length > 1) {
|
||
throw new Error("applyPatch only works with a single input.");
|
||
}
|
||
uniDiff = uniDiff[0];
|
||
}
|
||
var lines = source.split(/\r\n|[\n\v\f\r\x85]/), delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], hunks = uniDiff.hunks, compareLine = options.compareLine || function(lineNumber, line2, operation2, patchContent) {
|
||
return line2 === patchContent;
|
||
}, errorCount = 0, fuzzFactor = options.fuzzFactor || 0, minLine = 0, offset = 0, removeEOFNL, addEOFNL;
|
||
function hunkFits(hunk2, toPos2) {
|
||
for (var j2 = 0; j2 < hunk2.lines.length; j2++) {
|
||
var line2 = hunk2.lines[j2], operation2 = line2.length > 0 ? line2[0] : " ", content2 = line2.length > 0 ? line2.substr(1) : line2;
|
||
if (operation2 === " " || operation2 === "-") {
|
||
if (!compareLine(toPos2 + 1, lines[toPos2], operation2, content2)) {
|
||
errorCount++;
|
||
if (errorCount > fuzzFactor) {
|
||
return false;
|
||
}
|
||
}
|
||
toPos2++;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
for (var i = 0; i < hunks.length; i++) {
|
||
var hunk = hunks[i], maxLine = lines.length - hunk.oldLines, localOffset = 0, toPos = offset + hunk.oldStart - 1;
|
||
var iterator = (0, _distanceIterator["default"])(toPos, minLine, maxLine);
|
||
for (; localOffset !== void 0; localOffset = iterator()) {
|
||
if (hunkFits(hunk, toPos + localOffset)) {
|
||
hunk.offset = offset += localOffset;
|
||
break;
|
||
}
|
||
}
|
||
if (localOffset === void 0) {
|
||
return false;
|
||
}
|
||
minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
|
||
}
|
||
var diffOffset = 0;
|
||
for (var _i = 0; _i < hunks.length; _i++) {
|
||
var _hunk = hunks[_i], _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
|
||
diffOffset += _hunk.newLines - _hunk.oldLines;
|
||
for (var j = 0; j < _hunk.lines.length; j++) {
|
||
var line = _hunk.lines[j], operation = line.length > 0 ? line[0] : " ", content = line.length > 0 ? line.substr(1) : line, delimiter = _hunk.linedelimiters[j];
|
||
if (operation === " ") {
|
||
_toPos++;
|
||
} else if (operation === "-") {
|
||
lines.splice(_toPos, 1);
|
||
delimiters.splice(_toPos, 1);
|
||
} else if (operation === "+") {
|
||
lines.splice(_toPos, 0, content);
|
||
delimiters.splice(_toPos, 0, delimiter);
|
||
_toPos++;
|
||
} else if (operation === "\\") {
|
||
var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
|
||
if (previousOperation === "+") {
|
||
removeEOFNL = true;
|
||
} else if (previousOperation === "-") {
|
||
addEOFNL = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (removeEOFNL) {
|
||
while (!lines[lines.length - 1]) {
|
||
lines.pop();
|
||
delimiters.pop();
|
||
}
|
||
} else if (addEOFNL) {
|
||
lines.push("");
|
||
delimiters.push("\n");
|
||
}
|
||
for (var _k = 0; _k < lines.length - 1; _k++) {
|
||
lines[_k] = lines[_k] + delimiters[_k];
|
||
}
|
||
return lines.join("");
|
||
}
|
||
function applyPatches(uniDiff, options) {
|
||
if (typeof uniDiff === "string") {
|
||
uniDiff = (0, _parse.parsePatch)(uniDiff);
|
||
}
|
||
var currentIndex = 0;
|
||
function processIndex() {
|
||
var index = uniDiff[currentIndex++];
|
||
if (!index) {
|
||
return options.complete();
|
||
}
|
||
options.loadFile(index, function(err, data) {
|
||
if (err) {
|
||
return options.complete(err);
|
||
}
|
||
var updatedContent = applyPatch(data, index, options);
|
||
options.patched(index, updatedContent, function(err2) {
|
||
if (err2) {
|
||
return options.complete(err2);
|
||
}
|
||
processIndex();
|
||
});
|
||
});
|
||
}
|
||
processIndex();
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/patch/create.js
|
||
var require_create = __commonJS({
|
||
"node_modules/diff/lib/patch/create.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.structuredPatch = structuredPatch;
|
||
exports.formatPatch = formatPatch;
|
||
exports.createTwoFilesPatch = createTwoFilesPatch;
|
||
exports.createPatch = createPatch;
|
||
var _line = require_line();
|
||
function _toConsumableArray(arr) {
|
||
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
||
}
|
||
function _nonIterableSpread() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||
}
|
||
function _unsupportedIterableToArray(o, minLen) {
|
||
if (!o)
|
||
return;
|
||
if (typeof o === "string")
|
||
return _arrayLikeToArray(o, minLen);
|
||
var n = Object.prototype.toString.call(o).slice(8, -1);
|
||
if (n === "Object" && o.constructor)
|
||
n = o.constructor.name;
|
||
if (n === "Map" || n === "Set")
|
||
return Array.from(o);
|
||
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
|
||
return _arrayLikeToArray(o, minLen);
|
||
}
|
||
function _iterableToArray(iter) {
|
||
if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
|
||
return Array.from(iter);
|
||
}
|
||
function _arrayWithoutHoles(arr) {
|
||
if (Array.isArray(arr))
|
||
return _arrayLikeToArray(arr);
|
||
}
|
||
function _arrayLikeToArray(arr, len) {
|
||
if (len == null || len > arr.length)
|
||
len = arr.length;
|
||
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
||
arr2[i] = arr[i];
|
||
}
|
||
return arr2;
|
||
}
|
||
function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
|
||
if (!options) {
|
||
options = {};
|
||
}
|
||
if (typeof options.context === "undefined") {
|
||
options.context = 4;
|
||
}
|
||
var diff = (0, _line.diffLines)(oldStr, newStr, options);
|
||
if (!diff) {
|
||
return;
|
||
}
|
||
diff.push({
|
||
value: "",
|
||
lines: []
|
||
});
|
||
function contextLines(lines) {
|
||
return lines.map(function(entry) {
|
||
return " " + entry;
|
||
});
|
||
}
|
||
var hunks = [];
|
||
var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
|
||
var _loop = function _loop2(i2) {
|
||
var current = diff[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n");
|
||
current.lines = lines;
|
||
if (current.added || current.removed) {
|
||
var _curRange;
|
||
if (!oldRangeStart) {
|
||
var prev = diff[i2 - 1];
|
||
oldRangeStart = oldLine;
|
||
newRangeStart = newLine;
|
||
if (prev) {
|
||
curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
|
||
oldRangeStart -= curRange.length;
|
||
newRangeStart -= curRange.length;
|
||
}
|
||
}
|
||
(_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) {
|
||
return (current.added ? "+" : "-") + entry;
|
||
})));
|
||
if (current.added) {
|
||
newLine += lines.length;
|
||
} else {
|
||
oldLine += lines.length;
|
||
}
|
||
} else {
|
||
if (oldRangeStart) {
|
||
if (lines.length <= options.context * 2 && i2 < diff.length - 2) {
|
||
var _curRange2;
|
||
(_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
|
||
} else {
|
||
var _curRange3;
|
||
var contextSize = Math.min(lines.length, options.context);
|
||
(_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
|
||
var hunk = {
|
||
oldStart: oldRangeStart,
|
||
oldLines: oldLine - oldRangeStart + contextSize,
|
||
newStart: newRangeStart,
|
||
newLines: newLine - newRangeStart + contextSize,
|
||
lines: curRange
|
||
};
|
||
if (i2 >= diff.length - 2 && lines.length <= options.context) {
|
||
var oldEOFNewline = /\n$/.test(oldStr);
|
||
var newEOFNewline = /\n$/.test(newStr);
|
||
var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
|
||
if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
|
||
curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file");
|
||
}
|
||
if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
|
||
curRange.push("\\ No newline at end of file");
|
||
}
|
||
}
|
||
hunks.push(hunk);
|
||
oldRangeStart = 0;
|
||
newRangeStart = 0;
|
||
curRange = [];
|
||
}
|
||
}
|
||
oldLine += lines.length;
|
||
newLine += lines.length;
|
||
}
|
||
};
|
||
for (var i = 0; i < diff.length; i++) {
|
||
_loop(i);
|
||
}
|
||
return {
|
||
oldFileName,
|
||
newFileName,
|
||
oldHeader,
|
||
newHeader,
|
||
hunks
|
||
};
|
||
}
|
||
function formatPatch(diff) {
|
||
var ret = [];
|
||
if (diff.oldFileName == diff.newFileName) {
|
||
ret.push("Index: " + diff.oldFileName);
|
||
}
|
||
ret.push("===================================================================");
|
||
ret.push("--- " + diff.oldFileName + (typeof diff.oldHeader === "undefined" ? "" : " " + diff.oldHeader));
|
||
ret.push("+++ " + diff.newFileName + (typeof diff.newHeader === "undefined" ? "" : " " + diff.newHeader));
|
||
for (var i = 0; i < diff.hunks.length; i++) {
|
||
var hunk = diff.hunks[i];
|
||
if (hunk.oldLines === 0) {
|
||
hunk.oldStart -= 1;
|
||
}
|
||
if (hunk.newLines === 0) {
|
||
hunk.newStart -= 1;
|
||
}
|
||
ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@");
|
||
ret.push.apply(ret, hunk.lines);
|
||
}
|
||
return ret.join("\n") + "\n";
|
||
}
|
||
function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
|
||
return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
|
||
}
|
||
function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
|
||
return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/util/array.js
|
||
var require_array2 = __commonJS({
|
||
"node_modules/diff/lib/util/array.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.arrayEqual = arrayEqual;
|
||
exports.arrayStartsWith = arrayStartsWith;
|
||
function arrayEqual(a, b) {
|
||
if (a.length !== b.length) {
|
||
return false;
|
||
}
|
||
return arrayStartsWith(a, b);
|
||
}
|
||
function arrayStartsWith(array, start) {
|
||
if (start.length > array.length) {
|
||
return false;
|
||
}
|
||
for (var i = 0; i < start.length; i++) {
|
||
if (start[i] !== array[i]) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/patch/merge.js
|
||
var require_merge = __commonJS({
|
||
"node_modules/diff/lib/patch/merge.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.calcLineCount = calcLineCount;
|
||
exports.merge = merge;
|
||
var _create = require_create();
|
||
var _parse = require_parse();
|
||
var _array = require_array2();
|
||
function _toConsumableArray(arr) {
|
||
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
||
}
|
||
function _nonIterableSpread() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
||
}
|
||
function _unsupportedIterableToArray(o, minLen) {
|
||
if (!o)
|
||
return;
|
||
if (typeof o === "string")
|
||
return _arrayLikeToArray(o, minLen);
|
||
var n = Object.prototype.toString.call(o).slice(8, -1);
|
||
if (n === "Object" && o.constructor)
|
||
n = o.constructor.name;
|
||
if (n === "Map" || n === "Set")
|
||
return Array.from(o);
|
||
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
|
||
return _arrayLikeToArray(o, minLen);
|
||
}
|
||
function _iterableToArray(iter) {
|
||
if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
|
||
return Array.from(iter);
|
||
}
|
||
function _arrayWithoutHoles(arr) {
|
||
if (Array.isArray(arr))
|
||
return _arrayLikeToArray(arr);
|
||
}
|
||
function _arrayLikeToArray(arr, len) {
|
||
if (len == null || len > arr.length)
|
||
len = arr.length;
|
||
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
||
arr2[i] = arr[i];
|
||
}
|
||
return arr2;
|
||
}
|
||
function calcLineCount(hunk) {
|
||
var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), oldLines = _calcOldNewLineCount.oldLines, newLines = _calcOldNewLineCount.newLines;
|
||
if (oldLines !== void 0) {
|
||
hunk.oldLines = oldLines;
|
||
} else {
|
||
delete hunk.oldLines;
|
||
}
|
||
if (newLines !== void 0) {
|
||
hunk.newLines = newLines;
|
||
} else {
|
||
delete hunk.newLines;
|
||
}
|
||
}
|
||
function merge(mine, theirs, base) {
|
||
mine = loadPatch(mine, base);
|
||
theirs = loadPatch(theirs, base);
|
||
var ret = {};
|
||
if (mine.index || theirs.index) {
|
||
ret.index = mine.index || theirs.index;
|
||
}
|
||
if (mine.newFileName || theirs.newFileName) {
|
||
if (!fileNameChanged(mine)) {
|
||
ret.oldFileName = theirs.oldFileName || mine.oldFileName;
|
||
ret.newFileName = theirs.newFileName || mine.newFileName;
|
||
ret.oldHeader = theirs.oldHeader || mine.oldHeader;
|
||
ret.newHeader = theirs.newHeader || mine.newHeader;
|
||
} else if (!fileNameChanged(theirs)) {
|
||
ret.oldFileName = mine.oldFileName;
|
||
ret.newFileName = mine.newFileName;
|
||
ret.oldHeader = mine.oldHeader;
|
||
ret.newHeader = mine.newHeader;
|
||
} else {
|
||
ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
|
||
ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
|
||
ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
|
||
ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
|
||
}
|
||
}
|
||
ret.hunks = [];
|
||
var mineIndex = 0, theirsIndex = 0, mineOffset = 0, theirsOffset = 0;
|
||
while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
|
||
var mineCurrent = mine.hunks[mineIndex] || {
|
||
oldStart: Infinity
|
||
}, theirsCurrent = theirs.hunks[theirsIndex] || {
|
||
oldStart: Infinity
|
||
};
|
||
if (hunkBefore(mineCurrent, theirsCurrent)) {
|
||
ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
|
||
mineIndex++;
|
||
theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
|
||
} else if (hunkBefore(theirsCurrent, mineCurrent)) {
|
||
ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
|
||
theirsIndex++;
|
||
mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
|
||
} else {
|
||
var mergedHunk = {
|
||
oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
|
||
oldLines: 0,
|
||
newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
|
||
newLines: 0,
|
||
lines: []
|
||
};
|
||
mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
|
||
theirsIndex++;
|
||
mineIndex++;
|
||
ret.hunks.push(mergedHunk);
|
||
}
|
||
}
|
||
return ret;
|
||
}
|
||
function loadPatch(param, base) {
|
||
if (typeof param === "string") {
|
||
if (/^@@/m.test(param) || /^Index:/m.test(param)) {
|
||
return (0, _parse.parsePatch)(param)[0];
|
||
}
|
||
if (!base) {
|
||
throw new Error("Must provide a base reference or pass in a patch");
|
||
}
|
||
return (0, _create.structuredPatch)(void 0, void 0, base, param);
|
||
}
|
||
return param;
|
||
}
|
||
function fileNameChanged(patch) {
|
||
return patch.newFileName && patch.newFileName !== patch.oldFileName;
|
||
}
|
||
function selectField(index, mine, theirs) {
|
||
if (mine === theirs) {
|
||
return mine;
|
||
} else {
|
||
index.conflict = true;
|
||
return {
|
||
mine,
|
||
theirs
|
||
};
|
||
}
|
||
}
|
||
function hunkBefore(test, check) {
|
||
return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
|
||
}
|
||
function cloneHunk(hunk, offset) {
|
||
return {
|
||
oldStart: hunk.oldStart,
|
||
oldLines: hunk.oldLines,
|
||
newStart: hunk.newStart + offset,
|
||
newLines: hunk.newLines,
|
||
lines: hunk.lines
|
||
};
|
||
}
|
||
function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
|
||
var mine = {
|
||
offset: mineOffset,
|
||
lines: mineLines,
|
||
index: 0
|
||
}, their = {
|
||
offset: theirOffset,
|
||
lines: theirLines,
|
||
index: 0
|
||
};
|
||
insertLeading(hunk, mine, their);
|
||
insertLeading(hunk, their, mine);
|
||
while (mine.index < mine.lines.length && their.index < their.lines.length) {
|
||
var mineCurrent = mine.lines[mine.index], theirCurrent = their.lines[their.index];
|
||
if ((mineCurrent[0] === "-" || mineCurrent[0] === "+") && (theirCurrent[0] === "-" || theirCurrent[0] === "+")) {
|
||
mutualChange(hunk, mine, their);
|
||
} else if (mineCurrent[0] === "+" && theirCurrent[0] === " ") {
|
||
var _hunk$lines;
|
||
(_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
|
||
} else if (theirCurrent[0] === "+" && mineCurrent[0] === " ") {
|
||
var _hunk$lines2;
|
||
(_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
|
||
} else if (mineCurrent[0] === "-" && theirCurrent[0] === " ") {
|
||
removal(hunk, mine, their);
|
||
} else if (theirCurrent[0] === "-" && mineCurrent[0] === " ") {
|
||
removal(hunk, their, mine, true);
|
||
} else if (mineCurrent === theirCurrent) {
|
||
hunk.lines.push(mineCurrent);
|
||
mine.index++;
|
||
their.index++;
|
||
} else {
|
||
conflict(hunk, collectChange(mine), collectChange(their));
|
||
}
|
||
}
|
||
insertTrailing(hunk, mine);
|
||
insertTrailing(hunk, their);
|
||
calcLineCount(hunk);
|
||
}
|
||
function mutualChange(hunk, mine, their) {
|
||
var myChanges = collectChange(mine), theirChanges = collectChange(their);
|
||
if (allRemoves(myChanges) && allRemoves(theirChanges)) {
|
||
if ((0, _array.arrayStartsWith)(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
|
||
var _hunk$lines3;
|
||
(_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
|
||
return;
|
||
} else if ((0, _array.arrayStartsWith)(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
|
||
var _hunk$lines4;
|
||
(_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
|
||
return;
|
||
}
|
||
} else if ((0, _array.arrayEqual)(myChanges, theirChanges)) {
|
||
var _hunk$lines5;
|
||
(_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
|
||
return;
|
||
}
|
||
conflict(hunk, myChanges, theirChanges);
|
||
}
|
||
function removal(hunk, mine, their, swap) {
|
||
var myChanges = collectChange(mine), theirChanges = collectContext(their, myChanges);
|
||
if (theirChanges.merged) {
|
||
var _hunk$lines6;
|
||
(_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
|
||
} else {
|
||
conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
|
||
}
|
||
}
|
||
function conflict(hunk, mine, their) {
|
||
hunk.conflict = true;
|
||
hunk.lines.push({
|
||
conflict: true,
|
||
mine,
|
||
theirs: their
|
||
});
|
||
}
|
||
function insertLeading(hunk, insert2, their) {
|
||
while (insert2.offset < their.offset && insert2.index < insert2.lines.length) {
|
||
var line = insert2.lines[insert2.index++];
|
||
hunk.lines.push(line);
|
||
insert2.offset++;
|
||
}
|
||
}
|
||
function insertTrailing(hunk, insert2) {
|
||
while (insert2.index < insert2.lines.length) {
|
||
var line = insert2.lines[insert2.index++];
|
||
hunk.lines.push(line);
|
||
}
|
||
}
|
||
function collectChange(state) {
|
||
var ret = [], operation = state.lines[state.index][0];
|
||
while (state.index < state.lines.length) {
|
||
var line = state.lines[state.index];
|
||
if (operation === "-" && line[0] === "+") {
|
||
operation = "+";
|
||
}
|
||
if (operation === line[0]) {
|
||
ret.push(line);
|
||
state.index++;
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
return ret;
|
||
}
|
||
function collectContext(state, matchChanges) {
|
||
var changes = [], merged = [], matchIndex = 0, contextChanges = false, conflicted = false;
|
||
while (matchIndex < matchChanges.length && state.index < state.lines.length) {
|
||
var change = state.lines[state.index], match = matchChanges[matchIndex];
|
||
if (match[0] === "+") {
|
||
break;
|
||
}
|
||
contextChanges = contextChanges || change[0] !== " ";
|
||
merged.push(match);
|
||
matchIndex++;
|
||
if (change[0] === "+") {
|
||
conflicted = true;
|
||
while (change[0] === "+") {
|
||
changes.push(change);
|
||
change = state.lines[++state.index];
|
||
}
|
||
}
|
||
if (match.substr(1) === change.substr(1)) {
|
||
changes.push(change);
|
||
state.index++;
|
||
} else {
|
||
conflicted = true;
|
||
}
|
||
}
|
||
if ((matchChanges[matchIndex] || "")[0] === "+" && contextChanges) {
|
||
conflicted = true;
|
||
}
|
||
if (conflicted) {
|
||
return changes;
|
||
}
|
||
while (matchIndex < matchChanges.length) {
|
||
merged.push(matchChanges[matchIndex++]);
|
||
}
|
||
return {
|
||
merged,
|
||
changes
|
||
};
|
||
}
|
||
function allRemoves(changes) {
|
||
return changes.reduce(function(prev, change) {
|
||
return prev && change[0] === "-";
|
||
}, true);
|
||
}
|
||
function skipRemoveSuperset(state, removeChanges, delta) {
|
||
for (var i = 0; i < delta; i++) {
|
||
var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
|
||
if (state.lines[state.index + i] !== " " + changeContent) {
|
||
return false;
|
||
}
|
||
}
|
||
state.index += delta;
|
||
return true;
|
||
}
|
||
function calcOldNewLineCount(lines) {
|
||
var oldLines = 0;
|
||
var newLines = 0;
|
||
lines.forEach(function(line) {
|
||
if (typeof line !== "string") {
|
||
var myCount = calcOldNewLineCount(line.mine);
|
||
var theirCount = calcOldNewLineCount(line.theirs);
|
||
if (oldLines !== void 0) {
|
||
if (myCount.oldLines === theirCount.oldLines) {
|
||
oldLines += myCount.oldLines;
|
||
} else {
|
||
oldLines = void 0;
|
||
}
|
||
}
|
||
if (newLines !== void 0) {
|
||
if (myCount.newLines === theirCount.newLines) {
|
||
newLines += myCount.newLines;
|
||
} else {
|
||
newLines = void 0;
|
||
}
|
||
}
|
||
} else {
|
||
if (newLines !== void 0 && (line[0] === "+" || line[0] === " ")) {
|
||
newLines++;
|
||
}
|
||
if (oldLines !== void 0 && (line[0] === "-" || line[0] === " ")) {
|
||
oldLines++;
|
||
}
|
||
}
|
||
});
|
||
return {
|
||
oldLines,
|
||
newLines
|
||
};
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/convert/dmp.js
|
||
var require_dmp = __commonJS({
|
||
"node_modules/diff/lib/convert/dmp.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.convertChangesToDMP = convertChangesToDMP;
|
||
function convertChangesToDMP(changes) {
|
||
var ret = [], change, operation;
|
||
for (var i = 0; i < changes.length; i++) {
|
||
change = changes[i];
|
||
if (change.added) {
|
||
operation = 1;
|
||
} else if (change.removed) {
|
||
operation = -1;
|
||
} else {
|
||
operation = 0;
|
||
}
|
||
ret.push([operation, change.value]);
|
||
}
|
||
return ret;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/convert/xml.js
|
||
var require_xml = __commonJS({
|
||
"node_modules/diff/lib/convert/xml.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
exports.convertChangesToXML = convertChangesToXML;
|
||
function convertChangesToXML(changes) {
|
||
var ret = [];
|
||
for (var i = 0; i < changes.length; i++) {
|
||
var change = changes[i];
|
||
if (change.added) {
|
||
ret.push("<ins>");
|
||
} else if (change.removed) {
|
||
ret.push("<del>");
|
||
}
|
||
ret.push(escapeHTML(change.value));
|
||
if (change.added) {
|
||
ret.push("</ins>");
|
||
} else if (change.removed) {
|
||
ret.push("</del>");
|
||
}
|
||
}
|
||
return ret.join("");
|
||
}
|
||
function escapeHTML(s) {
|
||
var n = s;
|
||
n = n.replace(/&/g, "&");
|
||
n = n.replace(/</g, "<");
|
||
n = n.replace(/>/g, ">");
|
||
n = n.replace(/"/g, """);
|
||
return n;
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff/lib/index.js
|
||
var require_lib = __commonJS({
|
||
"node_modules/diff/lib/index.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
Object.defineProperty(exports, "Diff", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _base["default"];
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffChars", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _character.diffChars;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffWords", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _word.diffWords;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffWordsWithSpace", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _word.diffWordsWithSpace;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffLines", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _line.diffLines;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffTrimmedLines", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _line.diffTrimmedLines;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffSentences", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _sentence.diffSentences;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffCss", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _css.diffCss;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffJson", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _json.diffJson;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "canonicalize", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _json.canonicalize;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "diffArrays", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _array.diffArrays;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "applyPatch", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _apply.applyPatch;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "applyPatches", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _apply.applyPatches;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "parsePatch", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _parse.parsePatch;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "merge", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _merge.merge;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "structuredPatch", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _create.structuredPatch;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "createTwoFilesPatch", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _create.createTwoFilesPatch;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "createPatch", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _create.createPatch;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "convertChangesToDMP", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _dmp.convertChangesToDMP;
|
||
}
|
||
});
|
||
Object.defineProperty(exports, "convertChangesToXML", {
|
||
enumerable: true,
|
||
get: function get() {
|
||
return _xml.convertChangesToXML;
|
||
}
|
||
});
|
||
var _base = _interopRequireDefault(require_base());
|
||
var _character = require_character();
|
||
var _word = require_word();
|
||
var _line = require_line();
|
||
var _sentence = require_sentence();
|
||
var _css = require_css();
|
||
var _json = require_json();
|
||
var _array = require_array();
|
||
var _apply = require_apply();
|
||
var _parse = require_parse();
|
||
var _merge = require_merge();
|
||
var _create = require_create();
|
||
var _dmp = require_dmp();
|
||
var _xml = require_xml();
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { "default": obj };
|
||
}
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/rematch.js
|
||
var require_rematch = __commonJS({
|
||
"node_modules/diff2html/lib/rematch.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.newMatcherFn = exports.newDistanceFn = exports.levenshtein = void 0;
|
||
function levenshtein(a, b) {
|
||
if (a.length === 0) {
|
||
return b.length;
|
||
}
|
||
if (b.length === 0) {
|
||
return a.length;
|
||
}
|
||
var matrix = [];
|
||
var i;
|
||
for (i = 0; i <= b.length; i++) {
|
||
matrix[i] = [i];
|
||
}
|
||
var j;
|
||
for (j = 0; j <= a.length; j++) {
|
||
matrix[0][j] = j;
|
||
}
|
||
for (i = 1; i <= b.length; i++) {
|
||
for (j = 1; j <= a.length; j++) {
|
||
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
||
matrix[i][j] = matrix[i - 1][j - 1];
|
||
} else {
|
||
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));
|
||
}
|
||
}
|
||
}
|
||
return matrix[b.length][a.length];
|
||
}
|
||
exports.levenshtein = levenshtein;
|
||
function newDistanceFn(str) {
|
||
return function(x, y) {
|
||
var xValue = str(x).trim();
|
||
var yValue = str(y).trim();
|
||
var lev = levenshtein(xValue, yValue);
|
||
return lev / (xValue.length + yValue.length);
|
||
};
|
||
}
|
||
exports.newDistanceFn = newDistanceFn;
|
||
function newMatcherFn(distance) {
|
||
function findBestMatch(a, b, cache) {
|
||
if (cache === void 0) {
|
||
cache = new Map();
|
||
}
|
||
var bestMatchDist = Infinity;
|
||
var bestMatch;
|
||
for (var i = 0; i < a.length; ++i) {
|
||
for (var j = 0; j < b.length; ++j) {
|
||
var cacheKey = JSON.stringify([a[i], b[j]]);
|
||
var md = void 0;
|
||
if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) {
|
||
md = distance(a[i], b[j]);
|
||
cache.set(cacheKey, md);
|
||
}
|
||
if (md < bestMatchDist) {
|
||
bestMatchDist = md;
|
||
bestMatch = { indexA: i, indexB: j, score: bestMatchDist };
|
||
}
|
||
}
|
||
}
|
||
return bestMatch;
|
||
}
|
||
function group(a, b, level, cache) {
|
||
if (level === void 0) {
|
||
level = 0;
|
||
}
|
||
if (cache === void 0) {
|
||
cache = new Map();
|
||
}
|
||
var bm = findBestMatch(a, b, cache);
|
||
if (!bm || a.length + b.length < 3) {
|
||
return [[a, b]];
|
||
}
|
||
var a1 = a.slice(0, bm.indexA);
|
||
var b1 = b.slice(0, bm.indexB);
|
||
var aMatch = [a[bm.indexA]];
|
||
var bMatch = [b[bm.indexB]];
|
||
var tailA = bm.indexA + 1;
|
||
var tailB = bm.indexB + 1;
|
||
var a2 = a.slice(tailA);
|
||
var b2 = b.slice(tailB);
|
||
var group1 = group(a1, b1, level + 1, cache);
|
||
var groupMatch = group(aMatch, bMatch, level + 1, cache);
|
||
var group2 = group(a2, b2, level + 1, cache);
|
||
var result = groupMatch;
|
||
if (bm.indexA > 0 || bm.indexB > 0) {
|
||
result = group1.concat(result);
|
||
}
|
||
if (a.length > tailA || b.length > tailB) {
|
||
result = result.concat(group2);
|
||
}
|
||
return result;
|
||
}
|
||
return group;
|
||
}
|
||
exports.newMatcherFn = newMatcherFn;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/render-utils.js
|
||
var require_render_utils = __commonJS({
|
||
"node_modules/diff2html/lib/render-utils.js"(exports) {
|
||
"use strict";
|
||
var __assign2 = exports && exports.__assign || function() {
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign2.apply(this, arguments);
|
||
};
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.diffHighlight = exports.getFileIcon = exports.getHtmlId = exports.filenameDiff = exports.deconstructLine = exports.escapeForHtml = exports.toCSSClass = exports.defaultRenderConfig = exports.CSSLineClass = void 0;
|
||
var jsDiff = __importStar2(require_lib());
|
||
var utils_1 = require_utils();
|
||
var rematch = __importStar2(require_rematch());
|
||
var types_1 = require_types();
|
||
exports.CSSLineClass = {
|
||
INSERTS: "d2h-ins",
|
||
DELETES: "d2h-del",
|
||
CONTEXT: "d2h-cntx",
|
||
INFO: "d2h-info",
|
||
INSERT_CHANGES: "d2h-ins d2h-change",
|
||
DELETE_CHANGES: "d2h-del d2h-change"
|
||
};
|
||
exports.defaultRenderConfig = {
|
||
matching: types_1.LineMatchingType.NONE,
|
||
matchWordsThreshold: 0.25,
|
||
maxLineLengthHighlight: 1e4,
|
||
diffStyle: types_1.DiffStyleType.WORD
|
||
};
|
||
var separator = "/";
|
||
var distance = rematch.newDistanceFn(function(change) {
|
||
return change.value;
|
||
});
|
||
var matcher = rematch.newMatcherFn(distance);
|
||
function isDevNullName(name) {
|
||
return name.indexOf("dev/null") !== -1;
|
||
}
|
||
function removeInsElements(line) {
|
||
return line.replace(/(<ins[^>]*>((.|\n)*?)<\/ins>)/g, "");
|
||
}
|
||
function removeDelElements(line) {
|
||
return line.replace(/(<del[^>]*>((.|\n)*?)<\/del>)/g, "");
|
||
}
|
||
function toCSSClass(lineType) {
|
||
switch (lineType) {
|
||
case types_1.LineType.CONTEXT:
|
||
return exports.CSSLineClass.CONTEXT;
|
||
case types_1.LineType.INSERT:
|
||
return exports.CSSLineClass.INSERTS;
|
||
case types_1.LineType.DELETE:
|
||
return exports.CSSLineClass.DELETES;
|
||
}
|
||
}
|
||
exports.toCSSClass = toCSSClass;
|
||
function prefixLength(isCombined) {
|
||
return isCombined ? 2 : 1;
|
||
}
|
||
function escapeForHtml(str) {
|
||
return str.slice(0).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/");
|
||
}
|
||
exports.escapeForHtml = escapeForHtml;
|
||
function deconstructLine(line, isCombined, escape) {
|
||
if (escape === void 0) {
|
||
escape = true;
|
||
}
|
||
var indexToSplit = prefixLength(isCombined);
|
||
return {
|
||
prefix: line.substring(0, indexToSplit),
|
||
content: escape ? escapeForHtml(line.substring(indexToSplit)) : line.substring(indexToSplit)
|
||
};
|
||
}
|
||
exports.deconstructLine = deconstructLine;
|
||
function filenameDiff(file) {
|
||
var oldFilename = (0, utils_1.unifyPath)(file.oldName);
|
||
var newFilename = (0, utils_1.unifyPath)(file.newName);
|
||
if (oldFilename !== newFilename && !isDevNullName(oldFilename) && !isDevNullName(newFilename)) {
|
||
var prefixPaths = [];
|
||
var suffixPaths = [];
|
||
var oldFilenameParts = oldFilename.split(separator);
|
||
var newFilenameParts = newFilename.split(separator);
|
||
var oldFilenamePartsSize = oldFilenameParts.length;
|
||
var newFilenamePartsSize = newFilenameParts.length;
|
||
var i = 0;
|
||
var j = oldFilenamePartsSize - 1;
|
||
var k = newFilenamePartsSize - 1;
|
||
while (i < j && i < k) {
|
||
if (oldFilenameParts[i] === newFilenameParts[i]) {
|
||
prefixPaths.push(newFilenameParts[i]);
|
||
i += 1;
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
while (j > i && k > i) {
|
||
if (oldFilenameParts[j] === newFilenameParts[k]) {
|
||
suffixPaths.unshift(newFilenameParts[k]);
|
||
j -= 1;
|
||
k -= 1;
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
var finalPrefix = prefixPaths.join(separator);
|
||
var finalSuffix = suffixPaths.join(separator);
|
||
var oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator);
|
||
var newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator);
|
||
if (finalPrefix.length && finalSuffix.length) {
|
||
return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix;
|
||
} else if (finalPrefix.length) {
|
||
return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}";
|
||
} else if (finalSuffix.length) {
|
||
return "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix;
|
||
}
|
||
return oldFilename + " \u2192 " + newFilename;
|
||
} else if (!isDevNullName(newFilename)) {
|
||
return newFilename;
|
||
} else {
|
||
return oldFilename;
|
||
}
|
||
}
|
||
exports.filenameDiff = filenameDiff;
|
||
function getHtmlId(file) {
|
||
return "d2h-".concat((0, utils_1.hashCode)(filenameDiff(file)).toString().slice(-6));
|
||
}
|
||
exports.getHtmlId = getHtmlId;
|
||
function getFileIcon(file) {
|
||
var templateName = "file-changed";
|
||
if (file.isRename) {
|
||
templateName = "file-renamed";
|
||
} else if (file.isCopy) {
|
||
templateName = "file-renamed";
|
||
} else if (file.isNew) {
|
||
templateName = "file-added";
|
||
} else if (file.isDeleted) {
|
||
templateName = "file-deleted";
|
||
} else if (file.newName !== file.oldName) {
|
||
templateName = "file-renamed";
|
||
}
|
||
return templateName;
|
||
}
|
||
exports.getFileIcon = getFileIcon;
|
||
function diffHighlight(diffLine1, diffLine2, isCombined, config) {
|
||
if (config === void 0) {
|
||
config = {};
|
||
}
|
||
var _a2 = __assign2(__assign2({}, exports.defaultRenderConfig), config), matching = _a2.matching, maxLineLengthHighlight = _a2.maxLineLengthHighlight, matchWordsThreshold = _a2.matchWordsThreshold, diffStyle = _a2.diffStyle;
|
||
var line1 = deconstructLine(diffLine1, isCombined, false);
|
||
var line2 = deconstructLine(diffLine2, isCombined, false);
|
||
if (line1.content.length > maxLineLengthHighlight || line2.content.length > maxLineLengthHighlight) {
|
||
return {
|
||
oldLine: {
|
||
prefix: line1.prefix,
|
||
content: escapeForHtml(line1.content)
|
||
},
|
||
newLine: {
|
||
prefix: line2.prefix,
|
||
content: escapeForHtml(line2.content)
|
||
}
|
||
};
|
||
}
|
||
var diff = diffStyle === "char" ? jsDiff.diffChars(line1.content, line2.content) : jsDiff.diffWordsWithSpace(line1.content, line2.content);
|
||
var changedWords = [];
|
||
if (diffStyle === "word" && matching === "words") {
|
||
var removed = diff.filter(function(element2) {
|
||
return element2.removed;
|
||
});
|
||
var added = diff.filter(function(element2) {
|
||
return element2.added;
|
||
});
|
||
var chunks = matcher(added, removed);
|
||
chunks.forEach(function(chunk) {
|
||
if (chunk[0].length === 1 && chunk[1].length === 1) {
|
||
var dist = distance(chunk[0][0], chunk[1][0]);
|
||
if (dist < matchWordsThreshold) {
|
||
changedWords.push(chunk[0][0]);
|
||
changedWords.push(chunk[1][0]);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
var highlightedLine = diff.reduce(function(highlightedLine2, part) {
|
||
var elemType = part.added ? "ins" : part.removed ? "del" : null;
|
||
var addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : "";
|
||
var escapedValue = escapeForHtml(part.value);
|
||
return elemType !== null ? "".concat(highlightedLine2, "<").concat(elemType).concat(addClass, ">").concat(escapedValue, "</").concat(elemType, ">") : "".concat(highlightedLine2).concat(escapedValue);
|
||
}, "");
|
||
return {
|
||
oldLine: {
|
||
prefix: line1.prefix,
|
||
content: removeInsElements(highlightedLine)
|
||
},
|
||
newLine: {
|
||
prefix: line2.prefix,
|
||
content: removeDelElements(highlightedLine)
|
||
}
|
||
};
|
||
}
|
||
exports.diffHighlight = diffHighlight;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/file-list-renderer.js
|
||
var require_file_list_renderer = __commonJS({
|
||
"node_modules/diff2html/lib/file-list-renderer.js"(exports) {
|
||
"use strict";
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.render = void 0;
|
||
var renderUtils = __importStar2(require_render_utils());
|
||
var baseTemplatesPath = "file-summary";
|
||
var iconsBaseTemplatesPath = "icon";
|
||
function render(diffFiles, hoganUtils) {
|
||
var files = diffFiles.map(function(file) {
|
||
return hoganUtils.render(baseTemplatesPath, "line", {
|
||
fileHtmlId: renderUtils.getHtmlId(file),
|
||
oldName: file.oldName,
|
||
newName: file.newName,
|
||
fileName: renderUtils.filenameDiff(file),
|
||
deletedLines: "-" + file.deletedLines,
|
||
addedLines: "+" + file.addedLines
|
||
}, {
|
||
fileIcon: hoganUtils.template(iconsBaseTemplatesPath, renderUtils.getFileIcon(file))
|
||
});
|
||
}).join("\n");
|
||
return hoganUtils.render(baseTemplatesPath, "wrapper", {
|
||
filesNumber: diffFiles.length,
|
||
files
|
||
});
|
||
}
|
||
exports.render = render;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/line-by-line-renderer.js
|
||
var require_line_by_line_renderer = __commonJS({
|
||
"node_modules/diff2html/lib/line-by-line-renderer.js"(exports) {
|
||
"use strict";
|
||
var __assign2 = exports && exports.__assign || function() {
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign2.apply(this, arguments);
|
||
};
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.defaultLineByLineRendererConfig = void 0;
|
||
var Rematch = __importStar2(require_rematch());
|
||
var renderUtils = __importStar2(require_render_utils());
|
||
var types_1 = require_types();
|
||
exports.defaultLineByLineRendererConfig = __assign2(__assign2({}, renderUtils.defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });
|
||
var genericTemplatesPath = "generic";
|
||
var baseTemplatesPath = "line-by-line";
|
||
var iconsBaseTemplatesPath = "icon";
|
||
var tagsBaseTemplatesPath = "tag";
|
||
var LineByLineRenderer = function() {
|
||
function LineByLineRenderer2(hoganUtils, config) {
|
||
if (config === void 0) {
|
||
config = {};
|
||
}
|
||
this.hoganUtils = hoganUtils;
|
||
this.config = __assign2(__assign2({}, exports.defaultLineByLineRendererConfig), config);
|
||
}
|
||
LineByLineRenderer2.prototype.render = function(diffFiles) {
|
||
var _this = this;
|
||
var diffsHtml = diffFiles.map(function(file) {
|
||
var diffs;
|
||
if (file.blocks.length) {
|
||
diffs = _this.generateFileHtml(file);
|
||
} else {
|
||
diffs = _this.generateEmptyDiff();
|
||
}
|
||
return _this.makeFileDiffHtml(file, diffs);
|
||
}).join("\n");
|
||
return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml });
|
||
};
|
||
LineByLineRenderer2.prototype.makeFileDiffHtml = function(file, diffs) {
|
||
if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)
|
||
return "";
|
||
var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath, "file-diff");
|
||
var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path");
|
||
var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath, "file");
|
||
var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, renderUtils.getFileIcon(file));
|
||
return fileDiffTemplate.render({
|
||
file,
|
||
fileHtmlId: renderUtils.getHtmlId(file),
|
||
diffs,
|
||
filePath: filePathTemplate.render({
|
||
fileDiffName: renderUtils.filenameDiff(file)
|
||
}, {
|
||
fileIcon: fileIconTemplate,
|
||
fileTag: fileTagTemplate
|
||
})
|
||
});
|
||
};
|
||
LineByLineRenderer2.prototype.generateEmptyDiff = function() {
|
||
return this.hoganUtils.render(genericTemplatesPath, "empty-diff", {
|
||
contentClass: "d2h-code-line",
|
||
CSSLineClass: renderUtils.CSSLineClass
|
||
});
|
||
};
|
||
LineByLineRenderer2.prototype.generateFileHtml = function(file) {
|
||
var _this = this;
|
||
var matcher = Rematch.newMatcherFn(Rematch.newDistanceFn(function(e) {
|
||
return renderUtils.deconstructLine(e.content, file.isCombined).content;
|
||
}));
|
||
return file.blocks.map(function(block) {
|
||
var lines = _this.hoganUtils.render(genericTemplatesPath, "block-header", {
|
||
CSSLineClass: renderUtils.CSSLineClass,
|
||
blockHeader: file.isTooBig ? block.header : renderUtils.escapeForHtml(block.header),
|
||
lineClass: "d2h-code-linenumber",
|
||
contentClass: "d2h-code-line"
|
||
});
|
||
_this.applyLineGroupping(block).forEach(function(_a2) {
|
||
var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2];
|
||
if (oldLines.length && newLines.length && !contextLines.length) {
|
||
_this.applyRematchMatching(oldLines, newLines, matcher).map(function(_a3) {
|
||
var oldLines2 = _a3[0], newLines2 = _a3[1];
|
||
var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right;
|
||
lines += left2;
|
||
lines += right2;
|
||
});
|
||
} else if (contextLines.length) {
|
||
contextLines.forEach(function(line) {
|
||
var _a3 = renderUtils.deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content;
|
||
lines += _this.generateSingleLineHtml({
|
||
type: renderUtils.CSSLineClass.CONTEXT,
|
||
prefix,
|
||
content,
|
||
oldNumber: line.oldNumber,
|
||
newNumber: line.newNumber
|
||
});
|
||
});
|
||
} else if (oldLines.length || newLines.length) {
|
||
var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;
|
||
lines += left;
|
||
lines += right;
|
||
} else {
|
||
console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines);
|
||
}
|
||
});
|
||
return lines;
|
||
}).join("\n");
|
||
};
|
||
LineByLineRenderer2.prototype.applyLineGroupping = function(block) {
|
||
var blockLinesGroups = [];
|
||
var oldLines = [];
|
||
var newLines = [];
|
||
for (var i = 0; i < block.lines.length; i++) {
|
||
var diffLine = block.lines[i];
|
||
if (diffLine.type !== types_1.LineType.INSERT && newLines.length || diffLine.type === types_1.LineType.CONTEXT && oldLines.length > 0) {
|
||
blockLinesGroups.push([[], oldLines, newLines]);
|
||
oldLines = [];
|
||
newLines = [];
|
||
}
|
||
if (diffLine.type === types_1.LineType.CONTEXT) {
|
||
blockLinesGroups.push([[diffLine], [], []]);
|
||
} else if (diffLine.type === types_1.LineType.INSERT && oldLines.length === 0) {
|
||
blockLinesGroups.push([[], [], [diffLine]]);
|
||
} else if (diffLine.type === types_1.LineType.INSERT && oldLines.length > 0) {
|
||
newLines.push(diffLine);
|
||
} else if (diffLine.type === types_1.LineType.DELETE) {
|
||
oldLines.push(diffLine);
|
||
}
|
||
}
|
||
if (oldLines.length || newLines.length) {
|
||
blockLinesGroups.push([[], oldLines, newLines]);
|
||
oldLines = [];
|
||
newLines = [];
|
||
}
|
||
return blockLinesGroups;
|
||
};
|
||
LineByLineRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher) {
|
||
var comparisons = oldLines.length * newLines.length;
|
||
var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) {
|
||
return elem.content.length;
|
||
})));
|
||
var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words");
|
||
return doMatching ? matcher(oldLines, newLines) : [[oldLines, newLines]];
|
||
};
|
||
LineByLineRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) {
|
||
var fileHtml = {
|
||
right: "",
|
||
left: ""
|
||
};
|
||
var maxLinesNumber = Math.max(oldLines.length, newLines.length);
|
||
for (var i = 0; i < maxLinesNumber; i++) {
|
||
var oldLine = oldLines[i];
|
||
var newLine = newLines[i];
|
||
var diff = oldLine !== void 0 && newLine !== void 0 ? renderUtils.diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0;
|
||
var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign2(__assign2({}, diff !== void 0 ? {
|
||
prefix: diff.oldLine.prefix,
|
||
content: diff.oldLine.content,
|
||
type: renderUtils.CSSLineClass.DELETE_CHANGES
|
||
} : __assign2(__assign2({}, renderUtils.deconstructLine(oldLine.content, isCombined)), { type: renderUtils.toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0;
|
||
var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign2(__assign2({}, diff !== void 0 ? {
|
||
prefix: diff.newLine.prefix,
|
||
content: diff.newLine.content,
|
||
type: renderUtils.CSSLineClass.INSERT_CHANGES
|
||
} : __assign2(__assign2({}, renderUtils.deconstructLine(newLine.content, isCombined)), { type: renderUtils.toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0;
|
||
var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right;
|
||
fileHtml.left += left;
|
||
fileHtml.right += right;
|
||
}
|
||
return fileHtml;
|
||
};
|
||
LineByLineRenderer2.prototype.generateLineHtml = function(oldLine, newLine) {
|
||
return {
|
||
left: this.generateSingleLineHtml(oldLine),
|
||
right: this.generateSingleLineHtml(newLine)
|
||
};
|
||
};
|
||
LineByLineRenderer2.prototype.generateSingleLineHtml = function(line) {
|
||
if (line === void 0)
|
||
return "";
|
||
var lineNumberHtml = this.hoganUtils.render(baseTemplatesPath, "numbers", {
|
||
oldNumber: line.oldNumber || "",
|
||
newNumber: line.newNumber || ""
|
||
});
|
||
return this.hoganUtils.render(genericTemplatesPath, "line", {
|
||
type: line.type,
|
||
lineClass: "d2h-code-linenumber",
|
||
contentClass: "d2h-code-line",
|
||
prefix: line.prefix === " " ? " " : line.prefix,
|
||
content: line.content,
|
||
lineNumber: lineNumberHtml
|
||
});
|
||
};
|
||
return LineByLineRenderer2;
|
||
}();
|
||
exports.default = LineByLineRenderer;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/side-by-side-renderer.js
|
||
var require_side_by_side_renderer = __commonJS({
|
||
"node_modules/diff2html/lib/side-by-side-renderer.js"(exports) {
|
||
"use strict";
|
||
var __assign2 = exports && exports.__assign || function() {
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign2.apply(this, arguments);
|
||
};
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.defaultSideBySideRendererConfig = void 0;
|
||
var Rematch = __importStar2(require_rematch());
|
||
var renderUtils = __importStar2(require_render_utils());
|
||
var types_1 = require_types();
|
||
exports.defaultSideBySideRendererConfig = __assign2(__assign2({}, renderUtils.defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });
|
||
var genericTemplatesPath = "generic";
|
||
var baseTemplatesPath = "side-by-side";
|
||
var iconsBaseTemplatesPath = "icon";
|
||
var tagsBaseTemplatesPath = "tag";
|
||
var SideBySideRenderer = function() {
|
||
function SideBySideRenderer2(hoganUtils, config) {
|
||
if (config === void 0) {
|
||
config = {};
|
||
}
|
||
this.hoganUtils = hoganUtils;
|
||
this.config = __assign2(__assign2({}, exports.defaultSideBySideRendererConfig), config);
|
||
}
|
||
SideBySideRenderer2.prototype.render = function(diffFiles) {
|
||
var _this = this;
|
||
var diffsHtml = diffFiles.map(function(file) {
|
||
var diffs;
|
||
if (file.blocks.length) {
|
||
diffs = _this.generateFileHtml(file);
|
||
} else {
|
||
diffs = _this.generateEmptyDiff();
|
||
}
|
||
return _this.makeFileDiffHtml(file, diffs);
|
||
}).join("\n");
|
||
return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml });
|
||
};
|
||
SideBySideRenderer2.prototype.makeFileDiffHtml = function(file, diffs) {
|
||
if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)
|
||
return "";
|
||
var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath, "file-diff");
|
||
var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path");
|
||
var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath, "file");
|
||
var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, renderUtils.getFileIcon(file));
|
||
return fileDiffTemplate.render({
|
||
file,
|
||
fileHtmlId: renderUtils.getHtmlId(file),
|
||
diffs,
|
||
filePath: filePathTemplate.render({
|
||
fileDiffName: renderUtils.filenameDiff(file)
|
||
}, {
|
||
fileIcon: fileIconTemplate,
|
||
fileTag: fileTagTemplate
|
||
})
|
||
});
|
||
};
|
||
SideBySideRenderer2.prototype.generateEmptyDiff = function() {
|
||
return {
|
||
right: "",
|
||
left: this.hoganUtils.render(genericTemplatesPath, "empty-diff", {
|
||
contentClass: "d2h-code-side-line",
|
||
CSSLineClass: renderUtils.CSSLineClass
|
||
})
|
||
};
|
||
};
|
||
SideBySideRenderer2.prototype.generateFileHtml = function(file) {
|
||
var _this = this;
|
||
var matcher = Rematch.newMatcherFn(Rematch.newDistanceFn(function(e) {
|
||
return renderUtils.deconstructLine(e.content, file.isCombined).content;
|
||
}));
|
||
return file.blocks.map(function(block) {
|
||
var fileHtml = {
|
||
left: _this.makeHeaderHtml(block.header, file),
|
||
right: _this.makeHeaderHtml("")
|
||
};
|
||
_this.applyLineGroupping(block).forEach(function(_a2) {
|
||
var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2];
|
||
if (oldLines.length && newLines.length && !contextLines.length) {
|
||
_this.applyRematchMatching(oldLines, newLines, matcher).map(function(_a3) {
|
||
var oldLines2 = _a3[0], newLines2 = _a3[1];
|
||
var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right;
|
||
fileHtml.left += left2;
|
||
fileHtml.right += right2;
|
||
});
|
||
} else if (contextLines.length) {
|
||
contextLines.forEach(function(line) {
|
||
var _a3 = renderUtils.deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content;
|
||
var _b2 = _this.generateLineHtml({
|
||
type: renderUtils.CSSLineClass.CONTEXT,
|
||
prefix,
|
||
content,
|
||
number: line.oldNumber
|
||
}, {
|
||
type: renderUtils.CSSLineClass.CONTEXT,
|
||
prefix,
|
||
content,
|
||
number: line.newNumber
|
||
}), left2 = _b2.left, right2 = _b2.right;
|
||
fileHtml.left += left2;
|
||
fileHtml.right += right2;
|
||
});
|
||
} else if (oldLines.length || newLines.length) {
|
||
var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;
|
||
fileHtml.left += left;
|
||
fileHtml.right += right;
|
||
} else {
|
||
console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines);
|
||
}
|
||
});
|
||
return fileHtml;
|
||
}).reduce(function(accomulated, html2) {
|
||
return { left: accomulated.left + html2.left, right: accomulated.right + html2.right };
|
||
}, { left: "", right: "" });
|
||
};
|
||
SideBySideRenderer2.prototype.applyLineGroupping = function(block) {
|
||
var blockLinesGroups = [];
|
||
var oldLines = [];
|
||
var newLines = [];
|
||
for (var i = 0; i < block.lines.length; i++) {
|
||
var diffLine = block.lines[i];
|
||
if (diffLine.type !== types_1.LineType.INSERT && newLines.length || diffLine.type === types_1.LineType.CONTEXT && oldLines.length > 0) {
|
||
blockLinesGroups.push([[], oldLines, newLines]);
|
||
oldLines = [];
|
||
newLines = [];
|
||
}
|
||
if (diffLine.type === types_1.LineType.CONTEXT) {
|
||
blockLinesGroups.push([[diffLine], [], []]);
|
||
} else if (diffLine.type === types_1.LineType.INSERT && oldLines.length === 0) {
|
||
blockLinesGroups.push([[], [], [diffLine]]);
|
||
} else if (diffLine.type === types_1.LineType.INSERT && oldLines.length > 0) {
|
||
newLines.push(diffLine);
|
||
} else if (diffLine.type === types_1.LineType.DELETE) {
|
||
oldLines.push(diffLine);
|
||
}
|
||
}
|
||
if (oldLines.length || newLines.length) {
|
||
blockLinesGroups.push([[], oldLines, newLines]);
|
||
oldLines = [];
|
||
newLines = [];
|
||
}
|
||
return blockLinesGroups;
|
||
};
|
||
SideBySideRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher) {
|
||
var comparisons = oldLines.length * newLines.length;
|
||
var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) {
|
||
return elem.content.length;
|
||
})));
|
||
var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words");
|
||
return doMatching ? matcher(oldLines, newLines) : [[oldLines, newLines]];
|
||
};
|
||
SideBySideRenderer2.prototype.makeHeaderHtml = function(blockHeader, file) {
|
||
return this.hoganUtils.render(genericTemplatesPath, "block-header", {
|
||
CSSLineClass: renderUtils.CSSLineClass,
|
||
blockHeader: (file === null || file === void 0 ? void 0 : file.isTooBig) ? blockHeader : renderUtils.escapeForHtml(blockHeader),
|
||
lineClass: "d2h-code-side-linenumber",
|
||
contentClass: "d2h-code-side-line"
|
||
});
|
||
};
|
||
SideBySideRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) {
|
||
var fileHtml = {
|
||
right: "",
|
||
left: ""
|
||
};
|
||
var maxLinesNumber = Math.max(oldLines.length, newLines.length);
|
||
for (var i = 0; i < maxLinesNumber; i++) {
|
||
var oldLine = oldLines[i];
|
||
var newLine = newLines[i];
|
||
var diff = oldLine !== void 0 && newLine !== void 0 ? renderUtils.diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0;
|
||
var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign2(__assign2({}, diff !== void 0 ? {
|
||
prefix: diff.oldLine.prefix,
|
||
content: diff.oldLine.content,
|
||
type: renderUtils.CSSLineClass.DELETE_CHANGES
|
||
} : __assign2(__assign2({}, renderUtils.deconstructLine(oldLine.content, isCombined)), { type: renderUtils.toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0;
|
||
var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign2(__assign2({}, diff !== void 0 ? {
|
||
prefix: diff.newLine.prefix,
|
||
content: diff.newLine.content,
|
||
type: renderUtils.CSSLineClass.INSERT_CHANGES
|
||
} : __assign2(__assign2({}, renderUtils.deconstructLine(newLine.content, isCombined)), { type: renderUtils.toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0;
|
||
var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right;
|
||
fileHtml.left += left;
|
||
fileHtml.right += right;
|
||
}
|
||
return fileHtml;
|
||
};
|
||
SideBySideRenderer2.prototype.generateLineHtml = function(oldLine, newLine) {
|
||
return {
|
||
left: this.generateSingleHtml(oldLine),
|
||
right: this.generateSingleHtml(newLine)
|
||
};
|
||
};
|
||
SideBySideRenderer2.prototype.generateSingleHtml = function(line) {
|
||
var lineClass = "d2h-code-side-linenumber";
|
||
var contentClass = "d2h-code-side-line";
|
||
return this.hoganUtils.render(genericTemplatesPath, "line", {
|
||
type: (line === null || line === void 0 ? void 0 : line.type) || "".concat(renderUtils.CSSLineClass.CONTEXT, " d2h-emptyplaceholder"),
|
||
lineClass: line !== void 0 ? lineClass : "".concat(lineClass, " d2h-code-side-emptyplaceholder"),
|
||
contentClass: line !== void 0 ? contentClass : "".concat(contentClass, " d2h-code-side-emptyplaceholder"),
|
||
prefix: (line === null || line === void 0 ? void 0 : line.prefix) === " " ? " " : line === null || line === void 0 ? void 0 : line.prefix,
|
||
content: line === null || line === void 0 ? void 0 : line.content,
|
||
lineNumber: line === null || line === void 0 ? void 0 : line.number
|
||
});
|
||
};
|
||
return SideBySideRenderer2;
|
||
}();
|
||
exports.default = SideBySideRenderer;
|
||
}
|
||
});
|
||
|
||
// node_modules/hogan.js/lib/compiler.js
|
||
var require_compiler = __commonJS({
|
||
"node_modules/hogan.js/lib/compiler.js"(exports) {
|
||
(function(Hogan2) {
|
||
var rIsWhitespace = /\S/, rQuot = /\"/g, rNewline = /\n/g, rCr = /\r/g, rSlash = /\\/g, rLineSep = /\u2028/, rParagraphSep = /\u2029/;
|
||
Hogan2.tags = {
|
||
"#": 1,
|
||
"^": 2,
|
||
"<": 3,
|
||
"$": 4,
|
||
"/": 5,
|
||
"!": 6,
|
||
">": 7,
|
||
"=": 8,
|
||
"_v": 9,
|
||
"{": 10,
|
||
"&": 11,
|
||
"_t": 12
|
||
};
|
||
Hogan2.scan = function scan(text2, delimiters) {
|
||
var len = text2.length, IN_TEXT = 0, IN_TAG_TYPE = 1, IN_TAG = 2, state = IN_TEXT, tagType = null, tag = null, buf = "", tokens = [], seenTag = false, i = 0, lineStart = 0, otag = "{{", ctag = "}}";
|
||
function addBuf() {
|
||
if (buf.length > 0) {
|
||
tokens.push({ tag: "_t", text: new String(buf) });
|
||
buf = "";
|
||
}
|
||
}
|
||
function lineIsWhitespace() {
|
||
var isAllWhitespace = true;
|
||
for (var j = lineStart; j < tokens.length; j++) {
|
||
isAllWhitespace = Hogan2.tags[tokens[j].tag] < Hogan2.tags["_v"] || tokens[j].tag == "_t" && tokens[j].text.match(rIsWhitespace) === null;
|
||
if (!isAllWhitespace) {
|
||
return false;
|
||
}
|
||
}
|
||
return isAllWhitespace;
|
||
}
|
||
function filterLine(haveSeenTag, noNewLine) {
|
||
addBuf();
|
||
if (haveSeenTag && lineIsWhitespace()) {
|
||
for (var j = lineStart, next; j < tokens.length; j++) {
|
||
if (tokens[j].text) {
|
||
if ((next = tokens[j + 1]) && next.tag == ">") {
|
||
next.indent = tokens[j].text.toString();
|
||
}
|
||
tokens.splice(j, 1);
|
||
}
|
||
}
|
||
} else if (!noNewLine) {
|
||
tokens.push({ tag: "\n" });
|
||
}
|
||
seenTag = false;
|
||
lineStart = tokens.length;
|
||
}
|
||
function changeDelimiters(text3, index) {
|
||
var close = "=" + ctag, closeIndex = text3.indexOf(close, index), delimiters2 = trim(text3.substring(text3.indexOf("=", index) + 1, closeIndex)).split(" ");
|
||
otag = delimiters2[0];
|
||
ctag = delimiters2[delimiters2.length - 1];
|
||
return closeIndex + close.length - 1;
|
||
}
|
||
if (delimiters) {
|
||
delimiters = delimiters.split(" ");
|
||
otag = delimiters[0];
|
||
ctag = delimiters[1];
|
||
}
|
||
for (i = 0; i < len; i++) {
|
||
if (state == IN_TEXT) {
|
||
if (tagChange(otag, text2, i)) {
|
||
--i;
|
||
addBuf();
|
||
state = IN_TAG_TYPE;
|
||
} else {
|
||
if (text2.charAt(i) == "\n") {
|
||
filterLine(seenTag);
|
||
} else {
|
||
buf += text2.charAt(i);
|
||
}
|
||
}
|
||
} else if (state == IN_TAG_TYPE) {
|
||
i += otag.length - 1;
|
||
tag = Hogan2.tags[text2.charAt(i + 1)];
|
||
tagType = tag ? text2.charAt(i + 1) : "_v";
|
||
if (tagType == "=") {
|
||
i = changeDelimiters(text2, i);
|
||
state = IN_TEXT;
|
||
} else {
|
||
if (tag) {
|
||
i++;
|
||
}
|
||
state = IN_TAG;
|
||
}
|
||
seenTag = i;
|
||
} else {
|
||
if (tagChange(ctag, text2, i)) {
|
||
tokens.push({
|
||
tag: tagType,
|
||
n: trim(buf),
|
||
otag,
|
||
ctag,
|
||
i: tagType == "/" ? seenTag - otag.length : i + ctag.length
|
||
});
|
||
buf = "";
|
||
i += ctag.length - 1;
|
||
state = IN_TEXT;
|
||
if (tagType == "{") {
|
||
if (ctag == "}}") {
|
||
i++;
|
||
} else {
|
||
cleanTripleStache(tokens[tokens.length - 1]);
|
||
}
|
||
}
|
||
} else {
|
||
buf += text2.charAt(i);
|
||
}
|
||
}
|
||
}
|
||
filterLine(seenTag, true);
|
||
return tokens;
|
||
};
|
||
function cleanTripleStache(token) {
|
||
if (token.n.substr(token.n.length - 1) === "}") {
|
||
token.n = token.n.substring(0, token.n.length - 1);
|
||
}
|
||
}
|
||
function trim(s) {
|
||
if (s.trim) {
|
||
return s.trim();
|
||
}
|
||
return s.replace(/^\s*|\s*$/g, "");
|
||
}
|
||
function tagChange(tag, text2, index) {
|
||
if (text2.charAt(index) != tag.charAt(0)) {
|
||
return false;
|
||
}
|
||
for (var i = 1, l = tag.length; i < l; i++) {
|
||
if (text2.charAt(index + i) != tag.charAt(i)) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
var allowedInSuper = { "_t": true, "\n": true, "$": true, "/": true };
|
||
function buildTree(tokens, kind, stack, customTags) {
|
||
var instructions = [], opener = null, tail = null, token = null;
|
||
tail = stack[stack.length - 1];
|
||
while (tokens.length > 0) {
|
||
token = tokens.shift();
|
||
if (tail && tail.tag == "<" && !(token.tag in allowedInSuper)) {
|
||
throw new Error("Illegal content in < super tag.");
|
||
}
|
||
if (Hogan2.tags[token.tag] <= Hogan2.tags["$"] || isOpener(token, customTags)) {
|
||
stack.push(token);
|
||
token.nodes = buildTree(tokens, token.tag, stack, customTags);
|
||
} else if (token.tag == "/") {
|
||
if (stack.length === 0) {
|
||
throw new Error("Closing tag without opener: /" + token.n);
|
||
}
|
||
opener = stack.pop();
|
||
if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
|
||
throw new Error("Nesting error: " + opener.n + " vs. " + token.n);
|
||
}
|
||
opener.end = token.i;
|
||
return instructions;
|
||
} else if (token.tag == "\n") {
|
||
token.last = tokens.length == 0 || tokens[0].tag == "\n";
|
||
}
|
||
instructions.push(token);
|
||
}
|
||
if (stack.length > 0) {
|
||
throw new Error("missing closing tag: " + stack.pop().n);
|
||
}
|
||
return instructions;
|
||
}
|
||
function isOpener(token, tags) {
|
||
for (var i = 0, l = tags.length; i < l; i++) {
|
||
if (tags[i].o == token.n) {
|
||
token.tag = "#";
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
function isCloser(close, open, tags) {
|
||
for (var i = 0, l = tags.length; i < l; i++) {
|
||
if (tags[i].c == close && tags[i].o == open) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
function stringifySubstitutions(obj) {
|
||
var items = [];
|
||
for (var key2 in obj) {
|
||
items.push('"' + esc(key2) + '": function(c,p,t,i) {' + obj[key2] + "}");
|
||
}
|
||
return "{ " + items.join(",") + " }";
|
||
}
|
||
function stringifyPartials(codeObj) {
|
||
var partials = [];
|
||
for (var key2 in codeObj.partials) {
|
||
partials.push('"' + esc(key2) + '":{name:"' + esc(codeObj.partials[key2].name) + '", ' + stringifyPartials(codeObj.partials[key2]) + "}");
|
||
}
|
||
return "partials: {" + partials.join(",") + "}, subs: " + stringifySubstitutions(codeObj.subs);
|
||
}
|
||
Hogan2.stringify = function(codeObj, text2, options) {
|
||
return "{code: function (c,p,i) { " + Hogan2.wrapMain(codeObj.code) + " }," + stringifyPartials(codeObj) + "}";
|
||
};
|
||
var serialNo = 0;
|
||
Hogan2.generate = function(tree, text2, options) {
|
||
serialNo = 0;
|
||
var context = { code: "", subs: {}, partials: {} };
|
||
Hogan2.walk(tree, context);
|
||
if (options.asString) {
|
||
return this.stringify(context, text2, options);
|
||
}
|
||
return this.makeTemplate(context, text2, options);
|
||
};
|
||
Hogan2.wrapMain = function(code) {
|
||
return 'var t=this;t.b(i=i||"");' + code + "return t.fl();";
|
||
};
|
||
Hogan2.template = Hogan2.Template;
|
||
Hogan2.makeTemplate = function(codeObj, text2, options) {
|
||
var template = this.makePartials(codeObj);
|
||
template.code = new Function("c", "p", "i", this.wrapMain(codeObj.code));
|
||
return new this.template(template, text2, this, options);
|
||
};
|
||
Hogan2.makePartials = function(codeObj) {
|
||
var key2, template = { subs: {}, partials: codeObj.partials, name: codeObj.name };
|
||
for (key2 in template.partials) {
|
||
template.partials[key2] = this.makePartials(template.partials[key2]);
|
||
}
|
||
for (key2 in codeObj.subs) {
|
||
template.subs[key2] = new Function("c", "p", "t", "i", codeObj.subs[key2]);
|
||
}
|
||
return template;
|
||
};
|
||
function esc(s) {
|
||
return s.replace(rSlash, "\\\\").replace(rQuot, '\\"').replace(rNewline, "\\n").replace(rCr, "\\r").replace(rLineSep, "\\u2028").replace(rParagraphSep, "\\u2029");
|
||
}
|
||
function chooseMethod(s) {
|
||
return ~s.indexOf(".") ? "d" : "f";
|
||
}
|
||
function createPartial(node, context) {
|
||
var prefix = "<" + (context.prefix || "");
|
||
var sym = prefix + node.n + serialNo++;
|
||
context.partials[sym] = { name: node.n, partials: {} };
|
||
context.code += 't.b(t.rp("' + esc(sym) + '",c,p,"' + (node.indent || "") + '"));';
|
||
return sym;
|
||
}
|
||
Hogan2.codegen = {
|
||
"#": function(node, context) {
|
||
context.code += "if(t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,0,' + node.i + "," + node.end + ',"' + node.otag + " " + node.ctag + '")){t.rs(c,p,function(c,p,t){';
|
||
Hogan2.walk(node.nodes, context);
|
||
context.code += "});c.pop();}";
|
||
},
|
||
"^": function(node, context) {
|
||
context.code += "if(!t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,1,0,0,"")){';
|
||
Hogan2.walk(node.nodes, context);
|
||
context.code += "};";
|
||
},
|
||
">": createPartial,
|
||
"<": function(node, context) {
|
||
var ctx = { partials: {}, code: "", subs: {}, inPartial: true };
|
||
Hogan2.walk(node.nodes, ctx);
|
||
var template = context.partials[createPartial(node, context)];
|
||
template.subs = ctx.subs;
|
||
template.partials = ctx.partials;
|
||
},
|
||
"$": function(node, context) {
|
||
var ctx = { subs: {}, code: "", partials: context.partials, prefix: node.n };
|
||
Hogan2.walk(node.nodes, ctx);
|
||
context.subs[node.n] = ctx.code;
|
||
if (!context.inPartial) {
|
||
context.code += 't.sub("' + esc(node.n) + '",c,p,i);';
|
||
}
|
||
},
|
||
"\n": function(node, context) {
|
||
context.code += write('"\\n"' + (node.last ? "" : " + i"));
|
||
},
|
||
"_v": function(node, context) {
|
||
context.code += "t.b(t.v(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
|
||
},
|
||
"_t": function(node, context) {
|
||
context.code += write('"' + esc(node.text) + '"');
|
||
},
|
||
"{": tripleStache,
|
||
"&": tripleStache
|
||
};
|
||
function tripleStache(node, context) {
|
||
context.code += "t.b(t.t(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
|
||
}
|
||
function write(s) {
|
||
return "t.b(" + s + ");";
|
||
}
|
||
Hogan2.walk = function(nodelist, context) {
|
||
var func;
|
||
for (var i = 0, l = nodelist.length; i < l; i++) {
|
||
func = Hogan2.codegen[nodelist[i].tag];
|
||
func && func(nodelist[i], context);
|
||
}
|
||
return context;
|
||
};
|
||
Hogan2.parse = function(tokens, text2, options) {
|
||
options = options || {};
|
||
return buildTree(tokens, "", [], options.sectionTags || []);
|
||
};
|
||
Hogan2.cache = {};
|
||
Hogan2.cacheKey = function(text2, options) {
|
||
return [text2, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join("||");
|
||
};
|
||
Hogan2.compile = function(text2, options) {
|
||
options = options || {};
|
||
var key2 = Hogan2.cacheKey(text2, options);
|
||
var template = this.cache[key2];
|
||
if (template) {
|
||
var partials = template.partials;
|
||
for (var name in partials) {
|
||
delete partials[name].instance;
|
||
}
|
||
return template;
|
||
}
|
||
template = this.generate(this.parse(this.scan(text2, options.delimiters), text2, options), text2, options);
|
||
return this.cache[key2] = template;
|
||
};
|
||
})(typeof exports !== "undefined" ? exports : Hogan);
|
||
}
|
||
});
|
||
|
||
// node_modules/hogan.js/lib/template.js
|
||
var require_template = __commonJS({
|
||
"node_modules/hogan.js/lib/template.js"(exports) {
|
||
var Hogan2 = {};
|
||
(function(Hogan3) {
|
||
Hogan3.Template = function(codeObj, text2, compiler, options) {
|
||
codeObj = codeObj || {};
|
||
this.r = codeObj.code || this.r;
|
||
this.c = compiler;
|
||
this.options = options || {};
|
||
this.text = text2 || "";
|
||
this.partials = codeObj.partials || {};
|
||
this.subs = codeObj.subs || {};
|
||
this.buf = "";
|
||
};
|
||
Hogan3.Template.prototype = {
|
||
r: function(context, partials, indent) {
|
||
return "";
|
||
},
|
||
v: hoganEscape,
|
||
t: coerceToString,
|
||
render: function render(context, partials, indent) {
|
||
return this.ri([context], partials || {}, indent);
|
||
},
|
||
ri: function(context, partials, indent) {
|
||
return this.r(context, partials, indent);
|
||
},
|
||
ep: function(symbol, partials) {
|
||
var partial = this.partials[symbol];
|
||
var template = partials[partial.name];
|
||
if (partial.instance && partial.base == template) {
|
||
return partial.instance;
|
||
}
|
||
if (typeof template == "string") {
|
||
if (!this.c) {
|
||
throw new Error("No compiler available.");
|
||
}
|
||
template = this.c.compile(template, this.options);
|
||
}
|
||
if (!template) {
|
||
return null;
|
||
}
|
||
this.partials[symbol].base = template;
|
||
if (partial.subs) {
|
||
if (!partials.stackText)
|
||
partials.stackText = {};
|
||
for (key in partial.subs) {
|
||
if (!partials.stackText[key]) {
|
||
partials.stackText[key] = this.activeSub !== void 0 && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text;
|
||
}
|
||
}
|
||
template = createSpecializedPartial(template, partial.subs, partial.partials, this.stackSubs, this.stackPartials, partials.stackText);
|
||
}
|
||
this.partials[symbol].instance = template;
|
||
return template;
|
||
},
|
||
rp: function(symbol, context, partials, indent) {
|
||
var partial = this.ep(symbol, partials);
|
||
if (!partial) {
|
||
return "";
|
||
}
|
||
return partial.ri(context, partials, indent);
|
||
},
|
||
rs: function(context, partials, section) {
|
||
var tail = context[context.length - 1];
|
||
if (!isArray(tail)) {
|
||
section(context, partials, this);
|
||
return;
|
||
}
|
||
for (var i = 0; i < tail.length; i++) {
|
||
context.push(tail[i]);
|
||
section(context, partials, this);
|
||
context.pop();
|
||
}
|
||
},
|
||
s: function(val, ctx, partials, inverted, start, end, tags) {
|
||
var pass;
|
||
if (isArray(val) && val.length === 0) {
|
||
return false;
|
||
}
|
||
if (typeof val == "function") {
|
||
val = this.ms(val, ctx, partials, inverted, start, end, tags);
|
||
}
|
||
pass = !!val;
|
||
if (!inverted && pass && ctx) {
|
||
ctx.push(typeof val == "object" ? val : ctx[ctx.length - 1]);
|
||
}
|
||
return pass;
|
||
},
|
||
d: function(key2, ctx, partials, returnFound) {
|
||
var found, names = key2.split("."), val = this.f(names[0], ctx, partials, returnFound), doModelGet = this.options.modelGet, cx = null;
|
||
if (key2 === "." && isArray(ctx[ctx.length - 2])) {
|
||
val = ctx[ctx.length - 1];
|
||
} else {
|
||
for (var i = 1; i < names.length; i++) {
|
||
found = findInScope(names[i], val, doModelGet);
|
||
if (found !== void 0) {
|
||
cx = val;
|
||
val = found;
|
||
} else {
|
||
val = "";
|
||
}
|
||
}
|
||
}
|
||
if (returnFound && !val) {
|
||
return false;
|
||
}
|
||
if (!returnFound && typeof val == "function") {
|
||
ctx.push(cx);
|
||
val = this.mv(val, ctx, partials);
|
||
ctx.pop();
|
||
}
|
||
return val;
|
||
},
|
||
f: function(key2, ctx, partials, returnFound) {
|
||
var val = false, v = null, found = false, doModelGet = this.options.modelGet;
|
||
for (var i = ctx.length - 1; i >= 0; i--) {
|
||
v = ctx[i];
|
||
val = findInScope(key2, v, doModelGet);
|
||
if (val !== void 0) {
|
||
found = true;
|
||
break;
|
||
}
|
||
}
|
||
if (!found) {
|
||
return returnFound ? false : "";
|
||
}
|
||
if (!returnFound && typeof val == "function") {
|
||
val = this.mv(val, ctx, partials);
|
||
}
|
||
return val;
|
||
},
|
||
ls: function(func, cx, partials, text2, tags) {
|
||
var oldTags = this.options.delimiters;
|
||
this.options.delimiters = tags;
|
||
this.b(this.ct(coerceToString(func.call(cx, text2)), cx, partials));
|
||
this.options.delimiters = oldTags;
|
||
return false;
|
||
},
|
||
ct: function(text2, cx, partials) {
|
||
if (this.options.disableLambda) {
|
||
throw new Error("Lambda features disabled.");
|
||
}
|
||
return this.c.compile(text2, this.options).render(cx, partials);
|
||
},
|
||
b: function(s) {
|
||
this.buf += s;
|
||
},
|
||
fl: function() {
|
||
var r = this.buf;
|
||
this.buf = "";
|
||
return r;
|
||
},
|
||
ms: function(func, ctx, partials, inverted, start, end, tags) {
|
||
var textSource, cx = ctx[ctx.length - 1], result = func.call(cx);
|
||
if (typeof result == "function") {
|
||
if (inverted) {
|
||
return true;
|
||
} else {
|
||
textSource = this.activeSub && this.subsText && this.subsText[this.activeSub] ? this.subsText[this.activeSub] : this.text;
|
||
return this.ls(result, cx, partials, textSource.substring(start, end), tags);
|
||
}
|
||
}
|
||
return result;
|
||
},
|
||
mv: function(func, ctx, partials) {
|
||
var cx = ctx[ctx.length - 1];
|
||
var result = func.call(cx);
|
||
if (typeof result == "function") {
|
||
return this.ct(coerceToString(result.call(cx)), cx, partials);
|
||
}
|
||
return result;
|
||
},
|
||
sub: function(name, context, partials, indent) {
|
||
var f = this.subs[name];
|
||
if (f) {
|
||
this.activeSub = name;
|
||
f(context, partials, this, indent);
|
||
this.activeSub = false;
|
||
}
|
||
}
|
||
};
|
||
function findInScope(key2, scope, doModelGet) {
|
||
var val;
|
||
if (scope && typeof scope == "object") {
|
||
if (scope[key2] !== void 0) {
|
||
val = scope[key2];
|
||
} else if (doModelGet && scope.get && typeof scope.get == "function") {
|
||
val = scope.get(key2);
|
||
}
|
||
}
|
||
return val;
|
||
}
|
||
function createSpecializedPartial(instance6, subs, partials, stackSubs, stackPartials, stackText) {
|
||
function PartialTemplate() {
|
||
}
|
||
;
|
||
PartialTemplate.prototype = instance6;
|
||
function Substitutions() {
|
||
}
|
||
;
|
||
Substitutions.prototype = instance6.subs;
|
||
var key2;
|
||
var partial = new PartialTemplate();
|
||
partial.subs = new Substitutions();
|
||
partial.subsText = {};
|
||
partial.buf = "";
|
||
stackSubs = stackSubs || {};
|
||
partial.stackSubs = stackSubs;
|
||
partial.subsText = stackText;
|
||
for (key2 in subs) {
|
||
if (!stackSubs[key2])
|
||
stackSubs[key2] = subs[key2];
|
||
}
|
||
for (key2 in stackSubs) {
|
||
partial.subs[key2] = stackSubs[key2];
|
||
}
|
||
stackPartials = stackPartials || {};
|
||
partial.stackPartials = stackPartials;
|
||
for (key2 in partials) {
|
||
if (!stackPartials[key2])
|
||
stackPartials[key2] = partials[key2];
|
||
}
|
||
for (key2 in stackPartials) {
|
||
partial.partials[key2] = stackPartials[key2];
|
||
}
|
||
return partial;
|
||
}
|
||
var rAmp = /&/g, rLt = /</g, rGt = />/g, rApos = /\'/g, rQuot = /\"/g, hChars = /[&<>\"\']/;
|
||
function coerceToString(val) {
|
||
return String(val === null || val === void 0 ? "" : val);
|
||
}
|
||
function hoganEscape(str) {
|
||
str = coerceToString(str);
|
||
return hChars.test(str) ? str.replace(rAmp, "&").replace(rLt, "<").replace(rGt, ">").replace(rApos, "'").replace(rQuot, """) : str;
|
||
}
|
||
var isArray = Array.isArray || function(a) {
|
||
return Object.prototype.toString.call(a) === "[object Array]";
|
||
};
|
||
})(typeof exports !== "undefined" ? exports : Hogan2);
|
||
}
|
||
});
|
||
|
||
// node_modules/hogan.js/lib/hogan.js
|
||
var require_hogan = __commonJS({
|
||
"node_modules/hogan.js/lib/hogan.js"(exports, module2) {
|
||
var Hogan2 = require_compiler();
|
||
Hogan2.Template = require_template().Template;
|
||
Hogan2.template = Hogan2.Template;
|
||
module2.exports = Hogan2;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/diff2html-templates.js
|
||
var require_diff2html_templates = __commonJS({
|
||
"node_modules/diff2html/lib/diff2html-templates.js"(exports) {
|
||
"use strict";
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.defaultTemplates = void 0;
|
||
var Hogan2 = __importStar2(require_hogan());
|
||
exports.defaultTemplates = {};
|
||
exports.defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<li class="d2h-file-list-line">');
|
||
t.b("\n" + i);
|
||
t.b(' <span class="d2h-file-name-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(t.rp("<fileIcon0", c, p, " "));
|
||
t.b(' <a href="#');
|
||
t.b(t.v(t.f("fileHtmlId", c, p, 0)));
|
||
t.b('" class="d2h-file-name">');
|
||
t.b(t.v(t.f("fileName", c, p, 0)));
|
||
t.b("</a>");
|
||
t.b("\n" + i);
|
||
t.b(' <span class="d2h-file-stats">');
|
||
t.b("\n" + i);
|
||
t.b(' <span class="d2h-lines-added">');
|
||
t.b(t.v(t.f("addedLines", c, p, 0)));
|
||
t.b("</span>");
|
||
t.b("\n" + i);
|
||
t.b(' <span class="d2h-lines-deleted">');
|
||
t.b(t.v(t.f("deletedLines", c, p, 0)));
|
||
t.b("</span>");
|
||
t.b("\n" + i);
|
||
t.b(" </span>");
|
||
t.b("\n" + i);
|
||
t.b(" </span>");
|
||
t.b("\n" + i);
|
||
t.b("</li>");
|
||
return t.fl();
|
||
}, partials: { "<fileIcon0": { name: "fileIcon", partials: {}, subs: {} } }, subs: {} });
|
||
exports.defaultTemplates["file-summary-wrapper"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<div class="d2h-file-list-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-list-header">');
|
||
t.b("\n" + i);
|
||
t.b(' <span class="d2h-file-list-title">Files changed (');
|
||
t.b(t.v(t.f("filesNumber", c, p, 0)));
|
||
t.b(")</span>");
|
||
t.b("\n" + i);
|
||
t.b(' <a class="d2h-file-switch d2h-hide">hide</a>');
|
||
t.b("\n" + i);
|
||
t.b(' <a class="d2h-file-switch d2h-show">show</a>');
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(' <ol class="d2h-file-list">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("files", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </ol>");
|
||
t.b("\n" + i);
|
||
t.b("</div>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["generic-block-header"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b("<tr>");
|
||
t.b("\n" + i);
|
||
t.b(' <td class="');
|
||
t.b(t.v(t.f("lineClass", c, p, 0)));
|
||
t.b(" ");
|
||
t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
|
||
t.b('"></td>');
|
||
t.b("\n" + i);
|
||
t.b(' <td class="');
|
||
t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="');
|
||
t.b(t.v(t.f("contentClass", c, p, 0)));
|
||
t.b('">');
|
||
t.b(t.t(t.f("blockHeader", c, p, 0)));
|
||
t.b("</div>");
|
||
t.b("\n" + i);
|
||
t.b(" </td>");
|
||
t.b("\n" + i);
|
||
t.b("</tr>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["generic-empty-diff"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b("<tr>");
|
||
t.b("\n" + i);
|
||
t.b(' <td class="');
|
||
t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="');
|
||
t.b(t.v(t.f("contentClass", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(" File without changes");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </td>");
|
||
t.b("\n" + i);
|
||
t.b("</tr>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["generic-file-path"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<span class="d2h-file-name-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(t.rp("<fileIcon0", c, p, " "));
|
||
t.b(' <span class="d2h-file-name">');
|
||
t.b(t.v(t.f("fileDiffName", c, p, 0)));
|
||
t.b("</span>");
|
||
t.b("\n" + i);
|
||
t.b(t.rp("<fileTag1", c, p, " "));
|
||
t.b("</span>");
|
||
t.b("\n" + i);
|
||
t.b('<label class="d2h-file-collapse">');
|
||
t.b("\n" + i);
|
||
t.b(' <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">');
|
||
t.b("\n" + i);
|
||
t.b(" Viewed");
|
||
t.b("\n" + i);
|
||
t.b("</label>");
|
||
return t.fl();
|
||
}, partials: { "<fileIcon0": { name: "fileIcon", partials: {}, subs: {} }, "<fileTag1": { name: "fileTag", partials: {}, subs: {} } }, subs: {} });
|
||
exports.defaultTemplates["generic-line"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b("<tr>");
|
||
t.b("\n" + i);
|
||
t.b(' <td class="');
|
||
t.b(t.v(t.f("lineClass", c, p, 0)));
|
||
t.b(" ");
|
||
t.b(t.v(t.f("type", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("lineNumber", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </td>");
|
||
t.b("\n" + i);
|
||
t.b(' <td class="');
|
||
t.b(t.v(t.f("type", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="');
|
||
t.b(t.v(t.f("contentClass", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
if (t.s(t.f("prefix", c, p, 1), c, p, 0, 162, 238, "{{ }}")) {
|
||
t.rs(c, p, function(c2, p2, t2) {
|
||
t2.b(' <span class="d2h-code-line-prefix">');
|
||
t2.b(t2.t(t2.f("prefix", c2, p2, 0)));
|
||
t2.b("</span>");
|
||
t2.b("\n" + i);
|
||
});
|
||
c.pop();
|
||
}
|
||
if (!t.s(t.f("prefix", c, p, 1), c, p, 1, 0, 0, "")) {
|
||
t.b(' <span class="d2h-code-line-prefix"> </span>');
|
||
t.b("\n" + i);
|
||
}
|
||
;
|
||
if (t.s(t.f("content", c, p, 1), c, p, 0, 371, 445, "{{ }}")) {
|
||
t.rs(c, p, function(c2, p2, t2) {
|
||
t2.b(' <span class="d2h-code-line-ctn">');
|
||
t2.b(t2.t(t2.f("content", c2, p2, 0)));
|
||
t2.b("</span>");
|
||
t2.b("\n" + i);
|
||
});
|
||
c.pop();
|
||
}
|
||
if (!t.s(t.f("content", c, p, 1), c, p, 1, 0, 0, "")) {
|
||
t.b(' <span class="d2h-code-line-ctn"><br></span>');
|
||
t.b("\n" + i);
|
||
}
|
||
;
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </td>");
|
||
t.b("\n" + i);
|
||
t.b("</tr>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["generic-wrapper"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<div class="d2h-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("content", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b("</div>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["icon-file-added"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16"');
|
||
t.b("\n" + i);
|
||
t.b(' width="14">');
|
||
t.b("\n" + i);
|
||
t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path>');
|
||
t.b("\n" + i);
|
||
t.b("</svg>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["icon-file-changed"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1"');
|
||
t.b("\n" + i);
|
||
t.b(' viewBox="0 0 14 16" width="14">');
|
||
t.b("\n" + i);
|
||
t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path>');
|
||
t.b("\n" + i);
|
||
t.b("</svg>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["icon-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1"');
|
||
t.b("\n" + i);
|
||
t.b(' viewBox="0 0 14 16" width="14">');
|
||
t.b("\n" + i);
|
||
t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path>');
|
||
t.b("\n" + i);
|
||
t.b("</svg>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["icon-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<svg aria-hidden="true" class="d2h-icon d2h-moved" height="16" title="renamed" version="1.1"');
|
||
t.b("\n" + i);
|
||
t.b(' viewBox="0 0 14 16" width="14">');
|
||
t.b("\n" + i);
|
||
t.b(' <path d="M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z"></path>');
|
||
t.b("\n" + i);
|
||
t.b("</svg>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["icon-file"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">');
|
||
t.b("\n" + i);
|
||
t.b(' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>');
|
||
t.b("\n" + i);
|
||
t.b("</svg>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["line-by-line-file-diff"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<div id="');
|
||
t.b(t.v(t.f("fileHtmlId", c, p, 0)));
|
||
t.b('" class="d2h-file-wrapper" data-lang="');
|
||
t.b(t.v(t.d("file.language", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-header">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("filePath", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-diff">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-code-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(' <table class="d2h-diff-table">');
|
||
t.b("\n" + i);
|
||
t.b(' <tbody class="d2h-diff-tbody">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("diffs", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </tbody>");
|
||
t.b("\n" + i);
|
||
t.b(" </table>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b("</div>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["line-by-line-numbers"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<div class="line-num1">');
|
||
t.b(t.v(t.f("oldNumber", c, p, 0)));
|
||
t.b("</div>");
|
||
t.b("\n" + i);
|
||
t.b('<div class="line-num2">');
|
||
t.b(t.v(t.f("newNumber", c, p, 0)));
|
||
t.b("</div>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["side-by-side-file-diff"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<div id="');
|
||
t.b(t.v(t.f("fileHtmlId", c, p, 0)));
|
||
t.b('" class="d2h-file-wrapper" data-lang="');
|
||
t.b(t.v(t.d("file.language", c, p, 0)));
|
||
t.b('">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-header">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.f("filePath", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-files-diff">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-side-diff">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-code-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(' <table class="d2h-diff-table">');
|
||
t.b("\n" + i);
|
||
t.b(' <tbody class="d2h-diff-tbody">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.d("diffs.left", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </tbody>");
|
||
t.b("\n" + i);
|
||
t.b(" </table>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-file-side-diff">');
|
||
t.b("\n" + i);
|
||
t.b(' <div class="d2h-code-wrapper">');
|
||
t.b("\n" + i);
|
||
t.b(' <table class="d2h-diff-table">');
|
||
t.b("\n" + i);
|
||
t.b(' <tbody class="d2h-diff-tbody">');
|
||
t.b("\n" + i);
|
||
t.b(" ");
|
||
t.b(t.t(t.d("diffs.right", c, p, 0)));
|
||
t.b("\n" + i);
|
||
t.b(" </tbody>");
|
||
t.b("\n" + i);
|
||
t.b(" </table>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b(" </div>");
|
||
t.b("\n" + i);
|
||
t.b("</div>");
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["tag-file-added"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>');
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["tag-file-changed"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>');
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["tag-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>');
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
exports.defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) {
|
||
var t = this;
|
||
t.b(i = i || "");
|
||
t.b('<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>');
|
||
return t.fl();
|
||
}, partials: {}, subs: {} });
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/hoganjs-utils.js
|
||
var require_hoganjs_utils = __commonJS({
|
||
"node_modules/diff2html/lib/hoganjs-utils.js"(exports) {
|
||
"use strict";
|
||
var __assign2 = exports && exports.__assign || function() {
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign2.apply(this, arguments);
|
||
};
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var Hogan2 = __importStar2(require_hogan());
|
||
var diff2html_templates_1 = require_diff2html_templates();
|
||
var HoganJsUtils = function() {
|
||
function HoganJsUtils2(_a2) {
|
||
var _b = _a2.compiledTemplates, compiledTemplates = _b === void 0 ? {} : _b, _c = _a2.rawTemplates, rawTemplates = _c === void 0 ? {} : _c;
|
||
var compiledRawTemplates = Object.entries(rawTemplates).reduce(function(previousTemplates, _a3) {
|
||
var _b2;
|
||
var name = _a3[0], templateString = _a3[1];
|
||
var compiledTemplate = Hogan2.compile(templateString, { asString: false });
|
||
return __assign2(__assign2({}, previousTemplates), (_b2 = {}, _b2[name] = compiledTemplate, _b2));
|
||
}, {});
|
||
this.preCompiledTemplates = __assign2(__assign2(__assign2({}, diff2html_templates_1.defaultTemplates), compiledTemplates), compiledRawTemplates);
|
||
}
|
||
HoganJsUtils2.compile = function(templateString) {
|
||
return Hogan2.compile(templateString, { asString: false });
|
||
};
|
||
HoganJsUtils2.prototype.render = function(namespace, view, params, partials, indent) {
|
||
var templateKey = this.templateKey(namespace, view);
|
||
try {
|
||
var template = this.preCompiledTemplates[templateKey];
|
||
return template.render(params, partials, indent);
|
||
} catch (e) {
|
||
throw new Error("Could not find template to render '".concat(templateKey, "'"));
|
||
}
|
||
};
|
||
HoganJsUtils2.prototype.template = function(namespace, view) {
|
||
return this.preCompiledTemplates[this.templateKey(namespace, view)];
|
||
};
|
||
HoganJsUtils2.prototype.templateKey = function(namespace, view) {
|
||
return "".concat(namespace, "-").concat(view);
|
||
};
|
||
return HoganJsUtils2;
|
||
}();
|
||
exports.default = HoganJsUtils;
|
||
}
|
||
});
|
||
|
||
// node_modules/diff2html/lib/diff2html.js
|
||
var require_diff2html = __commonJS({
|
||
"node_modules/diff2html/lib/diff2html.js"(exports) {
|
||
"use strict";
|
||
var __assign2 = exports && exports.__assign || function() {
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign2.apply(this, arguments);
|
||
};
|
||
var __createBinding2 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
});
|
||
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
});
|
||
var __importStar2 = exports && exports.__importStar || function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
var __importDefault2 = exports && exports.__importDefault || function(mod) {
|
||
return mod && mod.__esModule ? mod : { "default": mod };
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.html = exports.parse = exports.defaultDiff2HtmlConfig = void 0;
|
||
var DiffParser = __importStar2(require_diff_parser());
|
||
var fileListPrinter = __importStar2(require_file_list_renderer());
|
||
var line_by_line_renderer_1 = __importStar2(require_line_by_line_renderer());
|
||
var side_by_side_renderer_1 = __importStar2(require_side_by_side_renderer());
|
||
var types_1 = require_types();
|
||
var hoganjs_utils_1 = __importDefault2(require_hoganjs_utils());
|
||
exports.defaultDiff2HtmlConfig = __assign2(__assign2(__assign2({}, line_by_line_renderer_1.defaultLineByLineRendererConfig), side_by_side_renderer_1.defaultSideBySideRendererConfig), { outputFormat: types_1.OutputFormatType.LINE_BY_LINE, drawFileList: true });
|
||
function parse(diffInput, configuration) {
|
||
if (configuration === void 0) {
|
||
configuration = {};
|
||
}
|
||
return DiffParser.parse(diffInput, __assign2(__assign2({}, exports.defaultDiff2HtmlConfig), configuration));
|
||
}
|
||
exports.parse = parse;
|
||
function html2(diffInput, configuration) {
|
||
if (configuration === void 0) {
|
||
configuration = {};
|
||
}
|
||
var config = __assign2(__assign2({}, exports.defaultDiff2HtmlConfig), configuration);
|
||
var diffJson = typeof diffInput === "string" ? DiffParser.parse(diffInput, config) : diffInput;
|
||
var hoganUtils = new hoganjs_utils_1.default(config);
|
||
var fileList = config.drawFileList ? fileListPrinter.render(diffJson, hoganUtils) : "";
|
||
var diffOutput = config.outputFormat === "side-by-side" ? new side_by_side_renderer_1.default(hoganUtils, config).render(diffJson) : new line_by_line_renderer_1.default(hoganUtils, config).render(diffJson);
|
||
return fileList + diffOutput;
|
||
}
|
||
exports.html = html2;
|
||
}
|
||
});
|
||
|
||
// node_modules/tslib/tslib.js
|
||
var require_tslib = __commonJS({
|
||
"node_modules/tslib/tslib.js"(exports, module2) {
|
||
var __extends2;
|
||
var __assign2;
|
||
var __rest2;
|
||
var __decorate2;
|
||
var __param2;
|
||
var __metadata2;
|
||
var __awaiter2;
|
||
var __generator2;
|
||
var __exportStar2;
|
||
var __values2;
|
||
var __read2;
|
||
var __spread2;
|
||
var __spreadArrays2;
|
||
var __spreadArray2;
|
||
var __await2;
|
||
var __asyncGenerator2;
|
||
var __asyncDelegator2;
|
||
var __asyncValues2;
|
||
var __makeTemplateObject2;
|
||
var __importStar2;
|
||
var __importDefault2;
|
||
var __classPrivateFieldGet2;
|
||
var __classPrivateFieldSet2;
|
||
var __classPrivateFieldIn2;
|
||
var __createBinding2;
|
||
(function(factory) {
|
||
var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
|
||
if (typeof define === "function" && define.amd) {
|
||
define("tslib", ["exports"], function(exports2) {
|
||
factory(createExporter(root, createExporter(exports2)));
|
||
});
|
||
} else if (typeof module2 === "object" && typeof module2.exports === "object") {
|
||
factory(createExporter(root, createExporter(module2.exports)));
|
||
} else {
|
||
factory(createExporter(root));
|
||
}
|
||
function createExporter(exports2, previous) {
|
||
if (exports2 !== root) {
|
||
if (typeof Object.create === "function") {
|
||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
} else {
|
||
exports2.__esModule = true;
|
||
}
|
||
}
|
||
return function(id, v) {
|
||
return exports2[id] = previous ? previous(id, v) : v;
|
||
};
|
||
}
|
||
})(function(exporter) {
|
||
var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d, b) {
|
||
d.__proto__ = b;
|
||
} || function(d, b) {
|
||
for (var p in b)
|
||
if (Object.prototype.hasOwnProperty.call(b, p))
|
||
d[p] = b[p];
|
||
};
|
||
__extends2 = function(d, b) {
|
||
if (typeof b !== "function" && b !== null)
|
||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||
extendStatics(d, b);
|
||
function __() {
|
||
this.constructor = d;
|
||
}
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
__assign2 = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
__rest2 = function(s, e) {
|
||
var t = {};
|
||
for (var p in s)
|
||
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||
t[p] = s[p];
|
||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||
t[p[i]] = s[p[i]];
|
||
}
|
||
return t;
|
||
};
|
||
__decorate2 = function(decorators, target, key2, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key2) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
||
r = Reflect.decorate(decorators, target, key2, desc);
|
||
else
|
||
for (var i = decorators.length - 1; i >= 0; i--)
|
||
if (d = decorators[i])
|
||
r = (c < 3 ? d(r) : c > 3 ? d(target, key2, r) : d(target, key2)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key2, r), r;
|
||
};
|
||
__param2 = function(paramIndex, decorator) {
|
||
return function(target, key2) {
|
||
decorator(target, key2, paramIndex);
|
||
};
|
||
};
|
||
__metadata2 = function(metadataKey, metadataValue) {
|
||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
||
return Reflect.metadata(metadataKey, metadataValue);
|
||
};
|
||
__awaiter2 = function(thisArg, _arguments, P, generator) {
|
||
function adopt(value) {
|
||
return value instanceof P ? value : new P(function(resolve) {
|
||
resolve(value);
|
||
});
|
||
}
|
||
return new (P || (P = Promise))(function(resolve, reject) {
|
||
function fulfilled(value) {
|
||
try {
|
||
step(generator.next(value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
}
|
||
function rejected(value) {
|
||
try {
|
||
step(generator["throw"](value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
}
|
||
function step(result) {
|
||
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
||
}
|
||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
});
|
||
};
|
||
__generator2 = function(thisArg, body) {
|
||
var _ = { label: 0, sent: function() {
|
||
if (t[0] & 1)
|
||
throw t[1];
|
||
return t[1];
|
||
}, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
||
return this;
|
||
}), g;
|
||
function verb(n) {
|
||
return function(v) {
|
||
return step([n, v]);
|
||
};
|
||
}
|
||
function step(op) {
|
||
if (f)
|
||
throw new TypeError("Generator is already executing.");
|
||
while (_)
|
||
try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
||
return t;
|
||
if (y = 0, t)
|
||
op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0:
|
||
case 1:
|
||
t = op;
|
||
break;
|
||
case 4:
|
||
_.label++;
|
||
return { value: op[1], done: false };
|
||
case 5:
|
||
_.label++;
|
||
y = op[1];
|
||
op = [0];
|
||
continue;
|
||
case 7:
|
||
op = _.ops.pop();
|
||
_.trys.pop();
|
||
continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
||
_ = 0;
|
||
continue;
|
||
}
|
||
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
||
_.label = op[1];
|
||
break;
|
||
}
|
||
if (op[0] === 6 && _.label < t[1]) {
|
||
_.label = t[1];
|
||
t = op;
|
||
break;
|
||
}
|
||
if (t && _.label < t[2]) {
|
||
_.label = t[2];
|
||
_.ops.push(op);
|
||
break;
|
||
}
|
||
if (t[2])
|
||
_.ops.pop();
|
||
_.trys.pop();
|
||
continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) {
|
||
op = [6, e];
|
||
y = 0;
|
||
} finally {
|
||
f = t = 0;
|
||
}
|
||
if (op[0] & 5)
|
||
throw op[1];
|
||
return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
__exportStar2 = function(m, o) {
|
||
for (var p in m)
|
||
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
||
__createBinding2(o, m, p);
|
||
};
|
||
__createBinding2 = Object.create ? function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||
desc = { enumerable: true, get: function() {
|
||
return m[k];
|
||
} };
|
||
}
|
||
Object.defineProperty(o, k2, desc);
|
||
} : function(o, m, k, k2) {
|
||
if (k2 === void 0)
|
||
k2 = k;
|
||
o[k2] = m[k];
|
||
};
|
||
__values2 = function(o) {
|
||
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
||
if (m)
|
||
return m.call(o);
|
||
if (o && typeof o.length === "number")
|
||
return {
|
||
next: function() {
|
||
if (o && i >= o.length)
|
||
o = void 0;
|
||
return { value: o && o[i++], done: !o };
|
||
}
|
||
};
|
||
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
||
};
|
||
__read2 = function(o, n) {
|
||
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
||
if (!m)
|
||
return o;
|
||
var i = m.call(o), r, ar = [], e;
|
||
try {
|
||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
|
||
ar.push(r.value);
|
||
} catch (error) {
|
||
e = { error };
|
||
} finally {
|
||
try {
|
||
if (r && !r.done && (m = i["return"]))
|
||
m.call(i);
|
||
} finally {
|
||
if (e)
|
||
throw e.error;
|
||
}
|
||
}
|
||
return ar;
|
||
};
|
||
__spread2 = function() {
|
||
for (var ar = [], i = 0; i < arguments.length; i++)
|
||
ar = ar.concat(__read2(arguments[i]));
|
||
return ar;
|
||
};
|
||
__spreadArrays2 = function() {
|
||
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
|
||
s += arguments[i].length;
|
||
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||
r[k] = a[j];
|
||
return r;
|
||
};
|
||
__spreadArray2 = function(to, from, pack) {
|
||
if (pack || arguments.length === 2)
|
||
for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
if (ar || !(i in from)) {
|
||
if (!ar)
|
||
ar = Array.prototype.slice.call(from, 0, i);
|
||
ar[i] = from[i];
|
||
}
|
||
}
|
||
return to.concat(ar || Array.prototype.slice.call(from));
|
||
};
|
||
__await2 = function(v) {
|
||
return this instanceof __await2 ? (this.v = v, this) : new __await2(v);
|
||
};
|
||
__asyncGenerator2 = function(thisArg, _arguments, generator) {
|
||
if (!Symbol.asyncIterator)
|
||
throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
|
||
return this;
|
||
}, i;
|
||
function verb(n) {
|
||
if (g[n])
|
||
i[n] = function(v) {
|
||
return new Promise(function(a, b) {
|
||
q.push([n, v, a, b]) > 1 || resume(n, v);
|
||
});
|
||
};
|
||
}
|
||
function resume(n, v) {
|
||
try {
|
||
step(g[n](v));
|
||
} catch (e) {
|
||
settle(q[0][3], e);
|
||
}
|
||
}
|
||
function step(r) {
|
||
r.value instanceof __await2 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
||
}
|
||
function fulfill(value) {
|
||
resume("next", value);
|
||
}
|
||
function reject(value) {
|
||
resume("throw", value);
|
||
}
|
||
function settle(f, v) {
|
||
if (f(v), q.shift(), q.length)
|
||
resume(q[0][0], q[0][1]);
|
||
}
|
||
};
|
||
__asyncDelegator2 = function(o) {
|
||
var i, p;
|
||
return i = {}, verb("next"), verb("throw", function(e) {
|
||
throw e;
|
||
}), verb("return"), i[Symbol.iterator] = function() {
|
||
return this;
|
||
}, i;
|
||
function verb(n, f) {
|
||
i[n] = o[n] ? function(v) {
|
||
return (p = !p) ? { value: __await2(o[n](v)), done: n === "return" } : f ? f(v) : v;
|
||
} : f;
|
||
}
|
||
};
|
||
__asyncValues2 = function(o) {
|
||
if (!Symbol.asyncIterator)
|
||
throw new TypeError("Symbol.asyncIterator is not defined.");
|
||
var m = o[Symbol.asyncIterator], i;
|
||
return m ? m.call(o) : (o = typeof __values2 === "function" ? __values2(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
|
||
return this;
|
||
}, i);
|
||
function verb(n) {
|
||
i[n] = o[n] && function(v) {
|
||
return new Promise(function(resolve, reject) {
|
||
v = o[n](v), settle(resolve, reject, v.done, v.value);
|
||
});
|
||
};
|
||
}
|
||
function settle(resolve, reject, d, v) {
|
||
Promise.resolve(v).then(function(v2) {
|
||
resolve({ value: v2, done: d });
|
||
}, reject);
|
||
}
|
||
};
|
||
__makeTemplateObject2 = function(cooked, raw) {
|
||
if (Object.defineProperty) {
|
||
Object.defineProperty(cooked, "raw", { value: raw });
|
||
} else {
|
||
cooked.raw = raw;
|
||
}
|
||
return cooked;
|
||
};
|
||
var __setModuleDefault = Object.create ? function(o, v) {
|
||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||
} : function(o, v) {
|
||
o["default"] = v;
|
||
};
|
||
__importStar2 = function(mod) {
|
||
if (mod && mod.__esModule)
|
||
return mod;
|
||
var result = {};
|
||
if (mod != null) {
|
||
for (var k in mod)
|
||
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
||
__createBinding2(result, mod, k);
|
||
}
|
||
__setModuleDefault(result, mod);
|
||
return result;
|
||
};
|
||
__importDefault2 = function(mod) {
|
||
return mod && mod.__esModule ? mod : { "default": mod };
|
||
};
|
||
__classPrivateFieldGet2 = function(receiver, state, kind, f) {
|
||
if (kind === "a" && !f)
|
||
throw new TypeError("Private accessor was defined without a getter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
||
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
||
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
||
};
|
||
__classPrivateFieldSet2 = function(receiver, state, value, kind, f) {
|
||
if (kind === "m")
|
||
throw new TypeError("Private method is not writable");
|
||
if (kind === "a" && !f)
|
||
throw new TypeError("Private accessor was defined without a setter");
|
||
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
||
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
||
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
|
||
};
|
||
__classPrivateFieldIn2 = function(state, receiver) {
|
||
if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function")
|
||
throw new TypeError("Cannot use 'in' operator on non-object");
|
||
return typeof state === "function" ? receiver === state : state.has(receiver);
|
||
};
|
||
exporter("__extends", __extends2);
|
||
exporter("__assign", __assign2);
|
||
exporter("__rest", __rest2);
|
||
exporter("__decorate", __decorate2);
|
||
exporter("__param", __param2);
|
||
exporter("__metadata", __metadata2);
|
||
exporter("__awaiter", __awaiter2);
|
||
exporter("__generator", __generator2);
|
||
exporter("__exportStar", __exportStar2);
|
||
exporter("__createBinding", __createBinding2);
|
||
exporter("__values", __values2);
|
||
exporter("__read", __read2);
|
||
exporter("__spread", __spread2);
|
||
exporter("__spreadArrays", __spreadArrays2);
|
||
exporter("__spreadArray", __spreadArray2);
|
||
exporter("__await", __await2);
|
||
exporter("__asyncGenerator", __asyncGenerator2);
|
||
exporter("__asyncDelegator", __asyncDelegator2);
|
||
exporter("__asyncValues", __asyncValues2);
|
||
exporter("__makeTemplateObject", __makeTemplateObject2);
|
||
exporter("__importStar", __importStar2);
|
||
exporter("__importDefault", __importDefault2);
|
||
exporter("__classPrivateFieldGet", __classPrivateFieldGet2);
|
||
exporter("__classPrivateFieldSet", __classPrivateFieldSet2);
|
||
exporter("__classPrivateFieldIn", __classPrivateFieldIn2);
|
||
});
|
||
}
|
||
});
|
||
|
||
// node_modules/feather-icons/dist/feather.js
|
||
var require_feather = __commonJS({
|
||
"node_modules/feather-icons/dist/feather.js"(exports, module2) {
|
||
(function webpackUniversalModuleDefinition(root, factory) {
|
||
if (typeof exports === "object" && typeof module2 === "object")
|
||
module2.exports = factory();
|
||
else if (typeof define === "function" && define.amd)
|
||
define([], factory);
|
||
else if (typeof exports === "object")
|
||
exports["feather"] = factory();
|
||
else
|
||
root["feather"] = factory();
|
||
})(typeof self !== "undefined" ? self : exports, function() {
|
||
return function(modules) {
|
||
var installedModules = {};
|
||
function __webpack_require__(moduleId) {
|
||
if (installedModules[moduleId]) {
|
||
return installedModules[moduleId].exports;
|
||
}
|
||
var module3 = installedModules[moduleId] = {
|
||
i: moduleId,
|
||
l: false,
|
||
exports: {}
|
||
};
|
||
modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__);
|
||
module3.l = true;
|
||
return module3.exports;
|
||
}
|
||
__webpack_require__.m = modules;
|
||
__webpack_require__.c = installedModules;
|
||
__webpack_require__.d = function(exports2, name, getter) {
|
||
if (!__webpack_require__.o(exports2, name)) {
|
||
Object.defineProperty(exports2, name, {
|
||
configurable: false,
|
||
enumerable: true,
|
||
get: getter
|
||
});
|
||
}
|
||
};
|
||
__webpack_require__.r = function(exports2) {
|
||
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
};
|
||
__webpack_require__.n = function(module3) {
|
||
var getter = module3 && module3.__esModule ? function getDefault() {
|
||
return module3["default"];
|
||
} : function getModuleExports() {
|
||
return module3;
|
||
};
|
||
__webpack_require__.d(getter, "a", getter);
|
||
return getter;
|
||
};
|
||
__webpack_require__.o = function(object, property) {
|
||
return Object.prototype.hasOwnProperty.call(object, property);
|
||
};
|
||
__webpack_require__.p = "";
|
||
return __webpack_require__(__webpack_require__.s = 0);
|
||
}({
|
||
"./dist/icons.json": function(module3) {
|
||
module3.exports = { "activity": '<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>', "airplay": '<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon>', "alert-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>', "alert-octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>', "alert-triangle": '<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line>', "align-center": '<line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line>', "align-justify": '<line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line>', "align-left": '<line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line>', "align-right": '<line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line>', "anchor": '<circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path>', "aperture": '<circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line>', "archive": '<polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line>', "arrow-down-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line>', "arrow-down-left": '<line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline>', "arrow-down-right": '<line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline>', "arrow-down": '<line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline>', "arrow-left-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line>', "arrow-left": '<line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline>', "arrow-right-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line>', "arrow-right": '<line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline>', "arrow-up-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line>', "arrow-up-left": '<line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline>', "arrow-up-right": '<line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline>', "arrow-up": '<line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline>', "at-sign": '<circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path>', "award": '<circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline>', "bar-chart-2": '<line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line>', "bar-chart": '<line x1="12" y1="20" x2="12" y2="10"></line><line x1="18" y1="20" x2="18" y2="4"></line><line x1="6" y1="20" x2="6" y2="16"></line>', "battery-charging": '<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19"></path><line x1="23" y1="13" x2="23" y2="11"></line><polyline points="11 6 7 12 13 12 9 18"></polyline>', "battery": '<rect x="1" y="6" width="18" height="12" rx="2" ry="2"></rect><line x1="23" y1="13" x2="23" y2="11"></line>', "bell-off": '<path d="M13.73 21a2 2 0 0 1-3.46 0"></path><path d="M18.63 13A17.89 17.89 0 0 1 18 8"></path><path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14"></path><path d="M18 8a6 6 0 0 0-9.33-5"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "bell": '<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path>', "bluetooth": '<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5"></polyline>', "bold": '<path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path>', "book-open": '<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path>', "book": '<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path>', "bookmark": '<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>', "box": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "briefcase": '<rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path>', "calendar": '<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line>', "camera-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56"></path>', "camera": '<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle>', "cast": '<path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path><line x1="2" y1="20" x2="2.01" y2="20"></line>', "check-circle": '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>', "check-square": '<polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>', "check": '<polyline points="20 6 9 17 4 12"></polyline>', "chevron-down": '<polyline points="6 9 12 15 18 9"></polyline>', "chevron-left": '<polyline points="15 18 9 12 15 6"></polyline>', "chevron-right": '<polyline points="9 18 15 12 9 6"></polyline>', "chevron-up": '<polyline points="18 15 12 9 6 15"></polyline>', "chevrons-down": '<polyline points="7 13 12 18 17 13"></polyline><polyline points="7 6 12 11 17 6"></polyline>', "chevrons-left": '<polyline points="11 17 6 12 11 7"></polyline><polyline points="18 17 13 12 18 7"></polyline>', "chevrons-right": '<polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline>', "chevrons-up": '<polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline>', "chrome": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line>', "circle": '<circle cx="12" cy="12" r="10"></circle>', "clipboard": '<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect>', "clock": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline>', "cloud-drizzle": '<line x1="8" y1="19" x2="8" y2="21"></line><line x1="8" y1="13" x2="8" y2="15"></line><line x1="16" y1="19" x2="16" y2="21"></line><line x1="16" y1="13" x2="16" y2="15"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="12" y1="15" x2="12" y2="17"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>', "cloud-lightning": '<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"></path><polyline points="13 11 9 17 15 17 11 23"></polyline>', "cloud-off": '<path d="M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "cloud-rain": '<line x1="16" y1="13" x2="16" y2="21"></line><line x1="8" y1="13" x2="8" y2="21"></line><line x1="12" y1="15" x2="12" y2="23"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>', "cloud-snow": '<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"></path><line x1="8" y1="16" x2="8.01" y2="16"></line><line x1="8" y1="20" x2="8.01" y2="20"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="12" y1="22" x2="12.01" y2="22"></line><line x1="16" y1="16" x2="16.01" y2="16"></line><line x1="16" y1="20" x2="16.01" y2="20"></line>', "cloud": '<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"></path>', "code": '<polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline>', "codepen": '<polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line>', "codesandbox": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline><polyline points="7.5 19.79 7.5 14.6 3 12"></polyline><polyline points="21 12 16.5 14.6 16.5 19.79"></polyline><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "coffee": '<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line>', "columns": '<path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"></path>', "command": '<path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path>', "compass": '<circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon>', "copy": '<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>', "corner-down-left": '<polyline points="9 10 4 15 9 20"></polyline><path d="M20 4v7a4 4 0 0 1-4 4H4"></path>', "corner-down-right": '<polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path>', "corner-left-down": '<polyline points="14 15 9 20 4 15"></polyline><path d="M20 4h-7a4 4 0 0 0-4 4v12"></path>', "corner-left-up": '<polyline points="14 9 9 4 4 9"></polyline><path d="M20 20h-7a4 4 0 0 1-4-4V4"></path>', "corner-right-down": '<polyline points="10 15 15 20 20 15"></polyline><path d="M4 4h7a4 4 0 0 1 4 4v12"></path>', "corner-right-up": '<polyline points="10 9 15 4 20 9"></polyline><path d="M4 20h7a4 4 0 0 0 4-4V4"></path>', "corner-up-left": '<polyline points="9 14 4 9 9 4"></polyline><path d="M20 20v-7a4 4 0 0 0-4-4H4"></path>', "corner-up-right": '<polyline points="15 14 20 9 15 4"></polyline><path d="M4 20v-7a4 4 0 0 1 4-4h12"></path>', "cpu": '<rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line>', "credit-card": '<rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect><line x1="1" y1="10" x2="23" y2="10"></line>', "crop": '<path d="M6.13 1L6 16a2 2 0 0 0 2 2h15"></path><path d="M1 6.13L16 6a2 2 0 0 1 2 2v15"></path>', "crosshair": '<circle cx="12" cy="12" r="10"></circle><line x1="22" y1="12" x2="18" y2="12"></line><line x1="6" y1="12" x2="2" y2="12"></line><line x1="12" y1="6" x2="12" y2="2"></line><line x1="12" y1="22" x2="12" y2="18"></line>', "database": '<ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path>', "delete": '<path d="M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path><line x1="18" y1="9" x2="12" y2="15"></line><line x1="12" y1="9" x2="18" y2="15"></line>', "disc": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="3"></circle>', "divide-circle": '<line x1="8" y1="12" x2="16" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line><line x1="12" y1="8" x2="12" y2="8"></line><circle cx="12" cy="12" r="10"></circle>', "divide-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line><line x1="12" y1="8" x2="12" y2="8"></line>', "divide": '<circle cx="12" cy="6" r="2"></circle><line x1="5" y1="12" x2="19" y2="12"></line><circle cx="12" cy="18" r="2"></circle>', "dollar-sign": '<line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>', "download-cloud": '<polyline points="8 17 12 21 16 17"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"></path>', "download": '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line>', "dribbble": '<circle cx="12" cy="12" r="10"></circle><path d="M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32"></path>', "droplet": '<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>', "edit-2": '<path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>', "edit-3": '<path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"></path>', "edit": '<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>', "external-link": '<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>', "eye-off": '<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "eye": '<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle>', "facebook": '<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>', "fast-forward": '<polygon points="13 19 22 12 13 5 13 19"></polygon><polygon points="2 19 11 12 2 5 2 19"></polygon>', "feather": '<path d="M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z"></path><line x1="16" y1="8" x2="2" y2="22"></line><line x1="17.5" y1="15" x2="9" y2="15"></line>', "figma": '<path d="M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z"></path><path d="M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z"></path><path d="M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z"></path><path d="M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z"></path><path d="M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z"></path>', "file-minus": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="9" y1="15" x2="15" y2="15"></line>', "file-plus": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line>', "file-text": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline>', "file": '<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>', "film": '<rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="7" y1="2" x2="7" y2="22"></line><line x1="17" y1="2" x2="17" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line><line x1="2" y1="7" x2="7" y2="7"></line><line x1="2" y1="17" x2="7" y2="17"></line><line x1="17" y1="17" x2="22" y2="17"></line><line x1="17" y1="7" x2="22" y2="7"></line>', "filter": '<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon>', "flag": '<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line>', "folder-minus": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="9" y1="14" x2="15" y2="14"></line>', "folder-plus": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="12" y1="11" x2="12" y2="17"></line><line x1="9" y1="14" x2="15" y2="14"></line>', "folder": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>', "framer": '<path d="M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7"></path>', "frown": '<circle cx="12" cy="12" r="10"></circle><path d="M16 16s-1.5-2-4-2-4 2-4 2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "gift": '<polyline points="20 12 20 22 4 22 4 12"></polyline><rect x="2" y="7" width="20" height="5"></rect><line x1="12" y1="22" x2="12" y2="7"></line><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"></path><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"></path>', "git-branch": '<line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path>', "git-commit": '<circle cx="12" cy="12" r="4"></circle><line x1="1.05" y1="12" x2="7" y2="12"></line><line x1="17.01" y1="12" x2="22.96" y2="12"></line>', "git-merge": '<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M6 21V9a9 9 0 0 0 9 9"></path>', "git-pull-request": '<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M13 6h3a2 2 0 0 1 2 2v7"></path><line x1="6" y1="9" x2="6" y2="21"></line>', "github": '<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path>', "gitlab": '<path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path>', "globe": '<circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>', "grid": '<rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect>', "hard-drive": '<line x1="22" y1="12" x2="2" y2="12"></line><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path><line x1="6" y1="16" x2="6.01" y2="16"></line><line x1="10" y1="16" x2="10.01" y2="16"></line>', "hash": '<line x1="4" y1="9" x2="20" y2="9"></line><line x1="4" y1="15" x2="20" y2="15"></line><line x1="10" y1="3" x2="8" y2="21"></line><line x1="16" y1="3" x2="14" y2="21"></line>', "headphones": '<path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>', "heart": '<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>', "help-circle": '<circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line>', "hexagon": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path>', "home": '<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline>', "image": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline>', "inbox": '<polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path>', "info": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line>', "instagram": '<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>', "italic": '<line x1="19" y1="4" x2="10" y2="4"></line><line x1="14" y1="20" x2="5" y2="20"></line><line x1="15" y1="4" x2="9" y2="20"></line>', "key": '<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"></path>', "layers": '<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline>', "layout": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line>', "life-buoy": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"></line><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"></line><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"></line><line x1="14.83" y1="9.17" x2="18.36" y2="5.64"></line><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"></line>', "link-2": '<path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line>', "link": '<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>', "linkedin": '<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle>', "list": '<line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line>', "loader": '<line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line>', "lock": '<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path>', "log-in": '<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path><polyline points="10 17 15 12 10 7"></polyline><line x1="15" y1="12" x2="3" y2="12"></line>', "log-out": '<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line>', "mail": '<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline>', "map-pin": '<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle>', "map": '<polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"></polygon><line x1="8" y1="2" x2="8" y2="18"></line><line x1="16" y1="6" x2="16" y2="22"></line>', "maximize-2": '<polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line>', "maximize": '<path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path>', "meh": '<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="15" x2="16" y2="15"></line><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "menu": '<line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>', "message-circle": '<path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path>', "message-square": '<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>', "mic-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>', "mic": '<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>', "minimize-2": '<polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line>', "minimize": '<path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path>', "minus-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line>', "minus-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line>', "minus": '<line x1="5" y1="12" x2="19" y2="12"></line>', "monitor": '<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line>', "moon": '<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>', "more-horizontal": '<circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle>', "more-vertical": '<circle cx="12" cy="12" r="1"></circle><circle cx="12" cy="5" r="1"></circle><circle cx="12" cy="19" r="1"></circle>', "mouse-pointer": '<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path>', "move": '<polyline points="5 9 2 12 5 15"></polyline><polyline points="9 5 12 2 15 5"></polyline><polyline points="15 19 12 22 9 19"></polyline><polyline points="19 9 22 12 19 15"></polyline><line x1="2" y1="12" x2="22" y2="12"></line><line x1="12" y1="2" x2="12" y2="22"></line>', "music": '<path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle>', "navigation-2": '<polygon points="12 2 19 21 12 17 5 21 12 2"></polygon>', "navigation": '<polygon points="3 11 22 2 13 21 11 13 3 11"></polygon>', "octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon>', "package": '<line x1="16.5" y1="9.4" x2="7.5" y2="4.21"></line><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "paperclip": '<path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>', "pause-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="10" y1="15" x2="10" y2="9"></line><line x1="14" y1="15" x2="14" y2="9"></line>', "pause": '<rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect>', "pen-tool": '<path d="M12 19l7-7 3 3-7 7-3-3z"></path><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"></path><path d="M2 2l7.586 7.586"></path><circle cx="11" cy="11" r="2"></circle>', "percent": '<line x1="19" y1="5" x2="5" y2="19"></line><circle cx="6.5" cy="6.5" r="2.5"></circle><circle cx="17.5" cy="17.5" r="2.5"></circle>', "phone-call": '<path d="M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-forwarded": '<polyline points="19 1 23 5 19 9"></polyline><line x1="15" y1="5" x2="23" y2="5"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-incoming": '<polyline points="16 2 16 8 22 8"></polyline><line x1="23" y1="1" x2="16" y2="8"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-missed": '<line x1="23" y1="1" x2="17" y2="7"></line><line x1="17" y1="1" x2="23" y2="7"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-off": '<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"></path><line x1="23" y1="1" x2="1" y2="23"></line>', "phone-outgoing": '<polyline points="23 7 23 1 17 1"></polyline><line x1="16" y1="8" x2="23" y2="1"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone": '<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "pie-chart": '<path d="M21.21 15.89A10 10 0 1 1 8 2.83"></path><path d="M22 12A10 10 0 0 0 12 2v10z"></path>', "play-circle": '<circle cx="12" cy="12" r="10"></circle><polygon points="10 8 16 12 10 16 10 8"></polygon>', "play": '<polygon points="5 3 19 12 5 21 5 3"></polygon>', "plus-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>', "plus-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>', "plus": '<line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line>', "pocket": '<path d="M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z"></path><polyline points="8 10 12 14 16 10"></polyline>', "power": '<path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line>', "printer": '<polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect>', "radio": '<circle cx="12" cy="12" r="2"></circle><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path>', "refresh-ccw": '<polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path>', "refresh-cw": '<polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path>', "repeat": '<polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path>', "rewind": '<polygon points="11 19 2 12 11 5 11 19"></polygon><polygon points="22 19 13 12 22 5 22 19"></polygon>', "rotate-ccw": '<polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>', "rotate-cw": '<polyline points="23 4 23 10 17 10"></polyline><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>', "rss": '<path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle>', "save": '<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline>', "scissors": '<circle cx="6" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><line x1="20" y1="4" x2="8.12" y2="15.88"></line><line x1="14.47" y1="14.48" x2="20" y2="20"></line><line x1="8.12" y1="8.12" x2="12" y2="12"></line>', "search": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>', "send": '<line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>', "server": '<rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line>', "settings": '<circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path>', "share-2": '<circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>', "share": '<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"></path><polyline points="16 6 12 2 8 6"></polyline><line x1="12" y1="2" x2="12" y2="15"></line>', "shield-off": '<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path><path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "shield": '<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>', "shopping-bag": '<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path><line x1="3" y1="6" x2="21" y2="6"></line><path d="M16 10a4 4 0 0 1-8 0"></path>', "shopping-cart": '<circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path>', "shuffle": '<polyline points="16 3 21 3 21 8"></polyline><line x1="4" y1="20" x2="21" y2="3"></line><polyline points="21 16 21 21 16 21"></polyline><line x1="15" y1="15" x2="21" y2="21"></line><line x1="4" y1="4" x2="9" y2="9"></line>', "sidebar": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line>', "skip-back": '<polygon points="19 20 9 12 19 4 19 20"></polygon><line x1="5" y1="19" x2="5" y2="5"></line>', "skip-forward": '<polygon points="5 4 15 12 5 20 5 4"></polygon><line x1="19" y1="5" x2="19" y2="19"></line>', "slack": '<path d="M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z"></path><path d="M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path><path d="M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z"></path><path d="M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z"></path><path d="M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z"></path><path d="M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"></path><path d="M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z"></path><path d="M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z"></path>', "slash": '<circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line>', "sliders": '<line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line>', "smartphone": '<rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>', "smile": '<circle cx="12" cy="12" r="10"></circle><path d="M8 14s1.5 2 4 2 4-2 4-2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "speaker": '<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><circle cx="12" cy="14" r="4"></circle><line x1="12" y1="6" x2="12.01" y2="6"></line>', "square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>', "star": '<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>', "stop-circle": '<circle cx="12" cy="12" r="10"></circle><rect x="9" y="9" width="6" height="6"></rect>', "sun": '<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>', "sunrise": '<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="2" x2="12" y2="9"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="8 6 12 2 16 6"></polyline>', "sunset": '<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="9" x2="12" y2="2"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="16 5 12 9 8 5"></polyline>', "table": '<path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path>', "tablet": '<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>', "tag": '<path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line>', "target": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle>', "terminal": '<polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line>', "thermometer": '<path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path>', "thumbs-down": '<path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>', "thumbs-up": '<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>', "toggle-left": '<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="8" cy="12" r="3"></circle>', "toggle-right": '<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="16" cy="12" r="3"></circle>', "tool": '<path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path>', "trash-2": '<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line>', "trash": '<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>', "trello": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><rect x="7" y="7" width="3" height="9"></rect><rect x="14" y="7" width="3" height="5"></rect>', "trending-down": '<polyline points="23 18 13.5 8.5 8.5 13.5 1 6"></polyline><polyline points="17 18 23 18 23 12"></polyline>', "trending-up": '<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline>', "triangle": '<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>', "truck": '<rect x="1" y="3" width="15" height="13"></rect><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"></polygon><circle cx="5.5" cy="18.5" r="2.5"></circle><circle cx="18.5" cy="18.5" r="2.5"></circle>', "tv": '<rect x="2" y="7" width="20" height="15" rx="2" ry="2"></rect><polyline points="17 2 12 7 7 2"></polyline>', "twitch": '<path d="M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7"></path>', "twitter": '<path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path>', "type": '<polyline points="4 7 4 4 20 4 20 7"></polyline><line x1="9" y1="20" x2="15" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line>', "umbrella": '<path d="M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7"></path>', "underline": '<path d="M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3"></path><line x1="4" y1="21" x2="20" y2="21"></line>', "unlock": '<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 9.9-1"></path>', "upload-cloud": '<polyline points="16 16 12 12 8 16"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"></path><polyline points="16 16 12 12 8 16"></polyline>', "upload": '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>', "user-check": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline>', "user-minus": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="23" y1="11" x2="17" y2="11"></line>', "user-plus": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="20" y1="8" x2="20" y2="14"></line><line x1="23" y1="11" x2="17" y2="11"></line>', "user-x": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="18" y1="8" x2="23" y2="13"></line><line x1="23" y1="8" x2="18" y2="13"></line>', "user": '<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle>', "users": '<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path>', "video-off": '<path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "video": '<polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect>', "voicemail": '<circle cx="5.5" cy="11.5" r="4.5"></circle><circle cx="18.5" cy="11.5" r="4.5"></circle><line x1="5.5" y1="16" x2="18.5" y2="16"></line>', "volume-1": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path>', "volume-2": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path>', "volume-x": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line>', "volume": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>', "watch": '<circle cx="12" cy="12" r="7"></circle><polyline points="12 9 12 12 13.5 13.5"></polyline><path d="M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83"></path>', "wifi-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M16.72 11.06A10.94 10.94 0 0 1 19 12.55"></path><path d="M5 12.55a10.94 10.94 0 0 1 5.17-2.39"></path><path d="M10.71 5.05A16 16 0 0 1 22.58 9"></path><path d="M1.42 9a15.91 15.91 0 0 1 4.7-2.88"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>', "wifi": '<path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>', "wind": '<path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path>', "x-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>', "x-octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>', "x-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="9" x2="15" y2="15"></line><line x1="15" y1="9" x2="9" y2="15"></line>', "x": '<line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>', "youtube": '<path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>', "zap-off": '<polyline points="12.41 6.75 13 2 10.57 4.92"></polyline><polyline points="18.57 12.91 21 10 15.66 10"></polyline><polyline points="8 8 3 14 12 14 11 22 16 16"></polyline><line x1="1" y1="1" x2="23" y2="23"></line>', "zap": '<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon>', "zoom-in": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line>', "zoom-out": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="8" y1="11" x2="14" y2="11"></line>' };
|
||
},
|
||
"./node_modules/classnames/dedupe.js": function(module3, exports2, __webpack_require__) {
|
||
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
|
||
(function() {
|
||
"use strict";
|
||
var classNames = function() {
|
||
function StorageObject() {
|
||
}
|
||
StorageObject.prototype = Object.create(null);
|
||
function _parseArray(resultSet, array) {
|
||
var length = array.length;
|
||
for (var i = 0; i < length; ++i) {
|
||
_parse(resultSet, array[i]);
|
||
}
|
||
}
|
||
var hasOwn = {}.hasOwnProperty;
|
||
function _parseNumber(resultSet, num) {
|
||
resultSet[num] = true;
|
||
}
|
||
function _parseObject(resultSet, object) {
|
||
for (var k in object) {
|
||
if (hasOwn.call(object, k)) {
|
||
resultSet[k] = !!object[k];
|
||
}
|
||
}
|
||
}
|
||
var SPACE = /\s+/;
|
||
function _parseString(resultSet, str) {
|
||
var array = str.split(SPACE);
|
||
var length = array.length;
|
||
for (var i = 0; i < length; ++i) {
|
||
resultSet[array[i]] = true;
|
||
}
|
||
}
|
||
function _parse(resultSet, arg) {
|
||
if (!arg)
|
||
return;
|
||
var argType = typeof arg;
|
||
if (argType === "string") {
|
||
_parseString(resultSet, arg);
|
||
} else if (Array.isArray(arg)) {
|
||
_parseArray(resultSet, arg);
|
||
} else if (argType === "object") {
|
||
_parseObject(resultSet, arg);
|
||
} else if (argType === "number") {
|
||
_parseNumber(resultSet, arg);
|
||
}
|
||
}
|
||
function _classNames() {
|
||
var len = arguments.length;
|
||
var args = Array(len);
|
||
for (var i = 0; i < len; i++) {
|
||
args[i] = arguments[i];
|
||
}
|
||
var classSet = new StorageObject();
|
||
_parseArray(classSet, args);
|
||
var list = [];
|
||
for (var k in classSet) {
|
||
if (classSet[k]) {
|
||
list.push(k);
|
||
}
|
||
}
|
||
return list.join(" ");
|
||
}
|
||
return _classNames;
|
||
}();
|
||
if (typeof module3 !== "undefined" && module3.exports) {
|
||
module3.exports = classNames;
|
||
} else if (true) {
|
||
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
|
||
return classNames;
|
||
}.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
||
} else {
|
||
}
|
||
})();
|
||
},
|
||
"./node_modules/core-js/es/array/from.js": function(module3, exports2, __webpack_require__) {
|
||
__webpack_require__("./node_modules/core-js/modules/es.string.iterator.js");
|
||
__webpack_require__("./node_modules/core-js/modules/es.array.from.js");
|
||
var path2 = __webpack_require__("./node_modules/core-js/internals/path.js");
|
||
module3.exports = path2.Array.from;
|
||
},
|
||
"./node_modules/core-js/internals/a-function.js": function(module3, exports2) {
|
||
module3.exports = function(it) {
|
||
if (typeof it != "function") {
|
||
throw TypeError(String(it) + " is not a function");
|
||
}
|
||
return it;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/an-object.js": function(module3, exports2, __webpack_require__) {
|
||
var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
|
||
module3.exports = function(it) {
|
||
if (!isObject(it)) {
|
||
throw TypeError(String(it) + " is not an object");
|
||
}
|
||
return it;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/array-from.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var bind = __webpack_require__("./node_modules/core-js/internals/bind-context.js");
|
||
var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
|
||
var callWithSafeIterationClosing = __webpack_require__("./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
|
||
var isArrayIteratorMethod = __webpack_require__("./node_modules/core-js/internals/is-array-iterator-method.js");
|
||
var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
|
||
var createProperty = __webpack_require__("./node_modules/core-js/internals/create-property.js");
|
||
var getIteratorMethod = __webpack_require__("./node_modules/core-js/internals/get-iterator-method.js");
|
||
module3.exports = function from(arrayLike) {
|
||
var O = toObject(arrayLike);
|
||
var C = typeof this == "function" ? this : Array;
|
||
var argumentsLength = arguments.length;
|
||
var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
|
||
var mapping = mapfn !== void 0;
|
||
var index = 0;
|
||
var iteratorMethod = getIteratorMethod(O);
|
||
var length, result, step, iterator;
|
||
if (mapping)
|
||
mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);
|
||
if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
|
||
iterator = iteratorMethod.call(O);
|
||
result = new C();
|
||
for (; !(step = iterator.next()).done; index++) {
|
||
createProperty(result, index, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value);
|
||
}
|
||
} else {
|
||
length = toLength(O.length);
|
||
result = new C(length);
|
||
for (; length > index; index++) {
|
||
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
|
||
}
|
||
}
|
||
result.length = index;
|
||
return result;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/array-includes.js": function(module3, exports2, __webpack_require__) {
|
||
var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
|
||
var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
|
||
var toAbsoluteIndex = __webpack_require__("./node_modules/core-js/internals/to-absolute-index.js");
|
||
module3.exports = function(IS_INCLUDES) {
|
||
return function($this, el, fromIndex) {
|
||
var O = toIndexedObject($this);
|
||
var length = toLength(O.length);
|
||
var index = toAbsoluteIndex(fromIndex, length);
|
||
var value;
|
||
if (IS_INCLUDES && el != el)
|
||
while (length > index) {
|
||
value = O[index++];
|
||
if (value != value)
|
||
return true;
|
||
}
|
||
else
|
||
for (; length > index; index++)
|
||
if (IS_INCLUDES || index in O) {
|
||
if (O[index] === el)
|
||
return IS_INCLUDES || index || 0;
|
||
}
|
||
return !IS_INCLUDES && -1;
|
||
};
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/bind-context.js": function(module3, exports2, __webpack_require__) {
|
||
var aFunction = __webpack_require__("./node_modules/core-js/internals/a-function.js");
|
||
module3.exports = function(fn, that, length) {
|
||
aFunction(fn);
|
||
if (that === void 0)
|
||
return fn;
|
||
switch (length) {
|
||
case 0:
|
||
return function() {
|
||
return fn.call(that);
|
||
};
|
||
case 1:
|
||
return function(a) {
|
||
return fn.call(that, a);
|
||
};
|
||
case 2:
|
||
return function(a, b) {
|
||
return fn.call(that, a, b);
|
||
};
|
||
case 3:
|
||
return function(a, b, c) {
|
||
return fn.call(that, a, b, c);
|
||
};
|
||
}
|
||
return function() {
|
||
return fn.apply(that, arguments);
|
||
};
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(module3, exports2, __webpack_require__) {
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
module3.exports = function(iterator, fn, value, ENTRIES) {
|
||
try {
|
||
return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
|
||
} catch (error) {
|
||
var returnMethod = iterator["return"];
|
||
if (returnMethod !== void 0)
|
||
anObject(returnMethod.call(iterator));
|
||
throw error;
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/check-correctness-of-iteration.js": function(module3, exports2, __webpack_require__) {
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var ITERATOR = wellKnownSymbol("iterator");
|
||
var SAFE_CLOSING = false;
|
||
try {
|
||
var called = 0;
|
||
var iteratorWithReturn = {
|
||
next: function() {
|
||
return { done: !!called++ };
|
||
},
|
||
"return": function() {
|
||
SAFE_CLOSING = true;
|
||
}
|
||
};
|
||
iteratorWithReturn[ITERATOR] = function() {
|
||
return this;
|
||
};
|
||
Array.from(iteratorWithReturn, function() {
|
||
throw 2;
|
||
});
|
||
} catch (error) {
|
||
}
|
||
module3.exports = function(exec, SKIP_CLOSING) {
|
||
if (!SKIP_CLOSING && !SAFE_CLOSING)
|
||
return false;
|
||
var ITERATION_SUPPORT = false;
|
||
try {
|
||
var object = {};
|
||
object[ITERATOR] = function() {
|
||
return {
|
||
next: function() {
|
||
return { done: ITERATION_SUPPORT = true };
|
||
}
|
||
};
|
||
};
|
||
exec(object);
|
||
} catch (error) {
|
||
}
|
||
return ITERATION_SUPPORT;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/classof-raw.js": function(module3, exports2) {
|
||
var toString = {}.toString;
|
||
module3.exports = function(it) {
|
||
return toString.call(it).slice(8, -1);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/classof.js": function(module3, exports2, __webpack_require__) {
|
||
var classofRaw = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var TO_STRING_TAG = wellKnownSymbol("toStringTag");
|
||
var CORRECT_ARGUMENTS = classofRaw(function() {
|
||
return arguments;
|
||
}()) == "Arguments";
|
||
var tryGet = function(it, key2) {
|
||
try {
|
||
return it[key2];
|
||
} catch (error) {
|
||
}
|
||
};
|
||
module3.exports = function(it) {
|
||
var O, tag, result;
|
||
return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/copy-constructor-properties.js": function(module3, exports2, __webpack_require__) {
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var ownKeys = __webpack_require__("./node_modules/core-js/internals/own-keys.js");
|
||
var getOwnPropertyDescriptorModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js");
|
||
var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
|
||
module3.exports = function(target, source) {
|
||
var keys = ownKeys(source);
|
||
var defineProperty = definePropertyModule.f;
|
||
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
|
||
for (var i = 0; i < keys.length; i++) {
|
||
var key2 = keys[i];
|
||
if (!has(target, key2))
|
||
defineProperty(target, key2, getOwnPropertyDescriptor(source, key2));
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/correct-prototype-getter.js": function(module3, exports2, __webpack_require__) {
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
module3.exports = !fails(function() {
|
||
function F() {
|
||
}
|
||
F.prototype.constructor = null;
|
||
return Object.getPrototypeOf(new F()) !== F.prototype;
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/create-iterator-constructor.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var IteratorPrototype = __webpack_require__("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
|
||
var create = __webpack_require__("./node_modules/core-js/internals/object-create.js");
|
||
var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
|
||
var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
|
||
var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
|
||
var returnThis = function() {
|
||
return this;
|
||
};
|
||
module3.exports = function(IteratorConstructor, NAME, next) {
|
||
var TO_STRING_TAG = NAME + " Iterator";
|
||
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
|
||
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
|
||
Iterators[TO_STRING_TAG] = returnThis;
|
||
return IteratorConstructor;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/create-property-descriptor.js": function(module3, exports2) {
|
||
module3.exports = function(bitmap, value) {
|
||
return {
|
||
enumerable: !(bitmap & 1),
|
||
configurable: !(bitmap & 2),
|
||
writable: !(bitmap & 4),
|
||
value
|
||
};
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/create-property.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
|
||
var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
|
||
var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
|
||
module3.exports = function(object, key2, value) {
|
||
var propertyKey = toPrimitive(key2);
|
||
if (propertyKey in object)
|
||
definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
|
||
else
|
||
object[propertyKey] = value;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/define-iterator.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
|
||
var createIteratorConstructor = __webpack_require__("./node_modules/core-js/internals/create-iterator-constructor.js");
|
||
var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
|
||
var setPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-set-prototype-of.js");
|
||
var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
|
||
var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
|
||
var IteratorsCore = __webpack_require__("./node_modules/core-js/internals/iterators-core.js");
|
||
var IteratorPrototype = IteratorsCore.IteratorPrototype;
|
||
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
|
||
var ITERATOR = wellKnownSymbol("iterator");
|
||
var KEYS = "keys";
|
||
var VALUES = "values";
|
||
var ENTRIES = "entries";
|
||
var returnThis = function() {
|
||
return this;
|
||
};
|
||
module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
|
||
createIteratorConstructor(IteratorConstructor, NAME, next);
|
||
var getIterationMethod = function(KIND) {
|
||
if (KIND === DEFAULT && defaultIterator)
|
||
return defaultIterator;
|
||
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)
|
||
return IterablePrototype[KIND];
|
||
switch (KIND) {
|
||
case KEYS:
|
||
return function keys() {
|
||
return new IteratorConstructor(this, KIND);
|
||
};
|
||
case VALUES:
|
||
return function values() {
|
||
return new IteratorConstructor(this, KIND);
|
||
};
|
||
case ENTRIES:
|
||
return function entries() {
|
||
return new IteratorConstructor(this, KIND);
|
||
};
|
||
}
|
||
return function() {
|
||
return new IteratorConstructor(this);
|
||
};
|
||
};
|
||
var TO_STRING_TAG = NAME + " Iterator";
|
||
var INCORRECT_VALUES_NAME = false;
|
||
var IterablePrototype = Iterable.prototype;
|
||
var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
|
||
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
|
||
var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
|
||
var CurrentIteratorPrototype, methods, KEY;
|
||
if (anyNativeIterator) {
|
||
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
|
||
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
|
||
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
|
||
if (setPrototypeOf) {
|
||
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
|
||
} else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") {
|
||
hide(CurrentIteratorPrototype, ITERATOR, returnThis);
|
||
}
|
||
}
|
||
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
|
||
if (IS_PURE)
|
||
Iterators[TO_STRING_TAG] = returnThis;
|
||
}
|
||
}
|
||
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
|
||
INCORRECT_VALUES_NAME = true;
|
||
defaultIterator = function values() {
|
||
return nativeIterator.call(this);
|
||
};
|
||
}
|
||
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
|
||
hide(IterablePrototype, ITERATOR, defaultIterator);
|
||
}
|
||
Iterators[NAME] = defaultIterator;
|
||
if (DEFAULT) {
|
||
methods = {
|
||
values: getIterationMethod(VALUES),
|
||
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
|
||
entries: getIterationMethod(ENTRIES)
|
||
};
|
||
if (FORCED)
|
||
for (KEY in methods) {
|
||
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
|
||
redefine(IterablePrototype, KEY, methods[KEY]);
|
||
}
|
||
}
|
||
else
|
||
$({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
|
||
}
|
||
return methods;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/descriptors.js": function(module3, exports2, __webpack_require__) {
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
module3.exports = !fails(function() {
|
||
return Object.defineProperty({}, "a", { get: function() {
|
||
return 7;
|
||
} }).a != 7;
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/document-create-element.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
|
||
var document2 = global2.document;
|
||
var exist = isObject(document2) && isObject(document2.createElement);
|
||
module3.exports = function(it) {
|
||
return exist ? document2.createElement(it) : {};
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/enum-bug-keys.js": function(module3, exports2) {
|
||
module3.exports = [
|
||
"constructor",
|
||
"hasOwnProperty",
|
||
"isPrototypeOf",
|
||
"propertyIsEnumerable",
|
||
"toLocaleString",
|
||
"toString",
|
||
"valueOf"
|
||
];
|
||
},
|
||
"./node_modules/core-js/internals/export.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var getOwnPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
|
||
var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
|
||
var copyConstructorProperties = __webpack_require__("./node_modules/core-js/internals/copy-constructor-properties.js");
|
||
var isForced = __webpack_require__("./node_modules/core-js/internals/is-forced.js");
|
||
module3.exports = function(options, source) {
|
||
var TARGET = options.target;
|
||
var GLOBAL = options.global;
|
||
var STATIC = options.stat;
|
||
var FORCED, target, key2, targetProperty, sourceProperty, descriptor;
|
||
if (GLOBAL) {
|
||
target = global2;
|
||
} else if (STATIC) {
|
||
target = global2[TARGET] || setGlobal(TARGET, {});
|
||
} else {
|
||
target = (global2[TARGET] || {}).prototype;
|
||
}
|
||
if (target)
|
||
for (key2 in source) {
|
||
sourceProperty = source[key2];
|
||
if (options.noTargetGet) {
|
||
descriptor = getOwnPropertyDescriptor(target, key2);
|
||
targetProperty = descriptor && descriptor.value;
|
||
} else
|
||
targetProperty = target[key2];
|
||
FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced);
|
||
if (!FORCED && targetProperty !== void 0) {
|
||
if (typeof sourceProperty === typeof targetProperty)
|
||
continue;
|
||
copyConstructorProperties(sourceProperty, targetProperty);
|
||
}
|
||
if (options.sham || targetProperty && targetProperty.sham) {
|
||
hide(sourceProperty, "sham", true);
|
||
}
|
||
redefine(target, key2, sourceProperty, options);
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/fails.js": function(module3, exports2) {
|
||
module3.exports = function(exec) {
|
||
try {
|
||
return !!exec();
|
||
} catch (error) {
|
||
return true;
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/function-to-string.js": function(module3, exports2, __webpack_require__) {
|
||
var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
|
||
module3.exports = shared("native-function-to-string", Function.toString);
|
||
},
|
||
"./node_modules/core-js/internals/get-iterator-method.js": function(module3, exports2, __webpack_require__) {
|
||
var classof = __webpack_require__("./node_modules/core-js/internals/classof.js");
|
||
var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var ITERATOR = wellKnownSymbol("iterator");
|
||
module3.exports = function(it) {
|
||
if (it != void 0)
|
||
return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)];
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/global.js": function(module3, exports2, __webpack_require__) {
|
||
(function(global2) {
|
||
var O = "object";
|
||
var check = function(it) {
|
||
return it && it.Math == Math && it;
|
||
};
|
||
module3.exports = check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || Function("return this")();
|
||
}).call(this, __webpack_require__("./node_modules/webpack/buildin/global.js"));
|
||
},
|
||
"./node_modules/core-js/internals/has.js": function(module3, exports2) {
|
||
var hasOwnProperty = {}.hasOwnProperty;
|
||
module3.exports = function(it, key2) {
|
||
return hasOwnProperty.call(it, key2);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/hidden-keys.js": function(module3, exports2) {
|
||
module3.exports = {};
|
||
},
|
||
"./node_modules/core-js/internals/hide.js": function(module3, exports2, __webpack_require__) {
|
||
var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
|
||
var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
|
||
var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
|
||
module3.exports = DESCRIPTORS ? function(object, key2, value) {
|
||
return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value));
|
||
} : function(object, key2, value) {
|
||
object[key2] = value;
|
||
return object;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/html.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var document2 = global2.document;
|
||
module3.exports = document2 && document2.documentElement;
|
||
},
|
||
"./node_modules/core-js/internals/ie8-dom-define.js": function(module3, exports2, __webpack_require__) {
|
||
var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
var createElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
|
||
module3.exports = !DESCRIPTORS && !fails(function() {
|
||
return Object.defineProperty(createElement("div"), "a", {
|
||
get: function() {
|
||
return 7;
|
||
}
|
||
}).a != 7;
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/indexed-object.js": function(module3, exports2, __webpack_require__) {
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
var classof = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
|
||
var split = "".split;
|
||
module3.exports = fails(function() {
|
||
return !Object("z").propertyIsEnumerable(0);
|
||
}) ? function(it) {
|
||
return classof(it) == "String" ? split.call(it, "") : Object(it);
|
||
} : Object;
|
||
},
|
||
"./node_modules/core-js/internals/internal-state.js": function(module3, exports2, __webpack_require__) {
|
||
var NATIVE_WEAK_MAP = __webpack_require__("./node_modules/core-js/internals/native-weak-map.js");
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
var objectHas = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
|
||
var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
|
||
var WeakMap2 = global2.WeakMap;
|
||
var set, get, has;
|
||
var enforce = function(it) {
|
||
return has(it) ? get(it) : set(it, {});
|
||
};
|
||
var getterFor = function(TYPE) {
|
||
return function(it) {
|
||
var state;
|
||
if (!isObject(it) || (state = get(it)).type !== TYPE) {
|
||
throw TypeError("Incompatible receiver, " + TYPE + " required");
|
||
}
|
||
return state;
|
||
};
|
||
};
|
||
if (NATIVE_WEAK_MAP) {
|
||
var store = new WeakMap2();
|
||
var wmget = store.get;
|
||
var wmhas = store.has;
|
||
var wmset = store.set;
|
||
set = function(it, metadata) {
|
||
wmset.call(store, it, metadata);
|
||
return metadata;
|
||
};
|
||
get = function(it) {
|
||
return wmget.call(store, it) || {};
|
||
};
|
||
has = function(it) {
|
||
return wmhas.call(store, it);
|
||
};
|
||
} else {
|
||
var STATE = sharedKey("state");
|
||
hiddenKeys[STATE] = true;
|
||
set = function(it, metadata) {
|
||
hide(it, STATE, metadata);
|
||
return metadata;
|
||
};
|
||
get = function(it) {
|
||
return objectHas(it, STATE) ? it[STATE] : {};
|
||
};
|
||
has = function(it) {
|
||
return objectHas(it, STATE);
|
||
};
|
||
}
|
||
module3.exports = {
|
||
set,
|
||
get,
|
||
has,
|
||
enforce,
|
||
getterFor
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/is-array-iterator-method.js": function(module3, exports2, __webpack_require__) {
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
|
||
var ITERATOR = wellKnownSymbol("iterator");
|
||
var ArrayPrototype = Array.prototype;
|
||
module3.exports = function(it) {
|
||
return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/is-forced.js": function(module3, exports2, __webpack_require__) {
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
var replacement = /#|\.prototype\./;
|
||
var isForced = function(feature, detection) {
|
||
var value = data[normalize(feature)];
|
||
return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection;
|
||
};
|
||
var normalize = isForced.normalize = function(string) {
|
||
return String(string).replace(replacement, ".").toLowerCase();
|
||
};
|
||
var data = isForced.data = {};
|
||
var NATIVE = isForced.NATIVE = "N";
|
||
var POLYFILL = isForced.POLYFILL = "P";
|
||
module3.exports = isForced;
|
||
},
|
||
"./node_modules/core-js/internals/is-object.js": function(module3, exports2) {
|
||
module3.exports = function(it) {
|
||
return typeof it === "object" ? it !== null : typeof it === "function";
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/is-pure.js": function(module3, exports2) {
|
||
module3.exports = false;
|
||
},
|
||
"./node_modules/core-js/internals/iterators-core.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
|
||
var ITERATOR = wellKnownSymbol("iterator");
|
||
var BUGGY_SAFARI_ITERATORS = false;
|
||
var returnThis = function() {
|
||
return this;
|
||
};
|
||
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
|
||
if ([].keys) {
|
||
arrayIterator = [].keys();
|
||
if (!("next" in arrayIterator))
|
||
BUGGY_SAFARI_ITERATORS = true;
|
||
else {
|
||
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
|
||
if (PrototypeOfArrayIteratorPrototype !== Object.prototype)
|
||
IteratorPrototype = PrototypeOfArrayIteratorPrototype;
|
||
}
|
||
}
|
||
if (IteratorPrototype == void 0)
|
||
IteratorPrototype = {};
|
||
if (!IS_PURE && !has(IteratorPrototype, ITERATOR))
|
||
hide(IteratorPrototype, ITERATOR, returnThis);
|
||
module3.exports = {
|
||
IteratorPrototype,
|
||
BUGGY_SAFARI_ITERATORS
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/iterators.js": function(module3, exports2) {
|
||
module3.exports = {};
|
||
},
|
||
"./node_modules/core-js/internals/native-symbol.js": function(module3, exports2, __webpack_require__) {
|
||
var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
|
||
module3.exports = !!Object.getOwnPropertySymbols && !fails(function() {
|
||
return !String(Symbol());
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/native-weak-map.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
|
||
var WeakMap2 = global2.WeakMap;
|
||
module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2));
|
||
},
|
||
"./node_modules/core-js/internals/object-create.js": function(module3, exports2, __webpack_require__) {
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
var defineProperties = __webpack_require__("./node_modules/core-js/internals/object-define-properties.js");
|
||
var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
|
||
var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
|
||
var html2 = __webpack_require__("./node_modules/core-js/internals/html.js");
|
||
var documentCreateElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
|
||
var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
|
||
var IE_PROTO = sharedKey("IE_PROTO");
|
||
var PROTOTYPE = "prototype";
|
||
var Empty = function() {
|
||
};
|
||
var createDict = function() {
|
||
var iframe = documentCreateElement("iframe");
|
||
var length = enumBugKeys.length;
|
||
var lt = "<";
|
||
var script = "script";
|
||
var gt = ">";
|
||
var js = "java" + script + ":";
|
||
var iframeDocument;
|
||
iframe.style.display = "none";
|
||
html2.appendChild(iframe);
|
||
iframe.src = String(js);
|
||
iframeDocument = iframe.contentWindow.document;
|
||
iframeDocument.open();
|
||
iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt);
|
||
iframeDocument.close();
|
||
createDict = iframeDocument.F;
|
||
while (length--)
|
||
delete createDict[PROTOTYPE][enumBugKeys[length]];
|
||
return createDict();
|
||
};
|
||
module3.exports = Object.create || function create(O, Properties) {
|
||
var result;
|
||
if (O !== null) {
|
||
Empty[PROTOTYPE] = anObject(O);
|
||
result = new Empty();
|
||
Empty[PROTOTYPE] = null;
|
||
result[IE_PROTO] = O;
|
||
} else
|
||
result = createDict();
|
||
return Properties === void 0 ? result : defineProperties(result, Properties);
|
||
};
|
||
hiddenKeys[IE_PROTO] = true;
|
||
},
|
||
"./node_modules/core-js/internals/object-define-properties.js": function(module3, exports2, __webpack_require__) {
|
||
var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
|
||
var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
var objectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys.js");
|
||
module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
|
||
anObject(O);
|
||
var keys = objectKeys(Properties);
|
||
var length = keys.length;
|
||
var i = 0;
|
||
var key2;
|
||
while (length > i)
|
||
definePropertyModule.f(O, key2 = keys[i++], Properties[key2]);
|
||
return O;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-define-property.js": function(module3, exports2, __webpack_require__) {
|
||
var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
|
||
var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
|
||
var nativeDefineProperty = Object.defineProperty;
|
||
exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
|
||
anObject(O);
|
||
P = toPrimitive(P, true);
|
||
anObject(Attributes);
|
||
if (IE8_DOM_DEFINE)
|
||
try {
|
||
return nativeDefineProperty(O, P, Attributes);
|
||
} catch (error) {
|
||
}
|
||
if ("get" in Attributes || "set" in Attributes)
|
||
throw TypeError("Accessors not supported");
|
||
if ("value" in Attributes)
|
||
O[P] = Attributes.value;
|
||
return O;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-get-own-property-descriptor.js": function(module3, exports2, __webpack_require__) {
|
||
var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
|
||
var propertyIsEnumerableModule = __webpack_require__("./node_modules/core-js/internals/object-property-is-enumerable.js");
|
||
var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
|
||
var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
|
||
var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
|
||
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
||
exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
|
||
O = toIndexedObject(O);
|
||
P = toPrimitive(P, true);
|
||
if (IE8_DOM_DEFINE)
|
||
try {
|
||
return nativeGetOwnPropertyDescriptor(O, P);
|
||
} catch (error) {
|
||
}
|
||
if (has(O, P))
|
||
return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-get-own-property-names.js": function(module3, exports2, __webpack_require__) {
|
||
var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
|
||
var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
|
||
var hiddenKeys = enumBugKeys.concat("length", "prototype");
|
||
exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
||
return internalObjectKeys(O, hiddenKeys);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-get-own-property-symbols.js": function(module3, exports2) {
|
||
exports2.f = Object.getOwnPropertySymbols;
|
||
},
|
||
"./node_modules/core-js/internals/object-get-prototype-of.js": function(module3, exports2, __webpack_require__) {
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
|
||
var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
|
||
var CORRECT_PROTOTYPE_GETTER = __webpack_require__("./node_modules/core-js/internals/correct-prototype-getter.js");
|
||
var IE_PROTO = sharedKey("IE_PROTO");
|
||
var ObjectPrototype = Object.prototype;
|
||
module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) {
|
||
O = toObject(O);
|
||
if (has(O, IE_PROTO))
|
||
return O[IE_PROTO];
|
||
if (typeof O.constructor == "function" && O instanceof O.constructor) {
|
||
return O.constructor.prototype;
|
||
}
|
||
return O instanceof Object ? ObjectPrototype : null;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-keys-internal.js": function(module3, exports2, __webpack_require__) {
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
|
||
var arrayIncludes = __webpack_require__("./node_modules/core-js/internals/array-includes.js");
|
||
var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
|
||
var arrayIndexOf = arrayIncludes(false);
|
||
module3.exports = function(object, names) {
|
||
var O = toIndexedObject(object);
|
||
var i = 0;
|
||
var result = [];
|
||
var key2;
|
||
for (key2 in O)
|
||
!has(hiddenKeys, key2) && has(O, key2) && result.push(key2);
|
||
while (names.length > i)
|
||
if (has(O, key2 = names[i++])) {
|
||
~arrayIndexOf(result, key2) || result.push(key2);
|
||
}
|
||
return result;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-keys.js": function(module3, exports2, __webpack_require__) {
|
||
var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
|
||
var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
|
||
module3.exports = Object.keys || function keys(O) {
|
||
return internalObjectKeys(O, enumBugKeys);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/object-property-is-enumerable.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
|
||
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
||
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
|
||
exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
|
||
var descriptor = getOwnPropertyDescriptor(this, V);
|
||
return !!descriptor && descriptor.enumerable;
|
||
} : nativePropertyIsEnumerable;
|
||
},
|
||
"./node_modules/core-js/internals/object-set-prototype-of.js": function(module3, exports2, __webpack_require__) {
|
||
var validateSetPrototypeOfArguments = __webpack_require__("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
|
||
module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
|
||
var correctSetter = false;
|
||
var test = {};
|
||
var setter;
|
||
try {
|
||
setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
|
||
setter.call(test, []);
|
||
correctSetter = test instanceof Array;
|
||
} catch (error) {
|
||
}
|
||
return function setPrototypeOf(O, proto) {
|
||
validateSetPrototypeOfArguments(O, proto);
|
||
if (correctSetter)
|
||
setter.call(O, proto);
|
||
else
|
||
O.__proto__ = proto;
|
||
return O;
|
||
};
|
||
}() : void 0);
|
||
},
|
||
"./node_modules/core-js/internals/own-keys.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var getOwnPropertyNamesModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-names.js");
|
||
var getOwnPropertySymbolsModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-symbols.js");
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
var Reflect2 = global2.Reflect;
|
||
module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) {
|
||
var keys = getOwnPropertyNamesModule.f(anObject(it));
|
||
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
|
||
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/path.js": function(module3, exports2, __webpack_require__) {
|
||
module3.exports = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
},
|
||
"./node_modules/core-js/internals/redefine.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
|
||
var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
|
||
var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
|
||
var getInternalState = InternalStateModule.get;
|
||
var enforceInternalState = InternalStateModule.enforce;
|
||
var TEMPLATE = String(nativeFunctionToString).split("toString");
|
||
shared("inspectSource", function(it) {
|
||
return nativeFunctionToString.call(it);
|
||
});
|
||
(module3.exports = function(O, key2, value, options) {
|
||
var unsafe = options ? !!options.unsafe : false;
|
||
var simple = options ? !!options.enumerable : false;
|
||
var noTargetGet = options ? !!options.noTargetGet : false;
|
||
if (typeof value == "function") {
|
||
if (typeof key2 == "string" && !has(value, "name"))
|
||
hide(value, "name", key2);
|
||
enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : "");
|
||
}
|
||
if (O === global2) {
|
||
if (simple)
|
||
O[key2] = value;
|
||
else
|
||
setGlobal(key2, value);
|
||
return;
|
||
} else if (!unsafe) {
|
||
delete O[key2];
|
||
} else if (!noTargetGet && O[key2]) {
|
||
simple = true;
|
||
}
|
||
if (simple)
|
||
O[key2] = value;
|
||
else
|
||
hide(O, key2, value);
|
||
})(Function.prototype, "toString", function toString() {
|
||
return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this);
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/require-object-coercible.js": function(module3, exports2) {
|
||
module3.exports = function(it) {
|
||
if (it == void 0)
|
||
throw TypeError("Can't call method on " + it);
|
||
return it;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/set-global.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
|
||
module3.exports = function(key2, value) {
|
||
try {
|
||
hide(global2, key2, value);
|
||
} catch (error) {
|
||
global2[key2] = value;
|
||
}
|
||
return value;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/set-to-string-tag.js": function(module3, exports2, __webpack_require__) {
|
||
var defineProperty = __webpack_require__("./node_modules/core-js/internals/object-define-property.js").f;
|
||
var has = __webpack_require__("./node_modules/core-js/internals/has.js");
|
||
var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
|
||
var TO_STRING_TAG = wellKnownSymbol("toStringTag");
|
||
module3.exports = function(it, TAG, STATIC) {
|
||
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
|
||
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/shared-key.js": function(module3, exports2, __webpack_require__) {
|
||
var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
|
||
var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
|
||
var keys = shared("keys");
|
||
module3.exports = function(key2) {
|
||
return keys[key2] || (keys[key2] = uid(key2));
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/shared.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
|
||
var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
|
||
var SHARED = "__core-js_shared__";
|
||
var store = global2[SHARED] || setGlobal(SHARED, {});
|
||
(module3.exports = function(key2, value) {
|
||
return store[key2] || (store[key2] = value !== void 0 ? value : {});
|
||
})("versions", []).push({
|
||
version: "3.1.3",
|
||
mode: IS_PURE ? "pure" : "global",
|
||
copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)"
|
||
});
|
||
},
|
||
"./node_modules/core-js/internals/string-at.js": function(module3, exports2, __webpack_require__) {
|
||
var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
|
||
var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
|
||
module3.exports = function(that, pos, CONVERT_TO_STRING) {
|
||
var S = String(requireObjectCoercible(that));
|
||
var position = toInteger(pos);
|
||
var size = S.length;
|
||
var first2, second;
|
||
if (position < 0 || position >= size)
|
||
return CONVERT_TO_STRING ? "" : void 0;
|
||
first2 = S.charCodeAt(position);
|
||
return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-absolute-index.js": function(module3, exports2, __webpack_require__) {
|
||
var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
|
||
var max = Math.max;
|
||
var min = Math.min;
|
||
module3.exports = function(index, length) {
|
||
var integer = toInteger(index);
|
||
return integer < 0 ? max(integer + length, 0) : min(integer, length);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-indexed-object.js": function(module3, exports2, __webpack_require__) {
|
||
var IndexedObject = __webpack_require__("./node_modules/core-js/internals/indexed-object.js");
|
||
var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
|
||
module3.exports = function(it) {
|
||
return IndexedObject(requireObjectCoercible(it));
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-integer.js": function(module3, exports2) {
|
||
var ceil = Math.ceil;
|
||
var floor = Math.floor;
|
||
module3.exports = function(argument) {
|
||
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-length.js": function(module3, exports2, __webpack_require__) {
|
||
var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
|
||
var min = Math.min;
|
||
module3.exports = function(argument) {
|
||
return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0;
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-object.js": function(module3, exports2, __webpack_require__) {
|
||
var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
|
||
module3.exports = function(argument) {
|
||
return Object(requireObjectCoercible(argument));
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/to-primitive.js": function(module3, exports2, __webpack_require__) {
|
||
var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
|
||
module3.exports = function(it, S) {
|
||
if (!isObject(it))
|
||
return it;
|
||
var fn, val;
|
||
if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it)))
|
||
return val;
|
||
if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it)))
|
||
return val;
|
||
if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it)))
|
||
return val;
|
||
throw TypeError("Can't convert object to primitive value");
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/uid.js": function(module3, exports2) {
|
||
var id = 0;
|
||
var postfix = Math.random();
|
||
module3.exports = function(key2) {
|
||
return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id + postfix).toString(36));
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": function(module3, exports2, __webpack_require__) {
|
||
var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
|
||
var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
|
||
module3.exports = function(O, proto) {
|
||
anObject(O);
|
||
if (!isObject(proto) && proto !== null) {
|
||
throw TypeError("Can't set " + String(proto) + " as a prototype");
|
||
}
|
||
};
|
||
},
|
||
"./node_modules/core-js/internals/well-known-symbol.js": function(module3, exports2, __webpack_require__) {
|
||
var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
|
||
var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
|
||
var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
|
||
var NATIVE_SYMBOL = __webpack_require__("./node_modules/core-js/internals/native-symbol.js");
|
||
var Symbol2 = global2.Symbol;
|
||
var store = shared("wks");
|
||
module3.exports = function(name) {
|
||
return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name));
|
||
};
|
||
},
|
||
"./node_modules/core-js/modules/es.array.from.js": function(module3, exports2, __webpack_require__) {
|
||
var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
|
||
var from = __webpack_require__("./node_modules/core-js/internals/array-from.js");
|
||
var checkCorrectnessOfIteration = __webpack_require__("./node_modules/core-js/internals/check-correctness-of-iteration.js");
|
||
var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {
|
||
Array.from(iterable);
|
||
});
|
||
$({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, {
|
||
from
|
||
});
|
||
},
|
||
"./node_modules/core-js/modules/es.string.iterator.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var codePointAt = __webpack_require__("./node_modules/core-js/internals/string-at.js");
|
||
var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
|
||
var defineIterator = __webpack_require__("./node_modules/core-js/internals/define-iterator.js");
|
||
var STRING_ITERATOR = "String Iterator";
|
||
var setInternalState = InternalStateModule.set;
|
||
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
|
||
defineIterator(String, "String", function(iterated) {
|
||
setInternalState(this, {
|
||
type: STRING_ITERATOR,
|
||
string: String(iterated),
|
||
index: 0
|
||
});
|
||
}, function next() {
|
||
var state = getInternalState(this);
|
||
var string = state.string;
|
||
var index = state.index;
|
||
var point;
|
||
if (index >= string.length)
|
||
return { value: void 0, done: true };
|
||
point = codePointAt(string, index, true);
|
||
state.index += point.length;
|
||
return { value: point, done: false };
|
||
});
|
||
},
|
||
"./node_modules/webpack/buildin/global.js": function(module3, exports2) {
|
||
var g;
|
||
g = function() {
|
||
return this;
|
||
}();
|
||
try {
|
||
g = g || Function("return this")() || (1, eval)("this");
|
||
} catch (e) {
|
||
if (typeof window === "object")
|
||
g = window;
|
||
}
|
||
module3.exports = g;
|
||
},
|
||
"./src/default-attrs.json": function(module3) {
|
||
module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" };
|
||
},
|
||
"./src/icon.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
Object.defineProperty(exports2, "__esModule", {
|
||
value: true
|
||
});
|
||
var _extends = Object.assign || function(target) {
|
||
for (var i = 1; i < arguments.length; i++) {
|
||
var source = arguments[i];
|
||
for (var key2 in source) {
|
||
if (Object.prototype.hasOwnProperty.call(source, key2)) {
|
||
target[key2] = source[key2];
|
||
}
|
||
}
|
||
}
|
||
return target;
|
||
};
|
||
var _createClass = function() {
|
||
function defineProperties(target, props) {
|
||
for (var i = 0; i < props.length; i++) {
|
||
var descriptor = props[i];
|
||
descriptor.enumerable = descriptor.enumerable || false;
|
||
descriptor.configurable = true;
|
||
if ("value" in descriptor)
|
||
descriptor.writable = true;
|
||
Object.defineProperty(target, descriptor.key, descriptor);
|
||
}
|
||
}
|
||
return function(Constructor, protoProps, staticProps) {
|
||
if (protoProps)
|
||
defineProperties(Constructor.prototype, protoProps);
|
||
if (staticProps)
|
||
defineProperties(Constructor, staticProps);
|
||
return Constructor;
|
||
};
|
||
}();
|
||
var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
|
||
var _dedupe2 = _interopRequireDefault(_dedupe);
|
||
var _defaultAttrs = __webpack_require__("./src/default-attrs.json");
|
||
var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { default: obj };
|
||
}
|
||
function _classCallCheck(instance6, Constructor) {
|
||
if (!(instance6 instanceof Constructor)) {
|
||
throw new TypeError("Cannot call a class as a function");
|
||
}
|
||
}
|
||
var Icon = function() {
|
||
function Icon2(name, contents) {
|
||
var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
|
||
_classCallCheck(this, Icon2);
|
||
this.name = name;
|
||
this.contents = contents;
|
||
this.tags = tags;
|
||
this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name });
|
||
}
|
||
_createClass(Icon2, [{
|
||
key: "toSvg",
|
||
value: function toSvg() {
|
||
var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
||
var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
|
||
return "<svg " + attrsToString(combinedAttrs) + ">" + this.contents + "</svg>";
|
||
}
|
||
}, {
|
||
key: "toString",
|
||
value: function toString() {
|
||
return this.contents;
|
||
}
|
||
}]);
|
||
return Icon2;
|
||
}();
|
||
function attrsToString(attrs) {
|
||
return Object.keys(attrs).map(function(key2) {
|
||
return key2 + '="' + attrs[key2] + '"';
|
||
}).join(" ");
|
||
}
|
||
exports2.default = Icon;
|
||
},
|
||
"./src/icons.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
Object.defineProperty(exports2, "__esModule", {
|
||
value: true
|
||
});
|
||
var _icon = __webpack_require__("./src/icon.js");
|
||
var _icon2 = _interopRequireDefault(_icon);
|
||
var _icons = __webpack_require__("./dist/icons.json");
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
var _tags = __webpack_require__("./src/tags.json");
|
||
var _tags2 = _interopRequireDefault(_tags);
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { default: obj };
|
||
}
|
||
exports2.default = Object.keys(_icons2.default).map(function(key2) {
|
||
return new _icon2.default(key2, _icons2.default[key2], _tags2.default[key2]);
|
||
}).reduce(function(object, icon) {
|
||
object[icon.name] = icon;
|
||
return object;
|
||
}, {});
|
||
},
|
||
"./src/index.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
var _icons = __webpack_require__("./src/icons.js");
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
var _toSvg = __webpack_require__("./src/to-svg.js");
|
||
var _toSvg2 = _interopRequireDefault(_toSvg);
|
||
var _replace = __webpack_require__("./src/replace.js");
|
||
var _replace2 = _interopRequireDefault(_replace);
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { default: obj };
|
||
}
|
||
module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
|
||
},
|
||
"./src/replace.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
Object.defineProperty(exports2, "__esModule", {
|
||
value: true
|
||
});
|
||
var _extends = Object.assign || function(target) {
|
||
for (var i = 1; i < arguments.length; i++) {
|
||
var source = arguments[i];
|
||
for (var key2 in source) {
|
||
if (Object.prototype.hasOwnProperty.call(source, key2)) {
|
||
target[key2] = source[key2];
|
||
}
|
||
}
|
||
}
|
||
return target;
|
||
};
|
||
var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
|
||
var _dedupe2 = _interopRequireDefault(_dedupe);
|
||
var _icons = __webpack_require__("./src/icons.js");
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { default: obj };
|
||
}
|
||
function replace() {
|
||
var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
||
if (typeof document === "undefined") {
|
||
throw new Error("`feather.replace()` only works in a browser environment.");
|
||
}
|
||
var elementsToReplace = document.querySelectorAll("[data-feather]");
|
||
Array.from(elementsToReplace).forEach(function(element2) {
|
||
return replaceElement(element2, attrs);
|
||
});
|
||
}
|
||
function replaceElement(element2) {
|
||
var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||
var elementAttrs = getAttrs(element2);
|
||
var name = elementAttrs["data-feather"];
|
||
delete elementAttrs["data-feather"];
|
||
var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));
|
||
var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml");
|
||
var svgElement = svgDocument.querySelector("svg");
|
||
element2.parentNode.replaceChild(svgElement, element2);
|
||
}
|
||
function getAttrs(element2) {
|
||
return Array.from(element2.attributes).reduce(function(attrs, attr2) {
|
||
attrs[attr2.name] = attr2.value;
|
||
return attrs;
|
||
}, {});
|
||
}
|
||
exports2.default = replace;
|
||
},
|
||
"./src/tags.json": function(module3) {
|
||
module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] };
|
||
},
|
||
"./src/to-svg.js": function(module3, exports2, __webpack_require__) {
|
||
"use strict";
|
||
Object.defineProperty(exports2, "__esModule", {
|
||
value: true
|
||
});
|
||
var _icons = __webpack_require__("./src/icons.js");
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
function _interopRequireDefault(obj) {
|
||
return obj && obj.__esModule ? obj : { default: obj };
|
||
}
|
||
function toSvg(name) {
|
||
var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||
console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.");
|
||
if (!name) {
|
||
throw new Error("The required `key` (icon name) parameter is missing.");
|
||
}
|
||
if (!_icons2.default[name]) {
|
||
throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com");
|
||
}
|
||
return _icons2.default[name].toSvg(attrs);
|
||
}
|
||
exports2.default = toSvg;
|
||
},
|
||
0: function(module3, exports2, __webpack_require__) {
|
||
__webpack_require__("./node_modules/core-js/es/array/from.js");
|
||
module3.exports = __webpack_require__("./src/index.js");
|
||
}
|
||
});
|
||
});
|
||
}
|
||
});
|
||
|
||
// src/main.ts
|
||
__export(exports, {
|
||
default: () => ObsidianGit
|
||
});
|
||
var import_obsidian18 = __toModule(require("obsidian"));
|
||
|
||
// src/promiseQueue.ts
|
||
var PromiseQueue = class {
|
||
constructor() {
|
||
this.tasks = [];
|
||
}
|
||
addTask(task) {
|
||
this.tasks.push(task);
|
||
if (this.tasks.length === 1) {
|
||
this.handleTask();
|
||
}
|
||
}
|
||
handleTask() {
|
||
return __async(this, null, function* () {
|
||
if (this.tasks.length > 0) {
|
||
this.tasks[0]().finally(() => {
|
||
this.tasks.shift();
|
||
this.handleTask();
|
||
});
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/settings.ts
|
||
var import_obsidian2 = __toModule(require("obsidian"));
|
||
|
||
// src/gitManager.ts
|
||
var GitManager = class {
|
||
constructor(plugin) {
|
||
this.plugin = plugin;
|
||
this.app = plugin.app;
|
||
}
|
||
getVaultPath(path2) {
|
||
if (this.plugin.settings.basePath) {
|
||
return this.plugin.settings.basePath + "/" + path2;
|
||
} else {
|
||
return path2;
|
||
}
|
||
}
|
||
getPath(path2, relativeToVault) {
|
||
return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2;
|
||
}
|
||
getTreeStructure(children2, beginLength = 0) {
|
||
let list = [];
|
||
children2 = [...children2];
|
||
while (children2.length > 0) {
|
||
const first2 = children2.first();
|
||
const restPath = first2.path.substring(beginLength);
|
||
if (restPath.contains("/")) {
|
||
const title = restPath.substring(0, restPath.indexOf("/"));
|
||
const childrenWithSameTitle = children2.filter((item) => {
|
||
return item.path.substring(beginLength).startsWith(title + "/");
|
||
});
|
||
childrenWithSameTitle.forEach((item) => children2.remove(item));
|
||
list.push({
|
||
title,
|
||
children: this.getTreeStructure(childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1)
|
||
});
|
||
} else {
|
||
list.push({ title: restPath, statusResult: first2 });
|
||
children2.remove(first2);
|
||
}
|
||
}
|
||
return list;
|
||
}
|
||
formatCommitMessage(template) {
|
||
return __async(this, null, function* () {
|
||
let status;
|
||
if (template.includes("{{numFiles}}")) {
|
||
status = yield this.status();
|
||
let numFiles = status.staged.length;
|
||
template = template.replace("{{numFiles}}", String(numFiles));
|
||
}
|
||
if (template.includes("{{hostname}}")) {
|
||
const hostname = this.plugin.localStorage.getHostname() || "";
|
||
template = template.replace("{{hostname}}", hostname);
|
||
}
|
||
if (template.includes("{{files}}")) {
|
||
status = status != null ? status : yield this.status();
|
||
let changeset = {};
|
||
status.staged.forEach((value) => {
|
||
if (value.index in changeset) {
|
||
changeset[value.index].push(value.path);
|
||
} else {
|
||
changeset[value.index] = [value.path];
|
||
}
|
||
});
|
||
let chunks = [];
|
||
for (let [action, files2] of Object.entries(changeset)) {
|
||
chunks.push(action + " " + files2.join(" "));
|
||
}
|
||
let files = chunks.join(", ");
|
||
template = template.replace("{{files}}", files);
|
||
}
|
||
let moment = window.moment;
|
||
template = template.replace("{{date}}", moment().format(this.plugin.settings.commitDateFormat));
|
||
if (this.plugin.settings.listChangedFilesInMessageBody) {
|
||
template = template + "\n\nAffected files:\n" + (status != null ? status : yield this.status()).staged.map((e) => e.path).join("\n");
|
||
}
|
||
return template;
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/isomorphicGit.ts
|
||
var IsomorphicGit = class extends GitManager {
|
||
};
|
||
|
||
// src/simpleGit.ts
|
||
var import_child_process2 = __toModule(require("child_process"));
|
||
var import_obsidian = __toModule(require("obsidian"));
|
||
var path = __toModule(require("path"));
|
||
var import_path = __toModule(require("path"));
|
||
|
||
// node_modules/simple-git/dist/esm/index.js
|
||
var import_file_exists = __toModule(require_dist());
|
||
var import_debug = __toModule(require_src());
|
||
var import_child_process = __toModule(require("child_process"));
|
||
var import_promise_deferred = __toModule(require_dist2());
|
||
var import_promise_deferred2 = __toModule(require_dist2());
|
||
var __defProp2 = Object.defineProperty;
|
||
var __defProps2 = Object.defineProperties;
|
||
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
||
var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;
|
||
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
||
var __getOwnPropSymbols2 = Object.getOwnPropertySymbols;
|
||
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
||
var __propIsEnum2 = Object.prototype.propertyIsEnumerable;
|
||
var __defNormalProp2 = (obj, key2, value) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
|
||
var __spreadValues2 = (a, b) => {
|
||
for (var prop in b || (b = {}))
|
||
if (__hasOwnProp2.call(b, prop))
|
||
__defNormalProp2(a, prop, b[prop]);
|
||
if (__getOwnPropSymbols2)
|
||
for (var prop of __getOwnPropSymbols2(b)) {
|
||
if (__propIsEnum2.call(b, prop))
|
||
__defNormalProp2(a, prop, b[prop]);
|
||
}
|
||
return a;
|
||
};
|
||
var __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));
|
||
var __markAsModule2 = (target) => __defProp2(target, "__esModule", { value: true });
|
||
var __esm = (fn, res) => function __init() {
|
||
return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res;
|
||
};
|
||
var __commonJS2 = (cb, mod) => function __require() {
|
||
return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||
};
|
||
var __export2 = (target, all) => {
|
||
for (var name in all)
|
||
__defProp2(target, name, { get: all[name], enumerable: true });
|
||
};
|
||
var __reExport2 = (target, module2, copyDefault, desc) => {
|
||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||
for (let key2 of __getOwnPropNames2(module2))
|
||
if (!__hasOwnProp2.call(target, key2) && (copyDefault || key2 !== "default"))
|
||
__defProp2(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc2(module2, key2)) || desc.enumerable });
|
||
}
|
||
return target;
|
||
};
|
||
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
||
return (module2, temp) => {
|
||
return cache && cache.get(module2) || (temp = __reExport2(__markAsModule2({}), module2, 1), cache && cache.set(module2, temp), temp);
|
||
};
|
||
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
||
var __async2 = (__this, __arguments, generator) => {
|
||
return new Promise((resolve, reject) => {
|
||
var fulfilled = (value) => {
|
||
try {
|
||
step(generator.next(value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
};
|
||
var rejected = (value) => {
|
||
try {
|
||
step(generator.throw(value));
|
||
} catch (e) {
|
||
reject(e);
|
||
}
|
||
};
|
||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||
step((generator = generator.apply(__this, __arguments)).next());
|
||
});
|
||
};
|
||
var GitError;
|
||
var init_git_error = __esm({
|
||
"src/lib/errors/git-error.ts"() {
|
||
GitError = class extends Error {
|
||
constructor(task, message) {
|
||
super(message);
|
||
this.task = task;
|
||
Object.setPrototypeOf(this, new.target.prototype);
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var GitResponseError;
|
||
var init_git_response_error = __esm({
|
||
"src/lib/errors/git-response-error.ts"() {
|
||
init_git_error();
|
||
GitResponseError = class extends GitError {
|
||
constructor(git, message) {
|
||
super(void 0, message || String(git));
|
||
this.git = git;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var TaskConfigurationError;
|
||
var init_task_configuration_error = __esm({
|
||
"src/lib/errors/task-configuration-error.ts"() {
|
||
init_git_error();
|
||
TaskConfigurationError = class extends GitError {
|
||
constructor(message) {
|
||
super(void 0, message);
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function asFunction(source) {
|
||
return typeof source === "function" ? source : NOOP;
|
||
}
|
||
function isUserFunction(source) {
|
||
return typeof source === "function" && source !== NOOP;
|
||
}
|
||
function splitOn(input, char) {
|
||
const index = input.indexOf(char);
|
||
if (index <= 0) {
|
||
return [input, ""];
|
||
}
|
||
return [input.substr(0, index), input.substr(index + 1)];
|
||
}
|
||
function first(input, offset = 0) {
|
||
return isArrayLike(input) && input.length > offset ? input[offset] : void 0;
|
||
}
|
||
function last(input, offset = 0) {
|
||
if (isArrayLike(input) && input.length > offset) {
|
||
return input[input.length - 1 - offset];
|
||
}
|
||
}
|
||
function isArrayLike(input) {
|
||
return !!(input && typeof input.length === "number");
|
||
}
|
||
function toLinesWithContent(input = "", trimmed2 = true, separator = "\n") {
|
||
return input.split(separator).reduce((output, line) => {
|
||
const lineContent = trimmed2 ? line.trim() : line;
|
||
if (lineContent) {
|
||
output.push(lineContent);
|
||
}
|
||
return output;
|
||
}, []);
|
||
}
|
||
function forEachLineWithContent(input, callback) {
|
||
return toLinesWithContent(input, true).map((line) => callback(line));
|
||
}
|
||
function folderExists(path2) {
|
||
return (0, import_file_exists.exists)(path2, import_file_exists.FOLDER);
|
||
}
|
||
function append(target, item) {
|
||
if (Array.isArray(target)) {
|
||
if (!target.includes(item)) {
|
||
target.push(item);
|
||
}
|
||
} else {
|
||
target.add(item);
|
||
}
|
||
return item;
|
||
}
|
||
function including(target, item) {
|
||
if (Array.isArray(target) && !target.includes(item)) {
|
||
target.push(item);
|
||
}
|
||
return target;
|
||
}
|
||
function remove(target, item) {
|
||
if (Array.isArray(target)) {
|
||
const index = target.indexOf(item);
|
||
if (index >= 0) {
|
||
target.splice(index, 1);
|
||
}
|
||
} else {
|
||
target.delete(item);
|
||
}
|
||
return item;
|
||
}
|
||
function asArray(source) {
|
||
return Array.isArray(source) ? source : [source];
|
||
}
|
||
function asStringArray(source) {
|
||
return asArray(source).map(String);
|
||
}
|
||
function asNumber(source, onNaN = 0) {
|
||
if (source == null) {
|
||
return onNaN;
|
||
}
|
||
const num = parseInt(source, 10);
|
||
return isNaN(num) ? onNaN : num;
|
||
}
|
||
function prefixedArray(input, prefix) {
|
||
const output = [];
|
||
for (let i = 0, max = input.length; i < max; i++) {
|
||
output.push(prefix, input[i]);
|
||
}
|
||
return output;
|
||
}
|
||
function bufferToString(input) {
|
||
return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8");
|
||
}
|
||
function pick(source, properties) {
|
||
return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {}));
|
||
}
|
||
function delay(duration = 0) {
|
||
return new Promise((done) => setTimeout(done, duration));
|
||
}
|
||
var NULL;
|
||
var NOOP;
|
||
var objectToString;
|
||
var init_util = __esm({
|
||
"src/lib/utils/util.ts"() {
|
||
NULL = "\0";
|
||
NOOP = () => {
|
||
};
|
||
objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);
|
||
}
|
||
});
|
||
function filterType(input, filter, def) {
|
||
if (filter(input)) {
|
||
return input;
|
||
}
|
||
return arguments.length > 2 ? def : void 0;
|
||
}
|
||
function filterPrimitives(input, omit) {
|
||
return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes(typeof input));
|
||
}
|
||
function filterPlainObject(input) {
|
||
return !!input && objectToString(input) === "[object Object]";
|
||
}
|
||
function filterFunction(input) {
|
||
return typeof input === "function";
|
||
}
|
||
var filterArray;
|
||
var filterString;
|
||
var filterStringArray;
|
||
var filterStringOrStringArray;
|
||
var filterHasLength;
|
||
var init_argument_filters = __esm({
|
||
"src/lib/utils/argument-filters.ts"() {
|
||
init_util();
|
||
filterArray = (input) => {
|
||
return Array.isArray(input);
|
||
};
|
||
filterString = (input) => {
|
||
return typeof input === "string";
|
||
};
|
||
filterStringArray = (input) => {
|
||
return Array.isArray(input) && input.every(filterString);
|
||
};
|
||
filterStringOrStringArray = (input) => {
|
||
return filterString(input) || Array.isArray(input) && input.every(filterString);
|
||
};
|
||
filterHasLength = (input) => {
|
||
if (input == null || "number|boolean|function".includes(typeof input)) {
|
||
return false;
|
||
}
|
||
return Array.isArray(input) || typeof input === "string" || typeof input.length === "number";
|
||
};
|
||
}
|
||
});
|
||
var ExitCodes;
|
||
var init_exit_codes = __esm({
|
||
"src/lib/utils/exit-codes.ts"() {
|
||
ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {
|
||
ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS";
|
||
ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR";
|
||
ExitCodes2[ExitCodes2["UNCLEAN"] = 128] = "UNCLEAN";
|
||
return ExitCodes2;
|
||
})(ExitCodes || {});
|
||
}
|
||
});
|
||
var GitOutputStreams;
|
||
var init_git_output_streams = __esm({
|
||
"src/lib/utils/git-output-streams.ts"() {
|
||
GitOutputStreams = class {
|
||
constructor(stdOut, stdErr) {
|
||
this.stdOut = stdOut;
|
||
this.stdErr = stdErr;
|
||
}
|
||
asStrings() {
|
||
return new GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8"));
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var LineParser;
|
||
var RemoteLineParser;
|
||
var init_line_parser = __esm({
|
||
"src/lib/utils/line-parser.ts"() {
|
||
LineParser = class {
|
||
constructor(regExp, useMatches) {
|
||
this.matches = [];
|
||
this.parse = (line, target) => {
|
||
this.resetMatches();
|
||
if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {
|
||
return false;
|
||
}
|
||
return this.useMatches(target, this.prepareMatches()) !== false;
|
||
};
|
||
this._regExp = Array.isArray(regExp) ? regExp : [regExp];
|
||
if (useMatches) {
|
||
this.useMatches = useMatches;
|
||
}
|
||
}
|
||
useMatches(target, match) {
|
||
throw new Error(`LineParser:useMatches not implemented`);
|
||
}
|
||
resetMatches() {
|
||
this.matches.length = 0;
|
||
}
|
||
prepareMatches() {
|
||
return this.matches;
|
||
}
|
||
addMatch(reg, index, line) {
|
||
const matched = line && reg.exec(line);
|
||
if (matched) {
|
||
this.pushMatch(index, matched);
|
||
}
|
||
return !!matched;
|
||
}
|
||
pushMatch(_index, matched) {
|
||
this.matches.push(...matched.slice(1));
|
||
}
|
||
};
|
||
RemoteLineParser = class extends LineParser {
|
||
addMatch(reg, index, line) {
|
||
return /^remote:\s/.test(String(line)) && super.addMatch(reg, index, line);
|
||
}
|
||
pushMatch(index, matched) {
|
||
if (index > 0 || matched.length > 1) {
|
||
super.pushMatch(index, matched);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function createInstanceConfig(...options) {
|
||
const baseDir = process.cwd();
|
||
const config = Object.assign(__spreadValues2({ baseDir }, defaultOptions), ...options.filter((o) => typeof o === "object" && o));
|
||
config.baseDir = config.baseDir || baseDir;
|
||
config.trimmed = config.trimmed === true;
|
||
return config;
|
||
}
|
||
var defaultOptions;
|
||
var init_simple_git_options = __esm({
|
||
"src/lib/utils/simple-git-options.ts"() {
|
||
defaultOptions = {
|
||
binary: "git",
|
||
maxConcurrentProcesses: 5,
|
||
config: [],
|
||
trimmed: false
|
||
};
|
||
}
|
||
});
|
||
function appendTaskOptions(options, commands = []) {
|
||
if (!filterPlainObject(options)) {
|
||
return commands;
|
||
}
|
||
return Object.keys(options).reduce((commands2, key2) => {
|
||
const value = options[key2];
|
||
if (filterPrimitives(value, ["boolean"])) {
|
||
commands2.push(key2 + "=" + value);
|
||
} else {
|
||
commands2.push(key2);
|
||
}
|
||
return commands2;
|
||
}, commands);
|
||
}
|
||
function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {
|
||
const command = [];
|
||
for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {
|
||
if ("string|number".includes(typeof args[i])) {
|
||
command.push(String(args[i]));
|
||
}
|
||
}
|
||
appendTaskOptions(trailingOptionsArgument(args), command);
|
||
if (!objectOnly) {
|
||
command.push(...trailingArrayArgument(args));
|
||
}
|
||
return command;
|
||
}
|
||
function trailingArrayArgument(args) {
|
||
const hasTrailingCallback = typeof last(args) === "function";
|
||
return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []);
|
||
}
|
||
function trailingOptionsArgument(args) {
|
||
const hasTrailingCallback = filterFunction(last(args));
|
||
return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);
|
||
}
|
||
function trailingFunctionArgument(args, includeNoop = true) {
|
||
const callback = asFunction(last(args));
|
||
return includeNoop || isUserFunction(callback) ? callback : void 0;
|
||
}
|
||
var init_task_options = __esm({
|
||
"src/lib/utils/task-options.ts"() {
|
||
init_argument_filters();
|
||
init_util();
|
||
}
|
||
});
|
||
function callTaskParser(parser3, streams) {
|
||
return parser3(streams.stdOut, streams.stdErr);
|
||
}
|
||
function parseStringResponse(result, parsers11, texts, trim = true) {
|
||
asArray(texts).forEach((text2) => {
|
||
for (let lines = toLinesWithContent(text2, trim), i = 0, max = lines.length; i < max; i++) {
|
||
const line = (offset = 0) => {
|
||
if (i + offset >= max) {
|
||
return;
|
||
}
|
||
return lines[i + offset];
|
||
};
|
||
parsers11.some(({ parse }) => parse(line, result));
|
||
}
|
||
});
|
||
return result;
|
||
}
|
||
var init_task_parser = __esm({
|
||
"src/lib/utils/task-parser.ts"() {
|
||
init_util();
|
||
}
|
||
});
|
||
var utils_exports = {};
|
||
__export2(utils_exports, {
|
||
ExitCodes: () => ExitCodes,
|
||
GitOutputStreams: () => GitOutputStreams,
|
||
LineParser: () => LineParser,
|
||
NOOP: () => NOOP,
|
||
NULL: () => NULL,
|
||
RemoteLineParser: () => RemoteLineParser,
|
||
append: () => append,
|
||
appendTaskOptions: () => appendTaskOptions,
|
||
asArray: () => asArray,
|
||
asFunction: () => asFunction,
|
||
asNumber: () => asNumber,
|
||
asStringArray: () => asStringArray,
|
||
bufferToString: () => bufferToString,
|
||
callTaskParser: () => callTaskParser,
|
||
createInstanceConfig: () => createInstanceConfig,
|
||
delay: () => delay,
|
||
filterArray: () => filterArray,
|
||
filterFunction: () => filterFunction,
|
||
filterHasLength: () => filterHasLength,
|
||
filterPlainObject: () => filterPlainObject,
|
||
filterPrimitives: () => filterPrimitives,
|
||
filterString: () => filterString,
|
||
filterStringArray: () => filterStringArray,
|
||
filterStringOrStringArray: () => filterStringOrStringArray,
|
||
filterType: () => filterType,
|
||
first: () => first,
|
||
folderExists: () => folderExists,
|
||
forEachLineWithContent: () => forEachLineWithContent,
|
||
getTrailingOptions: () => getTrailingOptions,
|
||
including: () => including,
|
||
isUserFunction: () => isUserFunction,
|
||
last: () => last,
|
||
objectToString: () => objectToString,
|
||
parseStringResponse: () => parseStringResponse,
|
||
pick: () => pick,
|
||
prefixedArray: () => prefixedArray,
|
||
remove: () => remove,
|
||
splitOn: () => splitOn,
|
||
toLinesWithContent: () => toLinesWithContent,
|
||
trailingFunctionArgument: () => trailingFunctionArgument,
|
||
trailingOptionsArgument: () => trailingOptionsArgument
|
||
});
|
||
var init_utils = __esm({
|
||
"src/lib/utils/index.ts"() {
|
||
init_argument_filters();
|
||
init_exit_codes();
|
||
init_git_output_streams();
|
||
init_line_parser();
|
||
init_simple_git_options();
|
||
init_task_options();
|
||
init_task_parser();
|
||
init_util();
|
||
}
|
||
});
|
||
var check_is_repo_exports = {};
|
||
__export2(check_is_repo_exports, {
|
||
CheckRepoActions: () => CheckRepoActions,
|
||
checkIsBareRepoTask: () => checkIsBareRepoTask,
|
||
checkIsRepoRootTask: () => checkIsRepoRootTask,
|
||
checkIsRepoTask: () => checkIsRepoTask
|
||
});
|
||
function checkIsRepoTask(action) {
|
||
switch (action) {
|
||
case "bare":
|
||
return checkIsBareRepoTask();
|
||
case "root":
|
||
return checkIsRepoRootTask();
|
||
}
|
||
const commands = ["rev-parse", "--is-inside-work-tree"];
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
onError,
|
||
parser
|
||
};
|
||
}
|
||
function checkIsRepoRootTask() {
|
||
const commands = ["rev-parse", "--git-dir"];
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
onError,
|
||
parser(path2) {
|
||
return /^\.(git)?$/.test(path2.trim());
|
||
}
|
||
};
|
||
}
|
||
function checkIsBareRepoTask() {
|
||
const commands = ["rev-parse", "--is-bare-repository"];
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
onError,
|
||
parser
|
||
};
|
||
}
|
||
function isNotRepoMessage(error) {
|
||
return /(Not a git repository|Kein Git-Repository)/i.test(String(error));
|
||
}
|
||
var CheckRepoActions;
|
||
var onError;
|
||
var parser;
|
||
var init_check_is_repo = __esm({
|
||
"src/lib/tasks/check-is-repo.ts"() {
|
||
init_utils();
|
||
CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {
|
||
CheckRepoActions2["BARE"] = "bare";
|
||
CheckRepoActions2["IN_TREE"] = "tree";
|
||
CheckRepoActions2["IS_REPO_ROOT"] = "root";
|
||
return CheckRepoActions2;
|
||
})(CheckRepoActions || {});
|
||
onError = ({ exitCode }, error, done, fail) => {
|
||
if (exitCode === 128 && isNotRepoMessage(error)) {
|
||
return done(Buffer.from("false"));
|
||
}
|
||
fail(error);
|
||
};
|
||
parser = (text2) => {
|
||
return text2.trim() === "true";
|
||
};
|
||
}
|
||
});
|
||
function cleanSummaryParser(dryRun, text2) {
|
||
const summary = new CleanResponse(dryRun);
|
||
const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;
|
||
toLinesWithContent(text2).forEach((line) => {
|
||
const removed = line.replace(regexp, "");
|
||
summary.paths.push(removed);
|
||
(isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);
|
||
});
|
||
return summary;
|
||
}
|
||
var CleanResponse;
|
||
var removalRegexp;
|
||
var dryRunRemovalRegexp;
|
||
var isFolderRegexp;
|
||
var init_CleanSummary = __esm({
|
||
"src/lib/responses/CleanSummary.ts"() {
|
||
init_utils();
|
||
CleanResponse = class {
|
||
constructor(dryRun) {
|
||
this.dryRun = dryRun;
|
||
this.paths = [];
|
||
this.files = [];
|
||
this.folders = [];
|
||
}
|
||
};
|
||
removalRegexp = /^[a-z]+\s*/i;
|
||
dryRunRemovalRegexp = /^[a-z]+\s+[a-z]+\s*/i;
|
||
isFolderRegexp = /\/$/;
|
||
}
|
||
});
|
||
var task_exports = {};
|
||
__export2(task_exports, {
|
||
EMPTY_COMMANDS: () => EMPTY_COMMANDS,
|
||
adhocExecTask: () => adhocExecTask,
|
||
configurationErrorTask: () => configurationErrorTask,
|
||
isBufferTask: () => isBufferTask,
|
||
isEmptyTask: () => isEmptyTask,
|
||
straightThroughBufferTask: () => straightThroughBufferTask,
|
||
straightThroughStringTask: () => straightThroughStringTask
|
||
});
|
||
function adhocExecTask(parser3) {
|
||
return {
|
||
commands: EMPTY_COMMANDS,
|
||
format: "empty",
|
||
parser: parser3
|
||
};
|
||
}
|
||
function configurationErrorTask(error) {
|
||
return {
|
||
commands: EMPTY_COMMANDS,
|
||
format: "empty",
|
||
parser() {
|
||
throw typeof error === "string" ? new TaskConfigurationError(error) : error;
|
||
}
|
||
};
|
||
}
|
||
function straightThroughStringTask(commands, trimmed2 = false) {
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return trimmed2 ? String(text2).trim() : text2;
|
||
}
|
||
};
|
||
}
|
||
function straightThroughBufferTask(commands) {
|
||
return {
|
||
commands,
|
||
format: "buffer",
|
||
parser(buffer) {
|
||
return buffer;
|
||
}
|
||
};
|
||
}
|
||
function isBufferTask(task) {
|
||
return task.format === "buffer";
|
||
}
|
||
function isEmptyTask(task) {
|
||
return task.format === "empty" || !task.commands.length;
|
||
}
|
||
var EMPTY_COMMANDS;
|
||
var init_task = __esm({
|
||
"src/lib/tasks/task.ts"() {
|
||
init_task_configuration_error();
|
||
EMPTY_COMMANDS = [];
|
||
}
|
||
});
|
||
var clean_exports = {};
|
||
__export2(clean_exports, {
|
||
CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,
|
||
CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,
|
||
CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,
|
||
CleanOptions: () => CleanOptions,
|
||
cleanTask: () => cleanTask,
|
||
cleanWithOptionsTask: () => cleanWithOptionsTask,
|
||
isCleanOptionsArray: () => isCleanOptionsArray
|
||
});
|
||
function cleanWithOptionsTask(mode, customArgs) {
|
||
const { cleanMode, options, valid } = getCleanOptions(mode);
|
||
if (!cleanMode) {
|
||
return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);
|
||
}
|
||
if (!valid.options) {
|
||
return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));
|
||
}
|
||
options.push(...customArgs);
|
||
if (options.some(isInteractiveMode)) {
|
||
return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);
|
||
}
|
||
return cleanTask(cleanMode, options);
|
||
}
|
||
function cleanTask(mode, customArgs) {
|
||
const commands = ["clean", `-${mode}`, ...customArgs];
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return cleanSummaryParser(mode === "n", text2);
|
||
}
|
||
};
|
||
}
|
||
function isCleanOptionsArray(input) {
|
||
return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));
|
||
}
|
||
function getCleanOptions(input) {
|
||
let cleanMode;
|
||
let options = [];
|
||
let valid = { cleanMode: false, options: true };
|
||
input.replace(/[^a-z]i/g, "").split("").forEach((char) => {
|
||
if (isCleanMode(char)) {
|
||
cleanMode = char;
|
||
valid.cleanMode = true;
|
||
} else {
|
||
valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);
|
||
}
|
||
});
|
||
return {
|
||
cleanMode,
|
||
options,
|
||
valid
|
||
};
|
||
}
|
||
function isCleanMode(cleanMode) {
|
||
return cleanMode === "f" || cleanMode === "n";
|
||
}
|
||
function isKnownOption(option) {
|
||
return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));
|
||
}
|
||
function isInteractiveMode(option) {
|
||
if (/^-[^\-]/.test(option)) {
|
||
return option.indexOf("i") > 0;
|
||
}
|
||
return option === "--interactive";
|
||
}
|
||
var CONFIG_ERROR_INTERACTIVE_MODE;
|
||
var CONFIG_ERROR_MODE_REQUIRED;
|
||
var CONFIG_ERROR_UNKNOWN_OPTION;
|
||
var CleanOptions;
|
||
var CleanOptionValues;
|
||
var init_clean = __esm({
|
||
"src/lib/tasks/clean.ts"() {
|
||
init_CleanSummary();
|
||
init_utils();
|
||
init_task();
|
||
CONFIG_ERROR_INTERACTIVE_MODE = "Git clean interactive mode is not supported";
|
||
CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter ("n" or "f") is required';
|
||
CONFIG_ERROR_UNKNOWN_OPTION = "Git clean unknown option found in: ";
|
||
CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {
|
||
CleanOptions2["DRY_RUN"] = "n";
|
||
CleanOptions2["FORCE"] = "f";
|
||
CleanOptions2["IGNORED_INCLUDED"] = "x";
|
||
CleanOptions2["IGNORED_ONLY"] = "X";
|
||
CleanOptions2["EXCLUDING"] = "e";
|
||
CleanOptions2["QUIET"] = "q";
|
||
CleanOptions2["RECURSIVE"] = "d";
|
||
return CleanOptions2;
|
||
})(CleanOptions || {});
|
||
CleanOptionValues = /* @__PURE__ */ new Set([
|
||
"i",
|
||
...asStringArray(Object.values(CleanOptions))
|
||
]);
|
||
}
|
||
});
|
||
function configListParser(text2) {
|
||
const config = new ConfigList();
|
||
for (const item of configParser(text2)) {
|
||
config.addValue(item.file, String(item.key), item.value);
|
||
}
|
||
return config;
|
||
}
|
||
function configGetParser(text2, key2) {
|
||
let value = null;
|
||
const values = [];
|
||
const scopes = /* @__PURE__ */ new Map();
|
||
for (const item of configParser(text2, key2)) {
|
||
if (item.key !== key2) {
|
||
continue;
|
||
}
|
||
values.push(value = item.value);
|
||
if (!scopes.has(item.file)) {
|
||
scopes.set(item.file, []);
|
||
}
|
||
scopes.get(item.file).push(value);
|
||
}
|
||
return {
|
||
key: key2,
|
||
paths: Array.from(scopes.keys()),
|
||
scopes,
|
||
value,
|
||
values
|
||
};
|
||
}
|
||
function configFilePath(filePath) {
|
||
return filePath.replace(/^(file):/, "");
|
||
}
|
||
function* configParser(text2, requestedKey = null) {
|
||
const lines = text2.split("\0");
|
||
for (let i = 0, max = lines.length - 1; i < max; ) {
|
||
const file = configFilePath(lines[i++]);
|
||
let value = lines[i++];
|
||
let key2 = requestedKey;
|
||
if (value.includes("\n")) {
|
||
const line = splitOn(value, "\n");
|
||
key2 = line[0];
|
||
value = line[1];
|
||
}
|
||
yield { file, key: key2, value };
|
||
}
|
||
}
|
||
var ConfigList;
|
||
var init_ConfigList = __esm({
|
||
"src/lib/responses/ConfigList.ts"() {
|
||
init_utils();
|
||
ConfigList = class {
|
||
constructor() {
|
||
this.files = [];
|
||
this.values = /* @__PURE__ */ Object.create(null);
|
||
}
|
||
get all() {
|
||
if (!this._all) {
|
||
this._all = this.files.reduce((all, file) => {
|
||
return Object.assign(all, this.values[file]);
|
||
}, {});
|
||
}
|
||
return this._all;
|
||
}
|
||
addFile(file) {
|
||
if (!(file in this.values)) {
|
||
const latest = last(this.files);
|
||
this.values[file] = latest ? Object.create(this.values[latest]) : {};
|
||
this.files.push(file);
|
||
}
|
||
return this.values[file];
|
||
}
|
||
addValue(file, key2, value) {
|
||
const values = this.addFile(file);
|
||
if (!values.hasOwnProperty(key2)) {
|
||
values[key2] = value;
|
||
} else if (Array.isArray(values[key2])) {
|
||
values[key2].push(value);
|
||
} else {
|
||
values[key2] = [values[key2], value];
|
||
}
|
||
this._all = void 0;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function asConfigScope(scope, fallback) {
|
||
if (typeof scope === "string" && GitConfigScope.hasOwnProperty(scope)) {
|
||
return scope;
|
||
}
|
||
return fallback;
|
||
}
|
||
function addConfigTask(key2, value, append22, scope) {
|
||
const commands = ["config", `--${scope}`];
|
||
if (append22) {
|
||
commands.push("--add");
|
||
}
|
||
commands.push(key2, value);
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return text2;
|
||
}
|
||
};
|
||
}
|
||
function getConfigTask(key2, scope) {
|
||
const commands = ["config", "--null", "--show-origin", "--get-all", key2];
|
||
if (scope) {
|
||
commands.splice(1, 0, `--${scope}`);
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return configGetParser(text2, key2);
|
||
}
|
||
};
|
||
}
|
||
function listConfigTask(scope) {
|
||
const commands = ["config", "--list", "--show-origin", "--null"];
|
||
if (scope) {
|
||
commands.push(`--${scope}`);
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return configListParser(text2);
|
||
}
|
||
};
|
||
}
|
||
function config_default() {
|
||
return {
|
||
addConfig(key2, value, ...rest) {
|
||
return this._runTask(addConfigTask(key2, value, rest[0] === true, asConfigScope(rest[1], "local")), trailingFunctionArgument(arguments));
|
||
},
|
||
getConfig(key2, scope) {
|
||
return this._runTask(getConfigTask(key2, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments));
|
||
},
|
||
listConfig(...rest) {
|
||
return this._runTask(listConfigTask(asConfigScope(rest[0], void 0)), trailingFunctionArgument(arguments));
|
||
}
|
||
};
|
||
}
|
||
var GitConfigScope;
|
||
var init_config = __esm({
|
||
"src/lib/tasks/config.ts"() {
|
||
init_ConfigList();
|
||
init_utils();
|
||
GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {
|
||
GitConfigScope2["system"] = "system";
|
||
GitConfigScope2["global"] = "global";
|
||
GitConfigScope2["local"] = "local";
|
||
GitConfigScope2["worktree"] = "worktree";
|
||
return GitConfigScope2;
|
||
})(GitConfigScope || {});
|
||
}
|
||
});
|
||
function grepQueryBuilder(...params) {
|
||
return new GrepQuery().param(...params);
|
||
}
|
||
function parseGrep(grep) {
|
||
const paths = /* @__PURE__ */ new Set();
|
||
const results = {};
|
||
forEachLineWithContent(grep, (input) => {
|
||
const [path2, line, preview] = input.split(NULL);
|
||
paths.add(path2);
|
||
(results[path2] = results[path2] || []).push({
|
||
line: asNumber(line),
|
||
path: path2,
|
||
preview
|
||
});
|
||
});
|
||
return {
|
||
paths,
|
||
results
|
||
};
|
||
}
|
||
function grep_default() {
|
||
return {
|
||
grep(searchTerm) {
|
||
const then = trailingFunctionArgument(arguments);
|
||
const options = getTrailingOptions(arguments);
|
||
for (const option of disallowedOptions) {
|
||
if (options.includes(option)) {
|
||
return this._runTask(configurationErrorTask(`git.grep: use of "${option}" is not supported.`), then);
|
||
}
|
||
}
|
||
if (typeof searchTerm === "string") {
|
||
searchTerm = grepQueryBuilder().param(searchTerm);
|
||
}
|
||
const commands = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm];
|
||
return this._runTask({
|
||
commands,
|
||
format: "utf-8",
|
||
parser(stdOut) {
|
||
return parseGrep(stdOut);
|
||
}
|
||
}, then);
|
||
}
|
||
};
|
||
}
|
||
var disallowedOptions;
|
||
var Query;
|
||
var _a;
|
||
var GrepQuery;
|
||
var init_grep = __esm({
|
||
"src/lib/tasks/grep.ts"() {
|
||
init_utils();
|
||
init_task();
|
||
disallowedOptions = ["-h"];
|
||
Query = Symbol("grepQuery");
|
||
GrepQuery = class {
|
||
constructor() {
|
||
this[_a] = [];
|
||
}
|
||
*[(_a = Query, Symbol.iterator)]() {
|
||
for (const query of this[Query]) {
|
||
yield query;
|
||
}
|
||
}
|
||
and(...and) {
|
||
and.length && this[Query].push("--and", "(", ...prefixedArray(and, "-e"), ")");
|
||
return this;
|
||
}
|
||
param(...param) {
|
||
this[Query].push(...prefixedArray(param, "-e"));
|
||
return this;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var reset_exports = {};
|
||
__export2(reset_exports, {
|
||
ResetMode: () => ResetMode,
|
||
getResetMode: () => getResetMode,
|
||
resetTask: () => resetTask
|
||
});
|
||
function resetTask(mode, customArgs) {
|
||
const commands = ["reset"];
|
||
if (isValidResetMode(mode)) {
|
||
commands.push(`--${mode}`);
|
||
}
|
||
commands.push(...customArgs);
|
||
return straightThroughStringTask(commands);
|
||
}
|
||
function getResetMode(mode) {
|
||
if (isValidResetMode(mode)) {
|
||
return mode;
|
||
}
|
||
switch (typeof mode) {
|
||
case "string":
|
||
case "undefined":
|
||
return "soft";
|
||
}
|
||
return;
|
||
}
|
||
function isValidResetMode(mode) {
|
||
return ResetModes.includes(mode);
|
||
}
|
||
var ResetMode;
|
||
var ResetModes;
|
||
var init_reset = __esm({
|
||
"src/lib/tasks/reset.ts"() {
|
||
init_task();
|
||
ResetMode = /* @__PURE__ */ ((ResetMode2) => {
|
||
ResetMode2["MIXED"] = "mixed";
|
||
ResetMode2["SOFT"] = "soft";
|
||
ResetMode2["HARD"] = "hard";
|
||
ResetMode2["MERGE"] = "merge";
|
||
ResetMode2["KEEP"] = "keep";
|
||
return ResetMode2;
|
||
})(ResetMode || {});
|
||
ResetModes = Array.from(Object.values(ResetMode));
|
||
}
|
||
});
|
||
function createLog() {
|
||
return (0, import_debug.default)("simple-git");
|
||
}
|
||
function prefixedLogger(to, prefix, forward) {
|
||
if (!prefix || !String(prefix).replace(/\s*/, "")) {
|
||
return !forward ? to : (message, ...args) => {
|
||
to(message, ...args);
|
||
forward(message, ...args);
|
||
};
|
||
}
|
||
return (message, ...args) => {
|
||
to(`%s ${message}`, prefix, ...args);
|
||
if (forward) {
|
||
forward(message, ...args);
|
||
}
|
||
};
|
||
}
|
||
function childLoggerName(name, childDebugger, { namespace: parentNamespace }) {
|
||
if (typeof name === "string") {
|
||
return name;
|
||
}
|
||
const childNamespace = childDebugger && childDebugger.namespace || "";
|
||
if (childNamespace.startsWith(parentNamespace)) {
|
||
return childNamespace.substr(parentNamespace.length + 1);
|
||
}
|
||
return childNamespace || parentNamespace;
|
||
}
|
||
function createLogger(label, verbose, initialStep, infoDebugger = createLog()) {
|
||
const labelPrefix = label && `[${label}]` || "";
|
||
const spawned = [];
|
||
const debugDebugger = typeof verbose === "string" ? infoDebugger.extend(verbose) : verbose;
|
||
const key2 = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);
|
||
return step(initialStep);
|
||
function sibling(name, initial) {
|
||
return append(spawned, createLogger(label, key2.replace(/^[^:]+/, name), initial, infoDebugger));
|
||
}
|
||
function step(phase) {
|
||
const stepPrefix = phase && `[${phase}]` || "";
|
||
const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;
|
||
const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);
|
||
return Object.assign(debugDebugger ? debug2 : info, {
|
||
label,
|
||
sibling,
|
||
info,
|
||
step
|
||
});
|
||
}
|
||
}
|
||
var init_git_logger = __esm({
|
||
"src/lib/git-logger.ts"() {
|
||
init_utils();
|
||
import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-");
|
||
import_debug.default.formatters.B = (value) => {
|
||
if (Buffer.isBuffer(value)) {
|
||
return value.toString("utf8");
|
||
}
|
||
return objectToString(value);
|
||
};
|
||
}
|
||
});
|
||
var _TasksPendingQueue;
|
||
var TasksPendingQueue;
|
||
var init_tasks_pending_queue = __esm({
|
||
"src/lib/runners/tasks-pending-queue.ts"() {
|
||
init_git_error();
|
||
init_git_logger();
|
||
_TasksPendingQueue = class {
|
||
constructor(logLabel = "GitExecutor") {
|
||
this.logLabel = logLabel;
|
||
this._queue = /* @__PURE__ */ new Map();
|
||
}
|
||
withProgress(task) {
|
||
return this._queue.get(task);
|
||
}
|
||
createProgress(task) {
|
||
const name = _TasksPendingQueue.getName(task.commands[0]);
|
||
const logger = createLogger(this.logLabel, name);
|
||
return {
|
||
task,
|
||
logger,
|
||
name
|
||
};
|
||
}
|
||
push(task) {
|
||
const progress = this.createProgress(task);
|
||
progress.logger("Adding task to the queue, commands = %o", task.commands);
|
||
this._queue.set(task, progress);
|
||
return progress;
|
||
}
|
||
fatal(err) {
|
||
for (const [task, { logger }] of Array.from(this._queue.entries())) {
|
||
if (task === err.task) {
|
||
logger.info(`Failed %o`, err);
|
||
logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`);
|
||
} else {
|
||
logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message);
|
||
}
|
||
this.complete(task);
|
||
}
|
||
if (this._queue.size !== 0) {
|
||
throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);
|
||
}
|
||
}
|
||
complete(task) {
|
||
const progress = this.withProgress(task);
|
||
if (progress) {
|
||
this._queue.delete(task);
|
||
}
|
||
}
|
||
attempt(task) {
|
||
const progress = this.withProgress(task);
|
||
if (!progress) {
|
||
throw new GitError(void 0, "TasksPendingQueue: attempt called for an unknown task");
|
||
}
|
||
progress.logger("Starting task");
|
||
return progress;
|
||
}
|
||
static getName(name = "empty") {
|
||
return `task:${name}:${++_TasksPendingQueue.counter}`;
|
||
}
|
||
};
|
||
TasksPendingQueue = _TasksPendingQueue;
|
||
TasksPendingQueue.counter = 0;
|
||
}
|
||
});
|
||
function pluginContext(task, commands) {
|
||
return {
|
||
method: first(task.commands) || "",
|
||
commands
|
||
};
|
||
}
|
||
function onErrorReceived(target, logger) {
|
||
return (err) => {
|
||
logger(`[ERROR] child process exception %o`, err);
|
||
target.push(Buffer.from(String(err.stack), "ascii"));
|
||
};
|
||
}
|
||
function onDataReceived(target, name, logger, output) {
|
||
return (buffer) => {
|
||
logger(`%s received %L bytes`, name, buffer);
|
||
output(`%B`, buffer);
|
||
target.push(buffer);
|
||
};
|
||
}
|
||
var GitExecutorChain;
|
||
var init_git_executor_chain = __esm({
|
||
"src/lib/runners/git-executor-chain.ts"() {
|
||
init_git_error();
|
||
init_task();
|
||
init_utils();
|
||
init_tasks_pending_queue();
|
||
GitExecutorChain = class {
|
||
constructor(_executor, _scheduler, _plugins) {
|
||
this._executor = _executor;
|
||
this._scheduler = _scheduler;
|
||
this._plugins = _plugins;
|
||
this._chain = Promise.resolve();
|
||
this._queue = new TasksPendingQueue();
|
||
}
|
||
get binary() {
|
||
return this._executor.binary;
|
||
}
|
||
get cwd() {
|
||
return this._cwd || this._executor.cwd;
|
||
}
|
||
set cwd(cwd) {
|
||
this._cwd = cwd;
|
||
}
|
||
get env() {
|
||
return this._executor.env;
|
||
}
|
||
get outputHandler() {
|
||
return this._executor.outputHandler;
|
||
}
|
||
chain() {
|
||
return this;
|
||
}
|
||
push(task) {
|
||
this._queue.push(task);
|
||
return this._chain = this._chain.then(() => this.attemptTask(task));
|
||
}
|
||
attemptTask(task) {
|
||
return __async2(this, null, function* () {
|
||
const onScheduleComplete = yield this._scheduler.next();
|
||
const onQueueComplete = () => this._queue.complete(task);
|
||
try {
|
||
const { logger } = this._queue.attempt(task);
|
||
return yield isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger);
|
||
} catch (e) {
|
||
throw this.onFatalException(task, e);
|
||
} finally {
|
||
onQueueComplete();
|
||
onScheduleComplete();
|
||
}
|
||
});
|
||
}
|
||
onFatalException(task, e) {
|
||
const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));
|
||
this._chain = Promise.resolve();
|
||
this._queue.fatal(gitError);
|
||
return gitError;
|
||
}
|
||
attemptRemoteTask(task, logger) {
|
||
return __async2(this, null, function* () {
|
||
const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands));
|
||
const raw = yield this.gitResponse(task, this.binary, args, this.outputHandler, logger.step("SPAWN"));
|
||
const outputStreams = yield this.handleTaskData(task, args, raw, logger.step("HANDLE"));
|
||
logger(`passing response to task's parser as a %s`, task.format);
|
||
if (isBufferTask(task)) {
|
||
return callTaskParser(task.parser, outputStreams);
|
||
}
|
||
return callTaskParser(task.parser, outputStreams.asStrings());
|
||
});
|
||
}
|
||
attemptEmptyTask(task, logger) {
|
||
return __async2(this, null, function* () {
|
||
logger(`empty task bypassing child process to call to task's parser`);
|
||
return task.parser(this);
|
||
});
|
||
}
|
||
handleTaskData(task, args, result, logger) {
|
||
const { exitCode, rejection, stdOut, stdErr } = result;
|
||
return new Promise((done, fail) => {
|
||
logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);
|
||
const { error } = this._plugins.exec("task.error", { error: rejection }, __spreadValues2(__spreadValues2({}, pluginContext(task, args)), result));
|
||
if (error && task.onError) {
|
||
logger.info(`exitCode=%s handling with custom error handler`);
|
||
return task.onError(result, error, (newStdOut) => {
|
||
logger.info(`custom error handler treated as success`);
|
||
logger(`custom error returned a %s`, objectToString(newStdOut));
|
||
done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut, Buffer.concat(stdErr)));
|
||
}, fail);
|
||
}
|
||
if (error) {
|
||
logger.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`, exitCode, stdErr.length, rejection);
|
||
return fail(error);
|
||
}
|
||
logger.info(`retrieving task output complete`);
|
||
done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));
|
||
});
|
||
}
|
||
gitResponse(task, command, args, outputHandler, logger) {
|
||
return __async2(this, null, function* () {
|
||
const outputLogger = logger.sibling("output");
|
||
const spawnOptions = this._plugins.exec("spawn.options", {
|
||
cwd: this.cwd,
|
||
env: this.env,
|
||
windowsHide: true
|
||
}, pluginContext(task, task.commands));
|
||
return new Promise((done) => {
|
||
const stdOut = [];
|
||
const stdErr = [];
|
||
let rejection;
|
||
logger.info(`%s %o`, command, args);
|
||
logger("%O", spawnOptions);
|
||
const spawned = (0, import_child_process.spawn)(command, args, spawnOptions);
|
||
spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut")));
|
||
spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr")));
|
||
spawned.on("error", onErrorReceived(stdErr, logger));
|
||
if (outputHandler) {
|
||
logger(`Passing child process stdOut/stdErr to custom outputHandler`);
|
||
outputHandler(command, spawned.stdout, spawned.stderr, [...args]);
|
||
}
|
||
this._plugins.exec("spawn.after", void 0, __spreadProps2(__spreadValues2({}, pluginContext(task, args)), {
|
||
spawned,
|
||
close(exitCode, reason) {
|
||
done({
|
||
stdOut,
|
||
stdErr,
|
||
exitCode,
|
||
rejection: rejection || reason
|
||
});
|
||
},
|
||
kill(reason) {
|
||
if (spawned.killed) {
|
||
return;
|
||
}
|
||
rejection = reason;
|
||
spawned.kill("SIGINT");
|
||
}
|
||
}));
|
||
});
|
||
});
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var git_executor_exports = {};
|
||
__export2(git_executor_exports, {
|
||
GitExecutor: () => GitExecutor
|
||
});
|
||
var GitExecutor;
|
||
var init_git_executor = __esm({
|
||
"src/lib/runners/git-executor.ts"() {
|
||
init_git_executor_chain();
|
||
GitExecutor = class {
|
||
constructor(binary = "git", cwd, _scheduler, _plugins) {
|
||
this.binary = binary;
|
||
this.cwd = cwd;
|
||
this._scheduler = _scheduler;
|
||
this._plugins = _plugins;
|
||
this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);
|
||
}
|
||
chain() {
|
||
return new GitExecutorChain(this, this._scheduler, this._plugins);
|
||
}
|
||
push(task) {
|
||
return this._chain.push(task);
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function taskCallback(task, response, callback = NOOP) {
|
||
const onSuccess = (data) => {
|
||
callback(null, data);
|
||
};
|
||
const onError2 = (err) => {
|
||
if ((err == null ? void 0 : err.task) === task) {
|
||
callback(err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err, void 0);
|
||
}
|
||
};
|
||
response.then(onSuccess, onError2);
|
||
}
|
||
function addDeprecationNoticeToError(err) {
|
||
let log = (name) => {
|
||
console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`);
|
||
log = NOOP;
|
||
};
|
||
return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));
|
||
function descriptorReducer(all, name) {
|
||
if (name in err) {
|
||
return all;
|
||
}
|
||
all[name] = {
|
||
enumerable: false,
|
||
configurable: false,
|
||
get() {
|
||
log(name);
|
||
return err.git[name];
|
||
}
|
||
};
|
||
return all;
|
||
}
|
||
}
|
||
var init_task_callback = __esm({
|
||
"src/lib/task-callback.ts"() {
|
||
init_git_response_error();
|
||
init_utils();
|
||
}
|
||
});
|
||
function changeWorkingDirectoryTask(directory, root) {
|
||
return adhocExecTask((instance6) => {
|
||
if (!folderExists(directory)) {
|
||
throw new Error(`Git.cwd: cannot change to non-directory "${directory}"`);
|
||
}
|
||
return (root || instance6).cwd = directory;
|
||
});
|
||
}
|
||
var init_change_working_directory = __esm({
|
||
"src/lib/tasks/change-working-directory.ts"() {
|
||
init_utils();
|
||
init_task();
|
||
}
|
||
});
|
||
function parseCommitResult(stdOut) {
|
||
const result = {
|
||
author: null,
|
||
branch: "",
|
||
commit: "",
|
||
root: false,
|
||
summary: {
|
||
changes: 0,
|
||
insertions: 0,
|
||
deletions: 0
|
||
}
|
||
};
|
||
return parseStringResponse(result, parsers, stdOut);
|
||
}
|
||
var parsers;
|
||
var init_parse_commit = __esm({
|
||
"src/lib/parsers/parse-commit.ts"() {
|
||
init_utils();
|
||
parsers = [
|
||
new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch, root, commit]) => {
|
||
result.branch = branch;
|
||
result.commit = commit;
|
||
result.root = !!root;
|
||
}),
|
||
new LineParser(/\s*Author:\s(.+)/i, (result, [author]) => {
|
||
const parts = author.split("<");
|
||
const email = parts.pop();
|
||
if (!email || !email.includes("@")) {
|
||
return;
|
||
}
|
||
result.author = {
|
||
email: email.substr(0, email.length - 1),
|
||
name: parts.join("<").trim()
|
||
};
|
||
}),
|
||
new LineParser(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g, (result, [changes, insertions, deletions]) => {
|
||
result.summary.changes = parseInt(changes, 10) || 0;
|
||
result.summary.insertions = parseInt(insertions, 10) || 0;
|
||
result.summary.deletions = parseInt(deletions, 10) || 0;
|
||
}),
|
||
new LineParser(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/, (result, [changes, lines, direction]) => {
|
||
result.summary.changes = parseInt(changes, 10) || 0;
|
||
const count = parseInt(lines, 10) || 0;
|
||
if (direction === "-") {
|
||
result.summary.deletions = count;
|
||
} else if (direction === "+") {
|
||
result.summary.insertions = count;
|
||
}
|
||
})
|
||
];
|
||
}
|
||
});
|
||
var commit_exports = {};
|
||
__export2(commit_exports, {
|
||
commitTask: () => commitTask,
|
||
default: () => commit_default
|
||
});
|
||
function commitTask(message, files, customArgs) {
|
||
const commands = [
|
||
"-c",
|
||
"core.abbrev=40",
|
||
"commit",
|
||
...prefixedArray(message, "-m"),
|
||
...files,
|
||
...customArgs
|
||
];
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: parseCommitResult
|
||
};
|
||
}
|
||
function commit_default() {
|
||
return {
|
||
commit(message, ...rest) {
|
||
const next = trailingFunctionArgument(arguments);
|
||
const task = rejectDeprecatedSignatures(message) || commitTask(asArray(message), asArray(filterType(rest[0], filterStringOrStringArray, [])), [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]);
|
||
return this._runTask(task, next);
|
||
}
|
||
};
|
||
function rejectDeprecatedSignatures(message) {
|
||
return !filterStringOrStringArray(message) && configurationErrorTask(`git.commit: requires the commit message to be supplied as a string/string[]`);
|
||
}
|
||
}
|
||
var init_commit = __esm({
|
||
"src/lib/tasks/commit.ts"() {
|
||
init_parse_commit();
|
||
init_utils();
|
||
init_task();
|
||
}
|
||
});
|
||
function hashObjectTask(filePath, write) {
|
||
const commands = ["hash-object", filePath];
|
||
if (write) {
|
||
commands.push("-w");
|
||
}
|
||
return straightThroughStringTask(commands, true);
|
||
}
|
||
var init_hash_object = __esm({
|
||
"src/lib/tasks/hash-object.ts"() {
|
||
init_task();
|
||
}
|
||
});
|
||
function parseInit(bare, path2, text2) {
|
||
const response = String(text2).trim();
|
||
let result;
|
||
if (result = initResponseRegex.exec(response)) {
|
||
return new InitSummary(bare, path2, false, result[1]);
|
||
}
|
||
if (result = reInitResponseRegex.exec(response)) {
|
||
return new InitSummary(bare, path2, true, result[1]);
|
||
}
|
||
let gitDir = "";
|
||
const tokens = response.split(" ");
|
||
while (tokens.length) {
|
||
const token = tokens.shift();
|
||
if (token === "in") {
|
||
gitDir = tokens.join(" ");
|
||
break;
|
||
}
|
||
}
|
||
return new InitSummary(bare, path2, /^re/i.test(response), gitDir);
|
||
}
|
||
var InitSummary;
|
||
var initResponseRegex;
|
||
var reInitResponseRegex;
|
||
var init_InitSummary = __esm({
|
||
"src/lib/responses/InitSummary.ts"() {
|
||
InitSummary = class {
|
||
constructor(bare, path2, existing, gitDir) {
|
||
this.bare = bare;
|
||
this.path = path2;
|
||
this.existing = existing;
|
||
this.gitDir = gitDir;
|
||
}
|
||
};
|
||
initResponseRegex = /^Init.+ repository in (.+)$/;
|
||
reInitResponseRegex = /^Rein.+ in (.+)$/;
|
||
}
|
||
});
|
||
function hasBareCommand(command) {
|
||
return command.includes(bareCommand);
|
||
}
|
||
function initTask(bare = false, path2, customArgs) {
|
||
const commands = ["init", ...customArgs];
|
||
if (bare && !hasBareCommand(commands)) {
|
||
commands.splice(1, 0, bareCommand);
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(text2) {
|
||
return parseInit(commands.includes("--bare"), path2, text2);
|
||
}
|
||
};
|
||
}
|
||
var bareCommand;
|
||
var init_init = __esm({
|
||
"src/lib/tasks/init.ts"() {
|
||
init_InitSummary();
|
||
bareCommand = "--bare";
|
||
}
|
||
});
|
||
function logFormatFromCommand(customArgs) {
|
||
for (let i = 0; i < customArgs.length; i++) {
|
||
const format = logFormatRegex.exec(customArgs[i]);
|
||
if (format) {
|
||
return `--${format[1]}`;
|
||
}
|
||
}
|
||
return "";
|
||
}
|
||
function isLogFormat(customArg) {
|
||
return logFormatRegex.test(customArg);
|
||
}
|
||
var logFormatRegex;
|
||
var init_log_format = __esm({
|
||
"src/lib/args/log-format.ts"() {
|
||
logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;
|
||
}
|
||
});
|
||
var DiffSummary;
|
||
var init_DiffSummary = __esm({
|
||
"src/lib/responses/DiffSummary.ts"() {
|
||
DiffSummary = class {
|
||
constructor() {
|
||
this.changed = 0;
|
||
this.deletions = 0;
|
||
this.insertions = 0;
|
||
this.files = [];
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function getDiffParser(format = "") {
|
||
const parser3 = diffSummaryParsers[format];
|
||
return (stdOut) => parseStringResponse(new DiffSummary(), parser3, stdOut, false);
|
||
}
|
||
var statParser;
|
||
var numStatParser;
|
||
var nameOnlyParser;
|
||
var nameStatusParser;
|
||
var diffSummaryParsers;
|
||
var init_parse_diff_summary = __esm({
|
||
"src/lib/parsers/parse-diff-summary.ts"() {
|
||
init_log_format();
|
||
init_DiffSummary();
|
||
init_utils();
|
||
statParser = [
|
||
new LineParser(/(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/, (result, [file, changes, alterations = ""]) => {
|
||
result.files.push({
|
||
file: file.trim(),
|
||
changes: asNumber(changes),
|
||
insertions: alterations.replace(/[^+]/g, "").length,
|
||
deletions: alterations.replace(/[^-]/g, "").length,
|
||
binary: false
|
||
});
|
||
}),
|
||
new LineParser(/(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/, (result, [file, before, after]) => {
|
||
result.files.push({
|
||
file: file.trim(),
|
||
before: asNumber(before),
|
||
after: asNumber(after),
|
||
binary: true
|
||
});
|
||
}),
|
||
new LineParser(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/, (result, [changed, summary]) => {
|
||
const inserted = /(\d+) i/.exec(summary);
|
||
const deleted = /(\d+) d/.exec(summary);
|
||
result.changed = asNumber(changed);
|
||
result.insertions = asNumber(inserted == null ? void 0 : inserted[1]);
|
||
result.deletions = asNumber(deleted == null ? void 0 : deleted[1]);
|
||
})
|
||
];
|
||
numStatParser = [
|
||
new LineParser(/(\d+)\t(\d+)\t(.+)$/, (result, [changesInsert, changesDelete, file]) => {
|
||
const insertions = asNumber(changesInsert);
|
||
const deletions = asNumber(changesDelete);
|
||
result.changed++;
|
||
result.insertions += insertions;
|
||
result.deletions += deletions;
|
||
result.files.push({
|
||
file,
|
||
changes: insertions + deletions,
|
||
insertions,
|
||
deletions,
|
||
binary: false
|
||
});
|
||
}),
|
||
new LineParser(/-\t-\t(.+)$/, (result, [file]) => {
|
||
result.changed++;
|
||
result.files.push({
|
||
file,
|
||
after: 0,
|
||
before: 0,
|
||
binary: true
|
||
});
|
||
})
|
||
];
|
||
nameOnlyParser = [
|
||
new LineParser(/(.+)$/, (result, [file]) => {
|
||
result.changed++;
|
||
result.files.push({
|
||
file,
|
||
changes: 0,
|
||
insertions: 0,
|
||
deletions: 0,
|
||
binary: false
|
||
});
|
||
})
|
||
];
|
||
nameStatusParser = [
|
||
new LineParser(/([ACDMRTUXB])\s*(.+)$/, (result, [_status, file]) => {
|
||
result.changed++;
|
||
result.files.push({
|
||
file,
|
||
changes: 0,
|
||
insertions: 0,
|
||
deletions: 0,
|
||
binary: false
|
||
});
|
||
})
|
||
];
|
||
diffSummaryParsers = {
|
||
[""]: statParser,
|
||
["--stat"]: statParser,
|
||
["--numstat"]: numStatParser,
|
||
["--name-status"]: nameStatusParser,
|
||
["--name-only"]: nameOnlyParser
|
||
};
|
||
}
|
||
});
|
||
function lineBuilder(tokens, fields) {
|
||
return fields.reduce((line, field, index) => {
|
||
line[field] = tokens[index] || "";
|
||
return line;
|
||
}, /* @__PURE__ */ Object.create({ diff: null }));
|
||
}
|
||
function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = "") {
|
||
const parseDiffResult = getDiffParser(logFormat);
|
||
return function(stdOut) {
|
||
const all = toLinesWithContent(stdOut, true, START_BOUNDARY).map(function(item) {
|
||
const lineDetail = item.trim().split(COMMIT_BOUNDARY);
|
||
const listLogLine = lineBuilder(lineDetail[0].trim().split(splitter), fields);
|
||
if (lineDetail.length > 1 && !!lineDetail[1].trim()) {
|
||
listLogLine.diff = parseDiffResult(lineDetail[1]);
|
||
}
|
||
return listLogLine;
|
||
});
|
||
return {
|
||
all,
|
||
latest: all.length && all[0] || null,
|
||
total: all.length
|
||
};
|
||
};
|
||
}
|
||
var START_BOUNDARY;
|
||
var COMMIT_BOUNDARY;
|
||
var SPLITTER;
|
||
var defaultFieldNames;
|
||
var init_parse_list_log_summary = __esm({
|
||
"src/lib/parsers/parse-list-log-summary.ts"() {
|
||
init_utils();
|
||
init_parse_diff_summary();
|
||
init_log_format();
|
||
START_BOUNDARY = "\xF2\xF2\xF2\xF2\xF2\xF2 ";
|
||
COMMIT_BOUNDARY = " \xF2\xF2";
|
||
SPLITTER = " \xF2 ";
|
||
defaultFieldNames = ["hash", "date", "message", "refs", "author_name", "author_email"];
|
||
}
|
||
});
|
||
var diff_exports = {};
|
||
__export2(diff_exports, {
|
||
diffSummaryTask: () => diffSummaryTask,
|
||
validateLogFormatConfig: () => validateLogFormatConfig
|
||
});
|
||
function diffSummaryTask(customArgs) {
|
||
let logFormat = logFormatFromCommand(customArgs);
|
||
const commands = ["diff"];
|
||
if (logFormat === "") {
|
||
logFormat = "--stat";
|
||
commands.push("--stat=4096");
|
||
}
|
||
commands.push(...customArgs);
|
||
return validateLogFormatConfig(commands) || {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: getDiffParser(logFormat)
|
||
};
|
||
}
|
||
function validateLogFormatConfig(customArgs) {
|
||
const flags = customArgs.filter(isLogFormat);
|
||
if (flags.length > 1) {
|
||
return configurationErrorTask(`Summary flags are mutually exclusive - pick one of ${flags.join(",")}`);
|
||
}
|
||
if (flags.length && customArgs.includes("-z")) {
|
||
return configurationErrorTask(`Summary flag ${flags} parsing is not compatible with null termination option '-z'`);
|
||
}
|
||
}
|
||
var init_diff = __esm({
|
||
"src/lib/tasks/diff.ts"() {
|
||
init_log_format();
|
||
init_parse_diff_summary();
|
||
init_task();
|
||
}
|
||
});
|
||
function prettyFormat(format, splitter) {
|
||
const fields = [];
|
||
const formatStr = [];
|
||
Object.keys(format).forEach((field) => {
|
||
fields.push(field);
|
||
formatStr.push(String(format[field]));
|
||
});
|
||
return [fields, formatStr.join(splitter)];
|
||
}
|
||
function userOptions(input) {
|
||
return Object.keys(input).reduce((out, key2) => {
|
||
if (!(key2 in excludeOptions)) {
|
||
out[key2] = input[key2];
|
||
}
|
||
return out;
|
||
}, {});
|
||
}
|
||
function parseLogOptions(opt = {}, customArgs = []) {
|
||
const splitter = filterType(opt.splitter, filterString, SPLITTER);
|
||
const format = !filterPrimitives(opt.format) && opt.format ? opt.format : {
|
||
hash: "%H",
|
||
date: opt.strictDate === false ? "%ai" : "%aI",
|
||
message: "%s",
|
||
refs: "%D",
|
||
body: opt.multiLine ? "%B" : "%b",
|
||
author_name: opt.mailMap !== false ? "%aN" : "%an",
|
||
author_email: opt.mailMap !== false ? "%aE" : "%ae"
|
||
};
|
||
const [fields, formatStr] = prettyFormat(format, splitter);
|
||
const suffix = [];
|
||
const command = [
|
||
`--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,
|
||
...customArgs
|
||
];
|
||
const maxCount = opt.n || opt["max-count"] || opt.maxCount;
|
||
if (maxCount) {
|
||
command.push(`--max-count=${maxCount}`);
|
||
}
|
||
if (opt.from || opt.to) {
|
||
const rangeOperator = opt.symmetric !== false ? "..." : "..";
|
||
suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`);
|
||
}
|
||
if (filterString(opt.file)) {
|
||
suffix.push("--follow", opt.file);
|
||
}
|
||
appendTaskOptions(userOptions(opt), command);
|
||
return {
|
||
fields,
|
||
splitter,
|
||
commands: [...command, ...suffix]
|
||
};
|
||
}
|
||
function logTask(splitter, fields, customArgs) {
|
||
const parser3 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));
|
||
return {
|
||
commands: ["log", ...customArgs],
|
||
format: "utf-8",
|
||
parser: parser3
|
||
};
|
||
}
|
||
function log_default() {
|
||
return {
|
||
log(...rest) {
|
||
const next = trailingFunctionArgument(arguments);
|
||
const options = parseLogOptions(trailingOptionsArgument(arguments), filterType(arguments[0], filterArray));
|
||
const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);
|
||
return this._runTask(task, next);
|
||
}
|
||
};
|
||
function createLogTask(options) {
|
||
return logTask(options.splitter, options.fields, options.commands);
|
||
}
|
||
function rejectDeprecatedSignatures(from, to) {
|
||
return filterString(from) && filterString(to) && configurationErrorTask(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`);
|
||
}
|
||
}
|
||
var excludeOptions;
|
||
var init_log = __esm({
|
||
"src/lib/tasks/log.ts"() {
|
||
init_log_format();
|
||
init_parse_list_log_summary();
|
||
init_utils();
|
||
init_task();
|
||
init_diff();
|
||
excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {
|
||
excludeOptions2[excludeOptions2["--pretty"] = 0] = "--pretty";
|
||
excludeOptions2[excludeOptions2["max-count"] = 1] = "max-count";
|
||
excludeOptions2[excludeOptions2["maxCount"] = 2] = "maxCount";
|
||
excludeOptions2[excludeOptions2["n"] = 3] = "n";
|
||
excludeOptions2[excludeOptions2["file"] = 4] = "file";
|
||
excludeOptions2[excludeOptions2["format"] = 5] = "format";
|
||
excludeOptions2[excludeOptions2["from"] = 6] = "from";
|
||
excludeOptions2[excludeOptions2["to"] = 7] = "to";
|
||
excludeOptions2[excludeOptions2["splitter"] = 8] = "splitter";
|
||
excludeOptions2[excludeOptions2["symmetric"] = 9] = "symmetric";
|
||
excludeOptions2[excludeOptions2["mailMap"] = 10] = "mailMap";
|
||
excludeOptions2[excludeOptions2["multiLine"] = 11] = "multiLine";
|
||
excludeOptions2[excludeOptions2["strictDate"] = 12] = "strictDate";
|
||
return excludeOptions2;
|
||
})(excludeOptions || {});
|
||
}
|
||
});
|
||
var MergeSummaryConflict;
|
||
var MergeSummaryDetail;
|
||
var init_MergeSummary = __esm({
|
||
"src/lib/responses/MergeSummary.ts"() {
|
||
MergeSummaryConflict = class {
|
||
constructor(reason, file = null, meta) {
|
||
this.reason = reason;
|
||
this.file = file;
|
||
this.meta = meta;
|
||
}
|
||
toString() {
|
||
return `${this.file}:${this.reason}`;
|
||
}
|
||
};
|
||
MergeSummaryDetail = class {
|
||
constructor() {
|
||
this.conflicts = [];
|
||
this.merges = [];
|
||
this.result = "success";
|
||
}
|
||
get failed() {
|
||
return this.conflicts.length > 0;
|
||
}
|
||
get reason() {
|
||
return this.result;
|
||
}
|
||
toString() {
|
||
if (this.conflicts.length) {
|
||
return `CONFLICTS: ${this.conflicts.join(", ")}`;
|
||
}
|
||
return "OK";
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var PullSummary;
|
||
var PullFailedSummary;
|
||
var init_PullSummary = __esm({
|
||
"src/lib/responses/PullSummary.ts"() {
|
||
PullSummary = class {
|
||
constructor() {
|
||
this.remoteMessages = {
|
||
all: []
|
||
};
|
||
this.created = [];
|
||
this.deleted = [];
|
||
this.files = [];
|
||
this.deletions = {};
|
||
this.insertions = {};
|
||
this.summary = {
|
||
changes: 0,
|
||
deletions: 0,
|
||
insertions: 0
|
||
};
|
||
}
|
||
};
|
||
PullFailedSummary = class {
|
||
constructor() {
|
||
this.remote = "";
|
||
this.hash = {
|
||
local: "",
|
||
remote: ""
|
||
};
|
||
this.branch = {
|
||
local: "",
|
||
remote: ""
|
||
};
|
||
this.message = "";
|
||
}
|
||
toString() {
|
||
return this.message;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function objectEnumerationResult(remoteMessages) {
|
||
return remoteMessages.objects = remoteMessages.objects || {
|
||
compressing: 0,
|
||
counting: 0,
|
||
enumerating: 0,
|
||
packReused: 0,
|
||
reused: { count: 0, delta: 0 },
|
||
total: { count: 0, delta: 0 }
|
||
};
|
||
}
|
||
function asObjectCount(source) {
|
||
const count = /^\s*(\d+)/.exec(source);
|
||
const delta = /delta (\d+)/i.exec(source);
|
||
return {
|
||
count: asNumber(count && count[1] || "0"),
|
||
delta: asNumber(delta && delta[1] || "0")
|
||
};
|
||
}
|
||
var remoteMessagesObjectParsers;
|
||
var init_parse_remote_objects = __esm({
|
||
"src/lib/parsers/parse-remote-objects.ts"() {
|
||
init_utils();
|
||
remoteMessagesObjectParsers = [
|
||
new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => {
|
||
const key2 = action.toLowerCase();
|
||
const enumeration = objectEnumerationResult(result.remoteMessages);
|
||
Object.assign(enumeration, { [key2]: asNumber(count) });
|
||
}),
|
||
new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => {
|
||
const key2 = action.toLowerCase();
|
||
const enumeration = objectEnumerationResult(result.remoteMessages);
|
||
Object.assign(enumeration, { [key2]: asNumber(count) });
|
||
}),
|
||
new RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => {
|
||
const objects = objectEnumerationResult(result.remoteMessages);
|
||
objects.total = asObjectCount(total);
|
||
objects.reused = asObjectCount(reused);
|
||
objects.packReused = asNumber(packReused);
|
||
})
|
||
];
|
||
}
|
||
});
|
||
function parseRemoteMessages(_stdOut, stdErr) {
|
||
return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);
|
||
}
|
||
var parsers2;
|
||
var RemoteMessageSummary;
|
||
var init_parse_remote_messages = __esm({
|
||
"src/lib/parsers/parse-remote-messages.ts"() {
|
||
init_utils();
|
||
init_parse_remote_objects();
|
||
parsers2 = [
|
||
new RemoteLineParser(/^remote:\s*(.+)$/, (result, [text2]) => {
|
||
result.remoteMessages.all.push(text2.trim());
|
||
return false;
|
||
}),
|
||
...remoteMessagesObjectParsers,
|
||
new RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => {
|
||
result.remoteMessages.pullRequestUrl = pullRequestUrl;
|
||
}),
|
||
new RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => {
|
||
result.remoteMessages.vulnerabilities = {
|
||
count: asNumber(count),
|
||
summary,
|
||
url
|
||
};
|
||
})
|
||
];
|
||
RemoteMessageSummary = class {
|
||
constructor() {
|
||
this.all = [];
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function parsePullErrorResult(stdOut, stdErr) {
|
||
const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);
|
||
return pullError.message && pullError;
|
||
}
|
||
var FILE_UPDATE_REGEX;
|
||
var SUMMARY_REGEX;
|
||
var ACTION_REGEX;
|
||
var parsers3;
|
||
var errorParsers;
|
||
var parsePullDetail;
|
||
var parsePullResult;
|
||
var init_parse_pull = __esm({
|
||
"src/lib/parsers/parse-pull.ts"() {
|
||
init_PullSummary();
|
||
init_utils();
|
||
init_parse_remote_messages();
|
||
FILE_UPDATE_REGEX = /^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/;
|
||
SUMMARY_REGEX = /(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/;
|
||
ACTION_REGEX = /^(create|delete) mode \d+ (.+)/;
|
||
parsers3 = [
|
||
new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {
|
||
result.files.push(file);
|
||
if (insertions) {
|
||
result.insertions[file] = insertions.length;
|
||
}
|
||
if (deletions) {
|
||
result.deletions[file] = deletions.length;
|
||
}
|
||
}),
|
||
new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {
|
||
if (insertions !== void 0 || deletions !== void 0) {
|
||
result.summary.changes = +changes || 0;
|
||
result.summary.insertions = +insertions || 0;
|
||
result.summary.deletions = +deletions || 0;
|
||
return true;
|
||
}
|
||
return false;
|
||
}),
|
||
new LineParser(ACTION_REGEX, (result, [action, file]) => {
|
||
append(result.files, file);
|
||
append(action === "create" ? result.created : result.deleted, file);
|
||
})
|
||
];
|
||
errorParsers = [
|
||
new LineParser(/^from\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),
|
||
new LineParser(/^fatal:\s(.+)$/, (result, [message]) => void (result.message = message)),
|
||
new LineParser(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/, (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {
|
||
result.branch.local = branchLocal;
|
||
result.hash.local = hashLocal;
|
||
result.branch.remote = branchRemote;
|
||
result.hash.remote = hashRemote;
|
||
})
|
||
];
|
||
parsePullDetail = (stdOut, stdErr) => {
|
||
return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);
|
||
};
|
||
parsePullResult = (stdOut, stdErr) => {
|
||
return Object.assign(new PullSummary(), parsePullDetail(stdOut, stdErr), parseRemoteMessages(stdOut, stdErr));
|
||
};
|
||
}
|
||
});
|
||
var parsers4;
|
||
var parseMergeResult;
|
||
var parseMergeDetail;
|
||
var init_parse_merge = __esm({
|
||
"src/lib/parsers/parse-merge.ts"() {
|
||
init_MergeSummary();
|
||
init_utils();
|
||
init_parse_pull();
|
||
parsers4 = [
|
||
new LineParser(/^Auto-merging\s+(.+)$/, (summary, [autoMerge]) => {
|
||
summary.merges.push(autoMerge);
|
||
}),
|
||
new LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => {
|
||
summary.conflicts.push(new MergeSummaryConflict(reason, file));
|
||
}),
|
||
new LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef]) => {
|
||
summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));
|
||
}),
|
||
new LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => {
|
||
summary.conflicts.push(new MergeSummaryConflict(reason, null));
|
||
}),
|
||
new LineParser(/^Automatic merge failed;\s+(.+)$/, (summary, [result]) => {
|
||
summary.result = result;
|
||
})
|
||
];
|
||
parseMergeResult = (stdOut, stdErr) => {
|
||
return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));
|
||
};
|
||
parseMergeDetail = (stdOut) => {
|
||
return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);
|
||
};
|
||
}
|
||
});
|
||
function mergeTask(customArgs) {
|
||
if (!customArgs.length) {
|
||
return configurationErrorTask("Git.merge requires at least one option");
|
||
}
|
||
return {
|
||
commands: ["merge", ...customArgs],
|
||
format: "utf-8",
|
||
parser(stdOut, stdErr) {
|
||
const merge = parseMergeResult(stdOut, stdErr);
|
||
if (merge.failed) {
|
||
throw new GitResponseError(merge);
|
||
}
|
||
return merge;
|
||
}
|
||
};
|
||
}
|
||
var init_merge = __esm({
|
||
"src/lib/tasks/merge.ts"() {
|
||
init_git_response_error();
|
||
init_parse_merge();
|
||
init_task();
|
||
}
|
||
});
|
||
function pushResultPushedItem(local, remote, status) {
|
||
const deleted = status.includes("deleted");
|
||
const tag = status.includes("tag") || /^refs\/tags/.test(local);
|
||
const alreadyUpdated = !status.includes("new");
|
||
return {
|
||
deleted,
|
||
tag,
|
||
branch: !tag,
|
||
new: !alreadyUpdated,
|
||
alreadyUpdated,
|
||
local,
|
||
remote
|
||
};
|
||
}
|
||
var parsers5;
|
||
var parsePushResult;
|
||
var parsePushDetail;
|
||
var init_parse_push = __esm({
|
||
"src/lib/parsers/parse-push.ts"() {
|
||
init_utils();
|
||
init_parse_remote_messages();
|
||
parsers5 = [
|
||
new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {
|
||
result.repo = repo;
|
||
}),
|
||
new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {
|
||
result.ref = __spreadProps2(__spreadValues2({}, result.ref || {}), {
|
||
local
|
||
});
|
||
}),
|
||
new LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
|
||
result.pushed.push(pushResultPushedItem(local, remote, type));
|
||
}),
|
||
new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
|
||
result.branch = __spreadProps2(__spreadValues2({}, result.branch || {}), {
|
||
local,
|
||
remote,
|
||
remoteName
|
||
});
|
||
}),
|
||
new LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => {
|
||
result.update = {
|
||
head: {
|
||
local,
|
||
remote
|
||
},
|
||
hash: {
|
||
from,
|
||
to
|
||
}
|
||
};
|
||
})
|
||
];
|
||
parsePushResult = (stdOut, stdErr) => {
|
||
const pushDetail = parsePushDetail(stdOut, stdErr);
|
||
const responseDetail = parseRemoteMessages(stdOut, stdErr);
|
||
return __spreadValues2(__spreadValues2({}, pushDetail), responseDetail);
|
||
};
|
||
parsePushDetail = (stdOut, stdErr) => {
|
||
return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);
|
||
};
|
||
}
|
||
});
|
||
var push_exports = {};
|
||
__export2(push_exports, {
|
||
pushTagsTask: () => pushTagsTask,
|
||
pushTask: () => pushTask
|
||
});
|
||
function pushTagsTask(ref = {}, customArgs) {
|
||
append(customArgs, "--tags");
|
||
return pushTask(ref, customArgs);
|
||
}
|
||
function pushTask(ref = {}, customArgs) {
|
||
const commands = ["push", ...customArgs];
|
||
if (ref.branch) {
|
||
commands.splice(1, 0, ref.branch);
|
||
}
|
||
if (ref.remote) {
|
||
commands.splice(1, 0, ref.remote);
|
||
}
|
||
remove(commands, "-v");
|
||
append(commands, "--verbose");
|
||
append(commands, "--porcelain");
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: parsePushResult
|
||
};
|
||
}
|
||
var init_push = __esm({
|
||
"src/lib/tasks/push.ts"() {
|
||
init_parse_push();
|
||
init_utils();
|
||
}
|
||
});
|
||
var fromPathRegex;
|
||
var FileStatusSummary;
|
||
var init_FileStatusSummary = __esm({
|
||
"src/lib/responses/FileStatusSummary.ts"() {
|
||
fromPathRegex = /^(.+) -> (.+)$/;
|
||
FileStatusSummary = class {
|
||
constructor(path2, index, working_dir) {
|
||
this.path = path2;
|
||
this.index = index;
|
||
this.working_dir = working_dir;
|
||
if (index + working_dir === "R") {
|
||
const detail = fromPathRegex.exec(path2) || [null, path2, path2];
|
||
this.from = detail[1] || "";
|
||
this.path = detail[2] || "";
|
||
}
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function renamedFile(line) {
|
||
const [to, from] = line.split(NULL);
|
||
return {
|
||
from: from || to,
|
||
to
|
||
};
|
||
}
|
||
function parser2(indexX, indexY, handler) {
|
||
return [`${indexX}${indexY}`, handler];
|
||
}
|
||
function conflicts(indexX, ...indexY) {
|
||
return indexY.map((y) => parser2(indexX, y, (result, file) => append(result.conflicted, file)));
|
||
}
|
||
function splitLine(result, lineStr) {
|
||
const trimmed2 = lineStr.trim();
|
||
switch (" ") {
|
||
case trimmed2.charAt(2):
|
||
return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));
|
||
case trimmed2.charAt(1):
|
||
return data(" ", trimmed2.charAt(0), trimmed2.substr(2));
|
||
default:
|
||
return;
|
||
}
|
||
function data(index, workingDir, path2) {
|
||
const raw = `${index}${workingDir}`;
|
||
const handler = parsers6.get(raw);
|
||
if (handler) {
|
||
handler(result, path2);
|
||
}
|
||
if (raw !== "##" && raw !== "!!") {
|
||
result.files.push(new FileStatusSummary(path2.replace(/\0.+$/, ""), index, workingDir));
|
||
}
|
||
}
|
||
}
|
||
var StatusSummary;
|
||
var parsers6;
|
||
var parseStatusSummary;
|
||
var init_StatusSummary = __esm({
|
||
"src/lib/responses/StatusSummary.ts"() {
|
||
init_utils();
|
||
init_FileStatusSummary();
|
||
StatusSummary = class {
|
||
constructor() {
|
||
this.not_added = [];
|
||
this.conflicted = [];
|
||
this.created = [];
|
||
this.deleted = [];
|
||
this.ignored = void 0;
|
||
this.modified = [];
|
||
this.renamed = [];
|
||
this.files = [];
|
||
this.staged = [];
|
||
this.ahead = 0;
|
||
this.behind = 0;
|
||
this.current = null;
|
||
this.tracking = null;
|
||
this.detached = false;
|
||
this.isClean = () => {
|
||
return !this.files.length;
|
||
};
|
||
}
|
||
};
|
||
parsers6 = new Map([
|
||
parser2(" ", "A", (result, file) => append(result.created, file)),
|
||
parser2(" ", "D", (result, file) => append(result.deleted, file)),
|
||
parser2(" ", "M", (result, file) => append(result.modified, file)),
|
||
parser2("A", " ", (result, file) => append(result.created, file) && append(result.staged, file)),
|
||
parser2("A", "M", (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)),
|
||
parser2("D", " ", (result, file) => append(result.deleted, file) && append(result.staged, file)),
|
||
parser2("M", " ", (result, file) => append(result.modified, file) && append(result.staged, file)),
|
||
parser2("M", "M", (result, file) => append(result.modified, file) && append(result.staged, file)),
|
||
parser2("R", " ", (result, file) => {
|
||
append(result.renamed, renamedFile(file));
|
||
}),
|
||
parser2("R", "M", (result, file) => {
|
||
const renamed = renamedFile(file);
|
||
append(result.renamed, renamed);
|
||
append(result.modified, renamed.to);
|
||
}),
|
||
parser2("!", "!", (_result, _file) => {
|
||
append(_result.ignored = _result.ignored || [], _file);
|
||
}),
|
||
parser2("?", "?", (result, file) => append(result.not_added, file)),
|
||
...conflicts("A", "A", "U"),
|
||
...conflicts("D", "D", "U"),
|
||
...conflicts("U", "A", "D", "U"),
|
||
[
|
||
"##",
|
||
(result, line) => {
|
||
const aheadReg = /ahead (\d+)/;
|
||
const behindReg = /behind (\d+)/;
|
||
const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/;
|
||
const trackingReg = /\.{3}(\S*)/;
|
||
const onEmptyBranchReg = /\son\s([\S]+)$/;
|
||
let regexResult;
|
||
regexResult = aheadReg.exec(line);
|
||
result.ahead = regexResult && +regexResult[1] || 0;
|
||
regexResult = behindReg.exec(line);
|
||
result.behind = regexResult && +regexResult[1] || 0;
|
||
regexResult = currentReg.exec(line);
|
||
result.current = regexResult && regexResult[1];
|
||
regexResult = trackingReg.exec(line);
|
||
result.tracking = regexResult && regexResult[1];
|
||
regexResult = onEmptyBranchReg.exec(line);
|
||
result.current = regexResult && regexResult[1] || result.current;
|
||
result.detached = /\(no branch\)/.test(line);
|
||
}
|
||
]
|
||
]);
|
||
parseStatusSummary = function(text2) {
|
||
const lines = text2.split(NULL);
|
||
const status = new StatusSummary();
|
||
for (let i = 0, l = lines.length; i < l; ) {
|
||
let line = lines[i++].trim();
|
||
if (!line) {
|
||
continue;
|
||
}
|
||
if (line.charAt(0) === "R") {
|
||
line += NULL + (lines[i++] || "");
|
||
}
|
||
splitLine(status, line);
|
||
}
|
||
return status;
|
||
};
|
||
}
|
||
});
|
||
function statusTask(customArgs) {
|
||
const commands = [
|
||
"status",
|
||
"--porcelain",
|
||
"-b",
|
||
"-u",
|
||
"--null",
|
||
...customArgs.filter((arg) => !ignoredOptions.includes(arg))
|
||
];
|
||
return {
|
||
format: "utf-8",
|
||
commands,
|
||
parser(text2) {
|
||
return parseStatusSummary(text2);
|
||
}
|
||
};
|
||
}
|
||
var ignoredOptions;
|
||
var init_status = __esm({
|
||
"src/lib/tasks/status.ts"() {
|
||
init_StatusSummary();
|
||
ignoredOptions = ["--null", "-z"];
|
||
}
|
||
});
|
||
var simple_git_api_exports = {};
|
||
__export2(simple_git_api_exports, {
|
||
SimpleGitApi: () => SimpleGitApi
|
||
});
|
||
var SimpleGitApi;
|
||
var init_simple_git_api = __esm({
|
||
"src/lib/simple-git-api.ts"() {
|
||
init_task_callback();
|
||
init_change_working_directory();
|
||
init_commit();
|
||
init_config();
|
||
init_grep();
|
||
init_hash_object();
|
||
init_init();
|
||
init_log();
|
||
init_merge();
|
||
init_push();
|
||
init_status();
|
||
init_task();
|
||
init_utils();
|
||
SimpleGitApi = class {
|
||
constructor(_executor) {
|
||
this._executor = _executor;
|
||
}
|
||
_runTask(task, then) {
|
||
const chain = this._executor.chain();
|
||
const promise2 = chain.push(task);
|
||
if (then) {
|
||
taskCallback(task, promise2, then);
|
||
}
|
||
return Object.create(this, {
|
||
then: { value: promise2.then.bind(promise2) },
|
||
catch: { value: promise2.catch.bind(promise2) },
|
||
_executor: { value: chain }
|
||
});
|
||
}
|
||
add(files) {
|
||
return this._runTask(straightThroughStringTask(["add", ...asArray(files)]), trailingFunctionArgument(arguments));
|
||
}
|
||
cwd(directory) {
|
||
const next = trailingFunctionArgument(arguments);
|
||
if (typeof directory === "string") {
|
||
return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);
|
||
}
|
||
if (typeof (directory == null ? void 0 : directory.path) === "string") {
|
||
return this._runTask(changeWorkingDirectoryTask(directory.path, directory.root && this._executor || void 0), next);
|
||
}
|
||
return this._runTask(configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"), next);
|
||
}
|
||
hashObject(path2, write) {
|
||
return this._runTask(hashObjectTask(path2, write === true), trailingFunctionArgument(arguments));
|
||
}
|
||
init(bare) {
|
||
return this._runTask(initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
|
||
}
|
||
merge() {
|
||
return this._runTask(mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
|
||
}
|
||
mergeFromTo(remote, branch) {
|
||
if (!(filterString(remote) && filterString(branch))) {
|
||
return this._runTask(configurationErrorTask(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`));
|
||
}
|
||
return this._runTask(mergeTask([remote, branch, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false));
|
||
}
|
||
outputHandler(handler) {
|
||
this._executor.outputHandler = handler;
|
||
return this;
|
||
}
|
||
push() {
|
||
const task = pushTask({
|
||
remote: filterType(arguments[0], filterString),
|
||
branch: filterType(arguments[1], filterString)
|
||
}, getTrailingOptions(arguments));
|
||
return this._runTask(task, trailingFunctionArgument(arguments));
|
||
}
|
||
stash() {
|
||
return this._runTask(straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
|
||
}
|
||
status() {
|
||
return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
|
||
}
|
||
};
|
||
Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default());
|
||
}
|
||
});
|
||
var scheduler_exports = {};
|
||
__export2(scheduler_exports, {
|
||
Scheduler: () => Scheduler
|
||
});
|
||
var createScheduledTask;
|
||
var Scheduler;
|
||
var init_scheduler = __esm({
|
||
"src/lib/runners/scheduler.ts"() {
|
||
init_utils();
|
||
init_git_logger();
|
||
createScheduledTask = (() => {
|
||
let id = 0;
|
||
return () => {
|
||
id++;
|
||
const { promise: promise2, done } = (0, import_promise_deferred.createDeferred)();
|
||
return {
|
||
promise: promise2,
|
||
done,
|
||
id
|
||
};
|
||
};
|
||
})();
|
||
Scheduler = class {
|
||
constructor(concurrency = 2) {
|
||
this.concurrency = concurrency;
|
||
this.logger = createLogger("", "scheduler");
|
||
this.pending = [];
|
||
this.running = [];
|
||
this.logger(`Constructed, concurrency=%s`, concurrency);
|
||
}
|
||
schedule() {
|
||
if (!this.pending.length || this.running.length >= this.concurrency) {
|
||
this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency);
|
||
return;
|
||
}
|
||
const task = append(this.running, this.pending.shift());
|
||
this.logger(`Attempting id=%s`, task.id);
|
||
task.done(() => {
|
||
this.logger(`Completing id=`, task.id);
|
||
remove(this.running, task);
|
||
this.schedule();
|
||
});
|
||
}
|
||
next() {
|
||
const { promise: promise2, id } = append(this.pending, createScheduledTask());
|
||
this.logger(`Scheduling id=%s`, id);
|
||
this.schedule();
|
||
return promise2;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var apply_patch_exports = {};
|
||
__export2(apply_patch_exports, {
|
||
applyPatchTask: () => applyPatchTask
|
||
});
|
||
function applyPatchTask(patches, customArgs) {
|
||
return straightThroughStringTask(["apply", ...customArgs, ...patches]);
|
||
}
|
||
var init_apply_patch = __esm({
|
||
"src/lib/tasks/apply-patch.ts"() {
|
||
init_task();
|
||
}
|
||
});
|
||
function branchDeletionSuccess(branch, hash2) {
|
||
return {
|
||
branch,
|
||
hash: hash2,
|
||
success: true
|
||
};
|
||
}
|
||
function branchDeletionFailure(branch) {
|
||
return {
|
||
branch,
|
||
hash: null,
|
||
success: false
|
||
};
|
||
}
|
||
var BranchDeletionBatch;
|
||
var init_BranchDeleteSummary = __esm({
|
||
"src/lib/responses/BranchDeleteSummary.ts"() {
|
||
BranchDeletionBatch = class {
|
||
constructor() {
|
||
this.all = [];
|
||
this.branches = {};
|
||
this.errors = [];
|
||
}
|
||
get success() {
|
||
return !this.errors.length;
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function hasBranchDeletionError(data, processExitCode) {
|
||
return processExitCode === 1 && deleteErrorRegex.test(data);
|
||
}
|
||
var deleteSuccessRegex;
|
||
var deleteErrorRegex;
|
||
var parsers7;
|
||
var parseBranchDeletions;
|
||
var init_parse_branch_delete = __esm({
|
||
"src/lib/parsers/parse-branch-delete.ts"() {
|
||
init_BranchDeleteSummary();
|
||
init_utils();
|
||
deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/;
|
||
deleteErrorRegex = /^error[^']+'([^']+)'/m;
|
||
parsers7 = [
|
||
new LineParser(deleteSuccessRegex, (result, [branch, hash2]) => {
|
||
const deletion = branchDeletionSuccess(branch, hash2);
|
||
result.all.push(deletion);
|
||
result.branches[branch] = deletion;
|
||
}),
|
||
new LineParser(deleteErrorRegex, (result, [branch]) => {
|
||
const deletion = branchDeletionFailure(branch);
|
||
result.errors.push(deletion);
|
||
result.all.push(deletion);
|
||
result.branches[branch] = deletion;
|
||
})
|
||
];
|
||
parseBranchDeletions = (stdOut, stdErr) => {
|
||
return parseStringResponse(new BranchDeletionBatch(), parsers7, [stdOut, stdErr]);
|
||
};
|
||
}
|
||
});
|
||
var BranchSummaryResult;
|
||
var init_BranchSummary = __esm({
|
||
"src/lib/responses/BranchSummary.ts"() {
|
||
BranchSummaryResult = class {
|
||
constructor() {
|
||
this.all = [];
|
||
this.branches = {};
|
||
this.current = "";
|
||
this.detached = false;
|
||
}
|
||
push(status, detached, name, commit, label) {
|
||
if (status === "*") {
|
||
this.detached = detached;
|
||
this.current = name;
|
||
}
|
||
this.all.push(name);
|
||
this.branches[name] = {
|
||
current: status === "*",
|
||
linkedWorkTree: status === "+",
|
||
name,
|
||
commit,
|
||
label
|
||
};
|
||
}
|
||
};
|
||
}
|
||
});
|
||
function branchStatus(input) {
|
||
return input ? input.charAt(0) : "";
|
||
}
|
||
function parseBranchSummary(stdOut) {
|
||
return parseStringResponse(new BranchSummaryResult(), parsers8, stdOut);
|
||
}
|
||
var parsers8;
|
||
var init_parse_branch = __esm({
|
||
"src/lib/parsers/parse-branch.ts"() {
|
||
init_BranchSummary();
|
||
init_utils();
|
||
parsers8 = [
|
||
new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit, label]) => {
|
||
result.push(branchStatus(current), true, name, commit, label);
|
||
}),
|
||
new LineParser(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s, (result, [current, name, commit, label]) => {
|
||
result.push(branchStatus(current), false, name, commit, label);
|
||
})
|
||
];
|
||
}
|
||
});
|
||
var branch_exports = {};
|
||
__export2(branch_exports, {
|
||
branchLocalTask: () => branchLocalTask,
|
||
branchTask: () => branchTask,
|
||
containsDeleteBranchCommand: () => containsDeleteBranchCommand,
|
||
deleteBranchTask: () => deleteBranchTask,
|
||
deleteBranchesTask: () => deleteBranchesTask
|
||
});
|
||
function containsDeleteBranchCommand(commands) {
|
||
const deleteCommands = ["-d", "-D", "--delete"];
|
||
return commands.some((command) => deleteCommands.includes(command));
|
||
}
|
||
function branchTask(customArgs) {
|
||
const isDelete = containsDeleteBranchCommand(customArgs);
|
||
const commands = ["branch", ...customArgs];
|
||
if (commands.length === 1) {
|
||
commands.push("-a");
|
||
}
|
||
if (!commands.includes("-v")) {
|
||
commands.splice(1, 0, "-v");
|
||
}
|
||
return {
|
||
format: "utf-8",
|
||
commands,
|
||
parser(stdOut, stdErr) {
|
||
if (isDelete) {
|
||
return parseBranchDeletions(stdOut, stdErr).all[0];
|
||
}
|
||
return parseBranchSummary(stdOut);
|
||
}
|
||
};
|
||
}
|
||
function branchLocalTask() {
|
||
const parser3 = parseBranchSummary;
|
||
return {
|
||
format: "utf-8",
|
||
commands: ["branch", "-v"],
|
||
parser: parser3
|
||
};
|
||
}
|
||
function deleteBranchesTask(branches, forceDelete = false) {
|
||
return {
|
||
format: "utf-8",
|
||
commands: ["branch", "-v", forceDelete ? "-D" : "-d", ...branches],
|
||
parser(stdOut, stdErr) {
|
||
return parseBranchDeletions(stdOut, stdErr);
|
||
},
|
||
onError({ exitCode, stdOut }, error, done, fail) {
|
||
if (!hasBranchDeletionError(String(error), exitCode)) {
|
||
return fail(error);
|
||
}
|
||
done(stdOut);
|
||
}
|
||
};
|
||
}
|
||
function deleteBranchTask(branch, forceDelete = false) {
|
||
const task = {
|
||
format: "utf-8",
|
||
commands: ["branch", "-v", forceDelete ? "-D" : "-d", branch],
|
||
parser(stdOut, stdErr) {
|
||
return parseBranchDeletions(stdOut, stdErr).branches[branch];
|
||
},
|
||
onError({ exitCode, stdErr, stdOut }, error, _, fail) {
|
||
if (!hasBranchDeletionError(String(error), exitCode)) {
|
||
return fail(error);
|
||
}
|
||
throw new GitResponseError(task.parser(bufferToString(stdOut), bufferToString(stdErr)), String(error));
|
||
}
|
||
};
|
||
return task;
|
||
}
|
||
var init_branch = __esm({
|
||
"src/lib/tasks/branch.ts"() {
|
||
init_git_response_error();
|
||
init_parse_branch_delete();
|
||
init_parse_branch();
|
||
init_utils();
|
||
}
|
||
});
|
||
var parseCheckIgnore;
|
||
var init_CheckIgnore = __esm({
|
||
"src/lib/responses/CheckIgnore.ts"() {
|
||
parseCheckIgnore = (text2) => {
|
||
return text2.split(/\n/g).map((line) => line.trim()).filter((file) => !!file);
|
||
};
|
||
}
|
||
});
|
||
var check_ignore_exports = {};
|
||
__export2(check_ignore_exports, {
|
||
checkIgnoreTask: () => checkIgnoreTask
|
||
});
|
||
function checkIgnoreTask(paths) {
|
||
return {
|
||
commands: ["check-ignore", ...paths],
|
||
format: "utf-8",
|
||
parser: parseCheckIgnore
|
||
};
|
||
}
|
||
var init_check_ignore = __esm({
|
||
"src/lib/tasks/check-ignore.ts"() {
|
||
init_CheckIgnore();
|
||
}
|
||
});
|
||
var clone_exports = {};
|
||
__export2(clone_exports, {
|
||
cloneMirrorTask: () => cloneMirrorTask,
|
||
cloneTask: () => cloneTask
|
||
});
|
||
function disallowedCommand(command) {
|
||
return /^--upload-pack(=|$)/.test(command);
|
||
}
|
||
function cloneTask(repo, directory, customArgs) {
|
||
const commands = ["clone", ...customArgs];
|
||
filterString(repo) && commands.push(repo);
|
||
filterString(directory) && commands.push(directory);
|
||
const banned = commands.find(disallowedCommand);
|
||
if (banned) {
|
||
return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
|
||
}
|
||
return straightThroughStringTask(commands);
|
||
}
|
||
function cloneMirrorTask(repo, directory, customArgs) {
|
||
append(customArgs, "--mirror");
|
||
return cloneTask(repo, directory, customArgs);
|
||
}
|
||
var init_clone = __esm({
|
||
"src/lib/tasks/clone.ts"() {
|
||
init_task();
|
||
init_utils();
|
||
}
|
||
});
|
||
function parseFetchResult(stdOut, stdErr) {
|
||
const result = {
|
||
raw: stdOut,
|
||
remote: null,
|
||
branches: [],
|
||
tags: [],
|
||
updated: [],
|
||
deleted: []
|
||
};
|
||
return parseStringResponse(result, parsers9, [stdOut, stdErr]);
|
||
}
|
||
var parsers9;
|
||
var init_parse_fetch = __esm({
|
||
"src/lib/parsers/parse-fetch.ts"() {
|
||
init_utils();
|
||
parsers9 = [
|
||
new LineParser(/From (.+)$/, (result, [remote]) => {
|
||
result.remote = remote;
|
||
}),
|
||
new LineParser(/\* \[new branch]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => {
|
||
result.branches.push({
|
||
name,
|
||
tracking
|
||
});
|
||
}),
|
||
new LineParser(/\* \[new tag]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => {
|
||
result.tags.push({
|
||
name,
|
||
tracking
|
||
});
|
||
}),
|
||
new LineParser(/- \[deleted]\s+\S+\s*-> (.+)$/, (result, [tracking]) => {
|
||
result.deleted.push({
|
||
tracking
|
||
});
|
||
}),
|
||
new LineParser(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/, (result, [from, to, name, tracking]) => {
|
||
result.updated.push({
|
||
name,
|
||
tracking,
|
||
to,
|
||
from
|
||
});
|
||
})
|
||
];
|
||
}
|
||
});
|
||
var fetch_exports = {};
|
||
__export2(fetch_exports, {
|
||
fetchTask: () => fetchTask
|
||
});
|
||
function disallowedCommand2(command) {
|
||
return /^--upload-pack(=|$)/.test(command);
|
||
}
|
||
function fetchTask(remote, branch, customArgs) {
|
||
const commands = ["fetch", ...customArgs];
|
||
if (remote && branch) {
|
||
commands.push(remote, branch);
|
||
}
|
||
const banned = commands.find(disallowedCommand2);
|
||
if (banned) {
|
||
return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: parseFetchResult
|
||
};
|
||
}
|
||
var init_fetch = __esm({
|
||
"src/lib/tasks/fetch.ts"() {
|
||
init_parse_fetch();
|
||
init_task();
|
||
}
|
||
});
|
||
function parseMoveResult(stdOut) {
|
||
return parseStringResponse({ moves: [] }, parsers10, stdOut);
|
||
}
|
||
var parsers10;
|
||
var init_parse_move = __esm({
|
||
"src/lib/parsers/parse-move.ts"() {
|
||
init_utils();
|
||
parsers10 = [
|
||
new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {
|
||
result.moves.push({ from, to });
|
||
})
|
||
];
|
||
}
|
||
});
|
||
var move_exports = {};
|
||
__export2(move_exports, {
|
||
moveTask: () => moveTask
|
||
});
|
||
function moveTask(from, to) {
|
||
return {
|
||
commands: ["mv", "-v", ...asArray(from), to],
|
||
format: "utf-8",
|
||
parser: parseMoveResult
|
||
};
|
||
}
|
||
var init_move = __esm({
|
||
"src/lib/tasks/move.ts"() {
|
||
init_parse_move();
|
||
init_utils();
|
||
}
|
||
});
|
||
var pull_exports = {};
|
||
__export2(pull_exports, {
|
||
pullTask: () => pullTask
|
||
});
|
||
function pullTask(remote, branch, customArgs) {
|
||
const commands = ["pull", ...customArgs];
|
||
if (remote && branch) {
|
||
commands.splice(1, 0, remote, branch);
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser(stdOut, stdErr) {
|
||
return parsePullResult(stdOut, stdErr);
|
||
},
|
||
onError(result, _error, _done, fail) {
|
||
const pullError = parsePullErrorResult(bufferToString(result.stdOut), bufferToString(result.stdErr));
|
||
if (pullError) {
|
||
return fail(new GitResponseError(pullError));
|
||
}
|
||
fail(_error);
|
||
}
|
||
};
|
||
}
|
||
var init_pull = __esm({
|
||
"src/lib/tasks/pull.ts"() {
|
||
init_git_response_error();
|
||
init_parse_pull();
|
||
init_utils();
|
||
}
|
||
});
|
||
function parseGetRemotes(text2) {
|
||
const remotes = {};
|
||
forEach(text2, ([name]) => remotes[name] = { name });
|
||
return Object.values(remotes);
|
||
}
|
||
function parseGetRemotesVerbose(text2) {
|
||
const remotes = {};
|
||
forEach(text2, ([name, url, purpose]) => {
|
||
if (!remotes.hasOwnProperty(name)) {
|
||
remotes[name] = {
|
||
name,
|
||
refs: { fetch: "", push: "" }
|
||
};
|
||
}
|
||
if (purpose && url) {
|
||
remotes[name].refs[purpose.replace(/[^a-z]/g, "")] = url;
|
||
}
|
||
});
|
||
return Object.values(remotes);
|
||
}
|
||
function forEach(text2, handler) {
|
||
forEachLineWithContent(text2, (line) => handler(line.split(/\s+/)));
|
||
}
|
||
var init_GetRemoteSummary = __esm({
|
||
"src/lib/responses/GetRemoteSummary.ts"() {
|
||
init_utils();
|
||
}
|
||
});
|
||
var remote_exports = {};
|
||
__export2(remote_exports, {
|
||
addRemoteTask: () => addRemoteTask,
|
||
getRemotesTask: () => getRemotesTask,
|
||
listRemotesTask: () => listRemotesTask,
|
||
remoteTask: () => remoteTask,
|
||
removeRemoteTask: () => removeRemoteTask
|
||
});
|
||
function addRemoteTask(remoteName, remoteRepo, customArgs = []) {
|
||
return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]);
|
||
}
|
||
function getRemotesTask(verbose) {
|
||
const commands = ["remote"];
|
||
if (verbose) {
|
||
commands.push("-v");
|
||
}
|
||
return {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: verbose ? parseGetRemotesVerbose : parseGetRemotes
|
||
};
|
||
}
|
||
function listRemotesTask(customArgs = []) {
|
||
const commands = [...customArgs];
|
||
if (commands[0] !== "ls-remote") {
|
||
commands.unshift("ls-remote");
|
||
}
|
||
return straightThroughStringTask(commands);
|
||
}
|
||
function remoteTask(customArgs = []) {
|
||
const commands = [...customArgs];
|
||
if (commands[0] !== "remote") {
|
||
commands.unshift("remote");
|
||
}
|
||
return straightThroughStringTask(commands);
|
||
}
|
||
function removeRemoteTask(remoteName) {
|
||
return straightThroughStringTask(["remote", "remove", remoteName]);
|
||
}
|
||
var init_remote = __esm({
|
||
"src/lib/tasks/remote.ts"() {
|
||
init_GetRemoteSummary();
|
||
init_task();
|
||
}
|
||
});
|
||
var stash_list_exports = {};
|
||
__export2(stash_list_exports, {
|
||
stashListTask: () => stashListTask
|
||
});
|
||
function stashListTask(opt = {}, customArgs) {
|
||
const options = parseLogOptions(opt);
|
||
const commands = ["stash", "list", ...options.commands, ...customArgs];
|
||
const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands));
|
||
return validateLogFormatConfig(commands) || {
|
||
commands,
|
||
format: "utf-8",
|
||
parser: parser3
|
||
};
|
||
}
|
||
var init_stash_list = __esm({
|
||
"src/lib/tasks/stash-list.ts"() {
|
||
init_log_format();
|
||
init_parse_list_log_summary();
|
||
init_diff();
|
||
init_log();
|
||
}
|
||
});
|
||
var sub_module_exports = {};
|
||
__export2(sub_module_exports, {
|
||
addSubModuleTask: () => addSubModuleTask,
|
||
initSubModuleTask: () => initSubModuleTask,
|
||
subModuleTask: () => subModuleTask,
|
||
updateSubModuleTask: () => updateSubModuleTask
|
||
});
|
||
function addSubModuleTask(repo, path2) {
|
||
return subModuleTask(["add", repo, path2]);
|
||
}
|
||
function initSubModuleTask(customArgs) {
|
||
return subModuleTask(["init", ...customArgs]);
|
||
}
|
||
function subModuleTask(customArgs) {
|
||
const commands = [...customArgs];
|
||
if (commands[0] !== "submodule") {
|
||
commands.unshift("submodule");
|
||
}
|
||
return straightThroughStringTask(commands);
|
||
}
|
||
function updateSubModuleTask(customArgs) {
|
||
return subModuleTask(["update", ...customArgs]);
|
||
}
|
||
var init_sub_module = __esm({
|
||
"src/lib/tasks/sub-module.ts"() {
|
||
init_task();
|
||
}
|
||
});
|
||
function singleSorted(a, b) {
|
||
const aIsNum = isNaN(a);
|
||
const bIsNum = isNaN(b);
|
||
if (aIsNum !== bIsNum) {
|
||
return aIsNum ? 1 : -1;
|
||
}
|
||
return aIsNum ? sorted(a, b) : 0;
|
||
}
|
||
function sorted(a, b) {
|
||
return a === b ? 0 : a > b ? 1 : -1;
|
||
}
|
||
function trimmed(input) {
|
||
return input.trim();
|
||
}
|
||
function toNumber(input) {
|
||
if (typeof input === "string") {
|
||
return parseInt(input.replace(/^\D+/g, ""), 10) || 0;
|
||
}
|
||
return 0;
|
||
}
|
||
var TagList;
|
||
var parseTagList;
|
||
var init_TagList = __esm({
|
||
"src/lib/responses/TagList.ts"() {
|
||
TagList = class {
|
||
constructor(all, latest) {
|
||
this.all = all;
|
||
this.latest = latest;
|
||
}
|
||
};
|
||
parseTagList = function(data, customSort = false) {
|
||
const tags = data.split("\n").map(trimmed).filter(Boolean);
|
||
if (!customSort) {
|
||
tags.sort(function(tagA, tagB) {
|
||
const partsA = tagA.split(".");
|
||
const partsB = tagB.split(".");
|
||
if (partsA.length === 1 || partsB.length === 1) {
|
||
return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));
|
||
}
|
||
for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {
|
||
const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));
|
||
if (diff) {
|
||
return diff;
|
||
}
|
||
}
|
||
return 0;
|
||
});
|
||
}
|
||
const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(".") >= 0);
|
||
return new TagList(tags, latest);
|
||
};
|
||
}
|
||
});
|
||
var tag_exports = {};
|
||
__export2(tag_exports, {
|
||
addAnnotatedTagTask: () => addAnnotatedTagTask,
|
||
addTagTask: () => addTagTask,
|
||
tagListTask: () => tagListTask
|
||
});
|
||
function tagListTask(customArgs = []) {
|
||
const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));
|
||
return {
|
||
format: "utf-8",
|
||
commands: ["tag", "-l", ...customArgs],
|
||
parser(text2) {
|
||
return parseTagList(text2, hasCustomSort);
|
||
}
|
||
};
|
||
}
|
||
function addTagTask(name) {
|
||
return {
|
||
format: "utf-8",
|
||
commands: ["tag", name],
|
||
parser() {
|
||
return { name };
|
||
}
|
||
};
|
||
}
|
||
function addAnnotatedTagTask(name, tagMessage) {
|
||
return {
|
||
format: "utf-8",
|
||
commands: ["tag", "-a", "-m", tagMessage, name],
|
||
parser() {
|
||
return { name };
|
||
}
|
||
};
|
||
}
|
||
var init_tag = __esm({
|
||
"src/lib/tasks/tag.ts"() {
|
||
init_TagList();
|
||
}
|
||
});
|
||
var require_git = __commonJS2({
|
||
"src/git.js"(exports, module2) {
|
||
var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));
|
||
var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));
|
||
var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));
|
||
var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
|
||
var {
|
||
asArray: asArray2,
|
||
filterArray: filterArray2,
|
||
filterPrimitives: filterPrimitives2,
|
||
filterString: filterString2,
|
||
filterStringOrStringArray: filterStringOrStringArray2,
|
||
filterType: filterType2,
|
||
getTrailingOptions: getTrailingOptions2,
|
||
trailingFunctionArgument: trailingFunctionArgument2,
|
||
trailingOptionsArgument: trailingOptionsArgument2
|
||
} = (init_utils(), __toCommonJS(utils_exports));
|
||
var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));
|
||
var {
|
||
branchTask: branchTask2,
|
||
branchLocalTask: branchLocalTask2,
|
||
deleteBranchesTask: deleteBranchesTask2,
|
||
deleteBranchTask: deleteBranchTask2
|
||
} = (init_branch(), __toCommonJS(branch_exports));
|
||
var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));
|
||
var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));
|
||
var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));
|
||
var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));
|
||
var { commitTask: commitTask2 } = (init_commit(), __toCommonJS(commit_exports));
|
||
var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));
|
||
var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));
|
||
var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));
|
||
var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));
|
||
var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));
|
||
var {
|
||
addRemoteTask: addRemoteTask2,
|
||
getRemotesTask: getRemotesTask2,
|
||
listRemotesTask: listRemotesTask2,
|
||
remoteTask: remoteTask2,
|
||
removeRemoteTask: removeRemoteTask2
|
||
} = (init_remote(), __toCommonJS(remote_exports));
|
||
var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));
|
||
var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));
|
||
var {
|
||
addSubModuleTask: addSubModuleTask2,
|
||
initSubModuleTask: initSubModuleTask2,
|
||
subModuleTask: subModuleTask2,
|
||
updateSubModuleTask: updateSubModuleTask2
|
||
} = (init_sub_module(), __toCommonJS(sub_module_exports));
|
||
var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));
|
||
var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));
|
||
function Git2(options, plugins) {
|
||
this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins);
|
||
this._trimmed = options.trimmed;
|
||
}
|
||
(Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;
|
||
Git2.prototype.customBinary = function(command) {
|
||
this._executor.binary = command;
|
||
return this;
|
||
};
|
||
Git2.prototype.env = function(name, value) {
|
||
if (arguments.length === 1 && typeof name === "object") {
|
||
this._executor.env = name;
|
||
} else {
|
||
(this._executor.env = this._executor.env || {})[name] = value;
|
||
}
|
||
return this;
|
||
};
|
||
Git2.prototype.stashList = function(options) {
|
||
return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments));
|
||
};
|
||
function createCloneTask(api, task, repoPath, localPath) {
|
||
if (typeof repoPath !== "string") {
|
||
return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);
|
||
}
|
||
return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));
|
||
}
|
||
Git2.prototype.clone = function() {
|
||
return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.mirror = function() {
|
||
return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.mv = function(from, to) {
|
||
return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.checkoutLatestTag = function(then) {
|
||
var git = this;
|
||
return this.pull(function() {
|
||
git.tags(function(err, tags) {
|
||
git.checkout(tags.latest, then);
|
||
});
|
||
});
|
||
};
|
||
Git2.prototype.pull = function(remote, branch, options, then) {
|
||
return this._runTask(pullTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.fetch = function(remote, branch) {
|
||
return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.silent = function(silence) {
|
||
console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3");
|
||
return this;
|
||
};
|
||
Git2.prototype.tags = function(options, then) {
|
||
return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.rebase = function() {
|
||
return this._runTask(straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.reset = function(mode) {
|
||
return this._runTask(resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.revert = function(commit) {
|
||
const next = trailingFunctionArgument2(arguments);
|
||
if (typeof commit !== "string") {
|
||
return this._runTask(configurationErrorTask2("Commit must be a string"), next);
|
||
}
|
||
return this._runTask(straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit]), next);
|
||
};
|
||
Git2.prototype.addTag = function(name) {
|
||
const task = typeof name === "string" ? addTagTask2(name) : configurationErrorTask2("Git.addTag requires a tag name");
|
||
return this._runTask(task, trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {
|
||
return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.checkout = function() {
|
||
const commands = ["checkout", ...getTrailingOptions2(arguments, true)];
|
||
return this._runTask(straightThroughStringTask2(commands), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.checkoutBranch = function(branchName, startPoint, then) {
|
||
return this.checkout(["-b", branchName, startPoint], trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.checkoutLocalBranch = function(branchName, then) {
|
||
return this.checkout(["-b", branchName], trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {
|
||
return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {
|
||
return this._runTask(deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.branch = function(options, then) {
|
||
return this._runTask(branchTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.branchLocal = function(then) {
|
||
return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.raw = function(commands) {
|
||
const createRestCommands = !Array.isArray(commands);
|
||
const command = [].slice.call(createRestCommands ? arguments : commands, 0);
|
||
for (let i = 0; i < command.length && createRestCommands; i++) {
|
||
if (!filterPrimitives2(command[i])) {
|
||
command.splice(i, command.length - i);
|
||
break;
|
||
}
|
||
}
|
||
command.push(...getTrailingOptions2(arguments, 0, true));
|
||
var next = trailingFunctionArgument2(arguments);
|
||
if (!command.length) {
|
||
return this._runTask(configurationErrorTask2("Raw: must supply one or more command to execute"), next);
|
||
}
|
||
return this._runTask(straightThroughStringTask2(command, this._trimmed), next);
|
||
};
|
||
Git2.prototype.submoduleAdd = function(repo, path2, then) {
|
||
return this._runTask(addSubModuleTask2(repo, path2), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.submoduleUpdate = function(args, then) {
|
||
return this._runTask(updateSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.submoduleInit = function(args, then) {
|
||
return this._runTask(initSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.subModule = function(options, then) {
|
||
return this._runTask(subModuleTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.listRemote = function() {
|
||
return this._runTask(listRemotesTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {
|
||
return this._runTask(addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.removeRemote = function(remoteName, then) {
|
||
return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.getRemotes = function(verbose, then) {
|
||
return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.remote = function(options, then) {
|
||
return this._runTask(remoteTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.tag = function(options, then) {
|
||
const command = getTrailingOptions2(arguments);
|
||
if (command[0] !== "tag") {
|
||
command.unshift("tag");
|
||
}
|
||
return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.updateServerInfo = function(then) {
|
||
return this._runTask(straightThroughStringTask2(["update-server-info"]), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.pushTags = function(remote, then) {
|
||
const task = pushTagsTask2({ remote: filterType2(remote, filterString2) }, getTrailingOptions2(arguments));
|
||
return this._runTask(task, trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.rm = function(files) {
|
||
return this._runTask(straightThroughStringTask2(["rm", "-f", ...asArray2(files)]), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.rmKeepLocal = function(files) {
|
||
return this._runTask(straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.catFile = function(options, then) {
|
||
return this._catFile("utf-8", arguments);
|
||
};
|
||
Git2.prototype.binaryCatFile = function() {
|
||
return this._catFile("buffer", arguments);
|
||
};
|
||
Git2.prototype._catFile = function(format, args) {
|
||
var handler = trailingFunctionArgument2(args);
|
||
var command = ["cat-file"];
|
||
var options = args[0];
|
||
if (typeof options === "string") {
|
||
return this._runTask(configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"), handler);
|
||
}
|
||
if (Array.isArray(options)) {
|
||
command.push.apply(command, options);
|
||
}
|
||
const task = format === "buffer" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);
|
||
return this._runTask(task, handler);
|
||
};
|
||
Git2.prototype.diff = function(options, then) {
|
||
const task = filterString2(options) ? configurationErrorTask2("git.diff: supplying options as a single string is no longer supported, switch to an array of strings") : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]);
|
||
return this._runTask(task, trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.diffSummary = function() {
|
||
return this._runTask(diffSummaryTask2(getTrailingOptions2(arguments, 1)), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.applyPatch = function(patches) {
|
||
const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(`git.applyPatch requires one or more string patches as the first argument`) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));
|
||
return this._runTask(task, trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.revparse = function() {
|
||
const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)];
|
||
return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.show = function(options, then) {
|
||
return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.clean = function(mode, options, then) {
|
||
const usingCleanOptionsArray = isCleanOptionsArray2(mode);
|
||
const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || "";
|
||
const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));
|
||
return this._runTask(cleanWithOptionsTask2(cleanMode, customArgs), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.exec = function(then) {
|
||
const task = {
|
||
commands: [],
|
||
format: "utf-8",
|
||
parser() {
|
||
if (typeof then === "function") {
|
||
then();
|
||
}
|
||
}
|
||
};
|
||
return this._runTask(task);
|
||
};
|
||
Git2.prototype.clearQueue = function() {
|
||
return this;
|
||
};
|
||
Git2.prototype.checkIgnore = function(pathnames, then) {
|
||
return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments));
|
||
};
|
||
Git2.prototype.checkIsRepo = function(checkType, then) {
|
||
return this._runTask(checkIsRepoTask2(filterType2(checkType, filterString2)), trailingFunctionArgument2(arguments));
|
||
};
|
||
module2.exports = Git2;
|
||
}
|
||
});
|
||
init_git_error();
|
||
var GitConstructError = class extends GitError {
|
||
constructor(config, message) {
|
||
super(void 0, message);
|
||
this.config = config;
|
||
}
|
||
};
|
||
init_git_error();
|
||
init_git_error();
|
||
var GitPluginError = class extends GitError {
|
||
constructor(task, plugin, message) {
|
||
super(task, message);
|
||
this.task = task;
|
||
this.plugin = plugin;
|
||
Object.setPrototypeOf(this, new.target.prototype);
|
||
}
|
||
};
|
||
init_git_response_error();
|
||
init_task_configuration_error();
|
||
init_check_is_repo();
|
||
init_clean();
|
||
init_config();
|
||
init_grep();
|
||
init_reset();
|
||
init_utils();
|
||
function commandConfigPrefixingPlugin(configuration) {
|
||
const prefix = prefixedArray(configuration, "-c");
|
||
return {
|
||
type: "spawn.args",
|
||
action(data) {
|
||
return [...prefix, ...data];
|
||
}
|
||
};
|
||
}
|
||
init_utils();
|
||
var never = (0, import_promise_deferred2.deferred)().promise;
|
||
function completionDetectionPlugin({
|
||
onClose = true,
|
||
onExit = 50
|
||
} = {}) {
|
||
function createEvents() {
|
||
let exitCode = -1;
|
||
const events = {
|
||
close: (0, import_promise_deferred2.deferred)(),
|
||
closeTimeout: (0, import_promise_deferred2.deferred)(),
|
||
exit: (0, import_promise_deferred2.deferred)(),
|
||
exitTimeout: (0, import_promise_deferred2.deferred)()
|
||
};
|
||
const result = Promise.race([
|
||
onClose === false ? never : events.closeTimeout.promise,
|
||
onExit === false ? never : events.exitTimeout.promise
|
||
]);
|
||
configureTimeout(onClose, events.close, events.closeTimeout);
|
||
configureTimeout(onExit, events.exit, events.exitTimeout);
|
||
return {
|
||
close(code) {
|
||
exitCode = code;
|
||
events.close.done();
|
||
},
|
||
exit(code) {
|
||
exitCode = code;
|
||
events.exit.done();
|
||
},
|
||
get exitCode() {
|
||
return exitCode;
|
||
},
|
||
result
|
||
};
|
||
}
|
||
function configureTimeout(flag, event, timeout) {
|
||
if (flag === false) {
|
||
return;
|
||
}
|
||
(flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);
|
||
}
|
||
return {
|
||
type: "spawn.after",
|
||
action(_0, _1) {
|
||
return __async2(this, arguments, function* (_data, { spawned, close }) {
|
||
var _a2, _b;
|
||
const events = createEvents();
|
||
let deferClose = true;
|
||
let quickClose = () => void (deferClose = false);
|
||
(_a2 = spawned.stdout) == null ? void 0 : _a2.on("data", quickClose);
|
||
(_b = spawned.stderr) == null ? void 0 : _b.on("data", quickClose);
|
||
spawned.on("error", quickClose);
|
||
spawned.on("close", (code) => events.close(code));
|
||
spawned.on("exit", (code) => events.exit(code));
|
||
try {
|
||
yield events.result;
|
||
if (deferClose) {
|
||
yield delay(50);
|
||
}
|
||
close(events.exitCode);
|
||
} catch (err) {
|
||
close(events.exitCode, err);
|
||
}
|
||
});
|
||
}
|
||
};
|
||
}
|
||
init_git_error();
|
||
function isTaskError(result) {
|
||
return !!(result.exitCode && result.stdErr.length);
|
||
}
|
||
function getErrorMessage(result) {
|
||
return Buffer.concat([...result.stdOut, ...result.stdErr]);
|
||
}
|
||
function errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {
|
||
return (error, result) => {
|
||
if (!overwrite && error || !isError(result)) {
|
||
return error;
|
||
}
|
||
return errorMessage(result);
|
||
};
|
||
}
|
||
function errorDetectionPlugin(config) {
|
||
return {
|
||
type: "task.error",
|
||
action(data, context) {
|
||
const error = config(data.error, {
|
||
stdErr: context.stdErr,
|
||
stdOut: context.stdOut,
|
||
exitCode: context.exitCode
|
||
});
|
||
if (Buffer.isBuffer(error)) {
|
||
return { error: new GitError(void 0, error.toString("utf-8")) };
|
||
}
|
||
return {
|
||
error
|
||
};
|
||
}
|
||
};
|
||
}
|
||
init_utils();
|
||
var PluginStore = class {
|
||
constructor() {
|
||
this.plugins = /* @__PURE__ */ new Set();
|
||
}
|
||
add(plugin) {
|
||
const plugins = [];
|
||
asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));
|
||
return () => {
|
||
plugins.forEach((plugin2) => this.plugins.delete(plugin2));
|
||
};
|
||
}
|
||
exec(type, data, context) {
|
||
let output = data;
|
||
const contextual = Object.freeze(Object.create(context));
|
||
for (const plugin of this.plugins) {
|
||
if (plugin.type === type) {
|
||
output = plugin.action(output, contextual);
|
||
}
|
||
}
|
||
return output;
|
||
}
|
||
};
|
||
init_utils();
|
||
function progressMonitorPlugin(progress) {
|
||
const progressCommand = "--progress";
|
||
const progressMethods = ["checkout", "clone", "fetch", "pull", "push"];
|
||
const onProgress = {
|
||
type: "spawn.after",
|
||
action(_data, context) {
|
||
var _a2;
|
||
if (!context.commands.includes(progressCommand)) {
|
||
return;
|
||
}
|
||
(_a2 = context.spawned.stderr) == null ? void 0 : _a2.on("data", (chunk) => {
|
||
const message = /^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(chunk.toString("utf8"));
|
||
if (!message) {
|
||
return;
|
||
}
|
||
progress({
|
||
method: context.method,
|
||
stage: progressEventStage(message[1]),
|
||
progress: asNumber(message[2]),
|
||
processed: asNumber(message[3]),
|
||
total: asNumber(message[4])
|
||
});
|
||
});
|
||
}
|
||
};
|
||
const onArgs = {
|
||
type: "spawn.args",
|
||
action(args, context) {
|
||
if (!progressMethods.includes(context.method)) {
|
||
return args;
|
||
}
|
||
return including(args, progressCommand);
|
||
}
|
||
};
|
||
return [onArgs, onProgress];
|
||
}
|
||
function progressEventStage(input) {
|
||
return String(input.toLowerCase().split(" ", 1)) || "unknown";
|
||
}
|
||
init_utils();
|
||
function spawnOptionsPlugin(spawnOptions) {
|
||
const options = pick(spawnOptions, ["uid", "gid"]);
|
||
return {
|
||
type: "spawn.options",
|
||
action(data) {
|
||
return __spreadValues2(__spreadValues2({}, options), data);
|
||
}
|
||
};
|
||
}
|
||
function timeoutPlugin({
|
||
block
|
||
}) {
|
||
if (block > 0) {
|
||
return {
|
||
type: "spawn.after",
|
||
action(_data, context) {
|
||
var _a2, _b;
|
||
let timeout;
|
||
function wait3() {
|
||
timeout && clearTimeout(timeout);
|
||
timeout = setTimeout(kill, block);
|
||
}
|
||
function stop() {
|
||
var _a3, _b2;
|
||
(_a3 = context.spawned.stdout) == null ? void 0 : _a3.off("data", wait3);
|
||
(_b2 = context.spawned.stderr) == null ? void 0 : _b2.off("data", wait3);
|
||
context.spawned.off("exit", stop);
|
||
context.spawned.off("close", stop);
|
||
timeout && clearTimeout(timeout);
|
||
}
|
||
function kill() {
|
||
stop();
|
||
context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`));
|
||
}
|
||
(_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait3);
|
||
(_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait3);
|
||
context.spawned.on("exit", stop);
|
||
context.spawned.on("close", stop);
|
||
wait3();
|
||
}
|
||
};
|
||
}
|
||
}
|
||
init_utils();
|
||
var Git = require_git();
|
||
function gitInstanceFactory(baseDir, options) {
|
||
const plugins = new PluginStore();
|
||
const config = createInstanceConfig(baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {}, options);
|
||
if (!folderExists(config.baseDir)) {
|
||
throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`);
|
||
}
|
||
if (Array.isArray(config.config)) {
|
||
plugins.add(commandConfigPrefixingPlugin(config.config));
|
||
}
|
||
plugins.add(completionDetectionPlugin(config.completion));
|
||
config.progress && plugins.add(progressMonitorPlugin(config.progress));
|
||
config.timeout && plugins.add(timeoutPlugin(config.timeout));
|
||
config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));
|
||
plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));
|
||
config.errors && plugins.add(errorDetectionPlugin(config.errors));
|
||
return new Git(config, plugins);
|
||
}
|
||
init_git_response_error();
|
||
var esm_default = gitInstanceFactory;
|
||
|
||
// src/types.ts
|
||
var PluginState;
|
||
(function(PluginState2) {
|
||
PluginState2[PluginState2["idle"] = 0] = "idle";
|
||
PluginState2[PluginState2["status"] = 1] = "status";
|
||
PluginState2[PluginState2["pull"] = 2] = "pull";
|
||
PluginState2[PluginState2["add"] = 3] = "add";
|
||
PluginState2[PluginState2["commit"] = 4] = "commit";
|
||
PluginState2[PluginState2["push"] = 5] = "push";
|
||
PluginState2[PluginState2["conflicted"] = 6] = "conflicted";
|
||
})(PluginState || (PluginState = {}));
|
||
var FileType;
|
||
(function(FileType2) {
|
||
FileType2[FileType2["staged"] = 0] = "staged";
|
||
FileType2[FileType2["changed"] = 1] = "changed";
|
||
FileType2[FileType2["pulled"] = 2] = "pulled";
|
||
})(FileType || (FileType = {}));
|
||
|
||
// src/simpleGit.ts
|
||
var SimpleGit = class extends GitManager {
|
||
constructor(plugin) {
|
||
super(plugin);
|
||
}
|
||
setGitInstance(ignoreError = false) {
|
||
return __async(this, null, function* () {
|
||
if (this.isGitInstalled()) {
|
||
const adapter = this.app.vault.adapter;
|
||
const path2 = adapter.getBasePath();
|
||
let basePath = path2;
|
||
if (this.plugin.settings.basePath) {
|
||
const exists2 = yield adapter.exists((0, import_obsidian.normalizePath)(this.plugin.settings.basePath));
|
||
if (exists2) {
|
||
basePath = path2 + import_path.sep + this.plugin.settings.basePath;
|
||
} else if (!ignoreError) {
|
||
new import_obsidian.Notice("ObsidianGit: Base path does not exist");
|
||
}
|
||
}
|
||
this.git = esm_default({
|
||
baseDir: basePath,
|
||
binary: this.plugin.localStorage.getGitPath() || void 0,
|
||
config: ["core.quotepath=off"]
|
||
});
|
||
this.git.cwd(yield this.git.revparse("--show-toplevel"));
|
||
}
|
||
});
|
||
}
|
||
status() {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.status);
|
||
const status = yield this.git.status((err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
return {
|
||
changed: status.files.filter((e) => e.working_dir !== " ").map((e) => {
|
||
const res = this.formatPath(e);
|
||
return {
|
||
path: res.path,
|
||
from: res.from,
|
||
working_dir: e.working_dir === "?" ? "U" : e.working_dir,
|
||
vault_path: this.getVaultPath(res.path)
|
||
};
|
||
}),
|
||
staged: status.files.filter((e) => e.index !== " " && e.index != "?").map((e) => {
|
||
const res = this.formatPath(e, e.index === "R");
|
||
return {
|
||
path: res.path,
|
||
from: res.from,
|
||
index: e.index,
|
||
vault_path: this.getVaultPath(res.path)
|
||
};
|
||
}),
|
||
conflicted: status.conflicted.map((e) => this.formatPath({
|
||
path: e,
|
||
from: void 0,
|
||
index: void 0,
|
||
working_dir: void 0
|
||
}).path)
|
||
};
|
||
});
|
||
}
|
||
formatPath(path2, renamed = false) {
|
||
function format(path3) {
|
||
if (path3 == void 0)
|
||
return void 0;
|
||
if (path3.startsWith('"') && path3.endsWith('"')) {
|
||
return path3.substring(1, path3.length - 1);
|
||
} else {
|
||
return path3;
|
||
}
|
||
}
|
||
if (renamed) {
|
||
return {
|
||
from: format(path2.from),
|
||
path: format(path2.path)
|
||
};
|
||
} else {
|
||
return {
|
||
path: format(path2.path)
|
||
};
|
||
}
|
||
}
|
||
commitAll(_0) {
|
||
return __async(this, arguments, function* ({ message }) {
|
||
if (this.plugin.settings.updateSubmodules) {
|
||
this.plugin.setState(PluginState.commit);
|
||
yield new Promise((resolve, reject) => __async(this, null, function* () {
|
||
this.git.outputHandler((cmd, stdout, stderr, args) => __async(this, null, function* () {
|
||
if (!(args.contains("submodule") && args.contains("foreach")))
|
||
return;
|
||
let body = "";
|
||
let root = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : "");
|
||
stdout.on("data", (chunk) => {
|
||
body += chunk.toString("utf8");
|
||
});
|
||
stdout.on("end", () => __async(this, null, function* () {
|
||
let submods = body.split("\n");
|
||
submods = submods.map((i) => {
|
||
let submod = i.match(/'([^']*)'/);
|
||
if (submod != void 0) {
|
||
return root + "/" + submod[1] + import_path.sep;
|
||
}
|
||
});
|
||
submods.reverse();
|
||
for (const item of submods) {
|
||
if (item != void 0) {
|
||
yield this.git.cwd({ path: item, root: false }).add("-A", (err) => this.onError(err));
|
||
yield this.git.cwd({ path: item, root: false }).commit(yield this.formatCommitMessage(message), (err) => this.onError(err));
|
||
}
|
||
}
|
||
resolve();
|
||
}));
|
||
}));
|
||
yield this.git.subModule(["foreach", "--recursive", ""]);
|
||
this.git.outputHandler(() => {
|
||
});
|
||
}));
|
||
}
|
||
this.plugin.setState(PluginState.add);
|
||
yield this.git.add("-A", (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.commit);
|
||
return (yield this.git.commit(yield this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes;
|
||
});
|
||
}
|
||
commit(message) {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.commit);
|
||
const res = (yield this.git.commit(yield this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes;
|
||
this.plugin.setState(PluginState.idle);
|
||
return res;
|
||
});
|
||
}
|
||
stage(path2, relativeToVault) {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.add);
|
||
path2 = this.getPath(path2, relativeToVault);
|
||
yield this.git.add(["--", path2], (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
});
|
||
}
|
||
stageAll(_0) {
|
||
return __async(this, arguments, function* ({ dir }) {
|
||
this.plugin.setState(PluginState.add);
|
||
yield this.git.add(dir != null ? dir : "-A", (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
});
|
||
}
|
||
unstageAll() {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.add);
|
||
yield this.git.reset([], (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
});
|
||
}
|
||
unstage(path2, relativeToVault) {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.add);
|
||
path2 = this.getPath(path2, relativeToVault);
|
||
yield this.git.reset(["--", path2], (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
});
|
||
}
|
||
discard(filepath) {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.add);
|
||
yield this.git.checkout(["--", filepath], (err) => this.onError(err));
|
||
this.plugin.setState(PluginState.idle);
|
||
});
|
||
}
|
||
pull() {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.pull);
|
||
if (this.plugin.settings.updateSubmodules)
|
||
yield this.git.subModule(["update", "--remote", "--merge", "--recursive"], (err) => this.onError(err));
|
||
const branchInfo = yield this.branchInfo();
|
||
const localCommit = yield this.git.revparse([branchInfo.current], (err) => this.onError(err));
|
||
yield this.git.fetch((err) => this.onError(err));
|
||
const upstreamCommit = yield this.git.revparse([branchInfo.tracking], (err) => this.onError(err));
|
||
if (localCommit !== upstreamCommit) {
|
||
if (this.plugin.settings.syncMethod === "merge" || this.plugin.settings.syncMethod === "rebase") {
|
||
try {
|
||
switch (this.plugin.settings.syncMethod) {
|
||
case "merge":
|
||
yield this.git.merge([branchInfo.tracking]);
|
||
break;
|
||
case "rebase":
|
||
yield this.git.rebase([branchInfo.tracking]);
|
||
}
|
||
} catch (err) {
|
||
this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${err.message}`);
|
||
return;
|
||
}
|
||
} else if (this.plugin.settings.syncMethod === "reset") {
|
||
try {
|
||
yield this.git.raw(["update-ref", `refs/heads/${branchInfo.current}`, upstreamCommit], (err) => this.onError(err));
|
||
yield this.unstageAll();
|
||
} catch (err) {
|
||
this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${err.message}`);
|
||
}
|
||
}
|
||
const afterMergeCommit = yield this.git.revparse([branchInfo.current], (err) => this.onError(err));
|
||
const filesChanged = yield this.git.diff([`${localCommit}..${afterMergeCommit}`, "--name-only"]);
|
||
return filesChanged.split(/\r\n|\r|\n/).filter((value) => value.length > 0).map((e) => {
|
||
return {
|
||
path: e,
|
||
working_dir: "P",
|
||
vault_path: this.getVaultPath(e)
|
||
};
|
||
});
|
||
} else {
|
||
return [];
|
||
}
|
||
});
|
||
}
|
||
push() {
|
||
return __async(this, null, function* () {
|
||
this.plugin.setState(PluginState.status);
|
||
const status = yield this.git.status();
|
||
const trackingBranch = status.tracking;
|
||
const currentBranch = status.current;
|
||
const remoteChangedFiles = (yield this.git.diffSummary([currentBranch, trackingBranch], (err) => this.onError(err))).changed;
|
||
this.plugin.setState(PluginState.push);
|
||
if (this.plugin.settings.updateSubmodules) {
|
||
yield this.git.env(__spreadProps(__spreadValues({}, process.env), { "OBSIDIAN_GIT": 1 })).subModule(["foreach", "--recursive", `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`], (err) => this.onError(err));
|
||
}
|
||
yield this.git.env(__spreadProps(__spreadValues({}, process.env), { "OBSIDIAN_GIT": 1 })).push((err) => this.onError(err));
|
||
return remoteChangedFiles;
|
||
});
|
||
}
|
||
canPush() {
|
||
return __async(this, null, function* () {
|
||
if (this.plugin.settings.updateSubmodules === true) {
|
||
return true;
|
||
}
|
||
const status = yield this.git.status((err) => this.onError(err));
|
||
const trackingBranch = status.tracking;
|
||
const currentBranch = status.current;
|
||
const remoteChangedFiles = (yield this.git.diffSummary([currentBranch, trackingBranch])).changed;
|
||
return remoteChangedFiles !== 0;
|
||
});
|
||
}
|
||
checkRequirements() {
|
||
return __async(this, null, function* () {
|
||
if (!this.isGitInstalled()) {
|
||
return "missing-git";
|
||
}
|
||
if (!(yield this.git.checkIsRepo())) {
|
||
return "missing-repo";
|
||
}
|
||
return "valid";
|
||
});
|
||
}
|
||
branchInfo() {
|
||
return __async(this, null, function* () {
|
||
const status = yield this.git.status((err) => this.onError(err));
|
||
const branches = yield this.git.branch(["--no-color"], (err) => this.onError(err));
|
||
return {
|
||
current: status.current,
|
||
tracking: status.tracking,
|
||
branches: branches.all
|
||
};
|
||
});
|
||
}
|
||
getRemoteUrl(remote) {
|
||
return __async(this, null, function* () {
|
||
return (yield this.git.remote(["get-url", remote], (err, url) => this.onError(err))) || void 0;
|
||
});
|
||
}
|
||
log(file, relativeToVault = true) {
|
||
return __async(this, null, function* () {
|
||
const path2 = this.getPath(file, relativeToVault);
|
||
const res = yield this.git.log({ file: path2 }, (err) => this.onError(err));
|
||
return res.all;
|
||
});
|
||
}
|
||
show(commitHash, file, relativeToVault = true) {
|
||
return __async(this, null, function* () {
|
||
const path2 = this.getPath(file, relativeToVault);
|
||
return this.git.show([commitHash + ":" + path2], (err) => this.onError(err));
|
||
});
|
||
}
|
||
checkout(branch) {
|
||
return __async(this, null, function* () {
|
||
yield this.git.checkout(branch, (err) => this.onError(err));
|
||
});
|
||
}
|
||
init() {
|
||
return __async(this, null, function* () {
|
||
yield this.git.init(false, (err) => this.onError(err));
|
||
});
|
||
}
|
||
clone(url, dir) {
|
||
return __async(this, null, function* () {
|
||
yield this.git.clone(url, path.join(this.app.vault.adapter.getBasePath(), dir), [], (err) => this.onError(err));
|
||
});
|
||
}
|
||
setConfig(path2, value) {
|
||
return __async(this, null, function* () {
|
||
yield this.git.addConfig(path2, value, (err) => this.onError(err));
|
||
});
|
||
}
|
||
getConfig(path2) {
|
||
return __async(this, null, function* () {
|
||
const config = yield this.git.listConfig((err) => this.onError(err));
|
||
return config.all[path2];
|
||
});
|
||
}
|
||
fetch(remote) {
|
||
return __async(this, null, function* () {
|
||
yield this.git.fetch(remote != void 0 ? [remote] : [], (err) => this.onError(err));
|
||
});
|
||
}
|
||
setRemote(name, url) {
|
||
return __async(this, null, function* () {
|
||
if ((yield this.getRemotes()).includes(name))
|
||
yield this.git.remote(["set-url", name, url], (err) => this.onError(err));
|
||
else {
|
||
yield this.git.remote(["add", name, url], (err) => this.onError(err));
|
||
}
|
||
});
|
||
}
|
||
getRemoteBranches(remote) {
|
||
return __async(this, null, function* () {
|
||
const res = yield this.git.branch(["-r", "--list", `${remote}*`], (err) => this.onError(err));
|
||
console.log(remote);
|
||
console.log(res);
|
||
const list = [];
|
||
for (var item in res.branches) {
|
||
list.push(res.branches[item].name);
|
||
}
|
||
return list;
|
||
});
|
||
}
|
||
getRemotes() {
|
||
return __async(this, null, function* () {
|
||
const res = yield this.git.remote([], (err) => this.onError(err));
|
||
if (res) {
|
||
return res.trim().split("\n");
|
||
} else {
|
||
return [];
|
||
}
|
||
});
|
||
}
|
||
removeRemote(remoteName) {
|
||
return __async(this, null, function* () {
|
||
yield this.git.removeRemote(remoteName);
|
||
});
|
||
}
|
||
updateUpstreamBranch(remoteBranch) {
|
||
return __async(this, null, function* () {
|
||
try {
|
||
yield this.git.branch(["--set-upstream-to", remoteBranch]);
|
||
} catch (e) {
|
||
console.error(e);
|
||
try {
|
||
yield this.git.branch(["--set-upstream", remoteBranch]);
|
||
} catch (e2) {
|
||
console.error(e2);
|
||
yield this.git.push(["--set-upstream", ...remoteBranch.split("/")], (err) => this.onError(err));
|
||
}
|
||
}
|
||
});
|
||
}
|
||
updateGitPath(gitPath) {
|
||
this.setGitInstance();
|
||
}
|
||
updateBasePath(basePath) {
|
||
this.setGitInstance(true);
|
||
}
|
||
getDiffString(filePath, stagedChanges = false) {
|
||
return __async(this, null, function* () {
|
||
if (stagedChanges)
|
||
return yield this.git.diff(["--cached", "--", filePath]);
|
||
else
|
||
return yield this.git.diff(["--", filePath]);
|
||
});
|
||
}
|
||
diff(file, commit1, commit2) {
|
||
return __async(this, null, function* () {
|
||
return yield this.git.diff([`${commit1}..${commit2}`, "--", file]);
|
||
});
|
||
}
|
||
isGitInstalled() {
|
||
const command = (0, import_child_process2.spawnSync)(this.plugin.localStorage.getGitPath() || "git", ["--version"], {
|
||
stdio: "ignore"
|
||
});
|
||
if (command.error) {
|
||
console.error(command.error);
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
onError(error) {
|
||
if (error) {
|
||
let networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/);
|
||
if (!networkFailure) {
|
||
this.plugin.displayError(error.message);
|
||
this.plugin.setState(PluginState.idle);
|
||
} else if (!this.plugin.offlineMode) {
|
||
this.plugin.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.", 2e3);
|
||
}
|
||
if (networkFailure) {
|
||
this.plugin.offlineMode = true;
|
||
this.plugin.setState(PluginState.idle);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
// src/settings.ts
|
||
var ObsidianGitSettingsTab = class extends import_obsidian2.PluginSettingTab {
|
||
display() {
|
||
let { containerEl } = this;
|
||
const plugin = this.plugin;
|
||
const commitOrBackup = plugin.settings.differentIntervalCommitAndPush ? "commit" : "backup";
|
||
const gitReady = plugin.gitReady;
|
||
containerEl.empty();
|
||
containerEl.createEl("h2", { text: "Git Backup settings" });
|
||
if (!gitReady) {
|
||
containerEl.createEl("p", { text: "Git is not ready. When all settings are correct you can configure auto backup, etc." });
|
||
}
|
||
if (gitReady) {
|
||
containerEl.createEl("br");
|
||
containerEl.createEl("h3", { text: "Automatic" });
|
||
new import_obsidian2.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle((toggle) => toggle.setValue(plugin.settings.differentIntervalCommitAndPush).onChange((value) => {
|
||
plugin.settings.differentIntervalCommitAndPush = value;
|
||
plugin.saveSettings();
|
||
plugin.clearAutoBackup();
|
||
plugin.clearAutoPush();
|
||
if (plugin.settings.autoSaveInterval > 0) {
|
||
plugin.startAutoBackup(plugin.settings.autoSaveInterval);
|
||
}
|
||
if (value && plugin.settings.autoPushInterval > 0) {
|
||
plugin.startAutoPush(plugin.settings.autoPushInterval);
|
||
}
|
||
this.display();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName(`Vault ${commitOrBackup} interval (minutes)`).setDesc(`${plugin.settings.differentIntervalCommitAndPush ? "Commit" : "Commit and push"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText((text2) => text2.setValue(String(plugin.settings.autoSaveInterval)).onChange((value) => {
|
||
if (!isNaN(Number(value))) {
|
||
plugin.settings.autoSaveInterval = Number(value);
|
||
plugin.saveSettings();
|
||
if (plugin.settings.autoSaveInterval > 0) {
|
||
plugin.clearAutoBackup();
|
||
plugin.startAutoBackup(plugin.settings.autoSaveInterval);
|
||
new import_obsidian2.Notice(`Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.`);
|
||
} else if (plugin.settings.autoSaveInterval <= 0) {
|
||
plugin.clearAutoBackup() && new import_obsidian2.Notice(`Automatic ${commitOrBackup} disabled!`);
|
||
}
|
||
} else {
|
||
new import_obsidian2.Notice("Please specify a valid number.");
|
||
}
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName(`If turned on, do auto ${commitOrBackup} every X minutes after last change. Prevents auto ${commitOrBackup} while editing a file. If turned off, do auto ${commitOrBackup} every X minutes. It's independent from last change.`).addToggle((toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => {
|
||
plugin.settings.autoBackupAfterFileChange = value;
|
||
plugin.saveSettings();
|
||
plugin.clearAutoBackup();
|
||
if (plugin.settings.autoSaveInterval > 0) {
|
||
plugin.startAutoBackup(plugin.settings.autoSaveInterval);
|
||
}
|
||
}));
|
||
if (plugin.settings.differentIntervalCommitAndPush) {
|
||
new import_obsidian2.Setting(containerEl).setName(`Vault push interval (minutes)`).setDesc("Push changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPushInterval)).onChange((value) => {
|
||
if (!isNaN(Number(value))) {
|
||
plugin.settings.autoPushInterval = Number(value);
|
||
plugin.saveSettings();
|
||
if (plugin.settings.autoPushInterval > 0) {
|
||
plugin.clearAutoPush();
|
||
plugin.startAutoPush(plugin.settings.autoPushInterval);
|
||
new import_obsidian2.Notice(`Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.`);
|
||
} else if (plugin.settings.autoPushInterval <= 0) {
|
||
plugin.clearAutoPush() && new import_obsidian2.Notice("Automatic push disabled!");
|
||
}
|
||
} else {
|
||
new import_obsidian2.Notice("Please specify a valid number.");
|
||
}
|
||
}));
|
||
}
|
||
new import_obsidian2.Setting(containerEl).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPullInterval)).onChange((value) => {
|
||
if (!isNaN(Number(value))) {
|
||
plugin.settings.autoPullInterval = Number(value);
|
||
plugin.saveSettings();
|
||
if (plugin.settings.autoPullInterval > 0) {
|
||
plugin.clearAutoPull();
|
||
plugin.startAutoPull(plugin.settings.autoPullInterval);
|
||
new import_obsidian2.Notice(`Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.`);
|
||
} else if (plugin.settings.autoPullInterval <= 0) {
|
||
plugin.clearAutoPull() && new import_obsidian2.Notice("Automatic pull disabled!");
|
||
}
|
||
} else {
|
||
new import_obsidian2.Notice("Please specify a valid number.");
|
||
}
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.commitMessage ? plugin.settings.commitMessage : "").onChange((value) => {
|
||
plugin.settings.commitMessage = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Specify custom commit message on auto backup").setDesc("You will get a pop up to specify your message").addToggle((toggle) => toggle.setValue(plugin.settings.customMessageOnAutoBackup).onChange((value) => {
|
||
plugin.settings.customMessageOnAutoBackup = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => {
|
||
plugin.settings.autoCommitMessage = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
containerEl.createEl("br");
|
||
containerEl.createEl("h3", { text: "Commit message" });
|
||
new import_obsidian2.Setting(containerEl).setName("{{date}} placeholder format").setDesc('Specify custom date format. E.g. "YYYY-MM-DD HH:mm:ss"').addText((text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange((value) => __async(this, null, function* () {
|
||
plugin.settings.commitDateFormat = value;
|
||
yield plugin.saveSettings();
|
||
})));
|
||
new import_obsidian2.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText((text2) => text2.setValue(plugin.localStorage.getHostname()).onChange((value) => __async(this, null, function* () {
|
||
plugin.localStorage.setHostname(value);
|
||
})));
|
||
new import_obsidian2.Setting(containerEl).setName("Preview commit message").addButton((button) => button.setButtonText("Preview").onClick(() => __async(this, null, function* () {
|
||
let commitMessagePreview = yield plugin.gitManager.formatCommitMessage(plugin.settings.commitMessage);
|
||
new import_obsidian2.Notice(`${commitMessagePreview}`);
|
||
})));
|
||
new import_obsidian2.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle((toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => {
|
||
plugin.settings.listChangedFilesInMessageBody = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
containerEl.createEl("br");
|
||
containerEl.createEl("h3", { text: "Backup" });
|
||
if (plugin.gitManager instanceof SimpleGit)
|
||
new import_obsidian2.Setting(containerEl).setName("Sync Method").setDesc("Selects the method used for handling new changes found in your remote git repository.").addDropdown((dropdown) => {
|
||
const options = {
|
||
"merge": "Merge",
|
||
"rebase": "Rebase",
|
||
"reset": "Other sync service (Only updates the HEAD without touching the working directory)"
|
||
};
|
||
dropdown.addOptions(options);
|
||
dropdown.setValue(plugin.settings.syncMethod);
|
||
dropdown.onChange((option) => __async(this, null, function* () {
|
||
plugin.settings.syncMethod = option;
|
||
plugin.saveSettings();
|
||
}));
|
||
});
|
||
new import_obsidian2.Setting(containerEl).setName("Pull updates on startup").setDesc("Automatically pull updates when Obsidian starts").addToggle((toggle) => toggle.setValue(plugin.settings.autoPullOnBoot).onChange((value) => {
|
||
plugin.settings.autoPullOnBoot = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Push on backup").setDesc("Disable to only commit changes").addToggle((toggle) => toggle.setValue(!plugin.settings.disablePush).onChange((value) => {
|
||
plugin.settings.disablePush = !value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Pull changes before push").setDesc("Commit -> pull -> push (Only if pushing is enabled)").addToggle((toggle) => toggle.setValue(plugin.settings.pullBeforePush).onChange((value) => {
|
||
plugin.settings.pullBeforePush = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
}
|
||
containerEl.createEl("br");
|
||
containerEl.createEl("h3", { text: "Miscellaneous" });
|
||
if (gitReady)
|
||
new import_obsidian2.Setting(containerEl).setName("Current branch").setDesc("Switch to a different branch").addDropdown((dropdown) => __async(this, null, function* () {
|
||
const branchInfo = yield plugin.gitManager.branchInfo();
|
||
for (const branch of branchInfo.branches) {
|
||
dropdown.addOption(branch, branch);
|
||
}
|
||
dropdown.setValue(branchInfo.current);
|
||
dropdown.onChange((option) => __async(this, null, function* () {
|
||
yield plugin.gitManager.checkout(option);
|
||
new import_obsidian2.Notice(`Checked out to ${option}`);
|
||
}));
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Automatically refresh Source Control View on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option").addToggle((toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => {
|
||
plugin.settings.refreshSourceControl = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Disable notifications").setDesc("Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting").addToggle((toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => {
|
||
plugin.settings.disablePopups = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showStatusBar).onChange((value) => {
|
||
plugin.settings.showStatusBar = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Show changes files count in status bar").addToggle((toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => {
|
||
plugin.settings.changedFilesInStatusBar = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
containerEl.createEl("br");
|
||
containerEl.createEl("h3", { text: "Advanced" });
|
||
if (plugin.gitManager instanceof SimpleGit)
|
||
new import_obsidian2.Setting(containerEl).setName("Update submodules").setDesc('"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule').addToggle((toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => {
|
||
plugin.settings.updateSubmodules = value;
|
||
plugin.saveSettings();
|
||
}));
|
||
if (plugin.gitManager instanceof SimpleGit)
|
||
new import_obsidian2.Setting(containerEl).setName("Custom Git binary path").addText((cb) => {
|
||
cb.setValue(plugin.localStorage.getGitPath());
|
||
cb.setPlaceholder("git");
|
||
cb.onChange((value) => {
|
||
plugin.localStorage.setGitPath(value);
|
||
plugin.gitManager.updateGitPath(value || "git");
|
||
});
|
||
});
|
||
if (plugin.gitManager instanceof IsomorphicGit)
|
||
new import_obsidian2.Setting(containerEl).setName("Username on your git server. E.g. your username on GitHub").addText((cb) => {
|
||
cb.setValue(plugin.settings.username);
|
||
cb.onChange((value) => {
|
||
plugin.settings.username = value;
|
||
plugin.saveSettings();
|
||
});
|
||
});
|
||
if (plugin.gitManager instanceof IsomorphicGit)
|
||
new import_obsidian2.Setting(containerEl).setName("Password/Personal access token").setDesc("Type in your password and press on the button to set it. You won't be able to see it again.").addText((cb) => {
|
||
cb.inputEl.autocapitalize = "off";
|
||
cb.inputEl.autocomplete = "off";
|
||
cb.inputEl.spellcheck = false;
|
||
cb.onChange((value) => {
|
||
plugin.localStorage.setPassword(value);
|
||
});
|
||
});
|
||
if (gitReady)
|
||
new import_obsidian2.Setting(containerEl).setName("Author name for commit").addText((cb) => __async(this, null, function* () {
|
||
cb.setValue(yield plugin.gitManager.getConfig("user.name"));
|
||
cb.onChange((value) => {
|
||
plugin.gitManager.setConfig("user.name", value);
|
||
});
|
||
}));
|
||
if (gitReady)
|
||
new import_obsidian2.Setting(containerEl).setName("Author email for commit").addText((cb) => __async(this, null, function* () {
|
||
cb.setValue(yield plugin.gitManager.getConfig("user.email"));
|
||
cb.onChange((value) => {
|
||
plugin.gitManager.setConfig("user.email", value);
|
||
});
|
||
}));
|
||
new import_obsidian2.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc(`
|
||
Sets the relative path to the vault from which the Git binary should be executed.
|
||
Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows.
|
||
`).addText((cb) => {
|
||
cb.setValue(plugin.settings.basePath);
|
||
cb.setPlaceholder("directory/directory-with-git-repo");
|
||
cb.onChange((value) => {
|
||
plugin.settings.basePath = value;
|
||
plugin.saveSettings();
|
||
plugin.gitManager.updateBasePath(value || "");
|
||
});
|
||
});
|
||
new import_obsidian2.Setting(containerEl).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton((bt) => {
|
||
bt.buttonEl.outerHTML = "<a href='https://ko-fi.com/F1F195IQ5' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi3.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>";
|
||
});
|
||
const info = containerEl.createDiv();
|
||
info.setAttr("align", "center");
|
||
info.setText("Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with");
|
||
const keys = containerEl.createDiv();
|
||
keys.setAttr("align", "center");
|
||
keys.addClass("obsidian-git-shortcuts");
|
||
if (import_obsidian2.Platform.isMacOS === true) {
|
||
keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" });
|
||
} else {
|
||
keys.createEl("kbd", { text: "CTRL + SHIFT + I" });
|
||
}
|
||
}
|
||
};
|
||
|
||
// src/statusBar.ts
|
||
var import_obsidian3 = __toModule(require("obsidian"));
|
||
var StatusBar = class {
|
||
constructor(statusBarEl, plugin) {
|
||
this.statusBarEl = statusBarEl;
|
||
this.plugin = plugin;
|
||
this.messages = [];
|
||
this.base = "obsidian-git-statusbar-";
|
||
this.statusBarEl.setAttribute("aria-label-position", "top");
|
||
}
|
||
displayMessage(message, timeout) {
|
||
this.messages.push({
|
||
message: `Git: ${message.slice(0, 100)}`,
|
||
timeout
|
||
});
|
||
this.display();
|
||
}
|
||
display() {
|
||
if (this.messages.length > 0 && !this.currentMessage) {
|
||
this.currentMessage = this.messages.shift();
|
||
this.statusBarEl.addClass(this.base + "message");
|
||
this.statusBarEl.ariaLabel = "";
|
||
this.statusBarEl.setText(this.currentMessage.message);
|
||
this.lastMessageTimestamp = Date.now();
|
||
} else if (this.currentMessage) {
|
||
const messageAge = Date.now() - this.lastMessageTimestamp;
|
||
if (messageAge >= this.currentMessage.timeout) {
|
||
this.currentMessage = null;
|
||
this.lastMessageTimestamp = null;
|
||
}
|
||
} else {
|
||
this.displayState();
|
||
}
|
||
}
|
||
displayState() {
|
||
if (this.statusBarEl.getText().length > 3 || !this.statusBarEl.hasChildNodes()) {
|
||
this.statusBarEl.empty();
|
||
this.iconEl = this.statusBarEl.createDiv();
|
||
this.textEl = this.statusBarEl.createDiv();
|
||
this.textEl.style.float = "right";
|
||
this.textEl.style.marginLeft = "5px";
|
||
this.iconEl.style.float = "left";
|
||
}
|
||
switch (this.plugin.state) {
|
||
case PluginState.idle:
|
||
this.displayFromNow(this.plugin.lastUpdate);
|
||
break;
|
||
case PluginState.status:
|
||
this.statusBarEl.ariaLabel = "Checking repository status...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "refresh-cw");
|
||
this.statusBarEl.addClass(this.base + "status");
|
||
break;
|
||
case PluginState.add:
|
||
this.statusBarEl.ariaLabel = "Adding files...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "refresh-w");
|
||
this.statusBarEl.addClass(this.base + "add");
|
||
break;
|
||
case PluginState.commit:
|
||
this.statusBarEl.ariaLabel = "Committing changes...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "git-commit");
|
||
this.statusBarEl.addClass(this.base + "commit");
|
||
break;
|
||
case PluginState.push:
|
||
this.statusBarEl.ariaLabel = "Pushing changes...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "upload");
|
||
this.statusBarEl.addClass(this.base + "push");
|
||
break;
|
||
case PluginState.pull:
|
||
this.statusBarEl.ariaLabel = "Pulling changes...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "download");
|
||
this.statusBarEl.addClass(this.base + "pull");
|
||
break;
|
||
case PluginState.conflicted:
|
||
this.statusBarEl.ariaLabel = "You have conflict files...";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "alert-circle");
|
||
this.statusBarEl.addClass(this.base + "conflict");
|
||
break;
|
||
default:
|
||
this.statusBarEl.ariaLabel = "Failed on initialization!";
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "alert-triangle");
|
||
this.statusBarEl.addClass(this.base + "failed-init");
|
||
break;
|
||
}
|
||
}
|
||
displayFromNow(timestamp) {
|
||
if (timestamp) {
|
||
const moment = window.moment;
|
||
const fromNow = moment(timestamp).fromNow();
|
||
this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Git update: ${fromNow}`;
|
||
} else {
|
||
this.statusBarEl.ariaLabel = this.plugin.offlineMode ? "Git is offline" : "Git is ready";
|
||
}
|
||
if (this.plugin.offlineMode) {
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "globe");
|
||
} else {
|
||
(0, import_obsidian3.setIcon)(this.iconEl, "check");
|
||
}
|
||
if (this.plugin.settings.changedFilesInStatusBar && this.plugin.cachedStatus) {
|
||
this.textEl.setText(this.plugin.cachedStatus.changed.length.toString());
|
||
}
|
||
this.statusBarEl.addClass(this.base + "idle");
|
||
}
|
||
};
|
||
|
||
// src/ui/modals/changedFilesModal.ts
|
||
var import_obsidian4 = __toModule(require("obsidian"));
|
||
var ChangedFilesModal = class extends import_obsidian4.FuzzySuggestModal {
|
||
constructor(plugin, changedFiles) {
|
||
super(plugin.app);
|
||
this.plugin = plugin;
|
||
this.changedFiles = changedFiles;
|
||
this.setPlaceholder("Not supported files will be opened by default app!");
|
||
}
|
||
getItems() {
|
||
return this.changedFiles;
|
||
}
|
||
getItemText(item) {
|
||
if (item.index == "U" && item.working_dir == "U") {
|
||
return `Untracked | ${item.vault_path}`;
|
||
}
|
||
let working_dir = "";
|
||
let index = "";
|
||
if (item.working_dir != " ")
|
||
working_dir = `Working dir: ${item.working_dir} `;
|
||
if (item.index != " ")
|
||
index = `Index: ${item.index}`;
|
||
return `${working_dir}${index} | ${item.vault_path}`;
|
||
}
|
||
onChooseItem(item, _) {
|
||
if (this.plugin.app.metadataCache.getFirstLinkpathDest(item.vault_path, "") == null) {
|
||
this.app.openWithDefaultApp(item.vault_path);
|
||
} else {
|
||
this.plugin.app.workspace.openLinkText(item.vault_path, "/");
|
||
}
|
||
}
|
||
};
|
||
|
||
// src/ui/modals/customMessageModal.ts
|
||
var import_obsidian5 = __toModule(require("obsidian"));
|
||
var CustomMessageModal = class extends import_obsidian5.SuggestModal {
|
||
constructor(plugin, fromAutoBackup) {
|
||
super(plugin.app);
|
||
this.fromAutoBackup = fromAutoBackup;
|
||
this.resolve = null;
|
||
this.plugin = plugin;
|
||
this.setPlaceholder("Type your message and select optional the version with the added date.");
|
||
}
|
||
open() {
|
||
super.open();
|
||
return new Promise((resolve) => {
|
||
this.resolve = resolve;
|
||
});
|
||
}
|
||
onClose() {
|
||
if (this.resolve)
|
||
this.resolve(void 0);
|
||
}
|
||
selectSuggestion(value, evt) {
|
||
if (this.resolve)
|
||
this.resolve(value);
|
||
super.selectSuggestion(value, evt);
|
||
}
|
||
getSuggestions(query) {
|
||
const date = window.moment().format(this.plugin.settings.commitDateFormat);
|
||
if (query == "")
|
||
query = "...";
|
||
return [query, `${date}: ${query}`, `${query}: ${date}`];
|
||
}
|
||
renderSuggestion(value, el) {
|
||
el.innerText = value;
|
||
}
|
||
onChooseSuggestion(item, _) {
|
||
}
|
||
};
|
||
|
||
// src/constants.ts
|
||
var import_obsidian6 = __toModule(require("obsidian"));
|
||
var DEFAULT_SETTINGS = {
|
||
commitMessage: "vault backup: {{date}}",
|
||
autoCommitMessage: void 0,
|
||
commitDateFormat: "YYYY-MM-DD HH:mm:ss",
|
||
autoSaveInterval: 0,
|
||
autoPushInterval: 0,
|
||
autoPullInterval: 0,
|
||
autoPullOnBoot: false,
|
||
disablePush: false,
|
||
pullBeforePush: true,
|
||
disablePopups: false,
|
||
listChangedFilesInMessageBody: false,
|
||
showStatusBar: true,
|
||
updateSubmodules: false,
|
||
syncMethod: "merge",
|
||
customMessageOnAutoBackup: false,
|
||
autoBackupAfterFileChange: false,
|
||
treeStructure: false,
|
||
refreshSourceControl: import_obsidian6.Platform.isDesktopApp,
|
||
basePath: "",
|
||
differentIntervalCommitAndPush: false,
|
||
changedFilesInStatusBar: false,
|
||
username: ""
|
||
};
|
||
var GIT_VIEW_CONFIG = {
|
||
type: "git-view",
|
||
name: "Source Control",
|
||
icon: "git-pull-request"
|
||
};
|
||
var DIFF_VIEW_CONFIG = {
|
||
type: "diff-view",
|
||
name: "Diff View",
|
||
icon: "git-pull-request"
|
||
};
|
||
|
||
// src/localStorageSettings.ts
|
||
var LocalStorageSettings = class {
|
||
constructor(plugin) {
|
||
this.plugin = plugin;
|
||
this.prefix = this.plugin.manifest.id;
|
||
}
|
||
getPassword() {
|
||
return localStorage.getItem(this.prefix + ":password");
|
||
}
|
||
setPassword(value) {
|
||
return localStorage.setItem(this.prefix + ":password", value);
|
||
}
|
||
getHostname() {
|
||
return localStorage.getItem(this.prefix + ":hostname");
|
||
}
|
||
setHostname(value) {
|
||
return localStorage.setItem(this.prefix + ":hostname", value);
|
||
}
|
||
getConflict() {
|
||
return localStorage.getItem(this.prefix + ":conflict");
|
||
}
|
||
setConflict(value) {
|
||
return localStorage.setItem(this.prefix + ":conflict", value);
|
||
}
|
||
getLastAutoPull() {
|
||
return localStorage.getItem(this.prefix + ":lastAutoPull");
|
||
}
|
||
setLastAutoPull(value) {
|
||
return localStorage.setItem(this.prefix + ":lastAutoPull", value);
|
||
}
|
||
getLastAutoBackup() {
|
||
return localStorage.getItem(this.prefix + ":lastAutoBackup");
|
||
}
|
||
setLastAutoBackup(value) {
|
||
return localStorage.setItem(this.prefix + ":lastAutoBackup", value);
|
||
}
|
||
getLastAutoPush() {
|
||
return localStorage.getItem(this.prefix + ":lastAutoPush");
|
||
}
|
||
setLastAutoPush(value) {
|
||
return localStorage.setItem(this.prefix + ":lastAutoPush", value);
|
||
}
|
||
getGitPath() {
|
||
return localStorage.getItem(this.prefix + ":gitPath");
|
||
}
|
||
setGitPath(value) {
|
||
return localStorage.setItem(this.prefix + ":gitPath", value);
|
||
}
|
||
};
|
||
|
||
// src/openInGitHub.ts
|
||
var import_obsidian7 = __toModule(require("obsidian"));
|
||
function openLineInGitHub(editor, file, manager) {
|
||
return __async(this, null, function* () {
|
||
const { isGitHub, branch, repo, user } = yield getData(manager);
|
||
if (isGitHub) {
|
||
const path2 = manager.getPath(file.path, true);
|
||
const from = editor.getCursor("from").line + 1;
|
||
const to = editor.getCursor("to").line + 1;
|
||
if (from === to) {
|
||
window.open(`https://github.com/${user}/${repo}/blob/${branch}/${path2}?plain=1#L${from}`);
|
||
} else {
|
||
window.open(`https://github.com/${user}/${repo}/blob/${branch}/${path2}?plain=1#L${from}-L${to}`);
|
||
}
|
||
} else {
|
||
new import_obsidian7.Notice("It seems like you are not using GitHub");
|
||
}
|
||
});
|
||
}
|
||
function openHistoryInGitHub(file, manager) {
|
||
return __async(this, null, function* () {
|
||
const { isGitHub, branch, repo, user } = yield getData(manager);
|
||
const path2 = manager.getPath(file.path, true);
|
||
if (isGitHub) {
|
||
window.open(`https://github.com/${user}/${repo}/commits/${branch}/${path2}`);
|
||
} else {
|
||
new import_obsidian7.Notice("It seems like you are not using GitHub");
|
||
}
|
||
});
|
||
}
|
||
function getData(manager) {
|
||
return __async(this, null, function* () {
|
||
const branchInfo = yield manager.branchInfo();
|
||
const remoteBranch = branchInfo.tracking;
|
||
const branch = branchInfo.current;
|
||
const remote = remoteBranch.substring(0, remoteBranch.indexOf("/"));
|
||
const remoteUrl = yield manager.getConfig(`remote.${remote}.url`);
|
||
const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match(/(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/);
|
||
return {
|
||
isGitHub: !!isGitHub,
|
||
repo: httpsRepo || sshRepo,
|
||
user: httpsUser || sshUser,
|
||
branch
|
||
};
|
||
});
|
||
}
|
||
|
||
// src/ui/diff/diffView.ts
|
||
var import_diff2html = __toModule(require_diff2html());
|
||
var import_obsidian8 = __toModule(require("obsidian"));
|
||
var DiffView = class extends import_obsidian8.ItemView {
|
||
constructor(leaf, plugin) {
|
||
super(leaf);
|
||
this.plugin = plugin;
|
||
this.gettingDiff = false;
|
||
this.parser = new DOMParser();
|
||
addEventListener("git-refresh", this.refresh.bind(this));
|
||
}
|
||
getViewType() {
|
||
return DIFF_VIEW_CONFIG.type;
|
||
}
|
||
getDisplayText() {
|
||
return DIFF_VIEW_CONFIG.name;
|
||
}
|
||
getIcon() {
|
||
return DIFF_VIEW_CONFIG.icon;
|
||
}
|
||
setState(state, result) {
|
||
return __async(this, null, function* () {
|
||
this.state = state;
|
||
yield this.refresh();
|
||
return;
|
||
});
|
||
}
|
||
getState() {
|
||
return this.state;
|
||
}
|
||
onClose() {
|
||
removeEventListener("git-refresh", this.refresh.bind(this));
|
||
return super.onClose();
|
||
}
|
||
onOpen() {
|
||
this.refresh();
|
||
return super.onOpen();
|
||
}
|
||
refresh() {
|
||
return __async(this, null, function* () {
|
||
var _a2;
|
||
if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) {
|
||
this.gettingDiff = true;
|
||
let diff = yield this.plugin.gitManager.getDiffString(this.state.file, this.state.staged);
|
||
this.contentEl.empty();
|
||
if (!diff) {
|
||
const content = yield this.app.vault.adapter.read(this.plugin.gitManager.getVaultPath(this.state.file));
|
||
const header = `--- /dev/null
|
||
+++ ${this.state.file}
|
||
@@ -0,0 +1,${content.split("\n").length} @@`;
|
||
diff = [...header.split("\n"), ...content.split("\n").map((line) => `+${line}`)].join("\n");
|
||
}
|
||
const diffEl = this.parser.parseFromString((0, import_diff2html.html)(diff), "text/html").querySelector(".d2h-file-diff");
|
||
this.contentEl.append(diffEl);
|
||
this.gettingDiff = false;
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/ui/modals/generalModal.ts
|
||
var import_obsidian9 = __toModule(require("obsidian"));
|
||
var GeneralModal = class extends import_obsidian9.SuggestModal {
|
||
constructor(app2, options, placeholder, allowEmpty = false, onlySelection = false) {
|
||
super(app2);
|
||
this.options = options;
|
||
this.allowEmpty = allowEmpty;
|
||
this.onlySelection = onlySelection;
|
||
this.resolve = null;
|
||
this.setPlaceholder(placeholder);
|
||
}
|
||
open() {
|
||
super.open();
|
||
return new Promise((resolve) => {
|
||
this.resolve = resolve;
|
||
});
|
||
}
|
||
selectSuggestion(value, evt) {
|
||
if (this.resolve) {
|
||
let res;
|
||
if (this.allowEmpty && value === " ")
|
||
res = "";
|
||
else if (value === "...")
|
||
res = void 0;
|
||
else
|
||
res = value;
|
||
this.resolve(res);
|
||
}
|
||
super.selectSuggestion(value, evt);
|
||
}
|
||
onClose() {
|
||
if (this.resolve)
|
||
this.resolve(void 0);
|
||
}
|
||
getSuggestions(query) {
|
||
if (this.onlySelection) {
|
||
return this.options;
|
||
} else if (this.allowEmpty) {
|
||
return [query.length > 0 ? query : " ", ...this.options];
|
||
} else {
|
||
return [query.length > 0 ? query : "...", ...this.options];
|
||
}
|
||
}
|
||
renderSuggestion(value, el) {
|
||
el.innerText = value;
|
||
}
|
||
onChooseSuggestion(item, _) {
|
||
}
|
||
};
|
||
|
||
// src/ui/modals/ignoreModal.ts
|
||
var import_obsidian10 = __toModule(require("obsidian"));
|
||
var IgnoreModal = class extends import_obsidian10.Modal {
|
||
constructor(app2, content) {
|
||
super(app2);
|
||
this.content = content;
|
||
this.resolve = null;
|
||
}
|
||
open() {
|
||
super.open();
|
||
return new Promise((resolve) => {
|
||
this.resolve = resolve;
|
||
});
|
||
}
|
||
onOpen() {
|
||
let { contentEl, titleEl } = this;
|
||
titleEl.setText("Edit .gitignore");
|
||
const div = contentEl.createDiv();
|
||
const text2 = div.createEl("textarea", {
|
||
text: this.content,
|
||
cls: ["obsidian-git-textarea"],
|
||
attr: { rows: 10, cols: 30, wrap: "off" }
|
||
});
|
||
div.createEl("button", {
|
||
cls: ["mod-cta", "obsidian-git-center-button"],
|
||
text: "Save"
|
||
}).addEventListener("click", () => __async(this, null, function* () {
|
||
this.resolve(text2.value);
|
||
this.close();
|
||
}));
|
||
}
|
||
onClose() {
|
||
let { contentEl } = this;
|
||
this.resolve(void 0);
|
||
contentEl.empty();
|
||
}
|
||
};
|
||
|
||
// src/ui/sidebar/sidebarView.ts
|
||
var import_obsidian17 = __toModule(require("obsidian"));
|
||
|
||
// node_modules/svelte/internal/index.mjs
|
||
function noop() {
|
||
}
|
||
var identity = (x) => x;
|
||
function run(fn) {
|
||
return fn();
|
||
}
|
||
function blank_object() {
|
||
return Object.create(null);
|
||
}
|
||
function run_all(fns) {
|
||
fns.forEach(run);
|
||
}
|
||
function is_function(thing) {
|
||
return typeof thing === "function";
|
||
}
|
||
function safe_not_equal(a, b) {
|
||
return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function");
|
||
}
|
||
function is_empty(obj) {
|
||
return Object.keys(obj).length === 0;
|
||
}
|
||
var is_client = typeof window !== "undefined";
|
||
var now = is_client ? () => window.performance.now() : () => Date.now();
|
||
var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;
|
||
var tasks = new Set();
|
||
function run_tasks(now2) {
|
||
tasks.forEach((task) => {
|
||
if (!task.c(now2)) {
|
||
tasks.delete(task);
|
||
task.f();
|
||
}
|
||
});
|
||
if (tasks.size !== 0)
|
||
raf(run_tasks);
|
||
}
|
||
function loop(callback) {
|
||
let task;
|
||
if (tasks.size === 0)
|
||
raf(run_tasks);
|
||
return {
|
||
promise: new Promise((fulfill) => {
|
||
tasks.add(task = { c: callback, f: fulfill });
|
||
}),
|
||
abort() {
|
||
tasks.delete(task);
|
||
}
|
||
};
|
||
}
|
||
var is_hydrating = false;
|
||
function start_hydrating() {
|
||
is_hydrating = true;
|
||
}
|
||
function end_hydrating() {
|
||
is_hydrating = false;
|
||
}
|
||
function append2(target, node) {
|
||
target.appendChild(node);
|
||
}
|
||
function append_styles(target, style_sheet_id, styles) {
|
||
const append_styles_to = get_root_for_style(target);
|
||
if (!append_styles_to.getElementById(style_sheet_id)) {
|
||
const style = element("style");
|
||
style.id = style_sheet_id;
|
||
style.textContent = styles;
|
||
append_stylesheet(append_styles_to, style);
|
||
}
|
||
}
|
||
function get_root_for_style(node) {
|
||
if (!node)
|
||
return document;
|
||
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
|
||
if (root && root.host) {
|
||
return root;
|
||
}
|
||
return node.ownerDocument;
|
||
}
|
||
function append_empty_stylesheet(node) {
|
||
const style_element = element("style");
|
||
append_stylesheet(get_root_for_style(node), style_element);
|
||
return style_element.sheet;
|
||
}
|
||
function append_stylesheet(node, style) {
|
||
append2(node.head || node, style);
|
||
}
|
||
function insert(target, node, anchor) {
|
||
target.insertBefore(node, anchor || null);
|
||
}
|
||
function detach(node) {
|
||
node.parentNode.removeChild(node);
|
||
}
|
||
function destroy_each(iterations, detaching) {
|
||
for (let i = 0; i < iterations.length; i += 1) {
|
||
if (iterations[i])
|
||
iterations[i].d(detaching);
|
||
}
|
||
}
|
||
function element(name) {
|
||
return document.createElement(name);
|
||
}
|
||
function text(data) {
|
||
return document.createTextNode(data);
|
||
}
|
||
function space() {
|
||
return text(" ");
|
||
}
|
||
function empty() {
|
||
return text("");
|
||
}
|
||
function listen(node, event, handler, options) {
|
||
node.addEventListener(event, handler, options);
|
||
return () => node.removeEventListener(event, handler, options);
|
||
}
|
||
function self2(fn) {
|
||
return function(event) {
|
||
if (event.target === this)
|
||
fn.call(this, event);
|
||
};
|
||
}
|
||
function attr(node, attribute, value) {
|
||
if (value == null)
|
||
node.removeAttribute(attribute);
|
||
else if (node.getAttribute(attribute) !== value)
|
||
node.setAttribute(attribute, value);
|
||
}
|
||
function children(element2) {
|
||
return Array.from(element2.childNodes);
|
||
}
|
||
function set_data(text2, data) {
|
||
data = "" + data;
|
||
if (text2.wholeText !== data)
|
||
text2.data = data;
|
||
}
|
||
function set_input_value(input, value) {
|
||
input.value = value == null ? "" : value;
|
||
}
|
||
function toggle_class(element2, name, toggle) {
|
||
element2.classList[toggle ? "add" : "remove"](name);
|
||
}
|
||
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
|
||
const e = document.createEvent("CustomEvent");
|
||
e.initCustomEvent(type, bubbles, cancelable, detail);
|
||
return e;
|
||
}
|
||
var managed_styles = new Map();
|
||
var active = 0;
|
||
function hash(str) {
|
||
let hash2 = 5381;
|
||
let i = str.length;
|
||
while (i--)
|
||
hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i);
|
||
return hash2 >>> 0;
|
||
}
|
||
function create_style_information(doc, node) {
|
||
const info = { stylesheet: append_empty_stylesheet(node), rules: {} };
|
||
managed_styles.set(doc, info);
|
||
return info;
|
||
}
|
||
function create_rule(node, a, b, duration, delay2, ease, fn, uid = 0) {
|
||
const step = 16.666 / duration;
|
||
let keyframes = "{\n";
|
||
for (let p = 0; p <= 1; p += step) {
|
||
const t = a + (b - a) * ease(p);
|
||
keyframes += p * 100 + `%{${fn(t, 1 - t)}}
|
||
`;
|
||
}
|
||
const rule = keyframes + `100% {${fn(b, 1 - b)}}
|
||
}`;
|
||
const name = `__svelte_${hash(rule)}_${uid}`;
|
||
const doc = get_root_for_style(node);
|
||
const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);
|
||
if (!rules[name]) {
|
||
rules[name] = true;
|
||
stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
|
||
}
|
||
const animation = node.style.animation || "";
|
||
node.style.animation = `${animation ? `${animation}, ` : ""}${name} ${duration}ms linear ${delay2}ms 1 both`;
|
||
active += 1;
|
||
return name;
|
||
}
|
||
function delete_rule(node, name) {
|
||
const previous = (node.style.animation || "").split(", ");
|
||
const next = previous.filter(name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1);
|
||
const deleted = previous.length - next.length;
|
||
if (deleted) {
|
||
node.style.animation = next.join(", ");
|
||
active -= deleted;
|
||
if (!active)
|
||
clear_rules();
|
||
}
|
||
}
|
||
function clear_rules() {
|
||
raf(() => {
|
||
if (active)
|
||
return;
|
||
managed_styles.forEach((info) => {
|
||
const { stylesheet } = info;
|
||
let i = stylesheet.cssRules.length;
|
||
while (i--)
|
||
stylesheet.deleteRule(i);
|
||
info.rules = {};
|
||
});
|
||
managed_styles.clear();
|
||
});
|
||
}
|
||
var current_component;
|
||
function set_current_component(component) {
|
||
current_component = component;
|
||
}
|
||
function get_current_component() {
|
||
if (!current_component)
|
||
throw new Error("Function called outside component initialization");
|
||
return current_component;
|
||
}
|
||
function onDestroy(fn) {
|
||
get_current_component().$$.on_destroy.push(fn);
|
||
}
|
||
function bubble(component, event) {
|
||
const callbacks = component.$$.callbacks[event.type];
|
||
if (callbacks) {
|
||
callbacks.slice().forEach((fn) => fn.call(this, event));
|
||
}
|
||
}
|
||
var dirty_components = [];
|
||
var binding_callbacks = [];
|
||
var render_callbacks = [];
|
||
var flush_callbacks = [];
|
||
var resolved_promise = Promise.resolve();
|
||
var update_scheduled = false;
|
||
function schedule_update() {
|
||
if (!update_scheduled) {
|
||
update_scheduled = true;
|
||
resolved_promise.then(flush);
|
||
}
|
||
}
|
||
function add_render_callback(fn) {
|
||
render_callbacks.push(fn);
|
||
}
|
||
var seen_callbacks = new Set();
|
||
var flushidx = 0;
|
||
function flush() {
|
||
const saved_component = current_component;
|
||
do {
|
||
while (flushidx < dirty_components.length) {
|
||
const component = dirty_components[flushidx];
|
||
flushidx++;
|
||
set_current_component(component);
|
||
update(component.$$);
|
||
}
|
||
set_current_component(null);
|
||
dirty_components.length = 0;
|
||
flushidx = 0;
|
||
while (binding_callbacks.length)
|
||
binding_callbacks.pop()();
|
||
for (let i = 0; i < render_callbacks.length; i += 1) {
|
||
const callback = render_callbacks[i];
|
||
if (!seen_callbacks.has(callback)) {
|
||
seen_callbacks.add(callback);
|
||
callback();
|
||
}
|
||
}
|
||
render_callbacks.length = 0;
|
||
} while (dirty_components.length);
|
||
while (flush_callbacks.length) {
|
||
flush_callbacks.pop()();
|
||
}
|
||
update_scheduled = false;
|
||
seen_callbacks.clear();
|
||
set_current_component(saved_component);
|
||
}
|
||
function update($$) {
|
||
if ($$.fragment !== null) {
|
||
$$.update();
|
||
run_all($$.before_update);
|
||
const dirty = $$.dirty;
|
||
$$.dirty = [-1];
|
||
$$.fragment && $$.fragment.p($$.ctx, dirty);
|
||
$$.after_update.forEach(add_render_callback);
|
||
}
|
||
}
|
||
var promise;
|
||
function wait() {
|
||
if (!promise) {
|
||
promise = Promise.resolve();
|
||
promise.then(() => {
|
||
promise = null;
|
||
});
|
||
}
|
||
return promise;
|
||
}
|
||
function dispatch(node, direction, kind) {
|
||
node.dispatchEvent(custom_event(`${direction ? "intro" : "outro"}${kind}`));
|
||
}
|
||
var outroing = new Set();
|
||
var outros;
|
||
function group_outros() {
|
||
outros = {
|
||
r: 0,
|
||
c: [],
|
||
p: outros
|
||
};
|
||
}
|
||
function check_outros() {
|
||
if (!outros.r) {
|
||
run_all(outros.c);
|
||
}
|
||
outros = outros.p;
|
||
}
|
||
function transition_in(block, local) {
|
||
if (block && block.i) {
|
||
outroing.delete(block);
|
||
block.i(local);
|
||
}
|
||
}
|
||
function transition_out(block, local, detach2, callback) {
|
||
if (block && block.o) {
|
||
if (outroing.has(block))
|
||
return;
|
||
outroing.add(block);
|
||
outros.c.push(() => {
|
||
outroing.delete(block);
|
||
if (callback) {
|
||
if (detach2)
|
||
block.d(1);
|
||
callback();
|
||
}
|
||
});
|
||
block.o(local);
|
||
} else if (callback) {
|
||
callback();
|
||
}
|
||
}
|
||
var null_transition = { duration: 0 };
|
||
function create_bidirectional_transition(node, fn, params, intro) {
|
||
let config = fn(node, params);
|
||
let t = intro ? 0 : 1;
|
||
let running_program = null;
|
||
let pending_program = null;
|
||
let animation_name = null;
|
||
function clear_animation() {
|
||
if (animation_name)
|
||
delete_rule(node, animation_name);
|
||
}
|
||
function init2(program, duration) {
|
||
const d = program.b - t;
|
||
duration *= Math.abs(d);
|
||
return {
|
||
a: t,
|
||
b: program.b,
|
||
d,
|
||
duration,
|
||
start: program.start,
|
||
end: program.start + duration,
|
||
group: program.group
|
||
};
|
||
}
|
||
function go(b) {
|
||
const { delay: delay2 = 0, duration = 300, easing = identity, tick: tick2 = noop, css } = config || null_transition;
|
||
const program = {
|
||
start: now() + delay2,
|
||
b
|
||
};
|
||
if (!b) {
|
||
program.group = outros;
|
||
outros.r += 1;
|
||
}
|
||
if (running_program || pending_program) {
|
||
pending_program = program;
|
||
} else {
|
||
if (css) {
|
||
clear_animation();
|
||
animation_name = create_rule(node, t, b, duration, delay2, easing, css);
|
||
}
|
||
if (b)
|
||
tick2(0, 1);
|
||
running_program = init2(program, duration);
|
||
add_render_callback(() => dispatch(node, b, "start"));
|
||
loop((now2) => {
|
||
if (pending_program && now2 > pending_program.start) {
|
||
running_program = init2(pending_program, duration);
|
||
pending_program = null;
|
||
dispatch(node, running_program.b, "start");
|
||
if (css) {
|
||
clear_animation();
|
||
animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
|
||
}
|
||
}
|
||
if (running_program) {
|
||
if (now2 >= running_program.end) {
|
||
tick2(t = running_program.b, 1 - t);
|
||
dispatch(node, running_program.b, "end");
|
||
if (!pending_program) {
|
||
if (running_program.b) {
|
||
clear_animation();
|
||
} else {
|
||
if (!--running_program.group.r)
|
||
run_all(running_program.group.c);
|
||
}
|
||
}
|
||
running_program = null;
|
||
} else if (now2 >= running_program.start) {
|
||
const p = now2 - running_program.start;
|
||
t = running_program.a + running_program.d * easing(p / running_program.duration);
|
||
tick2(t, 1 - t);
|
||
}
|
||
}
|
||
return !!(running_program || pending_program);
|
||
});
|
||
}
|
||
}
|
||
return {
|
||
run(b) {
|
||
if (is_function(config)) {
|
||
wait().then(() => {
|
||
config = config();
|
||
go(b);
|
||
});
|
||
} else {
|
||
go(b);
|
||
}
|
||
},
|
||
end() {
|
||
clear_animation();
|
||
running_program = pending_program = null;
|
||
}
|
||
};
|
||
}
|
||
var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global;
|
||
var boolean_attributes = new Set([
|
||
"allowfullscreen",
|
||
"allowpaymentrequest",
|
||
"async",
|
||
"autofocus",
|
||
"autoplay",
|
||
"checked",
|
||
"controls",
|
||
"default",
|
||
"defer",
|
||
"disabled",
|
||
"formnovalidate",
|
||
"hidden",
|
||
"ismap",
|
||
"loop",
|
||
"multiple",
|
||
"muted",
|
||
"nomodule",
|
||
"novalidate",
|
||
"open",
|
||
"playsinline",
|
||
"readonly",
|
||
"required",
|
||
"reversed",
|
||
"selected"
|
||
]);
|
||
function create_component(block) {
|
||
block && block.c();
|
||
}
|
||
function mount_component(component, target, anchor, customElement) {
|
||
const { fragment, on_mount, on_destroy, after_update } = component.$$;
|
||
fragment && fragment.m(target, anchor);
|
||
if (!customElement) {
|
||
add_render_callback(() => {
|
||
const new_on_destroy = on_mount.map(run).filter(is_function);
|
||
if (on_destroy) {
|
||
on_destroy.push(...new_on_destroy);
|
||
} else {
|
||
run_all(new_on_destroy);
|
||
}
|
||
component.$$.on_mount = [];
|
||
});
|
||
}
|
||
after_update.forEach(add_render_callback);
|
||
}
|
||
function destroy_component(component, detaching) {
|
||
const $$ = component.$$;
|
||
if ($$.fragment !== null) {
|
||
run_all($$.on_destroy);
|
||
$$.fragment && $$.fragment.d(detaching);
|
||
$$.on_destroy = $$.fragment = null;
|
||
$$.ctx = [];
|
||
}
|
||
}
|
||
function make_dirty(component, i) {
|
||
if (component.$$.dirty[0] === -1) {
|
||
dirty_components.push(component);
|
||
schedule_update();
|
||
component.$$.dirty.fill(0);
|
||
}
|
||
component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
|
||
}
|
||
function init(component, options, instance6, create_fragment6, not_equal, props, append_styles2, dirty = [-1]) {
|
||
const parent_component = current_component;
|
||
set_current_component(component);
|
||
const $$ = component.$$ = {
|
||
fragment: null,
|
||
ctx: null,
|
||
props,
|
||
update: noop,
|
||
not_equal,
|
||
bound: blank_object(),
|
||
on_mount: [],
|
||
on_destroy: [],
|
||
on_disconnect: [],
|
||
before_update: [],
|
||
after_update: [],
|
||
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
|
||
callbacks: blank_object(),
|
||
dirty,
|
||
skip_bound: false,
|
||
root: options.target || parent_component.$$.root
|
||
};
|
||
append_styles2 && append_styles2($$.root);
|
||
let ready2 = false;
|
||
$$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => {
|
||
const value = rest.length ? rest[0] : ret;
|
||
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
|
||
if (!$$.skip_bound && $$.bound[i])
|
||
$$.bound[i](value);
|
||
if (ready2)
|
||
make_dirty(component, i);
|
||
}
|
||
return ret;
|
||
}) : [];
|
||
$$.update();
|
||
ready2 = true;
|
||
run_all($$.before_update);
|
||
$$.fragment = create_fragment6 ? create_fragment6($$.ctx) : false;
|
||
if (options.target) {
|
||
if (options.hydrate) {
|
||
start_hydrating();
|
||
const nodes = children(options.target);
|
||
$$.fragment && $$.fragment.l(nodes);
|
||
nodes.forEach(detach);
|
||
} else {
|
||
$$.fragment && $$.fragment.c();
|
||
}
|
||
if (options.intro)
|
||
transition_in(component.$$.fragment);
|
||
mount_component(component, options.target, options.anchor, options.customElement);
|
||
end_hydrating();
|
||
flush();
|
||
}
|
||
set_current_component(parent_component);
|
||
}
|
||
var SvelteElement;
|
||
if (typeof HTMLElement === "function") {
|
||
SvelteElement = class extends HTMLElement {
|
||
constructor() {
|
||
super();
|
||
this.attachShadow({ mode: "open" });
|
||
}
|
||
connectedCallback() {
|
||
const { on_mount } = this.$$;
|
||
this.$$.on_disconnect = on_mount.map(run).filter(is_function);
|
||
for (const key2 in this.$$.slotted) {
|
||
this.appendChild(this.$$.slotted[key2]);
|
||
}
|
||
}
|
||
attributeChangedCallback(attr2, _oldValue, newValue) {
|
||
this[attr2] = newValue;
|
||
}
|
||
disconnectedCallback() {
|
||
run_all(this.$$.on_disconnect);
|
||
}
|
||
$destroy() {
|
||
destroy_component(this, 1);
|
||
this.$destroy = noop;
|
||
}
|
||
$on(type, callback) {
|
||
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
|
||
callbacks.push(callback);
|
||
return () => {
|
||
const index = callbacks.indexOf(callback);
|
||
if (index !== -1)
|
||
callbacks.splice(index, 1);
|
||
};
|
||
}
|
||
$set($$props) {
|
||
if (this.$$set && !is_empty($$props)) {
|
||
this.$$.skip_bound = true;
|
||
this.$$set($$props);
|
||
this.$$.skip_bound = false;
|
||
}
|
||
}
|
||
};
|
||
}
|
||
var SvelteComponent = class {
|
||
$destroy() {
|
||
destroy_component(this, 1);
|
||
this.$destroy = noop;
|
||
}
|
||
$on(type, callback) {
|
||
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
|
||
callbacks.push(callback);
|
||
return () => {
|
||
const index = callbacks.indexOf(callback);
|
||
if (index !== -1)
|
||
callbacks.splice(index, 1);
|
||
};
|
||
}
|
||
$set($$props) {
|
||
if (this.$$set && !is_empty($$props)) {
|
||
this.$$.skip_bound = true;
|
||
this.$$set($$props);
|
||
this.$$.skip_bound = false;
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/tslib/modules/index.js
|
||
var import_tslib = __toModule(require_tslib());
|
||
var {
|
||
__extends,
|
||
__assign,
|
||
__rest,
|
||
__decorate,
|
||
__param,
|
||
__metadata,
|
||
__awaiter,
|
||
__generator,
|
||
__exportStar,
|
||
__createBinding,
|
||
__values,
|
||
__read,
|
||
__spread,
|
||
__spreadArrays,
|
||
__spreadArray,
|
||
__await,
|
||
__asyncGenerator,
|
||
__asyncDelegator,
|
||
__asyncValues,
|
||
__makeTemplateObject,
|
||
__importStar,
|
||
__importDefault,
|
||
__classPrivateFieldGet,
|
||
__classPrivateFieldSet,
|
||
__classPrivateFieldIn
|
||
} = import_tslib.default;
|
||
|
||
// src/ui/sidebar/gitView.svelte
|
||
var import_obsidian16 = __toModule(require("obsidian"));
|
||
|
||
// node_modules/svelte/easing/index.mjs
|
||
function cubicOut(t) {
|
||
const f = t - 1;
|
||
return f * f * f + 1;
|
||
}
|
||
|
||
// node_modules/svelte/transition/index.mjs
|
||
function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut } = {}) {
|
||
const style = getComputedStyle(node);
|
||
const opacity = +style.opacity;
|
||
const height = parseFloat(style.height);
|
||
const padding_top = parseFloat(style.paddingTop);
|
||
const padding_bottom = parseFloat(style.paddingBottom);
|
||
const margin_top = parseFloat(style.marginTop);
|
||
const margin_bottom = parseFloat(style.marginBottom);
|
||
const border_top_width = parseFloat(style.borderTopWidth);
|
||
const border_bottom_width = parseFloat(style.borderBottomWidth);
|
||
return {
|
||
delay: delay2,
|
||
duration,
|
||
easing,
|
||
css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};height: ${t * height}px;padding-top: ${t * padding_top}px;padding-bottom: ${t * padding_bottom}px;margin-top: ${t * margin_top}px;margin-bottom: ${t * margin_bottom}px;border-top-width: ${t * border_top_width}px;border-bottom-width: ${t * border_bottom_width}px;`
|
||
};
|
||
}
|
||
|
||
// src/ui/sidebar/components/fileComponent.svelte
|
||
var import_obsidian13 = __toModule(require("obsidian"));
|
||
|
||
// node_modules/obsidian-community-lib/dist/utils.js
|
||
var feather = __toModule(require_feather());
|
||
var import_obsidian11 = __toModule(require("obsidian"));
|
||
function hoverPreview(event, view, to) {
|
||
const targetEl = event.target;
|
||
app.workspace.trigger("hover-link", {
|
||
event,
|
||
source: view.getViewType(),
|
||
hoverParent: view,
|
||
targetEl,
|
||
linktext: to
|
||
});
|
||
}
|
||
function createNewMDNote(newName, currFilePath = "") {
|
||
return __async(this, null, function* () {
|
||
const newFileFolder = app.fileManager.getNewFileParent(currFilePath).path;
|
||
const newFilePath = (0, import_obsidian11.normalizePath)(`${newFileFolder}${newFileFolder === "/" ? "" : "/"}${addMD(newName)}`);
|
||
return yield app.vault.create(newFilePath, "");
|
||
});
|
||
}
|
||
var addMD = (noteName) => {
|
||
return noteName.match(/\.MD$|\.md$/m) ? noteName : noteName + ".md";
|
||
};
|
||
function openOrSwitch(_0, _1) {
|
||
return __async(this, arguments, function* (dest, event, options = { createNewFile: true }) {
|
||
const { workspace } = app;
|
||
let destFile = app.metadataCache.getFirstLinkpathDest(dest, "");
|
||
if (!destFile && options.createNewFile) {
|
||
destFile = yield createNewMDNote(dest);
|
||
} else if (!destFile && !options.createNewFile)
|
||
return;
|
||
const leavesWithDestAlreadyOpen = [];
|
||
workspace.iterateAllLeaves((leaf) => {
|
||
var _a2;
|
||
if (leaf.view instanceof import_obsidian11.MarkdownView) {
|
||
const file = (_a2 = leaf.view) === null || _a2 === void 0 ? void 0 : _a2.file;
|
||
if (file && file.basename + "." + file.extension === dest) {
|
||
leavesWithDestAlreadyOpen.push(leaf);
|
||
}
|
||
}
|
||
});
|
||
if (leavesWithDestAlreadyOpen.length > 0) {
|
||
workspace.setActiveLeaf(leavesWithDestAlreadyOpen[0]);
|
||
} else {
|
||
const mode = app.vault.getConfig("defaultViewMode");
|
||
const leaf = event.ctrlKey || event.getModifierState("Meta") ? workspace.splitActiveLeaf() : workspace.getUnpinnedLeaf();
|
||
yield leaf.openFile(destFile, { active: true, mode });
|
||
}
|
||
});
|
||
}
|
||
|
||
// src/ui/modals/discardModal.ts
|
||
var import_obsidian12 = __toModule(require("obsidian"));
|
||
var DiscardModal = class extends import_obsidian12.Modal {
|
||
constructor(app2, deletion, filename) {
|
||
super(app2);
|
||
this.deletion = deletion;
|
||
this.filename = filename;
|
||
this.resolve = null;
|
||
}
|
||
myOpen() {
|
||
this.open();
|
||
return new Promise((resolve) => {
|
||
this.resolve = resolve;
|
||
});
|
||
}
|
||
onOpen() {
|
||
let { contentEl, titleEl } = this;
|
||
titleEl.setText(`${this.deletion ? "Delete" : "Discard"} this file?`);
|
||
contentEl.createEl("h4").setText(`Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"`);
|
||
const div = contentEl.createDiv();
|
||
div.addClass("obsidian-git-center");
|
||
div.createEl("button", { text: "Cancel" }).addEventListener("click", () => {
|
||
if (this.resolve)
|
||
this.resolve(false);
|
||
return this.close();
|
||
});
|
||
div.createEl("button", {
|
||
cls: "mod-cta",
|
||
text: "Confirm"
|
||
}).addEventListener("click", () => __async(this, null, function* () {
|
||
if (this.resolve)
|
||
this.resolve(true);
|
||
this.close();
|
||
}));
|
||
}
|
||
onClose() {
|
||
let { contentEl } = this;
|
||
contentEl.empty();
|
||
}
|
||
};
|
||
|
||
// src/ui/sidebar/components/fileComponent.svelte
|
||
function add_css(target) {
|
||
append_styles(target, "svelte-1furf50", "main.svelte-1furf50.svelte-1furf50.svelte-1furf50{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-1furf50 .path.svelte-1furf50.svelte-1furf50{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-1furf50:hover .path.svelte-1furf50.svelte-1furf50{color:var(--text-normal);transition:all 200ms}main.svelte-1furf50 .tools.svelte-1furf50.svelte-1furf50{display:flex;align-items:center}main.svelte-1furf50 .tools .type.svelte-1furf50.svelte-1furf50{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-1furf50 .tools .type[data-type=M].svelte-1furf50.svelte-1furf50{color:orange}main.svelte-1furf50 .tools .type[data-type=D].svelte-1furf50.svelte-1furf50{color:red}main.svelte-1furf50 .tools .buttons.svelte-1furf50.svelte-1furf50{display:flex}main.svelte-1furf50 .tools .buttons.svelte-1furf50>.svelte-1furf50{color:var(--text-faint);height:16px;width:16px;margin:0;transition:all 0.2s;border-radius:2px;margin-right:1px}main.svelte-1furf50 .tools .buttons.svelte-1furf50>.svelte-1furf50:hover{color:var(--text-normal);background-color:var(--interactive-accent)}");
|
||
}
|
||
function create_if_block(ctx) {
|
||
let div;
|
||
let mounted;
|
||
let dispose;
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
attr(div, "data-icon", "go-to-file");
|
||
attr(div, "aria-label", "Open File");
|
||
attr(div, "class", "svelte-1furf50");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
ctx[12](div);
|
||
if (!mounted) {
|
||
dispose = listen(div, "click", ctx[5]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
ctx[12](null);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
function create_fragment(ctx) {
|
||
let main;
|
||
let span0;
|
||
let t0_value = ctx[0].vault_path.split("/").last().replace(".md", "") + "";
|
||
let t0;
|
||
let span0_aria_label_value;
|
||
let t1;
|
||
let div3;
|
||
let div2;
|
||
let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[0].vault_path);
|
||
let t2;
|
||
let div0;
|
||
let t3;
|
||
let div1;
|
||
let t4;
|
||
let span1;
|
||
let t5_value = ctx[0].working_dir + "";
|
||
let t5;
|
||
let span1_data_type_value;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block = show_if && create_if_block(ctx);
|
||
return {
|
||
c() {
|
||
main = element("main");
|
||
span0 = element("span");
|
||
t0 = text(t0_value);
|
||
t1 = space();
|
||
div3 = element("div");
|
||
div2 = element("div");
|
||
if (if_block)
|
||
if_block.c();
|
||
t2 = space();
|
||
div0 = element("div");
|
||
t3 = space();
|
||
div1 = element("div");
|
||
t4 = space();
|
||
span1 = element("span");
|
||
t5 = text(t5_value);
|
||
attr(span0, "class", "path svelte-1furf50");
|
||
attr(span0, "aria-label-position", ctx[3]);
|
||
attr(span0, "aria-label", span0_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : "");
|
||
attr(div0, "data-icon", "skip-back");
|
||
attr(div0, "aria-label", "Discard");
|
||
attr(div0, "class", "svelte-1furf50");
|
||
attr(div1, "data-icon", "plus");
|
||
attr(div1, "aria-label", "Stage");
|
||
attr(div1, "class", "svelte-1furf50");
|
||
attr(div2, "class", "buttons svelte-1furf50");
|
||
attr(span1, "class", "type svelte-1furf50");
|
||
attr(span1, "data-type", span1_data_type_value = ctx[0].working_dir);
|
||
attr(div3, "class", "tools svelte-1furf50");
|
||
attr(main, "class", "svelte-1furf50");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, main, anchor);
|
||
append2(main, span0);
|
||
append2(span0, t0);
|
||
append2(main, t1);
|
||
append2(main, div3);
|
||
append2(div3, div2);
|
||
if (if_block)
|
||
if_block.m(div2, null);
|
||
append2(div2, t2);
|
||
append2(div2, div0);
|
||
ctx[13](div0);
|
||
append2(div2, t3);
|
||
append2(div2, div1);
|
||
ctx[14](div1);
|
||
append2(div3, t4);
|
||
append2(div3, span1);
|
||
append2(span1, t5);
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(span0, "click", self2(ctx[7])),
|
||
listen(div0, "click", ctx[8]),
|
||
listen(div1, "click", ctx[6]),
|
||
listen(main, "mouseover", ctx[4]),
|
||
listen(main, "click", self2(ctx[7])),
|
||
listen(main, "focus", ctx[11])
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & 1 && t0_value !== (t0_value = ctx2[0].vault_path.split("/").last().replace(".md", "") + ""))
|
||
set_data(t0, t0_value);
|
||
if (dirty & 8) {
|
||
attr(span0, "aria-label-position", ctx2[3]);
|
||
}
|
||
if (dirty & 1 && span0_aria_label_value !== (span0_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) {
|
||
attr(span0, "aria-label", span0_aria_label_value);
|
||
}
|
||
if (dirty & 3)
|
||
show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[0].vault_path);
|
||
if (show_if) {
|
||
if (if_block) {
|
||
if_block.p(ctx2, dirty);
|
||
} else {
|
||
if_block = create_if_block(ctx2);
|
||
if_block.c();
|
||
if_block.m(div2, t2);
|
||
}
|
||
} else if (if_block) {
|
||
if_block.d(1);
|
||
if_block = null;
|
||
}
|
||
if (dirty & 1 && t5_value !== (t5_value = ctx2[0].working_dir + ""))
|
||
set_data(t5, t5_value);
|
||
if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].working_dir)) {
|
||
attr(span1, "data-type", span1_data_type_value);
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(main);
|
||
if (if_block)
|
||
if_block.d();
|
||
ctx[13](null);
|
||
ctx[14](null);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance($$self, $$props, $$invalidate) {
|
||
let side;
|
||
let { change } = $$props;
|
||
let { view } = $$props;
|
||
let { manager } = $$props;
|
||
let { workspace } = $$props;
|
||
let buttons = [];
|
||
window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian13.setIcon)(b, b.getAttr("data-icon"), 16)), 0);
|
||
function hover(event) {
|
||
if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
|
||
hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", ""));
|
||
}
|
||
}
|
||
function open(event) {
|
||
if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.working_dir === "D")) {
|
||
openOrSwitch(change.vault_path, event);
|
||
}
|
||
}
|
||
function stage() {
|
||
manager.stage(change.path, false).finally(() => {
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
});
|
||
}
|
||
function showDiff(event) {
|
||
const leaf = workspace.getMostRecentLeaf(workspace.rootSplit);
|
||
if (leaf && !leaf.getViewState().pinned && !(event.ctrlKey || event.getModifierState("Meta"))) {
|
||
leaf.setViewState({
|
||
type: DIFF_VIEW_CONFIG.type,
|
||
state: { file: change.path, staged: false }
|
||
});
|
||
} else {
|
||
workspace.createLeafInParent(workspace.rootSplit, 0).setViewState({
|
||
type: DIFF_VIEW_CONFIG.type,
|
||
active: true,
|
||
state: { file: change.path, staged: false }
|
||
});
|
||
}
|
||
}
|
||
function discard() {
|
||
const deleteFile = change.working_dir == "U";
|
||
new DiscardModal(view.app, deleteFile, change.vault_path).myOpen().then((shouldDiscard) => {
|
||
if (shouldDiscard === true) {
|
||
if (deleteFile) {
|
||
view.app.vault.adapter.remove(change.vault_path).finally(() => {
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
});
|
||
} else {
|
||
manager.discard(change.path).finally(() => {
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
});
|
||
}
|
||
}
|
||
});
|
||
}
|
||
function focus_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function div_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[1] = $$value;
|
||
$$invalidate(2, buttons);
|
||
});
|
||
}
|
||
function div0_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[0] = $$value;
|
||
$$invalidate(2, buttons);
|
||
});
|
||
}
|
||
function div1_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[2] = $$value;
|
||
$$invalidate(2, buttons);
|
||
});
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("change" in $$props2)
|
||
$$invalidate(0, change = $$props2.change);
|
||
if ("view" in $$props2)
|
||
$$invalidate(1, view = $$props2.view);
|
||
if ("manager" in $$props2)
|
||
$$invalidate(9, manager = $$props2.manager);
|
||
if ("workspace" in $$props2)
|
||
$$invalidate(10, workspace = $$props2.workspace);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & 2) {
|
||
$:
|
||
$$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left");
|
||
}
|
||
};
|
||
return [
|
||
change,
|
||
view,
|
||
buttons,
|
||
side,
|
||
hover,
|
||
open,
|
||
stage,
|
||
showDiff,
|
||
discard,
|
||
manager,
|
||
workspace,
|
||
focus_handler,
|
||
div_binding,
|
||
div0_binding,
|
||
div1_binding
|
||
];
|
||
}
|
||
var FileComponent = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance, create_fragment, safe_not_equal, {
|
||
change: 0,
|
||
view: 1,
|
||
manager: 9,
|
||
workspace: 10
|
||
}, add_css);
|
||
}
|
||
};
|
||
var fileComponent_default = FileComponent;
|
||
|
||
// src/ui/sidebar/components/pulledFileComponent.svelte
|
||
var import_obsidian14 = __toModule(require("obsidian"));
|
||
function add_css2(target) {
|
||
append_styles(target, "svelte-1pr4yz5", "main.svelte-1pr4yz5.svelte-1pr4yz5{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-1pr4yz5 .path.svelte-1pr4yz5{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-1pr4yz5:hover .path.svelte-1pr4yz5{color:var(--text-normal);transition:all 200ms}main.svelte-1pr4yz5 .tools.svelte-1pr4yz5{display:flex;align-items:center}main.svelte-1pr4yz5 .tools .type.svelte-1pr4yz5{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-1pr4yz5 .tools .type[data-type=M].svelte-1pr4yz5{color:orange}main.svelte-1pr4yz5 .tools .type[data-type=D].svelte-1pr4yz5{color:red}");
|
||
}
|
||
function create_fragment2(ctx) {
|
||
let main;
|
||
let span0;
|
||
let t0_value = ctx[0].vault_path.split("/").last().replace(".md", "") + "";
|
||
let t0;
|
||
let span0_aria_label_value;
|
||
let t1;
|
||
let div;
|
||
let span1;
|
||
let t2_value = ctx[0].working_dir + "";
|
||
let t2;
|
||
let span1_data_type_value;
|
||
let mounted;
|
||
let dispose;
|
||
return {
|
||
c() {
|
||
main = element("main");
|
||
span0 = element("span");
|
||
t0 = text(t0_value);
|
||
t1 = space();
|
||
div = element("div");
|
||
span1 = element("span");
|
||
t2 = text(t2_value);
|
||
attr(span0, "class", "path svelte-1pr4yz5");
|
||
attr(span0, "aria-label-position", ctx[1]);
|
||
attr(span0, "aria-label", span0_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : "");
|
||
attr(span1, "class", "type svelte-1pr4yz5");
|
||
attr(span1, "data-type", span1_data_type_value = ctx[0].working_dir);
|
||
attr(div, "class", "tools svelte-1pr4yz5");
|
||
attr(main, "class", "svelte-1pr4yz5");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, main, anchor);
|
||
append2(main, span0);
|
||
append2(span0, t0);
|
||
append2(main, t1);
|
||
append2(main, div);
|
||
append2(div, span1);
|
||
append2(span1, t2);
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(span0, "click", self2(ctx[3])),
|
||
listen(main, "mouseover", ctx[2]),
|
||
listen(main, "click", self2(ctx[3])),
|
||
listen(main, "focus", ctx[5])
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & 1 && t0_value !== (t0_value = ctx2[0].vault_path.split("/").last().replace(".md", "") + ""))
|
||
set_data(t0, t0_value);
|
||
if (dirty & 2) {
|
||
attr(span0, "aria-label-position", ctx2[1]);
|
||
}
|
||
if (dirty & 1 && span0_aria_label_value !== (span0_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) {
|
||
attr(span0, "aria-label", span0_aria_label_value);
|
||
}
|
||
if (dirty & 1 && t2_value !== (t2_value = ctx2[0].working_dir + ""))
|
||
set_data(t2, t2_value);
|
||
if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].working_dir)) {
|
||
attr(span1, "data-type", span1_data_type_value);
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(main);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance2($$self, $$props, $$invalidate) {
|
||
let side;
|
||
let { change } = $$props;
|
||
let { view } = $$props;
|
||
function hover(event) {
|
||
if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
|
||
hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", ""));
|
||
}
|
||
}
|
||
function open(event) {
|
||
if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.working_dir === "D")) {
|
||
openOrSwitch(change.vault_path, event);
|
||
}
|
||
}
|
||
function focus_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("change" in $$props2)
|
||
$$invalidate(0, change = $$props2.change);
|
||
if ("view" in $$props2)
|
||
$$invalidate(4, view = $$props2.view);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & 16) {
|
||
$:
|
||
$$invalidate(1, side = view.leaf.getRoot().side == "left" ? "right" : "left");
|
||
}
|
||
};
|
||
return [change, side, hover, open, view, focus_handler];
|
||
}
|
||
var PulledFileComponent = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance2, create_fragment2, safe_not_equal, { change: 0, view: 4 }, add_css2);
|
||
}
|
||
};
|
||
var pulledFileComponent_default = PulledFileComponent;
|
||
|
||
// src/ui/sidebar/components/stagedFileComponent.svelte
|
||
var import_obsidian15 = __toModule(require("obsidian"));
|
||
function add_css3(target) {
|
||
append_styles(target, "svelte-15heedx", "main.svelte-15heedx.svelte-15heedx.svelte-15heedx{cursor:pointer;background-color:var(--background-secondary);border-radius:4px;width:98%;display:flex;justify-content:space-between;font-size:0.8rem;margin-bottom:2px}main.svelte-15heedx .path.svelte-15heedx.svelte-15heedx{color:var(--text-muted);white-space:nowrap;max-width:75%;overflow:hidden;text-overflow:ellipsis}main.svelte-15heedx:hover .path.svelte-15heedx.svelte-15heedx{color:var(--text-normal);transition:all 200ms}main.svelte-15heedx .tools.svelte-15heedx.svelte-15heedx{display:flex;align-items:center}main.svelte-15heedx .tools .type.svelte-15heedx.svelte-15heedx{height:16px;width:16px;margin:0;display:flex;align-items:center;justify-content:center}main.svelte-15heedx .tools .type[data-type=M].svelte-15heedx.svelte-15heedx{color:orange}main.svelte-15heedx .tools .type[data-type=D].svelte-15heedx.svelte-15heedx{color:red}main.svelte-15heedx .tools .type[data-type=A].svelte-15heedx.svelte-15heedx{color:yellowgreen}main.svelte-15heedx .tools .type[data-type=R].svelte-15heedx.svelte-15heedx{color:violet}main.svelte-15heedx .tools .buttons.svelte-15heedx.svelte-15heedx{display:flex}main.svelte-15heedx .tools .buttons.svelte-15heedx>.svelte-15heedx{color:var(--text-faint);height:16px;width:16px;margin:0;transition:all 0.2s;border-radius:2px;margin-right:1px}main.svelte-15heedx .tools .buttons.svelte-15heedx>.svelte-15heedx:hover{color:var(--text-normal);background-color:var(--interactive-accent)}");
|
||
}
|
||
function create_if_block2(ctx) {
|
||
let div;
|
||
let mounted;
|
||
let dispose;
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
attr(div, "data-icon", "go-to-file");
|
||
attr(div, "aria-label", "Open File");
|
||
attr(div, "class", "svelte-15heedx");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
ctx[11](div);
|
||
if (!mounted) {
|
||
dispose = listen(div, "click", ctx[6]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
ctx[11](null);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
function create_fragment3(ctx) {
|
||
let main;
|
||
let span0;
|
||
let t0_value = ctx[3].split("/").last().replace(".md", "") + "";
|
||
let t0;
|
||
let span0_aria_label_value;
|
||
let t1;
|
||
let div2;
|
||
let div1;
|
||
let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[3]);
|
||
let t2;
|
||
let div0;
|
||
let t3;
|
||
let span1;
|
||
let t4_value = ctx[0].index + "";
|
||
let t4;
|
||
let span1_data_type_value;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block = show_if && create_if_block2(ctx);
|
||
return {
|
||
c() {
|
||
main = element("main");
|
||
span0 = element("span");
|
||
t0 = text(t0_value);
|
||
t1 = space();
|
||
div2 = element("div");
|
||
div1 = element("div");
|
||
if (if_block)
|
||
if_block.c();
|
||
t2 = space();
|
||
div0 = element("div");
|
||
t3 = space();
|
||
span1 = element("span");
|
||
t4 = text(t4_value);
|
||
attr(span0, "class", "path svelte-15heedx");
|
||
attr(span0, "aria-label-position", ctx[4]);
|
||
attr(span0, "aria-label", span0_aria_label_value = ctx[3].split("/").last() != ctx[3] ? ctx[3] : "");
|
||
attr(div0, "data-icon", "minus");
|
||
attr(div0, "aria-label", "Unstage");
|
||
attr(div0, "class", "svelte-15heedx");
|
||
attr(div1, "class", "buttons svelte-15heedx");
|
||
attr(span1, "class", "type svelte-15heedx");
|
||
attr(span1, "data-type", span1_data_type_value = ctx[0].index);
|
||
attr(div2, "class", "tools svelte-15heedx");
|
||
attr(main, "class", "svelte-15heedx");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, main, anchor);
|
||
append2(main, span0);
|
||
append2(span0, t0);
|
||
append2(main, t1);
|
||
append2(main, div2);
|
||
append2(div2, div1);
|
||
if (if_block)
|
||
if_block.m(div1, null);
|
||
append2(div1, t2);
|
||
append2(div1, div0);
|
||
ctx[12](div0);
|
||
append2(div2, t3);
|
||
append2(div2, span1);
|
||
append2(span1, t4);
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(span0, "click", ctx[7]),
|
||
listen(div0, "click", ctx[8]),
|
||
listen(main, "mouseover", ctx[5]),
|
||
listen(main, "focus", ctx[10]),
|
||
listen(main, "click", self2(ctx[7]))
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & 8 && t0_value !== (t0_value = ctx2[3].split("/").last().replace(".md", "") + ""))
|
||
set_data(t0, t0_value);
|
||
if (dirty & 16) {
|
||
attr(span0, "aria-label-position", ctx2[4]);
|
||
}
|
||
if (dirty & 8 && span0_aria_label_value !== (span0_aria_label_value = ctx2[3].split("/").last() != ctx2[3] ? ctx2[3] : "")) {
|
||
attr(span0, "aria-label", span0_aria_label_value);
|
||
}
|
||
if (dirty & 10)
|
||
show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[3]);
|
||
if (show_if) {
|
||
if (if_block) {
|
||
if_block.p(ctx2, dirty);
|
||
} else {
|
||
if_block = create_if_block2(ctx2);
|
||
if_block.c();
|
||
if_block.m(div1, t2);
|
||
}
|
||
} else if (if_block) {
|
||
if_block.d(1);
|
||
if_block = null;
|
||
}
|
||
if (dirty & 1 && t4_value !== (t4_value = ctx2[0].index + ""))
|
||
set_data(t4, t4_value);
|
||
if (dirty & 1 && span1_data_type_value !== (span1_data_type_value = ctx2[0].index)) {
|
||
attr(span1, "data-type", span1_data_type_value);
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(main);
|
||
if (if_block)
|
||
if_block.d();
|
||
ctx[12](null);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance3($$self, $$props, $$invalidate) {
|
||
let formattedPath;
|
||
let side;
|
||
let { change } = $$props;
|
||
let { view } = $$props;
|
||
let { manager } = $$props;
|
||
let buttons = [];
|
||
window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian15.setIcon)(b, b.getAttr("data-icon"), 16)), 0);
|
||
function hover(event) {
|
||
if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
|
||
hoverPreview(event, view, formattedPath.split("/").last().replace(".md", ""));
|
||
}
|
||
}
|
||
function open(event) {
|
||
if (!(change.path.startsWith(view.app.vault.configDir) || change.path.startsWith(".") || change.index === "D")) {
|
||
openOrSwitch(formattedPath, event);
|
||
}
|
||
}
|
||
function showDiff(event) {
|
||
const workspace = view.app.workspace;
|
||
const leaf = workspace.getMostRecentLeaf(workspace.rootSplit);
|
||
if (leaf && !leaf.getViewState().pinned && !(event.ctrlKey || event.getModifierState("Meta"))) {
|
||
leaf.setViewState({
|
||
type: DIFF_VIEW_CONFIG.type,
|
||
state: { file: change.path, staged: true }
|
||
});
|
||
workspace.setActiveLeaf(leaf, true, true);
|
||
} else {
|
||
workspace.createLeafInParent(workspace.rootSplit, 0).setViewState({
|
||
type: DIFF_VIEW_CONFIG.type,
|
||
active: true,
|
||
state: { file: change.path, staged: true }
|
||
});
|
||
}
|
||
}
|
||
function unstage() {
|
||
manager.unstage(change.path, false).finally(() => {
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
});
|
||
}
|
||
function focus_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function div_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[1] = $$value;
|
||
$$invalidate(2, buttons);
|
||
});
|
||
}
|
||
function div0_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[0] = $$value;
|
||
$$invalidate(2, buttons);
|
||
});
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("change" in $$props2)
|
||
$$invalidate(0, change = $$props2.change);
|
||
if ("view" in $$props2)
|
||
$$invalidate(1, view = $$props2.view);
|
||
if ("manager" in $$props2)
|
||
$$invalidate(9, manager = $$props2.manager);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & 1) {
|
||
$:
|
||
$$invalidate(3, formattedPath = change.vault_path);
|
||
}
|
||
if ($$self.$$.dirty & 2) {
|
||
$:
|
||
$$invalidate(4, side = view.leaf.getRoot().side == "left" ? "right" : "left");
|
||
}
|
||
};
|
||
return [
|
||
change,
|
||
view,
|
||
buttons,
|
||
formattedPath,
|
||
side,
|
||
hover,
|
||
open,
|
||
showDiff,
|
||
unstage,
|
||
manager,
|
||
focus_handler,
|
||
div_binding,
|
||
div0_binding
|
||
];
|
||
}
|
||
var StagedFileComponent = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance3, create_fragment3, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3);
|
||
}
|
||
};
|
||
var stagedFileComponent_default = StagedFileComponent;
|
||
|
||
// src/ui/sidebar/components/treeComponent.svelte
|
||
function add_css4(target) {
|
||
append_styles(target, "svelte-pgmdei", '@charset "UTF-8";main.svelte-pgmdei.svelte-pgmdei:not(.topLevel){margin-left:5px}.opener.svelte-pgmdei.svelte-pgmdei{display:flex;justify-content:space-between;align-items:center;padding:0 4px}.opener.svelte-pgmdei .collapse-icon.svelte-pgmdei::after{content:"\xA0"}.opener.svelte-pgmdei div.svelte-pgmdei{display:flex}.opener.svelte-pgmdei svg.svelte-pgmdei{transform:rotate(-90deg)}.opener.open.svelte-pgmdei svg.svelte-pgmdei{transform:rotate(0)}.opener.svelte-pgmdei span.svelte-pgmdei{font-size:0.8rem}.file-view.svelte-pgmdei.svelte-pgmdei{margin-left:5px}');
|
||
}
|
||
function get_each_context(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[7] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function create_else_block(ctx) {
|
||
let div2;
|
||
let div1;
|
||
let div0;
|
||
let t0;
|
||
let span;
|
||
let t1_value = ctx[7].title + "";
|
||
let t1;
|
||
let t2;
|
||
let if_block_anchor;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
function click_handler() {
|
||
return ctx[6](ctx[7]);
|
||
}
|
||
let if_block = !ctx[5][ctx[7].title] && create_if_block_4(ctx);
|
||
return {
|
||
c() {
|
||
div2 = element("div");
|
||
div1 = element("div");
|
||
div0 = element("div");
|
||
div0.innerHTML = `<svg viewBox="0 0 100 100" class="right-triangle svelte-pgmdei" width="8" height="8"><path fill="currentColor" stroke="currentColor" d="M94.9,20.8c-1.4-2.5-4.1-4.1-7.1-4.1H12.2c-3,0-5.7,1.6-7.1,4.1c-1.3,2.4-1.2,5.2,0.2,7.6L43.1,88c1.5,2.3,4,3.7,6.9,3.7 s5.4-1.4,6.9-3.7l37.8-59.6C96.1,26,96.2,23.2,94.9,20.8L94.9,20.8z"></path></svg>`;
|
||
t0 = space();
|
||
span = element("span");
|
||
t1 = text(t1_value);
|
||
t2 = space();
|
||
if (if_block)
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
attr(div0, "class", "tree-item-icon collapse-icon svelte-pgmdei");
|
||
attr(div0, "style", "");
|
||
attr(span, "class", "svelte-pgmdei");
|
||
attr(div1, "class", "svelte-pgmdei");
|
||
attr(div2, "class", "opener tree-item-self is-clickable svelte-pgmdei");
|
||
toggle_class(div2, "open", !ctx[5][ctx[7].title]);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div2, anchor);
|
||
append2(div2, div1);
|
||
append2(div1, div0);
|
||
append2(div1, t0);
|
||
append2(div1, span);
|
||
append2(span, t1);
|
||
insert(target, t2, anchor);
|
||
if (if_block)
|
||
if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = listen(div2, "click", click_handler);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
if ((!current || dirty & 1) && t1_value !== (t1_value = ctx[7].title + ""))
|
||
set_data(t1, t1_value);
|
||
if (dirty & 33) {
|
||
toggle_class(div2, "open", !ctx[5][ctx[7].title]);
|
||
}
|
||
if (!ctx[5][ctx[7].title]) {
|
||
if (if_block) {
|
||
if_block.p(ctx, dirty);
|
||
if (dirty & 33) {
|
||
transition_in(if_block, 1);
|
||
}
|
||
} else {
|
||
if_block = create_if_block_4(ctx);
|
||
if_block.c();
|
||
transition_in(if_block, 1);
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
} else if (if_block) {
|
||
group_outros();
|
||
transition_out(if_block, 1, 1, () => {
|
||
if_block = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div2);
|
||
if (detaching)
|
||
detach(t2);
|
||
if (if_block)
|
||
if_block.d(detaching);
|
||
if (detaching)
|
||
detach(if_block_anchor);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
function create_if_block3(ctx) {
|
||
let div;
|
||
let current_block_type_index;
|
||
let if_block;
|
||
let t;
|
||
let current;
|
||
const if_block_creators = [create_if_block_1, create_if_block_2, create_if_block_3];
|
||
const if_blocks = [];
|
||
function select_block_type_1(ctx2, dirty) {
|
||
if (ctx2[3] == FileType.staged)
|
||
return 0;
|
||
if (ctx2[3] == FileType.changed)
|
||
return 1;
|
||
if (ctx2[3] == FileType.pulled)
|
||
return 2;
|
||
return -1;
|
||
}
|
||
if (~(current_block_type_index = select_block_type_1(ctx, -1))) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
|
||
}
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
if (if_block)
|
||
if_block.c();
|
||
t = space();
|
||
attr(div, "class", "file-view svelte-pgmdei");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
if (~current_block_type_index) {
|
||
if_blocks[current_block_type_index].m(div, null);
|
||
}
|
||
append2(div, t);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
let previous_block_index = current_block_type_index;
|
||
current_block_type_index = select_block_type_1(ctx2, dirty);
|
||
if (current_block_type_index === previous_block_index) {
|
||
if (~current_block_type_index) {
|
||
if_blocks[current_block_type_index].p(ctx2, dirty);
|
||
}
|
||
} else {
|
||
if (if_block) {
|
||
group_outros();
|
||
transition_out(if_blocks[previous_block_index], 1, 1, () => {
|
||
if_blocks[previous_block_index] = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
if (~current_block_type_index) {
|
||
if_block = if_blocks[current_block_type_index];
|
||
if (!if_block) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
|
||
if_block.c();
|
||
} else {
|
||
if_block.p(ctx2, dirty);
|
||
}
|
||
transition_in(if_block, 1);
|
||
if_block.m(div, t);
|
||
} else {
|
||
if_block = null;
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
if (~current_block_type_index) {
|
||
if_blocks[current_block_type_index].d();
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_4(ctx) {
|
||
let div;
|
||
let treecomponent;
|
||
let t;
|
||
let div_transition;
|
||
let current;
|
||
treecomponent = new TreeComponent({
|
||
props: {
|
||
hierarchy: ctx[7],
|
||
plugin: ctx[1],
|
||
view: ctx[2],
|
||
fileType: ctx[3]
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
create_component(treecomponent.$$.fragment);
|
||
t = space();
|
||
attr(div, "class", "file-view svelte-pgmdei");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
mount_component(treecomponent, div, null);
|
||
append2(div, t);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const treecomponent_changes = {};
|
||
if (dirty & 1)
|
||
treecomponent_changes.hierarchy = ctx2[7];
|
||
if (dirty & 2)
|
||
treecomponent_changes.plugin = ctx2[1];
|
||
if (dirty & 4)
|
||
treecomponent_changes.view = ctx2[2];
|
||
if (dirty & 8)
|
||
treecomponent_changes.fileType = ctx2[3];
|
||
treecomponent.$set(treecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(treecomponent.$$.fragment, local);
|
||
if (local) {
|
||
add_render_callback(() => {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 75 }, true);
|
||
div_transition.run(1);
|
||
});
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(treecomponent.$$.fragment, local);
|
||
if (local) {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 75 }, false);
|
||
div_transition.run(0);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
destroy_component(treecomponent);
|
||
if (detaching && div_transition)
|
||
div_transition.end();
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_3(ctx) {
|
||
let pulledfilecomponent;
|
||
let current;
|
||
pulledfilecomponent = new pulledFileComponent_default({
|
||
props: {
|
||
change: ctx[7].statusResult,
|
||
view: ctx[2]
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(pulledfilecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(pulledfilecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const pulledfilecomponent_changes = {};
|
||
if (dirty & 1)
|
||
pulledfilecomponent_changes.change = ctx2[7].statusResult;
|
||
if (dirty & 4)
|
||
pulledfilecomponent_changes.view = ctx2[2];
|
||
pulledfilecomponent.$set(pulledfilecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(pulledfilecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(pulledfilecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(pulledfilecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_2(ctx) {
|
||
let filecomponent;
|
||
let current;
|
||
filecomponent = new fileComponent_default({
|
||
props: {
|
||
change: ctx[7].statusResult,
|
||
manager: ctx[1].gitManager,
|
||
view: ctx[2],
|
||
workspace: ctx[1].app.workspace
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(filecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(filecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const filecomponent_changes = {};
|
||
if (dirty & 1)
|
||
filecomponent_changes.change = ctx2[7].statusResult;
|
||
if (dirty & 2)
|
||
filecomponent_changes.manager = ctx2[1].gitManager;
|
||
if (dirty & 4)
|
||
filecomponent_changes.view = ctx2[2];
|
||
if (dirty & 2)
|
||
filecomponent_changes.workspace = ctx2[1].app.workspace;
|
||
filecomponent.$set(filecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(filecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(filecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(filecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_1(ctx) {
|
||
let stagedfilecomponent;
|
||
let current;
|
||
stagedfilecomponent = new stagedFileComponent_default({
|
||
props: {
|
||
change: ctx[7].statusResult,
|
||
manager: ctx[1].gitManager,
|
||
view: ctx[2]
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(stagedfilecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(stagedfilecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const stagedfilecomponent_changes = {};
|
||
if (dirty & 1)
|
||
stagedfilecomponent_changes.change = ctx2[7].statusResult;
|
||
if (dirty & 2)
|
||
stagedfilecomponent_changes.manager = ctx2[1].gitManager;
|
||
if (dirty & 4)
|
||
stagedfilecomponent_changes.view = ctx2[2];
|
||
stagedfilecomponent.$set(stagedfilecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(stagedfilecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(stagedfilecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(stagedfilecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block(ctx) {
|
||
let current_block_type_index;
|
||
let if_block;
|
||
let if_block_anchor;
|
||
let current;
|
||
const if_block_creators = [create_if_block3, create_else_block];
|
||
const if_blocks = [];
|
||
function select_block_type(ctx2, dirty) {
|
||
if (ctx2[7].statusResult)
|
||
return 0;
|
||
return 1;
|
||
}
|
||
current_block_type_index = select_block_type(ctx, -1);
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
|
||
return {
|
||
c() {
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
if_blocks[current_block_type_index].m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
let previous_block_index = current_block_type_index;
|
||
current_block_type_index = select_block_type(ctx2, dirty);
|
||
if (current_block_type_index === previous_block_index) {
|
||
if_blocks[current_block_type_index].p(ctx2, dirty);
|
||
} else {
|
||
group_outros();
|
||
transition_out(if_blocks[previous_block_index], 1, 1, () => {
|
||
if_blocks[previous_block_index] = null;
|
||
});
|
||
check_outros();
|
||
if_block = if_blocks[current_block_type_index];
|
||
if (!if_block) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
|
||
if_block.c();
|
||
} else {
|
||
if_block.p(ctx2, dirty);
|
||
}
|
||
transition_in(if_block, 1);
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if_blocks[current_block_type_index].d(detaching);
|
||
if (detaching)
|
||
detach(if_block_anchor);
|
||
}
|
||
};
|
||
}
|
||
function create_fragment4(ctx) {
|
||
let main;
|
||
let current;
|
||
let each_value = ctx[0].children;
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
|
||
}
|
||
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
return {
|
||
c() {
|
||
main = element("main");
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
attr(main, "class", "svelte-pgmdei");
|
||
toggle_class(main, "topLevel", ctx[4]);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, main, anchor);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(main, null);
|
||
}
|
||
current = true;
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & 47) {
|
||
each_value = ctx2[0].children;
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
transition_in(each_blocks[i], 1);
|
||
} else {
|
||
each_blocks[i] = create_each_block(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(main, null);
|
||
}
|
||
}
|
||
group_outros();
|
||
for (i = each_value.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
check_outros();
|
||
}
|
||
if (dirty & 16) {
|
||
toggle_class(main, "topLevel", ctx2[4]);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
each_blocks = each_blocks.filter(Boolean);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(main);
|
||
destroy_each(each_blocks, detaching);
|
||
}
|
||
};
|
||
}
|
||
function instance4($$self, $$props, $$invalidate) {
|
||
let { hierarchy } = $$props;
|
||
let { plugin } = $$props;
|
||
let { view } = $$props;
|
||
let { fileType } = $$props;
|
||
let { topLevel = false } = $$props;
|
||
const closed = {};
|
||
const click_handler = (entity) => {
|
||
$$invalidate(5, closed[entity.title] = !closed[entity.title], closed);
|
||
};
|
||
$$self.$$set = ($$props2) => {
|
||
if ("hierarchy" in $$props2)
|
||
$$invalidate(0, hierarchy = $$props2.hierarchy);
|
||
if ("plugin" in $$props2)
|
||
$$invalidate(1, plugin = $$props2.plugin);
|
||
if ("view" in $$props2)
|
||
$$invalidate(2, view = $$props2.view);
|
||
if ("fileType" in $$props2)
|
||
$$invalidate(3, fileType = $$props2.fileType);
|
||
if ("topLevel" in $$props2)
|
||
$$invalidate(4, topLevel = $$props2.topLevel);
|
||
};
|
||
return [hierarchy, plugin, view, fileType, topLevel, closed, click_handler];
|
||
}
|
||
var TreeComponent = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance4, create_fragment4, safe_not_equal, {
|
||
hierarchy: 0,
|
||
plugin: 1,
|
||
view: 2,
|
||
fileType: 3,
|
||
topLevel: 4
|
||
}, add_css4);
|
||
}
|
||
};
|
||
var treeComponent_default = TreeComponent;
|
||
|
||
// src/ui/sidebar/gitView.svelte
|
||
function add_css5(target) {
|
||
append_styles(target, "svelte-1f0ksxd", '@charset "UTF-8";.commit-msg.svelte-1f0ksxd.svelte-1f0ksxd{width:100%;min-height:1.9em;height:1.9em;resize:vertical;padding:2px 5px;background-color:var(--background-modifier-form-field)}.search-input-container.svelte-1f0ksxd.svelte-1f0ksxd{width:100%}.file-view.svelte-1f0ksxd.svelte-1f0ksxd{margin-left:5px}.opener.svelte-1f0ksxd.svelte-1f0ksxd{display:flex;justify-content:space-between;align-items:center;padding:0 4px}.opener.svelte-1f0ksxd .collapse-icon.svelte-1f0ksxd::after{content:"\xA0"}.opener.svelte-1f0ksxd div.svelte-1f0ksxd{display:flex}.opener.svelte-1f0ksxd svg.svelte-1f0ksxd{transform:rotate(-90deg)}.opener.open.svelte-1f0ksxd svg.svelte-1f0ksxd{transform:rotate(0)}.git-view-body.svelte-1f0ksxd.svelte-1f0ksxd{overflow-y:auto;padding-left:10px}main.svelte-1f0ksxd.svelte-1f0ksxd{display:flex;flex-direction:column;height:100%;overflow-y:hidden}.nav-buttons-container.svelte-1f0ksxd.svelte-1f0ksxd{justify-content:space-between}.group.svelte-1f0ksxd.svelte-1f0ksxd{display:flex}');
|
||
}
|
||
function get_each_context2(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[34] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function get_each_context_1(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[34] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function get_each_context_2(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[39] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function create_if_block_8(ctx) {
|
||
let div;
|
||
let div_aria_label_value;
|
||
let mounted;
|
||
let dispose;
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
attr(div, "class", "search-input-clear-button");
|
||
attr(div, "aria-label", div_aria_label_value = "Clear");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
if (!mounted) {
|
||
dispose = listen(div, "click", ctx[29]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
function create_if_block4(ctx) {
|
||
let div3;
|
||
let div2;
|
||
let div1;
|
||
let t2;
|
||
let span1;
|
||
let t3_value = ctx[5].staged.length + "";
|
||
let t3;
|
||
let t4;
|
||
let t5;
|
||
let div7;
|
||
let div6;
|
||
let div5;
|
||
let t8;
|
||
let span3;
|
||
let t9_value = ctx[5].changed.length + "";
|
||
let t9;
|
||
let t10;
|
||
let t11;
|
||
let if_block2_anchor;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block0 = ctx[13] && create_if_block_6(ctx);
|
||
let if_block1 = ctx[12] && create_if_block_42(ctx);
|
||
let if_block2 = ctx[6].length > 0 && create_if_block_12(ctx);
|
||
return {
|
||
c() {
|
||
div3 = element("div");
|
||
div2 = element("div");
|
||
div1 = element("div");
|
||
div1.innerHTML = `<div class="tree-item-icon collapse-icon svelte-1f0ksxd" style=""><svg viewBox="0 0 100 100" class="right-triangle svelte-1f0ksxd" width="8" height="8"><path fill="currentColor" stroke="currentColor" d="M94.9,20.8c-1.4-2.5-4.1-4.1-7.1-4.1H12.2c-3,0-5.7,1.6-7.1,4.1c-1.3,2.4-1.2,5.2,0.2,7.6L43.1,88c1.5,2.3,4,3.7,6.9,3.7 s5.4-1.4,6.9-3.7l37.8-59.6C96.1,26,96.2,23.2,94.9,20.8L94.9,20.8z"></path></svg></div>
|
||
<span>Staged Changes</span>`;
|
||
t2 = space();
|
||
span1 = element("span");
|
||
t3 = text(t3_value);
|
||
t4 = space();
|
||
if (if_block0)
|
||
if_block0.c();
|
||
t5 = space();
|
||
div7 = element("div");
|
||
div6 = element("div");
|
||
div5 = element("div");
|
||
div5.innerHTML = `<div class="tree-item-icon collapse-icon svelte-1f0ksxd" style=""><svg viewBox="0 0 100 100" class="right-triangle svelte-1f0ksxd" width="8" height="8"><path fill="currentColor" stroke="currentColor" d="M94.9,20.8c-1.4-2.5-4.1-4.1-7.1-4.1H12.2c-3,0-5.7,1.6-7.1,4.1c-1.3,2.4-1.2,5.2,0.2,7.6L43.1,88c1.5,2.3,4,3.7,6.9,3.7 s5.4-1.4,6.9-3.7l37.8-59.6C96.1,26,96.2,23.2,94.9,20.8L94.9,20.8z"></path></svg></div>
|
||
<span>Changes</span>`;
|
||
t8 = space();
|
||
span3 = element("span");
|
||
t9 = text(t9_value);
|
||
t10 = space();
|
||
if (if_block1)
|
||
if_block1.c();
|
||
t11 = space();
|
||
if (if_block2)
|
||
if_block2.c();
|
||
if_block2_anchor = empty();
|
||
attr(div1, "class", "svelte-1f0ksxd");
|
||
attr(span1, "class", "tree-item-flair");
|
||
attr(div2, "class", "opener tree-item-self is-clickable svelte-1f0ksxd");
|
||
toggle_class(div2, "open", ctx[13]);
|
||
attr(div3, "class", "staged");
|
||
attr(div5, "class", "svelte-1f0ksxd");
|
||
attr(span3, "class", "tree-item-flair");
|
||
attr(div6, "class", "opener tree-item-self is-clickable svelte-1f0ksxd");
|
||
toggle_class(div6, "open", ctx[12]);
|
||
attr(div7, "class", "changes");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div3, anchor);
|
||
append2(div3, div2);
|
||
append2(div2, div1);
|
||
append2(div2, t2);
|
||
append2(div2, span1);
|
||
append2(span1, t3);
|
||
append2(div3, t4);
|
||
if (if_block0)
|
||
if_block0.m(div3, null);
|
||
insert(target, t5, anchor);
|
||
insert(target, div7, anchor);
|
||
append2(div7, div6);
|
||
append2(div6, div5);
|
||
append2(div6, t8);
|
||
append2(div6, span3);
|
||
append2(span3, t9);
|
||
append2(div7, t10);
|
||
if (if_block1)
|
||
if_block1.m(div7, null);
|
||
insert(target, t11, anchor);
|
||
if (if_block2)
|
||
if_block2.m(target, anchor);
|
||
insert(target, if_block2_anchor, anchor);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(div2, "click", ctx[30]),
|
||
listen(div6, "click", ctx[31])
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, dirty) {
|
||
if ((!current || dirty[0] & 32) && t3_value !== (t3_value = ctx2[5].staged.length + ""))
|
||
set_data(t3, t3_value);
|
||
if (dirty[0] & 8192) {
|
||
toggle_class(div2, "open", ctx2[13]);
|
||
}
|
||
if (ctx2[13]) {
|
||
if (if_block0) {
|
||
if_block0.p(ctx2, dirty);
|
||
if (dirty[0] & 8192) {
|
||
transition_in(if_block0, 1);
|
||
}
|
||
} else {
|
||
if_block0 = create_if_block_6(ctx2);
|
||
if_block0.c();
|
||
transition_in(if_block0, 1);
|
||
if_block0.m(div3, null);
|
||
}
|
||
} else if (if_block0) {
|
||
group_outros();
|
||
transition_out(if_block0, 1, 1, () => {
|
||
if_block0 = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
if ((!current || dirty[0] & 32) && t9_value !== (t9_value = ctx2[5].changed.length + ""))
|
||
set_data(t9, t9_value);
|
||
if (dirty[0] & 4096) {
|
||
toggle_class(div6, "open", ctx2[12]);
|
||
}
|
||
if (ctx2[12]) {
|
||
if (if_block1) {
|
||
if_block1.p(ctx2, dirty);
|
||
if (dirty[0] & 4096) {
|
||
transition_in(if_block1, 1);
|
||
}
|
||
} else {
|
||
if_block1 = create_if_block_42(ctx2);
|
||
if_block1.c();
|
||
transition_in(if_block1, 1);
|
||
if_block1.m(div7, null);
|
||
}
|
||
} else if (if_block1) {
|
||
group_outros();
|
||
transition_out(if_block1, 1, 1, () => {
|
||
if_block1 = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
if (ctx2[6].length > 0) {
|
||
if (if_block2) {
|
||
if_block2.p(ctx2, dirty);
|
||
if (dirty[0] & 64) {
|
||
transition_in(if_block2, 1);
|
||
}
|
||
} else {
|
||
if_block2 = create_if_block_12(ctx2);
|
||
if_block2.c();
|
||
transition_in(if_block2, 1);
|
||
if_block2.m(if_block2_anchor.parentNode, if_block2_anchor);
|
||
}
|
||
} else if (if_block2) {
|
||
group_outros();
|
||
transition_out(if_block2, 1, 1, () => {
|
||
if_block2 = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block0);
|
||
transition_in(if_block1);
|
||
transition_in(if_block2);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block0);
|
||
transition_out(if_block1);
|
||
transition_out(if_block2);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div3);
|
||
if (if_block0)
|
||
if_block0.d();
|
||
if (detaching)
|
||
detach(t5);
|
||
if (detaching)
|
||
detach(div7);
|
||
if (if_block1)
|
||
if_block1.d();
|
||
if (detaching)
|
||
detach(t11);
|
||
if (if_block2)
|
||
if_block2.d(detaching);
|
||
if (detaching)
|
||
detach(if_block2_anchor);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_6(ctx) {
|
||
let div;
|
||
let current_block_type_index;
|
||
let if_block;
|
||
let div_transition;
|
||
let current;
|
||
const if_block_creators = [create_if_block_7, create_else_block_2];
|
||
const if_blocks = [];
|
||
function select_block_type(ctx2, dirty) {
|
||
if (ctx2[2])
|
||
return 0;
|
||
return 1;
|
||
}
|
||
current_block_type_index = select_block_type(ctx, [-1, -1]);
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
if_block.c();
|
||
attr(div, "class", "file-view svelte-1f0ksxd");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
if_blocks[current_block_type_index].m(div, null);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
let previous_block_index = current_block_type_index;
|
||
current_block_type_index = select_block_type(ctx2, dirty);
|
||
if (current_block_type_index === previous_block_index) {
|
||
if_blocks[current_block_type_index].p(ctx2, dirty);
|
||
} else {
|
||
group_outros();
|
||
transition_out(if_blocks[previous_block_index], 1, 1, () => {
|
||
if_blocks[previous_block_index] = null;
|
||
});
|
||
check_outros();
|
||
if_block = if_blocks[current_block_type_index];
|
||
if (!if_block) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
|
||
if_block.c();
|
||
} else {
|
||
if_block.p(ctx2, dirty);
|
||
}
|
||
transition_in(if_block, 1);
|
||
if_block.m(div, null);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
if (local) {
|
||
add_render_callback(() => {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
|
||
div_transition.run(1);
|
||
});
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
if (local) {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
|
||
div_transition.run(0);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
if_blocks[current_block_type_index].d();
|
||
if (detaching && div_transition)
|
||
div_transition.end();
|
||
}
|
||
};
|
||
}
|
||
function create_else_block_2(ctx) {
|
||
let each_1_anchor;
|
||
let current;
|
||
let each_value_2 = ctx[5].staged;
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value_2.length; i += 1) {
|
||
each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
|
||
}
|
||
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
each_1_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
insert(target, each_1_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty[0] & 35) {
|
||
each_value_2 = ctx2[5].staged;
|
||
let i;
|
||
for (i = 0; i < each_value_2.length; i += 1) {
|
||
const child_ctx = get_each_context_2(ctx2, each_value_2, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
transition_in(each_blocks[i], 1);
|
||
} else {
|
||
each_blocks[i] = create_each_block_2(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
group_outros();
|
||
for (i = each_value_2.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
for (let i = 0; i < each_value_2.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
each_blocks = each_blocks.filter(Boolean);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_each(each_blocks, detaching);
|
||
if (detaching)
|
||
detach(each_1_anchor);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_7(ctx) {
|
||
let treecomponent;
|
||
let current;
|
||
treecomponent = new treeComponent_default({
|
||
props: {
|
||
hierarchy: ctx[10],
|
||
plugin: ctx[0],
|
||
view: ctx[1],
|
||
fileType: FileType.staged,
|
||
topLevel: true
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(treecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(treecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const treecomponent_changes = {};
|
||
if (dirty[0] & 1024)
|
||
treecomponent_changes.hierarchy = ctx2[10];
|
||
if (dirty[0] & 1)
|
||
treecomponent_changes.plugin = ctx2[0];
|
||
if (dirty[0] & 2)
|
||
treecomponent_changes.view = ctx2[1];
|
||
treecomponent.$set(treecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(treecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(treecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(treecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block_2(ctx) {
|
||
let stagedfilecomponent;
|
||
let current;
|
||
stagedfilecomponent = new stagedFileComponent_default({
|
||
props: {
|
||
change: ctx[39],
|
||
view: ctx[1],
|
||
manager: ctx[0].gitManager
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(stagedfilecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(stagedfilecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const stagedfilecomponent_changes = {};
|
||
if (dirty[0] & 32)
|
||
stagedfilecomponent_changes.change = ctx2[39];
|
||
if (dirty[0] & 2)
|
||
stagedfilecomponent_changes.view = ctx2[1];
|
||
if (dirty[0] & 1)
|
||
stagedfilecomponent_changes.manager = ctx2[0].gitManager;
|
||
stagedfilecomponent.$set(stagedfilecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(stagedfilecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(stagedfilecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(stagedfilecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_42(ctx) {
|
||
let div;
|
||
let current_block_type_index;
|
||
let if_block;
|
||
let div_transition;
|
||
let current;
|
||
const if_block_creators = [create_if_block_5, create_else_block_1];
|
||
const if_blocks = [];
|
||
function select_block_type_1(ctx2, dirty) {
|
||
if (ctx2[2])
|
||
return 0;
|
||
return 1;
|
||
}
|
||
current_block_type_index = select_block_type_1(ctx, [-1, -1]);
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
if_block.c();
|
||
attr(div, "class", "file-view svelte-1f0ksxd");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
if_blocks[current_block_type_index].m(div, null);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
let previous_block_index = current_block_type_index;
|
||
current_block_type_index = select_block_type_1(ctx2, dirty);
|
||
if (current_block_type_index === previous_block_index) {
|
||
if_blocks[current_block_type_index].p(ctx2, dirty);
|
||
} else {
|
||
group_outros();
|
||
transition_out(if_blocks[previous_block_index], 1, 1, () => {
|
||
if_blocks[previous_block_index] = null;
|
||
});
|
||
check_outros();
|
||
if_block = if_blocks[current_block_type_index];
|
||
if (!if_block) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
|
||
if_block.c();
|
||
} else {
|
||
if_block.p(ctx2, dirty);
|
||
}
|
||
transition_in(if_block, 1);
|
||
if_block.m(div, null);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
if (local) {
|
||
add_render_callback(() => {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
|
||
div_transition.run(1);
|
||
});
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
if (local) {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
|
||
div_transition.run(0);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
if_blocks[current_block_type_index].d();
|
||
if (detaching && div_transition)
|
||
div_transition.end();
|
||
}
|
||
};
|
||
}
|
||
function create_else_block_1(ctx) {
|
||
let each_1_anchor;
|
||
let current;
|
||
let each_value_1 = ctx[5].changed;
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value_1.length; i += 1) {
|
||
each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
|
||
}
|
||
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
each_1_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
insert(target, each_1_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty[0] & 35) {
|
||
each_value_1 = ctx2[5].changed;
|
||
let i;
|
||
for (i = 0; i < each_value_1.length; i += 1) {
|
||
const child_ctx = get_each_context_1(ctx2, each_value_1, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
transition_in(each_blocks[i], 1);
|
||
} else {
|
||
each_blocks[i] = create_each_block_1(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
group_outros();
|
||
for (i = each_value_1.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
for (let i = 0; i < each_value_1.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
each_blocks = each_blocks.filter(Boolean);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_each(each_blocks, detaching);
|
||
if (detaching)
|
||
detach(each_1_anchor);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_5(ctx) {
|
||
let treecomponent;
|
||
let current;
|
||
treecomponent = new treeComponent_default({
|
||
props: {
|
||
hierarchy: ctx[9],
|
||
plugin: ctx[0],
|
||
view: ctx[1],
|
||
fileType: FileType.changed,
|
||
topLevel: true
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(treecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(treecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const treecomponent_changes = {};
|
||
if (dirty[0] & 512)
|
||
treecomponent_changes.hierarchy = ctx2[9];
|
||
if (dirty[0] & 1)
|
||
treecomponent_changes.plugin = ctx2[0];
|
||
if (dirty[0] & 2)
|
||
treecomponent_changes.view = ctx2[1];
|
||
treecomponent.$set(treecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(treecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(treecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(treecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block_1(ctx) {
|
||
let filecomponent;
|
||
let current;
|
||
filecomponent = new fileComponent_default({
|
||
props: {
|
||
change: ctx[34],
|
||
view: ctx[1],
|
||
manager: ctx[0].gitManager,
|
||
workspace: ctx[0].app.workspace
|
||
}
|
||
});
|
||
filecomponent.$on("git-refresh", triggerRefresh);
|
||
return {
|
||
c() {
|
||
create_component(filecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(filecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const filecomponent_changes = {};
|
||
if (dirty[0] & 32)
|
||
filecomponent_changes.change = ctx2[34];
|
||
if (dirty[0] & 2)
|
||
filecomponent_changes.view = ctx2[1];
|
||
if (dirty[0] & 1)
|
||
filecomponent_changes.manager = ctx2[0].gitManager;
|
||
if (dirty[0] & 1)
|
||
filecomponent_changes.workspace = ctx2[0].app.workspace;
|
||
filecomponent.$set(filecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(filecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(filecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(filecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_12(ctx) {
|
||
let div3;
|
||
let div2;
|
||
let div1;
|
||
let t2;
|
||
let span1;
|
||
let t3_value = ctx[6].length + "";
|
||
let t3;
|
||
let t4;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block = ctx[14] && create_if_block_22(ctx);
|
||
return {
|
||
c() {
|
||
div3 = element("div");
|
||
div2 = element("div");
|
||
div1 = element("div");
|
||
div1.innerHTML = `<div class="tree-item-icon collapse-icon svelte-1f0ksxd" style=""><svg viewBox="0 0 100 100" class="right-triangle svelte-1f0ksxd" width="8" height="8"><path fill="currentColor" stroke="currentColor" d="M94.9,20.8c-1.4-2.5-4.1-4.1-7.1-4.1H12.2c-3,0-5.7,1.6-7.1,4.1c-1.3,2.4-1.2,5.2,0.2,7.6L43.1,88c1.5,2.3,4,3.7,6.9,3.7 s5.4-1.4,6.9-3.7l37.8-59.6C96.1,26,96.2,23.2,94.9,20.8L94.9,20.8z"></path></svg></div>
|
||
<span>Recently Pulled Changes</span>`;
|
||
t2 = space();
|
||
span1 = element("span");
|
||
t3 = text(t3_value);
|
||
t4 = space();
|
||
if (if_block)
|
||
if_block.c();
|
||
attr(div1, "class", "svelte-1f0ksxd");
|
||
attr(span1, "class", "tree-item-flair");
|
||
attr(div2, "class", "opener tree-item-self is-clickable svelte-1f0ksxd");
|
||
toggle_class(div2, "open", ctx[14]);
|
||
attr(div3, "class", "pulled");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div3, anchor);
|
||
append2(div3, div2);
|
||
append2(div2, div1);
|
||
append2(div2, t2);
|
||
append2(div2, span1);
|
||
append2(span1, t3);
|
||
append2(div3, t4);
|
||
if (if_block)
|
||
if_block.m(div3, null);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = listen(div2, "click", ctx[32]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, dirty) {
|
||
if ((!current || dirty[0] & 64) && t3_value !== (t3_value = ctx2[6].length + ""))
|
||
set_data(t3, t3_value);
|
||
if (dirty[0] & 16384) {
|
||
toggle_class(div2, "open", ctx2[14]);
|
||
}
|
||
if (ctx2[14]) {
|
||
if (if_block) {
|
||
if_block.p(ctx2, dirty);
|
||
if (dirty[0] & 16384) {
|
||
transition_in(if_block, 1);
|
||
}
|
||
} else {
|
||
if_block = create_if_block_22(ctx2);
|
||
if_block.c();
|
||
transition_in(if_block, 1);
|
||
if_block.m(div3, null);
|
||
}
|
||
} else if (if_block) {
|
||
group_outros();
|
||
transition_out(if_block, 1, 1, () => {
|
||
if_block = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div3);
|
||
if (if_block)
|
||
if_block.d();
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_22(ctx) {
|
||
let div;
|
||
let current_block_type_index;
|
||
let if_block;
|
||
let div_transition;
|
||
let current;
|
||
const if_block_creators = [create_if_block_32, create_else_block2];
|
||
const if_blocks = [];
|
||
function select_block_type_2(ctx2, dirty) {
|
||
if (ctx2[2])
|
||
return 0;
|
||
return 1;
|
||
}
|
||
current_block_type_index = select_block_type_2(ctx, [-1, -1]);
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
if_block.c();
|
||
attr(div, "class", "file-view svelte-1f0ksxd");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
if_blocks[current_block_type_index].m(div, null);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
let previous_block_index = current_block_type_index;
|
||
current_block_type_index = select_block_type_2(ctx2, dirty);
|
||
if (current_block_type_index === previous_block_index) {
|
||
if_blocks[current_block_type_index].p(ctx2, dirty);
|
||
} else {
|
||
group_outros();
|
||
transition_out(if_blocks[previous_block_index], 1, 1, () => {
|
||
if_blocks[previous_block_index] = null;
|
||
});
|
||
check_outros();
|
||
if_block = if_blocks[current_block_type_index];
|
||
if (!if_block) {
|
||
if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
|
||
if_block.c();
|
||
} else {
|
||
if_block.p(ctx2, dirty);
|
||
}
|
||
transition_in(if_block, 1);
|
||
if_block.m(div, null);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
if (local) {
|
||
add_render_callback(() => {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
|
||
div_transition.run(1);
|
||
});
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
if (local) {
|
||
if (!div_transition)
|
||
div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
|
||
div_transition.run(0);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(div);
|
||
if_blocks[current_block_type_index].d();
|
||
if (detaching && div_transition)
|
||
div_transition.end();
|
||
}
|
||
};
|
||
}
|
||
function create_else_block2(ctx) {
|
||
let each_1_anchor;
|
||
let current;
|
||
let each_value = ctx[6];
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i));
|
||
}
|
||
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
each_1_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
insert(target, each_1_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty[0] & 66) {
|
||
each_value = ctx2[6];
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context2(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
transition_in(each_blocks[i], 1);
|
||
} else {
|
||
each_blocks[i] = create_each_block2(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
group_outros();
|
||
for (i = each_value.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
each_blocks = each_blocks.filter(Boolean);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_each(each_blocks, detaching);
|
||
if (detaching)
|
||
detach(each_1_anchor);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_32(ctx) {
|
||
let treecomponent;
|
||
let current;
|
||
treecomponent = new treeComponent_default({
|
||
props: {
|
||
hierarchy: ctx[11],
|
||
plugin: ctx[0],
|
||
view: ctx[1],
|
||
fileType: FileType.pulled,
|
||
topLevel: true
|
||
}
|
||
});
|
||
return {
|
||
c() {
|
||
create_component(treecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(treecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const treecomponent_changes = {};
|
||
if (dirty[0] & 2048)
|
||
treecomponent_changes.hierarchy = ctx2[11];
|
||
if (dirty[0] & 1)
|
||
treecomponent_changes.plugin = ctx2[0];
|
||
if (dirty[0] & 2)
|
||
treecomponent_changes.view = ctx2[1];
|
||
treecomponent.$set(treecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(treecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(treecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(treecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block2(ctx) {
|
||
let pulledfilecomponent;
|
||
let current;
|
||
pulledfilecomponent = new pulledFileComponent_default({
|
||
props: {
|
||
change: ctx[34],
|
||
view: ctx[1]
|
||
}
|
||
});
|
||
pulledfilecomponent.$on("git-refresh", triggerRefresh);
|
||
return {
|
||
c() {
|
||
create_component(pulledfilecomponent.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(pulledfilecomponent, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const pulledfilecomponent_changes = {};
|
||
if (dirty[0] & 64)
|
||
pulledfilecomponent_changes.change = ctx2[34];
|
||
if (dirty[0] & 2)
|
||
pulledfilecomponent_changes.view = ctx2[1];
|
||
pulledfilecomponent.$set(pulledfilecomponent_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(pulledfilecomponent.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(pulledfilecomponent.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(pulledfilecomponent, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_fragment5(ctx) {
|
||
let main;
|
||
let div9;
|
||
let div6;
|
||
let div0;
|
||
let t0;
|
||
let div1;
|
||
let t1;
|
||
let div2;
|
||
let t2;
|
||
let div3;
|
||
let t3;
|
||
let div4;
|
||
let t4;
|
||
let div5;
|
||
let t5;
|
||
let div7;
|
||
let t6;
|
||
let div8;
|
||
let textarea;
|
||
let t7;
|
||
let t8;
|
||
let div10;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block0 = ctx[7] && create_if_block_8(ctx);
|
||
let if_block1 = ctx[5] && create_if_block4(ctx);
|
||
return {
|
||
c() {
|
||
main = element("main");
|
||
div9 = element("div");
|
||
div6 = element("div");
|
||
div0 = element("div");
|
||
t0 = space();
|
||
div1 = element("div");
|
||
t1 = space();
|
||
div2 = element("div");
|
||
t2 = space();
|
||
div3 = element("div");
|
||
t3 = space();
|
||
div4 = element("div");
|
||
t4 = space();
|
||
div5 = element("div");
|
||
t5 = space();
|
||
div7 = element("div");
|
||
t6 = space();
|
||
div8 = element("div");
|
||
textarea = element("textarea");
|
||
t7 = space();
|
||
if (if_block0)
|
||
if_block0.c();
|
||
t8 = space();
|
||
div10 = element("div");
|
||
if (if_block1)
|
||
if_block1.c();
|
||
attr(div0, "id", "commit-btn");
|
||
attr(div0, "data-icon", "check");
|
||
attr(div0, "class", "nav-action-button");
|
||
attr(div0, "aria-label", "Commit");
|
||
attr(div1, "id", "stage-all");
|
||
attr(div1, "class", "nav-action-button");
|
||
attr(div1, "data-icon", "plus-circle");
|
||
attr(div1, "aria-label", "Stage all");
|
||
attr(div2, "id", "unstage-all");
|
||
attr(div2, "class", "nav-action-button");
|
||
attr(div2, "data-icon", "minus-circle");
|
||
attr(div2, "aria-label", "Unstage all");
|
||
attr(div3, "id", "push");
|
||
attr(div3, "class", "nav-action-button");
|
||
attr(div3, "data-icon", "upload");
|
||
attr(div3, "aria-label", "Push");
|
||
attr(div4, "id", "pull");
|
||
attr(div4, "class", "nav-action-button");
|
||
attr(div4, "data-icon", "download");
|
||
attr(div4, "aria-label", "Pull");
|
||
attr(div5, "id", "layoutChange");
|
||
attr(div5, "class", "nav-action-button");
|
||
attr(div5, "aria-label", "Change Layout");
|
||
attr(div6, "class", "group svelte-1f0ksxd");
|
||
attr(div7, "id", "refresh");
|
||
attr(div7, "class", "nav-action-button");
|
||
attr(div7, "data-icon", "refresh-cw");
|
||
attr(div7, "aria-label", "Refresh");
|
||
toggle_class(div7, "loading", ctx[4]);
|
||
attr(textarea, "class", "commit-msg svelte-1f0ksxd");
|
||
attr(textarea, "type", "text");
|
||
attr(textarea, "spellcheck", "true");
|
||
attr(textarea, "placeholder", "Commit Message");
|
||
attr(div8, "class", "search-input-container svelte-1f0ksxd");
|
||
attr(div9, "class", "nav-buttons-container svelte-1f0ksxd");
|
||
attr(div10, "class", "git-view-body svelte-1f0ksxd");
|
||
attr(main, "class", "svelte-1f0ksxd");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, main, anchor);
|
||
append2(main, div9);
|
||
append2(div9, div6);
|
||
append2(div6, div0);
|
||
ctx[20](div0);
|
||
append2(div6, t0);
|
||
append2(div6, div1);
|
||
ctx[21](div1);
|
||
append2(div6, t1);
|
||
append2(div6, div2);
|
||
ctx[22](div2);
|
||
append2(div6, t2);
|
||
append2(div6, div3);
|
||
ctx[23](div3);
|
||
append2(div6, t3);
|
||
append2(div6, div4);
|
||
ctx[24](div4);
|
||
append2(div6, t4);
|
||
append2(div6, div5);
|
||
ctx[25](div5);
|
||
append2(div9, t5);
|
||
append2(div9, div7);
|
||
ctx[27](div7);
|
||
append2(div9, t6);
|
||
append2(div9, div8);
|
||
append2(div8, textarea);
|
||
set_input_value(textarea, ctx[7]);
|
||
append2(div8, t7);
|
||
if (if_block0)
|
||
if_block0.m(div8, null);
|
||
append2(main, t8);
|
||
append2(main, div10);
|
||
if (if_block1)
|
||
if_block1.m(div10, null);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(div0, "click", ctx[15]),
|
||
listen(div1, "click", ctx[16]),
|
||
listen(div2, "click", ctx[17]),
|
||
listen(div3, "click", ctx[18]),
|
||
listen(div4, "click", ctx[19]),
|
||
listen(div5, "click", ctx[26]),
|
||
listen(div7, "click", triggerRefresh),
|
||
listen(textarea, "input", ctx[28])
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty[0] & 16) {
|
||
toggle_class(div7, "loading", ctx2[4]);
|
||
}
|
||
if (dirty[0] & 128) {
|
||
set_input_value(textarea, ctx2[7]);
|
||
}
|
||
if (ctx2[7]) {
|
||
if (if_block0) {
|
||
if_block0.p(ctx2, dirty);
|
||
} else {
|
||
if_block0 = create_if_block_8(ctx2);
|
||
if_block0.c();
|
||
if_block0.m(div8, null);
|
||
}
|
||
} else if (if_block0) {
|
||
if_block0.d(1);
|
||
if_block0 = null;
|
||
}
|
||
if (ctx2[5]) {
|
||
if (if_block1) {
|
||
if_block1.p(ctx2, dirty);
|
||
if (dirty[0] & 32) {
|
||
transition_in(if_block1, 1);
|
||
}
|
||
} else {
|
||
if_block1 = create_if_block4(ctx2);
|
||
if_block1.c();
|
||
transition_in(if_block1, 1);
|
||
if_block1.m(div10, null);
|
||
}
|
||
} else if (if_block1) {
|
||
group_outros();
|
||
transition_out(if_block1, 1, 1, () => {
|
||
if_block1 = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block1);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block1);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching)
|
||
detach(main);
|
||
ctx[20](null);
|
||
ctx[21](null);
|
||
ctx[22](null);
|
||
ctx[23](null);
|
||
ctx[24](null);
|
||
ctx[25](null);
|
||
ctx[27](null);
|
||
if (if_block0)
|
||
if_block0.d();
|
||
if (if_block1)
|
||
if_block1.d();
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function triggerRefresh() {
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
}
|
||
function instance5($$self, $$props, $$invalidate) {
|
||
let { plugin } = $$props;
|
||
let { view } = $$props;
|
||
let loading;
|
||
let status;
|
||
let lastPulledFiles = [];
|
||
let commitMessage = plugin.settings.commitMessage;
|
||
let buttons = [];
|
||
let changeHierarchy;
|
||
let stagedHierarchy;
|
||
let lastPulledFilesHierarchy;
|
||
let changesOpen = true;
|
||
let stagedOpen = true;
|
||
let lastPulledFilesOpen = true;
|
||
let showTree = plugin.settings.treeStructure;
|
||
let layoutBtn;
|
||
addEventListener("git-view-refresh", refresh);
|
||
plugin.app.workspace.onLayoutReady(() => {
|
||
window.setTimeout(() => {
|
||
buttons.forEach((btn) => (0, import_obsidian16.setIcon)(btn, btn.getAttr("data-icon"), 16));
|
||
(0, import_obsidian16.setIcon)(layoutBtn, showTree ? "list" : "folder", 16);
|
||
}, 0);
|
||
});
|
||
onDestroy(() => {
|
||
removeEventListener("git-view-refresh", refresh);
|
||
});
|
||
function commit() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
$$invalidate(4, loading = true);
|
||
if (yield plugin.hasTooBigFiles(status.staged)) {
|
||
plugin.setState(PluginState.idle);
|
||
return false;
|
||
}
|
||
plugin.gitManager.commit(commitMessage).then(() => {
|
||
if (commitMessage !== plugin.settings.commitMessage) {
|
||
$$invalidate(7, commitMessage = "");
|
||
}
|
||
}).finally(triggerRefresh);
|
||
});
|
||
}
|
||
function refresh() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (!plugin.gitReady) {
|
||
$$invalidate(5, status = void 0);
|
||
return;
|
||
}
|
||
$$invalidate(5, status = plugin.cachedStatus);
|
||
if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) {
|
||
$$invalidate(6, lastPulledFiles = plugin.lastPulledFiles);
|
||
$$invalidate(11, lastPulledFilesHierarchy = {
|
||
title: "",
|
||
children: plugin.gitManager.getTreeStructure(lastPulledFiles)
|
||
});
|
||
}
|
||
if (status) {
|
||
if (status.changed.length + status.staged.length > 500) {
|
||
$$invalidate(5, status = void 0);
|
||
if (!plugin.loading) {
|
||
plugin.displayError("Too many changes to display");
|
||
}
|
||
} else {
|
||
$$invalidate(9, changeHierarchy = {
|
||
title: "",
|
||
children: plugin.gitManager.getTreeStructure(status.changed)
|
||
});
|
||
$$invalidate(10, stagedHierarchy = {
|
||
title: "",
|
||
children: plugin.gitManager.getTreeStructure(status.staged)
|
||
});
|
||
}
|
||
} else {
|
||
$$invalidate(9, changeHierarchy = void 0);
|
||
$$invalidate(10, stagedHierarchy = void 0);
|
||
}
|
||
$$invalidate(4, loading = plugin.loading);
|
||
});
|
||
}
|
||
function stageAll() {
|
||
$$invalidate(4, loading = true);
|
||
plugin.gitManager.stageAll({ status }).finally(triggerRefresh);
|
||
}
|
||
function unstageAll() {
|
||
$$invalidate(4, loading = true);
|
||
plugin.gitManager.unstageAll({ status }).finally(triggerRefresh);
|
||
}
|
||
function push() {
|
||
$$invalidate(4, loading = true);
|
||
if (ready) {
|
||
plugin.push().finally(triggerRefresh);
|
||
}
|
||
}
|
||
function pull() {
|
||
$$invalidate(4, loading = true);
|
||
plugin.pullChangesFromRemote().finally(triggerRefresh);
|
||
}
|
||
function div0_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[0] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function div1_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[1] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function div2_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[2] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function div3_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[3] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function div4_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[4] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function div5_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
layoutBtn = $$value;
|
||
$$invalidate(3, layoutBtn);
|
||
});
|
||
}
|
||
const click_handler = () => {
|
||
$$invalidate(2, showTree = !showTree);
|
||
$$invalidate(0, plugin.settings.treeStructure = showTree, plugin);
|
||
plugin.saveSettings();
|
||
};
|
||
function div7_binding($$value) {
|
||
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
||
buttons[6] = $$value;
|
||
$$invalidate(8, buttons);
|
||
});
|
||
}
|
||
function textarea_input_handler() {
|
||
commitMessage = this.value;
|
||
$$invalidate(7, commitMessage);
|
||
}
|
||
const click_handler_1 = () => $$invalidate(7, commitMessage = "");
|
||
const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen);
|
||
const click_handler_3 = () => $$invalidate(12, changesOpen = !changesOpen);
|
||
const click_handler_4 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen);
|
||
$$self.$$set = ($$props2) => {
|
||
if ("plugin" in $$props2)
|
||
$$invalidate(0, plugin = $$props2.plugin);
|
||
if ("view" in $$props2)
|
||
$$invalidate(1, view = $$props2.view);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty[0] & 12) {
|
||
$: {
|
||
if (layoutBtn) {
|
||
layoutBtn.empty();
|
||
(0, import_obsidian16.setIcon)(layoutBtn, showTree ? "list" : "folder", 16);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
return [
|
||
plugin,
|
||
view,
|
||
showTree,
|
||
layoutBtn,
|
||
loading,
|
||
status,
|
||
lastPulledFiles,
|
||
commitMessage,
|
||
buttons,
|
||
changeHierarchy,
|
||
stagedHierarchy,
|
||
lastPulledFilesHierarchy,
|
||
changesOpen,
|
||
stagedOpen,
|
||
lastPulledFilesOpen,
|
||
commit,
|
||
stageAll,
|
||
unstageAll,
|
||
push,
|
||
pull,
|
||
div0_binding,
|
||
div1_binding,
|
||
div2_binding,
|
||
div3_binding,
|
||
div4_binding,
|
||
div5_binding,
|
||
click_handler,
|
||
div7_binding,
|
||
textarea_input_handler,
|
||
click_handler_1,
|
||
click_handler_2,
|
||
click_handler_3,
|
||
click_handler_4
|
||
];
|
||
}
|
||
var GitView = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance5, create_fragment5, safe_not_equal, { plugin: 0, view: 1 }, add_css5, [-1, -1]);
|
||
}
|
||
};
|
||
var gitView_default = GitView;
|
||
|
||
// src/ui/sidebar/sidebarView.ts
|
||
var GitView2 = class extends import_obsidian17.ItemView {
|
||
constructor(leaf, plugin) {
|
||
super(leaf);
|
||
this.plugin = plugin;
|
||
this.hoverPopover = null;
|
||
}
|
||
getViewType() {
|
||
return GIT_VIEW_CONFIG.type;
|
||
}
|
||
getDisplayText() {
|
||
return GIT_VIEW_CONFIG.name;
|
||
}
|
||
getIcon() {
|
||
return GIT_VIEW_CONFIG.icon;
|
||
}
|
||
onClose() {
|
||
return super.onClose();
|
||
}
|
||
onOpen() {
|
||
this._view = new gitView_default({
|
||
target: this.contentEl,
|
||
props: {
|
||
plugin: this.plugin,
|
||
view: this
|
||
}
|
||
});
|
||
return super.onOpen();
|
||
}
|
||
};
|
||
|
||
// src/main.ts
|
||
var ObsidianGit = class extends import_obsidian18.Plugin {
|
||
constructor() {
|
||
super(...arguments);
|
||
this.gitReady = false;
|
||
this.promiseQueue = new PromiseQueue();
|
||
this.conflictOutputFile = "conflict-files-obsidian-git.md";
|
||
this.offlineMode = false;
|
||
this.loading = false;
|
||
this.debRefresh = (0, import_obsidian18.debounce)(() => {
|
||
if (this.settings.refreshSourceControl) {
|
||
this.refresh();
|
||
}
|
||
}, 7e3, true);
|
||
}
|
||
setState(state) {
|
||
var _a2;
|
||
this.state = state;
|
||
(_a2 = this.statusBar) == null ? void 0 : _a2.display();
|
||
}
|
||
updateCachedStatus() {
|
||
return __async(this, null, function* () {
|
||
this.cachedStatus = yield this.gitManager.status();
|
||
return this.cachedStatus;
|
||
});
|
||
}
|
||
refresh() {
|
||
return __async(this, null, function* () {
|
||
const gitView = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type);
|
||
if (this.settings.changedFilesInStatusBar || gitView.length > 0) {
|
||
this.loading = true;
|
||
dispatchEvent(new CustomEvent("git-view-refresh"));
|
||
yield this.updateCachedStatus();
|
||
this.loading = false;
|
||
dispatchEvent(new CustomEvent("git-view-refresh"));
|
||
}
|
||
});
|
||
}
|
||
onload() {
|
||
return __async(this, null, function* () {
|
||
console.log("loading " + this.manifest.name + " plugin");
|
||
this.localStorage = new LocalStorageSettings(this);
|
||
yield this.loadSettings();
|
||
this.migrateSettings();
|
||
addEventListener("git-refresh", this.refresh.bind(this));
|
||
this.registerView(GIT_VIEW_CONFIG.type, (leaf) => {
|
||
return new GitView2(leaf, this);
|
||
});
|
||
this.registerView(DIFF_VIEW_CONFIG.type, (leaf) => {
|
||
return new DiffView(leaf, this);
|
||
});
|
||
this.app.workspace.registerHoverLinkSource(GIT_VIEW_CONFIG.type, {
|
||
display: "Git View",
|
||
defaultMod: true
|
||
});
|
||
this.addSettingTab(new ObsidianGitSettingsTab(this.app, this));
|
||
this.addCommand({
|
||
id: "edit-gitignore",
|
||
name: "Edit .gitignore",
|
||
callback: () => __async(this, null, function* () {
|
||
const content = yield this.app.vault.adapter.read(this.gitManager.getVaultPath(".gitignore"));
|
||
const modal = new IgnoreModal(this.app, content);
|
||
const res = yield modal.open();
|
||
if (res !== void 0) {
|
||
yield this.app.vault.adapter.write(this.gitManager.getVaultPath(".gitignore"), res);
|
||
this.refresh();
|
||
}
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "open-git-view",
|
||
name: "Open source control view",
|
||
callback: () => __async(this, null, function* () {
|
||
if (this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type).length === 0) {
|
||
yield this.app.workspace.getRightLeaf(false).setViewState({
|
||
type: GIT_VIEW_CONFIG.type
|
||
});
|
||
}
|
||
this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type).first());
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "open-diff-view",
|
||
name: "Open diff view",
|
||
editorCallback: (editor, view) => __async(this, null, function* () {
|
||
this.app.workspace.createLeafBySplit(view.leaf).setViewState({ type: DIFF_VIEW_CONFIG.type, state: { staged: false, file: view.file.path } });
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "view-file-on-github",
|
||
name: "Open file on GitHub",
|
||
editorCallback: (editor, { file }) => openLineInGitHub(editor, file, this.gitManager)
|
||
});
|
||
this.addCommand({
|
||
id: "view-history-on-github",
|
||
name: "Open file history on GitHub",
|
||
editorCallback: (_, { file }) => openHistoryInGitHub(file, this.gitManager)
|
||
});
|
||
this.addCommand({
|
||
id: "pull",
|
||
name: "Pull",
|
||
callback: () => this.promiseQueue.addTask(() => this.pullChangesFromRemote())
|
||
});
|
||
this.addCommand({
|
||
id: "add-to-gitignore",
|
||
name: "Add file to gitignore",
|
||
checkCallback: (checking) => {
|
||
const file = app.workspace.getActiveFile();
|
||
if (checking) {
|
||
return file !== void 0;
|
||
} else {
|
||
app.vault.adapter.append(this.gitManager.getVaultPath(".gitignore"), "\n" + this.gitManager.getPath(file.path, true)).then(() => {
|
||
this.refresh();
|
||
});
|
||
}
|
||
}
|
||
});
|
||
this.addCommand({
|
||
id: "push",
|
||
name: "Create backup",
|
||
callback: () => this.promiseQueue.addTask(() => this.createBackup(false))
|
||
});
|
||
this.addCommand({
|
||
id: "backup-and-close",
|
||
name: "Create backup and close",
|
||
callback: () => this.promiseQueue.addTask(() => __async(this, null, function* () {
|
||
yield this.createBackup(false);
|
||
window.close();
|
||
}))
|
||
});
|
||
this.addCommand({
|
||
id: "commit-push-specified-message",
|
||
name: "Create backup with specific message",
|
||
callback: () => this.promiseQueue.addTask(() => this.createBackup(false, true))
|
||
});
|
||
this.addCommand({
|
||
id: "commit",
|
||
name: "Commit all changes",
|
||
callback: () => this.promiseQueue.addTask(() => this.commit(false))
|
||
});
|
||
this.addCommand({
|
||
id: "commit-specified-message",
|
||
name: "Commit all changes with specific message",
|
||
callback: () => this.promiseQueue.addTask(() => this.commit(false, true))
|
||
});
|
||
this.addCommand({
|
||
id: "commit-staged",
|
||
name: "Commit staged",
|
||
callback: () => this.promiseQueue.addTask(() => this.commit(false, false, true))
|
||
});
|
||
this.addCommand({
|
||
id: "commit-staged-specified-message",
|
||
name: "Commit staged with specific message",
|
||
callback: () => this.promiseQueue.addTask(() => this.commit(false, true, true))
|
||
});
|
||
this.addCommand({
|
||
id: "push2",
|
||
name: "Push",
|
||
callback: () => this.promiseQueue.addTask(() => this.push())
|
||
});
|
||
this.addCommand({
|
||
id: "stage-current-file",
|
||
name: "Stage current file",
|
||
checkCallback: (checking) => {
|
||
if (checking) {
|
||
return this.app.workspace.getActiveFile() !== null;
|
||
} else {
|
||
this.promiseQueue.addTask(() => this.stageCurrentFile());
|
||
}
|
||
}
|
||
});
|
||
this.addCommand({
|
||
id: "unstage-current-file",
|
||
name: "Unstage current file",
|
||
checkCallback: (checking) => {
|
||
if (checking) {
|
||
return this.app.workspace.getActiveFile() !== null;
|
||
} else {
|
||
this.promiseQueue.addTask(() => this.unstageCurrentFile());
|
||
}
|
||
}
|
||
});
|
||
this.addCommand({
|
||
id: "edit-remotes",
|
||
name: "Edit remotes",
|
||
callback: () => __async(this, null, function* () {
|
||
return this.editRemotes();
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "remove-remote",
|
||
name: "Remove remote",
|
||
callback: () => __async(this, null, function* () {
|
||
return this.removeRemote();
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "delete-repo",
|
||
name: "CAUTION: Delete repository",
|
||
callback: () => __async(this, null, function* () {
|
||
const repoExists = yield this.app.vault.adapter.exists(`${this.settings.basePath}/.git`);
|
||
if (repoExists) {
|
||
const modal = new GeneralModal(this.app, ["NO", "YES"], "Do you really want to delete the repository (.git directory)? This action cannot be undone.", false, true);
|
||
const shouldDelete = (yield modal.open()) === "YES";
|
||
if (shouldDelete) {
|
||
yield this.app.vault.adapter.rmdir(`${this.settings.basePath}/.git`, true);
|
||
new import_obsidian18.Notice("Successfully deleted repository. Reloading plugin...");
|
||
this.unloadPlugin();
|
||
this.init();
|
||
}
|
||
} else {
|
||
new import_obsidian18.Notice("No repository found");
|
||
}
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "init-repo",
|
||
name: "Initialize a new repo",
|
||
callback: () => __async(this, null, function* () {
|
||
return this.createNewRepo();
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "clone-repo",
|
||
name: "Clone an existing remote repo",
|
||
callback: () => __async(this, null, function* () {
|
||
return this.cloneNewRepo();
|
||
})
|
||
});
|
||
this.addCommand({
|
||
id: "list-changed-files",
|
||
name: "List changed files",
|
||
callback: () => __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return;
|
||
const status = yield this.gitManager.status();
|
||
this.setState(PluginState.idle);
|
||
if (status.changed.length + status.staged.length > 500) {
|
||
this.displayError("Too many changes to display");
|
||
return;
|
||
}
|
||
new ChangedFilesModal(this, status.changed).open();
|
||
})
|
||
});
|
||
this.registerEvent(this.app.workspace.on("file-menu", (menu, file, source) => {
|
||
this.handleFileMenu(menu, file, source);
|
||
}));
|
||
if (this.settings.showStatusBar) {
|
||
let statusBarEl = this.addStatusBarItem();
|
||
this.statusBar = new StatusBar(statusBarEl, this);
|
||
this.registerInterval(window.setInterval(() => this.statusBar.display(), 1e3));
|
||
}
|
||
this.app.workspace.onLayoutReady(() => this.init());
|
||
});
|
||
}
|
||
handleFileMenu(menu, file, source) {
|
||
if (source !== "file-explorer-context-menu") {
|
||
return;
|
||
}
|
||
if (!file) {
|
||
return;
|
||
}
|
||
if (!this.gitReady)
|
||
return;
|
||
menu.addItem((item) => {
|
||
item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => {
|
||
this.promiseQueue.addTask(() => __async(this, null, function* () {
|
||
if (file instanceof import_obsidian18.TFile) {
|
||
yield this.gitManager.stage(file.path, true);
|
||
} else {
|
||
yield this.gitManager.stageAll({ dir: this.gitManager.getPath(file.path, true) });
|
||
}
|
||
this.displayMessage(`Staged ${file.path}`);
|
||
}));
|
||
});
|
||
});
|
||
menu.addItem((item) => {
|
||
item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => {
|
||
this.promiseQueue.addTask(() => __async(this, null, function* () {
|
||
if (file instanceof import_obsidian18.TFile) {
|
||
yield this.gitManager.unstage(file.path, true);
|
||
} else {
|
||
yield this.gitManager.unstageAll({ dir: this.gitManager.getPath(file.path, true) });
|
||
}
|
||
this.displayMessage(`Unstaged ${file.path}`);
|
||
}));
|
||
});
|
||
});
|
||
}
|
||
migrateSettings() {
|
||
if (this.settings.mergeOnPull != void 0) {
|
||
this.settings.syncMethod = this.settings.mergeOnPull ? "merge" : "rebase";
|
||
this.settings.mergeOnPull = void 0;
|
||
return this.saveSettings();
|
||
}
|
||
if (this.settings.autoCommitMessage === void 0) {
|
||
this.settings.autoCommitMessage = this.settings.commitMessage;
|
||
this.saveSettings();
|
||
}
|
||
if (this.settings.gitPath != void 0) {
|
||
this.localStorage.setGitPath(this.settings.gitPath);
|
||
this.settings.gitPath = void 0;
|
||
this.saveSettings();
|
||
}
|
||
}
|
||
unloadPlugin() {
|
||
this.gitReady = false;
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
this.clearAutoPull();
|
||
this.clearAutoPush();
|
||
this.clearAutoBackup();
|
||
removeEventListener("git-refresh", this.refresh.bind(this));
|
||
this.app.metadataCache.offref(this.modifyEvent);
|
||
this.app.metadataCache.offref(this.deleteEvent);
|
||
this.app.metadataCache.offref(this.createEvent);
|
||
this.app.metadataCache.offref(this.renameEvent);
|
||
this.debRefresh.cancel();
|
||
}
|
||
onunload() {
|
||
return __async(this, null, function* () {
|
||
this.app.workspace.unregisterHoverLinkSource(GIT_VIEW_CONFIG.type);
|
||
this.app.workspace.detachLeavesOfType(GIT_VIEW_CONFIG.type);
|
||
this.app.workspace.detachLeavesOfType(DIFF_VIEW_CONFIG.type);
|
||
this.unloadPlugin();
|
||
console.log("unloading " + this.manifest.name + " plugin");
|
||
});
|
||
}
|
||
loadSettings() {
|
||
return __async(this, null, function* () {
|
||
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
|
||
});
|
||
}
|
||
saveSettings() {
|
||
return __async(this, null, function* () {
|
||
yield this.saveData(this.settings);
|
||
});
|
||
}
|
||
saveLastAuto(date, mode) {
|
||
return __async(this, null, function* () {
|
||
if (mode === "backup") {
|
||
this.localStorage.setLastAutoBackup(date.toString());
|
||
} else if (mode === "pull") {
|
||
this.localStorage.setLastAutoPull(date.toString());
|
||
} else if (mode === "push") {
|
||
this.localStorage.setLastAutoPush(date.toString());
|
||
}
|
||
});
|
||
}
|
||
loadLastAuto() {
|
||
return __async(this, null, function* () {
|
||
var _a2, _b, _c;
|
||
return {
|
||
"backup": new Date((_a2 = this.localStorage.getLastAutoBackup()) != null ? _a2 : ""),
|
||
"pull": new Date((_b = this.localStorage.getLastAutoPull()) != null ? _b : ""),
|
||
"push": new Date((_c = this.localStorage.getLastAutoPush()) != null ? _c : "")
|
||
};
|
||
});
|
||
}
|
||
init() {
|
||
return __async(this, null, function* () {
|
||
try {
|
||
if (true) {
|
||
this.gitManager = new SimpleGit(this);
|
||
yield this.gitManager.setGitInstance();
|
||
} else {
|
||
this.gitManager = new IsomorphicGit(this);
|
||
}
|
||
const result = yield this.gitManager.checkRequirements();
|
||
switch (result) {
|
||
case "missing-git":
|
||
this.displayError("Cannot run git command");
|
||
break;
|
||
case "missing-repo":
|
||
new import_obsidian18.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo.");
|
||
break;
|
||
case "valid":
|
||
this.gitReady = true;
|
||
this.setState(PluginState.idle);
|
||
this.modifyEvent = this.app.vault.on("modify", () => {
|
||
this.debRefresh();
|
||
});
|
||
this.deleteEvent = this.app.vault.on("delete", () => {
|
||
this.debRefresh();
|
||
});
|
||
this.createEvent = this.app.vault.on("create", () => {
|
||
this.debRefresh();
|
||
});
|
||
this.renameEvent = this.app.vault.on("rename", () => {
|
||
this.debRefresh();
|
||
});
|
||
this.registerEvent(this.modifyEvent);
|
||
this.registerEvent(this.deleteEvent);
|
||
this.registerEvent(this.createEvent);
|
||
this.registerEvent(this.renameEvent);
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
if (this.settings.autoPullOnBoot) {
|
||
this.promiseQueue.addTask(() => this.pullChangesFromRemote());
|
||
}
|
||
const lastAutos = yield this.loadLastAuto();
|
||
if (this.settings.autoSaveInterval > 0) {
|
||
const now2 = new Date();
|
||
const diff = this.settings.autoSaveInterval - Math.round((now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60);
|
||
this.startAutoBackup(diff <= 0 ? 0 : diff);
|
||
}
|
||
if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) {
|
||
const now2 = new Date();
|
||
const diff = this.settings.autoPushInterval - Math.round((now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60);
|
||
this.startAutoPush(diff <= 0 ? 0 : diff);
|
||
}
|
||
if (this.settings.autoPullInterval > 0) {
|
||
const now2 = new Date();
|
||
const diff = this.settings.autoPullInterval - Math.round((now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60);
|
||
this.startAutoPull(diff <= 0 ? 0 : diff);
|
||
}
|
||
break;
|
||
default:
|
||
console.log("Something weird happened. The 'checkRequirements' result is " + result);
|
||
}
|
||
} catch (error) {
|
||
this.displayError(error);
|
||
console.error(error);
|
||
}
|
||
});
|
||
}
|
||
createNewRepo() {
|
||
return __async(this, null, function* () {
|
||
yield this.gitManager.init();
|
||
new import_obsidian18.Notice("Initialized new repo");
|
||
yield this.init();
|
||
});
|
||
}
|
||
cloneNewRepo() {
|
||
return __async(this, null, function* () {
|
||
const modal = new GeneralModal(this.app, [], "Enter remote URL");
|
||
const url = yield modal.open();
|
||
if (url) {
|
||
const confirmOption = "Vault Root";
|
||
let dir = yield new GeneralModal(this.app, [confirmOption], "Enter directory for clone. It needs to be empty or not existent.", this.gitManager instanceof IsomorphicGit).open();
|
||
if (dir !== void 0) {
|
||
if (dir === confirmOption) {
|
||
dir = ".";
|
||
}
|
||
dir = (0, import_obsidian18.normalizePath)(dir);
|
||
if (dir === "/") {
|
||
dir = ".";
|
||
}
|
||
if (dir === ".") {
|
||
const modal2 = new GeneralModal(this.app, ["NO", "YES"], `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, false, true);
|
||
const containsConflictDir = yield modal2.open();
|
||
if (containsConflictDir === void 0) {
|
||
new import_obsidian18.Notice("Aborted clone");
|
||
return;
|
||
} else if (containsConflictDir === "YES") {
|
||
const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS";
|
||
const modal3 = new GeneralModal(this.app, ["Abort clone", confirmOption2], `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, false, true);
|
||
const shouldDelete = (yield modal3.open()) === confirmOption2;
|
||
if (shouldDelete) {
|
||
yield this.app.vault.adapter.rmdir(app.vault.configDir, true);
|
||
} else {
|
||
new import_obsidian18.Notice("Aborted clone");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
new import_obsidian18.Notice(`Cloning new repo into "${dir}"`);
|
||
yield this.gitManager.clone(url, dir);
|
||
new import_obsidian18.Notice("Cloned new repo.");
|
||
new import_obsidian18.Notice("Please restart Obsidian");
|
||
if (dir && dir !== ".") {
|
||
this.settings.basePath = dir;
|
||
this.saveSettings();
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
isAllInitialized() {
|
||
return __async(this, null, function* () {
|
||
if (!this.gitReady) {
|
||
yield this.init();
|
||
}
|
||
return this.gitReady;
|
||
});
|
||
}
|
||
pullChangesFromRemote() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return;
|
||
const filesUpdated = yield this.pull();
|
||
if (!filesUpdated) {
|
||
this.displayMessage("Everything is up-to-date");
|
||
}
|
||
if (this.gitManager instanceof SimpleGit) {
|
||
const status = yield this.gitManager.status();
|
||
if (status.conflicted.length > 0) {
|
||
this.displayError(`You have ${status.conflicted.length} conflict ${status.conflicted.length > 1 ? "files" : "file"}`);
|
||
this.handleConflict(status.conflicted);
|
||
}
|
||
}
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
this.lastUpdate = Date.now();
|
||
this.setState(PluginState.idle);
|
||
});
|
||
}
|
||
createBackup(fromAutoBackup, requestCustomMessage = false) {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return;
|
||
if (!(yield this.commit(fromAutoBackup, requestCustomMessage)))
|
||
return;
|
||
if (!this.settings.disablePush) {
|
||
if (yield this.gitManager.canPush()) {
|
||
if (this.settings.pullBeforePush) {
|
||
yield this.pull();
|
||
}
|
||
yield this.push();
|
||
} else {
|
||
this.displayMessage("No changes to push");
|
||
}
|
||
}
|
||
this.setState(PluginState.idle);
|
||
});
|
||
}
|
||
commit(fromAutoBackup, requestCustomMessage = false, onlyStaged = false) {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return false;
|
||
const hadConflict = this.localStorage.getConflict() === "true";
|
||
let changedFiles;
|
||
let status;
|
||
let unstagedFiles;
|
||
if (this.gitManager instanceof SimpleGit) {
|
||
const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
|
||
yield this.app.vault.delete(file);
|
||
status = yield this.updateCachedStatus();
|
||
if (fromAutoBackup && status.conflicted.length > 0) {
|
||
this.displayError(`Did not commit, because you have ${status.conflicted.length} conflict ${status.conflicted.length > 1 ? "files" : "file"}. Please resolve them and commit per command.`);
|
||
this.handleConflict(status.conflicted);
|
||
return;
|
||
}
|
||
changedFiles = [...status.changed, ...status.staged];
|
||
} else if (fromAutoBackup && hadConflict) {
|
||
this.setState(PluginState.conflicted);
|
||
this.displayError(`Did not commit, because you have conflict files. Please resolve them and commit per command.`);
|
||
return;
|
||
} else if (hadConflict) {
|
||
const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
|
||
yield this.app.vault.delete(file);
|
||
status = yield this.updateCachedStatus();
|
||
changedFiles = [...status.changed, ...status.staged];
|
||
} else {
|
||
if (onlyStaged) {
|
||
changedFiles = yield this.gitManager.getStagedFiles();
|
||
} else {
|
||
unstagedFiles = yield this.gitManager.getUnstagedFiles();
|
||
changedFiles = unstagedFiles.map(({ filepath }) => ({ vault_path: this.gitManager.getVaultPath(filepath) }));
|
||
}
|
||
}
|
||
if (yield this.hasTooBigFiles(changedFiles)) {
|
||
this.setState(PluginState.idle);
|
||
return false;
|
||
}
|
||
if (changedFiles.length !== 0 || hadConflict) {
|
||
let commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage;
|
||
if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) {
|
||
if (!this.settings.disablePopups && fromAutoBackup) {
|
||
new import_obsidian18.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort");
|
||
}
|
||
const tempMessage = yield new CustomMessageModal(this, true).open();
|
||
if (tempMessage != void 0 && tempMessage != "" && tempMessage != "...") {
|
||
commitMessage = tempMessage;
|
||
} else {
|
||
this.setState(PluginState.idle);
|
||
return false;
|
||
}
|
||
}
|
||
let committedFiles;
|
||
if (onlyStaged) {
|
||
committedFiles = yield this.gitManager.commit(commitMessage);
|
||
} else {
|
||
committedFiles = yield this.gitManager.commitAll({ message: commitMessage, status, unstagedFiles });
|
||
}
|
||
let roughly = false;
|
||
if (committedFiles === void 0) {
|
||
roughly = true;
|
||
committedFiles = changedFiles.length;
|
||
}
|
||
this.displayMessage(`Committed${roughly ? " approx." : ""} ${committedFiles} ${committedFiles > 1 ? "files" : "file"}`);
|
||
} else {
|
||
this.displayMessage("No changes to commit");
|
||
}
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
this.setState(PluginState.idle);
|
||
return true;
|
||
});
|
||
}
|
||
hasTooBigFiles(files) {
|
||
return __async(this, null, function* () {
|
||
var _a2;
|
||
const branchInfo = yield this.gitManager.branchInfo();
|
||
const remote = (_a2 = branchInfo.tracking) == null ? void 0 : _a2.split("/")[0];
|
||
if (remote) {
|
||
const remoteUrl = yield this.gitManager.getRemoteUrl(remote);
|
||
if (remoteUrl.includes("github.com")) {
|
||
const tooBigFiles = files.filter((f) => {
|
||
const file = this.app.vault.getAbstractFileByPath(f.vault_path);
|
||
if (file instanceof import_obsidian18.TFile) {
|
||
return file.stat.size >= 1e8;
|
||
}
|
||
return false;
|
||
});
|
||
if (tooBigFiles.length > 0) {
|
||
this.displayError(`Did not commit, because following files are too big: ${tooBigFiles.map((e) => e.vault_path)}. Please remove them.`);
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
});
|
||
}
|
||
push() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return false;
|
||
if (!(yield this.remotesAreSet())) {
|
||
return false;
|
||
}
|
||
const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
|
||
const hadConflict = this.localStorage.getConflict() === "true";
|
||
if (this.gitManager instanceof SimpleGit && file)
|
||
yield this.app.vault.delete(file);
|
||
let status;
|
||
if (this.gitManager instanceof SimpleGit && (status = yield this.updateCachedStatus()).conflicted.length > 0) {
|
||
this.displayError(`Cannot push. You have ${status.conflicted.length} conflict ${status.conflicted.length > 1 ? "files" : "file"}`);
|
||
this.handleConflict(status.conflicted);
|
||
return false;
|
||
} else if (this.gitManager instanceof IsomorphicGit && hadConflict) {
|
||
this.displayError(`Cannot push. You have conflict files`);
|
||
this.setState(PluginState.conflicted);
|
||
return false;
|
||
}
|
||
{
|
||
console.log("Pushing....");
|
||
const pushedFiles = yield this.gitManager.push();
|
||
console.log("Pushed!", pushedFiles);
|
||
this.lastUpdate = Date.now();
|
||
if (pushedFiles > 0) {
|
||
this.displayMessage(`Pushed ${pushedFiles} ${pushedFiles > 1 ? "files" : "file"} to remote`);
|
||
} else {
|
||
this.displayMessage(`No changes to push`);
|
||
}
|
||
this.offlineMode = false;
|
||
this.setState(PluginState.idle);
|
||
return true;
|
||
}
|
||
});
|
||
}
|
||
pull() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.remotesAreSet())) {
|
||
return false;
|
||
}
|
||
const pulledFiles = yield this.gitManager.pull();
|
||
this.offlineMode = false;
|
||
if (pulledFiles.length > 0) {
|
||
this.displayMessage(`Pulled ${pulledFiles.length} ${pulledFiles.length > 1 ? "files" : "file"} from remote`);
|
||
this.lastPulledFiles = pulledFiles;
|
||
}
|
||
return pulledFiles.length != 0;
|
||
});
|
||
}
|
||
stageCurrentFile() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return false;
|
||
const file = this.app.workspace.getActiveFile();
|
||
yield this.gitManager.stage(file.path, true);
|
||
this.displayMessage(`Staged ${file.path}`);
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
this.setState(PluginState.idle);
|
||
return true;
|
||
});
|
||
}
|
||
unstageCurrentFile() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return false;
|
||
const file = this.app.workspace.getActiveFile();
|
||
yield this.gitManager.unstage(file.path, true);
|
||
this.displayMessage(`Unstaged ${file.path}`);
|
||
dispatchEvent(new CustomEvent("git-refresh"));
|
||
this.setState(PluginState.idle);
|
||
return true;
|
||
});
|
||
}
|
||
remotesAreSet() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.gitManager.branchInfo()).tracking) {
|
||
new import_obsidian18.Notice("No upstream branch is set. Please select one.");
|
||
const remoteBranch = yield this.selectRemoteBranch();
|
||
if (remoteBranch == void 0) {
|
||
this.displayError("Aborted. No upstream-branch is set!", 1e4);
|
||
this.setState(PluginState.idle);
|
||
return false;
|
||
} else {
|
||
yield this.gitManager.updateUpstreamBranch(remoteBranch);
|
||
return true;
|
||
}
|
||
}
|
||
return true;
|
||
});
|
||
}
|
||
startAutoBackup(minutes) {
|
||
const time = (minutes != null ? minutes : this.settings.autoSaveInterval) * 6e4;
|
||
if (this.settings.autoBackupAfterFileChange) {
|
||
if (minutes === 0) {
|
||
this.doAutoBackup();
|
||
} else {
|
||
this.onFileModifyEventRef = this.app.vault.on("modify", () => this.autoBackupDebouncer());
|
||
this.autoBackupDebouncer = (0, import_obsidian18.debounce)(() => this.doAutoBackup(), time, true);
|
||
}
|
||
} else {
|
||
this.timeoutIDBackup = window.setTimeout(() => this.doAutoBackup(), time);
|
||
}
|
||
}
|
||
doAutoBackup() {
|
||
this.promiseQueue.addTask(() => {
|
||
if (this.settings.differentIntervalCommitAndPush) {
|
||
return this.commit(true);
|
||
} else {
|
||
return this.createBackup(true);
|
||
}
|
||
});
|
||
this.saveLastAuto(new Date(), "backup");
|
||
this.saveSettings();
|
||
this.startAutoBackup();
|
||
}
|
||
startAutoPull(minutes) {
|
||
this.timeoutIDPull = window.setTimeout(() => {
|
||
this.promiseQueue.addTask(() => this.pullChangesFromRemote());
|
||
this.saveLastAuto(new Date(), "pull");
|
||
this.saveSettings();
|
||
this.startAutoPull();
|
||
}, (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4);
|
||
}
|
||
startAutoPush(minutes) {
|
||
this.timeoutIDPush = window.setTimeout(() => {
|
||
this.promiseQueue.addTask(() => this.push());
|
||
this.saveLastAuto(new Date(), "push");
|
||
this.saveSettings();
|
||
this.startAutoPush();
|
||
}, (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4);
|
||
}
|
||
clearAutoBackup() {
|
||
var _a2;
|
||
let wasActive = false;
|
||
if (this.timeoutIDBackup) {
|
||
window.clearTimeout(this.timeoutIDBackup);
|
||
this.timeoutIDBackup = void 0;
|
||
wasActive = true;
|
||
}
|
||
if (this.onFileModifyEventRef) {
|
||
(_a2 = this.autoBackupDebouncer) == null ? void 0 : _a2.cancel();
|
||
this.app.vault.offref(this.onFileModifyEventRef);
|
||
this.onFileModifyEventRef = void 0;
|
||
wasActive = true;
|
||
}
|
||
return wasActive;
|
||
}
|
||
clearAutoPull() {
|
||
if (this.timeoutIDPull) {
|
||
window.clearTimeout(this.timeoutIDPull);
|
||
this.timeoutIDPull = void 0;
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
clearAutoPush() {
|
||
if (this.timeoutIDPush) {
|
||
window.clearTimeout(this.timeoutIDPush);
|
||
this.timeoutIDPush = void 0;
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
handleConflict(conflicted) {
|
||
return __async(this, null, function* () {
|
||
this.setState(PluginState.conflicted);
|
||
this.localStorage.setConflict("true");
|
||
let lines;
|
||
if (conflicted !== void 0) {
|
||
lines = [
|
||
"# Conflict files",
|
||
"Please resolve them and commit per command (This file will be deleted before the commit).",
|
||
...conflicted.map((e) => {
|
||
const file = this.app.vault.getAbstractFileByPath(e);
|
||
if (file instanceof import_obsidian18.TFile) {
|
||
const link = this.app.metadataCache.fileToLinktext(file, "/");
|
||
return `- [[${link}]]`;
|
||
} else {
|
||
return `- Not a file: ${e}`;
|
||
}
|
||
})
|
||
];
|
||
}
|
||
this.writeAndOpenFile(lines == null ? void 0 : lines.join("\n"));
|
||
});
|
||
}
|
||
editRemotes() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return;
|
||
const remotes = yield this.gitManager.getRemotes();
|
||
const nameModal = new GeneralModal(this.app, remotes, "Select or create a new remote by typing its name and selecting it");
|
||
const remoteName = yield nameModal.open();
|
||
if (remoteName) {
|
||
const urlModal = new GeneralModal(this.app, [], "Enter the remote URL");
|
||
const remoteURL = yield urlModal.open();
|
||
if (remoteURL) {
|
||
yield this.gitManager.setRemote(remoteName, remoteURL);
|
||
return remoteName;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
selectRemoteBranch() {
|
||
return __async(this, null, function* () {
|
||
let remotes = yield this.gitManager.getRemotes();
|
||
let selectedRemote;
|
||
if (remotes.length === 0) {
|
||
selectedRemote = yield this.editRemotes();
|
||
if (selectedRemote == void 0) {
|
||
remotes = yield this.gitManager.getRemotes();
|
||
}
|
||
}
|
||
const nameModal = new GeneralModal(this.app, remotes, "Select or create a new remote by typing its name and selecting it");
|
||
const remoteName = selectedRemote != null ? selectedRemote : yield nameModal.open();
|
||
if (remoteName) {
|
||
this.displayMessage("Fetching remote branches");
|
||
yield this.gitManager.fetch(remoteName);
|
||
const branches = yield this.gitManager.getRemoteBranches(remoteName);
|
||
const branchModal = new GeneralModal(this.app, branches, "Select or create a new remote branch by typing its name and selecting it");
|
||
return yield branchModal.open();
|
||
}
|
||
});
|
||
}
|
||
removeRemote() {
|
||
return __async(this, null, function* () {
|
||
if (!(yield this.isAllInitialized()))
|
||
return;
|
||
const remotes = yield this.gitManager.getRemotes();
|
||
const nameModal = new GeneralModal(this.app, remotes, "Select a remote");
|
||
const remoteName = yield nameModal.open();
|
||
if (remoteName) {
|
||
this.gitManager.removeRemote(remoteName);
|
||
}
|
||
});
|
||
}
|
||
writeAndOpenFile(text2) {
|
||
return __async(this, null, function* () {
|
||
if (text2 !== void 0) {
|
||
yield this.app.vault.adapter.write(this.conflictOutputFile, text2);
|
||
}
|
||
let fileIsAlreadyOpened = false;
|
||
this.app.workspace.iterateAllLeaves((leaf) => {
|
||
if (leaf.getDisplayText() != "" && this.conflictOutputFile.startsWith(leaf.getDisplayText())) {
|
||
fileIsAlreadyOpened = true;
|
||
}
|
||
});
|
||
if (!fileIsAlreadyOpened) {
|
||
this.app.workspace.openLinkText(this.conflictOutputFile, "/", true);
|
||
}
|
||
});
|
||
}
|
||
displayMessage(message, timeout = 4 * 1e3) {
|
||
var _a2;
|
||
(_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout);
|
||
if (!this.settings.disablePopups) {
|
||
new import_obsidian18.Notice(message, 5 * 1e3);
|
||
}
|
||
console.log(`git obsidian message: ${message}`);
|
||
}
|
||
displayError(message, timeout = 10 * 1e3) {
|
||
var _a2;
|
||
message = message.toString();
|
||
new import_obsidian18.Notice(message, timeout);
|
||
console.log(`git obsidian error: ${message}`);
|
||
(_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout);
|
||
}
|
||
};
|
||
// Annotate the CommonJS export names for ESM import in node:
|
||
0 && (module.exports = {});
|
||
/*!
|
||
Copyright (c) 2016 Jed Watson.
|
||
Licensed under the MIT License (MIT), see
|
||
http://jedwatson.github.io/classnames
|
||
*/
|
||
/*! *****************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|