let clink = null; if (window.DOCSIFY_ROUTER_MODE === "history") { clink = Docsify.dom.create("link"); clink.rel = "canonical"; Docsify.dom.appendTo(Docsify.dom.head, clink); } const documentTitleBase = document.title; const linksMenu = '
'; const docEditBase = 'https://github.com/imgproxy/imgproxy/edit/master/docs/'; const proBadge = Docsify.dom.create("img"); proBadge.setAttribute("src", "/assets/pro.svg"); proBadge.setAttribute("title", "This feature is available in imgproxy Pro"); const proBadgeRegex = /\!\[pro\]\((\S+)\)/g; const proLink = `${proBadge.outerHTML}`; const oldProBadge = ""; const configRegex = /^\* `([^`]+)`:/gm; const defaultVersions = [["latest", "latest"]]; const configureDocsify = (additionalVersions, latestVersion, latestTag) => { const versions = defaultVersions.concat(additionalVersions); const versionAliases = {}; const versionSelect = [''); if (latestTag === "latest") latestTag = "master"; window.$docsify = { name: '$1
:');
next(content);
})
hook.doneEach(() => {
const badges = Docsify.dom.findAll(".sidebar .badge-pro");
badges.forEach(b => { b.replaceWith(proBadge.cloneNode()) });
// Docsify cuts off "target" sometimes
const links = Docsify.dom.findAll("a.badge");
links.forEach(l => { l.setAttribute("target", "_blank") });
})
}
])
}
}
const initDocsify = (versions, latestVersion, latestTag) => {
configureDocsify(versions, latestVersion, latestTag);
window.runDocsify();
};
const VERSIONS_KEY = "imgproxy.versions";
const VERSIONS_ETAG_KEY = "imgproxy.versions.etag";
let latestVersion = "latest";
let latestTag = "latest";
let storedVersions = [];
let storedVersionsJson = localStorage.getItem(VERSIONS_KEY);
let storedVersionsEtag = localStorage.getItem(VERSIONS_ETAG_KEY);
if (storedVersionsJson) {
try {
storedVersions = JSON.parse(storedVersionsJson);
} catch {
storedVersions = [];
}
}
if (storedVersions?.length)
[latestVersion, latestTag] = storedVersions[0];
else {
// Just in case storedVersions is not an array
storedVersions = [];
storedVersionsEtag = null;
}
fetch(
"https://api.github.com/repos/imgproxy/imgproxy/releases",
{
headers: {
"Accept": "application/json",
"If-None-Match": storedVersionsEtag,
},
},
).then((resp) => {
if (resp.status === 304) {
initDocsify(storedVersions, latestVersion, latestTag);
return;
}
if (resp.status != 200)
throw new Error(`Can't fetch imgproxy versions: ${resp.statusText}`);
resp.json().then((data) => {
const uniq = {};
const fetchedVersions = [];
data.forEach((release) => {
if (release.draft || release.prerelease) return;
var tag = release.tag_name;
var matches = tag?.match(/^v([0-9]+\.[0-9]+)/);
if (!matches?.length) return;
var version = matches[1];
if (uniq[version]) return;
fetchedVersions.push([version, tag]);
uniq[version] = true;
});
if (fetchedVersions.length)
[latestVersion, latestTag] = fetchedVersions[0];
localStorage.setItem(VERSIONS_KEY, JSON.stringify(fetchedVersions));
localStorage.setItem(VERSIONS_ETAG_KEY, resp.headers.get("Etag"));
initDocsify(fetchedVersions, latestVersion, latestTag);
}).catch((e) => {
initDocsify(storedVersions, latestVersion, latestTag);
throw e;
});
}).catch((e) => {
initDocsify(storedVersions, latestVersion, latestTag);
throw e;
});