You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1845 lines
64 KiB

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
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 key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || 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/before-after-hook/lib/register.js
var require_register = __commonJS({
"node_modules/before-after-hook/lib/register.js"(exports, module2) {
module2.exports = register;
function register(state, name, method, options) {
if (typeof method !== "function") {
throw new Error("method for before hook must be a function");
}
if (!options) {
options = {};
}
if (Array.isArray(name)) {
return name.reverse().reduce(function(callback, name2) {
return register.bind(null, state, name2, callback, options);
}, method)();
}
return Promise.resolve().then(function() {
if (!state.registry[name]) {
return method(options);
}
return state.registry[name].reduce(function(method2, registered) {
return registered.hook.bind(null, method2, options);
}, method)();
});
}
}
});
// node_modules/before-after-hook/lib/add.js
var require_add = __commonJS({
"node_modules/before-after-hook/lib/add.js"(exports, module2) {
module2.exports = addHook;
function addHook(state, kind, name, hook2) {
var orig = hook2;
if (!state.registry[name]) {
state.registry[name] = [];
}
if (kind === "before") {
hook2 = function(method, options) {
return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options));
};
}
if (kind === "after") {
hook2 = function(method, options) {
var result;
return Promise.resolve().then(method.bind(null, options)).then(function(result_) {
result = result_;
return orig(result, options);
}).then(function() {
return result;
});
};
}
if (kind === "error") {
hook2 = function(method, options) {
return Promise.resolve().then(method.bind(null, options)).catch(function(error) {
return orig(error, options);
});
};
}
state.registry[name].push({
hook: hook2,
orig
});
}
}
});
// node_modules/before-after-hook/lib/remove.js
var require_remove = __commonJS({
"node_modules/before-after-hook/lib/remove.js"(exports, module2) {
module2.exports = removeHook;
function removeHook(state, name, method) {
if (!state.registry[name]) {
return;
}
var index = state.registry[name].map(function(registered) {
return registered.orig;
}).indexOf(method);
if (index === -1) {
return;
}
state.registry[name].splice(index, 1);
}
}
});
// node_modules/before-after-hook/index.js
var require_before_after_hook = __commonJS({
"node_modules/before-after-hook/index.js"(exports, module2) {
var register = require_register();
var addHook = require_add();
var removeHook = require_remove();
var bind = Function.bind;
var bindable = bind.bind(bind);
function bindApi(hook2, state, name) {
var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]);
hook2.api = { remove: removeHookRef };
hook2.remove = removeHookRef;
["before", "error", "after", "wrap"].forEach(function(kind) {
var args = name ? [state, kind, name] : [state, kind];
hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args);
});
}
function HookSingular() {
var singularHookName = "h";
var singularHookState = {
registry: {}
};
var singularHook = register.bind(null, singularHookState, singularHookName);
bindApi(singularHook, singularHookState, singularHookName);
return singularHook;
}
function HookCollection() {
var state = {
registry: {}
};
var hook2 = register.bind(null, state);
bindApi(hook2, state);
return hook2;
}
var collectionHookDeprecationMessageDisplayed = false;
function Hook() {
if (!collectionHookDeprecationMessageDisplayed) {
console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4');
collectionHookDeprecationMessageDisplayed = true;
}
return HookCollection();
}
Hook.Singular = HookSingular.bind();
Hook.Collection = HookCollection.bind();
module2.exports = Hook;
module2.exports.Hook = Hook;
module2.exports.Singular = Hook.Singular;
module2.exports.Collection = Hook.Collection;
}
});
// node_modules/node-fetch/browser.js
var require_browser = __commonJS({
"node_modules/node-fetch/browser.js"(exports, module2) {
"use strict";
var getGlobal = function() {
if (typeof self !== "undefined") {
return self;
}
if (typeof window !== "undefined") {
return window;
}
if (typeof global !== "undefined") {
return global;
}
throw new Error("unable to locate global object");
};
var global = getGlobal();
module2.exports = exports = global.fetch;
if (global.fetch) {
exports.default = global.fetch.bind(global);
}
exports.Headers = global.Headers;
exports.Request = global.Request;
exports.Response = global.Response;
}
});
// node_modules/wrappy/wrappy.js
var require_wrappy = __commonJS({
"node_modules/wrappy/wrappy.js"(exports, module2) {
module2.exports = wrappy;
function wrappy(fn, cb) {
if (fn && cb)
return wrappy(fn)(cb);
if (typeof fn !== "function")
throw new TypeError("need wrapper function");
Object.keys(fn).forEach(function(k) {
wrapper[k] = fn[k];
});
return wrapper;
function wrapper() {
var args = new Array(arguments.length);
for (var i = 0; i < args.length; i++) {
args[i] = arguments[i];
}
var ret = fn.apply(this, args);
var cb2 = args[args.length - 1];
if (typeof ret === "function" && ret !== cb2) {
Object.keys(cb2).forEach(function(k) {
ret[k] = cb2[k];
});
}
return ret;
}
}
}
});
// node_modules/once/once.js
var require_once = __commonJS({
"node_modules/once/once.js"(exports, module2) {
var wrappy = require_wrappy();
module2.exports = wrappy(once2);
module2.exports.strict = wrappy(onceStrict);
once2.proto = once2(function() {
Object.defineProperty(Function.prototype, "once", {
value: function() {
return once2(this);
},
configurable: true
});
Object.defineProperty(Function.prototype, "onceStrict", {
value: function() {
return onceStrict(this);
},
configurable: true
});
});
function once2(fn) {
var f = function() {
if (f.called)
return f.value;
f.called = true;
return f.value = fn.apply(this, arguments);
};
f.called = false;
return f;
}
function onceStrict(fn) {
var f = function() {
if (f.called)
throw new Error(f.onceError);
f.called = true;
return f.value = fn.apply(this, arguments);
};
var name = fn.name || "Function wrapped with `once`";
f.onceError = name + " shouldn't be called more than once";
f.called = false;
return f;
}
}
});
// Snippet-downloader/main.ts
__export(exports, {
default: () => snippetDownloader
});
var import_obsidian8 = __toModule(require("obsidian"));
// Snippet-downloader/settings.ts
var import_obsidian7 = __toModule(require("obsidian"));
// Snippet-downloader/removeSnippet.ts
var import_obsidian = __toModule(require("obsidian"));
// Snippet-downloader/utils.ts
function searchExcluded(excludedSnippet, name) {
if (excludedSnippet.length < 1) {
return false;
}
const excluded = excludedSnippet.split(",").map((e) => {
return e.trim();
}).filter((x) => x.length > 0);
for (const excl of excluded) {
if (excl === name.replace(".css", "").trim()) {
return true;
}
if (name.match(new RegExp(excl))) {
return true;
}
}
return false;
}
function basename(path) {
return path.split("/").reverse()[0];
}
// Snippet-downloader/removeSnippet.ts
function removeErrorSnippet(repoPath, errorSnippet, snippetList) {
const snippet = snippetList.find((snippet2) => snippet2.repo === repoPath);
let errorSnippetList = errorSnippet.split(", ");
for (const snippetContents of snippet.snippetsContents) {
errorSnippetList = errorSnippetList.filter((v) => v != snippetContents.name.replace(".css", "").trim());
}
console.log(errorSnippetList);
return errorSnippetList.join(", ");
}
function removeSnippet(repoPath, snippetList, errorSnippet) {
if (snippetList.some((snippet) => snippet.repo === repoPath)) {
errorSnippet = removeErrorSnippet(repoPath, errorSnippet, snippetList);
snippetList.splice(snippetList.findIndex((snippet) => snippet.repo === repoPath), 1);
new import_obsidian.Notice("Repository successfully removed \u{1F389}");
return [snippetList, errorSnippet];
}
new import_obsidian.Notice("Error : this repo is not in the list \u{1F63F}");
return [snippetList, errorSnippet];
}
function removeSnippetFromExcluded(repoPath, snippetList, errorSnippet, excludedSnippet) {
const repo = snippetList.find((snippet) => snippet.repo === repoPath);
repo.snippetsContents = repo.snippetsContents.filter((snippet) => !searchExcluded(excludedSnippet, snippet.name) && !searchExcluded(errorSnippet, snippet.name));
return snippetList;
}
// Snippet-downloader/modals/simpleCommands.ts
var import_obsidian2 = __toModule(require("obsidian"));
var SnippetDownloaderModals = class extends import_obsidian2.Modal {
constructor(app, onSubmit) {
super(app);
this.onSubmit = onSubmit;
}
onOpen() {
const { contentEl } = this;
contentEl.createEl("h1", { text: "Repo Links" });
new import_obsidian2.Setting(contentEl).setName("Repo Link").addText((text) => {
text.onChange((value) => {
this.result = value;
});
});
new import_obsidian2.Setting(contentEl).addButton((btn) => {
btn.setButtonText("Submit").setCta().onClick(() => {
this.close();
this.onSubmit(this.result);
});
});
}
onClose() {
const { contentEl } = this;
contentEl.empty();
}
};
// Snippet-downloader/addSnippets.ts
var import_obsidian4 = __toModule(require("obsidian"));
// node_modules/universal-user-agent/dist-web/index.js
function getUserAgent() {
if (typeof navigator === "object" && "userAgent" in navigator) {
return navigator.userAgent;
}
if (typeof process === "object" && "version" in process) {
return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
}
return "<environment undetectable>";
}
// node_modules/@octokit/core/dist-web/index.js
var import_before_after_hook = __toModule(require_before_after_hook());
// node_modules/is-plain-object/dist/is-plain-object.mjs
function isObject(o) {
return Object.prototype.toString.call(o) === "[object Object]";
}
function isPlainObject(o) {
var ctor, prot;
if (isObject(o) === false)
return false;
ctor = o.constructor;
if (ctor === void 0)
return true;
prot = ctor.prototype;
if (isObject(prot) === false)
return false;
if (prot.hasOwnProperty("isPrototypeOf") === false) {
return false;
}
return true;
}
// node_modules/@octokit/endpoint/dist-web/index.js
function lowercaseKeys(object) {
if (!object) {
return {};
}
return Object.keys(object).reduce((newObj, key) => {
newObj[key.toLowerCase()] = object[key];
return newObj;
}, {});
}
function mergeDeep(defaults, options) {
const result = Object.assign({}, defaults);
Object.keys(options).forEach((key) => {
if (isPlainObject(options[key])) {
if (!(key in defaults))
Object.assign(result, { [key]: options[key] });
else
result[key] = mergeDeep(defaults[key], options[key]);
} else {
Object.assign(result, { [key]: options[key] });
}
});
return result;
}
function removeUndefinedProperties(obj) {
for (const key in obj) {
if (obj[key] === void 0) {
delete obj[key];
}
}
return obj;
}
function merge(defaults, route, options) {
if (typeof route === "string") {
let [method, url] = route.split(" ");
options = Object.assign(url ? { method, url } : { url: method }, options);
} else {
options = Object.assign({}, route);
}
options.headers = lowercaseKeys(options.headers);
removeUndefinedProperties(options);
removeUndefinedProperties(options.headers);
const mergedOptions = mergeDeep(defaults || {}, options);
if (defaults && defaults.mediaType.previews.length) {
mergedOptions.mediaType.previews = defaults.mediaType.previews.filter((preview) => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
}
mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, ""));
return mergedOptions;
}
function addQueryParameters(url, parameters) {
const separator = /\?/.test(url) ? "&" : "?";
const names = Object.keys(parameters);
if (names.length === 0) {
return url;
}
return url + separator + names.map((name) => {
if (name === "q") {
return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
}
return `${name}=${encodeURIComponent(parameters[name])}`;
}).join("&");
}
var urlVariableRegex = /\{[^}]+\}/g;
function removeNonChars(variableName) {
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
}
function extractUrlVariableNames(url) {
const matches = url.match(urlVariableRegex);
if (!matches) {
return [];
}
return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
}
function omit(object, keysToOmit) {
return Object.keys(object).filter((option) => !keysToOmit.includes(option)).reduce((obj, key) => {
obj[key] = object[key];
return obj;
}, {});
}
function encodeReserved(str) {
return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
if (!/%[0-9A-Fa-f]/.test(part)) {
part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
}
return part;
}).join("");
}
function encodeUnreserved(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
});
}
function encodeValue(operator, value, key) {
value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
if (key) {
return encodeUnreserved(key) + "=" + value;
} else {
return value;
}
}
function isDefined(value) {
return value !== void 0 && value !== null;
}
function isKeyOperator(operator) {
return operator === ";" || operator === "&" || operator === "?";
}
function getValues(context, operator, key, modifier) {
var value = context[key], result = [];
if (isDefined(value) && value !== "") {
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
value = value.toString();
if (modifier && modifier !== "*") {
value = value.substring(0, parseInt(modifier, 10));
}
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
} else {
if (modifier === "*") {
if (Array.isArray(value)) {
value.filter(isDefined).forEach(function(value2) {
result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : ""));
});
} else {
Object.keys(value).forEach(function(k) {
if (isDefined(value[k])) {
result.push(encodeValue(operator, value[k], k));
}
});
}
} else {
const tmp = [];
if (Array.isArray(value)) {
value.filter(isDefined).forEach(function(value2) {
tmp.push(encodeValue(operator, value2));
});
} else {
Object.keys(value).forEach(function(k) {
if (isDefined(value[k])) {
tmp.push(encodeUnreserved(k));
tmp.push(encodeValue(operator, value[k].toString()));
}
});
}
if (isKeyOperator(operator)) {
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
} else if (tmp.length !== 0) {
result.push(tmp.join(","));
}
}
}
} else {
if (operator === ";") {
if (isDefined(value)) {
result.push(encodeUnreserved(key));
}
} else if (value === "" && (operator === "&" || operator === "?")) {
result.push(encodeUnreserved(key) + "=");
} else if (value === "") {
result.push("");
}
}
return result;
}
function parseUrl(template) {
return {
expand: expand.bind(null, template)
};
}
function expand(template, context) {
var operators = ["+", "#", ".", "/", ";", "?", "&"];
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function(_, expression, literal) {
if (expression) {
let operator = "";
const values = [];
if (operators.indexOf(expression.charAt(0)) !== -1) {
operator = expression.charAt(0);
expression = expression.substr(1);
}
expression.split(/,/g).forEach(function(variable) {
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
});
if (operator && operator !== "+") {
var separator = ",";
if (operator === "?") {
separator = "&";
} else if (operator !== "#") {
separator = operator;
}
return (values.length !== 0 ? operator : "") + values.join(separator);
} else {
return values.join(",");
}
} else {
return encodeReserved(literal);
}
});
}
function parse(options) {
let method = options.method.toUpperCase();
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
let headers = Object.assign({}, options.headers);
let body;
let parameters = omit(options, [
"method",
"baseUrl",
"url",
"headers",
"request",
"mediaType"
]);
const urlVariableNames = extractUrlVariableNames(url);
url = parseUrl(url).expand(parameters);
if (!/^http/.test(url)) {
url = options.baseUrl + url;
}
const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
const remainingParameters = omit(parameters, omittedParameters);
const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
if (!isBinaryRequest) {
if (options.mediaType.format) {
headers.accept = headers.accept.split(/,/).map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
}
if (options.mediaType.previews.length) {
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
return `application/vnd.github.${preview}-preview${format}`;
}).join(",");
}
}
if (["GET", "HEAD"].includes(method)) {
url = addQueryParameters(url, remainingParameters);
} else {
if ("data" in remainingParameters) {
body = remainingParameters.data;
} else {
if (Object.keys(remainingParameters).length) {
body = remainingParameters;
} else {
headers["content-length"] = 0;
}
}
}
if (!headers["content-type"] && typeof body !== "undefined") {
headers["content-type"] = "application/json; charset=utf-8";
}
if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
body = "";
}
return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null);
}
function endpointWithDefaults(defaults, route, options) {
return parse(merge(defaults, route, options));
}
function withDefaults(oldDefaults, newDefaults) {
const DEFAULTS2 = merge(oldDefaults, newDefaults);
const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
return Object.assign(endpoint2, {
DEFAULTS: DEFAULTS2,
defaults: withDefaults.bind(null, DEFAULTS2),
merge: merge.bind(null, DEFAULTS2),
parse
});
}
var VERSION = "6.0.12";
var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
var DEFAULTS = {
method: "GET",
baseUrl: "https://api.github.com",
headers: {
accept: "application/vnd.github.v3+json",
"user-agent": userAgent
},
mediaType: {
format: "",
previews: []
}
};
var endpoint = withDefaults(null, DEFAULTS);
// node_modules/@octokit/request/dist-web/index.js
var import_node_fetch = __toModule(require_browser());
// node_modules/deprecation/dist-web/index.js
var Deprecation = class extends Error {
constructor(message) {
super(message);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
this.name = "Deprecation";
}
};
// node_modules/@octokit/request-error/dist-web/index.js
var import_once = __toModule(require_once());
var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));
var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));
var RequestError = class extends Error {
constructor(message, statusCode, options) {
super(message);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
this.name = "HttpError";
this.status = statusCode;
let headers;
if ("headers" in options && typeof options.headers !== "undefined") {
headers = options.headers;
}
if ("response" in options) {
this.response = options.response;
headers = options.response.headers;
}
const requestCopy = Object.assign({}, options.request);
if (options.request.headers.authorization) {
requestCopy.headers = Object.assign({}, options.request.headers, {
authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
});
}
requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
this.request = requestCopy;
Object.defineProperty(this, "code", {
get() {
logOnceCode(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
return statusCode;
}
});
Object.defineProperty(this, "headers", {
get() {
logOnceHeaders(new Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."));
return headers || {};
}
});
}
};
// node_modules/@octokit/request/dist-web/index.js
var VERSION2 = "5.6.3";
function getBufferResponse(response) {
return response.arrayBuffer();
}
function fetchWrapper(requestOptions) {
const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
requestOptions.body = JSON.stringify(requestOptions.body);
}
let headers = {};
let status;
let url;
const fetch = requestOptions.request && requestOptions.request.fetch || import_node_fetch.default;
return fetch(requestOptions.url, Object.assign({
method: requestOptions.method,
body: requestOptions.body,
headers: requestOptions.headers,
redirect: requestOptions.redirect
}, requestOptions.request)).then((response) => __async(this, null, function* () {
url = response.url;
status = response.status;
for (const keyAndValue of response.headers) {
headers[keyAndValue[0]] = keyAndValue[1];
}
if ("deprecation" in headers) {
const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
const deprecationLink = matches && matches.pop();
log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`);
}
if (status === 204 || status === 205) {
return;
}
if (requestOptions.method === "HEAD") {
if (status < 400) {
return;
}
throw new RequestError(response.statusText, status, {
response: {
url,
status,
headers,
data: void 0
},
request: requestOptions
});
}
if (status === 304) {
throw new RequestError("Not modified", status, {
response: {
url,
status,
headers,
data: yield getResponseData(response)
},
request: requestOptions
});
}
if (status >= 400) {
const data = yield getResponseData(response);
const error = new RequestError(toErrorMessage(data), status, {
response: {
url,
status,
headers,
data
},
request: requestOptions
});
throw error;
}
return getResponseData(response);
})).then((data) => {
return {
status,
url,
headers,
data
};
}).catch((error) => {
if (error instanceof RequestError)
throw error;
throw new RequestError(error.message, 500, {
request: requestOptions
});
});
}
function getResponseData(response) {
return __async(this, null, function* () {
const contentType = response.headers.get("content-type");
if (/application\/json/.test(contentType)) {
return response.json();
}
if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
return response.text();
}
return getBufferResponse(response);
});
}
function toErrorMessage(data) {
if (typeof data === "string")
return data;
if ("message" in data) {
if (Array.isArray(data.errors)) {
return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
}
return data.message;
}
return `Unknown error: ${JSON.stringify(data)}`;
}
function withDefaults2(oldEndpoint, newDefaults) {
const endpoint2 = oldEndpoint.defaults(newDefaults);
const newApi = function(route, parameters) {
const endpointOptions = endpoint2.merge(route, parameters);
if (!endpointOptions.request || !endpointOptions.request.hook) {
return fetchWrapper(endpoint2.parse(endpointOptions));
}
const request3 = (route2, parameters2) => {
return fetchWrapper(endpoint2.parse(endpoint2.merge(route2, parameters2)));
};
Object.assign(request3, {
endpoint: endpoint2,
defaults: withDefaults2.bind(null, endpoint2)
});
return endpointOptions.request.hook(request3, endpointOptions);
};
return Object.assign(newApi, {
endpoint: endpoint2,
defaults: withDefaults2.bind(null, endpoint2)
});
}
var request = withDefaults2(endpoint, {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
}
});
// node_modules/@octokit/graphql/dist-web/index.js
var VERSION3 = "4.8.0";
function _buildMessageForResponseErrors(data) {
return `Request failed due to following response errors:
` + data.errors.map((e) => ` - ${e.message}`).join("\n");
}
var GraphqlResponseError = class extends Error {
constructor(request3, headers, response) {
super(_buildMessageForResponseErrors(response));
this.request = request3;
this.headers = headers;
this.response = response;
this.name = "GraphqlResponseError";
this.errors = response.errors;
this.data = response.data;
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
};
var NON_VARIABLE_OPTIONS = [
"method",
"baseUrl",
"url",
"headers",
"request",
"query",
"mediaType"
];
var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
function graphql(request3, query, options) {
if (options) {
if (typeof query === "string" && "query" in options) {
return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`));
}
for (const key in options) {
if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
continue;
return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`));
}
}
const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {
if (NON_VARIABLE_OPTIONS.includes(key)) {
result[key] = parsedOptions[key];
return result;
}
if (!result.variables) {
result.variables = {};
}
result.variables[key] = parsedOptions[key];
return result;
}, {});
const baseUrl = parsedOptions.baseUrl || request3.endpoint.DEFAULTS.baseUrl;
if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
}
return request3(requestOptions).then((response) => {
if (response.data.errors) {
const headers = {};
for (const key of Object.keys(response.headers)) {
headers[key] = response.headers[key];
}
throw new GraphqlResponseError(requestOptions, headers, response.data);
}
return response.data.data;
});
}
function withDefaults3(request$1, newDefaults) {
const newRequest = request$1.defaults(newDefaults);
const newApi = (query, options) => {
return graphql(newRequest, query, options);
};
return Object.assign(newApi, {
defaults: withDefaults3.bind(null, newRequest),
endpoint: request.endpoint
});
}
var graphql$1 = withDefaults3(request, {
headers: {
"user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}`
},
method: "POST",
url: "/graphql"
});
function withCustomRequest(customRequest) {
return withDefaults3(customRequest, {
method: "POST",
url: "/graphql"
});
}
// node_modules/@octokit/auth-token/dist-web/index.js
var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
var REGEX_IS_INSTALLATION = /^ghs_/;
var REGEX_IS_USER_TO_SERVER = /^ghu_/;
function auth(token) {
return __async(this, null, function* () {
const isApp = token.split(/\./).length === 3;
const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
return {
type: "token",
token,
tokenType
};
});
}
function withAuthorizationPrefix(token) {
if (token.split(/\./).length === 3) {
return `bearer ${token}`;
}
return `token ${token}`;
}
function hook(token, request3, route, parameters) {
return __async(this, null, function* () {
const endpoint2 = request3.endpoint.merge(route, parameters);
endpoint2.headers.authorization = withAuthorizationPrefix(token);
return request3(endpoint2);
});
}
var createTokenAuth = function createTokenAuth2(token) {
if (!token) {
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
}
if (typeof token !== "string") {
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
}
token = token.replace(/^(token|bearer) +/i, "");
return Object.assign(auth.bind(null, token), {
hook: hook.bind(null, token)
});
};
// node_modules/@octokit/core/dist-web/index.js
var VERSION4 = "3.6.0";
var Octokit = class {
constructor(options = {}) {
const hook2 = new import_before_after_hook.Collection();
const requestDefaults = {
baseUrl: request.endpoint.DEFAULTS.baseUrl,
headers: {},
request: Object.assign({}, options.request, {
hook: hook2.bind(null, "request")
}),
mediaType: {
previews: [],
format: ""
}
};
requestDefaults.headers["user-agent"] = [
options.userAgent,
`octokit-core.js/${VERSION4} ${getUserAgent()}`
].filter(Boolean).join(" ");
if (options.baseUrl) {
requestDefaults.baseUrl = options.baseUrl;
}
if (options.previews) {
requestDefaults.mediaType.previews = options.previews;
}
if (options.timeZone) {
requestDefaults.headers["time-zone"] = options.timeZone;
}
this.request = request.defaults(requestDefaults);
this.graphql = withCustomRequest(this.request).defaults(requestDefaults);
this.log = Object.assign({
debug: () => {
},
info: () => {
},
warn: console.warn.bind(console),
error: console.error.bind(console)
}, options.log);
this.hook = hook2;
if (!options.authStrategy) {
if (!options.auth) {
this.auth = () => __async(this, null, function* () {
return {
type: "unauthenticated"
};
});
} else {
const auth2 = createTokenAuth(options.auth);
hook2.wrap("request", auth2.hook);
this.auth = auth2;
}
} else {
const _a = options, { authStrategy } = _a, otherOptions = __objRest(_a, ["authStrategy"]);
const auth2 = authStrategy(Object.assign({
request: this.request,
log: this.log,
octokit: this,
octokitOptions: otherOptions
}, options.auth));
hook2.wrap("request", auth2.hook);
this.auth = auth2;
}
const classConstructor = this.constructor;
classConstructor.plugins.forEach((plugin) => {
Object.assign(this, plugin(this, options));
});
}
static defaults(defaults) {
const OctokitWithDefaults = class extends this {
constructor(...args) {
const options = args[0] || {};
if (typeof defaults === "function") {
super(defaults(options));
return;
}
super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {
userAgent: `${options.userAgent} ${defaults.userAgent}`
} : null));
}
};
return OctokitWithDefaults;
}
static plugin(...newPlugins) {
var _a;
const currentPlugins = this.plugins;
const NewOctokit = (_a = class extends this {
}, _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))), _a);
return NewOctokit;
}
};
Octokit.VERSION = VERSION4;
Octokit.plugins = [];
// node_modules/js-base64/base64.mjs
var version = "3.7.2";
var VERSION5 = version;
var _hasatob = typeof atob === "function";
var _hasbtoa = typeof btoa === "function";
var _hasBuffer = typeof Buffer === "function";
var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0;
var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0;
var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var b64chs = Array.prototype.slice.call(b64ch);
var b64tab = ((a) => {
let tab = {};
a.forEach((c, i) => tab[c] = i);
return tab;
})(b64chs);
var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
var _fromCC = String.fromCharCode.bind(String);
var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));
var _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_");
var _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, "");
var btoaPolyfill = (bin) => {
let u32, c0, c1, c2, asc = "";
const pad = bin.length % 3;
for (let i = 0; i < bin.length; ) {
if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255)
throw new TypeError("invalid character found");
u32 = c0 << 16 | c1 << 8 | c2;
asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];
}
return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc;
};
var _btoa = _hasbtoa ? (bin) => btoa(bin) : _hasBuffer ? (bin) => Buffer.from(bin, "binary").toString("base64") : btoaPolyfill;
var _fromUint8Array = _hasBuffer ? (u8a) => Buffer.from(u8a).toString("base64") : (u8a) => {
const maxargs = 4096;
let strs = [];
for (let i = 0, l = u8a.length; i < l; i += maxargs) {
strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));
}
return _btoa(strs.join(""));
};
var fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
var cb_utob = (c) => {
if (c.length < 2) {
var cc = c.charCodeAt(0);
return cc < 128 ? c : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
} else {
var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320);
return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
}
};
var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
var utob = (u) => u.replace(re_utob, cb_utob);
var _encode = _hasBuffer ? (s) => Buffer.from(s, "utf8").toString("base64") : _TE ? (s) => _fromUint8Array(_TE.encode(s)) : (s) => _btoa(utob(s));
var encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);
var encodeURI2 = (src) => encode(src, true);
var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
var cb_btou = (cccc) => {
switch (cccc.length) {
case 4:
var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536;
return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320);
case 3:
return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2));
default:
return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1));
}
};
var btou = (b) => b.replace(re_btou, cb_btou);
var atobPolyfill = (asc) => {
asc = asc.replace(/\s+/g, "");
if (!b64re.test(asc))
throw new TypeError("malformed base64.");
asc += "==".slice(2 - (asc.length & 3));
let u24, bin = "", r1, r2;
for (let i = 0; i < asc.length; ) {
u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]);
bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
}
return bin;
};
var _atob = _hasatob ? (asc) => atob(_tidyB64(asc)) : _hasBuffer ? (asc) => Buffer.from(asc, "base64").toString("binary") : atobPolyfill;
var _toUint8Array = _hasBuffer ? (a) => _U8Afrom(Buffer.from(a, "base64")) : (a) => _U8Afrom(_atob(a), (c) => c.charCodeAt(0));
var toUint8Array = (a) => _toUint8Array(_unURI(a));
var _decode = _hasBuffer ? (a) => Buffer.from(a, "base64").toString("utf8") : _TD ? (a) => _TD.decode(_toUint8Array(a)) : (a) => btou(_atob(a));
var _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == "-" ? "+" : "/"));
var decode = (src) => _decode(_unURI(src));
var isValid = (src) => {
if (typeof src !== "string")
return false;
const s = src.replace(/\s+/g, "").replace(/={0,2}$/, "");
return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s);
};
var _noEnum = (v) => {
return {
value: v,
enumerable: false,
writable: true,
configurable: true
};
};
var extendString = function() {
const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));
_add("fromBase64", function() {
return decode(this);
});
_add("toBase64", function(urlsafe) {
return encode(this, urlsafe);
});
_add("toBase64URI", function() {
return encode(this, true);
});
_add("toBase64URL", function() {
return encode(this, true);
});
_add("toUint8Array", function() {
return toUint8Array(this);
});
};
var extendUint8Array = function() {
const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));
_add("toBase64", function(urlsafe) {
return fromUint8Array(this, urlsafe);
});
_add("toBase64URI", function() {
return fromUint8Array(this, true);
});
_add("toBase64URL", function() {
return fromUint8Array(this, true);
});
};
var extendBuiltins = () => {
extendString();
extendUint8Array();
};
var gBase64 = {
version,
VERSION: VERSION5,
atob: _atob,
atobPolyfill,
btoa: _btoa,
btoaPolyfill,
fromBase64: decode,
toBase64: encode,
encode,
encodeURI: encodeURI2,
encodeURL: encodeURI2,
utob,
btou,
decode,
isValid,
fromUint8Array,
toUint8Array,
extendString,
extendUint8Array,
extendBuiltins
};
// Snippet-downloader/downloader.ts
var import_obsidian3 = __toModule(require("obsidian"));
function fetchListSnippet(repoRecur, snippetList, settings, repoPath) {
return __async(this, null, function* () {
for (const data of repoRecur.data.tree) {
if (data.path.endsWith(".css") && !searchExcluded(settings.excludedSnippet, data.path) && data.path != "obsidian.css" && !searchExcluded(settings.errorSnippet, data.path)) {
const snippetName = data.path;
const snippetLastUpdate = yield grabLastCommitDate(repoPath, data.path);
snippetList.push({
name: snippetName,
lastUpdate: snippetLastUpdate
});
}
}
return snippetList;
});
}
function grabLastCommitInfo(repoPath, filepath) {
return __async(this, null, function* () {
const repoName = repoPath.replace("https://github.com/", "");
const url = `https://api.github.com/repos/${repoName}/commits?path=${encodeURIComponent(filepath)}&page=1&per_page=1`;
try {
const response = yield (0, import_obsidian3.request)({ url });
return response === "404: Not Found" ? null : JSON.parse(response);
} catch (error) {
console.log("error in grabcommitinfo", error);
}
});
}
function grabLastCommitDate(repoPath, filepath) {
return __async(this, null, function* () {
const test = yield grabLastCommitInfo(repoPath, filepath);
console.log(`Testing from ${repoPath} : ${filepath} => ${test[0].commit.author.date}`);
if (test[0].commit.author.date) {
return test[0].commit.author.date;
} else {
return "";
}
});
}
function listSnippetfromRepo(repoPath, settings) {
return __async(this, null, function* () {
const octokit = new Octokit();
const repo = repoPath.replace("https://github.com/", "");
const owner = repo.split("/")[0];
const repoName = repo.split("/")[1];
console.log(`Repo: ${repoPath}, owner: ${owner}, repoName: ${repoName}`);
const snippetList = [];
try {
const repoRecur = yield octokit.request("GET /repos/{owner}/{repo}/git/trees/{tree_sha}", {
owner,
repo: repoName,
tree_sha: "main",
recursive: "true"
});
return yield fetchListSnippet(repoRecur, snippetList, settings, repoPath);
} catch (e) {
try {
const repoRecur = yield octokit.request("GET /repos/{owner}/{repo}/git/trees/{tree_sha}", {
owner,
repo: repoName,
tree_sha: "main",
recursive: "true"
});
return yield fetchListSnippet(repoRecur, snippetList, settings, repoPath);
} catch (e2) {
console.log(e2);
return [];
}
}
});
}
function checkLastUpdate(snippetName, repoPath) {
return __async(this, null, function* () {
const oldDate = new Date(snippetName.lastUpdate);
const newDate = new Date(yield grabLastCommitDate(repoPath, snippetName.name));
return oldDate < newDate;
});
}
function downloadSnippet(repoPath, snippetName, vault) {
return __async(this, null, function* () {
const repo = repoPath.replace("https://github.com/", "");
const owner = repo.split("/")[0];
const repoName = repo.split("/")[1];
const octokit = new Octokit();
const fileName = basename(snippetName);
const filePath = (0, import_obsidian3.normalizePath)(vault.configDir + "/snippets/" + fileName);
try {
const file = yield octokit.request("GET /repos/{owner}/{repo}/contents/{path}", {
owner,
repo: repoName,
path: snippetName
});
console.log(file.status);
if (file.status === 200) {
const fileContent = gBase64.decode(file.data.content);
const adapter = vault.adapter;
yield adapter.write(filePath, fileContent);
return true;
} else {
return false;
}
} catch (e) {
console.log(e);
}
});
}
// Snippet-downloader/addSnippets.ts
function addSnippet(repoPath, settings, vault) {
return __async(this, null, function* () {
const snippetList = settings.snippetList;
let excludedSnippet = settings.errorSnippet;
const catchErrors = [];
if (!snippetList.some((snippet) => snippet.repo === repoPath)) {
const newSnippetList = yield listSnippetfromRepo(repoPath, settings);
if (newSnippetList.length === 0) {
new import_obsidian4.Notice("Error \u{1F63F}, snippet or repository not found");
return snippetList;
}
snippetList.push({
repo: repoPath,
snippetsContents: yield listSnippetfromRepo(repoPath, settings)
});
const snippet = snippetList.find((snippet2) => snippet2.repo === repoPath);
for (const snippetContents of snippet.snippetsContents) {
const success = yield downloadSnippet(repoPath, snippetContents.name, vault);
if (!success) {
excludedSnippet += snippetContents.name.replace(".css", "") + ", ";
catchErrors.push(snippetContents.name.replace(".css", ""));
}
}
let messageNotice = `Successfully added ${repoPath}. ${newSnippetList.length} snippets added. \u{1F389}`;
if (catchErrors.length > 0) {
messageNotice += `
${catchErrors.length} snippets not added\u{1F63F}: ${catchErrors.join(", ")}`;
}
new import_obsidian4.Notice(messageNotice);
return [snippetList, excludedSnippet];
}
new import_obsidian4.Notice("Error : this repo is already in the list \u{1F63F}");
return [snippetList, excludedSnippet];
});
}
function updateRepo(repoPath, snippetList, vault, excludedSnippets, errorSnippets) {
return __async(this, null, function* () {
const snippet = snippetList.find((snippet2) => snippet2.repo === repoPath);
if (snippet) {
for (const snippetContent of snippet.snippetsContents) {
if ((yield checkLastUpdate(snippetContent, repoPath)) && snippetContent.name !== "obsidian.css" && !searchExcluded(excludedSnippets, snippetContent.name) && !searchExcluded(errorSnippets, snippetContent.name)) {
const successDownloaded = yield downloadSnippet(repoPath, snippetContent.name, vault);
if (successDownloaded) {
snippetContent.lastUpdate = yield grabLastCommitDate(repoPath, snippetContent.name);
} else {
errorSnippets += snippetContent.name.replace(".css", "") + ", ";
}
}
}
}
snippetList = removeSnippetFromExcluded(repoPath, snippetList, errorSnippets, excludedSnippets);
new import_obsidian4.Notice(`${repoPath} successfully updated \u{1F389}`);
return [snippetList, errorSnippets];
});
}
function updateSpecificSnippet(item, settings) {
return __async(this, null, function* () {
let listSnippet = settings.snippetList;
let excludedSnippet = settings.errorSnippet;
const snippet = listSnippet.find((snippet2) => snippet2.repo === item.repo);
const snippetsRep = snippet.snippetsContents.find((snippet2) => snippet2.name === item.snippetPath);
if (yield checkLastUpdate(snippetsRep, item.repo)) {
const successDownload = yield downloadSnippet(item.repo, snippetsRep.name, this.app.vault);
if (successDownload) {
snippetsRep.lastUpdate = yield grabLastCommitDate(item.repo, snippetsRep.name);
new import_obsidian4.Notice(`${basename(item.snippetPath)} has been updated \u{1F389}`);
return [
listSnippet,
excludedSnippet
];
} else {
excludedSnippet = excludedSnippet + item.snippetPath.replace(".css", "") + ", ";
listSnippet = removeSnippetFromExcluded(item.repo, listSnippet, excludedSnippet, settings.excludedSnippet);
return [
listSnippet,
excludedSnippet
];
}
}
listSnippet = removeSnippetFromExcluded(item.repo, listSnippet, excludedSnippet, settings.excludedSnippet);
new import_obsidian4.Notice(`${basename(item.snippetPath)} is already up to date \u{1F4A1}`);
return [
listSnippet,
excludedSnippet
];
});
}
// Snippet-downloader/modals/updateSnippets.ts
var import_obsidian5 = __toModule(require("obsidian"));
function getAllRepo(settings) {
const repoAll = [];
for (const repo of settings.snippetList) {
repoAll.push({
repoName: repo.repo,
repoUrl: ""
});
}
return repoAll;
}
function getAllSnippet(settings) {
const allSnippet = [];
for (const snippet of settings.snippetList) {
for (const snippetContent of snippet.snippetsContents) {
if (snippetContent.name !== "obsidian.css" && !searchExcluded(settings.excludedSnippet, snippetContent.name) && !searchExcluded(settings.errorSnippet, snippetContent.name)) {
allSnippet.push({
repo: snippet.repo,
snippetPath: snippetContent.name
});
}
}
}
return allSnippet;
}
var RepoDownloader = class extends import_obsidian5.FuzzySuggestModal {
constructor(app, settings, plugin) {
super(app);
this.settings = settings;
this.plugin = plugin;
}
getItemText(item) {
return item.repoName;
}
getItems() {
return getAllRepo(this.settings);
}
onChooseItem(item, evt) {
return __async(this, null, function* () {
const allSettings = yield updateRepo(item.repoName, this.settings.snippetList, this.app.vault, this.settings.excludedSnippet, this.settings.errorSnippet);
yield this.plugin.updateList(allSettings);
});
}
};
var SpecificSnippetDownloader = class extends import_obsidian5.FuzzySuggestModal {
constructor(app, settings, plugin) {
super(app);
this.settings = settings;
this.plugin = plugin;
}
getItemText(item) {
return basename(item.snippetPath);
}
getItems() {
return getAllSnippet(this.settings);
}
onChooseItem(item, evt) {
return __async(this, null, function* () {
const newList = yield updateSpecificSnippet(item, this.settings);
yield this.plugin.updateList(newList);
});
}
};
// Snippet-downloader/modals/excludeSnippet.ts
var import_obsidian6 = __toModule(require("obsidian"));
function getExcludedSnippets(settings) {
const allSnippet = [];
for (const snippet of settings.snippetList) {
for (const snippetContent of snippet.snippetsContents) {
if (snippetContent.name !== "obsidian.css" && !searchExcluded(settings.excludedSnippet, snippetContent.name) && !searchExcluded(settings.errorSnippet, snippetContent.name)) {
allSnippet.push({
repo: snippet.repo,
snippetPath: snippetContent.name
});
}
}
}
return allSnippet;
}
function addExcludedSnippet(item, settings) {
return __async(this, null, function* () {
let excludedSnippet = settings.excludedSnippet;
excludedSnippet = excludedSnippet + ", " + item.snippetPath;
const snippetList = removeSnippetFromExcluded(item.repo, settings.snippetList, settings.errorSnippet, excludedSnippet);
return [snippetList, excludedSnippet];
});
}
var ExcludeSnippet = class extends import_obsidian6.FuzzySuggestModal {
constructor(app, settings, plugin) {
super(app);
this.settings = settings;
this.plugin = plugin;
}
getItemText(item) {
return basename(item.snippetPath);
}
getItems() {
return getExcludedSnippets(this.settings);
}
onChooseItem(item, evt) {
return __async(this, null, function* () {
const newSettings = yield addExcludedSnippet(item, this.settings);
yield this.plugin.updateList(newSettings);
new import_obsidian6.Notice(`${basename(item.snippetPath)} has been excluded! \u{1F389}`);
});
}
};
// Snippet-downloader/settings.ts
var DEFAULT_SETTINGS = {
snippetList: [],
excludedSnippet: "",
errorSnippet: ""
};
function getDetailsState(name) {
for (let i = 0; i < document.getElementsByTagName("details").length; i++) {
const details = document.getElementsByTagName("details")[i];
if (details.innerText.split("\n")[0] === name) {
return details.hasAttribute("open");
}
}
return true;
}
function openDetails(name, detailsState) {
const allDetails = document.getElementsByTagName("details");
for (let i = 0; i < allDetails.length; i++) {
const details = allDetails[i];
if (details.innerText.split("\n")[0] === name && detailsState) {
details.setAttr("open", "true");
details.open = true;
details.setAttribute("open", "true");
} else if (details.innerText.split("\n")[0] === name && !detailsState) {
details.removeAttribute("open");
details.setAttribute("open", "false");
}
}
}
var SnippetDownloaderTabs = class extends import_obsidian7.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
const allSnippets = getAllSnippet(this.plugin.settings);
containerEl.createEl("h2", { text: "Snippet Manager Settings" });
const desc_excluder = document.createDocumentFragment();
desc_excluder.createEl("span", null, (span) => {
span.innerText = "Type the snippet name you want to exclude from the list, without the extension.\nYou can also use regex, for example: ";
span.createEl("code", { text: "^(.*)$" });
span.createEl("span", { text: " will match all snippets.\n\n" });
span.createEl("a", null, (link) => {
link.innerText = "You can check your regex here.";
link.href = "https://regex101.com/";
});
});
new import_obsidian7.Setting(containerEl).setName("Excluded Snippet").setDesc(desc_excluder).addTextArea((text) => text.setPlaceholder("BadCSS I hate, badCSS*").setValue(this.plugin.settings.excludedSnippet).onChange((value) => __async(this, null, function* () {
this.plugin.settings.excludedSnippet = value;
yield this.plugin.saveSettings();
})));
const desc_plugins = document.createDocumentFragment();
desc_plugins.createEl("span", {
text: `The following is a list of the repository added via the command palette `
});
desc_plugins.createEl("div", {
text: `Click the x button next to a repository to remove it from the list.`
});
desc_plugins.createEl("b", { text: "Note: " });
desc_plugins.createEl("span", { text: "This does not delete the linked snippet, this should be done from your " });
desc_plugins.createEl("code", { text: ".obsidian/snippets" }).setAttribute("style", "font-family: var(--font-monospace)");
desc_plugins.createEl("span", { text: " folder" });
new import_obsidian7.Setting(containerEl).setName("Repository Snippet List").setDesc(desc_plugins).addButton((btn) => {
btn.setIcon("plus").setTooltip("Add new repository").onClick(() => __async(this, null, function* () {
new SnippetDownloaderModals(this.app, (result) => __async(this, null, function* () {
if (result) {
const newSettings = yield addSnippet(result.trim(), this.plugin.settings, this.app.vault);
yield this.plugin.updateList(newSettings);
const detailState = getDetailsState(result);
this.display();
openDetails(result, detailState);
}
})).open();
}));
}).addButton((btn) => {
btn.setIcon("install").setTooltip("Update all repository").onClick(() => __async(this, null, function* () {
this.plugin.updateAllSnippets();
}));
});
for (const repoPath of this.plugin.settings.snippetList) {
const details = containerEl.createEl("details");
const repoName = repoPath.repo.replace("https://github.com/", "");
const summary = details.createEl("summary", { text: repoName });
summary.addClass("snippets-downloader-summary");
new import_obsidian7.Setting(summary).setClass("snippets-downloader-options").addButton((btn) => {
btn.setClass("snippets-downloader-options-button").setIcon("cross").setTooltip("Delete this repository from the list").onClick(() => __async(this, null, function* () {
btn.buttonEl.parentElement.remove();
const newSettings = removeSnippet(repoPath.repo, this.plugin.settings.snippetList, this.plugin.settings.errorSnippet);
yield this.plugin.updateList(newSettings);
const detailState = getDetailsState(repoName);
this.display();
openDetails(repoName, detailState);
}));
}).addButton((btn) => {
btn.setClass("snippets-downloader-options-button").setIcon("sync").setTooltip("Update this repository").onClick(() => __async(this, null, function* () {
const allSettings = yield updateRepo(repoPath.repo, this.plugin.settings.snippetList, this.app.vault, this.plugin.settings.excludedSnippet, this.plugin.settings.errorSnippet);
yield this.plugin.updateList(allSettings);
}));
});
for (const snippets of repoPath.snippetsContents) {
new import_obsidian7.Setting(details).setName(basename(snippets.name)).setClass("snippets-downloader-settings").addExtraButton((btn) => {
btn.setTooltip("Update this snippet").setIcon("install").onClick(() => __async(this, null, function* () {
const updatedList = yield updateSpecificSnippet(allSnippets.find((s) => snippets.name === s.snippetPath), this.plugin.settings);
yield this.plugin.updateList(updatedList);
}));
}).addExtraButton((btn) => {
btn.setTooltip("Remove this snippet").setIcon("trash").onClick(() => __async(this, null, function* () {
btn.extraSettingsEl.parentElement.parentElement.remove();
const updatedList = yield addExcludedSnippet(getExcludedSnippets(this.plugin.settings).find((s) => snippets.name === s.snippetPath), this.plugin.settings);
yield this.plugin.updateList(updatedList);
}));
});
}
}
}
};
// Snippet-downloader/main.ts
var snippetDownloader = class extends import_obsidian8.Plugin {
updateAllSnippets() {
return __async(this, null, function* () {
if (this.settings.snippetList.length > 0) {
const snippetList = this.settings.snippetList;
const errorSnippet = this.settings.errorSnippet;
const excludedSnippet = this.settings.excludedSnippet;
let updatedSettings = [errorSnippet, snippetList];
for (const repoName of snippetList) {
updatedSettings = yield updateRepo(repoName.repo, snippetList, this.app.vault, excludedSnippet, errorSnippet);
this.settings.snippetList = updatedSettings[1];
this.settings.errorSnippet = updatedSettings[0];
}
yield this.saveSettings();
}
});
}
updateList(newSettings) {
return __async(this, null, function* () {
this.settings.snippetList = newSettings[0];
this.settings.errorSnippet = newSettings[1];
yield this.saveSettings();
});
}
onload() {
return __async(this, null, function* () {
yield this.loadSettings();
this.addCommand({
id: "add-snippet",
name: "Adding new snippet",
callback: () => {
new SnippetDownloaderModals(this.app, (result) => __async(this, null, function* () {
if (result) {
const newSettings = yield addSnippet(result.trim(), this.settings, this.app.vault);
yield this.updateList(newSettings);
}
})).open();
}
});
this.addCommand({
id: "update-all-snippets",
name: "Update all snippets",
checkCallback: (checking) => __async(this, null, function* () {
if (this.settings.snippetList.length > 0) {
if (!checking) {
const snippetList = this.settings.snippetList;
const errorSnippet = this.settings.errorSnippet;
const excludedSnippet = this.settings.excludedSnippet;
let updatedSettings = [errorSnippet, snippetList];
for (const repoName of snippetList) {
updatedSettings = yield updateRepo(repoName.repo, snippetList, this.app.vault, excludedSnippet, errorSnippet);
yield this.updateList(updatedSettings);
}
yield this.saveSettings();
}
return true;
}
return false;
})
});
this.addCommand({
id: "update-specific-repo",
name: "Update specific repository",
hotkeys: [],
checkCallback: (checking) => {
if (this.settings.snippetList.length > 0) {
if (!checking) {
new RepoDownloader(this.app, this.settings, this).open();
}
return true;
}
return false;
}
});
this.addCommand({
id: "update-specific-snippet",
name: "Update specific snippet",
hotkeys: [],
checkCallback: (checking) => {
if (this.settings.snippetList.length > 0) {
if (!checking) {
new SpecificSnippetDownloader(this.app, this.settings, this).open();
}
return true;
}
return false;
}
});
this.addCommand({
id: "remove-specific-snippet",
name: "Exclude specific snippet",
hotkeys: [],
checkCallback: (checking) => {
if (this.settings.snippetList.length > 0) {
if (!checking) {
new ExcludeSnippet(this.app, this.settings, this).open();
}
return true;
}
return false;
}
});
this.addSettingTab(new SnippetDownloaderTabs(this.app, this));
});
}
onunload() {
}
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);
});
}
};
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/