pages update

pull/304/head
Norman Köhring 1 year ago
parent 8e38ec2fdb
commit c8940dc343

@ -1,64 +1,71 @@
import { retryFetch } from './toolkit.ts'
import { retryFetch } from "./toolkit.ts";
const STATUS_URL = 'http://localhost:8383/api/runs/'
const RESULT_URL = 'http://localhost:8383/api/results/'
const STATUS_URL = "http://localhost:8383/api/runs/";
const RESULT_URL = "http://localhost:8383/api/results/";
const METRIC_DEFAULTS = {
device: 'desktop',
device: "desktop",
waitForResponse: false,
screenshot: true,
}
};
// requests metrics and returns runId
export async function requestMetricsRun (url:string): Promise<string|null> {
export async function requestMetricsRun(url: string): Promise<string | null> {
const body = JSON.stringify({
url,
...METRIC_DEFAULTS,
})
});
const response = await fetch(STATUS_URL, {
method: "POST",
headers: [
["Content-Type", "application/json"],
["User-Agent", "250kb-club"]
["User-Agent", "250kb-club"],
],
body,
})
});
if (response.ok) {
const json: { runId: string } = await response.json()
return json.runId
const json: { runId: string } = await response.json();
return json.runId;
} else {
const err = await response.text()
console.error(`Failed to request metrics run for ${url}: ${err}`)
return null
const err = await response.text();
console.error(`Failed to request metrics run for ${url}: ${err}`);
return null;
}
}
export async function checkStatus (runId: string, retries = 3): Promise<Status> {
const json = await retryFetch(`${STATUS_URL}${runId}`)
if (!json) return { url: '', status: 'failed' }
export async function checkStatus(runId: string): Promise<Status> {
const json = await retryFetch(`${STATUS_URL}${runId}`);
if (!json) return { url: "", status: "failed" };
const url = json.params.url
const status = json.status.statusCode
return { url, status }
const url = json.params.url;
const status = json.status.statusCode;
return { url, status };
}
export async function retrieveMetrics (runId: string): Promise<Metric|null> {
const json = await retryFetch(`${RESULT_URL}${runId}`)
if (!json) return null
export async function retrieveMetrics(runId: string): Promise<Metric | null> {
const json = await retryFetch(`${RESULT_URL}${runId}`);
if (!json) return null;
return {
scores: {
pageWeight: json.scoreProfiles.generic.categories.pageWeight.categoryScore,
pageWeight:
json.scoreProfiles.generic.categories.pageWeight.categoryScore,
requests: json.scoreProfiles.generic.categories.requests.categoryScore,
domComplexity: json.scoreProfiles.generic.categories.domComplexity.categoryScore,
javascriptComplexity: json.scoreProfiles.generic.categories.javascriptComplexity.categoryScore,
badJavascript: json.scoreProfiles.generic.categories.badJavascript.categoryScore,
domComplexity:
json.scoreProfiles.generic.categories.domComplexity.categoryScore,
javascriptComplexity:
json.scoreProfiles.generic.categories.javascriptComplexity
.categoryScore,
badJavascript:
json.scoreProfiles.generic.categories.badJavascript.categoryScore,
jQuery: json.scoreProfiles.generic.categories.jQuery.categoryScore,
cssComplexity: json.scoreProfiles.generic.categories.cssComplexity.categoryScore,
cssComplexity:
json.scoreProfiles.generic.categories.cssComplexity.categoryScore,
badCSS: json.scoreProfiles.generic.categories.badCSS.categoryScore,
fonts: json.scoreProfiles.generic.categories.fonts.categoryScore,
serverConfig: json.scoreProfiles.generic.categories.serverConfig.categoryScore,
serverConfig:
json.scoreProfiles.generic.categories.serverConfig.categoryScore,
globalScore: json.scoreProfiles.generic.globalScore,
},
metrics: {
@ -74,6 +81,6 @@ export async function retrieveMetrics (runId: string): Promise<Metric|null> {
webfontSize: json.toolsResults.phantomas.metrics.webfontSize,
base64Size: json.toolsResults.phantomas.metrics.base64Size,
otherSize: json.toolsResults.phantomas.metrics.otherSize,
}
}
},
};
}

@ -1,74 +1,101 @@
import { parse as tomlParse, stringify as tomlStringify } from "https://deno.land/std@0.130.0/encoding/toml.ts"
import {
parse as tomlParse,
stringify as tomlStringify,
} from "https://deno.land/std@0.130.0/encoding/toml.ts";
const reFrontmatter = /^\+\+\+([\s\S]*)^\+\+\+$([\s\S]*)/m;
export function url2title (url: string): string {
export function url2title(url: string): string {
return url
.replace(/^https?:\/\//, '') // remove leading http(s)://
.replace(/\/$/, '') // remove trailing slash
.replace(/^https?:\/\//, "") // remove leading http(s)://
.replace(/\/$/, ""); // remove trailing slash
}
// gets an URL like https://foo.bar and returns ./content/foo_baz.md
function url2filepath (url: string, output_path: string): string {
const filename = url2title(url)
.replaceAll(/[\.\/]/g, '_') // replace dots and slashes with underscores
return `${output_path}/${filename}.md`
function url2filepath(url: string, output_path: string): string {
const filename = url2title(url).replaceAll(/[\.\/]/g, "_"); // replace dots and slashes with underscores
return `${output_path}/${filename}.md`;
}
// deprecated in deno std, but also simple to replicate
// see: https://deno.land/std@0.130.0/fs/exists.ts
async function exists (path: string): Promise<boolean> {
async function exists(path: string): Promise<boolean> {
try {
return !!(await Deno.lstat(path))
return !!(await Deno.lstat(path));
} catch (err) {
if (err instanceof Deno.errors.NotFound) return false
throw err
if (err instanceof Deno.errors.NotFound) return false;
throw err;
}
}
// checks if URL has a record already and returns time since last check or null
export async function getPageRecord (url: string, output_path: string): Promise<PageRecord|null> {
const path = url2filepath(url, output_path)
const hasRecord = await exists(path)
export async function getPageRecord(
url: string,
output_path: string
): Promise<PageRecord | null> {
const path = url2filepath(url, output_path);
const hasRecord = await exists(path);
if (!hasRecord) return null
if (!hasRecord) return null;
const fileContents = await Deno.readTextFile(path)
const match = fileContents.match(reFrontmatter)
if (!match) return null // that should never happen but who knows
return tomlParse(match[1].trim()) as PageRecord
const fileContents = await Deno.readTextFile(path);
const match = fileContents.match(reFrontmatter);
if (!match) return null; // that should never happen but who knows
return tomlParse(match[1].trim()) as PageRecord;
}
export async function writeRecord (record: PageRecord, url: string, output_path: string): Promise<boolean> {
const path = url2filepath(url, output_path)
const toml = tomlStringify(record)
export async function writeRecord(
record: PageRecord,
url: string,
output_path: string
): Promise<boolean> {
const path = url2filepath(url, output_path);
const toml = tomlStringify(record);
try {
await Deno.writeTextFile(path, `+++\n${toml}+++\n`)
return true
await Deno.writeTextFile(path, `+++\n${toml}+++\n`);
return true;
} catch {
return false
return false;
}
}
function delay (ms: number): Promise<unknown> {
return new Promise(resolve => setTimeout(resolve, ms));
export async function removeRecord(url: string, output_path: string) {
const path = url2filepath(url, output_path);
const hasRecord = await exists(path);
if (!hasRecord) return false;
try {
await Deno.remove(path);
return true;
} catch {
return false;
}
}
function delay(ms: number): Promise<unknown> {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export async function retryFetch (url: string, retries=3, msDelay=1000): Promise<any> {
export async function retryFetch(
url: string,
retries = 3,
msDelay = 1000
): Promise<any> {
try {
const response = await fetch(url)
if (!response.ok) return false
const json = await response.json()
return json
const response = await fetch(url);
if (!response.ok) return false;
const json = await response.json();
return json;
} catch (err) {
if (retries > 0) {
console.warn(`Failed to fetch ${url}, retrying in ${msDelay}ms.`)
await delay(msDelay)
return retryFetch(url, retries - 1, msDelay)
console.warn(`Failed to fetch ${url}, retrying in ${msDelay}ms.`);
await delay(msDelay);
return retryFetch(url, retries - 1, msDelay);
} else {
console.error(`Fetching ${url} failed too often. Giving up.`)
return false
console.error(`Fetching ${url} failed too often. Giving up.`);
return false;
}
}
}

@ -1,11 +1,11 @@
+++
title = "0xedward.io"
date = "2022-03-22"
updated = "2022-11-28"
weight = 3838
updated = "2023-01-31"
weight = 4574
[extra]
source = "https://0xedward.io/"
ratio = 82
ratio = 63
size = 4
+++

@ -1,7 +1,7 @@
+++
title = "0xff.nu"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 3890
[extra]

@ -1,8 +1,8 @@
+++
title = "10kbclub.com"
date = "2022-03-22"
updated = "2022-11-26"
weight = 7838
updated = "2023-01-31"
weight = 8155
[extra]
source = "https://10kbclub.com/"

@ -1,8 +1,8 @@
+++
title = "1kb.lejtzen.dev"
date = "2022-11-28"
updated = "2022-11-28"
weight = 981
updated = "2023-01-31"
weight = 983
[extra]
source = "https://1kb.lejtzen.dev"

@ -1,11 +1,11 @@
+++
title = "1mb.club"
date = "2022-03-22"
updated = "2022-11-26"
weight = 17253
updated = "2023-01-31"
weight = 17500
[extra]
source = "https://1mb.club/"
ratio = 85
ratio = 86
size = 17
+++

@ -1,11 +1,11 @@
+++
title = "250kb.club"
date = "2022-02-22"
updated = "2022-11-26"
weight = 12145
updated = "2023-01-31"
weight = 12214
[extra]
source = "https://250kb.club/"
ratio = 58
ratio = 57
size = 12
+++

@ -1,11 +1,11 @@
+++
title = "25kb.xyz"
date = "2022-03-23"
updated = "2022-11-28"
weight = 1404
updated = "2023-01-31"
weight = 66703
[extra]
source = "https://25kb.xyz/"
ratio = 100
size = 1
ratio = 11
size = 65
+++

@ -1,11 +1,11 @@
+++
title = "512kb.club"
date = "2022-03-22"
updated = "2022-11-26"
weight = 14001
updated = "2023-01-31"
weight = 15550
[extra]
source = "https://512kb.club/"
ratio = 83
size = 14
size = 15
+++

@ -1,8 +1,8 @@
+++
title = "abridge.netlify.app"
date = "2022-11-26"
updated = "2022-11-26"
weight = 12452
updated = "2023-01-31"
weight = 12426
[extra]
source = "https://abridge.netlify.app/"

@ -1,11 +1,11 @@
+++
title = "ache.one"
date = "2022-03-22"
updated = "2022-11-28"
weight = 20294
updated = "2023-01-31"
weight = 21237
[extra]
source = "https://ache.one/"
ratio = 18
size = 20
ratio = 17
size = 21
+++

@ -1,11 +0,0 @@
+++
title = "ajroach42.com"
date = "2022-06-10"
updated = "2022-11-28"
weight = 26186
[extra]
source = "http://ajroach42.com/"
ratio = 9
size = 26
+++

@ -1,11 +0,0 @@
+++
title = "alexanderobenauer.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 1078233
[extra]
source = "https://alexanderobenauer.com"
ratio = 1
size = 1053
+++

@ -1,11 +1,11 @@
+++
title = "alexschroeder.ch"
date = "2022-03-22"
updated = "2022-11-27"
weight = 58642
updated = "2023-01-31"
weight = 40705
[extra]
source = "https://alexschroeder.ch/"
ratio = 92
size = 57
ratio = 89
size = 40
+++

@ -1,8 +1,8 @@
+++
title = "allien.work"
date = "2022-03-22"
updated = "2022-11-28"
weight = 114767
updated = "2023-01-31"
weight = 114799
[extra]
source = "https://allien.work/"

@ -1,11 +1,11 @@
+++
title = "ampersandia.net"
date = "2022-04-11"
updated = "2022-11-28"
weight = 47278
updated = "2023-01-31"
weight = 51161
[extra]
source = "https://ampersandia.net/"
ratio = 6
size = 46
ratio = 5
size = 50
+++

@ -1,11 +1,11 @@
+++
title = "annaaurora.eu"
date = "2022-11-28"
updated = "2022-11-28"
weight = 151453
updated = "2023-01-31"
weight = 36314
[extra]
source = "https://annaaurora.eu/"
ratio = 1
size = 148
ratio = 6
size = 35
+++

@ -1,11 +1,11 @@
+++
title = "antranigv.am"
date = "2022-03-22"
updated = "2022-11-28"
weight = 18517
updated = "2023-01-31"
weight = 77915
[extra]
source = "https://antranigv.am/"
ratio = 43
size = 18
ratio = 11
size = 76
+++

@ -1,7 +1,7 @@
+++
title = "arfer.net"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 7495
[extra]

@ -1,11 +1,11 @@
+++
title = "armaanb.net"
date = "2022-03-22"
updated = "2022-11-28"
weight = 17968
updated = "2023-01-31"
weight = 18423
[extra]
source = "https://armaanb.net/"
ratio = 9
ratio = 10
size = 18
+++

@ -1,11 +1,11 @@
+++
title = "aroace.space"
date = "2022-06-10"
updated = "2022-11-28"
weight = 160507
updated = "2023-01-31"
weight = 147855
[extra]
source = "https://aroace.space/"
ratio = 3
size = 157
size = 144
+++

@ -1,8 +1,8 @@
+++
title = "artemislena.eu"
date = "2022-03-22"
updated = "2022-11-28"
weight = 3594
updated = "2023-01-31"
weight = 3585
[extra]
source = "https://artemislena.eu/"

@ -1,8 +1,8 @@
+++
title = "bcachefs.org"
date = "2022-03-22"
updated = "2022-11-28"
weight = 8434
updated = "2023-01-31"
weight = 8497
[extra]
source = "https://bcachefs.org/"

@ -1,11 +1,11 @@
+++
title = "beh.uk"
date = "2022-03-22"
updated = "2022-11-28"
weight = 69438
updated = "2023-01-31"
weight = 68194
[extra]
source = "https://beh.uk/"
ratio = 8
size = 68
ratio = 9
size = 67
+++

@ -1,7 +1,7 @@
+++
title = "benharr.is"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 4192
[extra]

@ -1,11 +1,11 @@
+++
title = "benovermyer.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 22253
updated = "2023-01-31"
weight = 22719
[extra]
source = "https://benovermyer.com/"
ratio = 9
ratio = 10
size = 22
+++

@ -1,8 +1,8 @@
+++
title = "berkshirehathaway.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 72411
updated = "2023-01-31"
weight = 72635
[extra]
source = "https://berkshirehathaway.com"

@ -1,11 +1,11 @@
+++
title = "bernsteinbear.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 31959
updated = "2023-01-31"
weight = 31934
[extra]
source = "https://bernsteinbear.com/"
ratio = 11
ratio = 12
size = 31
+++

@ -1,8 +1,8 @@
+++
title = "bestmotherfucking.website"
date = "2022-03-22"
updated = "2022-11-27"
weight = 3321
updated = "2023-01-31"
weight = 3338
[extra]
source = "https://bestmotherfucking.website/"

@ -1,8 +1,8 @@
+++
title = "bettermotherfuckingwebsite.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 23734
updated = "2023-01-31"
weight = 23594
[extra]
source = "http://bettermotherfuckingwebsite.com/"

@ -1,11 +1,11 @@
+++
title = "binyam.in"
date = "2022-03-22"
updated = "2022-11-28"
weight = 76233
updated = "2023-01-31"
weight = 39343
[extra]
source = "https://binyam.in/"
ratio = 3
size = 74
ratio = 5
size = 38
+++

@ -1,8 +1,8 @@
+++
title = "blakehawkins.com/blog"
date = "2022-03-22"
updated = "2022-11-28"
weight = 57545
updated = "2023-01-31"
weight = 57374
[extra]
source = "https://blakehawkins.com/blog"

@ -1,7 +1,7 @@
+++
title = "blog.bshah.in"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 10417
[extra]

@ -1,8 +1,8 @@
+++
title = "blog.circuitsofimagination.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 158829
updated = "2023-01-31"
weight = 158822
[extra]
source = "https://blog.circuitsofimagination.com/"

@ -1,11 +1,11 @@
+++
title = "blog.fefe.de"
date = "2022-03-22"
updated = "2022-11-27"
weight = 11296
updated = "2023-01-31"
weight = 6731
[extra]
source = "https://blog.fefe.de"
ratio = 100
size = 11
size = 7
+++

@ -1,7 +1,7 @@
+++
title = "blog.fossterer.com"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 16062
[extra]

@ -1,11 +1,11 @@
+++
title = "bnolet.me"
date = "2022-03-22"
updated = "2022-11-28"
weight = 158341
updated = "2023-01-31"
weight = 158190
[extra]
source = "https://bnolet.me"
ratio = 3
size = 155
size = 154
+++

@ -1,11 +1,11 @@
+++
title = "boehs.org"
date = "2022-03-22"
updated = "2022-11-28"
weight = 84670
updated = "2023-01-31"
weight = 85560
[extra]
source = "https://boehs.org/"
ratio = 2
size = 83
size = 84
+++

@ -1,11 +1,11 @@
+++
title = "box.matto.nl"
date = "2022-03-22"
updated = "2022-11-28"
weight = 7291
updated = "2023-01-31"
weight = 7349
[extra]
source = "https://box.matto.nl"
ratio = 61
ratio = 62
size = 7
+++

@ -1,8 +1,8 @@
+++
title = "bridge.simplefin.org"
date = "2022-03-22"
updated = "2022-11-27"
weight = 7656
updated = "2023-01-31"
weight = 7675
[extra]
source = "https://bridge.simplefin.org"

@ -1,8 +1,8 @@
+++
title = "buchh.org"
date = "2022-03-22"
updated = "2022-11-28"
weight = 2230
updated = "2023-01-31"
weight = 2195
[extra]
source = "https://buchh.org/"

@ -1,7 +1,7 @@
+++
title = "bvnf.space"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 3419
[extra]

@ -1,11 +1,11 @@
+++
title = "casperlefantom.net"
date = "2022-04-11"
updated = "2022-11-28"
weight = 175376
updated = "2023-01-31"
weight = 177301
[extra]
source = "https://casperlefantom.net/"
ratio = 8
size = 171
size = 173
+++

@ -1,7 +1,7 @@
+++
title = "cat-v.org"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 10115
[extra]

@ -1,8 +1,8 @@
+++
title = "ccsleep.net"
date = "2022-03-22"
updated = "2022-11-28"
weight = 2500
updated = "2023-01-31"
weight = 2489
[extra]
source = "https://ccsleep.net/"

@ -1,8 +1,8 @@
+++
title = "chad.hirsch.host"
date = "2022-03-22"
updated = "2022-11-28"
weight = 25280
updated = "2023-01-31"
weight = 25298
[extra]
source = "https://chad.hirsch.host"

@ -1,11 +1,11 @@
+++
title = "chrisportela.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 149589
updated = "2023-01-31"
weight = 142481
[extra]
source = "https://chrisportela.com"
ratio = 2
size = 146
size = 139
+++

@ -1,11 +1,11 @@
+++
title = "christine.website"
date = "2022-03-22"
updated = "2022-11-28"
weight = 55298
updated = "2023-01-31"
weight = 65907
[extra]
source = "https://christine.website/"
ratio = 6
size = 54
ratio = 5
size = 64
+++

@ -1,11 +1,11 @@
+++
title = "cleberg.io"
date = "2022-06-10"
updated = "2022-11-28"
weight = 883
updated = "2023-01-31"
weight = 6189
[extra]
source = "https://cleberg.io/"
ratio = 100
size = 1
ratio = 52
size = 6
+++

@ -1,7 +1,7 @@
+++
title = "cnx.srht.site"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 3538
[extra]

@ -1,8 +1,8 @@
+++
title = "codelayer.de"
date = "2022-03-22"
updated = "2022-11-27"
weight = 139115
updated = "2023-01-31"
weight = 139124
[extra]
source = "https://codelayer.de"

@ -1,7 +1,7 @@
+++
title = "codevoid.de"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 7721
[extra]

@ -1,8 +1,8 @@
+++
title = "codingbobby.xyz"
date = "2022-03-22"
updated = "2022-11-28"
weight = 92784
updated = "2023-01-31"
weight = 93149
[extra]
source = "https://codingbobby.xyz/"

@ -1,7 +1,7 @@
+++
title = "codingotaku.com"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 9859
[extra]

@ -1,11 +1,11 @@
+++
title = "colean.cc"
date = "2022-03-23"
updated = "2022-11-28"
weight = 1886
updated = "2023-01-31"
weight = 1840
[extra]
source = "https://colean.cc/"
ratio = 65
ratio = 64
size = 2
+++

@ -1,8 +1,8 @@
+++
title = "concise-encoding.org"
date = "2022-03-22"
updated = "2022-11-27"
weight = 27568
updated = "2023-01-31"
weight = 27527
[extra]
source = "https://concise-encoding.org/"

@ -1,8 +1,8 @@
+++
title = "consoom.soy"
date = "2022-03-22"
updated = "2022-11-28"
weight = 182821
updated = "2023-01-31"
weight = 182980
[extra]
source = "https://consoom.soy/"

@ -1,8 +1,8 @@
+++
title = "coolmathgames.tech"
date = "2022-03-22"
updated = "2022-11-28"
weight = 62485
updated = "2023-01-31"
weight = 62552
[extra]
source = "http://coolmathgames.tech/"

@ -1,7 +1,7 @@
+++
title = "cosmo.red"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 1028
[extra]

@ -1,11 +1,11 @@
+++
title = "cronokirby.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 244320
updated = "2023-01-31"
weight = 244127
[extra]
source = "https://cronokirby.com"
ratio = 2
size = 239
size = 238
+++

@ -1,8 +1,8 @@
+++
title = "customformats.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 249250
updated = "2023-01-31"
weight = 249194
[extra]
source = "https://customformats.com/"

@ -1,11 +1,11 @@
+++
title = "cycloneblaze.net"
date = "2022-03-22"
updated = "2022-11-28"
weight = 24557
updated = "2023-01-31"
weight = 22335
[extra]
source = "https://cycloneblaze.net/"
ratio = 7
size = 24
size = 22
+++

@ -1,11 +1,11 @@
+++
title = "daniel-siepmann.de"
date = "2022-03-22"
updated = "2022-06-08"
weight = 16903
updated = "2023-01-31"
weight = 18023
[extra]
source = "https://daniel-siepmann.de/"
ratio = 74
size = 17
ratio = 76
size = 18
+++

@ -1,11 +0,0 @@
+++
title = "danielcuttridge.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 940946
[extra]
source = "https://danielcuttridge.com/"
ratio = 2
size = 919
+++

@ -1,11 +1,11 @@
+++
title = "danielsada.tech"
date = "2022-03-22"
updated = "2022-11-27"
weight = 139211
updated = "2023-01-31"
weight = 138544
[extra]
source = "https://danielsada.tech/"
ratio = 3
size = 136
ratio = 2
size = 135
+++

@ -1,8 +1,8 @@
+++
title = "danluu.com"
date = "2022-03-22"
updated = "2022-11-26"
weight = 5037
updated = "2023-01-31"
weight = 5030
[extra]
source = "https://danluu.com"

@ -1,11 +1,11 @@
+++
title = "davidjenei.com"
date = "2022-06-08"
updated = "2022-11-28"
weight = 13100
updated = "2023-01-31"
weight = 13208
[extra]
source = "https://davidjenei.com"
ratio = 9
ratio = 10
size = 13
+++

@ -1,8 +1,8 @@
+++
title = "decentnet.github.io"
date = "2022-03-22"
updated = "2022-11-28"
weight = 10688
updated = "2023-01-31"
weight = 10721
[extra]
source = "https://decentnet.github.io/"

@ -1,11 +1,11 @@
+++
title = "dotfilehub.com"
date = "2022-03-22"
updated = "2022-11-26"
weight = 2655
updated = "2023-01-31"
weight = 2948
[extra]
source = "https://dotfilehub.com"
ratio = 35
ratio = 31
size = 3
+++

@ -1,11 +1,11 @@
+++
title = "dpldocs.info/this-week-in-d/Blog.html"
date = "2022-03-22"
updated = "2022-11-27"
weight = 113574
updated = "2023-01-31"
weight = 117668
[extra]
source = "http://dpldocs.info/this-week-in-d/Blog.html"
ratio = 75
size = 111
ratio = 76
size = 115
+++

@ -1,11 +1,11 @@
+++
title = "drewdevault.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 30161
updated = "2023-01-31"
weight = 30366
[extra]
source = "https://drewdevault.com/"
ratio = 51
size = 29
ratio = 52
size = 30
+++

@ -1,8 +1,8 @@
+++
title = "dusanmitrovic.xyz"
date = "2022-03-22"
updated = "2022-11-28"
weight = 14464
updated = "2023-01-31"
weight = 14461
[extra]
source = "https://dusanmitrovic.xyz/"

@ -1,11 +1,11 @@
+++
title = "dyremyhr.no"
date = "2022-03-22"
updated = "2022-11-28"
weight = 70770
updated = "2023-01-31"
weight = 8321
[extra]
source = "https://dyremyhr.no/"
ratio = 4
size = 69
ratio = 16
size = 8
+++

@ -1,11 +1,11 @@
+++
title = "editions-du-26-octobre.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 91938
updated = "2023-01-31"
weight = 92485
[extra]
source = "https://editions-du-26-octobre.com/"
ratio = 16
ratio = 17
size = 90
+++

@ -1,11 +1,11 @@
+++
title = "emersion.fr"
date = "2022-03-22"
updated = "2022-11-28"
weight = 185283
updated = "2023-01-31"
weight = 226021
[extra]
source = "https://emersion.fr/"
ratio = 1
size = 181
size = 221
+++

@ -1,8 +1,8 @@
+++
title = "fabioartuso.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 1608
updated = "2023-01-31"
weight = 1578
[extra]
source = "https://fabioartuso.com/"

@ -1,8 +1,8 @@
+++
title = "fanael.github.io"
date = "2022-03-22"
updated = "2022-11-28"
weight = 9820
updated = "2023-01-31"
weight = 9837
[extra]
source = "https://fanael.github.io/"

@ -1,11 +1,11 @@
+++
title = "feather.wiki"
date = "2022-06-10"
updated = "2022-11-28"
weight = 251343
updated = "2023-01-31"
weight = 198184
[extra]
source = "https://feather.wiki/"
ratio = 70
size = 245
ratio = 97
size = 194
+++

@ -1,11 +1,11 @@
+++
title = "felt.dev"
date = "2022-03-22"
updated = "2022-06-08"
weight = 81018
updated = "2023-01-31"
weight = 87039
[extra]
source = "https://felt.dev/"
ratio = 3
size = 79
ratio = 4
size = 85
+++

@ -1,8 +1,8 @@
+++
title = "flatpackapps.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 19098
updated = "2023-01-31"
weight = 19122
[extra]
source = "https://flatpackapps.com"

@ -1,7 +1,7 @@
+++
title = "fmarier.org"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 111216
[extra]

@ -1,8 +1,8 @@
+++
title = "fossdd.codeberg.page"
date = "2022-03-22"
updated = "2022-11-28"
weight = 6454
updated = "2023-01-31"
weight = 6431
[extra]
source = "https://fossdd.codeberg.page/"

@ -1,11 +1,11 @@
+++
title = "foxwells.garden"
date = "2022-03-22"
updated = "2022-11-28"
weight = 41238
updated = "2023-01-31"
weight = 40816
[extra]
source = "https://foxwells.garden/"
ratio = 14
ratio = 13
size = 40
+++

@ -1,11 +1,11 @@
+++
title = "free.mg"
date = "2022-03-22"
updated = "2022-11-28"
weight = 9294
updated = "2023-01-31"
weight = 66576
[extra]
source = "https://free.mg/"
ratio = 28
size = 9
ratio = 4
size = 65
+++

@ -1,11 +1,11 @@
+++
title = "freesolitaire.win"
date = "2022-03-22"
updated = "2022-11-27"
weight = 89034
updated = "2023-01-31"
weight = 84070
[extra]
source = "https://freesolitaire.win/"
ratio = 23
size = 87
ratio = 24
size = 82
+++

@ -1,11 +1,11 @@
+++
title = "frontaid.io"
date = "2022-03-22"
updated = "2022-11-27"
weight = 128708
updated = "2023-01-31"
weight = 149452
[extra]
source = "https://frontaid.io"
ratio = 2
size = 126
size = 146
+++

@ -1,11 +1,11 @@
+++
title = "fullstackpython.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 5581
updated = "2023-01-31"
weight = 5690
[extra]
source = "https://fullstackpython.com"
ratio = 100
size = 5
size = 6
+++

@ -1,11 +1,11 @@
+++
title = "funnylookinhat.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 3535
updated = "2023-01-31"
weight = 3552
[extra]
source = "https://funnylookinhat.com/"
ratio = 75
ratio = 76
size = 3
+++

@ -1,11 +1,11 @@
+++
title = "gallant.dev"
date = "2022-03-22"
updated = "2022-11-28"
weight = 42910
updated = "2023-01-31"
weight = 40266
[extra]
source = "https://gallant.dev/"
ratio = 25
size = 42
ratio = 30
size = 39
+++

@ -1,8 +1,8 @@
+++
title = "gennext.net.au"
date = "2022-03-22"
updated = "2022-11-28"
weight = 53524
updated = "2023-01-31"
weight = 53560
[extra]
source = "https://gennext.net.au/"

@ -1,11 +1,11 @@
+++
title = "gerikson.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 2333
updated = "2023-01-31"
weight = 2377
[extra]
source = "http://gerikson.com/"
ratio = 40
ratio = 41
size = 2
+++

@ -1,11 +1,11 @@
+++
title = "gerikson.com/hnlo"
date = "2022-03-22"
updated = "2022-11-27"
weight = 29474
updated = "2023-01-31"
weight = 37038
[extra]
source = "http://gerikson.com/hnlo/"
ratio = 78
size = 29
ratio = 83
size = 36
+++

@ -1,11 +1,11 @@
+++
title = "getindiekit.com"
date = "2022-03-22"
updated = "2022-11-28"
weight = 182340
updated = "2023-01-31"
weight = 255632
[extra]
source = "https://getindiekit.com/"
ratio = 3
size = 178
ratio = 2
size = 250
+++

@ -1,7 +1,7 @@
+++
title = "grapheneos.org"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 4471
[extra]

@ -1,7 +1,7 @@
+++
title = "gtrr.artemislena.eu"
date = "2022-03-22"
updated = "2022-11-28"
updated = "2023-01-31"
weight = 2957
[extra]

@ -1,8 +1,8 @@
+++
title = "guts.plus"
date = "2022-03-22"
updated = "2022-11-27"
weight = 39618
updated = "2023-01-31"
weight = 39664
[extra]
source = "https://guts.plus/"

@ -1,8 +1,8 @@
+++
title = "huyngo.envs.net"
date = "2022-03-22"
updated = "2022-11-28"
weight = 11111
updated = "2023-01-31"
weight = 11112
[extra]
source = "https://huyngo.envs.net"

@ -1,8 +1,8 @@
+++
title = "iain.in"
date = "2022-03-22"
updated = "2022-11-27"
weight = 131955
updated = "2023-01-31"
weight = 131953
[extra]
source = "https://iain.in/"

@ -1,11 +1,11 @@
+++
title = "ianmobbs.com"
date = "2022-03-22"
updated = "2022-11-27"
weight = 191532
updated = "2023-01-31"
weight = 215921
[extra]
source = "https://ianmobbs.com"
ratio = 1
size = 187
size = 211
+++

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save