configuration/strings/information.strings.ts
configuration/strings/information.strings.ts is a file in Bane's Lab Site. 164 lines of code and 6 definitions.
import { APPLICATION_SECTION, PROTECTION_SECTION } from "#configuration/strings/information.fragment.strings";
import type { DocumentMeta, Section } from "#types/document.types";
import {
INFORMATION_CONTACT_ICON,
INFORMATION_INFRASTRUCTURE_ICON,
INFORMATION_PARTIES_ICON,
INFORMATION_TECHNICAL_ICON,
} from "#configuration/icons/information.icons";
import {
INFORMATION_CONTACT_SECTION_ID,
INFORMATION_INFRASTRUCTURE_SECTION_ID,
INFORMATION_PARTIES_SECTION_ID,
INFORMATION_TECHNICAL_SECTION_ID,
} from "#core/ids/information.ids";
import { SOURCE_ROOT, WALK_ROOT } from "#core/assets/walk.assets";
import { AUTHOR_ADDRESS } from "#core/assets/link.assets";
import { INFORMATION_SHARE } from "#configuration/strings/page.strings";
import { REPLY_NOTE } from "#configuration/strings/company.strings";
export const INFORMATION_META: DocumentMeta = {
closing: "Last Technical Review: September 24, 2026",
effectiveDate: "September 22, 2026",
intro: "Bane's Lab is a static informational site. I do not collect, store, or process personal data. This document explains the security measures that protect content delivery and your visit.",
lastUpdated: "September 24, 2026",
title: INFORMATION_SHARE.headline,
version: "2.2.1",
};
const INFRASTRUCTURE_SECTION: Section = {
icon: INFORMATION_INFRASTRUCTURE_ICON,
id: INFORMATION_INFRASTRUCTURE_SECTION_ID,
subsections: [
{
blocks: [
{
entries: [
{ description: "NGINX terminates TLS and serves files straight from disk", term: "Edge" },
{
description:
"There is no application server, database, or runtime process behind the edge; every page is pre-rendered at build time",
term: "No Backend",
},
{
description: "The Server header and every version identifier are removed from responses",
term: "Header Stripping",
},
{
description:
"Pre-rendered HTML pages plus content-hashed CSS/JS served with long-term caching",
term: "Static Delivery",
},
{
description:
"Each page and tab is also published as a JSON payload under /json/ and as a Markdown alternate at its own path with a .md suffix (or by requesting the page with an Accept header of text/markdown), readable from any origin; both carry only the same public content as the page",
term: "Machine-Readable Content",
},
{
description: `The Anatomy page publishes the source of every workspace member of the site, with one page per folder and file. Each file's text is served as a static file under ${SOURCE_ROOT} and its syntax walk under ${WALK_ROOT}, derived from the same build that produced the page`,
term: "Published Source",
},
],
kind: "glossary",
},
],
title: "Architecture",
},
{
blocks: [
{
entries: [
{ description: "Host-based firewall restricts access to essential ports", term: "Firewall" },
{ description: "Only HTTPS (443) and HTTP (80, redirect only) exposed", term: "Port Exposure" },
{
description:
"Plain HTTP and the www subdomain permanently redirect to https://banes-lab.com",
term: "Canonical Host",
},
{
description:
"Mail for this domain is handled by its registrar's forwarding servers; a published MTA-STS policy in enforce mode requires sending servers to deliver over TLS with a matching certificate, and a TLS reporting record asks them to report any failure to do so",
term: "Mail Transport",
},
],
kind: "glossary",
},
],
title: "Network",
},
],
title: "Infrastructure",
};
const PARTIES_SECTION: Section = {
icon: INFORMATION_PARTIES_ICON,
id: INFORMATION_PARTIES_SECTION_ID,
subsections: [
{
blocks: [
{
entries: [{ description: "Let's Encrypt for TLS certificates", term: "Certificate Authority" }],
kind: "glossary",
},
{
kind: "text",
note: true,
text: "Every script, stylesheet, font and image is served from this origin. No content delivery network, analytics, advertising, or user-tracking third parties are loaded.",
},
],
title: "What Loads From Outside My Server",
},
],
title: "Third-Party Services",
};
const CONTACT_SECTION: Section = {
icon: INFORMATION_CONTACT_ICON,
id: INFORMATION_CONTACT_SECTION_ID,
subsections: [
{
blocks: [
{
entries: [
{ description: AUTHOR_ADDRESS, term: "Email" },
{ description: REPLY_NOTE, term: "Note" },
],
kind: "glossary",
},
{ kind: "text", note: true, text: "Responsible disclosure is appreciated." },
],
title: "Security Reports",
},
{ content: "This document is updated when my security practices change.", title: "Document Updates" },
],
title: "Contact",
};
const TECHNICAL_SECTION: Section = {
icon: INFORMATION_TECHNICAL_ICON,
id: INFORMATION_TECHNICAL_SECTION_ID,
subsections: [
{
blocks: [
{
entries: [
{ description: "Shared, ten megabytes", term: "SSL Session Cache" },
{ description: "10 minutes", term: "SSL Session Timeout" },
{
description:
"Disabled (keeps forward secrecy intact; resumption uses the server-side session cache instead)",
term: "SSL Session Tickets",
},
{ description: "Full chain with intermediate certificates", term: "Certificate Chain" },
],
kind: "glossary",
},
],
title: "TLS Configuration",
},
],
title: "Technical Details",
};
export const INFORMATION_SECTIONS: readonly Section[] = [
PROTECTION_SECTION,
APPLICATION_SECTION,
INFRASTRUCTURE_SECTION,
PARTIES_SECTION,
CONTACT_SECTION,
TECHNICAL_SECTION,
];