Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor
Gemfile.lock
.sass-cache/
.jekyll-cache/
.jekyll-metadata/

/.idea/

/_site/

/vendor/
/node_modules/

.bundle
/.idea/

/Gemfile.lock
/package-lock.json
/yarn.lock
/pnpm-lock.yaml
/bun.lock
9 changes: 7 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ include:
exclude:
- README.md
- LICENSE
- package.json
- package-lock.json
- yarn.lock
- pnpm-lock.yaml
- bun.lock
keep_files: []
encoding: "utf-8"
# markdown_ext: "markdown,mkdown,mkdn,mkd,md"
Expand Down Expand Up @@ -330,7 +335,6 @@ post_process:
/assets/js/main.min.js:
- /assets/js/settings.js
- /assets/js/theme.js
- /assets/js/meta.js
- /assets/js/vendor/jquery/jquery-3.6.0.js
- /assets/js/plugins/gumshoe.js
- /assets/js/plugins/jquery.ba-throttle-debounce.js
Expand All @@ -339,14 +343,15 @@ post_process:
- /assets/js/plugins/jquery.magnific-popup.js
- /assets/js/plugins/smooth-scroll.js
- /assets/js/plugins/jquery.auto-redirect.js
- /assets/js/meta.ts.js
- /assets/js/_main.js
remove_dirs:
- /assets/images/
- /assets/js/plugins/
- /assets/js/vendor/
remove_files:
- /assets/js/meta.js
- /assets/js/_main.js
- /assets/js/theme.js
- /assets/js/settings.js
- /assets/js/meta.ts.js
- /assets/js/main.min.js.map
37 changes: 37 additions & 0 deletions _plugins/typescript.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
require "execjs"

ExecJS.runtime = ExecJS::Runtimes::MiniRacer if ExecJS::Runtimes::MiniRacer.available?

module TypescriptCompiler
class << self
def context=(input)
@context = input
end

def compile(input)
@context.call("compile", input)
end
end
end

class TypescriptConverter < Jekyll::Converter
def matches(ext)
ext =~ /^\.ts$/i
end

def output_ext(ext)
"#{ext}.js"
end

def convert(content)
TypescriptCompiler.compile(content)
end
end

Jekyll::Hooks.register :site, :post_read do |site|
source = File.read(site.in_source_dir("_plugins/vendor/typescript/typescript.min.js"))
source += "\n"
source += File.read(site.in_source_dir("_plugins/vendor/typescript/compile.js"))

TypescriptCompiler.context = ExecJS.compile(source)
end
33 changes: 33 additions & 0 deletions _plugins/vendor/typescript/compile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
function compile(code) {
const input = "index.ts";
const output = "index.js";

const sources = new Map([[input, code]]);
const results = new Map();

ts.createProgram([input], {
module: ts.ModuleKind.ESNext,
target: ts.ScriptTarget.ESNext,
noResolve: true,
}, {
getSourceFile: function (fileName, languageVersion, _onError) {
const sourceText = this.readFile(fileName);
return sourceText !== undefined
? ts.createSourceFile(fileName, sourceText, languageVersion)
: undefined;
},
getDefaultLibFileName: (defaultLibOptions) => "/" + ts.getDefaultLibFileName(defaultLibOptions),
writeFile: (fileName, content) => results.set(fileName, content),
getCurrentDirectory: () => "/",
getDirectories: (_path) => [],
fileExists: () => true,
readFile: (fileName) => sources.get(fileName),
getCanonicalFileName: (fileName) => fileName,
useCaseSensitiveFileNames: () => true,
getNewLine: () => "\n",
getEnvironmentVariable: () => "",
resolveModuleNames: () => [],
}).emit();

return results.get(output);
}
27 changes: 27 additions & 0 deletions _plugins/vendor/typescript/typescript.min.js

Large diffs are not rendered by default.

40 changes: 0 additions & 40 deletions assets/js/meta.js

This file was deleted.

51 changes: 51 additions & 0 deletions assets/js/meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
layout: null
---

/// <reference lib="dom" />
/// <reference types="jquery" />

interface Window {
$: JQueryStatic;
appendMeta: (text: string, icon: string) => void;
hits: (tag: string) => void;
settings: {
get: (key: string) => string;
};
}

(() => {
const $header = $("#main article.page div.page__inner-wrap > header");
if ($header.length !== 0) {
let $metas = $header.children(".page__meta");
if (!$metas.length) {
$metas = $('<div class="page__meta"></div>');
$header.append($metas);
}
window.appendMeta = (text, icon) => {
if ($metas.children().length !== 0) {
$metas.append('<span class="page__meta-sep"></span>');
}
const $meta = $("<span>");
if (icon) {
$meta.append($("<i>").addClass(icon), " ");
}
$meta.append(text.trim());
$metas.append($meta);
};
window.hits = (tag) => {
if (window.settings.get("miscellaneous_hits") === "disable") return;
const hitsUrl = new URL("https://hits.zkitefly.eu.org");
hitsUrl.searchParams.set("tag", tag);
fetch(hitsUrl, { method: "HEAD" }).then((response) => {
if (response.status !== 200) return;
const { headers } = response;
const total = headers.get("X-Total-Hits");
const today = headers.get("X-Today-Hits");
if (total !== null && today !== null) {
window.appendMeta(today + " / " + total, "far fa-eye");
}
});
};
}
})();
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"dependencies": {},
"devDependencies": {
"@types/jquery": "^3.0.0"
}
}