2026-08-19 22:55:00 +02:00
|
|
|
extension String {
|
|
|
|
|
/// A namespace for the analytics default configuration values.
|
|
|
|
|
///
|
|
|
|
|
/// Analytics ships **off**: ``websiteID`` is empty, so the pages embed no tracker until a deployment sets `analytics.websiteID`. Point
|
|
|
|
|
/// ``origin`` at your own instance before enabling it — the placeholder is an [RFC 2606](https://www.rfc-editor.org/rfc/rfc2606)
|
|
|
|
|
/// reserved domain, so an unconfigured copy can never report to someone else's server.
|
|
|
|
|
public enum Analytics {
|
|
|
|
|
/// The origin the analytics scripts are loaded from and their beacons are sent to (scheme and host, no trailing slash).
|
|
|
|
|
///
|
|
|
|
|
/// Single-sourced here: both ``scriptURL`` and the session recorder script the pages embed in recorder mode derive from this
|
|
|
|
|
/// constant. It is deliberately not a configuration key — the `Content-Security-Policy` must allow the same origin, and a value that
|
|
|
|
|
/// can drift at runtime would silently break the tracker it is supposed to permit.
|
2026-08-20 00:54:29 +02:00
|
|
|
public static let origin = "https://analytics.rock-n-code.com"
|
2026-08-19 22:55:00 +02:00
|
|
|
/// The URL the analytics tracker script is loaded from.
|
|
|
|
|
public static let scriptURL = "\(origin)/script"
|
|
|
|
|
/// The default analytics website identifier the tracker reports as: empty, which omits the tracker entirely.
|
|
|
|
|
public static let websiteID = ""
|
|
|
|
|
/// The default comma-delimited domains the tracker reports from: empty, which reports from every host.
|
|
|
|
|
///
|
|
|
|
|
/// Once set, keep it paired with the host the pages are served at — a deployment that serves from another host without matching
|
|
|
|
|
/// `analytics.domains` reports from a host it no longer serves, so analytics silently records nothing.
|
|
|
|
|
public static let domains = ""
|
|
|
|
|
}
|
|
|
|
|
/// A namespace for the persistence's default configuration values and recognized tokens.
|
|
|
|
|
public enum Database {
|
|
|
|
|
/// The default persistence driver: in-memory SQLite, which needs no external infrastructure.
|
|
|
|
|
public static let driver = "inMemory"
|
|
|
|
|
/// The driver token selecting the PostgreSQL backend.
|
|
|
|
|
public static let driverPostgres = "postgres"
|
|
|
|
|
/// The default PostgreSQL host.
|
|
|
|
|
public static let host = "localhost"
|
|
|
|
|
/// The default database name.
|
|
|
|
|
public static let name = "ccn"
|
|
|
|
|
/// The default database username.
|
|
|
|
|
public static let username = "ccn"
|
|
|
|
|
/// The default TLS posture token.
|
|
|
|
|
public static let tls = "prefer"
|
|
|
|
|
/// The TLS token disabling TLS.
|
|
|
|
|
public static let tlsOff = "off"
|
|
|
|
|
/// The TLS token requiring TLS.
|
|
|
|
|
public static let tlsRequire = "require"
|
|
|
|
|
}
|
|
|
|
|
/// A namespace for well-known path string constants.
|
|
|
|
|
public enum Path {
|
|
|
|
|
/// The directory, relative to the working directory, that the website's static files are served from.
|
|
|
|
|
public static let staticResources = "Resources/Static"
|
|
|
|
|
}
|
|
|
|
|
/// A namespace for the server string constants.
|
|
|
|
|
public enum Server {
|
|
|
|
|
/// The website server's name.
|
|
|
|
|
public static let name = "CCNWebsite"
|
|
|
|
|
}
|
|
|
|
|
}
|