Merge branch 'next/minor' of github.com:Start9Labs/start-os into next/major

This commit is contained in:
Aiden McClelland
2025-03-03 12:51:40 -07:00
213 changed files with 53468 additions and 12274 deletions

View File

@@ -4,6 +4,8 @@ Description=StartOS Container Runtime
[Service]
Type=simple
ExecStart=/usr/bin/node --experimental-detect-module --unhandled-rejections=warn /usr/lib/startos/init/index.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

File diff suppressed because it is too large Load Diff

View File

@@ -198,6 +198,9 @@ export function makeEffects(context: EffectContext): Effects {
T.Effects["getContainerIp"]
>
},
getOsIp(...[]: Parameters<T.Effects["getOsIp"]>) {
return rpcRound("get-os-ip", {}) as ReturnType<T.Effects["getOsIp"]>
},
getHostInfo: ((...[allOptions]: Parameters<T.Effects["getHostInfo"]>) => {
const options = {
...allOptions,

View File

@@ -1,4 +1,9 @@
import { ExtendedVersion, types as T, utils } from "@start9labs/start-sdk"
import {
ExtendedVersion,
types as T,
utils,
VersionRange,
} from "@start9labs/start-sdk"
import * as fs from "fs/promises"
import { polyfillEffects } from "./polyfillEffects"
@@ -345,13 +350,11 @@ export class SystemForEmbassy implements System {
const previousVersion = await effects.getDataVersion()
if (previousVersion) {
if (
(await this.migration(effects, previousVersion, timeoutMs)).configured
(await this.migration(effects, { from: previousVersion }, timeoutMs))
.configured
) {
await effects.action.clearRequests({ only: ["needs-config"] })
}
await effects.setDataVersion({
version: ExtendedVersion.parseEmver(this.manifest.version).toString(),
})
} else if (this.manifest.config) {
await effects.action.request({
packageId: this.manifest.id,
@@ -361,6 +364,9 @@ export class SystemForEmbassy implements System {
reason: "This service must be configured before it can be run",
})
}
await effects.setDataVersion({
version: ExtendedVersion.parseEmver(this.manifest.version).toString(),
})
}
async exportNetwork(effects: Effects) {
for (const [id, interfaceValue] of Object.entries(
@@ -542,7 +548,10 @@ export class SystemForEmbassy implements System {
nextVersion: Optional<string>,
timeoutMs: number | null,
): Promise<void> {
// TODO Do a migration down if the version exists
await this.currentRunning?.clean({ timeout: timeoutMs ?? undefined })
if (nextVersion) {
await this.migration(effects, { to: nextVersion }, timeoutMs)
}
await effects.setMainStatus({ status: "stopped" })
}
@@ -746,46 +755,37 @@ export class SystemForEmbassy implements System {
async migration(
effects: Effects,
fromVersion: string,
version: { from: string } | { to: string },
timeoutMs: number | null,
): Promise<{ configured: boolean }> {
const fromEmver = ExtendedVersion.parseEmver(fromVersion)
const currentEmver = ExtendedVersion.parseEmver(this.manifest.version)
if (!this.manifest.migrations) return { configured: true }
const fromMigration = Object.entries(this.manifest.migrations.from)
.map(
([version, procedure]) =>
[ExtendedVersion.parseEmver(version), procedure] as const,
)
.find(
([versionEmver, procedure]) =>
versionEmver.greaterThan(fromEmver) &&
versionEmver.lessThanOrEqual(currentEmver),
)
const toMigration = Object.entries(this.manifest.migrations.to)
.map(
([version, procedure]) =>
[ExtendedVersion.parseEmver(version), procedure] as const,
)
.find(
([versionEmver, procedure]) =>
versionEmver.greaterThan(fromEmver) &&
versionEmver.lessThanOrEqual(currentEmver),
)
// prettier-ignore
const migration = (
fromEmver.greaterThan(currentEmver) ? [toMigration, fromMigration] :
[fromMigration, toMigration]).filter(Boolean)[0]
let migration
let args: [string, ...string[]]
if ("from" in version) {
args = [version.from, "from"]
const fromExver = ExtendedVersion.parse(version.from)
if (!this.manifest.migrations) return { configured: true }
migration = Object.entries(this.manifest.migrations.from)
.map(
([version, procedure]) =>
[VersionRange.parseEmver(version), procedure] as const,
)
.find(([versionEmver, _]) => versionEmver.satisfiedBy(fromExver))
} else {
args = [version.to, "to"]
const toExver = ExtendedVersion.parse(version.to)
if (!this.manifest.migrations) return { configured: true }
migration = Object.entries(this.manifest.migrations.to)
.map(
([version, procedure]) =>
[VersionRange.parseEmver(version), procedure] as const,
)
.find(([versionEmver, _]) => versionEmver.satisfiedBy(toExver))
}
if (migration) {
const [version, procedure] = migration
const [_, procedure] = migration
if (procedure.type === "docker") {
const commands = [
procedure.entrypoint,
...procedure.args,
JSON.stringify(fromVersion),
]
const commands = [procedure.entrypoint, ...procedure.args]
const container = await DockerProcedureContainer.of(
effects,
this.manifest.id,
@@ -794,7 +794,11 @@ export class SystemForEmbassy implements System {
`Migration - ${commands.join(" ")}`,
)
return JSON.parse(
(await container.execFail(commands, timeoutMs)).stdout.toString(),
(
await container.execFail(commands, timeoutMs, {
input: JSON.stringify(args[0]),
})
).stdout.toString(),
)
} else if (procedure.type === "script") {
const moduleCode = await this.moduleCode
@@ -803,7 +807,7 @@ export class SystemForEmbassy implements System {
throw new Error("Expecting that the method migration exists")
return (await method(
polyfillEffects(effects, this.manifest),
fromVersion as string,
...args,
).then((x) => {
if ("result" in x) return x.result
if ("error" in x) throw new Error("Error getting config: " + x.error)
@@ -974,7 +978,7 @@ export class SystemForEmbassy implements System {
})) as U.Config
if (!oldConfig) return
const moduleCode = await this.moduleCode
const method = moduleCode.dependencies?.[id]?.autoConfigure
const method = moduleCode?.dependencies?.[id]?.autoConfigure
if (!method) return
const newConfig = (await method(
polyfillEffects(effects, this.manifest),
@@ -1177,9 +1181,14 @@ function extractServiceInterfaceId(manifest: Manifest, specInterface: string) {
return serviceInterfaceId
}
async function convertToNewConfig(value: OldGetConfigRes) {
const valueSpec: OldConfigSpec = matchOldConfigSpec.unsafeCast(value.spec)
const spec = transformConfigSpec(valueSpec)
if (!value.config) return { spec, config: null }
const config = transformOldConfigToNew(valueSpec, value.config)
return { spec, config }
try {
const valueSpec: OldConfigSpec = matchOldConfigSpec.unsafeCast(value.spec)
const spec = transformConfigSpec(valueSpec)
if (!value.config) return { spec, config: null }
const config = transformOldConfigToNew(valueSpec, value.config) ?? null
return { spec, config }
} catch (e) {
console.error(e)
throw e
}
}

View File

@@ -444,8 +444,8 @@ function parseDfOutput(output: string): { used: number; total: number } {
.map((x) => x.split(/\s+/))
const index = lines.splice(0, 1)[0].map((x) => x.toLowerCase())
const usedIndex = index.indexOf("used")
const availableIndex = index.indexOf("available")
const sizeIndex = index.indexOf("size")
const used = lines.map((x) => Number.parseInt(x[usedIndex]))[0] || 0
const total = lines.map((x) => Number.parseInt(x[availableIndex]))[0] || 0
const total = lines.map((x) => Number.parseInt(x[sizeIndex]))[0] || 0
return { used, total }
}

View File

@@ -146,6 +146,7 @@ export function transformOldConfigToNew(
spec: OldConfigSpec,
config: Record<string, any>,
): Record<string, any> {
if (!config) return config
return Object.entries(spec).reduce((obj, [key, val]) => {
let newVal = config[key]
@@ -157,9 +158,16 @@ export function transformOldConfigToNew(
}
if (isUnion(val)) {
const selection = config[key][val.tag.id]
if (!config[key]) return obj
const selection = config[key]?.[val.tag.id]
if (!selection) return obj
delete config[key][val.tag.id]
if (!val.variants[selection]) return obj
newVal = {
selection,
value: transformOldConfigToNew(
@@ -170,6 +178,8 @@ export function transformOldConfigToNew(
}
if (isList(val) && isObjectList(val)) {
if (!config[key]) return obj
newVal = (config[key] as object[]).map((obj) =>
transformOldConfigToNew(
matchOldConfigSpec.unsafeCast(val.spec.spec),

750
core/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -40,11 +40,15 @@ if [[ "${ENVIRONMENT}" =~ (^|-)unstable($|-) ]]; then
RUSTFLAGS="--cfg tokio_unstable"
fi
alias 'rust-zig-builder'='docker run $USE_TTY --rm -e "RUSTFLAGS=$RUSTFLAGS" -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$HOME/.cargo/git":/root/.cargo/git -v "$(pwd)":/home/rust/src -w /home/rust/src -P messense/cargo-zigbuild'
if which zig > /dev/null && [ "$ENFORCE_USE_DOCKER" != 1 ]; do
echo "FEATURES=\"$FEATURES\""
echo "RUSTFLAGS=\"$RUSTFLAGS\""
RUSTFLAGS=$RUSTFLAGS sh -c "cd core && cargo zigbuild --release --no-default-features --features cli,$FEATURES --locked --bin start-cli --target=$TARGET"
else
alias 'rust-zig-builder'='docker run $USE_TTY --rm -e "RUSTFLAGS=$RUSTFLAGS" -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$HOME/.cargo/git":/root/.cargo/git -v "$(pwd)":/home/rust/src -w /home/rust/src -P messense/cargo-zigbuild'
RUSTFLAGS=$RUSTFLAGS rust-zig-builder sh -c "cd core && cargo zigbuild --release --no-default-features --features cli,$FEATURES --locked --bin start-cli --target=$TARGET"
echo "FEATURES=\"$FEATURES\""
echo "RUSTFLAGS=\"$RUSTFLAGS\""
rust-zig-builder sh -c "cd core && cargo zigbuild --release --no-default-features --features cli,daemon,$FEATURES --locked --bin start-cli --target=$TARGET"
if [ "$(ls -nd core/target/$TARGET/release/start-cli | awk '{ print $3 }')" != "$UID" ]; then
rust-zig-builder sh -c "cd core && chown -R $UID:$UID target && chown -R $UID:$UID /root/.cargo"
if [ "$(ls -nd core/target/$TARGET/release/start-cli | awk '{ print $3 }')" != "$UID" ]; then
rust-zig-builder sh -c "cd core && chown -R $UID:$UID target && chown -R $UID:$UID /root/.cargo"
fi
fi

View File

@@ -14,7 +14,7 @@ keywords = [
name = "start-os"
readme = "README.md"
repository = "https://github.com/Start9Labs/start-os"
version = "0.3.6-alpha.13" # VERSION_BUMP
version = "0.3.6-alpha.15" # VERSION_BUMP
license = "MIT"
[lib]
@@ -40,7 +40,7 @@ path = "src/main.rs"
[features]
cli = []
container-runtime = ["procfs", "tty-spawn"]
daemon = []
daemon = ["mail-send"]
registry = []
default = ["cli", "daemon", "registry", "container-runtime"]
dev = []
@@ -71,7 +71,7 @@ basic-cookies = "0.1.4"
blake3 = { version = "1.5.0", features = ["mmap", "rayon"] }
bytes = "1"
chrono = { version = "0.4.31", features = ["serde"] }
clap = "4.4.12"
clap = { version = "4.4.12", features = ["string"] }
color-eyre = "0.6.2"
console = "0.15.7"
console-subscriber = { version = "0.3.0", optional = true }
@@ -167,7 +167,7 @@ procfs = { version = "0.16.0", optional = true }
proptest = "1.3.1"
proptest-derive = "0.5.0"
qrcode = "0.14.1"
rand = { version = "0.8.5", features = ["std"] }
rand = "0.9.0"
regex = "1.10.2"
reqwest = { version = "0.12.4", features = ["stream", "json", "socks"] }
reqwest_cookie_store = "0.8.0"
@@ -224,7 +224,7 @@ urlencoding = "2.1.3"
uuid = { version = "1.4.1", features = ["v4"] }
zbus = "5.1.1"
zeroize = "1.6.0"
mail-send = { git = "https://github.com/dr-bonez/mail-send.git", branch = "main" }
mail-send = { git = "https://github.com/dr-bonez/mail-send.git", branch = "main", optional = true }
rustls = "0.23.20"
rustls-pki-types = { version = "1.10.1", features = ["alloc"] }

View File

@@ -38,9 +38,10 @@ impl AccountInfo {
let root_ca_key = generate_key()?;
let root_ca_cert = make_root_cert(&root_ca_key, &hostname, start_time)?;
let ssh_key = ssh_key::PrivateKey::from(ssh_key::private::Ed25519Keypair::random(
&mut rand::thread_rng(),
&mut ssh_key::rand_core::OsRng::default(),
));
let compat_s9pk_key = ed25519_dalek::SigningKey::generate(&mut rand::thread_rng());
let compat_s9pk_key =
ed25519_dalek::SigningKey::generate(&mut ssh_key::rand_core::OsRng::default());
Ok(Self {
server_id,
hostname,

View File

@@ -82,11 +82,13 @@ impl OsBackupV0 {
root_ca_key: self.root_ca_key.0,
root_ca_cert: self.root_ca_cert.0,
ssh_key: ssh_key::PrivateKey::random(
&mut rand::thread_rng(),
&mut ssh_key::rand_core::OsRng::default(),
ssh_key::Algorithm::Ed25519,
)?,
tor_keys: vec![TorSecretKeyV3::from(self.tor_key.0)],
compat_s9pk_key: ed25519_dalek::SigningKey::generate(&mut rand::thread_rng()),
compat_s9pk_key: ed25519_dalek::SigningKey::generate(
&mut ssh_key::rand_core::OsRng::default(),
),
},
ui: self.ui,
})

View File

@@ -2,6 +2,7 @@ use std::cmp::max;
use std::ffi::OsString;
use std::net::IpAddr;
use std::sync::Arc;
use std::time::Duration;
use clap::Parser;
use color_eyre::eyre::eyre;
@@ -149,8 +150,7 @@ pub fn main(args: impl IntoIterator<Item = OsString>) {
.enable_all()
.build()
.expect("failed to initialize runtime");
rt.block_on(async {
let addrs = crate::net::utils::all_socket_addrs_for(80).await?;
let res = rt.block_on(async {
let mut server = WebServer::new(Acceptor::bind_upgradable(
SelfContainedNetworkInterfaceListener::bind(80),
));
@@ -195,7 +195,9 @@ pub fn main(args: impl IntoIterator<Item = OsString>) {
.await
}
}
})
});
rt.shutdown_timeout(Duration::from_secs(60));
res
};
match res {

View File

@@ -13,6 +13,7 @@ use crate::disk::OsPartitionInfo;
use crate::init::init_postgres;
use crate::prelude::*;
use crate::util::serde::IoFormat;
use crate::version::VersionT;
use crate::MAIN_DATA;
pub const DEVICE_CONFIG_PATH: &str = "/media/startos/config/config.yaml"; // "/media/startos/config/config.yaml";
@@ -57,18 +58,20 @@ pub trait ContextConfig: DeserializeOwned + Default {
#[derive(Debug, Default, Deserialize, Serialize, Parser)]
#[serde(rename_all = "kebab-case")]
#[command(rename_all = "kebab-case")]
#[command(name = "start-cli")]
#[command(version = crate::version::Current::default().semver().to_string())]
pub struct ClientConfig {
#[arg(short = 'c', long = "config")]
#[arg(short = 'c', long)]
pub config: Option<PathBuf>,
#[arg(short = 'h', long = "host")]
#[arg(short = 'H', long)]
pub host: Option<Url>,
#[arg(short = 'r', long = "registry")]
#[arg(short = 'r', long)]
pub registry: Option<Url>,
#[arg(short = 'p', long = "proxy")]
#[arg(short = 'p', long)]
pub proxy: Option<Url>,
#[arg(long = "cookie-path")]
#[arg(long)]
pub cookie_path: Option<PathBuf>,
#[arg(long = "developer-key-path")]
#[arg(long)]
pub developer_key_path: Option<PathBuf>,
}
impl ContextConfig for ClientConfig {

View File

@@ -1,3 +1,4 @@
use std::backtrace;
use std::collections::{BTreeMap, BTreeSet};
use std::future::Future;
use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4};
@@ -484,10 +485,12 @@ impl Drop for RpcContext {
fn drop(&mut self) {
#[cfg(feature = "unstable")]
if self.0.is_closed.load(Ordering::SeqCst) {
tracing::info!(
"RpcContext dropped. {} left.",
Arc::strong_count(&self.0) - 1
);
let count = Arc::strong_count(&self.0) - 1;
tracing::info!("RpcContext dropped. {} left.", count);
if count > 0 {
tracing::debug!("{}", backtrace::Backtrace::force_capture());
tracing::debug!("{:?}", eyre!(""))
}
}
}
}

View File

@@ -32,5 +32,7 @@ pub struct Private {
}
pub fn generate_compat_key() -> Pem<ed25519_dalek::SigningKey> {
Pem(ed25519_dalek::SigningKey::generate(&mut rand::thread_rng()))
Pem(ed25519_dalek::SigningKey::generate(
&mut ssh_key::rand_core::OsRng::default(),
))
}

View File

@@ -20,7 +20,7 @@ pub fn init(ctx: CliContext) -> Result<(), Error> {
.with_ctx(|_| (crate::ErrorKind::Filesystem, parent.display().to_string()))?;
}
tracing::info!("Generating new developer key...");
let secret = SigningKey::generate(&mut rand::thread_rng());
let secret = SigningKey::generate(&mut ssh_key::rand_core::OsRng::default());
tracing::info!("Writing key to {}", ctx.developer_key_path.display());
let keypair_bytes = ed25519::KeypairBytes {
secret_key: secret.to_bytes(),

View File

@@ -514,11 +514,17 @@ pub async fn cli_install(
#[command(rename_all = "kebab-case")]
pub struct UninstallParams {
id: PackageId,
#[arg(long, help = "Do not delete the service data")]
#[serde(default)]
soft: bool,
#[arg(long, help = "Ignore errors in service uninit script")]
#[serde(default)]
force: bool,
}
pub async fn uninstall(
ctx: RpcContext,
UninstallParams { id }: UninstallParams,
UninstallParams { id, soft, force }: UninstallParams,
) -> Result<PackageId, Error> {
ctx.db
.mutate(|db| {
@@ -540,7 +546,7 @@ pub async fn uninstall(
let return_id = id.clone();
tokio::spawn(async move {
if let Err(e) = ctx.services.uninstall(&ctx, &id).await {
if let Err(e) = ctx.services.uninstall(&ctx, &id, soft, force).await {
tracing::error!("Error uninstalling service {id}: {e}");
tracing::debug!("{e:?}");
}

View File

@@ -187,7 +187,7 @@ pub fn acme<C: Context>() -> ParentHandler<C> {
from_fn_async(remove)
.with_metadata("sync_db", Value::Bool(true))
.no_display()
.with_about("Setup ACME certificate acquisition")
.with_about("Remove ACME certificate acquisition configuration")
.with_call_remote::<CliContext>(),
)
}

View File

@@ -265,7 +265,9 @@ impl<A: Accept + Send + Sync + 'static> WebServer<A> {
drop(queue_cell.write().unwrap().take());
if !runner.is_empty() {
runner.await;
tokio::time::timeout(Duration::from_secs(60), runner)
.await
.log_err();
}
}));
Self {

View File

@@ -54,8 +54,8 @@ pub fn wifi<C: Context>() -> ParentHandler<C> {
.with_call_remote::<CliContext>(),
)
.subcommand(
"delete",
from_fn_async(delete)
"remove",
from_fn_async(remove)
.no_display()
.with_about("Remove a wifi network")
.with_call_remote::<CliContext>(),
@@ -230,7 +230,7 @@ pub async fn connect(ctx: RpcContext, SsidParams { ssid }: SsidParams) -> Result
}
#[instrument(skip_all)]
pub async fn delete(ctx: RpcContext, SsidParams { ssid }: SsidParams) -> Result<(), Error> {
pub async fn remove(ctx: RpcContext, SsidParams { ssid }: SsidParams) -> Result<(), Error> {
let wifi_manager = wifi_manager(&ctx)?;
if !ssid.is_ascii() {
return Err(Error::new(

View File

@@ -30,15 +30,15 @@ pub fn notification<C: Context>() -> ParentHandler<C> {
.with_call_remote::<CliContext>(),
)
.subcommand(
"delete",
from_fn_async(delete)
"remove",
from_fn_async(remove)
.no_display()
.with_about("Delete notification for a given id")
.with_call_remote::<CliContext>(),
)
.subcommand(
"delete-before",
from_fn_async(delete_before)
"remove-before",
from_fn_async(remove_before)
.no_display()
.with_about("Delete notifications preceding a given id")
.with_call_remote::<CliContext>(),
@@ -126,7 +126,7 @@ pub struct DeleteParams {
id: u32,
}
pub async fn delete(ctx: RpcContext, DeleteParams { id }: DeleteParams) -> Result<(), Error> {
pub async fn remove(ctx: RpcContext, DeleteParams { id }: DeleteParams) -> Result<(), Error> {
ctx.db
.mutate(|db| {
db.as_private_mut().as_notifications_mut().remove(&id)?;
@@ -142,7 +142,7 @@ pub struct DeleteBeforeParams {
before: u32,
}
pub async fn delete_before(
pub async fn remove_before(
ctx: RpcContext,
DeleteBeforeParams { before }: DeleteBeforeParams,
) -> Result<(), Error> {

View File

@@ -51,7 +51,7 @@ fn test(files: Vec<(PathBuf, String)>) -> Result<(), Error> {
check_set.insert(path.to_owned(), content);
}
}
let key = SigningKey::generate(&mut rand::thread_rng());
let key = SigningKey::generate(&mut ssh_key::rand_core::OsRng::default());
let mut a1 = MerkleArchive::new(root, key, "test");
tokio::runtime::Builder::new_current_thread()
.enable_io()

View File

@@ -27,6 +27,7 @@ pub const SIG_CONTEXT: &str = "s9pk";
pub mod compat;
pub mod manifest;
pub mod pack;
pub mod recipe;
/**
/

View File

@@ -26,6 +26,7 @@ use crate::s9pk::merkle_archive::source::{
into_dyn_read, ArchiveSource, DynFileSource, DynRead, FileSource, TmpSource,
};
use crate::s9pk::merkle_archive::{Entry, MerkleArchive};
use crate::s9pk::v2::recipe::DirRecipe;
use crate::s9pk::v2::SIG_CONTEXT;
use crate::s9pk::S9pk;
use crate::util::io::{create_file, open_file, TmpDir};
@@ -363,6 +364,7 @@ pub enum ImageSource {
build_args: Option<BTreeMap<String, BuildArg>>,
},
DockerTag(String),
// Recipe(DirRecipe),
}
impl ImageSource {
pub fn ingredients(&self) -> Vec<PathBuf> {
@@ -399,6 +401,8 @@ impl ImageSource {
working_dir: PathBuf,
#[serde(default)]
user: String,
entrypoint: Option<Vec<String>>,
cmd: Option<Vec<String>>,
}
async move {
match self {
@@ -422,6 +426,9 @@ impl ImageSource {
// docker buildx build ${path} -o type=image,name=start9/${id}
let tag = format!("start9/{id}/{image_id}:{}", new_guid());
let mut command = Command::new(CONTAINER_TOOL);
if CONTAINER_TOOL == "docker" {
command.arg("buildx");
}
command
.arg("build")
.arg(workdir)
@@ -528,6 +535,8 @@ impl ImageSource {
} else {
config.user.into()
},
entrypoint: config.entrypoint,
cmd: config.cmd,
})
.with_kind(ErrorKind::Serialization)?
.into(),
@@ -553,6 +562,7 @@ impl ImageSource {
Command::new(CONTAINER_TOOL)
.arg("create")
.arg(&docker_platform)
.arg("--entrypoint=/bin/sh")
.arg(&tag)
.invoke(ErrorKind::Docker)
.await?,
@@ -603,8 +613,8 @@ fn tar2sqfs(dest: impl AsRef<Path>) -> Result<Command, Error> {
.arg("run")
.arg("-i")
.arg("--rm")
.arg("-v")
.arg(format!("{}:/data:rw", directory.display()))
.arg("--mount")
.arg(format!("type=bind,src={},dst=/data", directory.display()))
.arg("ghcr.io/start9labs/sdk/utils:latest")
.arg("tar2sqfs")
.arg("-q")
@@ -621,6 +631,8 @@ pub struct ImageMetadata {
pub workdir: PathBuf,
#[ts(type = "string")]
pub user: InternedString,
pub entrypoint: Option<Vec<String>>,
pub cmd: Option<Vec<String>>,
}
#[instrument(skip_all)]

View File

@@ -0,0 +1,21 @@
use std::collections::BTreeMap;
use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use ts_rs::TS;
use url::Url;
#[derive(Debug, Clone, Deserialize, Serialize, TS)]
pub struct DirRecipe(BTreeMap<PathBuf, Recipe>);
#[derive(Debug, Clone, Deserialize, Serialize, TS)]
#[serde(rename_all = "camelCase")]
pub enum Recipe {
Make(PathBuf),
Wget {
#[ts(type = "string")]
url: Url,
checksum: String,
},
Recipe(DirRecipe),
}

View File

@@ -1,9 +1,11 @@
use std::net::Ipv4Addr;
use rpc_toolkit::{from_fn, from_fn_async, from_fn_blocking, Context, HandlerExt, ParentHandler};
use crate::echo;
use crate::prelude::*;
use crate::service::cli::ContainerCliContext;
use crate::service::effects::context::EffectContext;
use crate::{echo, HOST_IP};
mod action;
pub mod callbacks;
@@ -134,6 +136,10 @@ pub fn handler<C: Context>() -> ParentHandler<C> {
"get-container-ip",
from_fn_async(net::info::get_container_ip).no_cli(),
)
.subcommand(
"get-os-ip",
from_fn(|_: C| Ok::<_, Error>(Ipv4Addr::from(HOST_IP))),
)
.subcommand(
"export-service-interface",
from_fn_async(net::interface::export_service_interface).no_cli(),

View File

@@ -1,6 +1,7 @@
use std::net::Ipv4Addr;
use crate::service::effects::prelude::*;
use crate::HOST_IP;
pub async fn get_container_ip(context: EffectContext) -> Result<Ipv4Addr, Error> {
let context = context.deref()?;

View File

@@ -5,6 +5,7 @@ use models::ImageId;
use tokio::process::Command;
use crate::disk::mount::filesystem::overlayfs::OverlayGuard;
use crate::disk::mount::guard::GenericMountGuard;
use crate::rpc_continuations::Guid;
use crate::service::effects::prelude::*;
use crate::service::persistent_container::Subcontainer;
@@ -40,6 +41,24 @@ pub async fn destroy_subcontainer_fs(
.await
.remove(&guid)
{
#[cfg(feature = "container-runtime")]
if tokio::fs::metadata(overlay.overlay.path().join("proc/1"))
.await
.is_ok()
{
let procfs = context
.seed
.persistent_container
.lxc_container
.get()
.or_not_found("lxc container")?
.rootfs_dir()
.join("proc");
let overlay_path = overlay.overlay.path().to_owned();
tokio::task::spawn_blocking(move || sync::kill_init(&procfs, &overlay_path))
.await
.with_kind(ErrorKind::Unknown)??;
}
overlay.overlay.unmount(true).await?;
} else {
tracing::warn!("Could not find a subcontainer fs to destroy; assumming that it already is destroyed and will be skipping");

View File

@@ -20,6 +20,54 @@ const FWD_SIGNALS: &[c_int] = &[
SIGTSTP, SIGTTIN, SIGTTOU, SIGURG, SIGUSR1, SIGUSR2, SIGVTALRM,
];
pub fn kill_init(procfs: &Path, chroot: &Path) -> Result<(), Error> {
if chroot.join("proc/1").exists() {
let ns_id = procfs::process::Process::new_with_root(chroot.join("proc/1"))
.with_ctx(|_| (ErrorKind::Filesystem, "open subcontainer procfs"))?
.namespaces()
.with_ctx(|_| (ErrorKind::Filesystem, "read subcontainer pid 1 ns"))?
.0
.get(OsStr::new("pid"))
.or_not_found("pid namespace")?
.identifier;
for proc in procfs::process::all_processes_with_root(procfs)
.with_ctx(|_| (ErrorKind::Filesystem, "open procfs"))?
{
let proc = proc.with_ctx(|_| (ErrorKind::Filesystem, "read single process details"))?;
let pid = proc.pid();
if proc
.namespaces()
.with_ctx(|_| (ErrorKind::Filesystem, lazy_format!("read pid {} ns", pid)))?
.0
.get(OsStr::new("pid"))
.map_or(false, |ns| ns.identifier == ns_id)
{
let pids = proc.read::<NSPid>("status").with_ctx(|_| {
(
ErrorKind::Filesystem,
lazy_format!("read pid {} NSpid", pid),
)
})?;
if pids.0.len() == 2 && pids.0[1] == 1 {
nix::sys::signal::kill(Pid::from_raw(pid), nix::sys::signal::SIGKILL)
.with_ctx(|_| {
(
ErrorKind::Filesystem,
lazy_format!(
"kill pid {} (determined to be pid 1 in subcontainer)",
pid
),
)
})?;
}
}
}
nix::mount::umount(&chroot.join("proc"))
.with_ctx(|_| (ErrorKind::Filesystem, "unmounting subcontainer procfs"))?;
}
Ok(())
}
struct NSPid(Vec<i32>);
impl procfs::FromBufRead for NSPid {
fn from_buf_read<R: std::io::BufRead>(r: R) -> procfs::ProcResult<Self> {
@@ -98,21 +146,27 @@ impl ExecParams {
if let Some(uid) = user.as_deref().and_then(|u| u.parse::<u32>().ok()) {
cmd.uid(uid);
} else if let Some(user) = user {
let (uid, gid) = std::fs::read_to_string("/etc/passwd")
.with_ctx(|_| (ErrorKind::Filesystem, "read /etc/passwd"))?
.lines()
.find_map(|l| {
let mut split = l.trim().split(":");
if user != split.next()? {
return None;
}
split.next(); // throw away x
Some((split.next()?.parse().ok()?, split.next()?.parse().ok()?))
// uid gid
})
.or_not_found(lazy_format!("{user} in /etc/passwd"))?;
cmd.uid(uid);
cmd.gid(gid);
let passwd = std::fs::read_to_string("/etc/passwd")
.with_ctx(|_| (ErrorKind::Filesystem, "read /etc/passwd"));
if passwd.is_err() && user == "root" {
cmd.uid(0);
cmd.gid(0);
} else {
let (uid, gid) = passwd?
.lines()
.find_map(|l| {
let mut split = l.trim().split(":");
if user != split.next()? {
return None;
}
split.next(); // throw away x
Some((split.next()?.parse().ok()?, split.next()?.parse().ok()?))
// uid gid
})
.or_not_found(lazy_format!("{user} in /etc/passwd"))?;
cmd.uid(uid);
cmd.gid(gid);
}
};
if let Some(workdir) = workdir {
cmd.current_dir(workdir);
@@ -134,51 +188,7 @@ pub fn launch(
command,
}: ExecParams,
) -> Result<(), Error> {
if chroot.join("proc/1").exists() {
let ns_id = procfs::process::Process::new_with_root(chroot.join("proc/1"))
.with_ctx(|_| (ErrorKind::Filesystem, "open subcontainer procfs"))?
.namespaces()
.with_ctx(|_| (ErrorKind::Filesystem, "read subcontainer pid 1 ns"))?
.0
.get(OsStr::new("pid"))
.or_not_found("pid namespace")?
.identifier;
for proc in
procfs::process::all_processes().with_ctx(|_| (ErrorKind::Filesystem, "open procfs"))?
{
let proc = proc.with_ctx(|_| (ErrorKind::Filesystem, "read single process details"))?;
let pid = proc.pid();
if proc
.namespaces()
.with_ctx(|_| (ErrorKind::Filesystem, lazy_format!("read pid {} ns", pid)))?
.0
.get(OsStr::new("pid"))
.map_or(false, |ns| ns.identifier == ns_id)
{
let pids = proc.read::<NSPid>("status").with_ctx(|_| {
(
ErrorKind::Filesystem,
lazy_format!("read pid {} NSpid", pid),
)
})?;
if pids.0.len() == 2 && pids.0[1] == 1 {
nix::sys::signal::kill(Pid::from_raw(pid), nix::sys::signal::SIGKILL)
.with_ctx(|_| {
(
ErrorKind::Filesystem,
lazy_format!(
"kill pid {} (determined to be pid 1 in subcontainer)",
pid
),
)
})?;
}
}
}
nix::mount::umount(&chroot.join("proc"))
.with_ctx(|_| (ErrorKind::Filesystem, "unmounting subcontainer procfs"))?;
}
kill_init(Path::new("/proc"), &chroot)?;
if (std::io::stdin().is_terminal()
&& std::io::stdout().is_terminal()
&& std::io::stderr().is_terminal())

View File

@@ -117,8 +117,11 @@ impl ServiceRef {
pub async fn uninstall(
self,
target_version: Option<models::VersionString>,
soft: bool,
force: bool,
) -> Result<(), Error> {
self.seed
let uninit_res = self
.seed
.persistent_container
.execute::<NoOutput>(
Guid::new(),
@@ -126,7 +129,12 @@ impl ServiceRef {
to_value(&target_version)?,
None,
) // TODO timeout
.await?;
.await;
if force {
uninit_res.log_err();
} else {
uninit_res?;
}
let id = self.seed.persistent_container.s9pk.as_manifest().id.clone();
let ctx = self.seed.ctx.clone();
self.shutdown().await?;
@@ -166,24 +174,26 @@ impl ServiceRef {
.await?
{
let state = pde.state_info.expect_removing()?;
for volume_id in &state.manifest.volumes {
let path = data_dir(DATA_DIR, &state.manifest.id, volume_id);
if tokio::fs::metadata(&path).await.is_ok() {
tokio::fs::remove_dir_all(&path).await?;
if !soft {
for volume_id in &state.manifest.volumes {
let path = data_dir(DATA_DIR, &state.manifest.id, volume_id);
if tokio::fs::metadata(&path).await.is_ok() {
tokio::fs::remove_dir_all(&path).await?;
}
}
let logs_dir = Path::new(PACKAGE_DATA)
.join("logs")
.join(&state.manifest.id);
if tokio::fs::metadata(&logs_dir).await.is_ok() {
tokio::fs::remove_dir_all(&logs_dir).await?;
}
let archive_path = Path::new(PACKAGE_DATA)
.join("archive")
.join("installed")
.join(&state.manifest.id);
if tokio::fs::metadata(&archive_path).await.is_ok() {
tokio::fs::remove_file(&archive_path).await?;
}
}
let logs_dir = Path::new(PACKAGE_DATA)
.join("logs")
.join(&state.manifest.id);
if tokio::fs::metadata(&logs_dir).await.is_ok() {
tokio::fs::remove_dir_all(&logs_dir).await?;
}
let archive_path = Path::new(PACKAGE_DATA)
.join("archive")
.join("installed")
.join(&state.manifest.id);
if tokio::fs::metadata(&archive_path).await.is_ok() {
tokio::fs::remove_file(&archive_path).await?;
}
}
}
@@ -397,7 +407,7 @@ impl Service {
tracing::debug!("{e:?}")
})
{
match service.uninstall(None).await {
match service.uninstall(None, false, false).await {
Err(e) => {
tracing::error!("Error uninstalling service: {e}");
tracing::debug!("{e:?}")

View File

@@ -286,7 +286,7 @@ impl ServiceMap {
.version
.clone();
service
.uninstall(Some(s9pk.as_manifest().version.clone()))
.uninstall(Some(s9pk.as_manifest().version.clone()), false, false)
.await?;
progress.complete();
Some(version)
@@ -321,12 +321,18 @@ impl ServiceMap {
/// This is ran during the cleanup, so when we are uninstalling the service
#[instrument(skip_all)]
pub async fn uninstall(&self, ctx: &RpcContext, id: &PackageId) -> Result<(), Error> {
pub async fn uninstall(
&self,
ctx: &RpcContext,
id: &PackageId,
soft: bool,
force: bool,
) -> Result<(), Error> {
let mut guard = self.get_mut(id).await;
if let Some(service) = guard.take() {
ServiceRefReloadGuard::new(ctx.clone(), id.clone(), "Uninstall")
.handle_last(async move {
let res = service.uninstall(None).await;
let res = service.uninstall(None, soft, force).await;
drop(guard);
res
})

View File

@@ -99,8 +99,8 @@ pub fn ssh<C: Context>() -> ParentHandler<C> {
.with_call_remote::<CliContext>(),
)
.subcommand(
"delete",
from_fn_async(delete)
"remove",
from_fn_async(remove)
.no_display()
.with_about("Remove ssh key")
.with_call_remote::<CliContext>(),
@@ -159,7 +159,7 @@ pub struct DeleteParams {
}
#[instrument(skip_all)]
pub async fn delete(
pub async fn remove(
ctx: RpcContext,
DeleteParams { fingerprint }: DeleteParams,
) -> Result<(), Error> {

View File

@@ -7,10 +7,7 @@ use clap::Parser;
use color_eyre::eyre::eyre;
use futures::FutureExt;
use imbl::vector;
use mail_send::mail_builder::{self, MessageBuilder};
use mail_send::SmtpClientBuilder;
use rpc_toolkit::{from_fn_async, Context, Empty, HandlerExt, ParentHandler};
use rustls::crypto::CryptoProvider;
use rustls::RootCertStore;
use rustls_pki_types::CertificateDer;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
@@ -906,64 +903,74 @@ pub async fn test_smtp(
password,
}: TestSmtpParams,
) -> Result<(), Error> {
use rustls_pki_types::pem::PemObject;
#[cfg(feature = "mail-send")]
{
use mail_send::mail_builder::{self, MessageBuilder};
use mail_send::SmtpClientBuilder;
use rustls_pki_types::pem::PemObject;
let Some(pass_val) = password else {
return Err(Error::new(
eyre!("mail-send requires a password"),
ErrorKind::InvalidRequest,
));
};
let Some(pass_val) = password else {
return Err(Error::new(
eyre!("mail-send requires a password"),
ErrorKind::InvalidRequest,
));
};
let mut root_cert_store = RootCertStore::empty();
let pem = tokio::fs::read("/etc/ssl/certs/ca-certificates.crt").await?;
for cert in CertificateDer::pem_slice_iter(&pem) {
root_cert_store.add_parsable_certificates([cert.with_kind(ErrorKind::OpenSsl)?]);
}
let cfg = Arc::new(
rustls::ClientConfig::builder_with_provider(Arc::new(
rustls::crypto::ring::default_provider(),
))
.with_safe_default_protocol_versions()?
.with_root_certificates(root_cert_store)
.with_no_client_auth(),
);
let client = SmtpClientBuilder::new_with_tls_config(server, port, cfg)
.implicit_tls(false)
.credentials((login.split("@").next().unwrap().to_owned(), pass_val));
fn parse_address<'a>(addr: &'a str) -> mail_builder::headers::address::Address<'a> {
if addr.find("<").map_or(false, |start| {
addr.find(">").map_or(false, |end| start < end)
}) {
addr.split_once("<")
.map(|(name, addr)| (name.trim(), addr.strip_suffix(">").unwrap_or(addr)))
.unwrap()
.into()
} else {
addr.into()
let mut root_cert_store = RootCertStore::empty();
let pem = tokio::fs::read("/etc/ssl/certs/ca-certificates.crt").await?;
for cert in CertificateDer::pem_slice_iter(&pem) {
root_cert_store.add_parsable_certificates([cert.with_kind(ErrorKind::OpenSsl)?]);
}
}
let message = MessageBuilder::new()
.from(parse_address(&from))
.to(parse_address(&to))
.subject("StartOS Test Email")
.text_body("This is a test email sent from your StartOS Server");
client
.connect()
.await
.map_err(|e| {
Error::new(
eyre!("mail-send connection error: {:?}", e),
ErrorKind::Unknown,
)
})?
.send(message)
.await
.map_err(|e| Error::new(eyre!("mail-send send error: {:?}", e), ErrorKind::Unknown))?;
Ok(())
let cfg = Arc::new(
rustls::ClientConfig::builder_with_provider(Arc::new(
rustls::crypto::ring::default_provider(),
))
.with_safe_default_protocol_versions()?
.with_root_certificates(root_cert_store)
.with_no_client_auth(),
);
let client = SmtpClientBuilder::new_with_tls_config(server, port, cfg)
.implicit_tls(false)
.credentials((login.split("@").next().unwrap().to_owned(), pass_val));
fn parse_address<'a>(addr: &'a str) -> mail_builder::headers::address::Address<'a> {
if addr.find("<").map_or(false, |start| {
addr.find(">").map_or(false, |end| start < end)
}) {
addr.split_once("<")
.map(|(name, addr)| (name.trim(), addr.strip_suffix(">").unwrap_or(addr)))
.unwrap()
.into()
} else {
addr.into()
}
}
let message = MessageBuilder::new()
.from(parse_address(&from))
.to(parse_address(&to))
.subject("StartOS Test Email")
.text_body("This is a test email sent from your StartOS Server");
client
.connect()
.await
.map_err(|e| {
Error::new(
eyre!("mail-send connection error: {:?}", e),
ErrorKind::Unknown,
)
})?
.send(message)
.await
.map_err(|e| Error::new(eyre!("mail-send send error: {:?}", e), ErrorKind::Unknown))?;
Ok(())
}
#[cfg(not(feature = "mail-send"))]
Err(Error::new(
eyre!("test-smtp requires mail-send feature to be enabled"),
ErrorKind::InvalidRequest,
))
}
#[tokio::test]

View File

@@ -61,30 +61,31 @@ impl StartOSLogger {
use tracing_subscriber::prelude::*;
use tracing_subscriber::{fmt, EnvFilter};
let filter_layer = EnvFilter::builder()
.with_default_directive(
format!("{}=info", std::module_path!().split("::").next().unwrap())
.parse()
.unwrap(),
)
.from_env_lossy();
#[cfg(feature = "unstable")]
let filter_layer = filter_layer
.add_directive("tokio=trace".parse().unwrap())
.add_directive("runtime=trace".parse().unwrap());
let filter_layer = || {
EnvFilter::builder()
.with_default_directive(
format!("{}=info", std::module_path!().split("::").next().unwrap())
.parse()
.unwrap(),
)
.from_env_lossy()
};
let fmt_layer = fmt::layer()
.with_writer(logfile)
.with_line_number(true)
.with_file(true)
.with_target(true);
.with_target(true)
.with_filter(filter_layer());
let sub = tracing_subscriber::registry()
.with(filter_layer)
.with(fmt_layer)
.with(ErrorLayer::default());
let sub = tracing_subscriber::registry();
#[cfg(feature = "unstable")]
let sub = sub.with(console_subscriber::spawn());
#[cfg(not(feature = "unstable"))]
let sub = sub.with(filter_layer());
let sub = sub.with(fmt_layer).with(ErrorLayer::default());
sub
}

View File

@@ -648,7 +648,7 @@ impl<'a, T> From<&'a T> for MaybeOwned<'a, T> {
pub fn new_guid() -> InternedString {
use rand::RngCore;
let mut buf = [0; 20];
rand::thread_rng().fill_bytes(&mut buf);
rand::rng().fill_bytes(&mut buf);
InternedString::intern(base32::encode(
base32::Alphabet::Rfc4648 { padding: false },
&buf,

View File

@@ -1,7 +1,12 @@
use std::collections::VecDeque;
use std::pin::Pin;
use std::sync::Arc;
use std::sync::atomic::AtomicUsize;
use std::sync::{Arc, Weak};
use std::task::{Poll, Waker};
use futures::stream::BoxStream;
use futures::Stream;
#[derive(Debug, Default)]
pub struct SyncMutex<T>(std::sync::Mutex<T>);
impl<T> SyncMutex<T> {
@@ -160,3 +165,149 @@ impl<T: Clone> futures::Stream for Watch<T> {
(1, None)
}
}
struct DupState<T, Upstream = BoxStream<'static, T>>
where
T: Clone,
Upstream: Stream<Item = T> + Unpin,
{
buffer: VecDeque<T>,
upstream: Upstream,
pos: usize,
pos_refs: Vec<Weak<AtomicUsize>>,
wakers: Vec<Waker>,
}
impl<T: Clone, Upstream: Stream<Item = T> + Unpin> DupState<T, Upstream> {
fn poll_next(&mut self, cx: &mut std::task::Context<'_>) -> Poll<Option<T>> {
use futures::stream::StreamExt;
let Some(next) = futures::ready!(self.upstream.poll_next_unpin(cx)) else {
return Poll::Ready(None);
};
self.pos += 1;
self.buffer.push_back(next.clone());
for waker in self.wakers.drain(..) {
if !waker.will_wake(cx.waker()) {
waker.wake();
}
}
Poll::Ready(Some(next))
}
}
pub struct DupStream<T, Upstream = BoxStream<'static, T>>
where
T: Clone,
Upstream: Stream<Item = T> + Unpin,
{
state: Arc<SyncMutex<DupState<T, Upstream>>>,
pos: Arc<AtomicUsize>,
}
impl<T: Clone, Upstream: Stream<Item = T> + Unpin> DupStream<T, Upstream> {
pub fn new(upstream: Upstream) -> Self {
let pos = Arc::new(AtomicUsize::new(0));
Self {
state: Arc::new(SyncMutex::new(DupState {
buffer: VecDeque::new(),
upstream,
pos: 0,
pos_refs: vec![Arc::downgrade(&pos)],
wakers: Vec::new(),
})),
pos,
}
}
}
impl<T: Clone, Upstream: Stream<Item = T> + Unpin> Clone for DupStream<T, Upstream> {
fn clone(&self) -> Self {
let pos = self.state.mutate(|state| {
let pos = Arc::new(AtomicUsize::new(
self.pos.load(std::sync::atomic::Ordering::Relaxed),
));
state.pos_refs.push(Arc::downgrade(&pos));
state.pos_refs.retain(|ptr| ptr.strong_count() > 0);
pos
});
Self {
state: self.state.clone(),
pos,
}
}
}
impl<T: Clone, Upstream: Stream<Item = T> + Unpin> Stream for DupStream<T, Upstream> {
type Item = T;
fn poll_next(
self: Pin<&mut Self>,
cx: &mut std::task::Context<'_>,
) -> Poll<Option<Self::Item>> {
self.state.mutate(|state| {
let pos = self.pos.load(std::sync::atomic::Ordering::Relaxed);
if pos < state.pos {
self.pos.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
if state
.pos_refs
.iter()
.filter_map(|ptr| ptr.upgrade())
.all(|ptr| ptr.load(std::sync::atomic::Ordering::Relaxed) > pos)
{
while let Some(next) = state.buffer.pop_front() {
if state.buffer.len() + 1 == state.pos - pos {
return Poll::Ready(Some(next));
}
}
Poll::Ready(None)
} else {
Poll::Ready(
state
.buffer
.get(state.buffer.len() + pos - state.pos)
.cloned(),
)
}
} else {
let res = state.poll_next(cx);
if res.is_ready() {
self.pos
.store(state.pos, std::sync::atomic::Ordering::Relaxed);
} else {
let waker = cx.waker();
if state.wakers.iter().all(|w| !w.will_wake(waker)) {
state.wakers.push(waker.clone());
}
}
res
}
})
}
}
#[tokio::test]
async fn test_dup_stream() {
use std::time::Duration;
use futures::StreamExt;
let stream = async_stream::stream! {
for i in 0..100 {
tokio::time::sleep(Duration::from_nanos(rand::random_range(0..=10000000))).await;
yield i;
}
}
.boxed();
let n = rand::random_range(3..10);
let mut tasks = Vec::with_capacity(n);
for mut dup_stream in std::iter::repeat_n(DupStream::new(stream), n) {
tasks.push(tokio::spawn(async move {
let mut ctr = 0;
while let Some(i) = dup_stream.next().await {
assert_eq!(ctr, i);
ctr += 1;
tokio::time::sleep(Duration::from_nanos(rand::random_range(0..=10000000))).await;
}
assert_eq!(ctr, 100);
}));
}
futures::future::try_join_all(tasks).await.unwrap();
}

View File

@@ -33,8 +33,10 @@ mod v0_3_6_alpha_10;
mod v0_3_6_alpha_11;
mod v0_3_6_alpha_12;
mod v0_3_6_alpha_13;
mod v0_3_6_alpha_14;
mod v0_3_6_alpha_15;
pub type Current = v0_3_6_alpha_13::Version; // VERSION_BUMP
pub type Current = v0_3_6_alpha_15::Version; // VERSION_BUMP
impl Current {
#[instrument(skip(self, db))]
@@ -129,7 +131,9 @@ enum Version {
V0_3_6_alpha_10(Wrapper<v0_3_6_alpha_10::Version>),
V0_3_6_alpha_11(Wrapper<v0_3_6_alpha_11::Version>),
V0_3_6_alpha_12(Wrapper<v0_3_6_alpha_12::Version>),
V0_3_6_alpha_13(Wrapper<v0_3_6_alpha_13::Version>), // VERSION_BUMP
V0_3_6_alpha_13(Wrapper<v0_3_6_alpha_13::Version>),
V0_3_6_alpha_14(Wrapper<v0_3_6_alpha_14::Version>),
V0_3_6_alpha_15(Wrapper<v0_3_6_alpha_15::Version>), // VERSION_BUMP
Other(exver::Version),
}
@@ -166,7 +170,9 @@ impl Version {
Self::V0_3_6_alpha_10(v) => DynVersion(Box::new(v.0)),
Self::V0_3_6_alpha_11(v) => DynVersion(Box::new(v.0)),
Self::V0_3_6_alpha_12(v) => DynVersion(Box::new(v.0)),
Self::V0_3_6_alpha_13(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP
Self::V0_3_6_alpha_13(v) => DynVersion(Box::new(v.0)),
Self::V0_3_6_alpha_14(v) => DynVersion(Box::new(v.0)),
Self::V0_3_6_alpha_15(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP
Self::Other(v) => {
return Err(Error::new(
eyre!("unknown version {v}"),
@@ -195,7 +201,9 @@ impl Version {
Version::V0_3_6_alpha_10(Wrapper(x)) => x.semver(),
Version::V0_3_6_alpha_11(Wrapper(x)) => x.semver(),
Version::V0_3_6_alpha_12(Wrapper(x)) => x.semver(),
Version::V0_3_6_alpha_13(Wrapper(x)) => x.semver(), // VERSION_BUMP
Version::V0_3_6_alpha_13(Wrapper(x)) => x.semver(),
Version::V0_3_6_alpha_14(Wrapper(x)) => x.semver(),
Version::V0_3_6_alpha_15(Wrapper(x)) => x.semver(), // VERSION_BUMP
Version::Other(x) => x.clone(),
}
}

View File

@@ -464,9 +464,9 @@ async fn previous_account_info(pg: &sqlx::Pool<sqlx::Postgres>) -> Result<Accoun
.as_bytes(),
)
.with_ctx(|_| (ErrorKind::Database, "X509::from_pem"))?,
compat_s9pk_key: SigningKey::generate(&mut rand::thread_rng()),
compat_s9pk_key: SigningKey::generate(&mut ssh_key::rand_core::OsRng::default()),
ssh_key: ssh_key::PrivateKey::random(
&mut rand::thread_rng(),
&mut ssh_key::rand_core::OsRng::default(),
ssh_key::Algorithm::Ed25519,
)
.with_ctx(|_| (ErrorKind::Database, "X509::ssh_key::PrivateKey::random"))?,

View File

@@ -0,0 +1,39 @@
use std::collections::BTreeMap;
use exver::{PreReleaseSegment, VersionRange};
use imbl_value::json;
use super::v0_3_5::V0_3_0_COMPAT;
use super::{v0_3_6_alpha_13, VersionT};
use crate::prelude::*;
lazy_static::lazy_static! {
static ref V0_3_6_alpha_14: exver::Version = exver::Version::new(
[0, 3, 6],
[PreReleaseSegment::String("alpha".into()), 14.into()]
);
}
#[derive(Clone, Copy, Debug, Default)]
pub struct Version;
impl VersionT for Version {
type Previous = v0_3_6_alpha_13::Version;
type PreUpRes = ();
async fn pre_up(self) -> Result<Self::PreUpRes, Error> {
Ok(())
}
fn semver(self) -> exver::Version {
V0_3_6_alpha_14.clone()
}
fn compat(self) -> &'static VersionRange {
&V0_3_0_COMPAT
}
fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> {
Ok(())
}
fn down(self, _db: &mut Value) -> Result<(), Error> {
Ok(())
}
}

View File

@@ -0,0 +1,39 @@
use std::collections::BTreeMap;
use exver::{PreReleaseSegment, VersionRange};
use imbl_value::json;
use super::v0_3_5::V0_3_0_COMPAT;
use super::{v0_3_6_alpha_14, VersionT};
use crate::prelude::*;
lazy_static::lazy_static! {
static ref V0_3_6_alpha_15: exver::Version = exver::Version::new(
[0, 3, 6],
[PreReleaseSegment::String("alpha".into()), 15.into()]
);
}
#[derive(Clone, Copy, Debug, Default)]
pub struct Version;
impl VersionT for Version {
type Previous = v0_3_6_alpha_14::Version;
type PreUpRes = ();
async fn pre_up(self) -> Result<Self::PreUpRes, Error> {
Ok(())
}
fn semver(self) -> exver::Version {
V0_3_6_alpha_15.clone()
}
fn compat(self) -> &'static VersionRange {
&V0_3_0_COMPAT
}
fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> {
Ok(())
}
fn down(self, _db: &mut Value) -> Result<(), Error> {
Ok(())
}
}

View File

@@ -131,6 +131,8 @@ export type Effects = {
}): Promise<Host | null>
/** Returns the IP address of the container */
getContainerIp(): Promise<string>
/** Returns the IP address of StartOS */
getOsIp(): Promise<string>
// interface
/** Creates an interface bound to a specific host and port to show to the user */
exportServiceInterface(options: ExportServiceInterfaceParams): Promise<null>

View File

@@ -13,7 +13,7 @@ export type Run<
| InputSpec<Record<string, never>, never>,
> = (options: {
effects: T.Effects
input: ExtractInputSpecType<A> & Record<string, any>
input: ExtractInputSpecType<A>
}) => Promise<(T.ActionResult & { version: "1" }) | null | void | undefined>
export type GetInput<
A extends
@@ -22,12 +22,7 @@ export type GetInput<
| InputSpec<Record<string, any>, never>,
> = (options: {
effects: T.Effects
}) => Promise<
| null
| void
| undefined
| (ExtractPartialInputSpecType<A> & Record<string, any>)
>
}) => Promise<null | void | undefined | ExtractPartialInputSpecType<A>>
export type MaybeFn<T> = T | ((options: { effects: T.Effects }) => Promise<T>)
function callMaybeFn<T>(
@@ -63,8 +58,8 @@ export class Action<
readonly id: Id,
private readonly metadataFn: MaybeFn<T.ActionMetadata>,
private readonly inputSpec: InputSpecType,
private readonly getInputFn: GetInput<ExtractInputSpecType<InputSpecType>>,
private readonly runFn: Run<ExtractInputSpecType<InputSpecType>>,
private readonly getInputFn: GetInput<InputSpecType>,
private readonly runFn: Run<InputSpecType>,
) {}
static withInput<
Id extends T.ActionId,
@@ -77,8 +72,8 @@ export class Action<
id: Id,
metadata: MaybeFn<Omit<T.ActionMetadata, "hasInput">>,
inputSpec: InputSpecType,
getInput: GetInput<ExtractInputSpecType<InputSpecType>>,
run: Run<ExtractInputSpecType<InputSpecType>>,
getInput: GetInput<InputSpecType>,
run: Run<InputSpecType>,
): Action<Id, Store, InputSpecType> {
return new Action(
id,

View File

@@ -45,8 +45,26 @@ ExtendedVersion
return { flavor: flavor || null, upstream, downstream }
}
EmVer
= major:Digit "." minor:Digit "." patch:Digit ("." revision:Digit)? {
EmverVersionRange
= first:EmverVersionRangeAtom rest:(_ ((Or / And) _)? EmverVersionRangeAtom)*
EmverVersionRangeAtom
= EmverParens
/ EmverAnchor
/ EmverNot
/ Any
/ None
EmverParens
= "(" _ expr:EmverVersionRange _ ")" { return { type: "Parens", expr } }
EmverAnchor
= operator:CmpOp? _ version:Emver { return { type: "Anchor", operator, version } }
EmverNot = "!" _ value:EmverVersionRangeAtom { return { type: "Not", value: value }}
Emver
= major:Digit "." minor:Digit "." patch:Digit revision:( "." revision:Digit { return revision } )? {
return {
flavor: null,
upstream: {

View File

@@ -296,7 +296,7 @@ function peg$parse(input, options) {
var peg$source = options.grammarSource;
// @ts-ignore
var peg$startRuleFunctions = { VersionRange: peg$parseVersionRange, Or: peg$parseOr, And: peg$parseAnd, VersionRangeAtom: peg$parseVersionRangeAtom, Parens: peg$parseParens, Anchor: peg$parseAnchor, VersionSpec: peg$parseVersionSpec, Not: peg$parseNot, Any: peg$parseAny, None: peg$parseNone, CmpOp: peg$parseCmpOp, ExtendedVersion: peg$parseExtendedVersion, EmVer: peg$parseEmVer, Flavor: peg$parseFlavor, Lowercase: peg$parseLowercase, String: peg$parseString, Version: peg$parseVersion, PreRelease: peg$parsePreRelease, PreReleaseSegment: peg$parsePreReleaseSegment, VersionNumber: peg$parseVersionNumber, Digit: peg$parseDigit, _: peg$parse_ };
var peg$startRuleFunctions = { VersionRange: peg$parseVersionRange, Or: peg$parseOr, And: peg$parseAnd, VersionRangeAtom: peg$parseVersionRangeAtom, Parens: peg$parseParens, Anchor: peg$parseAnchor, VersionSpec: peg$parseVersionSpec, Not: peg$parseNot, Any: peg$parseAny, None: peg$parseNone, CmpOp: peg$parseCmpOp, ExtendedVersion: peg$parseExtendedVersion, EmverVersionRange: peg$parseEmverVersionRange, EmverVersionRangeAtom: peg$parseEmverVersionRangeAtom, EmverParens: peg$parseEmverParens, EmverAnchor: peg$parseEmverAnchor, EmverNot: peg$parseEmverNot, Emver: peg$parseEmver, Flavor: peg$parseFlavor, Lowercase: peg$parseLowercase, String: peg$parseString, Version: peg$parseVersion, PreRelease: peg$parsePreRelease, PreReleaseSegment: peg$parsePreReleaseSegment, VersionNumber: peg$parseVersionNumber, Digit: peg$parseDigit, _: peg$parse_ };
// @ts-ignore
var peg$startRuleFunction = peg$parseVersionRange;
@@ -397,7 +397,19 @@ function peg$parse(input, options) {
return { flavor: flavor || null, upstream, downstream }
};// @ts-ignore
var peg$f15 = function(major, minor, patch) {
var peg$f15 = function(expr) {// @ts-ignore
return { type: "Parens", expr } };// @ts-ignore
var peg$f16 = function(operator, version) {// @ts-ignore
return { type: "Anchor", operator, version } };// @ts-ignore
var peg$f17 = function(value) {// @ts-ignore
return { type: "Not", value: value }};// @ts-ignore
var peg$f18 = function(major, minor, patch, revision) {// @ts-ignore
return revision };// @ts-ignore
var peg$f19 = function(major, minor, patch, revision) {
// @ts-ignore
return {
// @ts-ignore
@@ -419,16 +431,16 @@ function peg$parse(input, options) {
}
};// @ts-ignore
var peg$f16 = function(flavor) {// @ts-ignore
var peg$f20 = function(flavor) {// @ts-ignore
return flavor };// @ts-ignore
var peg$f17 = function() {// @ts-ignore
var peg$f21 = function() {// @ts-ignore
return text() };// @ts-ignore
var peg$f18 = function() {// @ts-ignore
var peg$f22 = function() {// @ts-ignore
return text(); };// @ts-ignore
var peg$f19 = function(number, prerelease) {
var peg$f23 = function(number, prerelease) {
// @ts-ignore
return {
// @ts-ignore
@@ -438,22 +450,22 @@ function peg$parse(input, options) {
};
};// @ts-ignore
var peg$f20 = function(first, rest) {
var peg$f24 = function(first, rest) {
// @ts-ignore
return [first].concat(rest.map(r => r[1]));
};// @ts-ignore
var peg$f21 = function(segment) {
var peg$f25 = function(segment) {
// @ts-ignore
return segment;
};// @ts-ignore
var peg$f22 = function(first, rest) {
var peg$f26 = function(first, rest) {
// @ts-ignore
return [first].concat(rest.map(r => r[1]));
};// @ts-ignore
var peg$f23 = function() {// @ts-ignore
var peg$f27 = function() {// @ts-ignore
return parseInt(text(), 10); };
// @ts-ignore
var peg$currPos = 0;
@@ -1533,7 +1545,336 @@ peg$parseExtendedVersion() {
// @ts-ignore
function // @ts-ignore
peg$parseEmVer() {
peg$parseEmverVersionRange() {
// @ts-ignore
var s0, s1, s2, s3, s4, s5, s6, s7;
// @ts-ignore
s0 = peg$currPos;
// @ts-ignore
s1 = peg$parseEmverVersionRangeAtom();
// @ts-ignore
if (s1 !== peg$FAILED) {
// @ts-ignore
s2 = [];
// @ts-ignore
s3 = peg$currPos;
// @ts-ignore
s4 = peg$parse_();
// @ts-ignore
s5 = peg$currPos;
// @ts-ignore
s6 = peg$parseOr();
// @ts-ignore
if (s6 === peg$FAILED) {
// @ts-ignore
s6 = peg$parseAnd();
}
// @ts-ignore
if (s6 !== peg$FAILED) {
// @ts-ignore
s7 = peg$parse_();
// @ts-ignore
s6 = [s6, s7];
// @ts-ignore
s5 = s6;
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s5;
// @ts-ignore
s5 = peg$FAILED;
}
// @ts-ignore
if (s5 === peg$FAILED) {
// @ts-ignore
s5 = null;
}
// @ts-ignore
s6 = peg$parseEmverVersionRangeAtom();
// @ts-ignore
if (s6 !== peg$FAILED) {
// @ts-ignore
s4 = [s4, s5, s6];
// @ts-ignore
s3 = s4;
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s3;
// @ts-ignore
s3 = peg$FAILED;
}
// @ts-ignore
while (s3 !== peg$FAILED) {
// @ts-ignore
s2.push(s3);
// @ts-ignore
s3 = peg$currPos;
// @ts-ignore
s4 = peg$parse_();
// @ts-ignore
s5 = peg$currPos;
// @ts-ignore
s6 = peg$parseOr();
// @ts-ignore
if (s6 === peg$FAILED) {
// @ts-ignore
s6 = peg$parseAnd();
}
// @ts-ignore
if (s6 !== peg$FAILED) {
// @ts-ignore
s7 = peg$parse_();
// @ts-ignore
s6 = [s6, s7];
// @ts-ignore
s5 = s6;
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s5;
// @ts-ignore
s5 = peg$FAILED;
}
// @ts-ignore
if (s5 === peg$FAILED) {
// @ts-ignore
s5 = null;
}
// @ts-ignore
s6 = peg$parseEmverVersionRangeAtom();
// @ts-ignore
if (s6 !== peg$FAILED) {
// @ts-ignore
s4 = [s4, s5, s6];
// @ts-ignore
s3 = s4;
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s3;
// @ts-ignore
s3 = peg$FAILED;
}
}
// @ts-ignore
s1 = [s1, s2];
// @ts-ignore
s0 = s1;
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
return s0;
}
// @ts-ignore
function // @ts-ignore
peg$parseEmverVersionRangeAtom() {
// @ts-ignore
var s0;
// @ts-ignore
s0 = peg$parseEmverParens();
// @ts-ignore
if (s0 === peg$FAILED) {
// @ts-ignore
s0 = peg$parseEmverAnchor();
// @ts-ignore
if (s0 === peg$FAILED) {
// @ts-ignore
s0 = peg$parseEmverNot();
// @ts-ignore
if (s0 === peg$FAILED) {
// @ts-ignore
s0 = peg$parseAny();
// @ts-ignore
if (s0 === peg$FAILED) {
// @ts-ignore
s0 = peg$parseNone();
}
}
}
}
// @ts-ignore
return s0;
}
// @ts-ignore
function // @ts-ignore
peg$parseEmverParens() {
// @ts-ignore
var s0, s1, s2, s3, s4, s5;
// @ts-ignore
s0 = peg$currPos;
// @ts-ignore
if (input.charCodeAt(peg$currPos) === 40) {
// @ts-ignore
s1 = peg$c2;
// @ts-ignore
peg$currPos++;
// @ts-ignore
} else {
// @ts-ignore
s1 = peg$FAILED;
// @ts-ignore
if (peg$silentFails === 0) { peg$fail(peg$e2); }
}
// @ts-ignore
if (s1 !== peg$FAILED) {
// @ts-ignore
s2 = peg$parse_();
// @ts-ignore
s3 = peg$parseEmverVersionRange();
// @ts-ignore
if (s3 !== peg$FAILED) {
// @ts-ignore
s4 = peg$parse_();
// @ts-ignore
if (input.charCodeAt(peg$currPos) === 41) {
// @ts-ignore
s5 = peg$c3;
// @ts-ignore
peg$currPos++;
// @ts-ignore
} else {
// @ts-ignore
s5 = peg$FAILED;
// @ts-ignore
if (peg$silentFails === 0) { peg$fail(peg$e3); }
}
// @ts-ignore
if (s5 !== peg$FAILED) {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f15(s3);
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
return s0;
}
// @ts-ignore
function // @ts-ignore
peg$parseEmverAnchor() {
// @ts-ignore
var s0, s1, s2, s3;
// @ts-ignore
s0 = peg$currPos;
// @ts-ignore
s1 = peg$parseCmpOp();
// @ts-ignore
if (s1 === peg$FAILED) {
// @ts-ignore
s1 = null;
}
// @ts-ignore
s2 = peg$parse_();
// @ts-ignore
s3 = peg$parseEmver();
// @ts-ignore
if (s3 !== peg$FAILED) {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f16(s1, s3);
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
return s0;
}
// @ts-ignore
function // @ts-ignore
peg$parseEmverNot() {
// @ts-ignore
var s0, s1, s2, s3;
// @ts-ignore
s0 = peg$currPos;
// @ts-ignore
if (input.charCodeAt(peg$currPos) === 33) {
// @ts-ignore
s1 = peg$c5;
// @ts-ignore
peg$currPos++;
// @ts-ignore
} else {
// @ts-ignore
s1 = peg$FAILED;
// @ts-ignore
if (peg$silentFails === 0) { peg$fail(peg$e5); }
}
// @ts-ignore
if (s1 !== peg$FAILED) {
// @ts-ignore
s2 = peg$parse_();
// @ts-ignore
s3 = peg$parseEmverVersionRangeAtom();
// @ts-ignore
if (s3 !== peg$FAILED) {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f17(s3);
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
} else {
// @ts-ignore
peg$currPos = s0;
// @ts-ignore
s0 = peg$FAILED;
}
// @ts-ignore
return s0;
}
// @ts-ignore
function // @ts-ignore
peg$parseEmver() {
// @ts-ignore
var s0, s1, s2, s3, s4, s5, s6, s7, s8;
@@ -1603,9 +1944,9 @@ peg$parseEmVer() {
// @ts-ignore
if (s8 !== peg$FAILED) {
// @ts-ignore
s7 = [s7, s8];
peg$savedPos = s6;
// @ts-ignore
s6 = s7;
s6 = peg$f18(s1, s3, s5, s8);
// @ts-ignore
} else {
// @ts-ignore
@@ -1628,7 +1969,7 @@ peg$parseEmVer() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f15(s1, s3, s5);
s0 = peg$f19(s1, s3, s5, s6);
// @ts-ignore
} else {
// @ts-ignore
@@ -1714,7 +2055,7 @@ peg$parseFlavor() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f16(s2);
s0 = peg$f20(s2);
// @ts-ignore
} else {
// @ts-ignore
@@ -1794,7 +2135,7 @@ peg$parseLowercase() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s1 = peg$f17();
s1 = peg$f21();
}
// @ts-ignore
s0 = s1;
@@ -1856,7 +2197,7 @@ peg$parseString() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s1 = peg$f18();
s1 = peg$f22();
}
// @ts-ignore
s0 = s1;
@@ -1887,7 +2228,7 @@ peg$parseVersion() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f19(s1, s2);
s0 = peg$f23(s1, s2);
// @ts-ignore
} else {
// @ts-ignore
@@ -2015,7 +2356,7 @@ peg$parsePreRelease() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f20(s2, s3);
s0 = peg$f24(s2, s3);
// @ts-ignore
} else {
// @ts-ignore
@@ -2073,7 +2414,7 @@ peg$parsePreReleaseSegment() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f21(s2);
s0 = peg$f25(s2);
// @ts-ignore
} else {
// @ts-ignore
@@ -2186,7 +2527,7 @@ peg$parseVersionNumber() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s0 = peg$f22(s1, s2);
s0 = peg$f26(s1, s2);
// @ts-ignore
} else {
// @ts-ignore
@@ -2252,7 +2593,7 @@ peg$parseDigit() {
// @ts-ignore
peg$savedPos = s0;
// @ts-ignore
s1 = peg$f23();
s1 = peg$f27();
}
// @ts-ignore
s0 = s1;
@@ -2423,7 +2764,7 @@ peggyParser.SyntaxError.prototype.name = "PeggySyntaxError";
export interface ParseOptions {
filename?: string;
startRule?: "VersionRange" | "Or" | "And" | "VersionRangeAtom" | "Parens" | "Anchor" | "VersionSpec" | "Not" | "Any" | "None" | "CmpOp" | "ExtendedVersion" | "EmVer" | "Flavor" | "Lowercase" | "String" | "Version" | "PreRelease" | "PreReleaseSegment" | "VersionNumber" | "Digit" | "_";
startRule?: "VersionRange" | "Or" | "And" | "VersionRangeAtom" | "Parens" | "Anchor" | "VersionSpec" | "Not" | "Any" | "None" | "CmpOp" | "ExtendedVersion" | "EmverVersionRange" | "EmverVersionRangeAtom" | "EmverParens" | "EmverAnchor" | "EmverNot" | "Emver" | "Flavor" | "Lowercase" | "String" | "Version" | "PreRelease" | "PreReleaseSegment" | "VersionNumber" | "Digit" | "_";
tracer?: any;
[key: string]: any;
}
@@ -2443,7 +2784,12 @@ export type ParseFunction = <Options extends ParseOptions>(
StartRule extends "None" ? None :
StartRule extends "CmpOp" ? CmpOp :
StartRule extends "ExtendedVersion" ? ExtendedVersion :
StartRule extends "EmVer" ? EmVer :
StartRule extends "EmverVersionRange" ? EmverVersionRange :
StartRule extends "EmverVersionRangeAtom" ? EmverVersionRangeAtom :
StartRule extends "EmverParens" ? EmverParens :
StartRule extends "EmverAnchor" ? EmverAnchor :
StartRule extends "EmverNot" ? EmverNot :
StartRule extends "Emver" ? Emver :
StartRule extends "Flavor" ? Flavor :
StartRule extends "Lowercase" ? Lowercase_1 :
StartRule extends "String" ? String_1 :
@@ -2488,10 +2834,27 @@ export type ExtendedVersion = {
upstream: Version;
downstream: Version;
};
export type EmVer = {
export type EmverVersionRange = [
EmverVersionRangeAtom,
[_, [Or | And, _] | null, EmverVersionRangeAtom][]
];
export type EmverVersionRangeAtom =
| EmverParens
| EmverAnchor
| EmverNot
| Any
| None;
export type EmverParens = { type: "Parens"; expr: EmverVersionRange };
export type EmverAnchor = {
type: "Anchor";
operator: CmpOp | null;
version: Emver;
};
export type EmverNot = { type: "Not"; value: EmverVersionRangeAtom };
export type Emver = {
flavor: null;
upstream: { number: [Digit, Digit, Digit]; prerelease: [] };
downstream: { number: [any]; prerelease: [] };
downstream: { number: [0 | NonNullable<Digit | null>]; prerelease: [] };
};
export type Flavor = Lowercase_1;
export type Lowercase_1 = string;

View File

@@ -123,6 +123,12 @@ export class VersionRange {
)
}
static parseEmver(range: string): VersionRange {
return VersionRange.parseRange(
P.parse(range, { startRule: "EmverVersionRange" }),
)
}
and(right: VersionRange) {
return new VersionRange({ type: "And", left: this, right })
}
@@ -291,12 +297,19 @@ export class ExtendedVersion {
}
static parseEmver(extendedVersion: string): ExtendedVersion {
const parsed = P.parse(extendedVersion, { startRule: "EmVer" })
return new ExtendedVersion(
parsed.flavor,
new Version(parsed.upstream.number, parsed.upstream.prerelease),
new Version(parsed.downstream.number, parsed.downstream.prerelease),
)
try {
const parsed = P.parse(extendedVersion, { startRule: "Emver" })
return new ExtendedVersion(
parsed.flavor,
new Version(parsed.upstream.number, parsed.upstream.prerelease),
new Version(parsed.downstream.number, parsed.downstream.prerelease),
)
} catch (e) {
if (e instanceof Error) {
e.message += ` (${extendedVersion})`
}
throw e
}
}
/**

View File

@@ -1,3 +1,8 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type ImageMetadata = { workdir: string; user: string }
export type ImageMetadata = {
workdir: string
user: string
entrypoint: Array<string> | null
cmd: Array<string> | null
}

View File

@@ -79,6 +79,7 @@ describe("startosTypeValidation ", () => {
},
getSystemSmtp: {} as WithCallback<GetSystemSmtpParams>,
getContainerIp: undefined,
getOsIp: undefined,
getServicePortForward: {} as GetServicePortForwardParams,
clearServiceInterfaces: {} as ClearServiceInterfacesParams,
exportServiceInterface: {} as ExportServiceInterfaceParams,

View File

@@ -127,7 +127,11 @@ export type SmtpValue = {
password: string | null | undefined
}
export type CommandType = string | [string, ...string[]]
export class UseEntrypoint {
constructor(readonly overridCmd?: string[]) {}
}
export type CommandType = string | [string, ...string[]] | UseEntrypoint
export type DaemonReturned = {
wait(): Promise<unknown>

View File

@@ -48,6 +48,11 @@ export type SDKManifest = {
/** Long description to display on the marketplace details page for this service. Max length 500 chars. */
readonly long: string
}
/**
* override the StartOS version this package was made for
* defaults to the version the SDK was built for
*/
osVersion?: string
/**
* @description A mapping of OS images needed to run the container processes. Each image ID is a unique key.
* @example

View File

@@ -1,10 +1,11 @@
import { Effects } from "../Effects"
import * as T from "../types"
export class GetSystemSmtp {
constructor(readonly effects: Effects) {}
/**
* Returns the system SMTP credentials. Restarts the service if the credentials change
* Returns the system SMTP credentials. Reruns the context from which it has been called if the underlying value changes
*/
const() {
return this.effects.getSystemSmtp({
@@ -17,8 +18,9 @@ export class GetSystemSmtp {
once() {
return this.effects.getSystemSmtp({})
}
/**
* Watches the system SMTP credentials. Takes a custom callback function to run whenever the credentials change
* Watches the system SMTP credentials. Returns an async iterator that yields whenever the value changes
*/
async *watch() {
while (true) {
@@ -32,4 +34,34 @@ export class GetSystemSmtp {
await waitForNext
}
}
/**
* Watches the system SMTP credentials. Takes a custom callback function to run whenever the credentials change
*/
onChange(
callback: (
value: T.SmtpValue | null,
error?: Error,
) => void | Promise<void>,
) {
;(async () => {
for await (const value of this.watch()) {
try {
await callback(value)
} catch (e) {
console.error(
"callback function threw an error @ GetSystemSmtp.onChange",
e,
)
}
}
})()
.catch((e) => callback(null, e))
.catch((e) =>
console.error(
"callback function threw an error @ GetSystemSmtp.onChange",
e,
),
)
}
}

View File

@@ -17,6 +17,7 @@ export const getHostname = (url: string): Hostname | null => {
export type Filled = {
hostnames: HostnameInfo[]
publicHostnames: HostnameInfo[]
onionHostnames: HostnameInfo[]
localHostnames: HostnameInfo[]
ipHostnames: HostnameInfo[]
@@ -25,6 +26,7 @@ export type Filled = {
nonIpHostnames: HostnameInfo[]
urls: UrlString[]
publicUrls: UrlString[]
onionUrls: UrlString[]
localUrls: UrlString[]
ipUrls: UrlString[]
@@ -105,6 +107,9 @@ export const filledAddress = (
return {
...addressInfo,
hostnames,
get publicHostnames() {
return hostnames.filter((h) => h.kind === "onion" || h.public)
},
get onionHostnames() {
return hostnames.filter((h) => h.kind === "onion")
},
@@ -141,6 +146,9 @@ export const filledAddress = (
get urls() {
return this.hostnames.flatMap(toUrl)
},
get publicUrls() {
return this.publicHostnames.flatMap(toUrl)
},
get onionUrls() {
return this.onionHostnames.flatMap(toUrl)
},
@@ -205,7 +213,7 @@ export class GetServiceInterface {
) {}
/**
* Returns the value of Store at the provided path. Restart the service if the value changes
* Returns the requested service interface. Reruns the context from which it has been called if the underlying value changes
*/
async const() {
const { id, packageId } = this.opts
@@ -220,7 +228,7 @@ export class GetServiceInterface {
return interfaceFilled
}
/**
* Returns the value of ServiceInterfacesFilled at the provided path. Does nothing if the value changes
* Returns the requested service interface. Does nothing if the value changes
*/
async once() {
const { id, packageId } = this.opts
@@ -234,7 +242,7 @@ export class GetServiceInterface {
}
/**
* Watches the value of ServiceInterfacesFilled at the provided path. Takes a custom callback function to run whenever the value changes
* Watches the requested service interface. Returns an async iterator that yields whenever the value changes
*/
async *watch() {
const { id, packageId } = this.opts
@@ -252,6 +260,36 @@ export class GetServiceInterface {
await waitForNext
}
}
/**
* Watches the requested service interface. Takes a custom callback function to run whenever the value changes
*/
onChange(
callback: (
value: ServiceInterfaceFilled | null,
error?: Error,
) => void | Promise<void>,
) {
;(async () => {
for await (const value of this.watch()) {
try {
await callback(value)
} catch (e) {
console.error(
"callback function threw an error @ GetServiceInterface.onChange",
e,
)
}
}
})()
.catch((e) => callback(null, e))
.catch((e) =>
console.error(
"callback function threw an error @ GetServiceInterface.onChange",
e,
),
)
}
}
export function getServiceInterface(
effects: Effects,

View File

@@ -47,7 +47,7 @@ export class GetServiceInterfaces {
) {}
/**
* Returns the value of Store at the provided path. Restart the service if the value changes
* Returns the service interfaces for the package. Reruns the context from which it has been called if the underlying value changes
*/
async const() {
const { packageId } = this.opts
@@ -62,7 +62,7 @@ export class GetServiceInterfaces {
return interfaceFilled
}
/**
* Returns the value of ServiceInterfacesFilled at the provided path. Does nothing if the value changes
* Returns the service interfaces for the package. Does nothing if the value changes
*/
async once() {
const { packageId } = this.opts
@@ -76,7 +76,7 @@ export class GetServiceInterfaces {
}
/**
* Watches the value of ServiceInterfacesFilled at the provided path. Takes a custom callback function to run whenever the value changes
* Watches the service interfaces for the package. Returns an async iterator that yields whenever the value changes
*/
async *watch() {
const { packageId } = this.opts
@@ -93,6 +93,36 @@ export class GetServiceInterfaces {
await waitForNext
}
}
/**
* Watches the service interfaces for the package. Takes a custom callback function to run whenever the value changes
*/
onChange(
callback: (
value: ServiceInterfaceFilled[] | null,
error?: Error,
) => void | Promise<void>,
) {
;(async () => {
for await (const value of this.watch()) {
try {
await callback(value)
} catch (e) {
console.error(
"callback function threw an error @ GetServiceInterfaces.onChange",
e,
)
}
}
})()
.catch((e) => callback(null, e))
.catch((e) =>
console.error(
"callback function threw an error @ GetServiceInterfaces.onChange",
e,
),
)
}
}
export function getServiceInterfaces(
effects: Effects,

View File

@@ -27,7 +27,7 @@
"ts-node": "^10.9.1",
"ts-pegjs": "^4.2.1",
"tsx": "^4.7.1",
"typescript": "^5.0.4"
"typescript": "^5.7.3"
}
},
"node_modules/@ampproject/remapping": {
@@ -4773,9 +4773,9 @@
}
},
"node_modules/typescript": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
"integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"dev": true,
"license": "Apache-2.0",
"bin": {

View File

@@ -47,6 +47,6 @@
"ts-node": "^10.9.1",
"ts-pegjs": "^4.2.1",
"tsx": "^4.7.1",
"typescript": "^5.0.4"
"typescript": "^5.7.3"
}
}

View File

@@ -12,7 +12,7 @@
"skipLibCheck": true,
"module": "commonjs",
"outDir": "../baseDist",
"target": "es2018"
"target": "es2021"
},
"include": ["lib/**/*"],
"exclude": ["lib/**/*.spec.ts", "lib/**/*.gen.ts", "list", "node_modules"]

File diff suppressed because one or more lines are too long

View File

@@ -1,71 +1,129 @@
body, html {
margin:0; padding: 0;
body,
html {
margin: 0;
padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
font-family:
Helvetica Neue,
Helvetica,
Arial;
font-size: 14px;
color: #333;
}
.small {
font-size: 12px;
}
*,
*:after,
*:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
h1 {
font-size: 20px;
margin: 0;
}
h2 {
font-size: 14px;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
font:
12px/1.4 Consolas,
"Liberation Mono",
Menlo,
Courier,
monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a {
color: #0074d9;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.strong {
font-weight: bold;
}
.space-top1 {
padding: 10px 0 0 0;
}
.pad2y {
padding: 20px 0;
}
.pad1y {
padding: 10px 0;
}
.pad2x {
padding: 0 20px;
}
.pad2 {
padding: 20px;
}
.pad1 {
padding: 10px;
}
.space-left2 {
padding-left: 55px;
}
.space-right2 {
padding-right: 20px;
}
.center {
text-align: center;
}
.clearfix {
display: block;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.fl {
float: left;
}
@media only screen and (max-width: 640px) {
.col3 {
width: 100%;
max-width: 100%;
}
.hide-mobile {
display: none !important;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}
.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
color: rgba(0, 0, 0, 0.5);
}
.quiet a {
opacity: 0.7;
}
.quiet a { opacity: 0.7; }
.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
background: #e8e8e8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}
div.path a:link, div.path a:visited { color: #333; }
div.path a:link,
div.path a:visited {
color: #333;
}
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
@@ -78,140 +136,219 @@ table.coverage td {
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
text-align: right;
padding-right: 10px;
min-width: 20px;
}
table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}
.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
.missing-if-branch .typ,
.skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary tr {
border-bottom: 1px solid #bbb;
}
.keyline-all {
border: 1px solid #ddd;
}
.coverage-summary td,
.coverage-summary th {
padding: 10px;
}
.coverage-summary tbody {
border: 1px solid #bbb;
}
.coverage-summary td {
border-right: 1px solid #bbb;
}
.coverage-summary td:last-child {
border-right: none;
}
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.file {
border-right: none !important;
}
.coverage-summary th.pct {
}
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }
.coverage-summary td.abs {
text-align: right;
}
.coverage-summary td.file {
white-space: nowrap;
}
.coverage-summary td.pic {
min-width: 120px !important;
}
.coverage-summary tfoot td {
}
.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
background-position: 0 -10px;
}
.status-line {
height: 10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
.cbranch-no {
background: yellow !important;
color: #111;
}
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.red.solid,
.status-line.low,
.low .cover-fill {
background: #c21f39;
}
.low .chart {
border: 1px solid #c21f39;
}
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
.highlighted .cstat-no,
.highlighted .fstat-no,
.highlighted .cbranch-no {
background: #c21f39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
.cstat-no,
.fstat-no,
.cbranch-no,
.cbranch-no {
background: #f6c6ce;
}
/* light red */
.low, .cline-no { background:#FCE1E5 }
.low,
.cline-no {
background: #fce1e5;
}
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
.high,
.cline-yes {
background: rgb(230, 245, 208);
}
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
.cstat-yes {
background: rgb(161, 215, 106);
}
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
.status-line.high,
.high .cover-fill {
background: rgb(77, 146, 33);
}
.high .chart {
border: 1px solid rgb(77, 146, 33);
}
/* dark yellow (gold) */
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
.medium .chart { border:1px solid #f9cd0b; }
.status-line.medium,
.medium .cover-fill {
background: #f9cd0b;
}
.medium .chart {
border: 1px solid #f9cd0b;
}
/* light yellow */
.medium { background: #fff4c2; }
.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }
span.cline-neutral { background: #eaeaea; }
.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
.medium {
background: #fff4c2;
}
.cover-fill, .cover-empty {
display:inline-block;
.cstat-skip {
background: #ddd;
color: #111;
}
.fstat-skip {
background: #ddd;
color: #111 !important;
}
.cbranch-skip {
background: #ddd !important;
color: #111;
}
span.cline-neutral {
background: #eaeaea;
}
.coverage-summary td.empty {
opacity: 0.5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}
.cover-fill,
.cover-empty {
display: inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
background: white;
}
.cover-full {
border-right: none !important;
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com {
color: #999 !important;
}
.ignore-none {
color: #999;
font-weight: normal;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }
.wrapper {
min-height: 100%;
@@ -219,6 +356,7 @@ pre.prettyprint {
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
.footer,
.push {
height: 48px;
}

View File

@@ -1,87 +1,85 @@
/* eslint-disable */
var jumpToCode = (function init() {
// Classes of code we would like to highlight in the file view
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
// Classes of code we would like to highlight in the file view
var missingCoverageClasses = [".cbranch-no", ".cstat-no", ".fstat-no"];
// Elements to highlight in the file listing view
var fileListingElements = ['td.pct.low'];
// Elements to highlight in the file listing view
var fileListingElements = ["td.pct.low"];
// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
// We don't want to select elements that are direct descendants of another match
var notSelector = ":not(" + missingCoverageClasses.join("):not(") + ") > "; // becomes `:not(a):not(b) > `
// Selecter that finds elements on the page to which we can jump
var selector =
fileListingElements.join(', ') +
', ' +
notSelector +
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
// Selecter that finds elements on the page to which we can jump
var selector =
fileListingElements.join(", ") +
", " +
notSelector +
missingCoverageClasses.join(", " + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);
// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);
var currentIndex;
var currentIndex;
function toggleClass(index) {
missingCoverageElements
.item(currentIndex)
.classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
function toggleClass(index) {
missingCoverageElements.item(currentIndex).classList.remove("highlighted");
missingCoverageElements.item(index).classList.add("highlighted");
}
function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index).scrollIntoView({
behavior: "smooth",
block: "center",
inline: "center",
});
}
function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== "number" || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}
function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center'
});
makeCurrent(nextIndex);
}
function goToNext() {
var nextIndex = 0;
if (
typeof currentIndex === "number" &&
currentIndex < missingCoverageElements.length - 1
) {
nextIndex = currentIndex + 1;
}
function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}
makeCurrent(nextIndex);
}
makeCurrent(nextIndex);
return function jump(event) {
if (
document.getElementById("fileSearch") === document.activeElement &&
document.activeElement != null
) {
// if we're currently focused on the search input, we don't want to navigate
return;
}
function goToNext() {
var nextIndex = 0;
if (
typeof currentIndex === 'number' &&
currentIndex < missingCoverageElements.length - 1
) {
nextIndex = currentIndex + 1;
}
makeCurrent(nextIndex);
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
return function jump(event) {
if (
document.getElementById('fileSearch') === document.activeElement &&
document.activeElement != null
) {
// if we're currently focused on the search input, we don't want to navigate
return;
}
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
};
})();
window.addEventListener('keydown', jumpToCode);
window.addEventListener("keydown", jumpToCode);

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config/builder/config.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">config/builder</a> config.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">78.57% </span>
<span class="quiet">Statements</span>
<span class='fraction'>11/14</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">75% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">78.57% </span>
<span class="quiet">Lines</span>
<span class='fraction'>11/14</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">config/builder</a> config.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">78.57% </span>
<span class="quiet">Statements</span>
<span class="fraction">11/14</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">75% </span>
<span class="quiet">Functions</span>
<span class="fraction">3/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">78.57% </span>
<span class="quiet">Lines</span>
<span class="fraction">11/14</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -476,21 +472,27 @@ export class Config&lt;Type extends Record&lt;string, any&gt;, Store = never&gt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,146 +1,216 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config/builder</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> config/builder</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">31.73% </span>
<span class="quiet">Statements</span>
<span class='fraction'>33/104</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/29</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">17.18% </span>
<span class="quiet">Functions</span>
<span class='fraction'>11/64</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">31.37% </span>
<span class="quiet">Lines</span>
<span class='fraction'>32/102</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">31.73% </span>
<span class="quiet">Statements</span>
<span class="fraction">33/104</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/29</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">17.18% </span>
<span class="quiet">Functions</span>
<span class="fraction">11/64</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">31.37% </span>
<span class="quiet">Lines</span>
<span class="fraction">32/102</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file medium" data-value="config.ts">
<a href="config.ts.html">config.ts</a>
</td>
<td data-value="78.57" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 78%"></div>
<div class="cover-empty" style="width: 22%"></div>
</div>
</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="14" class="abs medium">11/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="75" class="pct medium">75%</td>
<td data-value="4" class="abs medium">3/4</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="14" class="abs medium">11/14</td>
</tr>
<tr>
<td class="file medium" data-value="list.ts">
<a href="list.ts.html">list.ts</a>
</td>
<td data-value="70" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 70%"></div>
<div class="cover-empty" style="width: 30%"></div>
</div>
</td>
<td data-value="70" class="pct medium">70%</td>
<td data-value="20" class="abs medium">14/20</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="62.5" class="pct medium">62.5%</td>
<td data-value="8" class="abs medium">5/8</td>
<td data-value="70" class="pct medium">70%</td>
<td data-value="20" class="abs medium">14/20</td>
</tr>
<tr>
<td class="file low" data-value="value.ts">
<a href="value.ts.html">value.ts</a>
</td>
<td data-value="11.42" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 11%"></div>
<div class="cover-empty" style="width: 89%"></div>
</div>
</td>
<td data-value="11.42" class="pct low">11.42%</td>
<td data-value="70" class="abs low">8/70</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="29" class="abs low">0/29</td>
<td data-value="5.76" class="pct low">5.76%</td>
<td data-value="52" class="abs low">3/52</td>
<td data-value="10.29" class="pct low">10.29%</td>
<td data-value="68" class="abs low">7/68</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file medium" data-value="config.ts"><a href="config.ts.html">config.ts</a></td>
<td data-value="78.57" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="14" class="abs medium">11/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="75" class="pct medium">75%</td>
<td data-value="4" class="abs medium">3/4</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="14" class="abs medium">11/14</td>
</tr>
<tr>
<td class="file medium" data-value="list.ts"><a href="list.ts.html">list.ts</a></td>
<td data-value="70" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
</td>
<td data-value="70" class="pct medium">70%</td>
<td data-value="20" class="abs medium">14/20</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="62.5" class="pct medium">62.5%</td>
<td data-value="8" class="abs medium">5/8</td>
<td data-value="70" class="pct medium">70%</td>
<td data-value="20" class="abs medium">14/20</td>
</tr>
<tr>
<td class="file low" data-value="value.ts"><a href="value.ts.html">value.ts</a></td>
<td data-value="11.42" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 11%"></div><div class="cover-empty" style="width: 89%"></div></div>
</td>
<td data-value="11.42" class="pct low">11.42%</td>
<td data-value="70" class="abs low">8/70</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="29" class="abs low">0/29</td>
<td data-value="5.76" class="pct low">5.76%</td>
<td data-value="52" class="abs low">3/52</td>
<td data-value="10.29" class="pct low">10.29%</td>
<td data-value="68" class="abs low">7/68</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config/builder/list.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">config/builder</a> list.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">70% </span>
<span class="quiet">Statements</span>
<span class='fraction'>14/20</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">62.5% </span>
<span class="quiet">Functions</span>
<span class='fraction'>5/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">70% </span>
<span class="quiet">Lines</span>
<span class='fraction'>14/20</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">config/builder</a> list.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">70% </span>
<span class="quiet">Statements</span>
<span class="fraction">14/20</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">62.5% </span>
<span class="quiet">Functions</span>
<span class="fraction">5/8</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">70% </span>
<span class="quiet">Lines</span>
<span class="fraction">14/20</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -629,21 +625,27 @@ export class List&lt;Type, Store&gt; {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config/builder/value.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">config/builder</a> value.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">11.42% </span>
<span class="quiet">Statements</span>
<span class='fraction'>8/70</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/29</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">5.76% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/52</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">10.29% </span>
<span class="quiet">Lines</span>
<span class='fraction'>7/68</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">config/builder</a> value.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">11.42% </span>
<span class="quiet">Statements</span>
<span class="fraction">8/70</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/29</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">5.76% </span>
<span class="quiet">Functions</span>
<span class="fraction">3/52</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">10.29% </span>
<span class="quiet">Lines</span>
<span class="fraction">7/68</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -2414,21 +2410,27 @@ export class Value&lt;Type, Store&gt; {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config/configTypes.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">config</a> configTypes.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>4/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>4/4</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">config</a> configTypes.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class="fraction">4/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class="fraction">4/4</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -899,21 +895,27 @@ export const unionValueKey = "unionValueKey" as const
export type UnionValueKey = typeof unionValueKey
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,116 +1,176 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for config</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../index.html">All files</a> config</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>4/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>4/4</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class="fraction">4/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class="fraction">4/4</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line high"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file high" data-value="configTypes.ts">
<a href="configTypes.ts.html">configTypes.ts</a>
</td>
<td data-value="100" class="pic high">
<div class="chart">
<div class="cover-fill cover-full" style="width: 100%"></div>
<div class="cover-empty" style="width: 0%"></div>
</div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="configTypes.ts"><a href="configTypes.ts.html">configTypes.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,116 +1,176 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for emverLite</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../index.html">All files</a> emverLite</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class='fraction'>129/133</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class='fraction'>34/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class='fraction'>40/41</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class='fraction'>125/128</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class="fraction">129/133</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class="fraction">34/37</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class="fraction">40/41</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class="fraction">125/128</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line high"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file high" data-value="mod.ts">
<a href="mod.ts.html">mod.ts</a>
</td>
<td data-value="96.99" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 96%"></div>
<div class="cover-empty" style="width: 4%"></div>
</div>
</td>
<td data-value="96.99" class="pct high">96.99%</td>
<td data-value="133" class="abs high">129/133</td>
<td data-value="91.89" class="pct high">91.89%</td>
<td data-value="37" class="abs high">34/37</td>
<td data-value="97.56" class="pct high">97.56%</td>
<td data-value="41" class="abs high">40/41</td>
<td data-value="97.65" class="pct high">97.65%</td>
<td data-value="128" class="abs high">125/128</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="mod.ts"><a href="mod.ts.html">mod.ts</a></td>
<td data-value="96.99" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
</td>
<td data-value="96.99" class="pct high">96.99%</td>
<td data-value="133" class="abs high">129/133</td>
<td data-value="91.89" class="pct high">91.89%</td>
<td data-value="37" class="abs high">34/37</td>
<td data-value="97.56" class="pct high">97.56%</td>
<td data-value="41" class="abs high">40/41</td>
<td data-value="97.65" class="pct high">97.65%</td>
<td data-value="128" class="abs high">125/128</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for emverLite/mod.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">emverLite</a> mod.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class='fraction'>129/133</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class='fraction'>34/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class='fraction'>40/41</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class='fraction'>125/128</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">emverLite</a> mod.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class="fraction">129/133</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class="fraction">34/37</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class="fraction">40/41</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class="fraction">125/128</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -1034,21 +1030,27 @@ export class Checker {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,66 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for health/checkFns/checkPortListening.ts</title>
<head>
<title>
Code coverage report for health/checkFns/checkPortListening.ts
</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">health/checkFns</a> checkPortListening.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">61.11% </span>
<span class="quiet">Statements</span>
<span class='fraction'>11/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">42.85% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">61.11% </span>
<span class="quiet">Lines</span>
<span class='fraction'>11/18</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">health/checkFns</a> checkPortListening.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">61.11% </span>
<span class="quiet">Statements</span>
<span class="fraction">11/18</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">42.85% </span>
<span class="quiet">Functions</span>
<span class="fraction">3/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">61.11% </span>
<span class="quiet">Lines</span>
<span class="fraction">11/18</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -266,21 +264,27 @@ export async function <span class="fstat-no" title="function not covered" >check
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,116 +1,176 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for health/checkFns</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> health/checkFns</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">61.11% </span>
<span class="quiet">Statements</span>
<span class='fraction'>11/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">42.85% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">61.11% </span>
<span class="quiet">Lines</span>
<span class='fraction'>11/18</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">61.11% </span>
<span class="quiet">Statements</span>
<span class="fraction">11/18</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">42.85% </span>
<span class="quiet">Functions</span>
<span class="fraction">3/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">61.11% </span>
<span class="quiet">Lines</span>
<span class="fraction">11/18</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line medium"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file medium" data-value="checkPortListening.ts">
<a href="checkPortListening.ts.html">checkPortListening.ts</a>
</td>
<td data-value="61.11" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 61%"></div>
<div class="cover-empty" style="width: 39%"></div>
</div>
</td>
<td data-value="61.11" class="pct medium">61.11%</td>
<td data-value="18" class="abs medium">11/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="42.85" class="pct low">42.85%</td>
<td data-value="7" class="abs low">3/7</td>
<td data-value="61.11" class="pct medium">61.11%</td>
<td data-value="18" class="abs medium">11/18</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line medium'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file medium" data-value="checkPortListening.ts"><a href="checkPortListening.ts.html">checkPortListening.ts</a></td>
<td data-value="61.11" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 61%"></div><div class="cover-empty" style="width: 39%"></div></div>
</td>
<td data-value="61.11" class="pct medium">61.11%</td>
<td data-value="18" class="abs medium">11/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="42.85" class="pct low">42.85%</td>
<td data-value="7" class="abs low">3/7</td>
<td data-value="61.11" class="pct medium">61.11%</td>
<td data-value="18" class="abs medium">11/18</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,371 +1,516 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>All files</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">48.29% </span>
<span class="quiet">Statements</span>
<span class='fraction'>1329/2752</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">37.19% </span>
<span class="quiet">Branches</span>
<span class='fraction'>334/898</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">30.54% </span>
<span class="quiet">Functions</span>
<span class='fraction'>212/694</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">48.21% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1256/2605</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">48.29% </span>
<span class="quiet">Statements</span>
<span class="fraction">1329/2752</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">37.19% </span>
<span class="quiet">Branches</span>
<span class="fraction">334/898</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">30.54% </span>
<span class="quiet">Functions</span>
<span class="fraction">212/694</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">48.21% </span>
<span class="quiet">Lines</span>
<span class="fraction">1256/2605</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file low" data-value="lib">
<a href="lib/index.html">lib</a>
</td>
<td data-value="40.27" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 40%"></div>
<div class="cover-empty" style="width: 60%"></div>
</div>
</td>
<td data-value="40.27" class="pct low">40.27%</td>
<td data-value="144" class="abs low">58/144</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="85" class="abs low">10/85</td>
<td data-value="40.27" class="pct low">40.27%</td>
<td data-value="144" class="abs low">58/144</td>
</tr>
<tr>
<td class="file low" data-value="lib/actions">
<a href="lib/actions/index.html">lib/actions</a>
</td>
<td data-value="10.71" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 10%"></div>
<div class="cover-empty" style="width: 90%"></div>
</div>
</td>
<td data-value="10.71" class="pct low">10.71%</td>
<td data-value="28" class="abs low">3/28</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="12" class="abs low">0/12</td>
<td data-value="10.71" class="pct low">10.71%</td>
<td data-value="28" class="abs low">3/28</td>
</tr>
<tr>
<td class="file low" data-value="lib/backup">
<a href="lib/backup/index.html">lib/backup</a>
</td>
<td data-value="8.79" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 8%"></div>
<div class="cover-empty" style="width: 92%"></div>
</div>
</td>
<td data-value="8.79" class="pct low">8.79%</td>
<td data-value="91" class="abs low">8/91</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="27" class="abs low">0/27</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="88" class="abs low">8/88</td>
</tr>
<tr>
<td class="file low" data-value="lib/config">
<a href="lib/config/index.html">lib/config</a>
</td>
<td data-value="46.15" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 46%"></div>
<div class="cover-empty" style="width: 54%"></div>
</div>
</td>
<td data-value="46.15" class="pct low">46.15%</td>
<td data-value="26" class="abs low">12/26</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="8" class="abs low">2/8</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="46.15" class="pct low">46.15%</td>
<td data-value="26" class="abs low">12/26</td>
</tr>
<tr>
<td class="file high" data-value="lib/config/builder">
<a href="lib/config/builder/index.html">lib/config/builder</a>
</td>
<td data-value="84.61" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 84%"></div>
<div class="cover-empty" style="width: 16%"></div>
</div>
</td>
<td data-value="84.61" class="pct high">84.61%</td>
<td data-value="117" class="abs high">99/117</td>
<td data-value="55.17" class="pct medium">55.17%</td>
<td data-value="29" class="abs medium">16/29</td>
<td data-value="78.26" class="pct medium">78.26%</td>
<td data-value="69" class="abs medium">54/69</td>
<td data-value="84.34" class="pct high">84.34%</td>
<td data-value="115" class="abs high">97/115</td>
</tr>
<tr>
<td class="file low" data-value="lib/dependencies">
<a href="lib/dependencies/index.html">lib/dependencies</a>
</td>
<td data-value="9.67" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 9%"></div>
<div class="cover-empty" style="width: 91%"></div>
</div>
</td>
<td data-value="9.67" class="pct low">9.67%</td>
<td data-value="93" class="abs low">9/93</td>
<td data-value="1.78" class="pct low">1.78%</td>
<td data-value="56" class="abs low">1/56</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="32" class="abs low">2/32</td>
<td data-value="10" class="pct low">10%</td>
<td data-value="90" class="abs low">9/90</td>
</tr>
<tr>
<td class="file medium" data-value="lib/exver">
<a href="lib/exver/index.html">lib/exver</a>
</td>
<td data-value="71.73" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 71%"></div>
<div class="cover-empty" style="width: 29%"></div>
</div>
</td>
<td data-value="71.73" class="pct medium">71.73%</td>
<td data-value="994" class="abs medium">713/994</td>
<td data-value="63.29" class="pct medium">63.29%</td>
<td data-value="395" class="abs medium">250/395</td>
<td data-value="71.65" class="pct medium">71.65%</td>
<td data-value="127" class="abs medium">91/127</td>
<td data-value="71.77" class="pct medium">71.77%</td>
<td data-value="946" class="abs medium">679/946</td>
</tr>
<tr>
<td class="file low" data-value="lib/health">
<a href="lib/health/index.html">lib/health</a>
</td>
<td data-value="17.24" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 17%"></div>
<div class="cover-empty" style="width: 83%"></div>
</div>
</td>
<td data-value="17.24" class="pct low">17.24%</td>
<td data-value="29" class="abs low">5/29</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="12" class="abs low">0/12</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="19.23" class="pct low">19.23%</td>
<td data-value="26" class="abs low">5/26</td>
</tr>
<tr>
<td class="file medium" data-value="lib/health/checkFns">
<a href="lib/health/checkFns/index.html">lib/health/checkFns</a>
</td>
<td data-value="53.06" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 53%"></div>
<div class="cover-empty" style="width: 47%"></div>
</div>
</td>
<td data-value="53.06" class="pct medium">53.06%</td>
<td data-value="49" class="abs medium">26/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="17" class="abs low">0/17</td>
<td data-value="26.31" class="pct low">26.31%</td>
<td data-value="19" class="abs low">5/19</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="44" class="abs medium">22/44</td>
</tr>
<tr>
<td class="file low" data-value="lib/inits">
<a href="lib/inits/index.html">lib/inits</a>
</td>
<td data-value="20.68" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 20%"></div>
<div class="cover-empty" style="width: 80%"></div>
</div>
</td>
<td data-value="20.68" class="pct low">20.68%</td>
<td data-value="29" class="abs low">6/29</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="20.68" class="pct low">20.68%</td>
<td data-value="29" class="abs low">6/29</td>
</tr>
<tr>
<td class="file low" data-value="lib/interfaces">
<a href="lib/interfaces/index.html">lib/interfaces</a>
</td>
<td data-value="22.44" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 22%"></div>
<div class="cover-empty" style="width: 78%"></div>
</div>
</td>
<td data-value="22.44" class="pct low">22.44%</td>
<td data-value="49" class="abs low">11/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="24" class="abs low">0/24</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="13" class="abs low">0/13</td>
<td data-value="22.22" class="pct low">22.22%</td>
<td data-value="45" class="abs low">10/45</td>
</tr>
<tr>
<td class="file low" data-value="lib/mainFn">
<a href="lib/mainFn/index.html">lib/mainFn</a>
</td>
<td data-value="15.78" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 15%"></div>
<div class="cover-empty" style="width: 85%"></div>
</div>
</td>
<td data-value="15.78" class="pct low">15.78%</td>
<td data-value="228" class="abs low">36/228</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="38" class="abs low">0/38</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="77" class="abs low">0/77</td>
<td data-value="15.16" class="pct low">15.16%</td>
<td data-value="211" class="abs low">32/211</td>
</tr>
<tr>
<td class="file low" data-value="lib/manifest">
<a href="lib/manifest/index.html">lib/manifest</a>
</td>
<td data-value="25" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 25%"></div>
<div class="cover-empty" style="width: 75%"></div>
</div>
</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="16" class="abs low">4/16</td>
<td data-value="65.51" class="pct medium">65.51%</td>
<td data-value="29" class="abs medium">19/29</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="26.66" class="pct low">26.66%</td>
<td data-value="15" class="abs low">4/15</td>
</tr>
<tr>
<td class="file low" data-value="lib/store">
<a href="lib/store/index.html">lib/store</a>
</td>
<td data-value="35.71" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 35%"></div>
<div class="cover-empty" style="width: 65%"></div>
</div>
</td>
<td data-value="35.71" class="pct low">35.71%</td>
<td data-value="28" class="abs low">10/28</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="10" class="pct low">10%</td>
<td data-value="10" class="abs low">1/10</td>
<td data-value="32" class="pct low">32%</td>
<td data-value="25" class="abs low">8/25</td>
</tr>
<tr>
<td class="file high" data-value="lib/test">
<a href="lib/test/index.html">lib/test</a>
</td>
<td data-value="100" class="pic high">
<div class="chart">
<div class="cover-fill cover-full" style="width: 100%"></div>
<div class="cover-empty" style="width: 0%"></div>
</div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
</tr>
<tr>
<td class="file low" data-value="lib/trigger">
<a href="lib/trigger/index.html">lib/trigger</a>
</td>
<td data-value="30.61" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 30%"></div>
<div class="cover-empty" style="width: 70%"></div>
</div>
</td>
<td data-value="30.61" class="pct low">30.61%</td>
<td data-value="49" class="abs low">15/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="40" class="pct low">40%</td>
<td data-value="10" class="abs low">4/10</td>
<td data-value="26.66" class="pct low">26.66%</td>
<td data-value="45" class="abs low">12/45</td>
</tr>
<tr>
<td class="file low" data-value="lib/util">
<a href="lib/util/index.html">lib/util</a>
</td>
<td data-value="36.83" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 36%"></div>
<div class="cover-empty" style="width: 64%"></div>
</div>
</td>
<td data-value="36.83" class="pct low">36.83%</td>
<td data-value="695" class="abs low">256/695</td>
<td data-value="12.2" class="pct low">12.2%</td>
<td data-value="213" class="abs low">26/213</td>
<td data-value="17.96" class="pct low">17.96%</td>
<td data-value="167" class="abs low">30/167</td>
<td data-value="36.29" class="pct low">36.29%</td>
<td data-value="642" class="abs low">233/642</td>
</tr>
<tr>
<td class="file medium" data-value="lib/version">
<a href="lib/version/index.html">lib/version</a>
</td>
<td data-value="62.82" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 62%"></div>
<div class="cover-empty" style="width: 38%"></div>
</div>
</td>
<td data-value="62.82" class="pct medium">62.82%</td>
<td data-value="78" class="abs medium">49/78</td>
<td data-value="51.35" class="pct medium">51.35%</td>
<td data-value="37" class="abs medium">19/37</td>
<td data-value="68.42" class="pct medium">68.42%</td>
<td data-value="19" class="abs medium">13/19</td>
<td data-value="63.63" class="pct medium">63.63%</td>
<td data-value="77" class="abs medium">49/77</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="lib"><a href="lib/index.html">lib</a></td>
<td data-value="40.27" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 40%"></div><div class="cover-empty" style="width: 60%"></div></div>
</td>
<td data-value="40.27" class="pct low">40.27%</td>
<td data-value="144" class="abs low">58/144</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="85" class="abs low">10/85</td>
<td data-value="40.27" class="pct low">40.27%</td>
<td data-value="144" class="abs low">58/144</td>
</tr>
<tr>
<td class="file low" data-value="lib/actions"><a href="lib/actions/index.html">lib/actions</a></td>
<td data-value="10.71" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 10%"></div><div class="cover-empty" style="width: 90%"></div></div>
</td>
<td data-value="10.71" class="pct low">10.71%</td>
<td data-value="28" class="abs low">3/28</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="12" class="abs low">0/12</td>
<td data-value="10.71" class="pct low">10.71%</td>
<td data-value="28" class="abs low">3/28</td>
</tr>
<tr>
<td class="file low" data-value="lib/backup"><a href="lib/backup/index.html">lib/backup</a></td>
<td data-value="8.79" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
</td>
<td data-value="8.79" class="pct low">8.79%</td>
<td data-value="91" class="abs low">8/91</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="27" class="abs low">0/27</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="88" class="abs low">8/88</td>
</tr>
<tr>
<td class="file low" data-value="lib/config"><a href="lib/config/index.html">lib/config</a></td>
<td data-value="46.15" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 46%"></div><div class="cover-empty" style="width: 54%"></div></div>
</td>
<td data-value="46.15" class="pct low">46.15%</td>
<td data-value="26" class="abs low">12/26</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="8" class="abs low">2/8</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="46.15" class="pct low">46.15%</td>
<td data-value="26" class="abs low">12/26</td>
</tr>
<tr>
<td class="file high" data-value="lib/config/builder"><a href="lib/config/builder/index.html">lib/config/builder</a></td>
<td data-value="84.61" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
</td>
<td data-value="84.61" class="pct high">84.61%</td>
<td data-value="117" class="abs high">99/117</td>
<td data-value="55.17" class="pct medium">55.17%</td>
<td data-value="29" class="abs medium">16/29</td>
<td data-value="78.26" class="pct medium">78.26%</td>
<td data-value="69" class="abs medium">54/69</td>
<td data-value="84.34" class="pct high">84.34%</td>
<td data-value="115" class="abs high">97/115</td>
</tr>
<tr>
<td class="file low" data-value="lib/dependencies"><a href="lib/dependencies/index.html">lib/dependencies</a></td>
<td data-value="9.67" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 9%"></div><div class="cover-empty" style="width: 91%"></div></div>
</td>
<td data-value="9.67" class="pct low">9.67%</td>
<td data-value="93" class="abs low">9/93</td>
<td data-value="1.78" class="pct low">1.78%</td>
<td data-value="56" class="abs low">1/56</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="32" class="abs low">2/32</td>
<td data-value="10" class="pct low">10%</td>
<td data-value="90" class="abs low">9/90</td>
</tr>
<tr>
<td class="file medium" data-value="lib/exver"><a href="lib/exver/index.html">lib/exver</a></td>
<td data-value="71.73" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
</td>
<td data-value="71.73" class="pct medium">71.73%</td>
<td data-value="994" class="abs medium">713/994</td>
<td data-value="63.29" class="pct medium">63.29%</td>
<td data-value="395" class="abs medium">250/395</td>
<td data-value="71.65" class="pct medium">71.65%</td>
<td data-value="127" class="abs medium">91/127</td>
<td data-value="71.77" class="pct medium">71.77%</td>
<td data-value="946" class="abs medium">679/946</td>
</tr>
<tr>
<td class="file low" data-value="lib/health"><a href="lib/health/index.html">lib/health</a></td>
<td data-value="17.24" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 17%"></div><div class="cover-empty" style="width: 83%"></div></div>
</td>
<td data-value="17.24" class="pct low">17.24%</td>
<td data-value="29" class="abs low">5/29</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="12" class="abs low">0/12</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="19.23" class="pct low">19.23%</td>
<td data-value="26" class="abs low">5/26</td>
</tr>
<tr>
<td class="file medium" data-value="lib/health/checkFns"><a href="lib/health/checkFns/index.html">lib/health/checkFns</a></td>
<td data-value="53.06" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 53%"></div><div class="cover-empty" style="width: 47%"></div></div>
</td>
<td data-value="53.06" class="pct medium">53.06%</td>
<td data-value="49" class="abs medium">26/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="17" class="abs low">0/17</td>
<td data-value="26.31" class="pct low">26.31%</td>
<td data-value="19" class="abs low">5/19</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="44" class="abs medium">22/44</td>
</tr>
<tr>
<td class="file low" data-value="lib/inits"><a href="lib/inits/index.html">lib/inits</a></td>
<td data-value="20.68" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 20%"></div><div class="cover-empty" style="width: 80%"></div></div>
</td>
<td data-value="20.68" class="pct low">20.68%</td>
<td data-value="29" class="abs low">6/29</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="20.68" class="pct low">20.68%</td>
<td data-value="29" class="abs low">6/29</td>
</tr>
<tr>
<td class="file low" data-value="lib/interfaces"><a href="lib/interfaces/index.html">lib/interfaces</a></td>
<td data-value="22.44" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 22%"></div><div class="cover-empty" style="width: 78%"></div></div>
</td>
<td data-value="22.44" class="pct low">22.44%</td>
<td data-value="49" class="abs low">11/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="24" class="abs low">0/24</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="13" class="abs low">0/13</td>
<td data-value="22.22" class="pct low">22.22%</td>
<td data-value="45" class="abs low">10/45</td>
</tr>
<tr>
<td class="file low" data-value="lib/mainFn"><a href="lib/mainFn/index.html">lib/mainFn</a></td>
<td data-value="15.78" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 15%"></div><div class="cover-empty" style="width: 85%"></div></div>
</td>
<td data-value="15.78" class="pct low">15.78%</td>
<td data-value="228" class="abs low">36/228</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="38" class="abs low">0/38</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="77" class="abs low">0/77</td>
<td data-value="15.16" class="pct low">15.16%</td>
<td data-value="211" class="abs low">32/211</td>
</tr>
<tr>
<td class="file low" data-value="lib/manifest"><a href="lib/manifest/index.html">lib/manifest</a></td>
<td data-value="25" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 25%"></div><div class="cover-empty" style="width: 75%"></div></div>
</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="16" class="abs low">4/16</td>
<td data-value="65.51" class="pct medium">65.51%</td>
<td data-value="29" class="abs medium">19/29</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="26.66" class="pct low">26.66%</td>
<td data-value="15" class="abs low">4/15</td>
</tr>
<tr>
<td class="file low" data-value="lib/store"><a href="lib/store/index.html">lib/store</a></td>
<td data-value="35.71" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 35%"></div><div class="cover-empty" style="width: 65%"></div></div>
</td>
<td data-value="35.71" class="pct low">35.71%</td>
<td data-value="28" class="abs low">10/28</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="5" class="abs low">1/5</td>
<td data-value="10" class="pct low">10%</td>
<td data-value="10" class="abs low">1/10</td>
<td data-value="32" class="pct low">32%</td>
<td data-value="25" class="abs low">8/25</td>
</tr>
<tr>
<td class="file high" data-value="lib/test"><a href="lib/test/index.html">lib/test</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
</tr>
<tr>
<td class="file low" data-value="lib/trigger"><a href="lib/trigger/index.html">lib/trigger</a></td>
<td data-value="30.61" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 30%"></div><div class="cover-empty" style="width: 70%"></div></div>
</td>
<td data-value="30.61" class="pct low">30.61%</td>
<td data-value="49" class="abs low">15/49</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="40" class="pct low">40%</td>
<td data-value="10" class="abs low">4/10</td>
<td data-value="26.66" class="pct low">26.66%</td>
<td data-value="45" class="abs low">12/45</td>
</tr>
<tr>
<td class="file low" data-value="lib/util"><a href="lib/util/index.html">lib/util</a></td>
<td data-value="36.83" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 36%"></div><div class="cover-empty" style="width: 64%"></div></div>
</td>
<td data-value="36.83" class="pct low">36.83%</td>
<td data-value="695" class="abs low">256/695</td>
<td data-value="12.2" class="pct low">12.2%</td>
<td data-value="213" class="abs low">26/213</td>
<td data-value="17.96" class="pct low">17.96%</td>
<td data-value="167" class="abs low">30/167</td>
<td data-value="36.29" class="pct low">36.29%</td>
<td data-value="642" class="abs low">233/642</td>
</tr>
<tr>
<td class="file medium" data-value="lib/version"><a href="lib/version/index.html">lib/version</a></td>
<td data-value="62.82" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
</td>
<td data-value="62.82" class="pct medium">62.82%</td>
<td data-value="78" class="abs medium">49/78</td>
<td data-value="51.35" class="pct medium">51.35%</td>
<td data-value="37" class="abs medium">19/37</td>
<td data-value="68.42" class="pct medium">68.42%</td>
<td data-value="19" class="abs medium">13/19</td>
<td data-value="63.63" class="pct medium">63.63%</td>
<td data-value="77" class="abs medium">49/77</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for interfaces/Host.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">interfaces</a> Host.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">22.22% </span>
<span class="quiet">Statements</span>
<span class='fraction'>6/27</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">24% </span>
<span class="quiet">Lines</span>
<span class='fraction'>6/25</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">interfaces</a> Host.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">22.22% </span>
<span class="quiet">Statements</span>
<span class="fraction">6/27</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/18</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">24% </span>
<span class="quiet">Lines</span>
<span class="fraction">6/25</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -647,21 +643,27 @@ export class MultiHost extends Host {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for interfaces/Origin.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">interfaces</a> Origin.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">6.25% </span>
<span class="quiet">Statements</span>
<span class='fraction'>1/16</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">6.25% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1/16</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">interfaces</a> Origin.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">6.25% </span>
<span class="quiet">Statements</span>
<span class="fraction">1/16</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/6</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">6.25% </span>
<span class="quiet">Lines</span>
<span class="fraction">1/16</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -335,21 +331,27 @@ type BuildOptions = {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,131 +1,196 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for interfaces</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../index.html">All files</a> interfaces</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">16.27% </span>
<span class="quiet">Statements</span>
<span class='fraction'>7/43</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/24</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">17.07% </span>
<span class="quiet">Lines</span>
<span class='fraction'>7/41</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">16.27% </span>
<span class="quiet">Statements</span>
<span class="fraction">7/43</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/24</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/11</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">17.07% </span>
<span class="quiet">Lines</span>
<span class="fraction">7/41</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file low" data-value="Host.ts">
<a href="Host.ts.html">Host.ts</a>
</td>
<td data-value="22.22" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 22%"></div>
<div class="cover-empty" style="width: 78%"></div>
</div>
</td>
<td data-value="22.22" class="pct low">22.22%</td>
<td data-value="27" class="abs low">6/27</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="18" class="abs low">0/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="24" class="pct low">24%</td>
<td data-value="25" class="abs low">6/25</td>
</tr>
<tr>
<td class="file low" data-value="Origin.ts">
<a href="Origin.ts.html">Origin.ts</a>
</td>
<td data-value="6.25" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 6%"></div>
<div class="cover-empty" style="width: 94%"></div>
</div>
</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="16" class="abs low">1/16</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="4" class="abs low">0/4</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="16" class="abs low">1/16</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="Host.ts"><a href="Host.ts.html">Host.ts</a></td>
<td data-value="22.22" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 22%"></div><div class="cover-empty" style="width: 78%"></div></div>
</td>
<td data-value="22.22" class="pct low">22.22%</td>
<td data-value="27" class="abs low">6/27</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="18" class="abs low">0/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="24" class="pct low">24%</td>
<td data-value="25" class="abs low">6/25</td>
</tr>
<tr>
<td class="file low" data-value="Origin.ts"><a href="Origin.ts.html">Origin.ts</a></td>
<td data-value="6.25" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 6%"></div><div class="cover-empty" style="width: 94%"></div></div>
</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="16" class="abs low">1/16</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="6" class="abs low">0/6</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="4" class="abs low">0/4</td>
<td data-value="6.25" class="pct low">6.25%</td>
<td data-value="16" class="abs low">1/16</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-07-04T02:41:23.401Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/Dependency.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">lib</a> Dependency.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">50% </span>
<span class="quiet">Statements</span>
<span class='fraction'>1/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">50% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1/2</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">lib</a> Dependency.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">50% </span>
<span class="quiet">Statements</span>
<span class="fraction">1/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">50% </span>
<span class="quiet">Lines</span>
<span class="fraction">1/2</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -119,21 +115,27 @@ export class Dependency {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/StartSdk.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">lib</a> StartSdk.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">40.14% </span>
<span class="quiet">Statements</span>
<span class='fraction'>57/142</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">11.9% </span>
<span class="quiet">Functions</span>
<span class='fraction'>10/84</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">40.14% </span>
<span class="quiet">Lines</span>
<span class='fraction'>57/142</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../index.html">All files</a> /
<a href="index.html">lib</a> StartSdk.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">40.14% </span>
<span class="quiet">Statements</span>
<span class="fraction">57/142</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/11</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">11.9% </span>
<span class="quiet">Functions</span>
<span class="fraction">10/84</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">40.14% </span>
<span class="quiet">Lines</span>
<span class="fraction">57/142</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -2477,21 +2473,27 @@ function <span class="fstat-no" title="function not covered" >nullifyProperties_
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/actions/createAction.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/actions</a> createAction.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">11.76% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/17</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">11.76% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/17</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/actions</a> createAction.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">11.76% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/17</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">11.76% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/17</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -332,21 +328,27 @@ export class CreatedAction&lt;
export const createAction = CreatedAction.of
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,131 +1,196 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/actions</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/actions</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">10.71% </span>
<span class="quiet">Statements</span>
<span class='fraction'>3/28</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/12</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">10.71% </span>
<span class="quiet">Lines</span>
<span class='fraction'>3/28</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">10.71% </span>
<span class="quiet">Statements</span>
<span class="fraction">3/28</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/12</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">10.71% </span>
<span class="quiet">Lines</span>
<span class="fraction">3/28</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file low" data-value="createAction.ts">
<a href="createAction.ts.html">createAction.ts</a>
</td>
<td data-value="11.76" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 11%"></div>
<div class="cover-empty" style="width: 89%"></div>
</div>
</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="17" class="abs low">2/17</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="17" class="abs low">2/17</td>
</tr>
<tr>
<td class="file low" data-value="setupActions.ts">
<a href="setupActions.ts.html">setupActions.ts</a>
</td>
<td data-value="9.09" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 9%"></div>
<div class="cover-empty" style="width: 91%"></div>
</div>
</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="11" class="abs low">1/11</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="11" class="abs low">1/11</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="createAction.ts"><a href="createAction.ts.html">createAction.ts</a></td>
<td data-value="11.76" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 11%"></div><div class="cover-empty" style="width: 89%"></div></div>
</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="17" class="abs low">2/17</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="7" class="abs low">0/7</td>
<td data-value="11.76" class="pct low">11.76%</td>
<td data-value="17" class="abs low">2/17</td>
</tr>
<tr>
<td class="file low" data-value="setupActions.ts"><a href="setupActions.ts.html">setupActions.ts</a></td>
<td data-value="9.09" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 9%"></div><div class="cover-empty" style="width: 91%"></div></div>
</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="11" class="abs low">1/11</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="11" class="abs low">1/11</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/actions/setupActions.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/actions</a> setupActions.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">9.09% </span>
<span class="quiet">Statements</span>
<span class='fraction'>1/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">9.09% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1/11</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/actions</a> setupActions.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">9.09% </span>
<span class="quiet">Statements</span>
<span class="fraction">1/11</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/5</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">9.09% </span>
<span class="quiet">Lines</span>
<span class="fraction">1/11</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -152,21 +148,27 @@ export function <span class="fstat-no" title="function not covered" >setupAction
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/backup/Backups.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/backup</a> Backups.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">8.21% </span>
<span class="quiet">Statements</span>
<span class='fraction'>6/73</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/22</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">8.57% </span>
<span class="quiet">Lines</span>
<span class='fraction'>6/70</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/backup</a> Backups.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">8.21% </span>
<span class="quiet">Statements</span>
<span class="fraction">6/73</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/9</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/22</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">8.57% </span>
<span class="quiet">Lines</span>
<span class="fraction">6/70</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -692,21 +688,27 @@ async function <span class="fstat-no" title="function not covered" >runRsync(</s
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,131 +1,196 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/backup</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/backup</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">8.79% </span>
<span class="quiet">Statements</span>
<span class='fraction'>8/91</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/27</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">9.09% </span>
<span class="quiet">Lines</span>
<span class='fraction'>8/88</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">8.79% </span>
<span class="quiet">Statements</span>
<span class="fraction">8/91</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/11</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/27</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">9.09% </span>
<span class="quiet">Lines</span>
<span class="fraction">8/88</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file low" data-value="Backups.ts">
<a href="Backups.ts.html">Backups.ts</a>
</td>
<td data-value="8.21" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 8%"></div>
<div class="cover-empty" style="width: 92%"></div>
</div>
</td>
<td data-value="8.21" class="pct low">8.21%</td>
<td data-value="73" class="abs low">6/73</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="9" class="abs low">0/9</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="22" class="abs low">0/22</td>
<td data-value="8.57" class="pct low">8.57%</td>
<td data-value="70" class="abs low">6/70</td>
</tr>
<tr>
<td class="file low" data-value="setupBackups.ts">
<a href="setupBackups.ts.html">setupBackups.ts</a>
</td>
<td data-value="11.11" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 11%"></div>
<div class="cover-empty" style="width: 89%"></div>
</div>
</td>
<td data-value="11.11" class="pct low">11.11%</td>
<td data-value="18" class="abs low">2/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="11.11" class="pct low">11.11%</td>
<td data-value="18" class="abs low">2/18</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="Backups.ts"><a href="Backups.ts.html">Backups.ts</a></td>
<td data-value="8.21" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
</td>
<td data-value="8.21" class="pct low">8.21%</td>
<td data-value="73" class="abs low">6/73</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="9" class="abs low">0/9</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="22" class="abs low">0/22</td>
<td data-value="8.57" class="pct low">8.57%</td>
<td data-value="70" class="abs low">6/70</td>
</tr>
<tr>
<td class="file low" data-value="setupBackups.ts"><a href="setupBackups.ts.html">setupBackups.ts</a></td>
<td data-value="11.11" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 11%"></div><div class="cover-empty" style="width: 89%"></div></div>
</td>
<td data-value="11.11" class="pct low">11.11%</td>
<td data-value="18" class="abs low">2/18</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="11.11" class="pct low">11.11%</td>
<td data-value="18" class="abs low">2/18</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/backup/setupBackups.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/backup</a> setupBackups.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">11.11% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">11.11% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/18</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/backup</a> setupBackups.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">11.11% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/18</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/5</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">11.11% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/18</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -200,21 +196,27 @@ export function <span class="fstat-no" title="function not covered" >setupBackup
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/builder/config.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">lib/config/builder</a> config.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">92.85% </span>
<span class="quiet">Statements</span>
<span class='fraction'>13/14</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">75% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">92.85% </span>
<span class="quiet">Lines</span>
<span class='fraction'>13/14</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../../index.html">All files</a> /
<a href="index.html">lib/config/builder</a> config.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">92.85% </span>
<span class="quiet">Statements</span>
<span class="fraction">13/14</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">75% </span>
<span class="quiet">Functions</span>
<span class="fraction">3/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">92.85% </span>
<span class="quiet">Lines</span>
<span class="fraction">13/14</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -476,21 +472,27 @@ export class Config&lt;Type extends Record&lt;string, any&gt;, Store = never&gt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,161 +1,236 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/builder</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../../index.html">All files</a> lib/config/builder</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">84.61% </span>
<span class="quiet">Statements</span>
<span class='fraction'>99/117</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">55.17% </span>
<span class="quiet">Branches</span>
<span class='fraction'>16/29</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">78.26% </span>
<span class="quiet">Functions</span>
<span class='fraction'>54/69</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">84.34% </span>
<span class="quiet">Lines</span>
<span class='fraction'>97/115</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">84.61% </span>
<span class="quiet">Statements</span>
<span class="fraction">99/117</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">55.17% </span>
<span class="quiet">Branches</span>
<span class="fraction">16/29</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">78.26% </span>
<span class="quiet">Functions</span>
<span class="fraction">54/69</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">84.34% </span>
<span class="quiet">Lines</span>
<span class="fraction">97/115</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line high"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file high" data-value="config.ts">
<a href="config.ts.html">config.ts</a>
</td>
<td data-value="92.85" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 92%"></div>
<div class="cover-empty" style="width: 8%"></div>
</div>
</td>
<td data-value="92.85" class="pct high">92.85%</td>
<td data-value="14" class="abs high">13/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="75" class="pct medium">75%</td>
<td data-value="4" class="abs medium">3/4</td>
<td data-value="92.85" class="pct high">92.85%</td>
<td data-value="14" class="abs high">13/14</td>
</tr>
<tr>
<td class="file high" data-value="list.ts">
<a href="list.ts.html">list.ts</a>
</td>
<td data-value="95" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 95%"></div>
<div class="cover-empty" style="width: 5%"></div>
</div>
</td>
<td data-value="95" class="pct high">95%</td>
<td data-value="20" class="abs high">19/20</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="87.5" class="pct high">87.5%</td>
<td data-value="8" class="abs high">7/8</td>
<td data-value="95" class="pct high">95%</td>
<td data-value="20" class="abs high">19/20</td>
</tr>
<tr>
<td class="file medium" data-value="value.ts">
<a href="value.ts.html">value.ts</a>
</td>
<td data-value="78.57" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 78%"></div>
<div class="cover-empty" style="width: 22%"></div>
</div>
</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="70" class="abs medium">55/70</td>
<td data-value="55.17" class="pct medium">55.17%</td>
<td data-value="29" class="abs medium">16/29</td>
<td data-value="76.92" class="pct medium">76.92%</td>
<td data-value="52" class="abs medium">40/52</td>
<td data-value="77.94" class="pct medium">77.94%</td>
<td data-value="68" class="abs medium">53/68</td>
</tr>
<tr>
<td class="file high" data-value="variants.ts">
<a href="variants.ts.html">variants.ts</a>
</td>
<td data-value="92.3" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 92%"></div>
<div class="cover-empty" style="width: 8%"></div>
</div>
</td>
<td data-value="92.3" class="pct high">92.3%</td>
<td data-value="13" class="abs high">12/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="80" class="pct high">80%</td>
<td data-value="5" class="abs high">4/5</td>
<td data-value="92.3" class="pct high">92.3%</td>
<td data-value="13" class="abs high">12/13</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="config.ts"><a href="config.ts.html">config.ts</a></td>
<td data-value="92.85" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
</td>
<td data-value="92.85" class="pct high">92.85%</td>
<td data-value="14" class="abs high">13/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="75" class="pct medium">75%</td>
<td data-value="4" class="abs medium">3/4</td>
<td data-value="92.85" class="pct high">92.85%</td>
<td data-value="14" class="abs high">13/14</td>
</tr>
<tr>
<td class="file high" data-value="list.ts"><a href="list.ts.html">list.ts</a></td>
<td data-value="95" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
</td>
<td data-value="95" class="pct high">95%</td>
<td data-value="20" class="abs high">19/20</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="87.5" class="pct high">87.5%</td>
<td data-value="8" class="abs high">7/8</td>
<td data-value="95" class="pct high">95%</td>
<td data-value="20" class="abs high">19/20</td>
</tr>
<tr>
<td class="file medium" data-value="value.ts"><a href="value.ts.html">value.ts</a></td>
<td data-value="78.57" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
</td>
<td data-value="78.57" class="pct medium">78.57%</td>
<td data-value="70" class="abs medium">55/70</td>
<td data-value="55.17" class="pct medium">55.17%</td>
<td data-value="29" class="abs medium">16/29</td>
<td data-value="76.92" class="pct medium">76.92%</td>
<td data-value="52" class="abs medium">40/52</td>
<td data-value="77.94" class="pct medium">77.94%</td>
<td data-value="68" class="abs medium">53/68</td>
</tr>
<tr>
<td class="file high" data-value="variants.ts"><a href="variants.ts.html">variants.ts</a></td>
<td data-value="92.3" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
</td>
<td data-value="92.3" class="pct high">92.3%</td>
<td data-value="13" class="abs high">12/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="80" class="pct high">80%</td>
<td data-value="5" class="abs high">4/5</td>
<td data-value="92.3" class="pct high">92.3%</td>
<td data-value="13" class="abs high">12/13</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/builder/list.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">lib/config/builder</a> list.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">95% </span>
<span class="quiet">Statements</span>
<span class='fraction'>19/20</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">87.5% </span>
<span class="quiet">Functions</span>
<span class='fraction'>7/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">95% </span>
<span class="quiet">Lines</span>
<span class='fraction'>19/20</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../../index.html">All files</a> /
<a href="index.html">lib/config/builder</a> list.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">95% </span>
<span class="quiet">Statements</span>
<span class="fraction">19/20</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">87.5% </span>
<span class="quiet">Functions</span>
<span class="fraction">7/8</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">95% </span>
<span class="quiet">Lines</span>
<span class="fraction">19/20</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -629,21 +625,27 @@ export class List&lt;Type, Store&gt; {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/builder/value.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">lib/config/builder</a> value.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">78.57% </span>
<span class="quiet">Statements</span>
<span class='fraction'>55/70</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">55.17% </span>
<span class="quiet">Branches</span>
<span class='fraction'>16/29</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">76.92% </span>
<span class="quiet">Functions</span>
<span class='fraction'>40/52</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">77.94% </span>
<span class="quiet">Lines</span>
<span class='fraction'>53/68</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../../index.html">All files</a> /
<a href="index.html">lib/config/builder</a> value.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">78.57% </span>
<span class="quiet">Statements</span>
<span class="fraction">55/70</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">55.17% </span>
<span class="quiet">Branches</span>
<span class="fraction">16/29</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">76.92% </span>
<span class="quiet">Functions</span>
<span class="fraction">40/52</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">77.94% </span>
<span class="quiet">Lines</span>
<span class="fraction">53/68</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -2414,21 +2410,27 @@ export class Value&lt;Type, Store&gt; {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/builder/variants.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">lib/config/builder</a> variants.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">92.3% </span>
<span class="quiet">Statements</span>
<span class='fraction'>12/13</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">80% </span>
<span class="quiet">Functions</span>
<span class='fraction'>4/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">92.3% </span>
<span class="quiet">Lines</span>
<span class='fraction'>12/13</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../../index.html">All files</a> /
<a href="index.html">lib/config/builder</a> variants.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">92.3% </span>
<span class="quiet">Statements</span>
<span class="fraction">12/13</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">80% </span>
<span class="quiet">Functions</span>
<span class="fraction">4/5</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">92.3% </span>
<span class="quiet">Lines</span>
<span class="fraction">12/13</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -425,21 +421,27 @@ export class Variants&lt;Type, Store&gt; {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/configConstants.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/config</a> configConstants.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">77.77% </span>
<span class="quiet">Statements</span>
<span class='fraction'>7/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">77.77% </span>
<span class="quiet">Lines</span>
<span class='fraction'>7/9</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/config</a> configConstants.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">77.77% </span>
<span class="quiet">Statements</span>
<span class="fraction">7/9</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">77.77% </span>
<span class="quiet">Lines</span>
<span class="fraction">7/9</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -308,21 +304,27 @@ export const smtpConfig = Value.filteredUnion(
)
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/configDependencies.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/config</a> configDependencies.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">40% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">25% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1/4</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/config</a> configDependencies.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">40% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/5</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">25% </span>
<span class="quiet">Lines</span>
<span class="fraction">1/4</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -143,21 +139,27 @@ export const configDependenciesSet = <span class="fstat-no" title="function not
})
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/configTypes.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/config</a> configTypes.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/2</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/config</a> configTypes.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/2</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -881,21 +877,27 @@ export function isValueSpecListOf&lt;S extends ListValueSpecType&gt;(
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,146 +1,216 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/config</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">46.15% </span>
<span class="quiet">Statements</span>
<span class='fraction'>12/26</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">25% </span>
<span class="quiet">Branches</span>
<span class='fraction'>2/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">20% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">46.15% </span>
<span class="quiet">Lines</span>
<span class='fraction'>12/26</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">46.15% </span>
<span class="quiet">Statements</span>
<span class="fraction">12/26</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">25% </span>
<span class="quiet">Branches</span>
<span class="fraction">2/8</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">20% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/5</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">46.15% </span>
<span class="quiet">Lines</span>
<span class="fraction">12/26</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file medium" data-value="configConstants.ts">
<a href="configConstants.ts.html">configConstants.ts</a>
</td>
<td data-value="77.77" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 77%"></div>
<div class="cover-empty" style="width: 23%"></div>
</div>
</td>
<td data-value="77.77" class="pct medium">77.77%</td>
<td data-value="9" class="abs medium">7/9</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="1" class="abs low">0/1</td>
<td data-value="77.77" class="pct medium">77.77%</td>
<td data-value="9" class="abs medium">7/9</td>
</tr>
<tr>
<td class="file high" data-value="configTypes.ts">
<a href="configTypes.ts.html">configTypes.ts</a>
</td>
<td data-value="100" class="pic high">
<div class="chart">
<div class="cover-fill cover-full" style="width: 100%"></div>
<div class="cover-empty" style="width: 0%"></div>
</div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
<tr>
<td class="file low" data-value="setupConfig.ts">
<a href="setupConfig.ts.html">setupConfig.ts</a>
</td>
<td data-value="20" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 20%"></div>
<div class="cover-empty" style="width: 80%"></div>
</div>
</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="15" class="abs low">3/15</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="4" class="abs low">0/4</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="3" class="abs low">0/3</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="15" class="abs low">3/15</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file medium" data-value="configConstants.ts"><a href="configConstants.ts.html">configConstants.ts</a></td>
<td data-value="77.77" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
</td>
<td data-value="77.77" class="pct medium">77.77%</td>
<td data-value="9" class="abs medium">7/9</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="1" class="abs low">0/1</td>
<td data-value="77.77" class="pct medium">77.77%</td>
<td data-value="9" class="abs medium">7/9</td>
</tr>
<tr>
<td class="file high" data-value="configTypes.ts"><a href="configTypes.ts.html">configTypes.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
<tr>
<td class="file low" data-value="setupConfig.ts"><a href="setupConfig.ts.html">setupConfig.ts</a></td>
<td data-value="20" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 20%"></div><div class="cover-empty" style="width: 80%"></div></div>
</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="15" class="abs low">3/15</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="4" class="abs low">0/4</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="3" class="abs low">0/3</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="15" class="abs low">3/15</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/config/setupConfig.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/config</a> setupConfig.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">20% </span>
<span class="quiet">Statements</span>
<span class='fraction'>3/15</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">20% </span>
<span class="quiet">Lines</span>
<span class='fraction'>3/15</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/config</a> setupConfig.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">20% </span>
<span class="quiet">Statements</span>
<span class="fraction">3/15</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">20% </span>
<span class="quiet">Lines</span>
<span class="fraction">3/15</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -326,21 +322,27 @@ export function <span class="fstat-no" title="function not covered" >setupConfig
export default setupConfig
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/dependencies/DependencyConfig.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/dependencies</a> DependencyConfig.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">71.42% </span>
<span class="quiet">Statements</span>
<span class='fraction'>5/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">71.42% </span>
<span class="quiet">Lines</span>
<span class='fraction'>5/7</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/dependencies</a> DependencyConfig.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">71.42% </span>
<span class="quiet">Statements</span>
<span class="fraction">5/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class="fraction">1/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">33.33% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">71.42% </span>
<span class="quiet">Lines</span>
<span class="fraction">5/7</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -182,21 +178,27 @@ export class DependencyConfig&lt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/dependencies/dependencies.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/dependencies</a> dependencies.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">2.38% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/84</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/53</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/28</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">2.46% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/81</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/dependencies</a> dependencies.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">2.38% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/84</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/53</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class="fraction">0/28</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">2.46% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/81</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
</div>
<div class="status-line low"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -683,21 +679,27 @@ export async function <span class="fstat-no" title="function not covered" >check
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,146 +1,218 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/dependencies</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/dependencies</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">9.67% </span>
<span class="quiet">Statements</span>
<span class='fraction'>9/93</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">1.78% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/56</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">6.25% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/32</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">10% </span>
<span class="quiet">Lines</span>
<span class='fraction'>9/90</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">9.67% </span>
<span class="quiet">Statements</span>
<span class="fraction">9/93</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">1.78% </span>
<span class="quiet">Branches</span>
<span class="fraction">1/56</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">6.25% </span>
<span class="quiet">Functions</span>
<span class="fraction">2/32</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">10% </span>
<span class="quiet">Lines</span>
<span class="fraction">9/90</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line low"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file medium" data-value="DependencyConfig.ts">
<a href="DependencyConfig.ts.html">DependencyConfig.ts</a>
</td>
<td data-value="71.42" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 71%"></div>
<div class="cover-empty" style="width: 29%"></div>
</div>
</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
</tr>
<tr>
<td class="file low" data-value="dependencies.ts">
<a href="dependencies.ts.html">dependencies.ts</a>
</td>
<td data-value="2.38" class="pic low">
<div class="chart">
<div class="cover-fill" style="width: 2%"></div>
<div class="cover-empty" style="width: 98%"></div>
</div>
</td>
<td data-value="2.38" class="pct low">2.38%</td>
<td data-value="84" class="abs low">2/84</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="53" class="abs low">0/53</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="28" class="abs low">0/28</td>
<td data-value="2.46" class="pct low">2.46%</td>
<td data-value="81" class="abs low">2/81</td>
</tr>
<tr>
<td class="file high" data-value="setupDependencyConfig.ts">
<a href="setupDependencyConfig.ts.html"
>setupDependencyConfig.ts</a
>
</td>
<td data-value="100" class="pic high">
<div class="chart">
<div class="cover-fill cover-full" style="width: 100%"></div>
<div class="cover-empty" style="width: 0%"></div>
</div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line low'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file medium" data-value="DependencyConfig.ts"><a href="DependencyConfig.ts.html">DependencyConfig.ts</a></td>
<td data-value="71.42" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
</tr>
<tr>
<td class="file low" data-value="dependencies.ts"><a href="dependencies.ts.html">dependencies.ts</a></td>
<td data-value="2.38" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 2%"></div><div class="cover-empty" style="width: 98%"></div></div>
</td>
<td data-value="2.38" class="pct low">2.38%</td>
<td data-value="84" class="abs low">2/84</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="53" class="abs low">0/53</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="28" class="abs low">0/28</td>
<td data-value="2.46" class="pct low">2.46%</td>
<td data-value="81" class="abs low">2/81</td>
</tr>
<tr>
<td class="file high" data-value="setupDependencyConfig.ts"><a href="setupDependencyConfig.ts.html">setupDependencyConfig.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,66 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for lib/dependencies/setupDependencyConfig.ts</title>
<head>
<title>
Code coverage report for lib/dependencies/setupDependencyConfig.ts
</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/dependencies</a> setupDependencyConfig.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/2</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/dependencies</a> setupDependencyConfig.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/2</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -131,21 +129,27 @@ export function setupDependencyConfig&lt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,66 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for lib/dependencyConfig/DependencyConfig.ts</title>
<head>
<title>
Code coverage report for lib/dependencyConfig/DependencyConfig.ts
</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/dependencyConfig</a> DependencyConfig.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">71.42% </span>
<span class="quiet">Statements</span>
<span class='fraction'>5/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">71.42% </span>
<span class="quiet">Lines</span>
<span class='fraction'>5/7</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/dependencyConfig</a> DependencyConfig.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">71.42% </span>
<span class="quiet">Statements</span>
<span class="fraction">5/7</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class="fraction">1/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">33.33% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">71.42% </span>
<span class="quiet">Lines</span>
<span class="fraction">5/7</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -197,21 +195,27 @@ export class DependencyConfig&lt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,131 +1,198 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/dependencyConfig</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/dependencyConfig</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">77.77% </span>
<span class="quiet">Statements</span>
<span class='fraction'>7/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">50% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">77.77% </span>
<span class="quiet">Lines</span>
<span class='fraction'>7/9</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">77.77% </span>
<span class="quiet">Statements</span>
<span class="fraction">7/9</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">33.33% </span>
<span class="quiet">Branches</span>
<span class="fraction">1/3</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">50% </span>
<span class="quiet">Functions</span>
<span class="fraction">2/4</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">77.77% </span>
<span class="quiet">Lines</span>
<span class="fraction">7/9</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line medium"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file medium" data-value="DependencyConfig.ts">
<a href="DependencyConfig.ts.html">DependencyConfig.ts</a>
</td>
<td data-value="71.42" class="pic medium">
<div class="chart">
<div class="cover-fill" style="width: 71%"></div>
<div class="cover-empty" style="width: 29%"></div>
</div>
</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
</tr>
<tr>
<td class="file high" data-value="setupDependencyConfig.ts">
<a href="setupDependencyConfig.ts.html"
>setupDependencyConfig.ts</a
>
</td>
<td data-value="100" class="pic high">
<div class="chart">
<div class="cover-fill cover-full" style="width: 100%"></div>
<div class="cover-empty" style="width: 0%"></div>
</div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line medium'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file medium" data-value="DependencyConfig.ts"><a href="DependencyConfig.ts.html">DependencyConfig.ts</a></td>
<td data-value="71.42" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="71.42" class="pct medium">71.42%</td>
<td data-value="7" class="abs medium">5/7</td>
</tr>
<tr>
<td class="file high" data-value="setupDependencyConfig.ts"><a href="setupDependencyConfig.ts.html">setupDependencyConfig.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,66 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for lib/dependencyConfig/setupDependencyConfig.ts</title>
<head>
<title>
Code coverage report for lib/dependencyConfig/setupDependencyConfig.ts
</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/dependencyConfig</a> setupDependencyConfig.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/2</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/dependencyConfig</a> setupDependencyConfig.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class="fraction">2/2</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class="fraction">0/0</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class="fraction">1/1</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class="fraction">2/2</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -131,21 +129,27 @@ export function setupDependencyConfig&lt;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,116 +1,176 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/emverLite</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1><a href="../../index.html">All files</a> lib/emverLite</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class='fraction'>129/133</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class='fraction'>34/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class='fraction'>40/41</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class='fraction'>125/128</span>
</div>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class="fraction">129/133</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class="fraction">34/37</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class="fraction">40/41</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class="fraction">125/128</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class="status-line high"></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">
File
</th>
<th
data-col="pic"
data-type="number"
data-fmt="html"
data-html="true"
class="pic"
></th>
<th
data-col="statements"
data-type="number"
data-fmt="pct"
class="pct"
>
Statements
</th>
<th
data-col="statements_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="branches"
data-type="number"
data-fmt="pct"
class="pct"
>
Branches
</th>
<th
data-col="branches_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="functions"
data-type="number"
data-fmt="pct"
class="pct"
>
Functions
</th>
<th
data-col="functions_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
<th
data-col="lines"
data-type="number"
data-fmt="pct"
class="pct"
>
Lines
</th>
<th
data-col="lines_raw"
data-type="number"
data-fmt="html"
class="abs"
></th>
</tr>
</thead>
<tbody>
<tr>
<td class="file high" data-value="mod.ts">
<a href="mod.ts.html">mod.ts</a>
</td>
<td data-value="96.99" class="pic high">
<div class="chart">
<div class="cover-fill" style="width: 96%"></div>
<div class="cover-empty" style="width: 4%"></div>
</div>
</td>
<td data-value="96.99" class="pct high">96.99%</td>
<td data-value="133" class="abs high">129/133</td>
<td data-value="91.89" class="pct high">91.89%</td>
<td data-value="37" class="abs high">34/37</td>
<td data-value="97.56" class="pct high">97.56%</td>
<td data-value="41" class="abs high">40/41</td>
<td data-value="97.65" class="pct high">97.65%</td>
<td data-value="128" class="abs high">125/128</td>
</tr>
</tbody>
</table>
</div>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="mod.ts"><a href="mod.ts.html">mod.ts</a></td>
<td data-value="96.99" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
</td>
<td data-value="96.99" class="pct high">96.99%</td>
<td data-value="133" class="abs high">129/133</td>
<td data-value="91.89" class="pct high">91.89%</td>
<td data-value="37" class="abs high">34/37</td>
<td data-value="97.56" class="pct high">97.56%</td>
<td data-value="41" class="abs high">40/41</td>
<td data-value="97.65" class="pct high">97.65%</td>
<td data-value="128" class="abs high">125/128</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/emverLite/mod.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/emverLite</a> mod.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class='fraction'>129/133</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class='fraction'>34/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class='fraction'>40/41</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class='fraction'>125/128</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/emverLite</a> mod.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">96.99% </span>
<span class="quiet">Statements</span>
<span class="fraction">129/133</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">91.89% </span>
<span class="quiet">Branches</span>
<span class="fraction">34/37</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.56% </span>
<span class="quiet">Functions</span>
<span class="fraction">40/41</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">97.65% </span>
<span class="quiet">Lines</span>
<span class="fraction">125/128</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
</div>
<div class="status-line high"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -1034,21 +1030,27 @@ export class Checker {
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-07T17:49:46.694Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

View File

@@ -1,68 +1,64 @@
<!doctype html>
<html lang="en">
<head>
<head>
<title>Code coverage report for lib/exver/exver.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
<style type="text/css">
.coverage-summary .sorter {
background-image: url(../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../index.html">All files</a> / <a href="index.html">lib/exver</a> exver.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">73.61% </span>
<span class="quiet">Statements</span>
<span class='fraction'>611/830</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">62.5% </span>
<span class="quiet">Branches</span>
<span class='fraction'>185/296</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">69.31% </span>
<span class="quiet">Functions</span>
<span class='fraction'>61/88</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">73.76% </span>
<span class="quiet">Lines</span>
<span class='fraction'>582/789</span>
</div>
</head>
<body>
<div class="wrapper">
<div class="pad1">
<h1>
<a href="../../index.html">All files</a> /
<a href="index.html">lib/exver</a> exver.ts
</h1>
<div class="clearfix">
<div class="fl pad1y space-right2">
<span class="strong">73.61% </span>
<span class="quiet">Statements</span>
<span class="fraction">611/830</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">62.5% </span>
<span class="quiet">Branches</span>
<span class="fraction">185/296</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">69.31% </span>
<span class="quiet">Functions</span>
<span class="fraction">61/88</span>
</div>
<div class="fl pad1y space-right2">
<span class="strong">73.76% </span>
<span class="quiet">Lines</span>
<span class="fraction">582/789</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch">
</div>
<div class="quiet">
Filter:
<input oninput="onInput()" type="search" id="fileSearch" />
</div>
</template>
</div>
<div class='status-line medium'></div>
<pre><table class="coverage">
</div>
<div class="status-line medium"></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -7586,21 +7582,27 @@ export type Digit = number;
export type _ = string[];
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
<div class="push"></div>
<!-- for sticky footer -->
</div>
<!-- /wrapper -->
<div class="footer quiet pad2 space-top1 center small">
Code coverage generated by
<a
href="https://istanbul.js.org/"
target="_blank"
rel="noopener noreferrer"
>istanbul</a
>
at 2024-08-28T21:46:45.516Z
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>

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