diff --git a/build/lib/scripts/forward-port b/build/lib/scripts/forward-port new file mode 100644 index 000000000..0f92f81d4 --- /dev/null +++ b/build/lib/scripts/forward-port @@ -0,0 +1,18 @@ +#!/bin/bash + +iptables -F +iptables -t nat -F + +iptables -t nat -A POSTROUTING -o $iiface -j MASQUERADE +iptables -t nat -A PREROUTING -i $iiface -p tcp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A PREROUTING -i $iiface -p udp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A PREROUTING -i $oiface -s 10.0.3.0/24 -d $sip -p tcp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A PREROUTING -i $oiface -s 10.0.3.0/24 -d $sip -p udp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A POSTROUTING -o $oiface -s 10.0.3.0/24 -d $dip/32 -p tcp --dport $dport -j SNAT --to-source $sip:$sport +iptables -t nat -A POSTROUTING -o $oiface -s 10.0.3.0/24 -d $dip/32 -p udp --dport $dport -j SNAT --to-source $sip:$sport + + +iptables -t nat -A PREROUTING -i $iiface -s $sip/32 -d $sip -p tcp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A PREROUTING -i $iiface -s $sip/32 -d $sip -p udp --dport $sport -j DNAT --to-destination $dip:$dport +iptables -t nat -A POSTROUTING -o $oiface -s $sip/32 -d $dip/32 -p tcp --dport $dport -j SNAT --to-source $sip:$sport +iptables -t nat -A POSTROUTING -o $oiface -s $sip/32 -d $dip/32 -p udp --dport $dport -j SNAT --to-source $sip:$sport \ No newline at end of file diff --git a/container-runtime/package-lock.json b/container-runtime/package-lock.json index 6c1f000c2..1c8018fc9 100644 --- a/container-runtime/package-lock.json +++ b/container-runtime/package-lock.json @@ -37,7 +37,7 @@ }, "../sdk/dist": { "name": "@start9labs/start-sdk", - "version": "0.4.0-beta.20", + "version": "0.4.0-beta.23", "license": "MIT", "dependencies": { "@iarna/toml": "^3.0.0", diff --git a/container-runtime/src/Adapters/EffectCreator.ts b/container-runtime/src/Adapters/EffectCreator.ts index aed7e68a1..6512b0d6c 100644 --- a/container-runtime/src/Adapters/EffectCreator.ts +++ b/container-runtime/src/Adapters/EffectCreator.ts @@ -1,4 +1,9 @@ -import { types as T, utils } from "@start9labs/start-sdk" +import { + ExtendedVersion, + types as T, + utils, + VersionRange, +} from "@start9labs/start-sdk" import * as net from "net" import { object, string, number, literals, some, unknown } from "ts-matches" import { Effects } from "../Models/Effects" @@ -133,22 +138,20 @@ export function makeEffects(context: EffectContext): Effects { ...options, }) as ReturnType }, - request(...[options]: Parameters) { - return rpcRound("action.request", { + createTask(...[options]: Parameters) { + return rpcRound("action.create-task", { ...options, - }) as ReturnType + }) as ReturnType }, run(...[options]: Parameters) { return rpcRound("action.run", { ...options, }) as ReturnType }, - clearRequests( - ...[options]: Parameters - ) { - return rpcRound("action.clear-requests", { + clearTasks(...[options]: Parameters) { + return rpcRound("action.clear-tasks", { ...options, - }) as ReturnType + }) as ReturnType }, }, bind(...[options]: Parameters) { diff --git a/container-runtime/src/Adapters/RpcListener.ts b/container-runtime/src/Adapters/RpcListener.ts index 23893a95f..77edf0d3a 100644 --- a/container-runtime/src/Adapters/RpcListener.ts +++ b/container-runtime/src/Adapters/RpcListener.ts @@ -12,9 +12,15 @@ import { any, shape, anyOf, + literals, } from "ts-matches" -import { types as T, utils } from "@start9labs/start-sdk" +import { + ExtendedVersion, + types as T, + utils, + VersionRange, +} from "@start9labs/start-sdk" import * as fs from "fs" import { CallbackHolder } from "../Models/CallbackHolder" @@ -80,6 +86,10 @@ const callbackType = object({ const initType = object({ id: idType.optional(), method: literal("init"), + params: object({ + id: string, + kind: literals("install", "update", "restore").nullable(), + }), }) const startType = object({ id: idType.optional(), @@ -92,6 +102,10 @@ const stopType = object({ const exitType = object({ id: idType.optional(), method: literal("exit"), + params: object({ + id: string, + target: string.nullable(), + }), }) const evalType = object({ id: idType.optional(), @@ -276,15 +290,29 @@ export class RpcListener { this.system.stop().then((result) => ({ result })), ) }) - .when(exitType, async ({ id }) => { + .when(exitType, async ({ id, params }) => { return handleRpc( id, (async () => { - if (this._system) await this._system.exit() + if (this._system) { + let target = null + if (params.target) + try { + target = ExtendedVersion.parse(params.target) + } catch (_) { + target = VersionRange.parse(params.target).normalize() + } + await this._system.exit( + makeEffects({ + procedureId: params.id, + }), + target, + ) + } })().then((result) => ({ result })), ) }) - .when(initType, async ({ id }) => { + .when(initType, async ({ id, params }) => { return handleRpc( id, (async () => { @@ -292,15 +320,16 @@ export class RpcListener { const system = await this.getDependencies.system() this.callbacks = new CallbackHolder( makeEffects({ - procedureId: null, + procedureId: params.id, }), ) - const callbacks = this.callbacks.child("containerInit") - await system.containerInit( + const callbacks = this.callbacks.child("init") + await system.init( makeEffects({ - procedureId: null, + procedureId: params.id, callbacks, }), + params.kind, ) this._system = system } @@ -387,16 +416,6 @@ export class RpcListener { switch (procedure) { case "/backup/create": return system.createBackup(effects, timeout || null) - case "/backup/restore": - return system.restoreBackup(effects, timeout || null) - case "/packageInit": - return system.packageInit(effects, timeout || null) - case "/packageUninit": - return system.packageUninit( - effects, - string.optional().unsafeCast(input), - timeout || null, - ) default: const procedures = unNestPath(procedure) switch (true) { diff --git a/container-runtime/src/Adapters/Systems/SystemForEmbassy/DockerProcedureContainer.ts b/container-runtime/src/Adapters/Systems/SystemForEmbassy/DockerProcedureContainer.ts index d82f7aad0..6da874757 100644 --- a/container-runtime/src/Adapters/Systems/SystemForEmbassy/DockerProcedureContainer.ts +++ b/container-runtime/src/Adapters/Systems/SystemForEmbassy/DockerProcedureContainer.ts @@ -7,17 +7,20 @@ import { Volume } from "./matchVolume" import { CommandOptions, ExecOptions, - ExecSpawnable, + SubContainerOwned, } from "@start9labs/start-sdk/package/lib/util/SubContainer" import { Mounts } from "@start9labs/start-sdk/package/lib/mainFn/Mounts" import { Manifest } from "@start9labs/start-sdk/base/lib/osBindings" import { BackupEffects } from "@start9labs/start-sdk/package/lib/backup/Backups" import { Drop } from "@start9labs/start-sdk/package/lib/util" +import { SDKManifest } from "@start9labs/start-sdk/base/lib/types" export const exec = promisify(cp.exec) export const execFile = promisify(cp.execFile) export class DockerProcedureContainer extends Drop { - private constructor(private readonly subcontainer: ExecSpawnable) { + private constructor( + private readonly subcontainer: SubContainer, + ) { super() } @@ -27,7 +30,7 @@ export class DockerProcedureContainer extends Drop { data: DockerProcedure, volumes: { [id: VolumeId]: Volume }, name: string, - options: { subcontainer?: ExecSpawnable } = {}, + options: { subcontainer?: SubContainer } = {}, ) { const subcontainer = options?.subcontainer ?? @@ -47,7 +50,7 @@ export class DockerProcedureContainer extends Drop { volumes: { [id: VolumeId]: Volume }, name: string, ) { - const subcontainer = await SubContainer.of( + const subcontainer = await SubContainerOwned.of( effects as BackupEffects, { imageId: data.image }, null, diff --git a/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts b/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts index 5928d5f8b..a5539b47f 100644 --- a/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts +++ b/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts @@ -7,6 +7,7 @@ import { Effects } from "../../../Models/Effects" import { off } from "node:process" import { CommandController } from "@start9labs/start-sdk/package/lib/mainFn/CommandController" import { SDKManifest } from "@start9labs/start-sdk/base/lib/types" +import { SubContainerRc } from "@start9labs/start-sdk/package/lib/util/SubContainer" const EMBASSY_HEALTH_INTERVAL = 15 * 1000 const EMBASSY_PROPERTIES_LOOP = 30 * 1000 @@ -16,8 +17,11 @@ const EMBASSY_PROPERTIES_LOOP = 30 * 1000 * Also, this has an ability to clean itself up too if need be. */ export class MainLoop { + private subcontainerRc?: SubContainerRc get mainSubContainerHandle() { - return this.mainEvent?.daemon?.subContainerHandle + this.subcontainerRc = + this.subcontainerRc ?? this.mainEvent?.daemon?.subcontainerRc() + return this.subcontainerRc } private healthLoops?: { name: string diff --git a/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts b/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts index 9a4cad3c1..b3b1af569 100644 --- a/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts +++ b/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts @@ -1,6 +1,8 @@ import { ExtendedVersion, FileHelper, + getDataVersion, + overlaps, types as T, utils, VersionRange, @@ -310,7 +312,13 @@ export class SystemForEmbassy implements System { readonly moduleCode: Partial, ) {} - async containerInit(effects: Effects): Promise { + async init( + effects: Effects, + kind: "install" | "update" | "restore" | null, + ): Promise { + if (kind === "restore") { + await this.restoreBackup(effects, null) + } for (let depId in this.manifest.dependencies) { if (this.manifest.dependencies[depId]?.config) { await this.dependenciesAutoconfig(effects, depId, null) @@ -320,6 +328,9 @@ export class SystemForEmbassy implements System { await this.exportActions(effects) await this.exportNetwork(effects) await this.containerSetDependencies(effects) + if (kind === "install" || kind === "update") { + await this.packageInit(effects, null) + } } async containerSetDependencies(effects: T.Effects) { const oldDeps: Record = Object.fromEntries( @@ -359,17 +370,23 @@ export class SystemForEmbassy implements System { } async packageInit(effects: Effects, timeoutMs: number | null): Promise { - const previousVersion = await effects.getDataVersion() + const previousVersion = await getDataVersion(effects) if (previousVersion) { - if ( - (await this.migration(effects, { from: previousVersion }, timeoutMs)) - .configured - ) { - await effects.action.clearRequests({ only: ["needs-config"] }) + const migrationRes = await this.migration( + effects, + { from: previousVersion }, + timeoutMs, + ) + if (migrationRes) { + if (migrationRes.configured) + await effects.action.clearTasks({ only: ["needs-config"] }) + await configFile.write( + effects, + await this.getConfig(effects, timeoutMs), + ) } - await configFile.write(effects, await this.getConfig(effects, timeoutMs)) } else if (this.manifest.config) { - await effects.action.request({ + await effects.action.createTask({ packageId: this.manifest.id, actionId: "config", severity: "critical", @@ -460,7 +477,7 @@ export class SystemForEmbassy implements System { masked: false, path: "", schemeOverride: null, - search: {}, + query: {}, username: null, }), ]) @@ -562,14 +579,17 @@ export class SystemForEmbassy implements System { } await effects.action.clear({ except: Object.keys(actions) }) } - async packageUninit( + async uninit( effects: Effects, - nextVersion: Optional, - timeoutMs: number | null, + target: ExtendedVersion | VersionRange | null, + timeoutMs?: number | null, ): Promise { await this.currentRunning?.clean({ timeout: timeoutMs ?? undefined }) - if (nextVersion) { - await this.migration(effects, { to: nextVersion }, timeoutMs) + if ( + target && + !overlaps(target, ExtendedVersion.parseEmver(this.manifest.version)) + ) { + await this.migration(effects, { to: target }, timeoutMs ?? null) } await effects.setMainStatus({ status: "stopped" }) } @@ -781,31 +801,31 @@ export class SystemForEmbassy implements System { async migration( effects: Effects, - version: { from: string } | { to: string }, + version: + | { from: VersionRange | ExtendedVersion } + | { to: VersionRange | ExtendedVersion }, timeoutMs: number | null, - ): Promise<{ configured: boolean }> { + ): Promise<{ configured: boolean } | null> { let migration let args: [string, ...string[]] if ("from" in version) { - args = [version.from, "from"] - const fromExver = ExtendedVersion.parse(version.from) + args = [version.from.toString(), "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)) + .find(([versionEmver, _]) => overlaps(versionEmver, version.from)) } else { - args = [version.to, "to"] - const toExver = ExtendedVersion.parse(version.to) + args = [version.to.toString(), "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)) + .find(([versionEmver, _]) => overlaps(versionEmver, version.to)) } if (migration) { @@ -841,7 +861,7 @@ export class SystemForEmbassy implements System { })) as any } } - return { configured: true } + return null } async properties( effects: Effects, @@ -1022,7 +1042,7 @@ export class SystemForEmbassy implements System { })) as any const diff = partialDiff(oldConfig, newConfig) if (diff) { - await effects.action.request({ + await effects.action.createTask({ actionId: "config", packageId: id, replayId: `${id}/config`, diff --git a/container-runtime/src/Adapters/Systems/SystemForStartOs.ts b/container-runtime/src/Adapters/Systems/SystemForStartOs.ts index 0635e2921..32f7f3568 100644 --- a/container-runtime/src/Adapters/Systems/SystemForStartOs.ts +++ b/container-runtime/src/Adapters/Systems/SystemForStartOs.ts @@ -1,6 +1,6 @@ import { System } from "../../Interfaces/System" import { Effects } from "../../Models/Effects" -import { T, utils } from "@start9labs/start-sdk" +import { ExtendedVersion, T, utils, VersionRange } from "@start9labs/start-sdk" export const STARTOS_JS_LOCATION = "/usr/lib/startos/package/index.js" @@ -10,6 +10,7 @@ type RunningMain = { export class SystemForStartOs implements System { private runningMain: RunningMain | undefined + private starting: boolean = false static of() { return new SystemForStartOs(require(STARTOS_JS_LOCATION)) @@ -18,22 +19,23 @@ export class SystemForStartOs implements System { constructor(readonly abi: T.ABI) { this } - async containerInit(effects: Effects): Promise { - return void (await this.abi.containerInit({ effects })) - } - async packageInit( + + async init( effects: Effects, + kind: "install" | "update" | "restore" | null, + ): Promise { + return void (await this.abi.init({ effects, kind })) + } + + async exit( + effects: Effects, + target: ExtendedVersion | VersionRange | null, timeoutMs: number | null = null, ): Promise { - return void (await this.abi.packageInit({ effects })) - } - async packageUninit( - effects: Effects, - nextVersion: string | null = null, - timeoutMs: number | null = null, - ): Promise { - return void (await this.abi.packageUninit({ effects, nextVersion })) + // TODO: stop? + return void (await this.abi.uninit({ effects, target })) } + async createBackup( effects: T.Effects, timeoutMs: number | null, @@ -42,14 +44,6 @@ export class SystemForStartOs implements System { effects, })) } - async restoreBackup( - effects: T.Effects, - timeoutMs: number | null, - ): Promise { - return void (await this.abi.restoreBackup({ - effects, - })) - } getActionInput( effects: Effects, id: string, @@ -70,28 +64,31 @@ export class SystemForStartOs implements System { return action.run({ effects, input }) } - async exit(): Promise {} - async start(effects: Effects): Promise { - if (this.runningMain) return - effects.constRetry = utils.once(() => effects.restart()) - let mainOnTerm: () => Promise | undefined - const started = async (onTerm: () => Promise) => { - await effects.setMainStatus({ status: "running" }) - mainOnTerm = onTerm - return null - } - const daemons = await ( - await this.abi.main({ - effects, - started, - }) - ).build() - this.runningMain = { - stop: async () => { - if (mainOnTerm) await mainOnTerm() - await daemons.term() - }, + try { + if (this.runningMain || this.starting) return + this.starting = true + effects.constRetry = utils.once(() => effects.restart()) + let mainOnTerm: () => Promise | undefined + const started = async (onTerm: () => Promise) => { + await effects.setMainStatus({ status: "running" }) + mainOnTerm = onTerm + return null + } + const daemons = await ( + await this.abi.main({ + effects, + started, + }) + ).build() + this.runningMain = { + stop: async () => { + if (mainOnTerm) await mainOnTerm() + await daemons.term() + }, + } + } finally { + this.starting = false } } diff --git a/container-runtime/src/Interfaces/System.ts b/container-runtime/src/Interfaces/System.ts index 63781cfbd..1bda6afd7 100644 --- a/container-runtime/src/Interfaces/System.ts +++ b/container-runtime/src/Interfaces/System.ts @@ -1,13 +1,13 @@ -import { types as T } from "@start9labs/start-sdk" +import { + ExtendedVersion, + types as T, + VersionRange, +} from "@start9labs/start-sdk" import { Effects } from "../Models/Effects" import { CallbackHolder } from "../Models/CallbackHolder" -import { Optional } from "ts-matches/lib/parsers/interfaces" export type Procedure = - | "/packageInit" - | "/packageUninit" | "/backup/create" - | "/backup/restore" | `/actions/${string}/getInput` | `/actions/${string}/run` @@ -15,20 +15,15 @@ export type ExecuteResult = | { ok: unknown } | { err: { code: number; message: string } } export type System = { - containerInit(effects: T.Effects): Promise + init( + effects: T.Effects, + kind: "install" | "update" | "restore" | null, + ): Promise start(effects: T.Effects): Promise stop(): Promise - packageInit(effects: Effects, timeoutMs: number | null): Promise - packageUninit( - effects: Effects, - nextVersion: Optional, - timeoutMs: number | null, - ): Promise - createBackup(effects: T.Effects, timeoutMs: number | null): Promise - restoreBackup(effects: T.Effects, timeoutMs: number | null): Promise runAction( effects: Effects, actionId: string, @@ -41,7 +36,10 @@ export type System = { timeoutMs: number | null, ): Promise - exit(): Promise + exit( + effects: Effects, + target: ExtendedVersion | VersionRange | null, + ): Promise } export type RunningMain = { diff --git a/core/models/src/procedure_name.rs b/core/models/src/procedure_name.rs index 4a4a682e6..54ed96c23 100644 --- a/core/models/src/procedure_name.rs +++ b/core/models/src/procedure_name.rs @@ -4,25 +4,15 @@ use crate::ActionId; #[derive(Debug, Clone, Serialize, Deserialize)] pub enum ProcedureName { - GetConfig, - SetConfig, CreateBackup, - RestoreBackup, GetActionInput(ActionId), RunAction(ActionId), - PackageInit, - PackageUninit, } impl ProcedureName { pub fn js_function_name(&self) -> String { match self { - ProcedureName::PackageInit => "/packageInit".to_string(), - ProcedureName::PackageUninit => "/packageUninit".to_string(), - ProcedureName::SetConfig => "/config/set".to_string(), - ProcedureName::GetConfig => "/config/get".to_string(), ProcedureName::CreateBackup => "/backup/create".to_string(), - ProcedureName::RestoreBackup => "/backup/restore".to_string(), ProcedureName::RunAction(id) => format!("/actions/{}/run", id), ProcedureName::GetActionInput(id) => format!("/actions/{}/getInput", id), } diff --git a/core/startos/src/action.rs b/core/startos/src/action.rs index 891296e34..5528f7ab1 100644 --- a/core/startos/src/action.rs +++ b/core/startos/src/action.rs @@ -2,7 +2,7 @@ use std::fmt; use clap::{CommandFactory, FromArgMatches, Parser}; pub use models::ActionId; -use models::PackageId; +use models::{PackageId, ReplayId}; use qrcode::QrCode; use rpc_toolkit::{from_fn_async, Context, HandlerExt, ParentHandler}; use serde::{Deserialize, Serialize}; @@ -10,6 +10,7 @@ use tracing::instrument; use ts_rs::TS; use crate::context::{CliContext, RpcContext}; +use crate::db::model::package::TaskSeverity; use crate::prelude::*; use crate::rpc_continuations::Guid; use crate::util::serde::{ @@ -38,6 +39,13 @@ pub fn action_api() -> ParentHandler { .with_about("Run service action") .with_call_remote::(), ) + .subcommand( + "clear-task", + from_fn_async(clear_task) + .no_display() + .with_about("Clear a service task") + .with_call_remote::(), + ) } #[derive(Debug, Clone, Deserialize, Serialize, TS)] @@ -332,3 +340,45 @@ pub async fn run_action( .await .map(|res| res.map(ActionResult::upcast)) } + +#[derive(Deserialize, Serialize, Parser, TS)] +#[serde(rename_all = "camelCase")] +#[command(rename_all = "kebab-case")] +pub struct ClearTaskParams { + pub package_id: PackageId, + pub replay_id: ReplayId, + #[arg(long)] + pub force: bool, +} + +#[instrument(skip_all)] +pub async fn clear_task( + ctx: RpcContext, + ClearTaskParams { + package_id, + replay_id, + force, + }: ClearTaskParams, +) -> Result<(), Error> { + ctx.db + .mutate(|db| { + if let Some(task) = db + .as_public_mut() + .as_package_data_mut() + .as_idx_mut(&package_id) + .or_not_found(&package_id)? + .as_tasks_mut() + .remove(&replay_id)? + { + if !force && task.as_task().as_severity().de()? == TaskSeverity::Critical { + return Err(Error::new( + eyre!("Cannot clear critical task"), + ErrorKind::InvalidRequest, + )); + } + } + Ok(()) + }) + .await + .result +} diff --git a/core/startos/src/auth.rs b/core/startos/src/auth.rs index c5a0193c3..ac8bf721f 100644 --- a/core/startos/src/auth.rs +++ b/core/startos/src/auth.rs @@ -44,22 +44,25 @@ impl Map for Sessions { } pub async fn write_shadow(password: &str) -> Result<(), Error> { + let hash: String = sha_crypt::sha512_simple(password, &sha_crypt::Sha512Params::default()) + .map_err(|e| Error::new(eyre!("{e:?}"), ErrorKind::Serialization))?; let shadow_contents = tokio::fs::read_to_string("/etc/shadow").await?; let mut shadow_file = create_file_mod("/media/startos/config/overlay/etc/shadow", 0o640).await?; for line in shadow_contents.lines() { - if line.starts_with("start9:") { - let rest = line.splitn(3, ":").nth(2).ok_or_else(|| { - Error::new(eyre!("malformed /etc/shadow"), ErrorKind::ParseSysInfo) - })?; - let pw = sha_crypt::sha512_simple(password, &sha_crypt::Sha512Params::default()) - .map_err(|e| Error::new(eyre!("{e:?}"), ErrorKind::Serialization))?; - shadow_file - .write_all(format!("start9:{pw}:{rest}\n").as_bytes()) - .await?; - } else { - shadow_file.write_all(line.as_bytes()).await?; - shadow_file.write_all(b"\n").await?; + match line.split_once(":") { + Some((user, rest)) if user == "start9" || user == "kiosk" => { + let (_, rest) = rest.split_once(":").ok_or_else(|| { + Error::new(eyre!("malformed /etc/shadow"), ErrorKind::ParseSysInfo) + })?; + shadow_file + .write_all(format!("{user}:{hash}:{rest}\n").as_bytes()) + .await?; + } + _ => { + shadow_file.write_all(line.as_bytes()).await?; + shadow_file.write_all(b"\n").await?; + } } } shadow_file.sync_all().await?; diff --git a/core/startos/src/backup/restore.rs b/core/startos/src/backup/restore.rs index 21f154b60..264f00848 100644 --- a/core/startos/src/backup/restore.rs +++ b/core/startos/src/backup/restore.rs @@ -23,7 +23,9 @@ use crate::prelude::*; use crate::s9pk::S9pk; use crate::service::service_map::DownloadInstallFuture; use crate::setup::SetupExecuteProgress; +use crate::system::sync_kiosk; use crate::util::serde::IoFormat; +use crate::PLATFORM; #[derive(Deserialize, Serialize, Parser, TS)] #[serde(rename_all = "camelCase")] @@ -80,6 +82,7 @@ pub async fn recover_full_embassy( recovery_source: TmpMountGuard, server_id: &str, recovery_password: &str, + kiosk: Option, SetupExecuteProgress { init_phases, restore_phase, @@ -105,8 +108,12 @@ pub async fn recover_full_embassy( ) .with_kind(ErrorKind::PasswordHashGeneration)?; + let kiosk = Some(kiosk.unwrap_or(true)).filter(|_| &*PLATFORM != "raspberrypi"); + sync_kiosk(kiosk).await?; + let db = ctx.db().await?; - db.put(&ROOT, &Database::init(&os_backup.account)?).await?; + db.put(&ROOT, &Database::init(&os_backup.account, kiosk)?) + .await?; drop(db); let init_result = init(&ctx.webserver, &ctx.config, init_phases).await?; @@ -166,6 +173,7 @@ async fn restore_packages( .install( ctx.clone(), || S9pk::open(s9pk_path, Some(&id)), + None, // TODO: pull from metadata? Some(backup_dir), None, ) diff --git a/core/startos/src/context/rpc.rs b/core/startos/src/context/rpc.rs index 32ba474fa..ba815de23 100644 --- a/core/startos/src/context/rpc.rs +++ b/core/startos/src/context/rpc.rs @@ -35,7 +35,7 @@ use crate::net::wifi::WpaCli; use crate::prelude::*; use crate::progress::{FullProgressTracker, PhaseProgressTrackerHandle}; use crate::rpc_continuations::{Guid, OpenAuthedContinuations, RpcContinuations}; -use crate::service::action::update_requested_actions; +use crate::service::action::update_tasks; use crate::service::effects::callbacks::ServiceCallbacks; use crate::service::ServiceMap; use crate::shutdown::Shutdown; @@ -102,14 +102,14 @@ impl InitRpcContextPhases { pub struct CleanupInitPhases { cleanup_sessions: PhaseProgressTrackerHandle, init_services: PhaseProgressTrackerHandle, - check_requested_actions: PhaseProgressTrackerHandle, + check_tasks: PhaseProgressTrackerHandle, } impl CleanupInitPhases { pub fn new(handle: &FullProgressTracker) -> Self { Self { cleanup_sessions: handle.add_phase("Cleaning up sessions".into(), Some(1)), init_services: handle.add_phase("Initializing services".into(), Some(10)), - check_requested_actions: handle.add_phase("Checking action requests".into(), Some(1)), + check_tasks: handle.add_phase("Checking action requests".into(), Some(1)), } } } @@ -307,7 +307,7 @@ impl RpcContext { CleanupInitPhases { mut cleanup_sessions, init_services, - mut check_requested_actions, + mut check_tasks, }: CleanupInitPhases, ) -> Result<(), Error> { cleanup_sessions.start(); @@ -369,31 +369,27 @@ impl RpcContext { tracing::info!("Initialized Services"); // TODO - check_requested_actions.start(); + check_tasks.start(); let peek = self.db.peek().await; let mut action_input: OrdMap> = OrdMap::new(); - let requested_actions: BTreeSet<_> = peek + let tasks: BTreeSet<_> = peek .as_public() .as_package_data() .as_entries()? .into_iter() .map(|(_, pde)| { - Ok(pde - .as_requested_actions() - .as_entries()? - .into_iter() - .map(|(_, r)| { - Ok::<_, Error>(( - r.as_request().as_package_id().de()?, - r.as_request().as_action_id().de()?, - )) - })) + Ok(pde.as_tasks().as_entries()?.into_iter().map(|(_, r)| { + Ok::<_, Error>(( + r.as_task().as_package_id().de()?, + r.as_task().as_action_id().de()?, + )) + })) }) .flatten_ok() .map(|a| a.and_then(|a| a)) .try_collect()?; let procedure_id = Guid::new(); - for (package_id, action_id) in requested_actions { + for (package_id, action_id) in tasks { if let Some(service) = self.services.get(&package_id).await.as_ref() { if let Some(input) = service .get_action_input(procedure_id.clone(), action_id.clone()) @@ -412,14 +408,8 @@ impl RpcContext { for (package_id, action_input) in &action_input { for (action_id, input) in action_input { for (_, pde) in db.as_public_mut().as_package_data_mut().as_entries_mut()? { - pde.as_requested_actions_mut().mutate(|requested_actions| { - Ok(update_requested_actions( - requested_actions, - package_id, - action_id, - input, - false, - )) + pde.as_tasks_mut().mutate(|tasks| { + Ok(update_tasks(tasks, package_id, action_id, input, false)) })?; } } @@ -428,7 +418,7 @@ impl RpcContext { }) .await .result?; - check_requested_actions.complete(); + check_tasks.complete(); Ok(()) } diff --git a/core/startos/src/db/model/mod.rs b/core/startos/src/db/model/mod.rs index 678f7e5fb..4806d8621 100644 --- a/core/startos/src/db/model/mod.rs +++ b/core/startos/src/db/model/mod.rs @@ -27,9 +27,9 @@ pub struct Database { pub private: Private, } impl Database { - pub fn init(account: &AccountInfo) -> Result { + pub fn init(account: &AccountInfo, kiosk: Option) -> Result { Ok(Self { - public: Public::init(account)?, + public: Public::init(account, kiosk)?, private: Private { key_store: KeyStore::new(account)?, password: account.password.clone(), diff --git a/core/startos/src/db/model/package.rs b/core/startos/src/db/model/package.rs index 6f1155311..7c9526d36 100644 --- a/core/startos/src/db/model/package.rs +++ b/core/startos/src/db/model/package.rs @@ -3,10 +3,7 @@ use std::collections::{BTreeMap, BTreeSet}; use chrono::{DateTime, Utc}; use exver::VersionRange; use imbl_value::InternedString; -use models::{ - ActionId, DataUrl, HealthCheckId, HostId, PackageId, ReplayId, ServiceInterfaceId, - VersionString, -}; +use models::{ActionId, DataUrl, HealthCheckId, HostId, PackageId, ReplayId, ServiceInterfaceId}; use patch_db::json_ptr::JsonPointer; use patch_db::HasModel; use reqwest::Url; @@ -365,7 +362,7 @@ impl Default for ActionVisibility { #[ts(export)] pub struct PackageDataEntry { pub state_info: PackageState, - pub data_version: Option, + pub data_version: Option, pub status: MainStatus, #[ts(type = "string | null")] pub registry: Option, @@ -376,8 +373,8 @@ pub struct PackageDataEntry { pub last_backup: Option>, pub current_dependencies: CurrentDependencies, pub actions: BTreeMap, - #[ts(as = "BTreeMap::")] - pub requested_actions: BTreeMap, + #[ts(as = "BTreeMap::")] + pub tasks: BTreeMap, pub service_interfaces: BTreeMap, pub hosts: Hosts, #[ts(type = "string[]")] @@ -444,8 +441,8 @@ pub enum CurrentDependencyKind { #[serde(rename_all = "camelCase")] #[ts(export)] #[model = "Model"] -pub struct ActionRequestEntry { - pub request: ActionRequest, +pub struct TaskEntry { + pub task: Task, pub active: bool, } @@ -453,58 +450,59 @@ pub struct ActionRequestEntry { #[serde(rename_all = "camelCase")] #[ts(export)] #[model = "Model"] -pub struct ActionRequest { +pub struct Task { pub package_id: PackageId, pub action_id: ActionId, #[serde(default)] - pub severity: ActionSeverity, + pub severity: TaskSeverity, #[ts(optional)] pub reason: Option, #[ts(optional)] - pub when: Option, + pub when: Option, #[ts(optional)] - pub input: Option, + pub input: Option, } -#[derive(Clone, Debug, Deserialize, Serialize, TS)] +#[derive(Clone, Debug, Deserialize, Serialize, TS, PartialEq, Eq, PartialOrd, Ord)] #[serde(rename_all = "kebab-case")] #[ts(export)] -pub enum ActionSeverity { - Critical, +pub enum TaskSeverity { + Optional, Important, + Critical, } -impl Default for ActionSeverity { +impl Default for TaskSeverity { fn default() -> Self { - ActionSeverity::Important + TaskSeverity::Important } } #[derive(Clone, Debug, Deserialize, Serialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export)] -pub struct ActionRequestTrigger { +pub struct TaskTrigger { #[serde(default)] pub once: bool, - pub condition: ActionRequestCondition, + pub condition: TaskCondition, } #[derive(Clone, Debug, Deserialize, Serialize, TS)] #[serde(rename_all = "kebab-case")] #[ts(export)] -pub enum ActionRequestCondition { +pub enum TaskCondition { InputNotMatches, } #[derive(Clone, Debug, Deserialize, Serialize, TS)] #[serde(rename_all = "kebab-case")] #[serde(tag = "kind")] -pub enum ActionRequestInput { +pub enum TaskInput { Partial { #[ts(type = "Record")] value: Value, }, } -impl ActionRequestInput { +impl TaskInput { pub fn matches(&self, input: Option<&Value>) -> bool { match self { Self::Partial { value } => match input { diff --git a/core/startos/src/db/model/public.rs b/core/startos/src/db/model/public.rs index 2f7852ee1..def0d7533 100644 --- a/core/startos/src/db/model/public.rs +++ b/core/startos/src/db/model/public.rs @@ -40,7 +40,7 @@ pub struct Public { pub ui: Value, } impl Public { - pub fn init(account: &AccountInfo) -> Result { + pub fn init(account: &AccountInfo, kiosk: Option) -> Result { Ok(Self { server_info: ServerInfo { arch: get_arch(), @@ -117,6 +117,7 @@ impl Public { smtp: None, ram: 0, devices: Vec::new(), + kiosk, }, package_data: AllPackageData::default(), ui: serde_json::from_str(include_str!(concat!( @@ -175,6 +176,7 @@ pub struct ServerInfo { #[ts(type = "number")] pub ram: u64, pub devices: Vec, + pub kiosk: Option, } #[derive(Debug, Default, Deserialize, Serialize, HasModel, TS)] diff --git a/core/startos/src/init.rs b/core/startos/src/init.rs index 8276600e3..264a8cc82 100644 --- a/core/startos/src/init.rs +++ b/core/startos/src/init.rs @@ -37,7 +37,7 @@ use crate::progress::{ use crate::rpc_continuations::{Guid, RpcContinuation}; use crate::s9pk::v2::pack::{CONTAINER_DATADIR, CONTAINER_TOOL}; use crate::ssh::SSH_DIR; -use crate::system::get_mem_info; +use crate::system::{get_mem_info, sync_kiosk}; use crate::util::io::{create_file, IOHook}; use crate::util::lshw::lshw; use crate::util::net::WebSocketExt; @@ -510,6 +510,7 @@ pub async fn init( enable_zram.complete(); update_server_info.start(); + sync_kiosk(server_info.as_kiosk().de()?).await?; let ram = get_mem_info().await?.total.0 as u64 * 1024 * 1024; let devices = lshw().await?; let status_info = ServerStatus { diff --git a/core/startos/src/install/mod.rs b/core/startos/src/install/mod.rs index 7b9fe7e72..f67056b73 100644 --- a/core/startos/src/install/mod.rs +++ b/core/startos/src/install/mod.rs @@ -161,6 +161,7 @@ pub async fn install( .install( ctx.clone(), || asset.deserialize_s9pk_buffered(ctx.client.clone(), download_progress), + Some(registry), None::, Some(progress_tracker), ) @@ -257,6 +258,7 @@ pub async fn sideload( .install( ctx.clone(), || crate::s9pk::load(file.clone(), || Ok(key.de()?.0), Some(&progress_tracker)), + None, None::, Some(progress_tracker.clone()), ) diff --git a/core/startos/src/lib.rs b/core/startos/src/lib.rs index db759ffc9..d743357e6 100644 --- a/core/startos/src/lib.rs +++ b/core/startos/src/lib.rs @@ -89,6 +89,7 @@ use crate::context::{ use crate::disk::fsck::RequiresReboot; use crate::net::net; use crate::registry::context::{RegistryContext, RegistryUrlParams}; +use crate::system::kiosk; use crate::util::serde::{HandlerExtSerde, WithIoFormat}; #[derive(Deserialize, Serialize, Parser, TS)] @@ -118,7 +119,7 @@ impl std::fmt::Display for ApiState { } pub fn main_api() -> ParentHandler { - let api = ParentHandler::new() + let mut api = ParentHandler::new() .subcommand( "git-info", from_fn(|_: C| version::git_info()).with_about("Display the githash of StartOS CLI"), @@ -198,12 +199,18 @@ pub fn main_api() -> ParentHandler { "util", util::rpc::util::().with_about("Command for calculating the blake3 hash of a file"), ); + if &*PLATFORM != "raspberrypi" { + api = api.subcommand("kiosk", kiosk::()); + } #[cfg(feature = "dev")] - let api = api.subcommand( - "lxc", - lxc::dev::lxc::() - .with_about("Commands related to lxc containers i.e. create, list, remove, connect"), - ); + { + api = api.subcommand( + "lxc", + lxc::dev::lxc::().with_about( + "Commands related to lxc containers i.e. create, list, remove, connect", + ), + ); + } api } diff --git a/core/startos/src/net/forward.rs b/core/startos/src/net/forward.rs index b7ad33318..610583ef9 100644 --- a/core/startos/src/net/forward.rs +++ b/core/startos/src/net/forward.rs @@ -222,8 +222,9 @@ impl LanPortForwardController { } } -// iptables -I FORWARD -o br-start9 -p tcp -d 172.18.0.2 --dport 8333 -j ACCEPT -// iptables -t nat -I PREROUTING -p tcp --dport 32768 -j DNAT --to 172.18.0.2:8333 +// iptables -t nat -A POSTROUTING -s 10.59.0.0/24 ! -d 10.59.0.0/24 -j SNAT --to $ip +// iptables -I INPUT -p udp --dport $port -j ACCEPT +// iptables -I FORWARD -s 10.59.0.0/24 -j ACCEPT async fn forward(external: u16, interface: &str, target: SocketAddr) -> Result<(), Error> { for proto in ["tcp", "udp"] { Command::new("iptables") diff --git a/core/startos/src/service/action.rs b/core/startos/src/service/action.rs index 65687f35b..bfafca9df 100644 --- a/core/startos/src/service/action.rs +++ b/core/startos/src/service/action.rs @@ -6,8 +6,7 @@ use models::{ActionId, PackageId, ProcedureName, ReplayId}; use crate::action::{ActionInput, ActionResult}; use crate::db::model::package::{ - ActionRequestCondition, ActionRequestEntry, ActionRequestInput, ActionVisibility, - AllowedStatuses, + ActionVisibility, AllowedStatuses, TaskCondition, TaskEntry, TaskInput, }; use crate::prelude::*; use crate::rpc_continuations::Guid; @@ -73,21 +72,21 @@ impl Service { } } -pub fn update_requested_actions( - requested_actions: &mut BTreeMap, +pub fn update_tasks( + tasks: &mut BTreeMap, package_id: &PackageId, action_id: &ActionId, input: &Value, was_run: bool, ) { - requested_actions.retain(|_, v| { - if &v.request.package_id != package_id || &v.request.action_id != action_id { + tasks.retain(|_, v| { + if &v.task.package_id != package_id || &v.task.action_id != action_id { return true; } - if let Some(when) = &v.request.when { + if let Some(when) = &v.task.when { match &when.condition { - ActionRequestCondition::InputNotMatches => match &v.request.input { - Some(ActionRequestInput::Partial { value }) => { + TaskCondition::InputNotMatches => match &v.task.input { + Some(TaskInput::Partial { value }) => { if is_partial_of(value, input) { if when.once { return !was_run; @@ -99,10 +98,7 @@ pub fn update_requested_actions( } } None => { - tracing::error!( - "action request exists in an invalid state {:?}", - v.request - ); + tracing::error!("action request exists in an invalid state {:?}", v.task); } }, } @@ -180,14 +176,8 @@ impl Handler for ServiceActor { .db .mutate(|db| { for (_, pde) in db.as_public_mut().as_package_data_mut().as_entries_mut()? { - pde.as_requested_actions_mut().mutate(|requested_actions| { - Ok(update_requested_actions( - requested_actions, - package_id, - action_id, - &input, - true, - )) + pde.as_tasks_mut().mutate(|tasks| { + Ok(update_tasks(tasks, package_id, action_id, &input, true)) })?; } Ok(()) diff --git a/core/startos/src/service/effects/action.rs b/core/startos/src/service/effects/action.rs index cbab573c2..cd6157ad7 100644 --- a/core/startos/src/service/effects/action.rs +++ b/core/startos/src/service/effects/action.rs @@ -5,7 +5,7 @@ use rpc_toolkit::{from_fn_async, Context, HandlerExt, ParentHandler}; use crate::action::{display_action_result, ActionInput, ActionResult}; use crate::db::model::package::{ - ActionMetadata, ActionRequest, ActionRequestCondition, ActionRequestEntry, ActionRequestTrigger, + ActionMetadata, Task, TaskCondition, TaskEntry, TaskSeverity, TaskTrigger, }; use crate::rpc_continuations::Guid; use crate::service::cli::ContainerCliContext; @@ -34,10 +34,10 @@ pub fn action_api() -> ParentHandler { .with_custom_display_fn(|args, res| Ok(display_action_result(args.params, res))) .with_call_remote::(), ) - .subcommand("request", from_fn_async(request_action).no_cli()) + .subcommand("create-task", from_fn_async(create_task).no_cli()) .subcommand( - "clear-requests", - from_fn_async(clear_action_requests) + "clear-tasks", + from_fn_async(clear_tasks) .no_display() .with_call_remote::(), ) @@ -196,29 +196,29 @@ async fn run_action( #[derive(Clone, Debug, Deserialize, Serialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export)] -pub struct RequestActionParams { +pub struct CreateTaskParams { #[serde(default)] #[ts(skip)] procedure_id: Guid, replay_id: ReplayId, #[serde(flatten)] - request: ActionRequest, + task: Task, } -async fn request_action( +async fn create_task( context: EffectContext, - RequestActionParams { + CreateTaskParams { procedure_id, replay_id, - request, - }: RequestActionParams, + task, + }: CreateTaskParams, ) -> Result<(), Error> { let context = context.deref()?; let src_id = &context.seed.id; - let active = match &request.when { - Some(ActionRequestTrigger { once, condition }) => match condition { - ActionRequestCondition::InputNotMatches => { - let Some(input) = request.input.as_ref() else { + let active = match &task.when { + Some(TaskTrigger { once, condition }) => match condition { + TaskCondition::InputNotMatches => { + let Some(input) = task.input.as_ref() else { return Err(Error::new( eyre!("input-not-matches trigger requires input to be specified"), ErrorKind::InvalidRequest, @@ -228,19 +228,19 @@ async fn request_action( .seed .ctx .services - .get(&request.package_id) + .get(&task.package_id) .await .as_ref() { let Some(prev) = service - .get_action_input(procedure_id, request.action_id.clone()) + .get_action_input(procedure_id.clone(), task.action_id.clone()) .await? else { return Err(Error::new( eyre!( "action {} of {} has no input", - request.action_id, - request.package_id + task.action_id, + task.package_id ), ErrorKind::InvalidRequest, )); @@ -261,6 +261,9 @@ async fn request_action( }, None => true, }; + if active && task.severity == TaskSeverity::Critical { + context.stop(procedure_id).await?; + } context .seed .ctx @@ -270,8 +273,8 @@ async fn request_action( .as_package_data_mut() .as_idx_mut(src_id) .or_not_found(src_id)? - .as_requested_actions_mut() - .insert(&replay_id, &ActionRequestEntry { active, request }) + .as_tasks_mut() + .insert(&replay_id, &TaskEntry { active, task }) }) .await .result?; @@ -281,16 +284,16 @@ async fn request_action( #[derive(Debug, Clone, Serialize, Deserialize, TS, Parser)] #[ts(type = "{ only: string[] } | { except: string[] }")] #[ts(export)] -pub struct ClearActionRequestsParams { +pub struct ClearTasksParams { #[arg(long, conflicts_with = "except")] pub only: Option>, #[arg(long, conflicts_with = "only")] pub except: Option>, } -async fn clear_action_requests( +async fn clear_tasks( context: EffectContext, - ClearActionRequestsParams { only, except }: ClearActionRequestsParams, + ClearTasksParams { only, except }: ClearTasksParams, ) -> Result<(), Error> { let context = context.deref()?; let package_id = context.seed.id.clone(); @@ -305,7 +308,7 @@ async fn clear_action_requests( .as_package_data_mut() .as_idx_mut(&package_id) .or_not_found(&package_id)? - .as_requested_actions_mut() + .as_tasks_mut() .mutate(|a| { Ok(a.retain(|e, _| { only.as_ref().map_or(true, |only| !only.contains(e)) diff --git a/core/startos/src/service/effects/dependency.rs b/core/startos/src/service/effects/dependency.rs index 2b0d2c416..17b8e3067 100644 --- a/core/startos/src/service/effects/dependency.rs +++ b/core/startos/src/service/effects/dependency.rs @@ -10,7 +10,7 @@ use models::{FromStrParser, HealthCheckId, PackageId, ReplayId, VersionString, V use tokio::process::Command; use crate::db::model::package::{ - ActionRequestEntry, CurrentDependencies, CurrentDependencyInfo, CurrentDependencyKind, + TaskEntry, CurrentDependencies, CurrentDependencyInfo, CurrentDependencyKind, ManifestPreference, }; use crate::disk::mount::filesystem::bind::Bind; @@ -335,7 +335,7 @@ pub struct CheckDependenciesResult { installed_version: Option, satisfies: BTreeSet, is_running: bool, - requested_actions: BTreeMap, + tasks: BTreeMap, #[ts(as = "BTreeMap::")] health_checks: OrdMap, } @@ -351,7 +351,7 @@ pub async fn check_dependencies( .as_idx(&context.seed.id) .or_not_found(&context.seed.id)?; let current_dependencies = pde.as_current_dependencies().de()?; - let requested_actions = pde.as_requested_actions().de()?; + let tasks = pde.as_tasks().de()?; let package_dependency_info: Vec<_> = package_ids .unwrap_or_else(|| current_dependencies.0.keys().cloned().collect()) .into_iter() @@ -365,9 +365,9 @@ pub async fn check_dependencies( for (package_id, dependency_info) in package_dependency_info { let title = dependency_info.title.clone(); let Some(package) = db.as_public().as_package_data().as_idx(&package_id) else { - let requested_actions = requested_actions + let tasks = tasks .iter() - .filter(|(_, v)| v.request.package_id == package_id) + .filter(|(_, v)| v.task.package_id == package_id) .map(|(k, v)| (k.clone(), v.clone())) .collect(); results.push(CheckDependenciesResult { @@ -376,7 +376,7 @@ pub async fn check_dependencies( installed_version: None, satisfies: BTreeSet::new(), is_running: false, - requested_actions, + tasks, health_checks: Default::default(), }); continue; @@ -393,9 +393,9 @@ pub async fn check_dependencies( false }; let health_checks = status.health().cloned().unwrap_or_default(); - let requested_actions = requested_actions + let tasks = tasks .iter() - .filter(|(_, v)| v.request.package_id == package_id) + .filter(|(_, v)| v.task.package_id == package_id) .map(|(k, v)| (k.clone(), v.clone())) .collect(); results.push(CheckDependenciesResult { @@ -404,7 +404,7 @@ pub async fn check_dependencies( installed_version, satisfies, is_running, - requested_actions, + tasks, health_checks, }); } diff --git a/core/startos/src/service/effects/version.rs b/core/startos/src/service/effects/version.rs index 604d5d9b4..8737ce7bf 100644 --- a/core/startos/src/service/effects/version.rs +++ b/core/startos/src/service/effects/version.rs @@ -1,5 +1,3 @@ -use models::VersionString; - use crate::service::effects::prelude::*; #[derive(Debug, Clone, Serialize, Deserialize, TS, Parser)] @@ -7,7 +5,7 @@ use crate::service::effects::prelude::*; #[ts(export)] pub struct SetDataVersionParams { #[ts(type = "string")] - version: VersionString, + version: Option, } pub async fn set_data_version( context: EffectContext, @@ -25,7 +23,7 @@ pub async fn set_data_version( .as_idx_mut(package_id) .or_not_found(package_id)? .as_data_version_mut() - .ser(&Some(version)) + .ser(&version) }) .await .result?; @@ -33,7 +31,7 @@ pub async fn set_data_version( Ok(()) } -pub async fn get_data_version(context: EffectContext) -> Result, Error> { +pub async fn get_data_version(context: EffectContext) -> Result, Error> { let context = context.deref()?; let package_id = &context.seed.id; context diff --git a/core/startos/src/service/mod.rs b/core/startos/src/service/mod.rs index a9e71c913..3bfb43661 100644 --- a/core/startos/src/service/mod.rs +++ b/core/startos/src/service/mod.rs @@ -17,7 +17,7 @@ use futures::{FutureExt, SinkExt, StreamExt, TryStreamExt}; use helpers::NonDetachingJoinHandle; use imbl_value::{json, InternedString}; use itertools::Itertools; -use models::{ActionId, HostId, ImageId, PackageId, ProcedureName}; +use models::{ActionId, HostId, ImageId, PackageId}; use nix::sys::signal::Signal; use persistent_container::{PersistentContainer, Subcontainer}; use rpc_toolkit::{from_fn_async, CallRemoteHandler, Empty, HandlerArgs, HandlerFor}; @@ -30,27 +30,31 @@ use tokio::process::Command; use tokio::sync::Notify; use tokio_tungstenite::tungstenite::protocol::frame::coding::CloseCode; use ts_rs::TS; +use url::Url; use crate::context::{CliContext, RpcContext}; use crate::db::model::package::{ - InstalledState, PackageDataEntry, PackageState, PackageStateMatchModelRef, UpdatingState, + InstalledState, ManifestPreference, PackageDataEntry, PackageState, PackageStateMatchModelRef, + UpdatingState, }; -use crate::disk::mount::guard::GenericMountGuard; +use crate::disk::mount::filesystem::ReadOnly; +use crate::disk::mount::guard::{GenericMountGuard, MountGuard}; use crate::install::PKG_ARCHIVE_DIR; use crate::lxc::ContainerId; use crate::prelude::*; use crate::progress::{NamedProgress, Progress}; use crate::rpc_continuations::{Guid, RpcContinuation}; use crate::s9pk::S9pk; -use crate::service::action::update_requested_actions; +use crate::service::action::update_tasks; +use crate::service::rpc::{ExitParams, InitKind}; use crate::service::service_map::InstallProgressHandles; use crate::util::actor::concurrent::ConcurrentActor; use crate::util::io::{create_file, AsyncReadStream, TermSize}; use crate::util::net::WebSocketExt; -use crate::util::serde::{NoOutput, Pem}; +use crate::util::serde::Pem; use crate::util::Never; use crate::volume::data_dir; -use crate::{CAP_1_KiB, DATA_DIR, PACKAGE_DATA}; +use crate::{CAP_1_KiB, DATA_DIR}; pub mod action; pub mod cli; @@ -62,6 +66,7 @@ mod service_actor; pub mod service_map; pub mod start_stop; mod transition; +pub mod uninstall; mod util; pub use service_map::ServiceMap; @@ -116,99 +121,35 @@ impl ServiceRef { pub fn weak(&self) -> Weak { Arc::downgrade(&self.0) } - pub async fn uninstall( - self, - target_version: Option, - soft: bool, - force: bool, - ) -> Result<(), Error> { - let uninit_res = self - .seed - .persistent_container - .execute::( - Guid::new(), - ProcedureName::PackageUninit, - to_value(&target_version)?, - None, - ) // TODO timeout - .await; + pub async fn uninstall(self, uninit: ExitParams, soft: bool, force: bool) -> Result<(), Error> { + let id = self.seed.persistent_container.s9pk.as_manifest().id.clone(); + let ctx = self.seed.ctx.clone(); + let uninit_res = self.shutdown(Some(uninit.clone())).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?; - if target_version.is_none() { - if let Some(pde) = ctx - .db - .mutate(|d| { - if let Some(pde) = d - .as_public_mut() - .as_package_data_mut() - .remove(&id)? - .map(|d| d.de()) - .transpose()? - { - d.as_private_mut().as_available_ports_mut().mutate(|p| { - p.free( - pde.hosts - .0 - .values() - .flat_map(|h| h.bindings.values()) - .flat_map(|b| { - b.net - .assigned_port - .into_iter() - .chain(b.net.assigned_ssl_port) - }), - ); - Ok(()) - })?; - d.as_private_mut().as_package_stores_mut().remove(&id)?; - Ok(Some(pde)) - } else { - Ok(None) - } - }) - .await - .result? - { - let state = pde.state_info.expect_removing()?; - 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?; - } - } - } + if uninit.is_uninstall() { + uninstall::cleanup(&ctx, &id, soft).await?; } Ok(()) } - pub async fn shutdown(self) -> Result<(), Error> { + pub async fn shutdown(self, uninit: Option) -> Result<(), Error> { if let Some((hdl, shutdown)) = self.seed.persistent_container.rpc_server.send_replace(None) { self.seed .persistent_container .rpc_client - .request(rpc::Exit, Empty {}) + .request( + rpc::Exit, + uninit.clone().unwrap_or_else(|| { + ExitParams::target_version( + &*self.seed.persistent_container.s9pk.as_manifest().version, + ) + }), + ) .await?; shutdown.shutdown(); tokio::time::timeout(Duration::from_secs(30), hdl) @@ -234,11 +175,12 @@ impl ServiceRef { ) })? .persistent_container - .exit() + .exit(uninit) .await?; Ok(()) } } + impl Deref for ServiceRef { type Target = Service; fn deref(&self) -> &Self::Target { @@ -257,7 +199,14 @@ pub struct Service { } impl Service { #[instrument(skip_all)] - async fn new(ctx: RpcContext, s9pk: S9pk, start: StartStop) -> Result { + async fn new( + ctx: RpcContext, + s9pk: S9pk, + start: StartStop, + procedure_id: Guid, + init_kind: Option, + recovery_source: Option, + ) -> Result { let id = s9pk.as_manifest().id.clone(); let persistent_container = PersistentContainer::new( &ctx, s9pk, @@ -277,11 +226,28 @@ impl Service { seed, } .into(); + let recovery_guard = if let Some(recovery_source) = &recovery_source { + Some( + service + .seed + .persistent_container + .mount_backup(recovery_source.path().join("data"), ReadOnly) + .await?, + ) + } else { + None + }; service .seed .persistent_container - .init(service.weak()) + .init(service.weak(), procedure_id, init_kind) .await?; + if let Some(recovery_guard) = recovery_guard { + recovery_guard.unmount(true).await?; + } + if let Some(recovery_source) = recovery_source { + recovery_source.unmount().await?; + } Ok(service) } @@ -305,7 +271,9 @@ impl Service { } else { StartStop::Stop }; - Self::new(ctx, s9pk, start_stop).await.map(Some) + Self::new(ctx, s9pk, start_stop, Guid::new(), None, None::) + .await + .map(Some) } }; let s9pk_dir = Path::new(DATA_DIR).join(PKG_ARCHIVE_DIR).join("installed"); // TODO: make this based on hash @@ -328,7 +296,7 @@ impl Service { tracing::debug!("{e:?}") }) { if let Ok(service) = - Self::install(ctx.clone(), s9pk, None, None::, None) + Self::install(ctx.clone(), s9pk, &None, None, None::, None) .await .map_err(|e| { tracing::error!("Error installing service: {e}"); @@ -365,7 +333,8 @@ impl Service { if let Ok(service) = Self::install( ctx.clone(), s9pk, - Some(s.as_manifest().as_version().de()?), + &None, + Some(entry.as_status().de()?.run_state()), None::, None, ) @@ -407,27 +376,66 @@ impl Service { tracing::error!("Error opening s9pk for removal: {e}"); tracing::debug!("{e:?}") }) { - if let Ok(service) = Self::new(ctx.clone(), s9pk, StartStop::Stop) - .await - .map_err(|e| { - tracing::error!("Error loading service for removal: {e}"); - tracing::debug!("{e:?}") - }) + let err_state = |e: Error| async move { + let state = crate::status::MainStatus::Error { + on_rebuild: StartStop::Stop, + message: e.to_string(), + debug: Some(format!("{e:?}")), + }; + ctx.db + .mutate(move |db| { + if let Some(pde) = + db.as_public_mut().as_package_data_mut().as_idx_mut(&id) + { + pde.as_state_info_mut().map_mutate(|s| { + Ok(PackageState::Installed(InstalledState { + manifest: s + .as_manifest(ManifestPreference::Old) + .clone(), + })) + })?; + pde.as_status_mut().ser(&state)?; + } + Ok(()) + }) + .await + .result + }; + match Self::new( + ctx.clone(), + s9pk, + StartStop::Stop, + Guid::new(), + None, + None::, + ) + .await { - match service.uninstall(None, false, false).await { + Ok(service) => match service + .uninstall(ExitParams::uninstall(), false, false) + .await + { Err(e) => { tracing::error!("Error uninstalling service: {e}"); - tracing::debug!("{e:?}") + tracing::debug!("{e:?}"); + err_state(e).await?; } Ok(()) => return Ok(None), + }, + Err(e) => { + tracing::error!("Error loading service for removal: {e}"); + tracing::debug!("{e:?}"); + err_state(e).await?; } } } - ctx.db - .mutate(|v| v.as_public_mut().as_package_data_mut().remove(id)) - .await - .result?; + if disposition == LoadDisposition::Retry { + ctx.db + .mutate(|v| v.as_public_mut().as_package_data_mut().remove(id)) + .await + .result?; + } Ok(None) } @@ -445,53 +453,30 @@ impl Service { pub async fn install( ctx: RpcContext, s9pk: S9pk, - mut src_version: Option, + registry: &Option, + prev_state: Option, recovery_source: Option, progress: Option, ) -> Result { let manifest = s9pk.as_manifest().clone(); let developer_key = s9pk.as_archive().signer(); let icon = s9pk.icon_data_url().await?; - let service = Self::new(ctx.clone(), s9pk, StartStop::Stop).await?; - - if let Some(recovery_source) = recovery_source { - service - .actor - .send( - Guid::new(), - transition::restore::Restore { - path: recovery_source.path().to_path_buf(), - }, - ) - .await??; - recovery_source.unmount().await?; - src_version = Some( - service - .seed - .persistent_container - .s9pk - .as_manifest() - .version - .clone(), - ); - } - let procedure_id = Guid::new(); - service - .seed - .persistent_container - .execute::( - procedure_id.clone(), - ProcedureName::PackageInit, - to_value(&src_version)?, - None, - ) // TODO timeout - .await - .with_kind(if src_version.is_some() { - ErrorKind::UpdateFailed + let service = Self::new( + ctx.clone(), + s9pk, + StartStop::Stop, + procedure_id.clone(), + Some(if recovery_source.is_some() { + InitKind::Restore + } else if prev_state.is_some() { + InitKind::Update } else { - ErrorKind::InstallFailed - })?; // TODO: handle cancellation + InitKind::Install + }), + recovery_source, + ) + .await?; if let Some(mut progress) = progress { progress.finalization_progress.complete(); @@ -501,19 +486,19 @@ impl Service { let peek = ctx.db.peek().await; let mut action_input: BTreeMap = BTreeMap::new(); - let requested_actions: BTreeSet<_> = peek + let tasks: BTreeSet<_> = peek .as_public() .as_package_data() .as_entries()? .into_iter() .map(|(_, pde)| { Ok(pde - .as_requested_actions() + .as_tasks() .as_entries()? .into_iter() .map(|(_, r)| { - Ok::<_, Error>(if r.as_request().as_package_id().de()? == manifest.id { - Some(r.as_request().as_action_id().de()?) + Ok::<_, Error>(if r.as_task().as_package_id().de()? == manifest.id { + Some(r.as_task().as_action_id().de()?) } else { None }) @@ -523,27 +508,30 @@ impl Service { .flatten_ok() .map(|a| a.and_then(|a| a)) .try_collect()?; - for action_id in requested_actions { - if let Some(input) = service - .get_action_input(procedure_id.clone(), action_id.clone()) - .await? - .and_then(|i| i.value) + for action_id in tasks { + if peek + .as_public() + .as_package_data() + .as_idx(&manifest.id) + .or_not_found(&manifest.id)? + .as_actions() + .contains_key(&action_id)? { - action_input.insert(action_id, input); + if let Some(input) = service + .get_action_input(procedure_id.clone(), action_id.clone()) + .await? + .and_then(|i| i.value) + { + action_input.insert(action_id, input); + } } } ctx.db .mutate(|db| { for (action_id, input) in &action_input { for (_, pde) in db.as_public_mut().as_package_data_mut().as_entries_mut()? { - pde.as_requested_actions_mut().mutate(|requested_actions| { - Ok(update_requested_actions( - requested_actions, - &manifest.id, - action_id, - input, - false, - )) + pde.as_tasks_mut().mutate(|tasks| { + Ok(update_tasks(tasks, &manifest.id, action_id, input, false)) })?; } } @@ -552,13 +540,18 @@ impl Service { .as_package_data_mut() .as_idx_mut(&manifest.id) .or_not_found(&manifest.id)?; + let actions = entry.as_actions().keys()?; + entry.as_tasks_mut().mutate(|t| { + Ok(t.retain(|_, v| { + v.task.package_id != manifest.id || actions.contains(&v.task.action_id) + })) + })?; entry .as_state_info_mut() .ser(&PackageState::Installed(InstalledState { manifest }))?; entry.as_developer_key_mut().ser(&Pem::new(developer_key))?; entry.as_icon_mut().ser(&icon)?; - // TODO: marketplace url - // TODO: dependency info + entry.as_registry_mut().ser(registry)?; Ok(()) }) @@ -583,7 +576,7 @@ impl Service { .send( Guid::new(), transition::backup::Backup { - path: guard.path().to_path_buf(), + path: guard.path().join("data"), }, ) .await?? diff --git a/core/startos/src/service/persistent_container.rs b/core/startos/src/service/persistent_container.rs index b04c43cda..37cc2cdbb 100644 --- a/core/startos/src/service/persistent_container.rs +++ b/core/startos/src/service/persistent_container.rs @@ -31,7 +31,9 @@ use crate::s9pk::merkle_archive::source::FileSource; use crate::s9pk::S9pk; use crate::service::effects::context::EffectContext; use crate::service::effects::handler; -use crate::service::rpc::{CallbackHandle, CallbackId, CallbackParams}; +use crate::service::rpc::{ + CallbackHandle, CallbackId, CallbackParams, ExitParams, InitKind, InitParams, +}; use crate::service::start_stop::StartStop; use crate::service::transition::{TransitionKind, TransitionState}; use crate::service::{rpc, RunningStatus, Service}; @@ -369,7 +371,12 @@ impl PersistentContainer { } #[instrument(skip_all)] - pub async fn init(&self, seed: Weak) -> Result<(), Error> { + pub async fn init( + &self, + seed: Weak, + procedure_id: Guid, + kind: Option, + ) -> Result<(), Error> { let socket_server_context = EffectContext::new(seed); let server = Server::new(move || ready(Ok(socket_server_context.clone())), handler()); let path = self @@ -424,7 +431,15 @@ impl PersistentContainer { )); } - self.rpc_client.request(rpc::Init, Empty {}).await?; + self.rpc_client + .request( + rpc::Init, + InitParams { + id: procedure_id, + kind, + }, + ) + .await?; self.state.send_modify(|s| s.rt_initialized = true); @@ -435,10 +450,12 @@ impl PersistentContainer { fn destroy( &mut self, error: bool, + uninit: Option, ) -> Option> + 'static> { if self.destroyed { return None; } + let version = self.s9pk.as_manifest().version.clone(); let rpc_client = self.rpc_client.clone(); let rpc_server = self.rpc_server.send_replace(None); let js_mount = self.js_mount.take(); @@ -469,7 +486,14 @@ impl PersistentContainer { } } if let Some((hdl, shutdown)) = rpc_server { - errs.handle(rpc_client.request(rpc::Exit, Empty {}).await); + errs.handle( + rpc_client + .request( + rpc::Exit, + uninit.unwrap_or_else(|| ExitParams::target_version(&*version)), + ) + .await, + ); shutdown.shutdown(); errs.handle(hdl.await.with_kind(ErrorKind::Cancelled)); } @@ -494,8 +518,8 @@ impl PersistentContainer { } #[instrument(skip_all)] - pub async fn exit(mut self) -> Result<(), Error> { - if let Some(destroy) = self.destroy(false) { + pub async fn exit(mut self, uninit: Option) -> Result<(), Error> { + if let Some(destroy) = self.destroy(false, uninit) { destroy.await?; } tracing::info!("Service for {} exited", self.s9pk.as_manifest().id); @@ -613,7 +637,7 @@ impl PersistentContainer { impl Drop for PersistentContainer { fn drop(&mut self) { - if let Some(destroy) = self.destroy(true) { + if let Some(destroy) = self.destroy(true, None) { tokio::spawn(async move { destroy.await.log_err() }); } } diff --git a/core/startos/src/service/rpc.rs b/core/startos/src/service/rpc.rs index 61eb5d592..33949587e 100644 --- a/core/startos/src/service/rpc.rs +++ b/core/startos/src/service/rpc.rs @@ -4,8 +4,9 @@ use std::sync::{Arc, Weak}; use std::time::Duration; use clap::builder::ValueParserFactory; +use exver::{ExtendedVersion, VersionRange}; use imbl::Vector; -use imbl_value::Value; +use imbl_value::{InternedString, Value}; use models::{FromStrParser, ProcedureName}; use rpc_toolkit::yajrc::RpcMethod; use rpc_toolkit::Empty; @@ -16,10 +17,25 @@ use crate::rpc_continuations::Guid; use crate::service::persistent_container::PersistentContainer; use crate::util::Never; +#[derive(Clone, serde::Deserialize, serde::Serialize, TS)] +#[serde(rename_all = "kebab-case")] +pub enum InitKind { + Install, + Update, + Restore, +} + +#[derive(Clone, serde::Deserialize, serde::Serialize, TS)] +#[serde(rename_all = "camelCase")] +pub struct InitParams { + pub id: Guid, + pub kind: Option, +} + #[derive(Clone)] pub struct Init; impl RpcMethod for Init { - type Params = Empty; + type Params = InitParams; type Response = (); fn as_str<'a>(&'a self) -> &'a str { "init" @@ -70,10 +86,42 @@ impl serde::Serialize for Stop { } } +#[derive(Clone, serde::Deserialize, serde::Serialize, TS)] +#[serde(rename_all = "camelCase")] +pub struct ExitParams { + id: Guid, + /// VersionRange or ExtendedVersion + #[ts(type = "string | null")] + target: Option, +} +impl ExitParams { + pub fn target_version(version: &ExtendedVersion) -> Self { + Self { + id: Guid::new(), + target: Some(InternedString::from_display(version)), + } + } + pub fn target_range(range: &VersionRange) -> Self { + Self { + id: Guid::new(), + target: Some(InternedString::from_display(range)), + } + } + pub fn uninstall() -> Self { + Self { + id: Guid::new(), + target: None, + } + } + pub fn is_uninstall(&self) -> bool { + self.target.is_none() + } +} + #[derive(Clone)] pub struct Exit; impl RpcMethod for Exit { - type Params = Empty; + type Params = ExitParams; type Response = (); fn as_str<'a>(&'a self) -> &'a str { "exit" diff --git a/core/startos/src/service/service_actor.rs b/core/startos/src/service/service_actor.rs index 422198441..0019cd854 100644 --- a/core/startos/src/service/service_actor.rs +++ b/core/startos/src/service/service_actor.rs @@ -58,10 +58,6 @@ async fn service_actor_loop( transition_state: Some(TransitionKind::Restarting), .. } => MainStatus::Restarting, - ServiceStateKinds { - transition_state: Some(TransitionKind::Restoring), - .. - } => MainStatus::Restoring, ServiceStateKinds { transition_state: Some(TransitionKind::BackingUp), .. diff --git a/core/startos/src/service/service_map.rs b/core/startos/src/service/service_map.rs index fea8184df..37aebdf69 100644 --- a/core/startos/src/service/service_map.rs +++ b/core/startos/src/service/service_map.rs @@ -3,15 +3,16 @@ use std::sync::Arc; use std::time::Duration; use color_eyre::eyre::eyre; +use exver::VersionRange; use futures::future::{BoxFuture, Fuse}; use futures::stream::FuturesUnordered; use futures::{Future, FutureExt, StreamExt, TryFutureExt}; use helpers::NonDetachingJoinHandle; use imbl::OrdMap; -use imbl_value::InternedString; use models::ErrorData; use tokio::sync::{oneshot, Mutex, OwnedRwLockReadGuard, OwnedRwLockWriteGuard, RwLock}; use tracing::instrument; +use url::Url; use crate::context::RpcContext; use crate::db::model::package::{ @@ -22,9 +23,11 @@ use crate::install::PKG_ARCHIVE_DIR; use crate::notifications::{notify, NotificationLevel}; use crate::prelude::*; use crate::progress::{FullProgressTracker, PhaseProgressTrackerHandle, ProgressTrackerWriter}; +use crate::rpc_continuations::Guid; use crate::s9pk::manifest::PackageId; use crate::s9pk::merkle_archive::source::FileSource; use crate::s9pk::S9pk; +use crate::service::rpc::ExitParams; use crate::service::start_stop::StartStop; use crate::service::{LoadDisposition, Service, ServiceRef}; use crate::status::MainStatus; @@ -94,7 +97,7 @@ impl ServiceMap { let mut shutdown_err = Ok(()); let mut service = self.get_mut(id).await; if let Some(service) = service.take() { - shutdown_err = service.shutdown().await; + shutdown_err = service.shutdown(None).await; } match Service::load(ctx, id, disposition).await { Ok(s) => *service = s.into(), @@ -130,6 +133,7 @@ impl ServiceMap { &self, ctx: RpcContext, s9pk: F, + registry: Option, recovery_source: Option, progress: Option, ) -> Result @@ -181,6 +185,7 @@ impl ServiceMap { let manifest = manifest.clone(); let id = id.clone(); let install_progress = progress.snapshot(); + let registry = registry.clone(); move |db| { if let Some(pde) = db.as_public_mut().as_package_data_mut().as_idx_mut(&id) @@ -212,13 +217,13 @@ impl ServiceMap { }, data_version: None, status: MainStatus::Stopped, - registry: None, + registry, developer_key: Pem::new(developer_key), icon, last_backup: None, current_dependencies: Default::default(), actions: Default::default(), - requested_actions: Default::default(), + tasks: Default::default(), service_interfaces: Default::default(), hosts: Default::default(), store_exposed_dependents: Default::default(), @@ -287,35 +292,59 @@ impl ServiceMap { ErrorKind::InvalidRequest, "cannot restore over existing package" ); - let version = service + let prev_version = service .seed .persistent_container .s9pk .as_manifest() .version .clone(); - service - .uninstall(Some(s9pk.as_manifest().version.clone()), false, false) - .await?; + let prev_can_migrate_to = &service + .seed + .persistent_container + .s9pk + .as_manifest() + .can_migrate_to; + let next_version = &s9pk.as_manifest().version; + let next_can_migrate_from = &s9pk.as_manifest().can_migrate_from; + let uninit = if prev_version.satisfies(next_can_migrate_from) { + ExitParams::target_version(&*prev_version) + } else if next_version.satisfies(prev_can_migrate_to) { + ExitParams::target_version(&s9pk.as_manifest().version) + } else { + ExitParams::target_range(&VersionRange::and( + prev_can_migrate_to.clone(), + next_can_migrate_from.clone(), + )) + }; + let run_state = service + .seed + .persistent_container + .state + .borrow() + .desired_state; + service.uninstall(uninit, false, false).await?; progress.complete(); - Some(version) + Some(run_state) } else { None }; - *service = Some( - Service::install( - ctx, - s9pk, - prev, - recovery_source, - Some(InstallProgressHandles { - finalization_progress, - progress, - }), - ) - .await? - .into(), - ); + let new_service = Service::install( + ctx, + s9pk, + ®istry, + prev, + recovery_source, + Some(InstallProgressHandles { + finalization_progress, + progress, + }), + ) + .await?; + if prev == Some(StartStop::Start) { + new_service.start(Guid::new()).await?; + } + *service = Some(new_service.into()); drop(service); sync_progress_task.await.map_err(|_| { @@ -359,14 +388,23 @@ impl ServiceMap { ServiceRefReloadCancelGuard::new(ctx.clone(), id.clone(), "Uninstall", None) .handle_last(async move { if let Some(service) = guard.take() { - let res = service.uninstall(None, soft, force).await; + let res = service + .uninstall(ExitParams::uninstall(), soft, force) + .await; drop(guard); res } else { - Err(Error::new( - eyre!("service {id} failed to initialize - cannot remove gracefully"), - ErrorKind::Uninitialized, - )) + if force { + super::uninstall::cleanup(&ctx, &id, soft).await?; + Ok(()) + } else { + Err(Error::new( + eyre!( + "service {id} failed to initialize - cannot remove gracefully" + ), + ErrorKind::Uninitialized, + )) + } } }) .await?; @@ -382,7 +420,7 @@ impl ServiceMap { for service in lock.values().cloned() { futs.push(async move { if let Some(service) = service.write_owned().await.take() { - service.shutdown().await? + service.shutdown(None).await? } Ok::<_, Error>(()) }); diff --git a/core/startos/src/service/transition/mod.rs b/core/startos/src/service/transition/mod.rs index a6a41073b..2c90e740c 100644 --- a/core/startos/src/service/transition/mod.rs +++ b/core/startos/src/service/transition/mod.rs @@ -10,13 +10,11 @@ use crate::util::future::{CancellationHandle, RemoteCancellable}; pub mod backup; pub mod restart; -pub mod restore; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] pub enum TransitionKind { BackingUp, Restarting, - Restoring, } /// Used only in the manager/mod and is used to keep track of the state of the manager during the diff --git a/core/startos/src/service/transition/restore.rs b/core/startos/src/service/transition/restore.rs deleted file mode 100644 index 559dbe8ec..000000000 --- a/core/startos/src/service/transition/restore.rs +++ /dev/null @@ -1,76 +0,0 @@ -use std::path::PathBuf; - -use futures::channel::oneshot; -use futures::FutureExt; -use models::ProcedureName; - -use crate::disk::mount::filesystem::ReadOnly; -use crate::prelude::*; -use crate::rpc_continuations::Guid; -use crate::service::transition::{TransitionKind, TransitionState}; -use crate::service::ServiceActor; -use crate::util::actor::background::BackgroundJobQueue; -use crate::util::actor::{ConflictBuilder, Handler}; -use crate::util::future::RemoteCancellable; -use crate::util::serde::NoOutput; - -pub(in crate::service) struct Restore { - pub path: PathBuf, -} -impl Handler for ServiceActor { - type Response = Result<(), Error>; - fn conflicts_with(_: &Restore) -> ConflictBuilder { - ConflictBuilder::everything() - } - async fn handle( - &mut self, - id: Guid, - restore: Restore, - jobs: &BackgroundJobQueue, - ) -> Self::Response { - // So Need a handle to just a single field in the state - let path = restore.path; - let seed = self.0.clone(); - - let state = self.0.persistent_container.state.clone(); - let (send_res, recv_res) = oneshot::channel(); - let transition = RemoteCancellable::new( - async move { - let backup_guard = seed - .persistent_container - .mount_backup(path, ReadOnly) - .await?; - seed.persistent_container - .execute::(id, ProcedureName::RestoreBackup, Value::Null, None) - .await?; - backup_guard.unmount(true).await?; - - state.send_modify(|s| { - s.transition_state.take(); - }); - Ok::<_, Error>(()) - } - .map(|res| send_res.send(res)), - ); - let cancel_handle = transition.cancellation_handle(); - jobs.add_job(transition.map(|_| ())); - - let mut old = None; - self.0.persistent_container.state.send_modify(|s| { - old = std::mem::replace( - &mut s.transition_state, - Some(TransitionState { - kind: TransitionKind::Restoring, - cancel_handle, - }), - ) - }); - if let Some(t) = old { - t.abort().await; - } - match recv_res.await { - Err(_) => Err(Error::new(eyre!("Restoring canceled"), ErrorKind::Unknown)), - Ok(res) => res, - } - } -} diff --git a/core/startos/src/service/uninstall.rs b/core/startos/src/service/uninstall.rs new file mode 100644 index 000000000..9a8f14f5b --- /dev/null +++ b/core/startos/src/service/uninstall.rs @@ -0,0 +1,70 @@ +use std::path::Path; + +use models::PackageId; + +use crate::context::RpcContext; +use crate::prelude::*; +use crate::volume::data_dir; +use crate::{DATA_DIR, PACKAGE_DATA}; + +pub async fn cleanup(ctx: &RpcContext, id: &PackageId, soft: bool) -> Result<(), Error> { + Ok( + if let Some(pde) = ctx + .db + .mutate(|d| { + if let Some(pde) = d + .as_public_mut() + .as_package_data_mut() + .remove(&id)? + .map(|d| d.de()) + .transpose()? + { + d.as_private_mut().as_available_ports_mut().mutate(|p| { + p.free( + pde.hosts + .0 + .values() + .flat_map(|h| h.bindings.values()) + .flat_map(|b| { + b.net + .assigned_port + .into_iter() + .chain(b.net.assigned_ssl_port) + }), + ); + Ok(()) + })?; + d.as_private_mut().as_package_stores_mut().remove(&id)?; + Ok(Some(pde)) + } else { + Ok(None) + } + }) + .await + .result? + { + let state = pde.state_info.expect_removing()?; + 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?; + } + } + }, + ) +} diff --git a/core/startos/src/setup.rs b/core/startos/src/setup.rs index 046974cd0..ba5477a54 100644 --- a/core/startos/src/setup.rs +++ b/core/startos/src/setup.rs @@ -8,7 +8,7 @@ use const_format::formatcp; use josekit::jwk::Jwk; use patch_db::json_ptr::ROOT; use rpc_toolkit::yajrc::RpcError; -use rpc_toolkit::{from_fn_async, Context, HandlerExt, ParentHandler}; +use rpc_toolkit::{from_fn_async, Context, Empty, HandlerExt, ParentHandler}; use serde::{Deserialize, Serialize}; use tokio::io::AsyncWriteExt; use tokio::process::Command; @@ -32,15 +32,15 @@ use crate::disk::mount::guard::{GenericMountGuard, TmpMountGuard}; use crate::disk::util::{pvscan, recovery_info, DiskInfo, StartOsRecoveryInfo}; use crate::disk::REPAIR_DISK_PATH; use crate::init::{init, InitPhases, InitResult}; -use crate::net::net_controller::NetController; use crate::net::ssl::root_ca_start_time; use crate::prelude::*; use crate::progress::{FullProgress, PhaseProgressTrackerHandle}; use crate::rpc_continuations::Guid; +use crate::system::sync_kiosk; use crate::util::crypto::EncryptedWire; use crate::util::io::{create_file, dir_copy, dir_size, Counter}; use crate::util::Invoke; -use crate::{Error, ErrorKind, ResultExt, DATA_DIR, MAIN_DATA, PACKAGE_DATA}; +use crate::{Error, ErrorKind, ResultExt, DATA_DIR, MAIN_DATA, PACKAGE_DATA, PLATFORM}; pub fn setup() -> ParentHandler { ParentHandler::new() @@ -62,6 +62,11 @@ pub fn setup() -> ParentHandler { .no_cli(), ) .subcommand("exit", from_fn_async(exit).no_cli()) + .subcommand("logs", crate::system::logs::()) + .subcommand( + "logs", + from_fn_async(crate::logs::cli_logs::).no_display(), + ) } pub fn disk() -> ParentHandler { @@ -80,6 +85,7 @@ pub async fn list_disks(ctx: SetupContext) -> Result, Error> { async fn setup_init( ctx: &SetupContext, password: Option, + kiosk: Option, init_phases: InitPhases, ) -> Result<(AccountInfo, InitResult), Error> { let init_result = init(&ctx.webserver, &ctx.config, init_phases).await?; @@ -93,15 +99,19 @@ async fn setup_init( account.set_password(password)?; } account.save(m)?; - m.as_public_mut() - .as_server_info_mut() - .as_password_hash_mut() - .ser(&account.password)?; + let info = m.as_public_mut().as_server_info_mut(); + info.as_password_hash_mut().ser(&account.password)?; + if let Some(kiosk) = kiosk { + info.as_kiosk_mut().ser(&Some(kiosk))?; + } + Ok(account) }) .await .result?; + sync_kiosk(kiosk).await?; + if let Some(password) = &password { write_shadow(&password).await?; } @@ -116,6 +126,8 @@ pub struct AttachParams { #[serde(rename = "startOsPassword")] password: Option, guid: Arc, + #[ts(optional)] + kiosk: Option, } pub async fn attach( @@ -123,10 +135,11 @@ pub async fn attach( AttachParams { password, guid: disk_guid, + kiosk, }: AttachParams, ) -> Result { let setup_ctx = ctx.clone(); - ctx.run_setup(|| async move { + ctx.run_setup(move || async move { let progress = &setup_ctx.progress; let mut disk_phase = progress.add_phase("Opening data drive".into(), Some(10)); let init_phases = InitPhases::new(&progress); @@ -173,7 +186,7 @@ pub async fn attach( } disk_phase.complete(); - let (account, net_ctrl) = setup_init(&setup_ctx, password, init_phases).await?; + let (account, net_ctrl) = setup_init(&setup_ctx, password, kiosk, init_phases).await?; let rpc_ctx = RpcContext::init(&setup_ctx.webserver, &setup_ctx.config, disk_guid, Some(net_ctrl), rpc_ctx_phases).await?; @@ -293,6 +306,8 @@ pub struct SetupExecuteParams { start_os_logicalname: PathBuf, start_os_password: EncryptedWire, recovery_source: Option>, + #[ts(optional)] + kiosk: Option, } // #[command(rpc_only)] @@ -302,6 +317,7 @@ pub async fn execute( start_os_logicalname, start_os_password, recovery_source, + kiosk, }: SetupExecuteParams, ) -> Result { let start_os_password = match start_os_password.decrypt(&ctx) { @@ -333,7 +349,15 @@ pub async fn execute( }; let setup_ctx = ctx.clone(); - ctx.run_setup(|| execute_inner(setup_ctx, start_os_logicalname, start_os_password, recovery))?; + ctx.run_setup(move || { + execute_inner( + setup_ctx, + start_os_logicalname, + start_os_password, + recovery, + kiosk, + ) + })?; Ok(ctx.progress().await) } @@ -376,6 +400,7 @@ pub async fn execute_inner( start_os_logicalname: PathBuf, start_os_password: String, recovery_source: Option>, + kiosk: Option, ) -> Result<(SetupResult, RpcContext), Error> { let progress = &ctx.progress; let mut disk_phase = progress.add_phase("Formatting data drive".into(), Some(10)); @@ -429,14 +454,15 @@ pub async fn execute_inner( target, server_id, password, + kiosk, progress, ) .await } Some(RecoverySource::Migrate { guid: old_guid }) => { - migrate(&ctx, guid, &old_guid, start_os_password, progress).await + migrate(&ctx, guid, &old_guid, start_os_password, kiosk, progress).await } - None => fresh_setup(&ctx, guid, &start_os_password, progress).await, + None => fresh_setup(&ctx, guid, &start_os_password, kiosk, progress).await, } } @@ -450,6 +476,7 @@ async fn fresh_setup( ctx: &SetupContext, guid: Arc, start_os_password: &str, + kiosk: Option, SetupExecuteProgress { init_phases, rpc_ctx_phases, @@ -458,7 +485,9 @@ async fn fresh_setup( ) -> Result<(SetupResult, RpcContext), Error> { let account = AccountInfo::new(start_os_password, root_ca_start_time().await?)?; let db = ctx.db().await?; - db.put(&ROOT, &Database::init(&account)?).await?; + let kiosk = Some(kiosk.unwrap_or(true)).filter(|_| &*PLATFORM != "raspberrypi"); + sync_kiosk(kiosk).await?; + db.put(&ROOT, &Database::init(&account, kiosk)?).await?; drop(db); let init_result = init(&ctx.webserver, &ctx.config, init_phases).await?; @@ -485,6 +514,7 @@ async fn recover( recovery_source: BackupTargetFS, server_id: String, recovery_password: String, + kiosk: Option, progress: SetupExecuteProgress, ) -> Result<(SetupResult, RpcContext), Error> { let recovery_source = TmpMountGuard::mount(&recovery_source, ReadWrite).await?; @@ -495,6 +525,7 @@ async fn recover( recovery_source, &server_id, &recovery_password, + kiosk, progress, ) .await @@ -506,6 +537,7 @@ async fn migrate( guid: Arc, old_guid: &str, start_os_password: String, + kiosk: Option, SetupExecuteProgress { init_phases, restore_phase, @@ -583,7 +615,7 @@ async fn migrate( crate::disk::main::export(&old_guid, "/media/startos/migrate").await?; restore_phase.complete(); - let (account, net_ctrl) = setup_init(&ctx, Some(start_os_password), init_phases).await?; + let (account, net_ctrl) = setup_init(&ctx, Some(start_os_password), kiosk, init_phases).await?; let rpc_ctx = RpcContext::init( &ctx.webserver, diff --git a/core/startos/src/status/mod.rs b/core/startos/src/status/mod.rs index cf1ca0658..02e4e787c 100644 --- a/core/startos/src/status/mod.rs +++ b/core/startos/src/status/mod.rs @@ -24,7 +24,6 @@ pub enum MainStatus { }, Stopped, Restarting, - Restoring, Stopping, Starting { #[ts(as = "BTreeMap")] @@ -54,7 +53,6 @@ impl MainStatus { .. } => true, MainStatus::Stopped - | MainStatus::Restoring | MainStatus::Stopping { .. } | MainStatus::BackingUp { on_complete: StartStop::Stop, @@ -65,6 +63,13 @@ impl MainStatus { } => false, } } + pub fn run_state(&self) -> StartStop { + if self.running() { + StartStop::Start + } else { + StartStop::Stop + } + } pub fn major_changes(&self, other: &Self) -> bool { match (self, other) { @@ -73,7 +78,6 @@ impl MainStatus { (MainStatus::Stopping, MainStatus::Stopping) => false, (MainStatus::Stopped, MainStatus::Stopped) => false, (MainStatus::Restarting, MainStatus::Restarting) => false, - (MainStatus::Restoring, MainStatus::Restoring) => false, (MainStatus::BackingUp { .. }, MainStatus::BackingUp { .. }) => false, (MainStatus::Error { .. }, MainStatus::Error { .. }) => false, _ => true, @@ -95,7 +99,6 @@ impl MainStatus { MainStatus::Running { health, .. } | MainStatus::Starting { health } => Some(health), MainStatus::BackingUp { .. } | MainStatus::Stopped - | MainStatus::Restoring | MainStatus::Stopping { .. } | MainStatus::Restarting | MainStatus::Error { .. } => None, diff --git a/core/startos/src/system.rs b/core/startos/src/system.rs index b4e9015e9..3d8eb9dab 100644 --- a/core/startos/src/system.rs +++ b/core/startos/src/system.rs @@ -248,6 +248,75 @@ pub fn kernel_logs>() -> ParentHandler) -> Result<(), Error> { + if let Some(kiosk) = kiosk { + if kiosk { + enable_kiosk().await?; + } else { + disable_kiosk().await?; + } + } + Ok(()) +} + +pub async fn enable_kiosk() -> Result<(), Error> { + if tokio::fs::metadata(DISABLE_KIOSK_PATH).await.is_ok() { + crate::util::io::delete_file(DISABLE_KIOSK_PATH).await?; + } + Ok(()) +} + +pub async fn disable_kiosk() -> Result<(), Error> { + crate::util::io::create_file(DISABLE_KIOSK_PATH) + .await? + .sync_all() + .await?; + Ok(()) +} + +pub fn kiosk() -> ParentHandler { + ParentHandler::::new() + .subcommand( + "enable", + from_fn_async(|ctx: RpcContext| async move { + ctx.db + .mutate(|db| { + db.as_public_mut() + .as_server_info_mut() + .as_kiosk_mut() + .ser(&Some(true)) + }) + .await + .result?; + enable_kiosk().await + }) + .no_display() + .with_about("Enable kiosk mode") + .with_call_remote::(), + ) + .subcommand( + "disable", + from_fn_async(|ctx: RpcContext| async move { + ctx.db + .mutate(|db| { + db.as_public_mut() + .as_server_info_mut() + .as_kiosk_mut() + .ser(&Some(false)) + }) + .await + .result?; + disable_kiosk().await + }) + .no_display() + .with_about("Disable kiosk mode") + .with_call_remote::(), + ) +} + #[derive(Serialize, Deserialize)] pub struct MetricLeaf { value: T, diff --git a/core/startos/src/version/update_details/v0_4_0.md b/core/startos/src/version/update_details/v0_4_0.md index 3017ae6a1..b13c367db 100644 --- a/core/startos/src/version/update_details/v0_4_0.md +++ b/core/startos/src/version/update_details/v0_4_0.md @@ -17,7 +17,7 @@ v0.4.0 is a complete rewrite of StartOS, almost nothing survived. After nearly s ## Changelog - [Improve user interface](#user-interface) -- [Add transaltions](#translations) +- [Add translations](#translations) - [Switch to lxc-based container runtime](#lxc) - [Update s9pk archive format](#s9pk-archive-format) - [Improve Actions](#actions) diff --git a/core/startos/src/version/v0_3_6_alpha_0.rs b/core/startos/src/version/v0_3_6_alpha_0.rs index 2be315327..b772d6c0b 100644 --- a/core/startos/src/version/v0_3_6_alpha_0.rs +++ b/core/startos/src/version/v0_3_6_alpha_0.rs @@ -355,6 +355,7 @@ impl VersionT for Version { .install( ctx.clone(), || crate::s9pk::load(file.clone(), || Ok(key.de()?.0), None), + None, None::, None, ) diff --git a/core/startos/src/version/v0_4_0_alpha_2.rs b/core/startos/src/version/v0_4_0_alpha_2.rs index 81908c0f0..174a564ef 100644 --- a/core/startos/src/version/v0_4_0_alpha_2.rs +++ b/core/startos/src/version/v0_4_0_alpha_2.rs @@ -27,7 +27,7 @@ impl VersionT for Version { fn compat(self) -> &'static VersionRange { &V0_3_0_COMPAT } - fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { + fn up(self, _db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { Ok(()) } fn down(self, _db: &mut Value) -> Result<(), Error> { diff --git a/core/startos/src/version/v0_4_0_alpha_3.rs b/core/startos/src/version/v0_4_0_alpha_3.rs index 6cbf21573..32eb4437e 100644 --- a/core/startos/src/version/v0_4_0_alpha_3.rs +++ b/core/startos/src/version/v0_4_0_alpha_3.rs @@ -27,7 +27,7 @@ impl VersionT for Version { fn compat(self) -> &'static VersionRange { &V0_3_0_COMPAT } - fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { + fn up(self, _db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { Ok(()) } fn down(self, _db: &mut Value) -> Result<(), Error> { diff --git a/core/startos/src/version/v0_4_0_alpha_4.rs b/core/startos/src/version/v0_4_0_alpha_4.rs index ef574be27..9b8a85c2d 100644 --- a/core/startos/src/version/v0_4_0_alpha_4.rs +++ b/core/startos/src/version/v0_4_0_alpha_4.rs @@ -2,7 +2,9 @@ use exver::{PreReleaseSegment, VersionRange}; use super::v0_3_5::V0_3_0_COMPAT; use super::{v0_4_0_alpha_3, VersionT}; +use crate::context::RpcContext; use crate::prelude::*; +use crate::util::io::create_file_mod; lazy_static::lazy_static! { static ref V0_4_0_alpha_4: exver::Version = exver::Version::new( @@ -27,7 +29,76 @@ impl VersionT for Version { fn compat(self) -> &'static VersionRange { &V0_3_0_COMPAT } + #[instrument] fn up(self, db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> { + db["public"]["serverInfo"] + .as_object_mut() + .or_not_found("public.serverInfo")? + .insert("kiosk".into(), Value::Bool(false)); + for (_, pde) in db["public"]["packageData"] + .as_object_mut() + .into_iter() + .flat_map(|m| m.iter_mut()) + { + let Some(pde) = pde.as_object_mut() else { + continue; + }; + let Some(mut tasks) = pde.remove("requestedActions").and_then(|ar| { + if let Value::Object(ar) = ar { + Some(ar) + } else { + None + } + }) else { + continue; + }; + for (_, task_entry) in tasks.iter_mut() { + let Some(task_entry) = task_entry.as_object_mut() else { + continue; + }; + let Some(task) = task_entry.remove("request") else { + continue; + }; + task_entry.insert("task".into(), task); + } + pde.insert("tasks".into(), Value::Object(tasks)); + } + Ok(()) + } + async fn post_up(self, _ctx: &RpcContext) -> Result<(), Error> { + use tokio::io::AsyncWriteExt; + + if tokio::fs::metadata("/media/startos/config/overlay/etc/shadow") + .await + .is_ok() + { + let mut hash = None; + let shadow_contents = tokio::fs::read_to_string("/etc/shadow").await?; + let mut shadow_file = + create_file_mod("/media/startos/config/overlay/etc/shadow", 0o640).await?; + for line in shadow_contents.lines() { + match line.split_once(":") { + Some((user, rest)) if user == "start9" || user == "kiosk" => { + let (h, rest) = rest.split_once(":").ok_or_else(|| { + Error::new(eyre!("malformed /etc/shadow"), ErrorKind::ParseSysInfo) + })?; + if user == "start9" { + hash = Some(h.to_owned()); + } + let h = hash.as_deref().unwrap_or(h); + shadow_file + .write_all(format!("{user}:{h}:{rest}\n").as_bytes()) + .await?; + } + _ => { + shadow_file.write_all(line.as_bytes()).await?; + shadow_file.write_all(b"\n").await?; + } + } + } + shadow_file.sync_all().await?; + tokio::fs::copy("/media/startos/config/overlay/etc/shadow", "/etc/shadow").await?; + } Ok(()) } fn down(self, _db: &mut Value) -> Result<(), Error> { diff --git a/sdk/base/lib/Effects.ts b/sdk/base/lib/Effects.ts index 10c7e4c66..774fc519b 100644 --- a/sdk/base/lib/Effects.ts +++ b/sdk/base/lib/Effects.ts @@ -1,3 +1,4 @@ +import { ExtendedVersion, VersionRange } from "./exver" import { ActionId, ActionInput, @@ -12,7 +13,7 @@ import { Host, ExportServiceInterfaceParams, ServiceInterface, - RequestActionParams, + CreateTaskParams, MainStatus, } from "./osBindings" import { @@ -50,10 +51,8 @@ export type Effects = { actionId: ActionId input?: Input }): Promise - request>( - options: RequestActionParams, - ): Promise - clearRequests( + createTask(options: CreateTaskParams): Promise + clearTasks( options: { only: string[] } | { except: string[] }, ): Promise } @@ -168,7 +167,7 @@ export type Effects = { }) => Promise /** sets the version that this service's data has been migrated to */ - setDataVersion(options: { version: string }): Promise + setDataVersion(options: { version: string | null }): Promise /** returns the version that this service's data has been migrated to */ getDataVersion(): Promise diff --git a/sdk/base/lib/actions/index.ts b/sdk/base/lib/actions/index.ts index 0dd3d99dc..312862012 100644 --- a/sdk/base/lib/actions/index.ts +++ b/sdk/base/lib/actions/index.ts @@ -1,6 +1,6 @@ import * as T from "../types" import * as IST from "../actions/input/inputSpecTypes" -import { Action } from "./setupActions" +import { Action, ActionInfo } from "./setupActions" import { ExtractInputSpecType } from "./input/builder/inputSpec" export type RunActionInput = @@ -45,45 +45,41 @@ export const runAction = async < }) } } -type GetActionInputType> = +type GetActionInputType> = A extends Action ? ExtractInputSpecType : never -type ActionRequestBase = { +type TaskBase = { reason?: string replayId?: string } -type ActionRequestInput> = { +type TaskInput> = { kind: "partial" value: T.DeepPartial> } -export type ActionRequestOptions> = - ActionRequestBase & - ( - | { - when?: Exclude< - T.ActionRequestTrigger, - { condition: "input-not-matches" } - > - input?: ActionRequestInput - } - | { - when: T.ActionRequestTrigger & { condition: "input-not-matches" } - input: ActionRequestInput - } - ) +export type TaskOptions> = TaskBase & + ( + | { + when?: Exclude + input?: TaskInput + } + | { + when: T.TaskTrigger & { condition: "input-not-matches" } + input: TaskInput + } + ) -const _validate: T.ActionRequest = {} as ActionRequestOptions & { +const _validate: T.Task = {} as TaskOptions & { actionId: string packageId: string - severity: T.ActionSeverity + severity: T.TaskSeverity } -export const requestAction = >(options: { +export const createTask = >(options: { effects: T.Effects packageId: T.PackageId action: T - severity: T.ActionSeverity - options?: ActionRequestOptions + severity: T.TaskSeverity + options?: TaskOptions }) => { const request = options.options || {} const actionId = options.action.id @@ -96,5 +92,5 @@ export const requestAction = >(options: { replayId: request.replayId || `${options.packageId}:${actionId}`, } delete req.action - return options.effects.action.request(req) + return options.effects.action.createTask(req) } diff --git a/sdk/base/lib/actions/input/builder/value.ts b/sdk/base/lib/actions/input/builder/value.ts index 3ce0c8daa..5d101dfa8 100644 --- a/sdk/base/lib/actions/input/builder/value.ts +++ b/sdk/base/lib/actions/input/builder/value.ts @@ -919,36 +919,6 @@ export class Value { aVariants.validator, ) } - static filteredUnion< - VariantValues extends { - [K in string]: { - name: string - spec: InputSpec - } - }, - >( - getDisabledFn: LazyBuild, - a: { - name: string - description?: string | null - warning?: string | null - default: keyof VariantValues & string - }, - aVariants: Variants, - ) { - return new Value( - async (options) => ({ - type: "union" as const, - description: null, - warning: null, - ...a, - variants: await aVariants.build(options as any), - disabled: (await getDisabledFn(options)) || false, - immutable: false, - }), - aVariants.validator, - ) - } static dynamicUnion< VariantValues extends { [K in string]: { diff --git a/sdk/base/lib/actions/input/inputSpecConstants.ts b/sdk/base/lib/actions/input/inputSpecConstants.ts index 725b0630a..e1469d6e9 100644 --- a/sdk/base/lib/actions/input/inputSpecConstants.ts +++ b/sdk/base/lib/actions/input/inputSpecConstants.ts @@ -45,15 +45,16 @@ export const customSmtp = InputSpec.of>({ /** * For service inputSpec. Gives users 3 options for SMTP: (1) disabled, (2) use system SMTP settings, (3) use custom SMTP settings */ -export const smtpInputSpec = Value.filteredUnion( +export const smtpInputSpec = Value.dynamicUnion( async ({ effects }) => { const smtp = await new GetSystemSmtp(effects).once() - return smtp ? [] : ["system"] - }, - { - name: "SMTP", - description: "Optionally provide an SMTP server for sending emails", - default: "disabled", + const disabled = smtp ? [] : ["system"] + return { + name: "SMTP", + description: "Optionally provide an SMTP server for sending emails", + default: "disabled", + disabled, + } }, Variants.of({ disabled: { name: "Disabled", spec: InputSpec.of({}) }, diff --git a/sdk/base/lib/actions/setupActions.ts b/sdk/base/lib/actions/setupActions.ts index c931f981f..e2c8e73f3 100644 --- a/sdk/base/lib/actions/setupActions.ts +++ b/sdk/base/lib/actions/setupActions.ts @@ -5,6 +5,7 @@ import { } from "./input/builder/inputSpec" import * as T from "../types" import { once } from "../util" +import { InitScript } from "../inits" export type Run< A extends Record | InputSpec>, @@ -40,10 +41,20 @@ function mapMaybeFn( } } -export class Action< +export interface ActionInfo< Id extends T.ActionId, InputSpecType extends Record | InputSpec, > { + readonly id: Id + readonly _INPUT: InputSpecType +} + +export class Action< + Id extends T.ActionId, + InputSpecType extends Record | InputSpec, +> implements ActionInfo +{ + readonly _INPUT: InputSpecType = null as any as InputSpecType private constructor( readonly id: Id, private readonly metadataFn: MaybeFn, @@ -111,7 +122,8 @@ export class Action< export class Actions< AllActions extends Record>, -> { +> implements InitScript +{ private constructor(private readonly actions: AllActions) {} static of(): Actions<{}> { return new Actions({}) @@ -121,13 +133,26 @@ export class Actions< ): Actions { return new Actions({ ...this.actions, [action.id]: action }) } - async update(options: { effects: T.Effects }): Promise { + async init(effects: T.Effects): Promise { for (let action of Object.values(this.actions)) { - await action.exportMetadata(options) + const fn = async () => { + let res: (value?: undefined) => void = () => {} + const complete = new Promise((resolve) => { + res = resolve + }) + const e: T.Effects = effects.child(action.id) + e.constRetry = once(() => + complete.then(() => fn()).catch(console.error), + ) + try { + await action.exportMetadata({ effects: e }) + } finally { + res() + } + } + await fn() } - await options.effects.action.clear({ except: Object.keys(this.actions) }) - - return null + await effects.action.clear({ except: Object.keys(this.actions) }) } get(actionId: Id): AllActions[Id] { return this.actions[actionId] diff --git a/sdk/base/lib/backup/Backups.ts b/sdk/base/lib/backup/Backups.ts deleted file mode 100644 index 93adaebcd..000000000 --- a/sdk/base/lib/backup/Backups.ts +++ /dev/null @@ -1,208 +0,0 @@ -import * as T from "../types" -import * as child_process from "child_process" -import { asError } from "../util" - -export const DEFAULT_OPTIONS: T.SyncOptions = { - delete: true, - exclude: [], -} -export type BackupSync = { - dataPath: `/media/startos/volumes/${Volumes}/${string}` - backupPath: `/media/startos/backup/${string}` - options?: Partial - backupOptions?: Partial - restoreOptions?: Partial -} -/** - * This utility simplifies the volume backup process. - * ```ts - * export const { createBackup, restoreBackup } = Backups.volumes("main").build(); - * ``` - * - * Changing the options of the rsync, (ie excludes) use either - * ```ts - * Backups.volumes("main").set_options({exclude: ['bigdata/']}).volumes('excludedVolume').build() - * // or - * Backups.with_options({exclude: ['bigdata/']}).volumes('excludedVolume').build() - * ``` - * - * Using the more fine control, using the addSets for more control - * ```ts - * Backups.addSets({ - * srcVolume: 'main', srcPath:'smallData/', dstPath: 'main/smallData/', dstVolume: : Backups.BACKUP - * }, { - * srcVolume: 'main', srcPath:'bigData/', dstPath: 'main/bigData/', dstVolume: : Backups.BACKUP, options: {exclude:['bigData/excludeThis']}} - * ).build()q - * ``` - */ -export class Backups { - private constructor( - private options = DEFAULT_OPTIONS, - private restoreOptions: Partial = {}, - private backupOptions: Partial = {}, - private backupSet = [] as BackupSync[], - ) {} - - static withVolumes( - ...volumeNames: Array - ): Backups { - return Backups.withSyncs( - ...volumeNames.map((srcVolume) => ({ - dataPath: `/media/startos/volumes/${srcVolume}/` as const, - backupPath: `/media/startos/backup/${srcVolume}/` as const, - })), - ) - } - - static withSyncs( - ...syncs: BackupSync[] - ) { - return syncs.reduce((acc, x) => acc.addSync(x), new Backups()) - } - - static withOptions( - options?: Partial, - ) { - return new Backups({ ...DEFAULT_OPTIONS, ...options }) - } - - setOptions(options?: Partial) { - this.options = { - ...this.options, - ...options, - } - return this - } - - setBackupOptions(options?: Partial) { - this.backupOptions = { - ...this.backupOptions, - ...options, - } - return this - } - - setRestoreOptions(options?: Partial) { - this.restoreOptions = { - ...this.restoreOptions, - ...options, - } - return this - } - - mountVolume( - volume: M["volumes"][number], - options?: Partial<{ - options: T.SyncOptions - backupOptions: T.SyncOptions - restoreOptions: T.SyncOptions - }>, - ) { - return this.addSync({ - dataPath: `/media/startos/volumes/${volume}/` as const, - backupPath: `/media/startos/backup/${volume}/` as const, - ...options, - }) - } - addSync(sync: BackupSync) { - this.backupSet.push({ - ...sync, - options: { ...this.options, ...sync.options }, - }) - return this - } - - async createBackup() { - for (const item of this.backupSet) { - const rsyncResults = await runRsync({ - srcPath: item.dataPath, - dstPath: item.backupPath, - options: { - ...this.options, - ...this.backupOptions, - ...item.options, - ...item.backupOptions, - }, - }) - await rsyncResults.wait() - } - return - } - - async restoreBackup() { - for (const item of this.backupSet) { - const rsyncResults = await runRsync({ - srcPath: item.backupPath, - dstPath: item.dataPath, - options: { - ...this.options, - ...this.backupOptions, - ...item.options, - ...item.backupOptions, - }, - }) - await rsyncResults.wait() - } - return - } -} - -async function runRsync(rsyncOptions: { - srcPath: string - dstPath: string - options: T.SyncOptions -}): Promise<{ - id: () => Promise - wait: () => Promise - progress: () => Promise -}> { - const { srcPath, dstPath, options } = rsyncOptions - - const command = "rsync" - const args: string[] = [] - if (options.delete) { - args.push("--delete") - } - for (const exclude of options.exclude) { - args.push(`--exclude=${exclude}`) - } - args.push("-actAXH") - args.push("--info=progress2") - args.push("--no-inc-recursive") - args.push(srcPath) - args.push(dstPath) - const spawned = child_process.spawn(command, args, { detached: true }) - let percentage = 0.0 - spawned.stdout.on("data", (data: unknown) => { - const lines = String(data).replace("\r", "\n").split("\n") - for (const line of lines) { - const parsed = /$([0-9.]+)%/.exec(line)?.[1] - if (!parsed) continue - percentage = Number.parseFloat(parsed) - } - }) - - spawned.stderr.on("data", (data: unknown) => { - console.error(`Backups.runAsync`, asError(data)) - }) - - const id = async () => { - const pid = spawned.pid - if (pid === undefined) { - throw new Error("rsync process has no pid") - } - return String(pid) - } - const waitPromise = new Promise((resolve, reject) => { - spawned.on("exit", (code: any) => { - if (code === 0) { - resolve(null) - } else { - reject(new Error(`rsync exited with code ${code}`)) - } - }) - }) - const wait = () => waitPromise - const progress = () => Promise.resolve(percentage) - return { id, wait, progress } -} diff --git a/sdk/base/lib/backup/setupBackups.ts b/sdk/base/lib/backup/setupBackups.ts deleted file mode 100644 index b41a61f42..000000000 --- a/sdk/base/lib/backup/setupBackups.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Backups } from "./Backups" -import * as T from "../types" -import { _ } from "../util" - -export type SetupBackupsParams = - | M["volumes"][number][] - | ((_: { effects: T.Effects }) => Promise>) - -type SetupBackupsRes = { - createBackup: T.ExpectedExports.createBackup - restoreBackup: T.ExpectedExports.restoreBackup -} - -export function setupBackups( - options: SetupBackupsParams, -) { - let backupsFactory: (_: { effects: T.Effects }) => Promise> - if (options instanceof Function) { - backupsFactory = options - } else { - backupsFactory = async () => Backups.withVolumes(...options) - } - const answer: { - createBackup: T.ExpectedExports.createBackup - restoreBackup: T.ExpectedExports.restoreBackup - } = { - get createBackup() { - return (async (options) => { - return (await backupsFactory(options)).createBackup() - }) as T.ExpectedExports.createBackup - }, - get restoreBackup() { - return (async (options) => { - return (await backupsFactory(options)).restoreBackup() - }) as T.ExpectedExports.restoreBackup - }, - } - return answer -} diff --git a/sdk/base/lib/dependencies/dependencies.ts b/sdk/base/lib/dependencies/dependencies.ts index d2d50eb51..e9494c402 100644 --- a/sdk/base/lib/dependencies/dependencies.ts +++ b/sdk/base/lib/dependencies/dependencies.ts @@ -6,7 +6,7 @@ export type CheckDependencies = { installedSatisfied: (packageId: DependencyId) => boolean installedVersionSatisfied: (packageId: DependencyId) => boolean runningSatisfied: (packageId: DependencyId) => boolean - actionsSatisfied: (packageId: DependencyId) => boolean + tasksSatisfied: (packageId: DependencyId) => boolean healthCheckSatisfied: ( packageId: DependencyId, healthCheckId: HealthCheckId, @@ -16,7 +16,7 @@ export type CheckDependencies = { throwIfInstalledNotSatisfied: (packageId: DependencyId) => null throwIfInstalledVersionNotSatisfied: (packageId: DependencyId) => null throwIfRunningNotSatisfied: (packageId: DependencyId) => null - throwIfActionsNotSatisfied: (packageId: DependencyId) => null + throwIfTasksNotSatisfied: (packageId: DependencyId) => null throwIfHealthNotSatisfied: ( packageId: DependencyId, healthCheckId?: HealthCheckId, @@ -65,9 +65,9 @@ export async function checkDependencies< const dep = find(packageId) return dep.requirement.kind !== "running" || dep.result.isRunning } - const actionsSatisfied = (packageId: DependencyId) => - Object.entries(find(packageId).result.requestedActions).filter( - ([_, req]) => req.active && req.request.severity === "critical", + const tasksSatisfied = (packageId: DependencyId) => + Object.entries(find(packageId).result.tasks).filter( + ([_, t]) => t.active && t.task.severity === "critical", ).length === 0 const healthCheckSatisfied = ( packageId: DependencyId, @@ -90,7 +90,7 @@ export async function checkDependencies< installedSatisfied(packageId) && installedVersionSatisfied(packageId) && runningSatisfied(packageId) && - actionsSatisfied(packageId) && + tasksSatisfied(packageId) && healthCheckSatisfied(packageId) const satisfied = (packageId?: DependencyId) => packageId @@ -129,10 +129,10 @@ export async function checkDependencies< } return null } - const throwIfActionsNotSatisfied = (packageId: DependencyId) => { + const throwIfTasksNotSatisfied = (packageId: DependencyId) => { const dep = find(packageId) - const reqs = Object.entries(dep.result.requestedActions) - .filter(([_, req]) => req.active && req.request.severity === "critical") + const reqs = Object.entries(dep.result.tasks) + .filter(([_, t]) => t.active && t.task.severity === "critical") .map(([id, _]) => id) if (reqs.length) { throw new Error( @@ -172,7 +172,7 @@ export async function checkDependencies< throwIfInstalledNotSatisfied(packageId) throwIfInstalledVersionNotSatisfied(packageId) throwIfRunningNotSatisfied(packageId) - throwIfActionsNotSatisfied(packageId) + throwIfTasksNotSatisfied(packageId) throwIfHealthNotSatisfied(packageId) return null } @@ -199,13 +199,13 @@ export async function checkDependencies< installedSatisfied, installedVersionSatisfied, runningSatisfied, - actionsSatisfied, + tasksSatisfied, healthCheckSatisfied, satisfied, throwIfInstalledNotSatisfied, throwIfInstalledVersionNotSatisfied, throwIfRunningNotSatisfied, - throwIfActionsNotSatisfied, + throwIfTasksNotSatisfied, throwIfHealthNotSatisfied, throwIfNotSatisfied, } diff --git a/sdk/base/lib/dependencies/setupDependencies.ts b/sdk/base/lib/dependencies/setupDependencies.ts index 13d4adba7..321dc1981 100644 --- a/sdk/base/lib/dependencies/setupDependencies.ts +++ b/sdk/base/lib/dependencies/setupDependencies.ts @@ -37,16 +37,10 @@ export function setupDependencies( fn: (options: { effects: T.Effects }) => Promise>, -): (options: { effects: T.Effects }) => Promise { - const cell = { updater: async (_: { effects: T.Effects }) => null } - cell.updater = async (options: { effects: T.Effects }) => { - const childEffects = options.effects.child("setupDependencies") - childEffects.constRetry = once(() => { - cell.updater({ effects: options.effects }) - }) - - const dependencyType = await fn({ effects: childEffects }) - return await options.effects.setDependencies({ +): (effects: T.Effects) => Promise { + return async (effects: T.Effects) => { + const dependencyType = await fn({ effects }) + return await effects.setDependencies({ dependencies: Object.entries(dependencyType) .map(([k, v]) => [k, v as DependencyRequirement] as const) .map( @@ -59,5 +53,4 @@ export function setupDependencies( ), }) } - return cell.updater } diff --git a/sdk/base/lib/index.ts b/sdk/base/lib/index.ts index 0aa8e4758..4d4088abe 100644 --- a/sdk/base/lib/index.ts +++ b/sdk/base/lib/index.ts @@ -7,6 +7,7 @@ export * as IST from "./actions/input/inputSpecTypes" export * as types from "./types" export * as T from "./types" export * as yaml from "yaml" +export * as inits from "./inits" export * as matches from "ts-matches" export * as utils from "./util" diff --git a/sdk/base/lib/inits/index.ts b/sdk/base/lib/inits/index.ts new file mode 100644 index 000000000..0522089b1 --- /dev/null +++ b/sdk/base/lib/inits/index.ts @@ -0,0 +1,2 @@ +export * from "./setupInit" +export * from "./setupUninit" diff --git a/sdk/base/lib/inits/setupInit.ts b/sdk/base/lib/inits/setupInit.ts new file mode 100644 index 000000000..80eae8571 --- /dev/null +++ b/sdk/base/lib/inits/setupInit.ts @@ -0,0 +1,91 @@ +import { VersionRange } from "../../../base/lib/exver" +import * as T from "../../../base/lib/types" +import { once } from "../util" + +export type InitKind = "install" | "update" | "restore" | null + +export type InitFn = ( + effects: T.Effects, + kind: Kind, +) => Promise + +export interface InitScript { + init(effects: T.Effects, kind: Kind): Promise +} + +export type InitScriptOrFn = + | InitScript + | InitFn + +export function setupInit(...inits: InitScriptOrFn[]): T.ExpectedExports.init { + return async (opts) => { + for (const idx in inits) { + const init = inits[idx] + const fn = async () => { + let res: (value?: undefined) => void = () => {} + const complete = new Promise((resolve) => { + res = resolve + }) + const e: T.Effects = opts.effects.child(`init_${idx}`) + e.constRetry = once(() => + complete.then(() => fn()).catch(console.error), + ) + try { + if ("init" in init) await init.init(e, opts.kind) + else await init(e, opts.kind) + } finally { + res() + } + } + await fn() + } + } +} + +export function setupOnInit(onInit: InitScriptOrFn): InitScript { + return "init" in onInit + ? onInit + : { + init: async (effects, kind) => { + await onInit(effects, kind) + }, + } +} + +export function setupOnInstall( + onInstall: InitScriptOrFn<"install">, +): InitScript { + return { + init: async (effects, kind) => { + if (kind === "install") { + if ("init" in onInstall) await onInstall.init(effects, kind) + else await onInstall(effects, kind) + } + }, + } +} + +export function setupOnUpdate(onUpdate: InitScriptOrFn<"update">): InitScript { + return { + init: async (effects, kind) => { + if (kind === "update") { + if ("init" in onUpdate) await onUpdate.init(effects, kind) + else await onUpdate(effects, kind) + } + }, + } +} + +export function setupOnInstallOrUpdate( + onInstallOrUpdate: InitScriptOrFn<"install" | "update">, +): InitScript { + return { + init: async (effects, kind) => { + if (kind === "install" || kind === "update") { + if ("init" in onInstallOrUpdate) + await onInstallOrUpdate.init(effects, kind) + else await onInstallOrUpdate(effects, kind) + } + }, + } +} diff --git a/sdk/base/lib/inits/setupUninit.ts b/sdk/base/lib/inits/setupUninit.ts new file mode 100644 index 000000000..8fc907de7 --- /dev/null +++ b/sdk/base/lib/inits/setupUninit.ts @@ -0,0 +1,25 @@ +import { ExtendedVersion, VersionRange } from "../../../base/lib/exver" +import * as T from "../../../base/lib/types" + +export type UninitFn = ( + effects: T.Effects, + target: VersionRange | ExtendedVersion | null, +) => Promise + +export interface UninitScript { + uninit( + effects: T.Effects, + target: VersionRange | ExtendedVersion | null, + ): Promise +} + +export function setupUninit( + ...uninits: (UninitScript | UninitFn)[] +): T.ExpectedExports.uninit { + return async (opts) => { + for (const uninit of uninits) { + if ("uninit" in uninit) await uninit.uninit(opts.effects, opts.target) + else await uninit(opts.effects, opts.target) + } + } +} diff --git a/sdk/base/lib/interfaces/Origin.ts b/sdk/base/lib/interfaces/Origin.ts index dd688b3c9..e749e48f1 100644 --- a/sdk/base/lib/interfaces/Origin.ts +++ b/sdk/base/lib/interfaces/Origin.ts @@ -11,7 +11,12 @@ export class Origin { readonly sslScheme: string | null, ) {} - build({ username, path, search, schemeOverride }: BuildOptions): AddressInfo { + build({ + username, + path, + query: search, + schemeOverride, + }: BuildOptions): AddressInfo { const qpEntries = Object.entries(search) .map( ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`, @@ -50,7 +55,7 @@ export class Origin { type, username, path, - search, + query: search, schemeOverride, masked, } = serviceInterface.options @@ -58,7 +63,7 @@ export class Origin { const addressInfo = this.build({ username, path, - search, + query: search, schemeOverride, }) @@ -82,5 +87,5 @@ type BuildOptions = { schemeOverride: { ssl: Scheme; noSsl: Scheme } | null username: string | null path: string - search: Record + query: Record } diff --git a/sdk/base/lib/interfaces/ServiceInterfaceBuilder.ts b/sdk/base/lib/interfaces/ServiceInterfaceBuilder.ts index 036180ad3..d8cd8e38e 100644 --- a/sdk/base/lib/interfaces/ServiceInterfaceBuilder.ts +++ b/sdk/base/lib/interfaces/ServiceInterfaceBuilder.ts @@ -23,7 +23,7 @@ export class ServiceInterfaceBuilder { type: ServiceInterfaceType username: string | null path: string - search: Record + query: Record schemeOverride: { ssl: Scheme; noSsl: Scheme } | null masked: boolean }, diff --git a/sdk/base/lib/interfaces/setupInterfaces.ts b/sdk/base/lib/interfaces/setupInterfaces.ts index df90f7fa7..8e9c4b61a 100644 --- a/sdk/base/lib/interfaces/setupInterfaces.ts +++ b/sdk/base/lib/interfaces/setupInterfaces.ts @@ -10,46 +10,34 @@ export type UpdateServiceInterfacesReceipt = { export type ServiceInterfacesReceipt = Array export type SetServiceInterfaces = (opts: { effects: T.Effects }) => Promise -export type UpdateServiceInterfaces = - (opts: { - effects: T.Effects - }) => Promise +export type UpdateServiceInterfaces = (effects: T.Effects) => Promise export type SetupServiceInterfaces = ( fn: SetServiceInterfaces, -) => UpdateServiceInterfaces +) => UpdateServiceInterfaces export const NO_INTERFACE_CHANGES = {} as UpdateServiceInterfacesReceipt export const setupServiceInterfaces: SetupServiceInterfaces = < Output extends ServiceInterfacesReceipt, >( fn: SetServiceInterfaces, ) => { - const cell = { - updater: (async (options: { effects: T.Effects }) => - [] as any as Output) as UpdateServiceInterfaces, - } - cell.updater = (async (options: { effects: T.Effects }) => { - const childEffects = options.effects.child("setupInterfaces") - childEffects.constRetry = once(() => { - cell.updater({ effects: options.effects }) - }) + return (async (effects: T.Effects) => { const bindings: T.BindId[] = [] const interfaces: T.ServiceInterfaceId[] = [] - const res = await fn({ + await fn({ effects: { - ...childEffects, + ...effects, bind: (params: T.BindParams) => { bindings.push({ id: params.id, internalPort: params.internalPort }) - return childEffects.bind(params) + return effects.bind(params) }, exportServiceInterface: (params: T.ExportServiceInterfaceParams) => { interfaces.push(params.id) - return childEffects.exportServiceInterface(params) + return effects.exportServiceInterface(params) }, }, }) - await options.effects.clearBindings({ except: bindings }) - await options.effects.clearServiceInterfaces({ except: interfaces }) - return res - }) as UpdateServiceInterfaces - return cell.updater + await effects.clearBindings({ except: bindings }) + await effects.clearServiceInterfaces({ except: interfaces }) + return null + }) as UpdateServiceInterfaces } diff --git a/sdk/base/lib/osBindings/ActionRequest.ts b/sdk/base/lib/osBindings/ActionRequest.ts deleted file mode 100644 index 552f37bc6..000000000 --- a/sdk/base/lib/osBindings/ActionRequest.ts +++ /dev/null @@ -1,15 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { ActionId } from "./ActionId" -import type { ActionRequestInput } from "./ActionRequestInput" -import type { ActionRequestTrigger } from "./ActionRequestTrigger" -import type { ActionSeverity } from "./ActionSeverity" -import type { PackageId } from "./PackageId" - -export type ActionRequest = { - packageId: PackageId - actionId: ActionId - severity: ActionSeverity - reason?: string - when?: ActionRequestTrigger - input?: ActionRequestInput -} diff --git a/sdk/base/lib/osBindings/ActionRequestEntry.ts b/sdk/base/lib/osBindings/ActionRequestEntry.ts deleted file mode 100644 index 0e716abe4..000000000 --- a/sdk/base/lib/osBindings/ActionRequestEntry.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { ActionRequest } from "./ActionRequest" - -export type ActionRequestEntry = { request: ActionRequest; active: boolean } diff --git a/sdk/base/lib/osBindings/ActionRequestTrigger.ts b/sdk/base/lib/osBindings/ActionRequestTrigger.ts deleted file mode 100644 index ebd0963e5..000000000 --- a/sdk/base/lib/osBindings/ActionRequestTrigger.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { ActionRequestCondition } from "./ActionRequestCondition" - -export type ActionRequestTrigger = { - once: boolean - condition: ActionRequestCondition -} diff --git a/sdk/base/lib/osBindings/AttachParams.ts b/sdk/base/lib/osBindings/AttachParams.ts index 048151d2f..e1de943a5 100644 --- a/sdk/base/lib/osBindings/AttachParams.ts +++ b/sdk/base/lib/osBindings/AttachParams.ts @@ -4,4 +4,5 @@ import type { EncryptedWire } from "./EncryptedWire" export type AttachParams = { startOsPassword: EncryptedWire | null guid: string + kiosk?: boolean } diff --git a/sdk/base/lib/osBindings/CheckDependenciesResult.ts b/sdk/base/lib/osBindings/CheckDependenciesResult.ts index 3fa34b600..2ddce973d 100644 --- a/sdk/base/lib/osBindings/CheckDependenciesResult.ts +++ b/sdk/base/lib/osBindings/CheckDependenciesResult.ts @@ -1,9 +1,9 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { ActionRequestEntry } from "./ActionRequestEntry" import type { HealthCheckId } from "./HealthCheckId" import type { NamedHealthCheckResult } from "./NamedHealthCheckResult" import type { PackageId } from "./PackageId" import type { ReplayId } from "./ReplayId" +import type { TaskEntry } from "./TaskEntry" import type { Version } from "./Version" export type CheckDependenciesResult = { @@ -12,6 +12,6 @@ export type CheckDependenciesResult = { installedVersion: Version | null satisfies: Array isRunning: boolean - requestedActions: { [key: ReplayId]: ActionRequestEntry } + tasks: { [key: ReplayId]: TaskEntry } healthChecks: { [key: HealthCheckId]: NamedHealthCheckResult } } diff --git a/sdk/base/lib/osBindings/ClearActionRequestsParams.ts b/sdk/base/lib/osBindings/ClearTasksParams.ts similarity index 55% rename from sdk/base/lib/osBindings/ClearActionRequestsParams.ts rename to sdk/base/lib/osBindings/ClearTasksParams.ts index 856a13de4..56cd1612c 100644 --- a/sdk/base/lib/osBindings/ClearActionRequestsParams.ts +++ b/sdk/base/lib/osBindings/ClearTasksParams.ts @@ -1,5 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type ClearActionRequestsParams = - | { only: string[] } - | { except: string[] } +export type ClearTasksParams = { only: string[] } | { except: string[] } diff --git a/sdk/base/lib/osBindings/RequestActionParams.ts b/sdk/base/lib/osBindings/CreateTaskParams.ts similarity index 51% rename from sdk/base/lib/osBindings/RequestActionParams.ts rename to sdk/base/lib/osBindings/CreateTaskParams.ts index ccc8d0e61..0abb70f3b 100644 --- a/sdk/base/lib/osBindings/RequestActionParams.ts +++ b/sdk/base/lib/osBindings/CreateTaskParams.ts @@ -1,17 +1,17 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { ActionId } from "./ActionId" -import type { ActionRequestInput } from "./ActionRequestInput" -import type { ActionRequestTrigger } from "./ActionRequestTrigger" -import type { ActionSeverity } from "./ActionSeverity" import type { PackageId } from "./PackageId" import type { ReplayId } from "./ReplayId" +import type { TaskInput } from "./TaskInput" +import type { TaskSeverity } from "./TaskSeverity" +import type { TaskTrigger } from "./TaskTrigger" -export type RequestActionParams = { +export type CreateTaskParams = { replayId: ReplayId packageId: PackageId actionId: ActionId - severity: ActionSeverity + severity: TaskSeverity reason?: string - when?: ActionRequestTrigger - input?: ActionRequestInput + when?: TaskTrigger + input?: TaskInput } diff --git a/sdk/base/lib/osBindings/MainStatus.ts b/sdk/base/lib/osBindings/MainStatus.ts index 64e081ab9..ca5655bd8 100644 --- a/sdk/base/lib/osBindings/MainStatus.ts +++ b/sdk/base/lib/osBindings/MainStatus.ts @@ -12,7 +12,6 @@ export type MainStatus = } | { main: "stopped" } | { main: "restarting" } - | { main: "restoring" } | { main: "stopping" } | { main: "starting" diff --git a/sdk/base/lib/osBindings/PackageDataEntry.ts b/sdk/base/lib/osBindings/PackageDataEntry.ts index 86df7b767..7c855f28a 100644 --- a/sdk/base/lib/osBindings/PackageDataEntry.ts +++ b/sdk/base/lib/osBindings/PackageDataEntry.ts @@ -1,7 +1,6 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { ActionId } from "./ActionId" import type { ActionMetadata } from "./ActionMetadata" -import type { ActionRequestEntry } from "./ActionRequestEntry" import type { CurrentDependencies } from "./CurrentDependencies" import type { DataUrl } from "./DataUrl" import type { Hosts } from "./Hosts" @@ -9,11 +8,11 @@ import type { MainStatus } from "./MainStatus" import type { PackageState } from "./PackageState" import type { ServiceInterface } from "./ServiceInterface" import type { ServiceInterfaceId } from "./ServiceInterfaceId" -import type { Version } from "./Version" +import type { TaskEntry } from "./TaskEntry" export type PackageDataEntry = { stateInfo: PackageState - dataVersion: Version | null + dataVersion: string | null status: MainStatus registry: string | null developerKey: string @@ -21,7 +20,7 @@ export type PackageDataEntry = { lastBackup: string | null currentDependencies: CurrentDependencies actions: { [key: ActionId]: ActionMetadata } - requestedActions: { [key: string]: ActionRequestEntry } + tasks: { [key: string]: TaskEntry } serviceInterfaces: { [key: ServiceInterfaceId]: ServiceInterface } hosts: Hosts storeExposedDependents: string[] diff --git a/sdk/base/lib/osBindings/ServerInfo.ts b/sdk/base/lib/osBindings/ServerInfo.ts index a8ca5adf3..99e184308 100644 --- a/sdk/base/lib/osBindings/ServerInfo.ts +++ b/sdk/base/lib/osBindings/ServerInfo.ts @@ -26,4 +26,5 @@ export type ServerInfo = { smtp: SmtpValue | null ram: number devices: Array + kiosk: boolean | null } diff --git a/sdk/base/lib/osBindings/SetupExecuteParams.ts b/sdk/base/lib/osBindings/SetupExecuteParams.ts index 17c35c346..289836d78 100644 --- a/sdk/base/lib/osBindings/SetupExecuteParams.ts +++ b/sdk/base/lib/osBindings/SetupExecuteParams.ts @@ -6,4 +6,5 @@ export type SetupExecuteParams = { startOsLogicalname: string startOsPassword: EncryptedWire recoverySource: RecoverySource | null + kiosk?: boolean } diff --git a/sdk/base/lib/osBindings/Task.ts b/sdk/base/lib/osBindings/Task.ts new file mode 100644 index 000000000..8b781a5d3 --- /dev/null +++ b/sdk/base/lib/osBindings/Task.ts @@ -0,0 +1,15 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { ActionId } from "./ActionId" +import type { PackageId } from "./PackageId" +import type { TaskInput } from "./TaskInput" +import type { TaskSeverity } from "./TaskSeverity" +import type { TaskTrigger } from "./TaskTrigger" + +export type Task = { + packageId: PackageId + actionId: ActionId + severity: TaskSeverity + reason?: string + when?: TaskTrigger + input?: TaskInput +} diff --git a/sdk/base/lib/osBindings/ActionSeverity.ts b/sdk/base/lib/osBindings/TaskCondition.ts similarity index 67% rename from sdk/base/lib/osBindings/ActionSeverity.ts rename to sdk/base/lib/osBindings/TaskCondition.ts index ad339f951..9e48cdae8 100644 --- a/sdk/base/lib/osBindings/ActionSeverity.ts +++ b/sdk/base/lib/osBindings/TaskCondition.ts @@ -1,3 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type ActionSeverity = "critical" | "important" +export type TaskCondition = "input-not-matches" diff --git a/sdk/base/lib/osBindings/TaskEntry.ts b/sdk/base/lib/osBindings/TaskEntry.ts new file mode 100644 index 000000000..3607176bf --- /dev/null +++ b/sdk/base/lib/osBindings/TaskEntry.ts @@ -0,0 +1,4 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { Task } from "./Task" + +export type TaskEntry = { task: Task; active: boolean } diff --git a/sdk/base/lib/osBindings/ActionRequestInput.ts b/sdk/base/lib/osBindings/TaskInput.ts similarity index 55% rename from sdk/base/lib/osBindings/ActionRequestInput.ts rename to sdk/base/lib/osBindings/TaskInput.ts index a1cde7789..3415105bf 100644 --- a/sdk/base/lib/osBindings/ActionRequestInput.ts +++ b/sdk/base/lib/osBindings/TaskInput.ts @@ -1,6 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type ActionRequestInput = { - kind: "partial" - value: Record -} +export type TaskInput = { kind: "partial"; value: Record } diff --git a/sdk/base/lib/osBindings/ActionRequestCondition.ts b/sdk/base/lib/osBindings/TaskSeverity.ts similarity index 62% rename from sdk/base/lib/osBindings/ActionRequestCondition.ts rename to sdk/base/lib/osBindings/TaskSeverity.ts index 0f06caf3c..a80540fe4 100644 --- a/sdk/base/lib/osBindings/ActionRequestCondition.ts +++ b/sdk/base/lib/osBindings/TaskSeverity.ts @@ -1,3 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type ActionRequestCondition = "input-not-matches" +export type TaskSeverity = "optional" | "important" | "critical" diff --git a/sdk/base/lib/osBindings/TaskTrigger.ts b/sdk/base/lib/osBindings/TaskTrigger.ts new file mode 100644 index 000000000..ac46f2774 --- /dev/null +++ b/sdk/base/lib/osBindings/TaskTrigger.ts @@ -0,0 +1,4 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { TaskCondition } from "./TaskCondition" + +export type TaskTrigger = { once: boolean; condition: TaskCondition } diff --git a/sdk/base/lib/osBindings/index.ts b/sdk/base/lib/osBindings/index.ts index 56b115b39..e801f3e57 100644 --- a/sdk/base/lib/osBindings/index.ts +++ b/sdk/base/lib/osBindings/index.ts @@ -4,17 +4,11 @@ export { AcmeSettings } from "./AcmeSettings" export { ActionId } from "./ActionId" export { ActionInput } from "./ActionInput" export { ActionMetadata } from "./ActionMetadata" -export { ActionRequestCondition } from "./ActionRequestCondition" -export { ActionRequestEntry } from "./ActionRequestEntry" -export { ActionRequestInput } from "./ActionRequestInput" -export { ActionRequestTrigger } from "./ActionRequestTrigger" -export { ActionRequest } from "./ActionRequest" export { ActionResultMember } from "./ActionResultMember" export { ActionResult } from "./ActionResult" export { ActionResultV0 } from "./ActionResultV0" export { ActionResultV1 } from "./ActionResultV1" export { ActionResultValue } from "./ActionResultValue" -export { ActionSeverity } from "./ActionSeverity" export { ActionVisibility } from "./ActionVisibility" export { AddAdminParams } from "./AddAdminParams" export { AddAssetParams } from "./AddAssetParams" @@ -51,14 +45,15 @@ export { Celsius } from "./Celsius" export { CheckDependenciesParam } from "./CheckDependenciesParam" export { CheckDependenciesResult } from "./CheckDependenciesResult" export { Cifs } from "./Cifs" -export { ClearActionRequestsParams } from "./ClearActionRequestsParams" export { ClearActionsParams } from "./ClearActionsParams" export { ClearBindingsParams } from "./ClearBindingsParams" export { ClearCallbacksParams } from "./ClearCallbacksParams" export { ClearServiceInterfacesParams } from "./ClearServiceInterfacesParams" +export { ClearTasksParams } from "./ClearTasksParams" export { CliSetIconParams } from "./CliSetIconParams" export { ContactInfo } from "./ContactInfo" export { CreateSubcontainerFsParams } from "./CreateSubcontainerFsParams" +export { CreateTaskParams } from "./CreateTaskParams" export { CurrentDependencies } from "./CurrentDependencies" export { CurrentDependencyInfo } from "./CurrentDependencyInfo" export { DataUrl } from "./DataUrl" @@ -173,7 +168,6 @@ export { RemovePackageFromCategoryParams } from "./RemovePackageFromCategoryPara export { RemovePackageParams } from "./RemovePackageParams" export { RemoveVersionParams } from "./RemoveVersionParams" export { ReplayId } from "./ReplayId" -export { RequestActionParams } from "./RequestActionParams" export { RequestCommitment } from "./RequestCommitment" export { RunActionParams } from "./RunActionParams" export { Security } from "./Security" @@ -201,6 +195,12 @@ export { SignAssetParams } from "./SignAssetParams" export { SignerInfo } from "./SignerInfo" export { SmtpValue } from "./SmtpValue" export { StartStop } from "./StartStop" +export { TaskCondition } from "./TaskCondition" +export { TaskEntry } from "./TaskEntry" +export { TaskInput } from "./TaskInput" +export { TaskSeverity } from "./TaskSeverity" +export { TaskTrigger } from "./TaskTrigger" +export { Task } from "./Task" export { TestSmtpParams } from "./TestSmtpParams" export { UnsetInboundParams } from "./UnsetInboundParams" export { UpdatingState } from "./UpdatingState" diff --git a/sdk/base/lib/test/startosTypeValidation.test.ts b/sdk/base/lib/test/startosTypeValidation.test.ts index fc87b70cd..b6a29fc00 100644 --- a/sdk/base/lib/test/startosTypeValidation.test.ts +++ b/sdk/base/lib/test/startosTypeValidation.test.ts @@ -1,7 +1,7 @@ import { Effects } from "../types" import { CheckDependenciesParam, - ClearActionRequestsParams, + ClearTasksParams, ClearActionsParams, ClearBindingsParams, ClearCallbacksParams, @@ -9,7 +9,7 @@ import { GetActionInputParams, GetContainerIpParams, GetStatusParams, - RequestActionParams, + CreateTaskParams, RunActionParams, SetDataVersionParams, SetMainStatus, @@ -30,6 +30,7 @@ import { ListServiceInterfacesParams } from ".././osBindings" import { ExportActionParams } from ".././osBindings" import { MountParams } from ".././osBindings" import { StringObject } from "../util" +import { ExtendedVersion, VersionRange } from "../exver" function typeEquality(_a: ExpectedType) {} type WithCallback = Omit & { callback: () => void } @@ -54,8 +55,8 @@ describe("startosTypeValidation ", () => { export: {} as ExportActionParams, getInput: {} as GetActionInputParams, run: {} as RunActionParams, - request: {} as RequestActionParams, - clearRequests: {} as ClearActionRequestsParams, + createTask: {} as CreateTaskParams, + clearTasks: {} as ClearTasksParams, }, subcontainer: { createFs: {} as CreateSubcontainerFsParams, diff --git a/sdk/base/lib/types.ts b/sdk/base/lib/types.ts index 3b989c229..b1d74f2e1 100644 --- a/sdk/base/lib/types.ts +++ b/sdk/base/lib/types.ts @@ -10,6 +10,7 @@ import { import { Affine, StringObject, ToKebab } from "./util" import { Action, Actions } from "./actions/setupActions" import { Effects } from "./Effects" +import { ExtendedVersion, VersionRange } from "./exver" export { Effects } export * from "./osBindings" export { SDKManifest } from "./types/ManifestTypes" @@ -38,10 +39,6 @@ export namespace ExpectedExports { /** For backing up service data though the startOS UI */ export type createBackup = (options: { effects: Effects }) => Promise - /** For restoring service data that was previously backed up using the startOS UI create backup flow. Backup restores are also triggered via the startOS UI, or doing a system restore flow during setup. */ - export type restoreBackup = (options: { - effects: Effects - }) => Promise /** * This is the entrypoint for the main container. Used to start up something like the service that the @@ -52,33 +49,20 @@ export namespace ExpectedExports { started(onTerm: () => PromiseLike): PromiseLike }) => Promise - /** - * After a shutdown, if we wanted to do any operations to clean up things, like - * set the action as unavailable or something. - */ - export type afterShutdown = (options: { - effects: Effects - }) => Promise - /** * Every time a service launches (both on startup, and on install) this function is called before packageInit * Can be used to register callbacks */ - export type containerInit = (options: { + export type init = (options: { effects: Effects + kind: "install" | "update" | "restore" | null }) => Promise - - /** - * Every time a package completes an install, this function is called before the main. - * Can be used to do migration like things. - */ - export type packageInit = (options: { effects: Effects }) => Promise /** This will be ran during any time a package is uninstalled, for example during a update * this will be called. */ - export type packageUninit = (options: { + export type uninit = (options: { effects: Effects - nextVersion: null | string + target: ExtendedVersion | VersionRange | null }) => Promise export type manifest = Manifest @@ -87,12 +71,9 @@ export namespace ExpectedExports { } export type ABI = { createBackup: ExpectedExports.createBackup - restoreBackup: ExpectedExports.restoreBackup main: ExpectedExports.main - afterShutdown: ExpectedExports.afterShutdown - containerInit: ExpectedExports.containerInit - packageInit: ExpectedExports.packageInit - packageUninit: ExpectedExports.packageUninit + init: ExpectedExports.init + uninit: ExpectedExports.uninit manifest: ExpectedExports.manifest actions: ExpectedExports.actions } @@ -119,8 +100,14 @@ export type SmtpValue = { } export class UseEntrypoint { + readonly USE_ENTRYPOINT = "USE_ENTRYPOINT" constructor(readonly overridCmd?: string[]) {} } +export function isUseEntrypoint( + command: CommandType, +): command is UseEntrypoint { + return typeof command === "object" && "ENTRYPOINT" in command +} export type CommandType = string | [string, ...string[]] | UseEntrypoint diff --git a/sdk/lib/coverage/clover.xml b/sdk/lib/coverage/clover.xml deleted file mode 100644 index d53a0d99f..000000000 --- a/sdk/lib/coverage/clover.xml +++ /dev/null @@ -1,2881 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sdk/lib/coverage/coverage-final.json b/sdk/lib/coverage/coverage-final.json deleted file mode 100644 index d73205ba7..000000000 --- a/sdk/lib/coverage/coverage-final.json +++ /dev/null @@ -1,31731 +0,0 @@ -{ - "/Users/matthill/Code/start9/start-os/sdk/lib/Dependency.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/Dependency.ts", - "statementMap": { - "0": { - "start": { "line": 5, "column": 13 }, - "end": { "line": 5, "column": null } - }, - "1": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": null } - }, - "loc": { - "start": { "line": 16, "column": 9 }, - "end": { "line": 17, "column": 6 } - } - } - }, - "branchMap": {}, - "s": { "0": 0, "1": 5 }, - "f": { "0": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/StartSdk.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/StartSdk.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 63 } - }, - "1": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 78 } - }, - "2": { - "start": { "line": 12, "column": 0 }, - "end": { "line": 12, "column": 52 } - }, - "3": { - "start": { "line": 13, "column": 0 }, - "end": { "line": 13, "column": 68 } - }, - "4": { - "start": { "line": 24, "column": 0 }, - "end": { "line": 24, "column": 43 } - }, - "5": { - "start": { "line": 25, "column": 0 }, - "end": { "line": 25, "column": 74 } - }, - "6": { - "start": { "line": 26, "column": 0 }, - "end": { "line": 26, "column": 53 } - }, - "7": { - "start": { "line": 27, "column": 0 }, - "end": { "line": 27, "column": 53 } - }, - "8": { - "start": { "line": 28, "column": 0 }, - "end": { "line": 28, "column": 42 } - }, - "9": { - "start": { "line": 29, "column": 0 }, - "end": { "line": 29, "column": 69 } - }, - "10": { - "start": { "line": 30, "column": 0 }, - "end": { "line": 30, "column": 73 } - }, - "11": { - "start": { "line": 31, "column": 0 }, - "end": { "line": 31, "column": 64 } - }, - "12": { - "start": { "line": 32, "column": 0 }, - "end": { "line": 32, "column": 44 } - }, - "13": { - "start": { "line": 33, "column": 0 }, - "end": { "line": 33, "column": 57 } - }, - "14": { - "start": { "line": 34, "column": 0 }, - "end": { "line": 34, "column": 53 } - }, - "15": { - "start": { "line": 35, "column": 0 }, - "end": { "line": 35, "column": 76 } - }, - "16": { - "start": { "line": 36, "column": 0 }, - "end": { "line": 36, "column": 72 } - }, - "17": { - "start": { "line": 37, "column": 0 }, - "end": { "line": 37, "column": 45 } - }, - "18": { - "start": { "line": 38, "column": 0 }, - "end": { "line": 38, "column": 79 } - }, - "19": { - "start": { "line": 39, "column": 0 }, - "end": { "line": 39, "column": 36 } - }, - "20": { - "start": { "line": 40, "column": 0 }, - "end": { "line": 40, "column": 57 } - }, - "21": { - "start": { "line": 41, "column": 0 }, - "end": { "line": 41, "column": 65 } - }, - "22": { - "start": { "line": 42, "column": 0 }, - "end": { "line": 42, "column": null } - }, - "23": { - "start": { "line": 47, "column": 0 }, - "end": { "line": 47, "column": null } - }, - "24": { - "start": { "line": 52, "column": 0 }, - "end": { "line": 52, "column": 57 } - }, - "25": { - "start": { "line": 54, "column": 0 }, - "end": { "line": 54, "column": 53 } - }, - "26": { - "start": { "line": 55, "column": 0 }, - "end": { "line": 55, "column": 78 } - }, - "27": { - "start": { "line": 56, "column": 0 }, - "end": { "line": 56, "column": 52 } - }, - "28": { - "start": { "line": 57, "column": 0 }, - "end": { "line": 57, "column": 44 } - }, - "29": { - "start": { "line": 58, "column": 0 }, - "end": { "line": 58, "column": null } - }, - "30": { - "start": { "line": 62, "column": 0 }, - "end": { "line": 62, "column": 66 } - }, - "31": { - "start": { "line": 63, "column": 0 }, - "end": { "line": 63, "column": 43 } - }, - "32": { - "start": { "line": 64, "column": 0 }, - "end": { "line": 64, "column": 80 } - }, - "33": { - "start": { "line": 65, "column": 0 }, - "end": { "line": 65, "column": 50 } - }, - "34": { - "start": { "line": 66, "column": 0 }, - "end": { "line": 66, "column": 40 } - }, - "35": { - "start": { "line": 67, "column": 0 }, - "end": { "line": 67, "column": 41 } - }, - "36": { - "start": { "line": 69, "column": 0 }, - "end": { "line": 69, "column": 56 } - }, - "37": { - "start": { "line": 71, "column": 0 }, - "end": { "line": 71, "column": 79 } - }, - "38": { - "start": { "line": 72, "column": 0 }, - "end": { "line": 72, "column": null } - }, - "39": { - "start": { "line": 77, "column": 0 }, - "end": { "line": 77, "column": 60 } - }, - "40": { - "start": { "line": 80, "column": 13 }, - "end": { "line": 80, "column": null } - }, - "41": { - "start": { "line": 95, "column": 13 }, - "end": { "line": 95, "column": null } - }, - "42": { - "start": { "line": 96, "column": 13 }, - "end": { "line": 96, "column": null } - }, - "43": { - "start": { "line": 97, "column": 13 }, - "end": { "line": 97, "column": null } - }, - "44": { - "start": { "line": 100, "column": 2 }, - "end": { "line": 112, "column": null } - }, - "45": { - "start": { "line": 101, "column": 4 }, - "end": { "line": 111, "column": null } - }, - "46": { - "start": { "line": 102, "column": 6 }, - "end": { "line": 102, "column": null } - }, - "47": { - "start": { "line": 104, "column": 6 }, - "end": { "line": 106, "column": null } - }, - "48": { - "start": { "line": 105, "column": 8 }, - "end": { "line": 105, "column": null } - }, - "49": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 109, "column": null } - }, - "50": { - "start": { "line": 108, "column": 8 }, - "end": { "line": 108, "column": null } - }, - "51": { - "start": { "line": 110, "column": 6 }, - "end": { "line": 110, "column": null } - }, - "52": { - "start": { "line": 116, "column": 31 }, - "end": { "line": 116, "column": 49 } - }, - "53": { - "start": { "line": 118, "column": 4 }, - "end": { "line": 118, "column": null } - }, - "54": { - "start": { "line": 121, "column": 4 }, - "end": { "line": 121, "column": null } - }, - "55": { - "start": { "line": 124, "column": 4 }, - "end": { "line": 124, "column": null } - }, - "56": { - "start": { "line": 158, "column": 57 }, - "end": { "line": 182, "column": null } - }, - "57": { - "start": { "line": 159, "column": 43 }, - "end": { "line": 159, "column": 73 } - }, - "58": { - "start": { "line": 160, "column": 42 }, - "end": { "line": 160, "column": 71 } - }, - "59": { - "start": { "line": 161, "column": 42 }, - "end": { "line": 161, "column": 71 } - }, - "60": { - "start": { "line": 162, "column": 43 }, - "end": { "line": 162, "column": 73 } - }, - "61": { - "start": { "line": 163, "column": 43 }, - "end": { "line": 163, "column": 73 } - }, - "62": { - "start": { "line": 164, "column": 37 }, - "end": { "line": 164, "column": 61 } - }, - "63": { - "start": { "line": 165, "column": 45 }, - "end": { "line": 165, "column": 77 } - }, - "64": { - "start": { "line": 167, "column": 8 }, - "end": { "line": 167, "column": 42 } - }, - "65": { - "start": { "line": 168, "column": 35 }, - "end": { "line": 168, "column": 57 } - }, - "66": { - "start": { "line": 170, "column": 8 }, - "end": { "line": 170, "column": 45 } - }, - "67": { - "start": { "line": 172, "column": 8 }, - "end": { "line": 172, "column": 44 } - }, - "68": { - "start": { "line": 174, "column": 8 }, - "end": { "line": 174, "column": 46 } - }, - "69": { - "start": { "line": 175, "column": 43 }, - "end": { "line": 175, "column": 73 } - }, - "70": { - "start": { "line": 176, "column": 44 }, - "end": { "line": 176, "column": 75 } - }, - "71": { - "start": { "line": 177, "column": 39 }, - "end": { "line": 177, "column": 65 } - }, - "72": { - "start": { "line": 178, "column": 44 }, - "end": { "line": 178, "column": 75 } - }, - "73": { - "start": { "line": 179, "column": 44 }, - "end": { "line": 179, "column": 75 } - }, - "74": { - "start": { "line": 180, "column": 38 }, - "end": { "line": 180, "column": 63 } - }, - "75": { - "start": { "line": 181, "column": 45 }, - "end": { "line": 181, "column": 77 } - }, - "76": { - "start": { "line": 184, "column": 4 }, - "end": { "line": 768, "column": null } - }, - "77": { - "start": { "line": 196, "column": 10 }, - "end": { "line": 199, "column": null } - }, - "78": { - "start": { "line": 205, "column": 10 }, - "end": { "line": 205, "column": 77 } - }, - "79": { - "start": { "line": 207, "column": 10 }, - "end": { "line": 207, "column": 76 } - }, - "80": { - "start": { "line": 212, "column": 10 }, - "end": { "line": 212, "column": 78 } - }, - "81": { - "start": { "line": 221, "column": 10 }, - "end": { "line": 224, "column": null } - }, - "82": { - "start": { "line": 230, "column": 10 }, - "end": { "line": 231, "column": null } - }, - "83": { - "start": { "line": 238, "column": 10 }, - "end": { "line": 241, "column": 12 } - }, - "84": { - "start": { "line": 249, "column": 49 }, - "end": { "line": 249, "column": 79 } - }, - "85": { - "start": { "line": 263, "column": 8 }, - "end": { "line": 263, "column": null } - }, - "86": { - "start": { "line": 282, "column": 35 }, - "end": { "line": 282, "column": 43 } - }, - "87": { - "start": { "line": 283, "column": 8 }, - "end": { "line": 288, "column": null } - }, - "88": { - "start": { "line": 305, "column": 11 }, - "end": { "line": 305, "column": 63 } - }, - "89": { - "start": { "line": 307, "column": 8 }, - "end": { "line": 307, "column": 67 } - }, - "90": { - "start": { "line": 314, "column": 8 }, - "end": { "line": 315, "column": null } - }, - "91": { - "start": { "line": 335, "column": 8 }, - "end": { "line": 340, "column": null } - }, - "92": { - "start": { "line": 344, "column": 10 }, - "end": { "line": 344, "column": null } - }, - "93": { - "start": { "line": 349, "column": 10 }, - "end": { "line": 349, "column": null } - }, - "94": { - "start": { "line": 359, "column": 8 }, - "end": { "line": 359, "column": 56 } - }, - "95": { - "start": { "line": 361, "column": 8 }, - "end": { "line": 361, "column": 54 } - }, - "96": { - "start": { "line": 369, "column": 11 }, - "end": { "line": 369, "column": 76 } - }, - "97": { - "start": { "line": 377, "column": 11 }, - "end": { "line": 377, "column": 13 } - }, - "98": { - "start": { "line": 385, "column": 11 }, - "end": { "line": 385, "column": 13 } - }, - "99": { - "start": { "line": 396, "column": 11 }, - "end": { "line": 396, "column": 77 } - }, - "100": { - "start": { "line": 403, "column": 8 }, - "end": { "line": 427, "column": null } - }, - "101": { - "start": { "line": 404, "column": 33 }, - "end": { "line": 404, "column": 50 } - }, - "102": { - "start": { "line": 405, "column": 10 }, - "end": { "line": 426, "column": null } - }, - "103": { - "start": { "line": 412, "column": 21 }, - "end": { "line": 424, "column": 16 } - }, - "104": { - "start": { "line": 440, "column": 8 }, - "end": { "line": 446, "column": null } - }, - "105": { - "start": { "line": 448, "column": 56 }, - "end": { "line": 448, "column": 70 } - }, - "106": { - "start": { "line": 455, "column": 11 }, - "end": { "line": 455, "column": 38 } - }, - "107": { - "start": { "line": 461, "column": 11 }, - "end": { "line": 461, "column": 41 } - }, - "108": { - "start": { "line": 466, "column": 8 }, - "end": { "line": 467, "column": 45 } - }, - "109": { - "start": { "line": 467, "column": 10 }, - "end": { "line": 467, "column": 45 } - }, - "110": { - "start": { "line": 469, "column": 8 }, - "end": { "line": 469, "column": 43 } - }, - "111": { - "start": { "line": 478, "column": 10 }, - "end": { "line": 478, "column": null } - }, - "112": { - "start": { "line": 484, "column": 13 }, - "end": { "line": 484, "column": 54 } - }, - "113": { - "start": { "line": 487, "column": 13 }, - "end": { "line": 487, "column": 50 } - }, - "114": { - "start": { "line": 489, "column": 10 }, - "end": { "line": 489, "column": 49 } - }, - "115": { - "start": { "line": 496, "column": 13 }, - "end": { "line": 496, "column": 41 } - }, - "116": { - "start": { "line": 504, "column": 10 }, - "end": { "line": 504, "column": null } - }, - "117": { - "start": { "line": 529, "column": 10 }, - "end": { "line": 534, "column": null } - }, - "118": { - "start": { "line": 554, "column": 13 }, - "end": { "line": 554, "column": 44 } - }, - "119": { - "start": { "line": 580, "column": 13 }, - "end": { "line": 580, "column": 42 } - }, - "120": { - "start": { "line": 606, "column": 13 }, - "end": { "line": 606, "column": 42 } - }, - "121": { - "start": { "line": 627, "column": 13 }, - "end": { "line": 627, "column": 43 } - }, - "122": { - "start": { "line": 643, "column": 13 }, - "end": { "line": 643, "column": 47 } - }, - "123": { - "start": { "line": 662, "column": 13 }, - "end": { "line": 662, "column": 45 } - }, - "124": { - "start": { "line": 675, "column": 13 }, - "end": { "line": 675, "column": 44 } - }, - "125": { - "start": { "line": 691, "column": 13 }, - "end": { "line": 691, "column": 47 } - }, - "126": { - "start": { "line": 704, "column": 13 }, - "end": { "line": 704, "column": 45 } - }, - "127": { - "start": { "line": 719, "column": 13 }, - "end": { "line": 719, "column": 50 } - }, - "128": { - "start": { "line": 733, "column": 10 }, - "end": { "line": 736, "column": null } - }, - "129": { - "start": { "line": 754, "column": 13 }, - "end": { "line": 754, "column": 71 } - }, - "130": { - "start": { "line": 766, "column": 13 }, - "end": { "line": 766, "column": 49 } - }, - "131": { - "start": { "line": 115, "column": 0 }, - "end": { "line": 115, "column": 13 } - }, - "132": { - "start": { "line": 780, "column": 19 }, - "end": { "line": 780, "column": 40 } - }, - "133": { - "start": { "line": 781, "column": 2 }, - "end": { "line": 786, "column": null } - }, - "134": { - "start": { "line": 785, "column": 22 }, - "end": { "line": 785, "column": 49 } - }, - "135": { - "start": { "line": 772, "column": 0 }, - "end": { "line": 772, "column": 7 } - }, - "136": { - "start": { "line": 789, "column": 2 }, - "end": { "line": 791, "column": null } - }, - "137": { - "start": { "line": 790, "column": 42 }, - "end": { "line": 790, "column": 68 } - }, - "138": { - "start": { "line": 794, "column": 2 }, - "end": { "line": 796, "column": null } - }, - "139": { - "start": { "line": 795, "column": 4 }, - "end": { "line": 795, "column": null } - }, - "140": { - "start": { "line": 797, "column": 2 }, - "end": { "line": 803, "column": null } - }, - "141": { - "start": { "line": 801, "column": 50 }, - "end": { "line": 801, "column": 76 } - } - }, - "fnMap": { - "0": { - "name": "removeCallbackTypes", - "decl": { - "start": { "line": 99, "column": 9 }, - "end": { "line": 99, "column": 28 } - }, - "loc": { - "start": { "line": 99, "column": 58 }, - "end": { "line": 113, "column": 1 } - } - }, - "1": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 100, "column": 9 }, - "end": { "line": 100, "column": 28 } - }, - "loc": { - "start": { "line": 100, "column": 36 }, - "end": { "line": 112, "column": 3 } - } - }, - "2": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 116, "column": 2 }, - "end": { "line": 116, "column": 31 } - }, - "loc": { - "start": { "line": 116, "column": 49 }, - "end": { "line": 116, "column": 53 } - } - }, - "3": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 117, "column": 2 }, - "end": { "line": 117, "column": 8 } - }, - "loc": { - "start": { "line": 117, "column": 11 }, - "end": { "line": 119, "column": 3 } - } - }, - "4": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 120, "column": 2 }, - "end": { "line": 120, "column": 14 } - }, - "loc": { - "start": { "line": 120, "column": 70 }, - "end": { "line": 122, "column": 3 } - } - }, - "5": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 123, "column": 2 }, - "end": { "line": 123, "column": 11 } - }, - "loc": { - "start": { "line": 123, "column": 11 }, - "end": { "line": 125, "column": 3 } - } - }, - "6": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 127, "column": 2 }, - "end": { "line": 127, "column": 7 } - }, - "loc": { - "start": { "line": 127, "column": 73 }, - "end": { "line": 769, "column": 3 } - } - }, - "7": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 159, "column": 21 }, - "end": { "line": 159, "column": 22 } - }, - "loc": { - "start": { "line": 159, "column": 43 }, - "end": { "line": 159, "column": 73 } - } - }, - "8": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 160, "column": 20 }, - "end": { "line": 160, "column": 21 } - }, - "loc": { - "start": { "line": 160, "column": 42 }, - "end": { "line": 160, "column": 71 } - } - }, - "9": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 161, "column": 20 }, - "end": { "line": 161, "column": 21 } - }, - "loc": { - "start": { "line": 161, "column": 42 }, - "end": { "line": 161, "column": 71 } - } - }, - "10": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 162, "column": 21 }, - "end": { "line": 162, "column": 22 } - }, - "loc": { - "start": { "line": 162, "column": 43 }, - "end": { "line": 162, "column": 73 } - } - }, - "11": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 163, "column": 21 }, - "end": { "line": 163, "column": 22 } - }, - "loc": { - "start": { "line": 163, "column": 43 }, - "end": { "line": 163, "column": 73 } - } - }, - "12": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 164, "column": 15 }, - "end": { "line": 164, "column": 16 } - }, - "loc": { - "start": { "line": 164, "column": 37 }, - "end": { "line": 164, "column": 61 } - } - }, - "13": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 165, "column": 23 }, - "end": { "line": 165, "column": 24 } - }, - "loc": { - "start": { "line": 165, "column": 45 }, - "end": { "line": 165, "column": 77 } - } - }, - "14": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 166, "column": 25 }, - "end": { "line": 166, "column": 26 } - }, - "loc": { - "start": { "line": 167, "column": 8 }, - "end": { "line": 167, "column": 42 } - } - }, - "15": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 168, "column": 13 }, - "end": { "line": 168, "column": 14 } - }, - "loc": { - "start": { "line": 168, "column": 35 }, - "end": { "line": 168, "column": 57 } - } - }, - "16": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 169, "column": 28 }, - "end": { "line": 169, "column": 29 } - }, - "loc": { - "start": { "line": 170, "column": 8 }, - "end": { "line": 170, "column": 45 } - } - }, - "17": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 171, "column": 27 }, - "end": { "line": 171, "column": 28 } - }, - "loc": { - "start": { "line": 172, "column": 8 }, - "end": { "line": 172, "column": 44 } - } - }, - "18": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 173, "column": 29 }, - "end": { "line": 173, "column": 30 } - }, - "loc": { - "start": { "line": 174, "column": 8 }, - "end": { "line": 174, "column": 46 } - } - }, - "19": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 175, "column": 21 }, - "end": { "line": 175, "column": 22 } - }, - "loc": { - "start": { "line": 175, "column": 43 }, - "end": { "line": 175, "column": 73 } - } - }, - "20": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 176, "column": 22 }, - "end": { "line": 176, "column": 23 } - }, - "loc": { - "start": { "line": 176, "column": 44 }, - "end": { "line": 176, "column": 75 } - } - }, - "21": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 177, "column": 17 }, - "end": { "line": 177, "column": 18 } - }, - "loc": { - "start": { "line": 177, "column": 39 }, - "end": { "line": 177, "column": 65 } - } - }, - "22": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 178, "column": 22 }, - "end": { "line": 178, "column": 23 } - }, - "loc": { - "start": { "line": 178, "column": 44 }, - "end": { "line": 178, "column": 75 } - } - }, - "23": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 179, "column": 22 }, - "end": { "line": 179, "column": 23 } - }, - "loc": { - "start": { "line": 179, "column": 44 }, - "end": { "line": 179, "column": 75 } - } - }, - "24": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 180, "column": 16 }, - "end": { "line": 180, "column": 17 } - }, - "loc": { - "start": { "line": 180, "column": 38 }, - "end": { "line": 180, "column": 63 } - } - }, - "25": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 181, "column": 23 }, - "end": { "line": 181, "column": 24 } - }, - "loc": { - "start": { "line": 181, "column": 45 }, - "end": { "line": 181, "column": 77 } - } - }, - "26": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 195, "column": 16 }, - "end": { "line": 195, "column": 36 } - }, - "loc": { - "start": { "line": 196, "column": 10 }, - "end": { "line": 199, "column": null } - } - }, - "27": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 201, "column": 13 }, - "end": { "line": 201, "column": null } - }, - "loc": { - "start": { "line": 205, "column": 10 }, - "end": { "line": 205, "column": 77 } - } - }, - "28": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 206, "column": 19 }, - "end": { "line": 206, "column": 39 } - }, - "loc": { - "start": { "line": 207, "column": 10 }, - "end": { "line": 207, "column": 76 } - } - }, - "29": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 208, "column": 16 }, - "end": { "line": 208, "column": null } - }, - "loc": { - "start": { "line": 212, "column": 10 }, - "end": { "line": 212, "column": 78 } - } - }, - "30": { - "name": "(anonymous_37)", - "decl": { - "start": { "line": 216, "column": 13 }, - "end": { "line": 216, "column": null } - }, - "loc": { - "start": { "line": 221, "column": 10 }, - "end": { "line": 224, "column": null } - } - }, - "31": { - "name": "(anonymous_38)", - "decl": { - "start": { "line": 226, "column": 16 }, - "end": { "line": 226, "column": null } - }, - "loc": { - "start": { "line": 230, "column": 10 }, - "end": { "line": 231, "column": null } - } - }, - "32": { - "name": "(anonymous_39)", - "decl": { - "start": { "line": 233, "column": 16 }, - "end": { "line": 233, "column": null } - }, - "loc": { - "start": { "line": 238, "column": 10 }, - "end": { "line": 241, "column": 12 } - } - }, - "33": { - "name": "(anonymous_40)", - "decl": { - "start": { "line": 249, "column": 15 }, - "end": { "line": 249, "column": 16 } - }, - "loc": { - "start": { "line": 249, "column": 49 }, - "end": { "line": 249, "column": 79 } - } - }, - "34": { - "name": "(anonymous_41)", - "decl": { - "start": { "line": 252, "column": 18 }, - "end": { "line": 252, "column": 23 } - }, - "loc": { - "start": { "line": 262, "column": 73 }, - "end": { "line": 264, "column": 7 } - } - }, - "35": { - "name": "(anonymous_42)", - "decl": { - "start": { "line": 266, "column": 20 }, - "end": { "line": 266, "column": null } - }, - "loc": { - "start": { "line": 281, "column": 10 }, - "end": { "line": 289, "column": 7 } - } - }, - "36": { - "name": "(anonymous_43)", - "decl": { - "start": { "line": 291, "column": 23 }, - "end": { "line": 291, "column": null } - }, - "loc": { - "start": { "line": 305, "column": 11 }, - "end": { "line": 305, "column": 63 } - } - }, - "37": { - "name": "(anonymous_44)", - "decl": { - "start": { "line": 306, "column": 21 }, - "end": { "line": 306, "column": 41 } - }, - "loc": { - "start": { "line": 307, "column": 8 }, - "end": { "line": 307, "column": 67 } - } - }, - "38": { - "name": "(anonymous_45)", - "decl": { - "start": { "line": 309, "column": 24 }, - "end": { "line": 309, "column": null } - }, - "loc": { - "start": { "line": 314, "column": 8 }, - "end": { "line": 315, "column": null } - } - }, - "39": { - "name": "(anonymous_46)", - "decl": { - "start": { "line": 318, "column": 27 }, - "end": { "line": 318, "column": null } - }, - "loc": { - "start": { "line": 334, "column": 10 }, - "end": { "line": 341, "column": 7 } - } - }, - "40": { - "name": "(anonymous_47)", - "decl": { - "start": { "line": 343, "column": 8 }, - "end": { "line": 343, "column": 10 } - }, - "loc": { - "start": { "line": 343, "column": 31 }, - "end": { "line": 345, "column": 9 } - } - }, - "41": { - "name": "(anonymous_48)", - "decl": { - "start": { "line": 348, "column": 8 }, - "end": { "line": 348, "column": 10 } - }, - "loc": { - "start": { "line": 348, "column": 35 }, - "end": { "line": 350, "column": 9 } - } - }, - "42": { - "name": "(anonymous_49)", - "decl": { - "start": { "line": 358, "column": 20 }, - "end": { "line": 358, "column": 21 } - }, - "loc": { - "start": { "line": 359, "column": 8 }, - "end": { "line": 359, "column": 56 } - } - }, - "43": { - "name": "(anonymous_50)", - "decl": { - "start": { "line": 360, "column": 20 }, - "end": { "line": 360, "column": 21 } - }, - "loc": { - "start": { "line": 361, "column": 8 }, - "end": { "line": 361, "column": 54 } - } - }, - "44": { - "name": "(anonymous_51)", - "decl": { - "start": { "line": 362, "column": 19 }, - "end": { "line": 362, "column": null } - }, - "loc": { - "start": { "line": 369, "column": 11 }, - "end": { "line": 369, "column": 76 } - } - }, - "45": { - "name": "(anonymous_52)", - "decl": { - "start": { "line": 370, "column": 23 }, - "end": { "line": 370, "column": null } - }, - "loc": { - "start": { "line": 377, "column": 11 }, - "end": { "line": 377, "column": 13 } - } - }, - "46": { - "name": "(anonymous_53)", - "decl": { - "start": { "line": 378, "column": 23 }, - "end": { "line": 378, "column": null } - }, - "loc": { - "start": { "line": 385, "column": 11 }, - "end": { "line": 385, "column": 13 } - } - }, - "47": { - "name": "(anonymous_54)", - "decl": { - "start": { "line": 386, "column": 29 }, - "end": { "line": 386, "column": null } - }, - "loc": { - "start": { "line": 396, "column": 11 }, - "end": { "line": 396, "column": 77 } - } - }, - "48": { - "name": "(anonymous_55)", - "decl": { - "start": { "line": 397, "column": 25 }, - "end": { "line": 397, "column": null } - }, - "loc": { - "start": { "line": 402, "column": 10 }, - "end": { "line": 428, "column": 7 } - } - }, - "49": { - "name": "(anonymous_56)", - "decl": { - "start": { "line": 403, "column": 15 }, - "end": { "line": 403, "column": 20 } - }, - "loc": { - "start": { "line": 403, "column": 69 }, - "end": { "line": 427, "column": 9 } - } - }, - "50": { - "name": "(anonymous_57)", - "decl": { - "start": { "line": 407, "column": 14 }, - "end": { "line": 407, "column": 15 } - }, - "loc": { - "start": { "line": 412, "column": 21 }, - "end": { "line": 424, "column": 16 } - } - }, - "51": { - "name": "(anonymous_58)", - "decl": { - "start": { "line": 429, "column": 17 }, - "end": { "line": 429, "column": null } - }, - "loc": { - "start": { "line": 440, "column": 8 }, - "end": { "line": 446, "column": null } - } - }, - "52": { - "name": "(anonymous_59)", - "decl": { - "start": { "line": 448, "column": 20 }, - "end": { "line": 448, "column": 21 } - }, - "loc": { - "start": { "line": 448, "column": 56 }, - "end": { "line": 448, "column": 70 } - } - }, - "53": { - "name": "(anonymous_60)", - "decl": { - "start": { "line": 449, "column": 23 }, - "end": { "line": 449, "column": null } - }, - "loc": { - "start": { "line": 455, "column": 11 }, - "end": { "line": 455, "column": 38 } - } - }, - "54": { - "name": "(anonymous_61)", - "decl": { - "start": { "line": 456, "column": 17 }, - "end": { "line": 456, "column": null } - }, - "loc": { - "start": { "line": 461, "column": 11 }, - "end": { "line": 461, "column": 41 } - } - }, - "55": { - "name": "(anonymous_62)", - "decl": { - "start": { "line": 463, "column": 8 }, - "end": { "line": 463, "column": null } - }, - "loc": { - "start": { "line": 466, "column": 8 }, - "end": { "line": 467, "column": 45 } - } - }, - "56": { - "name": "(anonymous_63)", - "decl": { - "start": { "line": 466, "column": 8 }, - "end": { "line": 466, "column": 9 } - }, - "loc": { - "start": { "line": 467, "column": 10 }, - "end": { "line": 467, "column": 45 } - } - }, - "57": { - "name": "(anonymous_64)", - "decl": { - "start": { "line": 468, "column": 22 }, - "end": { "line": 468, "column": 23 } - }, - "loc": { - "start": { "line": 469, "column": 8 }, - "end": { "line": 469, "column": 43 } - } - }, - "58": { - "name": "(anonymous_65)", - "decl": { - "start": { "line": 477, "column": 8 }, - "end": { "line": 477, "column": 10 } - }, - "loc": { - "start": { "line": 477, "column": 10 }, - "end": { "line": 479, "column": 9 } - } - }, - "59": { - "name": "(anonymous_66)", - "decl": { - "start": { "line": 482, "column": 17 }, - "end": { "line": 482, "column": null } - }, - "loc": { - "start": { "line": 484, "column": 13 }, - "end": { "line": 484, "column": 54 } - } - }, - "60": { - "name": "(anonymous_67)", - "decl": { - "start": { "line": 485, "column": 17 }, - "end": { "line": 485, "column": null } - }, - "loc": { - "start": { "line": 487, "column": 13 }, - "end": { "line": 487, "column": 50 } - } - }, - "61": { - "name": "(anonymous_68)", - "decl": { - "start": { "line": 488, "column": 21 }, - "end": { "line": 488, "column": 22 } - }, - "loc": { - "start": { "line": 489, "column": 10 }, - "end": { "line": 489, "column": 49 } - } - }, - "62": { - "name": "(anonymous_69)", - "decl": { - "start": { "line": 492, "column": 12 }, - "end": { "line": 492, "column": null } - }, - "loc": { - "start": { "line": 496, "column": 13 }, - "end": { "line": 496, "column": 41 } - } - }, - "63": { - "name": "(anonymous_70)", - "decl": { - "start": { "line": 499, "column": 8 }, - "end": { "line": 499, "column": 10 } - }, - "loc": { - "start": { "line": 503, "column": 9 }, - "end": { "line": 505, "column": 9 } - } - }, - "64": { - "name": "(anonymous_71)", - "decl": { - "start": { "line": 508, "column": 8 }, - "end": { "line": 508, "column": 10 } - }, - "loc": { - "start": { "line": 528, "column": 9 }, - "end": { "line": 535, "column": 9 } - } - }, - "65": { - "name": "(anonymous_72)", - "decl": { - "start": { "line": 539, "column": 13 }, - "end": { "line": 539, "column": null } - }, - "loc": { - "start": { "line": 554, "column": 13 }, - "end": { "line": 554, "column": 44 } - } - }, - "66": { - "name": "(anonymous_73)", - "decl": { - "start": { "line": 555, "column": 21 }, - "end": { "line": 555, "column": null } - }, - "loc": { - "start": { "line": 580, "column": 13 }, - "end": { "line": 580, "column": 42 } - } - }, - "67": { - "name": "(anonymous_74)", - "decl": { - "start": { "line": 595, "column": 23 }, - "end": { "line": 595, "column": null } - }, - "loc": { - "start": { "line": 606, "column": 13 }, - "end": { "line": 606, "column": 42 } - } - }, - "68": { - "name": "(anonymous_75)", - "decl": { - "start": { "line": 607, "column": 21 }, - "end": { "line": 607, "column": null } - }, - "loc": { - "start": { "line": 627, "column": 13 }, - "end": { "line": 627, "column": 43 } - } - }, - "69": { - "name": "(anonymous_76)", - "decl": { - "start": { "line": 628, "column": 25 }, - "end": { "line": 628, "column": null } - }, - "loc": { - "start": { "line": 643, "column": 13 }, - "end": { "line": 643, "column": 47 } - } - }, - "70": { - "name": "(anonymous_77)", - "decl": { - "start": { "line": 644, "column": 23 }, - "end": { "line": 644, "column": null } - }, - "loc": { - "start": { "line": 662, "column": 13 }, - "end": { "line": 662, "column": 45 } - } - }, - "71": { - "name": "(anonymous_78)", - "decl": { - "start": { "line": 663, "column": 22 }, - "end": { "line": 663, "column": null } - }, - "loc": { - "start": { "line": 675, "column": 13 }, - "end": { "line": 675, "column": 44 } - } - }, - "72": { - "name": "(anonymous_79)", - "decl": { - "start": { "line": 676, "column": 25 }, - "end": { "line": 676, "column": null } - }, - "loc": { - "start": { "line": 691, "column": 13 }, - "end": { "line": 691, "column": 47 } - } - }, - "73": { - "name": "(anonymous_80)", - "decl": { - "start": { "line": 692, "column": 23 }, - "end": { "line": 692, "column": null } - }, - "loc": { - "start": { "line": 704, "column": 13 }, - "end": { "line": 704, "column": 45 } - } - }, - "74": { - "name": "(anonymous_81)", - "decl": { - "start": { "line": 705, "column": 28 }, - "end": { "line": 705, "column": null } - }, - "loc": { - "start": { "line": 719, "column": 13 }, - "end": { "line": 719, "column": 50 } - } - }, - "75": { - "name": "(anonymous_82)", - "decl": { - "start": { "line": 720, "column": 23 }, - "end": { "line": 720, "column": null } - }, - "loc": { - "start": { "line": 733, "column": 10 }, - "end": { "line": 736, "column": null } - } - }, - "76": { - "name": "(anonymous_83)", - "decl": { - "start": { "line": 739, "column": 22 }, - "end": { "line": 739, "column": null } - }, - "loc": { - "start": { "line": 754, "column": 13 }, - "end": { "line": 754, "column": 71 } - } - }, - "77": { - "name": "(anonymous_84)", - "decl": { - "start": { "line": 757, "column": 12 }, - "end": { "line": 757, "column": null } - }, - "loc": { - "start": { "line": 766, "column": 13 }, - "end": { "line": 766, "column": 49 } - } - }, - "78": { - "name": "runCommand", - "decl": { - "start": { "line": 772, "column": 22 }, - "end": { "line": 772, "column": 32 } - }, - "loc": { - "start": { "line": 778, "column": 3 }, - "end": { "line": 787, "column": 1 } - } - }, - "79": { - "name": "(anonymous_86)", - "decl": { - "start": { "line": 785, "column": 4 }, - "end": { "line": 785, "column": 5 } - }, - "loc": { - "start": { "line": 785, "column": 22 }, - "end": { "line": 785, "column": 49 } - } - }, - "80": { - "name": "nullifyProperties", - "decl": { - "start": { "line": 788, "column": 9 }, - "end": { "line": 788, "column": 26 } - }, - "loc": { - "start": { "line": 788, "column": 55 }, - "end": { "line": 792, "column": 1 } - } - }, - "81": { - "name": "(anonymous_88)", - "decl": { - "start": { "line": 790, "column": 30 }, - "end": { "line": 790, "column": 31 } - }, - "loc": { - "start": { "line": 790, "column": 42 }, - "end": { "line": 790, "column": 68 } - } - }, - "82": { - "name": "nullifyProperties_", - "decl": { - "start": { "line": 793, "column": 9 }, - "end": { "line": 793, "column": 27 } - }, - "loc": { - "start": { "line": 793, "column": 55 }, - "end": { "line": 804, "column": 1 } - } - }, - "83": { - "name": "(anonymous_90)", - "decl": { - "start": { "line": 801, "column": 38 }, - "end": { "line": 801, "column": 39 } - }, - "loc": { - "start": { "line": 801, "column": 50 }, - "end": { "line": 801, "column": 76 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 101, "column": 4 }, - "end": { "line": 111, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 101, "column": 4 }, - "end": { "line": 111, "column": null } - }, - { - "start": { "line": 103, "column": 11 }, - "end": { "line": 111, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 101, "column": 8 }, - "end": { "line": 101, "column": 54 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 101, "column": 8 }, - "end": { "line": 101, "column": 26 } - }, - { - "start": { "line": 101, "column": 30 }, - "end": { "line": 101, "column": 54 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 104, "column": 6 }, - "end": { "line": 106, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 104, "column": 6 }, - "end": { "line": 106, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 109, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 107, "column": 6 }, - "end": { "line": 109, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 415, "column": 20 }, - "end": { "line": 422, "column": 22 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 416, "column": 20 }, - "end": { "line": 419, "column": null } - }, - { - "start": { "line": 420, "column": 20 }, - "end": { "line": 422, "column": 22 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 784, "column": 4 }, - "end": { "line": 784, "column": 24 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 784, "column": 4 }, - "end": { "line": 784, "column": 18 } - }, - { - "start": { "line": 784, "column": 22 }, - "end": { "line": 784, "column": 24 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 794, "column": 2 }, - "end": { "line": 796, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 794, "column": 2 }, - "end": { "line": 796, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5, - "11": 5, - "12": 5, - "13": 5, - "14": 5, - "15": 5, - "16": 5, - "17": 5, - "18": 5, - "19": 5, - "20": 5, - "21": 5, - "22": 5, - "23": 5, - "24": 5, - "25": 5, - "26": 5, - "27": 5, - "28": 5, - "29": 5, - "30": 5, - "31": 5, - "32": 5, - "33": 5, - "34": 5, - "35": 5, - "36": 5, - "37": 5, - "38": 5, - "39": 5, - "40": 5, - "41": 5, - "42": 5, - "43": 5, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 18, - "53": 6, - "54": 6, - "55": 6, - "56": 6, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0, - "73": 0, - "74": 0, - "75": 0, - "76": 6, - "77": 0, - "78": 0, - "79": 0, - "80": 0, - "81": 0, - "82": 0, - "83": 0, - "84": 0, - "85": 0, - "86": 0, - "87": 0, - "88": 0, - "89": 0, - "90": 0, - "91": 0, - "92": 0, - "93": 0, - "94": 0, - "95": 0, - "96": 0, - "97": 0, - "98": 0, - "99": 1, - "100": 0, - "101": 0, - "102": 0, - "103": 0, - "104": 0, - "105": 0, - "106": 0, - "107": 0, - "108": 0, - "109": 0, - "110": 0, - "111": 0, - "112": 0, - "113": 0, - "114": 0, - "115": 32, - "116": 0, - "117": 1, - "118": 4, - "119": 0, - "120": 0, - "121": 0, - "122": 0, - "123": 0, - "124": 0, - "125": 0, - "126": 0, - "127": 0, - "128": 0, - "129": 0, - "130": 4, - "131": 5, - "132": 0, - "133": 0, - "134": 0, - "135": 5, - "136": 0, - "137": 0, - "138": 0, - "139": 0, - "140": 0, - "141": 0 - }, - "f": { - "0": 0, - "1": 0, - "2": 18, - "3": 6, - "4": 6, - "5": 6, - "6": 6, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 1, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 32, - "63": 0, - "64": 1, - "65": 4, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0, - "73": 0, - "74": 0, - "75": 0, - "76": 0, - "77": 4, - "78": 0, - "79": 0, - "80": 0, - "81": 0, - "82": 0, - "83": 0 - }, - "b": { - "0": [0, 0], - "1": [0, 0], - "2": [0], - "3": [0], - "4": [0, 0], - "5": [0, 0], - "6": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/actions/createAction.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/actions/createAction.ts", - "statementMap": { - "0": { - "start": { "line": 19, "column": 20 }, - "end": { "line": 19, "column": 30 } - }, - "1": { - "start": { "line": 20, "column": 20 }, - "end": { "line": 20, "column": null } - }, - "2": { - "start": { "line": 25, "column": 13 }, - "end": { "line": 25, "column": null } - }, - "3": { - "start": { "line": 29, "column": 13 }, - "end": { "line": 29, "column": 39 } - }, - "4": { - "start": { "line": 30, "column": 11 }, - "end": { "line": 30, "column": 23 } - }, - "5": { - "start": { "line": 47, "column": 4 }, - "end": { "line": 52, "column": null } - }, - "6": { - "start": { "line": 55, "column": 35 }, - "end": { "line": 60, "column": 3 } - }, - "7": { - "start": { "line": 56, "column": 4 }, - "end": { "line": 59, "column": null } - }, - "8": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 67, "column": 3 } - }, - "9": { - "start": { "line": 63, "column": 4 }, - "end": { "line": 66, "column": null } - }, - "10": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 71, "column": null } - }, - "11": { - "start": { "line": 71, "column": 6 }, - "end": { "line": 71, "column": null } - }, - "12": { - "start": { "line": 72, "column": 4 }, - "end": { "line": 72, "column": null } - }, - "13": { - "start": { "line": 76, "column": 4 }, - "end": { "line": 79, "column": null } - }, - "14": { - "start": { "line": 83, "column": 4 }, - "end": { "line": 85, "column": null } - }, - "15": { - "start": { "line": 9, "column": 0 }, - "end": { "line": 9, "column": 13 } - }, - "16": { - "start": { "line": 89, "column": 13 }, - "end": { "line": 89, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 18, "column": 2 }, - "end": { "line": 18, "column": null } - }, - "loc": { - "start": { "line": 30, "column": 38 }, - "end": { "line": 31, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 33, "column": 2 }, - "end": { "line": 33, "column": 8 } - }, - "loc": { - "start": { "line": 45, "column": 58 }, - "end": { "line": 53, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 55, "column": 35 }, - "end": { "line": 55, "column": 36 } - }, - "loc": { - "start": { "line": 55, "column": 58 }, - "end": { "line": 60, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 62, "column": 13 } - }, - "loc": { - "start": { "line": 62, "column": 73 }, - "end": { "line": 67, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 69, "column": 2 }, - "end": { "line": 69, "column": 7 } - }, - "loc": { - "start": { "line": 69, "column": 46 }, - "end": { "line": 73, "column": 3 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 75, "column": 2 }, - "end": { "line": 75, "column": 7 } - }, - "loc": { - "start": { "line": 75, "column": 52 }, - "end": { "line": 80, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 82, "column": 2 }, - "end": { "line": 82, "column": 7 } - }, - "loc": { - "start": { "line": 82, "column": 51 }, - "end": { "line": 86, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 30, "column": 11 }, - "end": { "line": 30, "column": 38 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 30, "column": 23 }, - "end": { "line": 30, "column": 38 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 71, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 70, "column": 4 }, - "end": { "line": 71, "column": null } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 5, - "16": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0 }, - "b": { "0": [0], "1": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/actions/setupActions.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/actions/setupActions.ts", - "statementMap": { - "0": { - "start": { "line": 8, "column": 20 }, - "end": { "line": 14, "column": 3 } - }, - "1": { - "start": { "line": 9, "column": 73 }, - "end": { "line": 9, "column": 75 } - }, - "2": { - "start": { "line": 10, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "3": { - "start": { "line": 11, "column": 6 }, - "end": { "line": 11, "column": null } - }, - "4": { - "start": { "line": 13, "column": 4 }, - "end": { "line": 13, "column": null } - }, - "5": { - "start": { "line": 18, "column": 6 }, - "end": { "line": 27, "column": null } - }, - "6": { - "start": { "line": 20, "column": 6 }, - "end": { "line": 20, "column": null } - }, - "7": { - "start": { "line": 23, "column": 6 }, - "end": { "line": 25, "column": null } - }, - "8": { - "start": { "line": 24, "column": 34 }, - "end": { "line": 24, "column": 63 } - }, - "9": { - "start": { "line": 28, "column": 2 }, - "end": { "line": 28, "column": null } - }, - "10": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "setupActions", - "decl": { - "start": { "line": 5, "column": 16 }, - "end": { "line": 5, "column": 28 } - }, - "loc": { - "start": { "line": 6, "column": 58 }, - "end": { "line": 29, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 8, "column": 20 }, - "end": { "line": 8, "column": 25 } - }, - "loc": { - "start": { "line": 8, "column": 60 }, - "end": { "line": 14, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 19, "column": 4 }, - "end": { "line": 19, "column": 11 } - }, - "loc": { - "start": { "line": 19, "column": 41 }, - "end": { "line": 21, "column": 5 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 22, "column": 4 }, - "end": { "line": 22, "column": 9 } - }, - "loc": { - "start": { "line": 22, "column": 59 }, - "end": { "line": 26, "column": 5 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 24, "column": 27 }, - "end": { "line": 24, "column": 28 } - }, - "loc": { - "start": { "line": 24, "column": 34 }, - "end": { "line": 24, "column": 63 } - } - } - }, - "branchMap": {}, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/backup/Backups.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/backup/Backups.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 46 } - }, - "1": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 33 } - }, - "2": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 13, "column": null } - }, - "3": { - "start": { "line": 44, "column": 26 }, - "end": { "line": 44, "column": 34 } - }, - "4": { - "start": { "line": 47, "column": 12 }, - "end": { "line": 47, "column": 22 } - }, - "5": { - "start": { "line": 48, "column": 12 }, - "end": { "line": 48, "column": 24 } - }, - "6": { - "start": { "line": 53, "column": 4 }, - "end": { "line": 60, "column": null } - }, - "7": { - "start": { "line": 54, "column": 41 }, - "end": { "line": 59, "column": 8 } - }, - "8": { - "start": { "line": 65, "column": 4 }, - "end": { "line": 65, "column": null } - }, - "9": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 70, "column": null } - }, - "10": { - "start": { "line": 73, "column": 23 }, - "end": { "line": 73, "column": 43 } - }, - "11": { - "start": { "line": 75, "column": 4 }, - "end": { "line": 78, "column": null } - }, - "12": { - "start": { "line": 79, "column": 4 }, - "end": { "line": 79, "column": null } - }, - "13": { - "start": { "line": 82, "column": 4 }, - "end": { "line": 89, "column": null } - }, - "14": { - "start": { "line": 83, "column": 41 }, - "end": { "line": 88, "column": 8 } - }, - "15": { - "start": { "line": 92, "column": 4 }, - "end": { "line": 94, "column": null } - }, - "16": { - "start": { "line": 93, "column": 6 }, - "end": { "line": 93, "column": 79 } - }, - "17": { - "start": { "line": 95, "column": 4 }, - "end": { "line": 95, "column": null } - }, - "18": { - "start": { "line": 98, "column": 57 }, - "end": { "line": 115, "column": 5 } - }, - "19": { - "start": { "line": 101, "column": 6 }, - "end": { "line": 113, "column": null } - }, - "20": { - "start": { "line": 102, "column": 29 }, - "end": { "line": 110, "column": null } - }, - "21": { - "start": { "line": 112, "column": 8 }, - "end": { "line": 112, "column": null } - }, - "22": { - "start": { "line": 114, "column": 6 }, - "end": { "line": 114, "column": 12 } - }, - "23": { - "start": { "line": 116, "column": 59 }, - "end": { "line": 133, "column": 5 } - }, - "24": { - "start": { "line": 119, "column": 6 }, - "end": { "line": 131, "column": null } - }, - "25": { - "start": { "line": 120, "column": 29 }, - "end": { "line": 128, "column": null } - }, - "26": { - "start": { "line": 130, "column": 8 }, - "end": { "line": 130, "column": null } - }, - "27": { - "start": { "line": 132, "column": 6 }, - "end": { "line": 132, "column": 12 } - }, - "28": { - "start": { "line": 134, "column": 4 }, - "end": { "line": 134, "column": null } - }, - "29": { - "start": { "line": 43, "column": 13 }, - "end": { "line": 43, "column": 20 } - }, - "30": { - "start": { "line": 138, "column": 2 }, - "end": { "line": 138, "column": null } - }, - "31": { - "start": { "line": 154, "column": 62 }, - "end": { "line": 154, "column": 74 } - }, - "32": { - "start": { "line": 156, "column": 18 }, - "end": { "line": 156, "column": 25 } - }, - "33": { - "start": { "line": 157, "column": 25 }, - "end": { "line": 157, "column": 27 } - }, - "34": { - "start": { "line": 158, "column": 2 }, - "end": { "line": 160, "column": null } - }, - "35": { - "start": { "line": 159, "column": 4 }, - "end": { "line": 159, "column": null } - }, - "36": { - "start": { "line": 161, "column": 2 }, - "end": { "line": 163, "column": null } - }, - "37": { - "start": { "line": 162, "column": 4 }, - "end": { "line": 162, "column": null } - }, - "38": { - "start": { "line": 164, "column": 2 }, - "end": { "line": 166, "column": null } - }, - "39": { - "start": { "line": 165, "column": 4 }, - "end": { "line": 165, "column": null } - }, - "40": { - "start": { "line": 167, "column": 2 }, - "end": { "line": 169, "column": null } - }, - "41": { - "start": { "line": 168, "column": 4 }, - "end": { "line": 168, "column": null } - }, - "42": { - "start": { "line": 170, "column": 2 }, - "end": { "line": 170, "column": null } - }, - "43": { - "start": { "line": 171, "column": 2 }, - "end": { "line": 171, "column": null } - }, - "44": { - "start": { "line": 172, "column": 2 }, - "end": { "line": 172, "column": null } - }, - "45": { - "start": { "line": 173, "column": 2 }, - "end": { "line": 173, "column": null } - }, - "46": { - "start": { "line": 174, "column": 2 }, - "end": { "line": 174, "column": null } - }, - "47": { - "start": { "line": 175, "column": 18 }, - "end": { "line": 175, "column": 72 } - }, - "48": { - "start": { "line": 176, "column": 19 }, - "end": { "line": 176, "column": 22 } - }, - "49": { - "start": { "line": 177, "column": 2 }, - "end": { "line": 184, "column": null } - }, - "50": { - "start": { "line": 178, "column": 18 }, - "end": { "line": 178, "column": 62 } - }, - "51": { - "start": { "line": 179, "column": 4 }, - "end": { "line": 183, "column": null } - }, - "52": { - "start": { "line": 180, "column": 21 }, - "end": { "line": 180, "column": 50 } - }, - "53": { - "start": { "line": 181, "column": 6 }, - "end": { "line": 181, "column": 27 } - }, - "54": { - "start": { "line": 181, "column": 19 }, - "end": { "line": 181, "column": 27 } - }, - "55": { - "start": { "line": 182, "column": 6 }, - "end": { "line": 182, "column": null } - }, - "56": { - "start": { "line": 186, "column": 2 }, - "end": { "line": 188, "column": null } - }, - "57": { - "start": { "line": 187, "column": 4 }, - "end": { "line": 187, "column": null } - }, - "58": { - "start": { "line": 190, "column": 13 }, - "end": { "line": 196, "column": 3 } - }, - "59": { - "start": { "line": 191, "column": 16 }, - "end": { "line": 191, "column": 27 } - }, - "60": { - "start": { "line": 192, "column": 4 }, - "end": { "line": 194, "column": null } - }, - "61": { - "start": { "line": 193, "column": 6 }, - "end": { "line": 193, "column": null } - }, - "62": { - "start": { "line": 195, "column": 4 }, - "end": { "line": 195, "column": null } - }, - "63": { - "start": { "line": 197, "column": 22 }, - "end": { "line": 205, "column": 4 } - }, - "64": { - "start": { "line": 198, "column": 4 }, - "end": { "line": 204, "column": null } - }, - "65": { - "start": { "line": 199, "column": 6 }, - "end": { "line": 203, "column": null } - }, - "66": { - "start": { "line": 200, "column": 8 }, - "end": { "line": 200, "column": null } - }, - "67": { - "start": { "line": 202, "column": 8 }, - "end": { "line": 202, "column": null } - }, - "68": { - "start": { "line": 206, "column": 15 }, - "end": { "line": 206, "column": 32 } - }, - "69": { - "start": { "line": 206, "column": 21 }, - "end": { "line": 206, "column": 32 } - }, - "70": { - "start": { "line": 207, "column": 19 }, - "end": { "line": 207, "column": 52 } - }, - "71": { - "start": { "line": 207, "column": 25 }, - "end": { "line": 207, "column": 52 } - }, - "72": { - "start": { "line": 208, "column": 2 }, - "end": { "line": 208, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 46, "column": 2 }, - "end": { "line": 46, "column": null } - }, - "loc": { - "start": { "line": 48, "column": 63 }, - "end": { "line": 49, "column": 6 } - } - }, - "1": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 50, "column": 2 }, - "end": { "line": 50, "column": 8 } - }, - "loc": { - "start": { "line": 51, "column": 42 }, - "end": { "line": 61, "column": 3 } - } - }, - "2": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 54, "column": 25 }, - "end": { "line": 54, "column": 26 } - }, - "loc": { - "start": { "line": 54, "column": 41 }, - "end": { "line": 59, "column": 8 } - } - }, - "3": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 62, "column": 2 }, - "end": { "line": 62, "column": 8 } - }, - "loc": { - "start": { "line": 63, "column": 44 }, - "end": { "line": 66, "column": 3 } - } - }, - "4": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 67, "column": 8 } - }, - "loc": { - "start": { "line": 68, "column": 38 }, - "end": { "line": 71, "column": 3 } - } - }, - "5": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 74, "column": 2 }, - "end": { "line": 74, "column": 12 } - }, - "loc": { - "start": { "line": 74, "column": 47 }, - "end": { "line": 80, "column": 3 } - } - }, - "6": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 81, "column": 2 }, - "end": { "line": 81, "column": 9 } - }, - "loc": { - "start": { "line": 81, "column": 48 }, - "end": { "line": 90, "column": 3 } - } - }, - "7": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 83, "column": 25 }, - "end": { "line": 83, "column": 26 } - }, - "loc": { - "start": { "line": 83, "column": 41 }, - "end": { "line": 88, "column": 8 } - } - }, - "8": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 91, "column": 2 }, - "end": { "line": 91, "column": 9 } - }, - "loc": { - "start": { "line": 91, "column": 50 }, - "end": { "line": 96, "column": 3 } - } - }, - "9": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 92, "column": 20 }, - "end": { "line": 92, "column": 21 } - }, - "loc": { - "start": { "line": 93, "column": 6 }, - "end": { "line": 93, "column": 79 } - } - }, - "10": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 97, "column": 2 }, - "end": { "line": 97, "column": 7 } - }, - "loc": { - "start": { "line": 97, "column": 30 }, - "end": { "line": 135, "column": 3 } - } - }, - "11": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 98, "column": 57 }, - "end": { "line": 98, "column": 62 } - }, - "loc": { - "start": { "line": 100, "column": 9 }, - "end": { "line": 115, "column": 5 } - } - }, - "12": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 116, "column": 59 }, - "end": { "line": 116, "column": 64 } - }, - "loc": { - "start": { "line": 118, "column": 9 }, - "end": { "line": 133, "column": 5 } - } - }, - "13": { - "name": "notEmptyPath", - "decl": { - "start": { "line": 137, "column": 9 }, - "end": { "line": 137, "column": 21 } - }, - "loc": { - "start": { "line": 137, "column": 34 }, - "end": { "line": 139, "column": 1 } - } - }, - "14": { - "name": "runRsync", - "decl": { - "start": { "line": 140, "column": 15 }, - "end": { "line": 140, "column": 23 } - }, - "loc": { - "start": { "line": 148, "column": 24 }, - "end": { "line": 209, "column": 1 } - } - }, - "15": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 177, "column": 28 }, - "end": { "line": 177, "column": 29 } - }, - "loc": { - "start": { "line": 177, "column": 46 }, - "end": { "line": 184, "column": 3 } - } - }, - "16": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 186, "column": 28 }, - "end": { "line": 186, "column": 29 } - }, - "loc": { - "start": { "line": 186, "column": 46 }, - "end": { "line": 188, "column": 3 } - } - }, - "17": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 190, "column": 13 }, - "end": { "line": 190, "column": 18 } - }, - "loc": { - "start": { "line": 190, "column": 24 }, - "end": { "line": 196, "column": 3 } - } - }, - "18": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 197, "column": 40 }, - "end": { "line": 197, "column": 41 } - }, - "loc": { - "start": { "line": 197, "column": 60 }, - "end": { "line": 205, "column": 3 } - } - }, - "19": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 198, "column": 23 }, - "end": { "line": 198, "column": 24 } - }, - "loc": { - "start": { "line": 198, "column": 37 }, - "end": { "line": 204, "column": 5 } - } - }, - "20": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 206, "column": 15 }, - "end": { "line": 206, "column": 18 } - }, - "loc": { - "start": { "line": 206, "column": 21 }, - "end": { "line": 206, "column": 32 } - } - }, - "21": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 207, "column": 19 }, - "end": { "line": 207, "column": 22 } - }, - "loc": { - "start": { "line": 207, "column": 25 }, - "end": { "line": 207, "column": 52 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 47, "column": 12 }, - "end": { "line": 47, "column": 37 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 47, "column": 22 }, - "end": { "line": 47, "column": 37 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 48, "column": 12 }, - "end": { "line": 48, "column": 63 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 48, "column": 24 }, - "end": { "line": 48, "column": 63 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 158, "column": 2 }, - "end": { "line": 160, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 158, "column": 2 }, - "end": { "line": 160, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 161, "column": 2 }, - "end": { "line": 163, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 161, "column": 2 }, - "end": { "line": 163, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 164, "column": 2 }, - "end": { "line": 166, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 164, "column": 2 }, - "end": { "line": 166, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 181, "column": 6 }, - "end": { "line": 181, "column": 27 } - }, - "type": "if", - "locations": [ - { - "start": { "line": 181, "column": 6 }, - "end": { "line": 181, "column": 27 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 192, "column": 4 }, - "end": { "line": 194, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 192, "column": 4 }, - "end": { "line": 194, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 199, "column": 6 }, - "end": { "line": 203, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 199, "column": 6 }, - "end": { "line": 203, "column": null } - }, - { - "start": { "line": 201, "column": 13 }, - "end": { "line": 203, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 5, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 5, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0 - }, - "b": { - "0": [0], - "1": [0], - "2": [0], - "3": [0], - "4": [0], - "5": [0], - "6": [0], - "7": [0, 0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/backup/setupBackups.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/backup/setupBackups.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 35 } - }, - "1": { - "start": { "line": 14, "column": 18 }, - "end": { "line": 14, "column": 37 } - }, - "2": { - "start": { "line": 15, "column": 18 }, - "end": { "line": 15, "column": 44 } - }, - "3": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 22, "column": null } - }, - "4": { - "start": { "line": 17, "column": 4 }, - "end": { "line": 21, "column": null } - }, - "5": { - "start": { "line": 18, "column": 6 }, - "end": { "line": 18, "column": null } - }, - "6": { - "start": { "line": 20, "column": 6 }, - "end": { "line": 20, "column": null } - }, - "7": { - "start": { "line": 23, "column": 2 }, - "end": { "line": 23, "column": null } - }, - "8": { - "start": { "line": 27, "column": 6 }, - "end": { "line": 43, "column": null } - }, - "9": { - "start": { "line": 29, "column": 6 }, - "end": { "line": 33, "column": null } - }, - "10": { - "start": { "line": 30, "column": 8 }, - "end": { "line": 32, "column": null } - }, - "11": { - "start": { "line": 31, "column": 10 }, - "end": { "line": 31, "column": null } - }, - "12": { - "start": { "line": 36, "column": 6 }, - "end": { "line": 41, "column": null } - }, - "13": { - "start": { "line": 37, "column": 8 }, - "end": { "line": 39, "column": null } - }, - "14": { - "start": { "line": 38, "column": 10 }, - "end": { "line": 38, "column": null } - }, - "15": { - "start": { "line": 40, "column": 8 }, - "end": { "line": 40, "column": null } - }, - "16": { - "start": { "line": 44, "column": 2 }, - "end": { "line": 44, "column": null } - }, - "17": { - "start": { "line": 10, "column": 0 }, - "end": { "line": 10, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "setupBackups", - "decl": { - "start": { "line": 10, "column": 16 }, - "end": { "line": 10, "column": 28 } - }, - "loc": { - "start": { "line": 12, "column": 35 }, - "end": { "line": 45, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 28, "column": 4 }, - "end": { "line": 28, "column": 8 } - }, - "loc": { - "start": { "line": 28, "column": 20 }, - "end": { "line": 34, "column": 5 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 29, "column": 14 }, - "end": { "line": 29, "column": 19 } - }, - "loc": { - "start": { "line": 29, "column": 32 }, - "end": { "line": 33, "column": 7 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 35, "column": 4 }, - "end": { "line": 35, "column": 8 } - }, - "loc": { - "start": { "line": 35, "column": 21 }, - "end": { "line": 42, "column": 5 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 36, "column": 14 }, - "end": { "line": 36, "column": 19 } - }, - "loc": { - "start": { "line": 36, "column": 32 }, - "end": { "line": 41, "column": 7 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 17, "column": 4 }, - "end": { "line": 21, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 17, "column": 4 }, - "end": { "line": 21, "column": null } - }, - { - "start": { "line": 19, "column": 11 }, - "end": { "line": 21, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0 }, - "b": { "0": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/configConstants.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/configConstants.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 53 } - }, - "1": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 40 } - }, - "2": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 55 } - }, - "3": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 39 } - }, - "4": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 45 } - }, - "5": { - "start": { "line": 11, "column": 13 }, - "end": { "line": 45, "column": null } - }, - "6": { - "start": { "line": 50, "column": 13 }, - "end": { "line": 81, "column": null } - }, - "7": { - "start": { "line": 52, "column": 17 }, - "end": { "line": 52, "column": 56 } - }, - "8": { - "start": { "line": 53, "column": 4 }, - "end": { "line": 53, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 51, "column": 2 }, - "end": { "line": 51, "column": 7 } - }, - "loc": { - "start": { "line": 51, "column": 24 }, - "end": { "line": 54, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 53, "column": 11 }, - "end": { "line": 53, "column": 33 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 53, "column": 18 }, - "end": { "line": 53, "column": 20 } - }, - { - "start": { "line": 53, "column": 23 }, - "end": { "line": 53, "column": 33 } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 0, - "8": 0 - }, - "f": { "0": 0 }, - "b": { "0": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/configTypes.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/configTypes.ts", - "statementMap": { - "0": { - "start": { "line": 271, "column": 2 }, - "end": { "line": 271, "column": null } - }, - "1": { - "start": { "line": 267, "column": 0 }, - "end": { "line": 267, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "isValueSpecListOf", - "decl": { - "start": { "line": 267, "column": 16 }, - "end": { "line": 267, "column": 33 } - }, - "loc": { - "start": { "line": 269, "column": 6 }, - "end": { "line": 272, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 271, "column": 9 }, - "end": { "line": 271, "column": 41 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 271, "column": 9 }, - "end": { "line": 271, "column": 20 } - }, - { - "start": { "line": 271, "column": 24 }, - "end": { "line": 271, "column": 41 } - } - ] - } - }, - "s": { "0": 3, "1": 1 }, - "f": { "0": 3 }, - "b": { "0": [3, 3] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/setupConfig.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/setupConfig.ts", - "statementMap": { - "0": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 45 } - }, - "1": { - "start": { "line": 56, "column": 20 }, - "end": { "line": 56, "column": 34 } - }, - "2": { - "start": { "line": 57, "column": 2 }, - "end": { "line": 84, "column": null } - }, - "3": { - "start": { "line": 59, "column": 6 }, - "end": { "line": 64, "column": null } - }, - "4": { - "start": { "line": 60, "column": 8 }, - "end": { "line": 62, "column": null } - }, - "5": { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": null } - }, - "6": { - "start": { "line": 65, "column": 6 }, - "end": { "line": 65, "column": null } - }, - "7": { - "start": { "line": 66, "column": 6 }, - "end": { "line": 66, "column": null } - }, - "8": { - "start": { "line": 67, "column": 26 }, - "end": { "line": 70, "column": 8 } - }, - "9": { - "start": { "line": 71, "column": 6 }, - "end": { "line": 73, "column": null } - }, - "10": { - "start": { "line": 72, "column": 8 }, - "end": { "line": 72, "column": null } - }, - "11": { - "start": { "line": 76, "column": 26 }, - "end": { "line": 76, "column": 72 } - }, - "12": { - "start": { "line": 77, "column": 6 }, - "end": { "line": 82, "column": null } - }, - "13": { - "start": { "line": 43, "column": 0 }, - "end": { "line": 43, "column": 16 } - }, - "14": { - "start": { "line": 87, "column": 0 }, - "end": { "line": 87, "column": null } - } - }, - "fnMap": { - "0": { - "name": "setupConfig", - "decl": { - "start": { "line": 43, "column": 16 }, - "end": { "line": 43, "column": 27 } - }, - "loc": { - "start": { "line": 54, "column": 35 }, - "end": { "line": 85, "column": 1 } - } - }, - "1": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 58, "column": 16 }, - "end": { "line": 58, "column": 21 } - }, - "loc": { - "start": { "line": 58, "column": 45 }, - "end": { "line": 74, "column": 5 } - } - }, - "2": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 75, "column": 16 }, - "end": { "line": 75, "column": 21 } - }, - "loc": { - "start": { "line": 75, "column": 38 }, - "end": { "line": 83, "column": 5 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 59, "column": 6 }, - "end": { "line": 64, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 59, "column": 6 }, - "end": { "line": 64, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 71, "column": 6 }, - "end": { "line": 73, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 71, "column": 6 }, - "end": { "line": 73, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 76, "column": 38 }, - "end": { "line": 76, "column": 71 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 76, "column": 39 }, - "end": { "line": 76, "column": 62 } - }, - { - "start": { "line": 76, "column": 67 }, - "end": { "line": 76, "column": 71 } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 5, - "14": 5 - }, - "f": { "0": 0, "1": 0, "2": 0 }, - "b": { "0": [0], "1": [0], "2": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/config.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/config.ts", - "statementMap": { - "0": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 43 } - }, - "1": { - "start": { "line": 82, "column": 21 }, - "end": { "line": 82, "column": null } - }, - "2": { - "start": { "line": 85, "column": 11 }, - "end": { "line": 85, "column": 43 } - }, - "3": { - "start": { "line": 88, "column": 19 }, - "end": { "line": 88, "column": null } - }, - "4": { - "start": { "line": 91, "column": 4 }, - "end": { "line": 93, "column": null } - }, - "5": { - "start": { "line": 92, "column": 6 }, - "end": { "line": 92, "column": null } - }, - "6": { - "start": { "line": 94, "column": 4 }, - "end": { "line": 94, "column": null } - }, - "7": { - "start": { "line": 101, "column": 25 }, - "end": { "line": 101, "column": null } - }, - "8": { - "start": { "line": 104, "column": 4 }, - "end": { "line": 106, "column": null } - }, - "9": { - "start": { "line": 105, "column": 6 }, - "end": { "line": 105, "column": null } - }, - "10": { - "start": { "line": 107, "column": 22 }, - "end": { "line": 107, "column": 42 } - }, - "11": { - "start": { "line": 108, "column": 4 }, - "end": { "line": 117, "column": null } - }, - "12": { - "start": { "line": 135, "column": 4 }, - "end": { "line": 135, "column": null } - }, - "13": { - "start": { "line": 80, "column": 0 }, - "end": { "line": 80, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 81, "column": 2 }, - "end": { "line": 81, "column": null } - }, - "loc": { - "start": { "line": 85, "column": 43 }, - "end": { "line": 86, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 87, "column": 2 }, - "end": { "line": 87, "column": 7 } - }, - "loc": { - "start": { "line": 87, "column": 46 }, - "end": { "line": 95, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 97, "column": 2 }, - "end": { "line": 97, "column": 8 } - }, - "loc": { - "start": { "line": 100, "column": 14 }, - "end": { "line": 118, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 134, "column": 2 }, - "end": { "line": 134, "column": 11 } - }, - "loc": { - "start": { "line": 134, "column": 11 }, - "end": { "line": 136, "column": 3 } - } - } - }, - "branchMap": {}, - "s": { - "0": 6, - "1": 62, - "2": 62, - "3": 6, - "4": 6, - "5": 5, - "6": 6, - "7": 62, - "8": 62, - "9": 131, - "10": 62, - "11": 62, - "12": 0, - "13": 6 - }, - "f": { "0": 62, "1": 6, "2": 62, "3": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/list.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/list.ts", - "statementMap": { - "0": { - "start": { "line": 10, "column": 0 }, - "end": { "line": 10, "column": 60 } - }, - "1": { - "start": { "line": 26, "column": 11 }, - "end": { "line": 26, "column": 49 } - }, - "2": { - "start": { "line": 27, "column": 11 }, - "end": { "line": 27, "column": 43 } - }, - "3": { - "start": { "line": 51, "column": 4 }, - "end": { "line": 74, "column": null } - }, - "4": { - "start": { "line": 52, "column": 19 }, - "end": { "line": 61, "column": null } - }, - "5": { - "start": { "line": 62, "column": 45 }, - "end": { "line": 72, "column": null } - }, - "6": { - "start": { "line": 73, "column": 6 }, - "end": { "line": 73, "column": null } - }, - "7": { - "start": { "line": 102, "column": 4 }, - "end": { "line": 126, "column": null } - }, - "8": { - "start": { "line": 103, "column": 36 }, - "end": { "line": 103, "column": 55 } - }, - "9": { - "start": { "line": 104, "column": 19 }, - "end": { "line": 113, "column": null } - }, - "10": { - "start": { "line": 114, "column": 45 }, - "end": { "line": 124, "column": null } - }, - "11": { - "start": { "line": 125, "column": 6 }, - "end": { "line": 125, "column": null } - }, - "12": { - "start": { "line": 144, "column": 4 }, - "end": { "line": 168, "column": null } - }, - "13": { - "start": { "line": 145, "column": 54 }, - "end": { "line": 145, "column": 59 } - }, - "14": { - "start": { "line": 146, "column": 23 }, - "end": { "line": 146, "column": 60 } - }, - "15": { - "start": { "line": 147, "column": 19 }, - "end": { "line": 153, "column": null } - }, - "16": { - "start": { "line": 154, "column": 20 }, - "end": { "line": 158, "column": null } - }, - "17": { - "start": { "line": 159, "column": 6 }, - "end": { "line": 167, "column": null } - }, - "18": { - "start": { "line": 186, "column": 4 }, - "end": { "line": 186, "column": null } - }, - "19": { - "start": { "line": 24, "column": 0 }, - "end": { "line": 24, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 25, "column": 2 }, - "end": { "line": 25, "column": null } - }, - "loc": { - "start": { "line": 27, "column": 43 }, - "end": { "line": 28, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 29, "column": 2 }, - "end": { "line": 29, "column": 8 } - }, - "loc": { - "start": { "line": 49, "column": 5 }, - "end": { "line": 75, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 51, "column": 37 }, - "end": { "line": 51, "column": 40 } - }, - "loc": { - "start": { "line": 51, "column": 42 }, - "end": { "line": 74, "column": 5 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 76, "column": 2 }, - "end": { "line": 76, "column": 8 } - }, - "loc": { - "start": { "line": 100, "column": 5 }, - "end": { "line": 127, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 102, "column": 37 }, - "end": { "line": 102, "column": 42 } - }, - "loc": { - "start": { "line": 102, "column": 55 }, - "end": { "line": 126, "column": 5 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 128, "column": 2 }, - "end": { "line": 128, "column": 8 } - }, - "loc": { - "start": { "line": 142, "column": 5 }, - "end": { "line": 169, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 144, "column": 35 }, - "end": { "line": 144, "column": 40 } - }, - "loc": { - "start": { "line": 144, "column": 53 }, - "end": { "line": 168, "column": 5 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 185, "column": 2 }, - "end": { "line": 185, "column": 11 } - }, - "loc": { - "start": { "line": 185, "column": 11 }, - "end": { "line": 187, "column": 3 } - } - } - }, - "branchMap": {}, - "s": { - "0": 6, - "1": 11, - "2": 11, - "3": 4, - "4": 1, - "5": 1, - "6": 1, - "7": 1, - "8": 1, - "9": 1, - "10": 1, - "11": 1, - "12": 6, - "13": 1, - "14": 1, - "15": 1, - "16": 1, - "17": 1, - "18": 0, - "19": 6 - }, - "f": { "0": 11, "1": 4, "2": 1, "3": 1, "4": 1, "5": 6, "6": 1, "7": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/value.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/value.ts", - "statementMap": { - "0": { - "start": { "line": 15, "column": 0 }, - "end": { "line": 15, "column": null } - }, - "1": { - "start": { "line": 27, "column": 0 }, - "end": { "line": 27, "column": 38 } - }, - "2": { - "start": { "line": 39, "column": 2 }, - "end": { "line": 49, "column": 4 } - }, - "3": { - "start": { "line": 62, "column": 32 }, - "end": { "line": 63, "column": null } - }, - "4": { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": 63 } - }, - "5": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 72, "column": null } - }, - "6": { - "start": { "line": 72, "column": 40 }, - "end": { "line": 72, "column": null } - }, - "7": { - "start": { "line": 73, "column": 2 }, - "end": { "line": 73, "column": null } - }, - "8": { - "start": { "line": 100, "column": 11 }, - "end": { "line": 100, "column": 45 } - }, - "9": { - "start": { "line": 101, "column": 11 }, - "end": { "line": 101, "column": 43 } - }, - "10": { - "start": { "line": 112, "column": 4 }, - "end": { "line": 122, "column": null } - }, - "11": { - "start": { "line": 113, "column": 19 }, - "end": { "line": 120, "column": 8 } - }, - "12": { - "start": { "line": 136, "column": 4 }, - "end": { "line": 146, "column": null } - }, - "13": { - "start": { "line": 137, "column": 26 }, - "end": { "line": 144, "column": 8 } - }, - "14": { - "start": { "line": 168, "column": 4 }, - "end": { "line": 186, "column": null } - }, - "15": { - "start": { "line": 169, "column": 19 }, - "end": { "line": 184, "column": 8 } - }, - "16": { - "start": { "line": 213, "column": 4 }, - "end": { "line": 231, "column": null } - }, - "17": { - "start": { "line": 214, "column": 16 }, - "end": { "line": 214, "column": 35 } - }, - "18": { - "start": { "line": 215, "column": 6 }, - "end": { "line": 230, "column": null } - }, - "19": { - "start": { "line": 245, "column": 4 }, - "end": { "line": 258, "column": null } - }, - "20": { - "start": { "line": 246, "column": 39 }, - "end": { "line": 256, "column": null } - }, - "21": { - "start": { "line": 257, "column": 6 }, - "end": { "line": 257, "column": null } - }, - "22": { - "start": { "line": 275, "column": 4 }, - "end": { "line": 288, "column": null } - }, - "23": { - "start": { "line": 276, "column": 16 }, - "end": { "line": 276, "column": 35 } - }, - "24": { - "start": { "line": 277, "column": 6 }, - "end": { "line": 287, "column": null } - }, - "25": { - "start": { "line": 306, "column": 4 }, - "end": { "line": 322, "column": null } - }, - "26": { - "start": { "line": 307, "column": 13 }, - "end": { "line": 320, "column": 8 } - }, - "27": { - "start": { "line": 343, "column": 4 }, - "end": { "line": 359, "column": null } - }, - "28": { - "start": { "line": 344, "column": 16 }, - "end": { "line": 344, "column": 35 } - }, - "29": { - "start": { "line": 345, "column": 6 }, - "end": { "line": 358, "column": null } - }, - "30": { - "start": { "line": 370, "column": 4 }, - "end": { "line": 382, "column": null } - }, - "31": { - "start": { "line": 371, "column": 13 }, - "end": { "line": 379, "column": 8 } - }, - "32": { - "start": { "line": 397, "column": 4 }, - "end": { "line": 408, "column": null } - }, - "33": { - "start": { "line": 398, "column": 16 }, - "end": { "line": 398, "column": 35 } - }, - "34": { - "start": { "line": 399, "column": 6 }, - "end": { "line": 407, "column": null } - }, - "35": { - "start": { "line": 423, "column": 4 }, - "end": { "line": 438, "column": null } - }, - "36": { - "start": { "line": 424, "column": 13 }, - "end": { "line": 436, "column": 8 } - }, - "37": { - "start": { "line": 456, "column": 4 }, - "end": { "line": 470, "column": null } - }, - "38": { - "start": { "line": 457, "column": 16 }, - "end": { "line": 457, "column": 35 } - }, - "39": { - "start": { "line": 458, "column": 6 }, - "end": { "line": 469, "column": null } - }, - "40": { - "start": { "line": 491, "column": 4 }, - "end": { "line": 507, "column": null } - }, - "41": { - "start": { "line": 492, "column": 13 }, - "end": { "line": 500, "column": 8 } - }, - "42": { - "start": { "line": 503, "column": 64 }, - "end": { "line": 503, "column": 74 } - }, - "43": { - "start": { "line": 527, "column": 4 }, - "end": { "line": 538, "column": null } - }, - "44": { - "start": { "line": 528, "column": 16 }, - "end": { "line": 528, "column": 35 } - }, - "45": { - "start": { "line": 529, "column": 6 }, - "end": { "line": 537, "column": null } - }, - "46": { - "start": { "line": 558, "column": 4 }, - "end": { "line": 572, "column": null } - }, - "47": { - "start": { "line": 559, "column": 13 }, - "end": { "line": 568, "column": 8 } - }, - "48": { - "start": { "line": 594, "column": 4 }, - "end": { "line": 606, "column": null } - }, - "49": { - "start": { "line": 595, "column": 16 }, - "end": { "line": 595, "column": 35 } - }, - "50": { - "start": { "line": 596, "column": 6 }, - "end": { "line": 605, "column": null } - }, - "51": { - "start": { "line": 616, "column": 4 }, - "end": { "line": 625, "column": null } - }, - "52": { - "start": { "line": 617, "column": 20 }, - "end": { "line": 617, "column": 52 } - }, - "53": { - "start": { "line": 618, "column": 6 }, - "end": { "line": 624, "column": null } - }, - "54": { - "start": { "line": 634, "column": 23 }, - "end": { "line": 639, "column": null } - }, - "55": { - "start": { "line": 640, "column": 4 }, - "end": { "line": 647, "column": null } - }, - "56": { - "start": { "line": 641, "column": 13 }, - "end": { "line": 645, "column": 8 } - }, - "57": { - "start": { "line": 661, "column": 4 }, - "end": { "line": 669, "column": null } - }, - "58": { - "start": { "line": 662, "column": 26 }, - "end": { "line": 667, "column": 8 } - }, - "59": { - "start": { "line": 689, "column": 4 }, - "end": { "line": 701, "column": null } - }, - "60": { - "start": { "line": 690, "column": 26 }, - "end": { "line": 699, "column": 8 } - }, - "61": { - "start": { "line": 717, "column": 4 }, - "end": { "line": 729, "column": null } - }, - "62": { - "start": { "line": 718, "column": 26 }, - "end": { "line": 727, "column": 8 } - }, - "63": { - "start": { "line": 748, "column": 4 }, - "end": { "line": 759, "column": null } - }, - "64": { - "start": { "line": 749, "column": 24 }, - "end": { "line": 749, "column": 43 } - }, - "65": { - "start": { "line": 750, "column": 6 }, - "end": { "line": 758, "column": null } - }, - "66": { - "start": { "line": 763, "column": 4 }, - "end": { "line": 763, "column": null } - }, - "67": { - "start": { "line": 763, "column": 47 }, - "end": { "line": 763, "column": 63 } - }, - "68": { - "start": { "line": 781, "column": 4 }, - "end": { "line": 781, "column": null } - }, - "69": { - "start": { "line": 98, "column": 0 }, - "end": { "line": 98, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "requiredLikeToAbove", - "decl": { - "start": { "line": 35, "column": 9 }, - "end": { "line": 35, "column": 28 } - }, - "loc": { - "start": { "line": 36, "column": 21 }, - "end": { "line": 50, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 63, "column": 2 }, - "end": { "line": 63, "column": 5 } - }, - "loc": { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": 63 } - } - }, - "2": { - "name": "asRequiredParser", - "decl": { - "start": { "line": 65, "column": 9 }, - "end": { "line": 65, "column": 25 } - }, - "loc": { - "start": { "line": 71, "column": 45 }, - "end": { "line": 74, "column": 1 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 99, "column": 2 }, - "end": { "line": 99, "column": null } - }, - "loc": { - "start": { "line": 101, "column": 43 }, - "end": { "line": 102, "column": 6 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 103, "column": 2 }, - "end": { "line": 103, "column": 8 } - }, - "loc": { - "start": { "line": 111, "column": 3 }, - "end": { "line": 123, "column": 3 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 113, "column": 6 }, - "end": { "line": 113, "column": 11 } - }, - "loc": { - "start": { "line": 113, "column": 19 }, - "end": { "line": 120, "column": 8 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 124, "column": 2 }, - "end": { "line": 124, "column": 8 } - }, - "loc": { - "start": { "line": 134, "column": 5 }, - "end": { "line": 147, "column": 3 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 137, "column": 11 } - }, - "loc": { - "start": { "line": 137, "column": 26 }, - "end": { "line": 144, "column": 8 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 148, "column": 2 }, - "end": { "line": 148, "column": 8 } - }, - "loc": { - "start": { "line": 167, "column": 3 }, - "end": { "line": 187, "column": 3 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 169, "column": 6 }, - "end": { "line": 169, "column": 11 } - }, - "loc": { - "start": { "line": 169, "column": 19 }, - "end": { "line": 184, "column": 8 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 188, "column": 2 }, - "end": { "line": 188, "column": 8 } - }, - "loc": { - "start": { "line": 211, "column": 5 }, - "end": { "line": 232, "column": 3 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 213, "column": 55 }, - "end": { "line": 213, "column": 60 } - }, - "loc": { - "start": { "line": 213, "column": 73 }, - "end": { "line": 231, "column": 5 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 233, "column": 2 }, - "end": { "line": 233, "column": 8 } - }, - "loc": { - "start": { "line": 244, "column": 3 }, - "end": { "line": 259, "column": 3 } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 245, "column": 36 }, - "end": { "line": 245, "column": 41 } - }, - "loc": { - "start": { "line": 245, "column": 47 }, - "end": { "line": 258, "column": 5 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 260, "column": 2 }, - "end": { "line": 260, "column": 8 } - }, - "loc": { - "start": { "line": 273, "column": 5 }, - "end": { "line": 289, "column": 3 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 275, "column": 36 }, - "end": { "line": 275, "column": 41 } - }, - "loc": { - "start": { "line": 275, "column": 54 }, - "end": { "line": 288, "column": 5 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 290, "column": 2 }, - "end": { "line": 290, "column": 8 } - }, - "loc": { - "start": { "line": 305, "column": 3 }, - "end": { "line": 323, "column": 3 } - } - }, - "17": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 307, "column": 6 }, - "end": { "line": 307, "column": 9 } - }, - "loc": { - "start": { "line": 307, "column": 13 }, - "end": { "line": 320, "column": 8 } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 324, "column": 2 }, - "end": { "line": 324, "column": 8 } - }, - "loc": { - "start": { "line": 341, "column": 5 }, - "end": { "line": 360, "column": 3 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 343, "column": 55 }, - "end": { "line": 343, "column": 60 } - }, - "loc": { - "start": { "line": 343, "column": 73 }, - "end": { "line": 359, "column": 5 } - } - }, - "20": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 361, "column": 2 }, - "end": { "line": 361, "column": 8 } - }, - "loc": { - "start": { "line": 369, "column": 3 }, - "end": { "line": 383, "column": 3 } - } - }, - "21": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 371, "column": 6 }, - "end": { "line": 371, "column": 9 } - }, - "loc": { - "start": { "line": 371, "column": 13 }, - "end": { "line": 379, "column": 8 } - } - }, - "22": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 385, "column": 2 }, - "end": { "line": 385, "column": 8 } - }, - "loc": { - "start": { "line": 395, "column": 5 }, - "end": { "line": 409, "column": 3 } - } - }, - "23": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 397, "column": 55 }, - "end": { "line": 397, "column": 60 } - }, - "loc": { - "start": { "line": 397, "column": 73 }, - "end": { "line": 408, "column": 5 } - } - }, - "24": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 410, "column": 2 }, - "end": { "line": 410, "column": 8 } - }, - "loc": { - "start": { "line": 422, "column": 3 }, - "end": { "line": 439, "column": 3 } - } - }, - "25": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 424, "column": 6 }, - "end": { "line": 424, "column": 9 } - }, - "loc": { - "start": { "line": 424, "column": 13 }, - "end": { "line": 436, "column": 8 } - } - }, - "26": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 440, "column": 2 }, - "end": { "line": 440, "column": 8 } - }, - "loc": { - "start": { "line": 454, "column": 5 }, - "end": { "line": 471, "column": 3 } - } - }, - "27": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 456, "column": 55 }, - "end": { "line": 456, "column": 60 } - }, - "loc": { - "start": { "line": 456, "column": 73 }, - "end": { "line": 470, "column": 5 } - } - }, - "28": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 472, "column": 2 }, - "end": { "line": 472, "column": 8 } - }, - "loc": { - "start": { "line": 490, "column": 3 }, - "end": { "line": 508, "column": 3 } - } - }, - "29": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 492, "column": 6 }, - "end": { "line": 492, "column": 9 } - }, - "loc": { - "start": { "line": 492, "column": 13 }, - "end": { "line": 500, "column": 8 } - } - }, - "30": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 503, "column": 39 }, - "end": { "line": 503, "column": 40 } - }, - "loc": { - "start": { "line": 503, "column": 64 }, - "end": { "line": 503, "column": 74 } - } - }, - "31": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 509, "column": 2 }, - "end": { "line": 509, "column": 8 } - }, - "loc": { - "start": { "line": 525, "column": 5 }, - "end": { "line": 539, "column": 3 } - } - }, - "32": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 527, "column": 55 }, - "end": { "line": 527, "column": 60 } - }, - "loc": { - "start": { "line": 527, "column": 73 }, - "end": { "line": 538, "column": 5 } - } - }, - "33": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 540, "column": 2 }, - "end": { "line": 540, "column": 8 } - }, - "loc": { - "start": { "line": 557, "column": 3 }, - "end": { "line": 573, "column": 3 } - } - }, - "34": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 559, "column": 6 }, - "end": { "line": 559, "column": 9 } - }, - "loc": { - "start": { "line": 559, "column": 13 }, - "end": { "line": 568, "column": 8 } - } - }, - "35": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 574, "column": 2 }, - "end": { "line": 574, "column": 8 } - }, - "loc": { - "start": { "line": 592, "column": 5 }, - "end": { "line": 607, "column": 3 } - } - }, - "36": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 594, "column": 38 }, - "end": { "line": 594, "column": 43 } - }, - "loc": { - "start": { "line": 594, "column": 56 }, - "end": { "line": 606, "column": 5 } - } - }, - "37": { - "name": "(anonymous_37)", - "decl": { - "start": { "line": 608, "column": 2 }, - "end": { "line": 608, "column": 8 } - }, - "loc": { - "start": { "line": 614, "column": 29 }, - "end": { "line": 626, "column": 3 } - } - }, - "38": { - "name": "(anonymous_38)", - "decl": { - "start": { "line": 616, "column": 34 }, - "end": { "line": 616, "column": 39 } - }, - "loc": { - "start": { "line": 616, "column": 52 }, - "end": { "line": 625, "column": 5 } - } - }, - "39": { - "name": "(anonymous_39)", - "decl": { - "start": { "line": 627, "column": 2 }, - "end": { "line": 627, "column": 8 } - }, - "loc": { - "start": { "line": 633, "column": 3 }, - "end": { "line": 648, "column": 3 } - } - }, - "40": { - "name": "(anonymous_40)", - "decl": { - "start": { "line": 641, "column": 6 }, - "end": { "line": 641, "column": 9 } - }, - "loc": { - "start": { "line": 641, "column": 13 }, - "end": { "line": 645, "column": 8 } - } - }, - "41": { - "name": "(anonymous_41)", - "decl": { - "start": { "line": 649, "column": 2 }, - "end": { "line": 649, "column": 8 } - }, - "loc": { - "start": { "line": 659, "column": 5 }, - "end": { "line": 670, "column": 3 } - } - }, - "42": { - "name": "(anonymous_42)", - "decl": { - "start": { "line": 662, "column": 6 }, - "end": { "line": 662, "column": 11 } - }, - "loc": { - "start": { "line": 662, "column": 26 }, - "end": { "line": 667, "column": 8 } - } - }, - "43": { - "name": "(anonymous_43)", - "decl": { - "start": { "line": 671, "column": 2 }, - "end": { "line": 671, "column": 8 } - }, - "loc": { - "start": { "line": 687, "column": 36 }, - "end": { "line": 702, "column": 3 } - } - }, - "44": { - "name": "(anonymous_44)", - "decl": { - "start": { "line": 690, "column": 6 }, - "end": { "line": 690, "column": 11 } - }, - "loc": { - "start": { "line": 690, "column": 26 }, - "end": { "line": 699, "column": 8 } - } - }, - "45": { - "name": "(anonymous_45)", - "decl": { - "start": { "line": 703, "column": 2 }, - "end": { "line": 703, "column": 8 } - }, - "loc": { - "start": { "line": 715, "column": 60 }, - "end": { "line": 730, "column": 3 } - } - }, - "46": { - "name": "(anonymous_46)", - "decl": { - "start": { "line": 718, "column": 6 }, - "end": { "line": 718, "column": 11 } - }, - "loc": { - "start": { "line": 718, "column": 26 }, - "end": { "line": 727, "column": 8 } - } - }, - "47": { - "name": "(anonymous_47)", - "decl": { - "start": { "line": 731, "column": 2 }, - "end": { "line": 731, "column": 8 } - }, - "loc": { - "start": { "line": 746, "column": 60 }, - "end": { "line": 760, "column": 3 } - } - }, - "48": { - "name": "(anonymous_48)", - "decl": { - "start": { "line": 748, "column": 53 }, - "end": { "line": 748, "column": 58 } - }, - "loc": { - "start": { "line": 748, "column": 71 }, - "end": { "line": 759, "column": 5 } - } - }, - "49": { - "name": "(anonymous_49)", - "decl": { - "start": { "line": 762, "column": 2 }, - "end": { "line": 762, "column": 8 } - }, - "loc": { - "start": { "line": 762, "column": 47 }, - "end": { "line": 764, "column": 3 } - } - }, - "50": { - "name": "(anonymous_50)", - "decl": { - "start": { "line": 763, "column": 34 }, - "end": { "line": 763, "column": 35 } - }, - "loc": { - "start": { "line": 763, "column": 47 }, - "end": { "line": 763, "column": 63 } - } - }, - "51": { - "name": "(anonymous_51)", - "decl": { - "start": { "line": 780, "column": 2 }, - "end": { "line": 780, "column": 11 } - }, - "loc": { - "start": { "line": 780, "column": 11 }, - "end": { "line": 782, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 40, "column": 15 }, - "end": { "line": 40, "column": 69 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 40, "column": 50 }, - "end": { "line": 40, "column": 54 } - }, - { - "start": { "line": 40, "column": 57 }, - "end": { "line": 40, "column": 69 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 45, "column": 13 }, - "end": { "line": 45, "column": 75 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 45, "column": 48 }, - "end": { "line": 45, "column": 68 } - }, - { - "start": { "line": 45, "column": 71 }, - "end": { "line": 45, "column": 75 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 72, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 72, "column": 2 }, - "end": { "line": 72, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 118, "column": 19 }, - "end": { "line": 118, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 118, "column": 19 }, - "end": { "line": 118, "column": 30 } - }, - { - "start": { "line": 118, "column": 34 }, - "end": { "line": 118, "column": 39 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 180, "column": 19 }, - "end": { "line": 180, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 180, "column": 19 }, - "end": { "line": 180, "column": 30 } - }, - { - "start": { "line": 180, "column": 34 }, - "end": { "line": 180, "column": 39 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 181, "column": 18 }, - "end": { "line": 181, "column": 36 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 181, "column": 18 }, - "end": { "line": 181, "column": 28 } - }, - { - "start": { "line": 181, "column": 32 }, - "end": { "line": 181, "column": 36 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 227, "column": 18 }, - "end": { "line": 227, "column": 36 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 227, "column": 18 }, - "end": { "line": 227, "column": 28 } - }, - { - "start": { "line": 227, "column": 32 }, - "end": { "line": 227, "column": 36 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 254, "column": 19 }, - "end": { "line": 254, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 254, "column": 19 }, - "end": { "line": 254, "column": 30 } - }, - { - "start": { "line": 254, "column": 34 }, - "end": { "line": 254, "column": 39 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 317, "column": 19 }, - "end": { "line": 317, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 317, "column": 19 }, - "end": { "line": 317, "column": 30 } - }, - { - "start": { "line": 317, "column": 34 }, - "end": { "line": 317, "column": 39 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 376, "column": 19 }, - "end": { "line": 376, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 376, "column": 19 }, - "end": { "line": 376, "column": 30 } - }, - { - "start": { "line": 376, "column": 34 }, - "end": { "line": 376, "column": 39 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 433, "column": 19 }, - "end": { "line": 433, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 433, "column": 19 }, - "end": { "line": 433, "column": 30 } - }, - { - "start": { "line": 433, "column": 34 }, - "end": { "line": 433, "column": 39 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 497, "column": 19 }, - "end": { "line": 497, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 497, "column": 19 }, - "end": { "line": 497, "column": 30 } - }, - { - "start": { "line": 497, "column": 34 }, - "end": { "line": 497, "column": 39 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 566, "column": 19 }, - "end": { "line": 566, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 566, "column": 19 }, - "end": { "line": 566, "column": 30 } - }, - { - "start": { "line": 566, "column": 34 }, - "end": { "line": 566, "column": 39 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 698, "column": 19 }, - "end": { "line": 698, "column": 39 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 698, "column": 19 }, - "end": { "line": 698, "column": 30 } - }, - { - "start": { "line": 698, "column": 34 }, - "end": { "line": 698, "column": 39 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 725, "column": 18 }, - "end": { "line": 725, "column": 57 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 725, "column": 19 }, - "end": { "line": 725, "column": 47 } - }, - { - "start": { "line": 725, "column": 52 }, - "end": { "line": 725, "column": 57 } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 16, - "3": 6, - "4": 5, - "5": 89, - "6": 61, - "7": 28, - "8": 169, - "9": 169, - "10": 34, - "11": 4, - "12": 1, - "13": 1, - "14": 40, - "15": 4, - "16": 3, - "17": 5, - "18": 5, - "19": 3, - "20": 0, - "21": 0, - "22": 1, - "23": 1, - "24": 1, - "25": 28, - "26": 0, - "27": 1, - "28": 1, - "29": 1, - "30": 2, - "31": 0, - "32": 1, - "33": 1, - "34": 1, - "35": 2, - "36": 0, - "37": 1, - "38": 1, - "39": 1, - "40": 6, - "41": 1, - "42": 10, - "43": 1, - "44": 1, - "45": 1, - "46": 4, - "47": 0, - "48": 1, - "49": 1, - "50": 1, - "51": 17, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 5, - "60": 0, - "61": 6, - "62": 1, - "63": 1, - "64": 1, - "65": 1, - "66": 11, - "67": 3, - "68": 0, - "69": 6 - }, - "f": { - "0": 16, - "1": 5, - "2": 89, - "3": 169, - "4": 34, - "5": 4, - "6": 1, - "7": 1, - "8": 40, - "9": 4, - "10": 3, - "11": 5, - "12": 3, - "13": 0, - "14": 1, - "15": 1, - "16": 28, - "17": 0, - "18": 1, - "19": 1, - "20": 2, - "21": 0, - "22": 1, - "23": 1, - "24": 2, - "25": 0, - "26": 1, - "27": 1, - "28": 6, - "29": 1, - "30": 10, - "31": 1, - "32": 1, - "33": 4, - "34": 0, - "35": 1, - "36": 1, - "37": 17, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 5, - "44": 0, - "45": 6, - "46": 1, - "47": 1, - "48": 1, - "49": 11, - "50": 3, - "51": 0 - }, - "b": { - "0": [11, 5], - "1": [11, 5], - "2": [61], - "3": [4, 4], - "4": [4, 4], - "5": [4, 4], - "6": [5, 5], - "7": [0, 0], - "8": [0, 0], - "9": [0, 0], - "10": [0, 0], - "11": [1, 1], - "12": [0, 0], - "13": [0, 0], - "14": [1, 0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/variants.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/config/builder/variants.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 60 } - }, - "1": { - "start": { "line": 57, "column": 11 }, - "end": { "line": 57, "column": 62 } - }, - "2": { - "start": { "line": 58, "column": 11 }, - "end": { "line": 58, "column": 43 } - }, - "3": { - "start": { "line": 69, "column": 22 }, - "end": { "line": 75, "column": null } - }, - "4": { - "start": { "line": 71, "column": 8 }, - "end": { "line": 74, "column": 10 } - }, - "5": { - "start": { "line": 78, "column": 4 }, - "end": { "line": 101, "column": null } - }, - "6": { - "start": { "line": 90, "column": 23 }, - "end": { "line": 90, "column": null } - }, - "7": { - "start": { "line": 93, "column": 6 }, - "end": { "line": 99, "column": null } - }, - "8": { - "start": { "line": 94, "column": 22 }, - "end": { "line": 94, "column": 28 } - }, - "9": { - "start": { "line": 95, "column": 8 }, - "end": { "line": 98, "column": null } - }, - "10": { - "start": { "line": 100, "column": 6 }, - "end": { "line": 100, "column": null } - }, - "11": { - "start": { "line": 118, "column": 4 }, - "end": { "line": 118, "column": null } - }, - "12": { - "start": { "line": 54, "column": 0 }, - "end": { "line": 54, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 56, "column": 2 }, - "end": { "line": 56, "column": null } - }, - "loc": { - "start": { "line": 58, "column": 43 }, - "end": { "line": 59, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 60, "column": 2 }, - "end": { "line": 60, "column": 8 } - }, - "loc": { - "start": { "line": 68, "column": 20 }, - "end": { "line": 102, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 70, "column": 31 }, - "end": { "line": 70, "column": 32 } - }, - "loc": { - "start": { "line": 71, "column": 8 }, - "end": { "line": 74, "column": 10 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 89, "column": 6 }, - "end": { "line": 89, "column": 11 } - }, - "loc": { - "start": { "line": 89, "column": 24 }, - "end": { "line": 101, "column": 5 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 117, "column": 2 }, - "end": { "line": 117, "column": 11 } - }, - "loc": { - "start": { "line": 117, "column": 11 }, - "end": { "line": 119, "column": 3 } - } - } - }, - "branchMap": {}, - "s": { - "0": 5, - "1": 12, - "2": 12, - "3": 12, - "4": 28, - "5": 12, - "6": 2, - "7": 2, - "8": 4, - "9": 4, - "10": 2, - "11": 0, - "12": 5 - }, - "f": { "0": 12, "1": 12, "2": 28, "3": 2, "4": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/DependencyConfig.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/DependencyConfig.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 45 } - }, - "1": { - "start": { "line": 16, "column": 25 }, - "end": { "line": 21, "column": 3 } - }, - "2": { - "start": { "line": 20, "column": 4 }, - "end": { "line": 20, "column": null } - }, - "3": { - "start": { "line": 23, "column": 13 }, - "end": { "line": 23, "column": null } - }, - "4": { - "start": { "line": 27, "column": 13 }, - "end": { "line": 27, "column": null } - }, - "5": { - "start": { "line": 34, "column": 4 }, - "end": { "line": 37, "column": null } - }, - "6": { - "start": { "line": 10, "column": 13 }, - "end": { "line": 10, "column": 29 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 16, "column": 25 }, - "end": { "line": 16, "column": 30 } - }, - "loc": { - "start": { "line": 19, "column": 25 }, - "end": { "line": 21, "column": 3 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 22, "column": null } - }, - "loc": { - "start": { "line": 30, "column": 45 }, - "end": { "line": 31, "column": 6 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 33, "column": 2 }, - "end": { "line": 33, "column": 7 } - }, - "loc": { - "start": { "line": 33, "column": 67 }, - "end": { "line": 38, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 20, "column": 47 }, - "end": { "line": 20, "column": 73 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 20, "column": 47 }, - "end": { "line": 20, "column": 67 } - }, - { - "start": { "line": 20, "column": 71 }, - "end": { "line": 20, "column": 73 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 27, "column": 13 }, - "end": { "line": 30, "column": 45 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 30, "column": 8 }, - "end": { "line": 30, "column": 45 } - } - ] - } - }, - "s": { "0": 5, "1": 5, "2": 0, "3": 1, "4": 1, "5": 0, "6": 5 }, - "f": { "0": 0, "1": 1, "2": 0 }, - "b": { "0": [0, 0], "1": [1] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/dependencies.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/dependencies.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 56 } - }, - "1": { - "start": { "line": 38, "column": 32 }, - "end": { "line": 43, "column": 4 } - }, - "2": { - "start": { "line": 44, "column": 2 }, - "end": { "line": 48, "column": null } - }, - "3": { - "start": { "line": 45, "column": 4 }, - "end": { "line": 47, "column": null } - }, - "4": { - "start": { "line": 46, "column": 7 }, - "end": { "line": 46, "column": 48 } - }, - "5": { - "start": { "line": 50, "column": 15 }, - "end": { "line": 57, "column": 3 } - }, - "6": { - "start": { "line": 51, "column": 34 }, - "end": { "line": 51, "column": 78 } - }, - "7": { - "start": { "line": 51, "column": 59 }, - "end": { "line": 51, "column": 77 } - }, - "8": { - "start": { "line": 52, "column": 29 }, - "end": { "line": 52, "column": 75 } - }, - "9": { - "start": { "line": 52, "column": 49 }, - "end": { "line": 52, "column": 74 } - }, - "10": { - "start": { "line": 53, "column": 4 }, - "end": { "line": 55, "column": null } - }, - "11": { - "start": { "line": 54, "column": 6 }, - "end": { "line": 54, "column": null } - }, - "12": { - "start": { "line": 56, "column": 4 }, - "end": { "line": 56, "column": null } - }, - "13": { - "start": { "line": 59, "column": 29 }, - "end": { "line": 60, "column": 45 } - }, - "14": { - "start": { "line": 60, "column": 4 }, - "end": { "line": 60, "column": 45 } - }, - "15": { - "start": { "line": 61, "column": 36 }, - "end": { "line": 69, "column": 3 } - }, - "16": { - "start": { "line": 62, "column": 16 }, - "end": { "line": 62, "column": 31 } - }, - "17": { - "start": { "line": 63, "column": 4 }, - "end": { "line": 68, "column": null } - }, - "18": { - "start": { "line": 70, "column": 27 }, - "end": { "line": 73, "column": 3 } - }, - "19": { - "start": { "line": 71, "column": 16 }, - "end": { "line": 71, "column": 31 } - }, - "20": { - "start": { "line": 72, "column": 4 }, - "end": { "line": 72, "column": null } - }, - "21": { - "start": { "line": 74, "column": 26 }, - "end": { "line": 75, "column": 42 } - }, - "22": { - "start": { "line": 75, "column": 4 }, - "end": { "line": 75, "column": 42 } - }, - "23": { - "start": { "line": 76, "column": 31 }, - "end": { "line": 92, "column": 3 } - }, - "24": { - "start": { "line": 80, "column": 16 }, - "end": { "line": 80, "column": 31 } - }, - "25": { - "start": { "line": 81, "column": 4 }, - "end": { "line": 87, "column": null } - }, - "26": { - "start": { "line": 86, "column": 6 }, - "end": { "line": 86, "column": null } - }, - "27": { - "start": { "line": 88, "column": 19 }, - "end": { "line": 90, "column": 53 } - }, - "28": { - "start": { "line": 89, "column": 28 }, - "end": { "line": 89, "column": 71 } - }, - "29": { - "start": { "line": 90, "column": 28 }, - "end": { "line": 90, "column": 52 } - }, - "30": { - "start": { "line": 91, "column": 4 }, - "end": { "line": 91, "column": null } - }, - "31": { - "start": { "line": 93, "column": 23 }, - "end": { "line": 98, "column": 35 } - }, - "32": { - "start": { "line": 94, "column": 4 }, - "end": { "line": 98, "column": 35 } - }, - "33": { - "start": { "line": 99, "column": 20 }, - "end": { "line": 102, "column": 69 } - }, - "34": { - "start": { "line": 100, "column": 4 }, - "end": { "line": 102, "column": 69 } - }, - "35": { - "start": { "line": 102, "column": 34 }, - "end": { "line": 102, "column": 68 } - }, - "36": { - "start": { "line": 104, "column": 39 }, - "end": { "line": 109, "column": 3 } - }, - "37": { - "start": { "line": 105, "column": 16 }, - "end": { "line": 105, "column": 31 } - }, - "38": { - "start": { "line": 106, "column": 4 }, - "end": { "line": 108, "column": null } - }, - "39": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 107, "column": null } - }, - "40": { - "start": { "line": 110, "column": 46 }, - "end": { "line": 126, "column": 3 } - }, - "41": { - "start": { "line": 111, "column": 16 }, - "end": { "line": 111, "column": 31 } - }, - "42": { - "start": { "line": 112, "column": 4 }, - "end": { "line": 114, "column": null } - }, - "43": { - "start": { "line": 113, "column": 6 }, - "end": { "line": 113, "column": null } - }, - "44": { - "start": { "line": 115, "column": 4 }, - "end": { "line": 125, "column": null } - }, - "45": { - "start": { "line": 117, "column": 8 }, - "end": { "line": 118, "column": null } - }, - "46": { - "start": { "line": 122, "column": 6 }, - "end": { "line": 124, "column": null } - }, - "47": { - "start": { "line": 127, "column": 37 }, - "end": { "line": 132, "column": 3 } - }, - "48": { - "start": { "line": 128, "column": 16 }, - "end": { "line": 128, "column": 31 } - }, - "49": { - "start": { "line": 129, "column": 4 }, - "end": { "line": 131, "column": null } - }, - "50": { - "start": { "line": 130, "column": 6 }, - "end": { "line": 130, "column": null } - }, - "51": { - "start": { "line": 133, "column": 36 }, - "end": { "line": 140, "column": 3 } - }, - "52": { - "start": { "line": 134, "column": 16 }, - "end": { "line": 134, "column": 31 } - }, - "53": { - "start": { "line": 135, "column": 4 }, - "end": { "line": 139, "column": null } - }, - "54": { - "start": { "line": 136, "column": 6 }, - "end": { "line": 138, "column": null } - }, - "55": { - "start": { "line": 141, "column": 36 }, - "end": { "line": 166, "column": 3 } - }, - "56": { - "start": { "line": 145, "column": 16 }, - "end": { "line": 145, "column": 31 } - }, - "57": { - "start": { "line": 146, "column": 4 }, - "end": { "line": 152, "column": null } - }, - "58": { - "start": { "line": 151, "column": 6 }, - "end": { "line": 151, "column": null } - }, - "59": { - "start": { "line": 153, "column": 19 }, - "end": { "line": 155, "column": 53 } - }, - "60": { - "start": { "line": 154, "column": 28 }, - "end": { "line": 154, "column": 71 } - }, - "61": { - "start": { "line": 155, "column": 28 }, - "end": { "line": 155, "column": 52 } - }, - "62": { - "start": { "line": 156, "column": 4 }, - "end": { "line": 165, "column": null } - }, - "63": { - "start": { "line": 157, "column": 6 }, - "end": { "line": 164, "column": null } - }, - "64": { - "start": { "line": 161, "column": 14 }, - "end": { "line": 161, "column": 141 } - }, - "65": { - "start": { "line": 167, "column": 33 }, - "end": { "line": 173, "column": 3 } - }, - "66": { - "start": { "line": 168, "column": 4 }, - "end": { "line": 168, "column": null } - }, - "67": { - "start": { "line": 169, "column": 4 }, - "end": { "line": 169, "column": null } - }, - "68": { - "start": { "line": 170, "column": 4 }, - "end": { "line": 170, "column": null } - }, - "69": { - "start": { "line": 171, "column": 4 }, - "end": { "line": 171, "column": null } - }, - "70": { - "start": { "line": 172, "column": 4 }, - "end": { "line": 172, "column": null } - }, - "71": { - "start": { "line": 174, "column": 30 }, - "end": { "line": 190, "column": 12 } - }, - "72": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 190, "column": 12 } - }, - "73": { - "start": { "line": 178, "column": 22 }, - "end": { "line": 186, "column": 12 } - }, - "74": { - "start": { "line": 179, "column": 12 }, - "end": { "line": 184, "column": null } - }, - "75": { - "start": { "line": 180, "column": 14 }, - "end": { "line": 180, "column": null } - }, - "76": { - "start": { "line": 182, "column": 14 }, - "end": { "line": 182, "column": null } - }, - "77": { - "start": { "line": 182, "column": 38 }, - "end": { "line": 182, "column": null } - }, - "78": { - "start": { "line": 183, "column": 14 }, - "end": { "line": 183, "column": null } - }, - "79": { - "start": { "line": 185, "column": 12 }, - "end": { "line": 185, "column": null } - }, - "80": { - "start": { "line": 187, "column": 10 }, - "end": { "line": 189, "column": null } - }, - "81": { - "start": { "line": 188, "column": 12 }, - "end": { "line": 188, "column": null } - }, - "82": { - "start": { "line": 192, "column": 2 }, - "end": { "line": 205, "column": null } - }, - "83": { - "start": { "line": 32, "column": 0 }, - "end": { "line": 32, "column": 7 } - } - }, - "fnMap": { - "0": { - "name": "checkDependencies", - "decl": { - "start": { "line": 32, "column": 22 }, - "end": { "line": 32, "column": 39 } - }, - "loc": { - "start": { "line": 36, "column": 29 }, - "end": { "line": 206, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 45, "column": 39 }, - "end": { "line": 45, "column": 40 } - }, - "loc": { - "start": { "line": 46, "column": 7 }, - "end": { "line": 46, "column": 48 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 50, "column": 15 }, - "end": { "line": 50, "column": 16 } - }, - "loc": { - "start": { "line": 50, "column": 43 }, - "end": { "line": 57, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 51, "column": 52 }, - "end": { "line": 51, "column": 53 } - }, - "loc": { - "start": { "line": 51, "column": 59 }, - "end": { "line": 51, "column": 77 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 52, "column": 42 }, - "end": { "line": 52, "column": 43 } - }, - "loc": { - "start": { "line": 52, "column": 49 }, - "end": { "line": 52, "column": 74 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 59, "column": 29 }, - "end": { "line": 59, "column": 30 } - }, - "loc": { - "start": { "line": 60, "column": 4 }, - "end": { "line": 60, "column": 45 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 61, "column": 36 }, - "end": { "line": 61, "column": 37 } - }, - "loc": { - "start": { "line": 61, "column": 64 }, - "end": { "line": 69, "column": 3 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 70, "column": 27 }, - "end": { "line": 70, "column": 28 } - }, - "loc": { - "start": { "line": 70, "column": 55 }, - "end": { "line": 73, "column": 3 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 74, "column": 26 }, - "end": { "line": 74, "column": 27 } - }, - "loc": { - "start": { "line": 75, "column": 4 }, - "end": { "line": 75, "column": 42 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 76, "column": 31 }, - "end": { "line": 76, "column": null } - }, - "loc": { - "start": { "line": 79, "column": 6 }, - "end": { "line": 92, "column": 3 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 89, "column": 14 }, - "end": { "line": 89, "column": 15 } - }, - "loc": { - "start": { "line": 89, "column": 28 }, - "end": { "line": 89, "column": 71 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 90, "column": 14 }, - "end": { "line": 90, "column": 15 } - }, - "loc": { - "start": { "line": 90, "column": 28 }, - "end": { "line": 90, "column": 52 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 93, "column": 23 }, - "end": { "line": 93, "column": 24 } - }, - "loc": { - "start": { "line": 94, "column": 4 }, - "end": { "line": 98, "column": 35 } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 99, "column": 20 }, - "end": { "line": 99, "column": 21 } - }, - "loc": { - "start": { "line": 100, "column": 4 }, - "end": { "line": 102, "column": 69 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 102, "column": 27 }, - "end": { "line": 102, "column": 28 } - }, - "loc": { - "start": { "line": 102, "column": 34 }, - "end": { "line": 102, "column": 68 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 104, "column": 39 }, - "end": { "line": 104, "column": 40 } - }, - "loc": { - "start": { "line": 104, "column": 67 }, - "end": { "line": 109, "column": 3 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 110, "column": 46 }, - "end": { "line": 110, "column": 47 } - }, - "loc": { - "start": { "line": 110, "column": 74 }, - "end": { "line": 126, "column": 3 } - } - }, - "17": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 116, "column": 67 }, - "end": { "line": 116, "column": 68 } - }, - "loc": { - "start": { "line": 117, "column": 8 }, - "end": { "line": 118, "column": null } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 127, "column": 37 }, - "end": { "line": 127, "column": 38 } - }, - "loc": { - "start": { "line": 127, "column": 65 }, - "end": { "line": 132, "column": 3 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 133, "column": 36 }, - "end": { "line": 133, "column": 37 } - }, - "loc": { - "start": { "line": 133, "column": 64 }, - "end": { "line": 140, "column": 3 } - } - }, - "20": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 141, "column": 36 }, - "end": { "line": 141, "column": null } - }, - "loc": { - "start": { "line": 144, "column": 6 }, - "end": { "line": 166, "column": 3 } - } - }, - "21": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 154, "column": 14 }, - "end": { "line": 154, "column": 15 } - }, - "loc": { - "start": { "line": 154, "column": 28 }, - "end": { "line": 154, "column": 71 } - } - }, - "22": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 155, "column": 14 }, - "end": { "line": 155, "column": 15 } - }, - "loc": { - "start": { "line": 155, "column": 28 }, - "end": { "line": 155, "column": 52 } - } - }, - "23": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 160, "column": 12 }, - "end": { "line": 160, "column": 13 } - }, - "loc": { - "start": { "line": 161, "column": 14 }, - "end": { "line": 161, "column": 141 } - } - }, - "24": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 167, "column": 33 }, - "end": { "line": 167, "column": 34 } - }, - "loc": { - "start": { "line": 167, "column": 61 }, - "end": { "line": 173, "column": 3 } - } - }, - "25": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 174, "column": 30 }, - "end": { "line": 174, "column": 31 } - }, - "loc": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 190, "column": 12 } - } - }, - "26": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 177, "column": 9 }, - "end": { "line": 177, "column": 12 } - }, - "loc": { - "start": { "line": 177, "column": 14 }, - "end": { "line": 190, "column": 9 } - } - }, - "27": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 178, "column": 43 }, - "end": { "line": 178, "column": 44 } - }, - "loc": { - "start": { "line": 178, "column": 49 }, - "end": { "line": 186, "column": 11 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 44, "column": 2 }, - "end": { "line": 48, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 44, "column": 2 }, - "end": { "line": 48, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 53, "column": 4 }, - "end": { "line": 55, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 53, "column": 4 }, - "end": { "line": 55, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 53, "column": 8 }, - "end": { "line": 53, "column": 51 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 53, "column": 8 }, - "end": { "line": 53, "column": 30 } - }, - { - "start": { "line": 53, "column": 34 }, - "end": { "line": 53, "column": 51 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 64, "column": 6 }, - "end": { "line": 66, "column": null } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 64, "column": 6 }, - "end": { "line": 64, "column": 35 } - }, - { - "start": { "line": 65, "column": 6 }, - "end": { "line": 66, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 72, "column": 11 }, - "end": { "line": 72, "column": 69 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 72, "column": 11 }, - "end": { "line": 72, "column": 45 } - }, - { - "start": { "line": 72, "column": 49 }, - "end": { "line": 72, "column": 69 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 81, "column": 4 }, - "end": { "line": 87, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 81, "column": 4 }, - "end": { "line": 87, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 82, "column": 6 }, - "end": { "line": 84, "column": 62 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 82, "column": 6 }, - "end": { "line": 82, "column": 19 } - }, - { - "start": { "line": 83, "column": 7 }, - "end": { "line": 83, "column": 41 } - }, - { - "start": { "line": 84, "column": 8 }, - "end": { "line": 84, "column": 61 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 89, "column": 28 }, - "end": { "line": 89, "column": 71 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 89, "column": 44 }, - "end": { "line": 89, "column": 64 } - }, - { - "start": { "line": 89, "column": 67 }, - "end": { "line": 89, "column": 71 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 94, "column": 4 }, - "end": { "line": 98, "column": 35 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 94, "column": 4 }, - "end": { "line": 94, "column": 33 } - }, - { - "start": { "line": 95, "column": 4 }, - "end": { "line": 95, "column": 40 } - }, - { - "start": { "line": 96, "column": 4 }, - "end": { "line": 96, "column": 31 } - }, - { - "start": { "line": 97, "column": 4 }, - "end": { "line": 97, "column": 30 } - }, - { - "start": { "line": 98, "column": 4 }, - "end": { "line": 98, "column": 35 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 100, "column": 4 }, - "end": { "line": 102, "column": 69 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 101, "column": 8 }, - "end": { "line": 101, "column": 31 } - }, - { - "start": { "line": 102, "column": 8 }, - "end": { "line": 102, "column": 69 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 106, "column": 4 }, - "end": { "line": 108, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 106, "column": 4 }, - "end": { "line": 108, "column": null } - } - ] - }, - "11": { - "loc": { - "start": { "line": 107, "column": 25 }, - "end": { "line": 107, "column": 54 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 107, "column": 25 }, - "end": { "line": 107, "column": 41 } - }, - { - "start": { "line": 107, "column": 45 }, - "end": { "line": 107, "column": 54 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 112, "column": 4 }, - "end": { "line": 114, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 112, "column": 4 }, - "end": { "line": 114, "column": null } - } - ] - }, - "13": { - "loc": { - "start": { "line": 113, "column": 25 }, - "end": { "line": 113, "column": 54 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 113, "column": 25 }, - "end": { "line": 113, "column": 41 } - }, - { - "start": { "line": 113, "column": 45 }, - "end": { "line": 113, "column": 54 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 115, "column": 4 }, - "end": { "line": 125, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 115, "column": 4 }, - "end": { "line": 125, "column": null } - } - ] - }, - "15": { - "loc": { - "start": { "line": 123, "column": 63 }, - "end": { "line": 123, "column": 92 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 123, "column": 63 }, - "end": { "line": 123, "column": 79 } - }, - { - "start": { "line": 123, "column": 83 }, - "end": { "line": 123, "column": 92 } - } - ] - }, - "16": { - "loc": { - "start": { "line": 129, "column": 4 }, - "end": { "line": 131, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 129, "column": 4 }, - "end": { "line": 131, "column": null } - } - ] - }, - "17": { - "loc": { - "start": { "line": 129, "column": 8 }, - "end": { "line": 129, "column": 67 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 129, "column": 8 }, - "end": { "line": 129, "column": 42 } - }, - { - "start": { "line": 129, "column": 46 }, - "end": { "line": 129, "column": 67 } - } - ] - }, - "18": { - "loc": { - "start": { "line": 130, "column": 25 }, - "end": { "line": 130, "column": 54 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 130, "column": 25 }, - "end": { "line": 130, "column": 41 } - }, - { - "start": { "line": 130, "column": 45 }, - "end": { "line": 130, "column": 54 } - } - ] - }, - "19": { - "loc": { - "start": { "line": 135, "column": 4 }, - "end": { "line": 139, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 135, "column": 4 }, - "end": { "line": 139, "column": null } - } - ] - }, - "20": { - "loc": { - "start": { "line": 137, "column": 11 }, - "end": { "line": 137, "column": 40 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 137, "column": 11 }, - "end": { "line": 137, "column": 27 } - }, - { - "start": { "line": 137, "column": 31 }, - "end": { "line": 137, "column": 40 } - } - ] - }, - "21": { - "loc": { - "start": { "line": 146, "column": 4 }, - "end": { "line": 152, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 146, "column": 4 }, - "end": { "line": 152, "column": null } - } - ] - }, - "22": { - "loc": { - "start": { "line": 147, "column": 6 }, - "end": { "line": 149, "column": 62 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 147, "column": 6 }, - "end": { "line": 147, "column": 19 } - }, - { - "start": { "line": 148, "column": 7 }, - "end": { "line": 148, "column": 41 } - }, - { - "start": { "line": 149, "column": 8 }, - "end": { "line": 149, "column": 61 } - } - ] - }, - "23": { - "loc": { - "start": { "line": 154, "column": 28 }, - "end": { "line": 154, "column": 71 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 154, "column": 44 }, - "end": { "line": 154, "column": 64 } - }, - { - "start": { "line": 154, "column": 67 }, - "end": { "line": 154, "column": 71 } - } - ] - }, - "24": { - "loc": { - "start": { "line": 156, "column": 4 }, - "end": { "line": 165, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 156, "column": 4 }, - "end": { "line": 165, "column": null } - } - ] - }, - "25": { - "loc": { - "start": { "line": 161, "column": 43 }, - "end": { "line": 161, "column": 72 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 161, "column": 43 }, - "end": { "line": 161, "column": 59 } - }, - { - "start": { "line": 161, "column": 63 }, - "end": { "line": 161, "column": 72 } - } - ] - }, - "26": { - "loc": { - "start": { "line": 161, "column": 106 }, - "end": { "line": 161, "column": 139 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 161, "column": 118 }, - "end": { "line": 161, "column": 134 } - }, - { - "start": { "line": 161, "column": 137 }, - "end": { "line": 161, "column": 139 } - } - ] - }, - "27": { - "loc": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 190, "column": 12 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 176, "column": 8 }, - "end": { "line": 176, "column": 41 } - }, - { - "start": { "line": 177, "column": 8 }, - "end": { "line": 190, "column": 12 } - } - ] - }, - "28": { - "loc": { - "start": { "line": 182, "column": 14 }, - "end": { "line": 182, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 182, "column": 14 }, - "end": { "line": 182, "column": null } - } - ] - }, - "29": { - "loc": { - "start": { "line": 187, "column": 10 }, - "end": { "line": 189, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 187, "column": 10 }, - "end": { "line": 189, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0, - "73": 0, - "74": 0, - "75": 0, - "76": 0, - "77": 0, - "78": 0, - "79": 0, - "80": 0, - "81": 0, - "82": 0, - "83": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0 - }, - "b": { - "0": [0], - "1": [0], - "2": [0, 0], - "3": [0, 0], - "4": [0, 0], - "5": [0], - "6": [0, 0, 0], - "7": [0, 0], - "8": [0, 0, 0, 0, 0], - "9": [0, 0], - "10": [0], - "11": [0, 0], - "12": [0], - "13": [0, 0], - "14": [0], - "15": [0, 0], - "16": [0], - "17": [0, 0], - "18": [0, 0], - "19": [0], - "20": [0, 0], - "21": [0], - "22": [0, 0, 0], - "23": [0, 0], - "24": [0], - "25": [0, 0], - "26": [0, 0], - "27": [0, 0], - "28": [0], - "29": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/setupDependencyConfig.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/dependencies/setupDependencyConfig.ts", - "statementMap": { - "0": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "1": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "setupDependencyConfig", - "decl": { - "start": { "line": 6, "column": 16 }, - "end": { "line": 6, "column": 37 } - }, - "loc": { - "start": { "line": 19, "column": 3 }, - "end": { "line": 22, "column": 1 } - } - } - }, - "branchMap": {}, - "s": { "0": 1, "1": 5 }, - "f": { "0": 1 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/exver/exver.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/exver/exver.ts", - "statementMap": { - "0": { - "start": { "line": 9, "column": 0 }, - "end": { "line": 2352, "column": 4 } - }, - "1": { - "start": { "line": 16, "column": 17 }, - "end": { "line": 16, "column": 42 } - }, - "2": { - "start": { "line": 18, "column": 2 }, - "end": { "line": 18, "column": 33 } - }, - "3": { - "start": { "line": 20, "column": 2 }, - "end": { "line": 20, "column": 28 } - }, - "4": { - "start": { "line": 26, "column": 13 }, - "end": { "line": 26, "column": 38 } - }, - "5": { - "start": { "line": 34, "column": 2 }, - "end": { "line": 34, "column": 27 } - }, - "6": { - "start": { "line": 36, "column": 2 }, - "end": { "line": 36, "column": 21 } - }, - "7": { - "start": { "line": 38, "column": 2 }, - "end": { "line": 38, "column": 27 } - }, - "8": { - "start": { "line": 40, "column": 2 }, - "end": { "line": 40, "column": 28 } - }, - "9": { - "start": { "line": 42, "column": 2 }, - "end": { "line": 42, "column": 14 } - }, - "10": { - "start": { "line": 46, "column": 0 }, - "end": { "line": 46, "column": 37 } - }, - "11": { - "start": { "line": 51, "column": 2 }, - "end": { "line": 51, "column": 31 } - }, - "12": { - "start": { "line": 53, "column": 2 }, - "end": { "line": 53, "column": null } - }, - "13": { - "start": { "line": 53, "column": 35 }, - "end": { "line": 53, "column": 46 } - }, - "14": { - "start": { "line": 55, "column": 2 }, - "end": { "line": 55, "column": 29 } - }, - "15": { - "start": { "line": 57, "column": 2 }, - "end": { "line": 57, "column": 46 } - }, - "16": { - "start": { "line": 59, "column": 2 }, - "end": { "line": 59, "column": 48 } - }, - "17": { - "start": { "line": 63, "column": 0 }, - "end": { "line": 122, "column": 2 } - }, - "18": { - "start": { "line": 65, "column": 12 }, - "end": { "line": 65, "column": 36 } - }, - "19": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 119, "column": null } - }, - "20": { - "start": { "line": 69, "column": 14 }, - "end": { "line": 69, "column": 18 } - }, - "21": { - "start": { "line": 73, "column": 4 }, - "end": { "line": 81, "column": null } - }, - "22": { - "start": { "line": 75, "column": 6 }, - "end": { "line": 80, "column": null } - }, - "23": { - "start": { "line": 77, "column": 8 }, - "end": { "line": 77, "column": 51 } - }, - "24": { - "start": { "line": 79, "column": 8 }, - "end": { "line": 79, "column": 14 } - }, - "25": { - "start": { "line": 83, "column": 12 }, - "end": { "line": 83, "column": 31 } - }, - "26": { - "start": { "line": 85, "column": 19 }, - "end": { "line": 89, "column": 9 } - }, - "27": { - "start": { "line": 91, "column": 14 }, - "end": { "line": 91, "column": 80 } - }, - "28": { - "start": { "line": 93, "column": 4 }, - "end": { "line": 118, "column": null } - }, - "29": { - "start": { "line": 95, "column": 14 }, - "end": { "line": 95, "column": 31 } - }, - "30": { - "start": { "line": 97, "column": 19 }, - "end": { "line": 97, "column": 71 } - }, - "31": { - "start": { "line": 99, "column": 17 }, - "end": { "line": 99, "column": 32 } - }, - "32": { - "start": { "line": 101, "column": 17 }, - "end": { "line": 101, "column": 63 } - }, - "33": { - "start": { "line": 103, "column": 19 }, - "end": { "line": 103, "column": 41 } - }, - "34": { - "start": { "line": 105, "column": 6 }, - "end": { "line": 113, "column": 40 } - }, - "35": { - "start": { "line": 117, "column": 6 }, - "end": { "line": 117, "column": 28 } - }, - "36": { - "start": { "line": 121, "column": 2 }, - "end": { "line": 121, "column": 13 } - }, - "37": { - "start": { "line": 125, "column": 0 }, - "end": { "line": 286, "column": 2 } - }, - "38": { - "start": { "line": 127, "column": 33 }, - "end": { "line": 167, "column": 4 } - }, - "39": { - "start": { "line": 131, "column": 6 }, - "end": { "line": 131, "column": 59 } - }, - "40": { - "start": { "line": 137, "column": 25 }, - "end": { "line": 144, "column": 8 } - }, - "41": { - "start": { "line": 139, "column": 8 }, - "end": { "line": 143, "column": 30 } - }, - "42": { - "start": { "line": 147, "column": 6 }, - "end": { "line": 147, "column": 83 } - }, - "43": { - "start": { "line": 153, "column": 6 }, - "end": { "line": 153, "column": 29 } - }, - "44": { - "start": { "line": 159, "column": 6 }, - "end": { "line": 159, "column": 28 } - }, - "45": { - "start": { "line": 165, "column": 6 }, - "end": { "line": 165, "column": 37 } - }, - "46": { - "start": { "line": 172, "column": 4 }, - "end": { "line": 172, "column": 55 } - }, - "47": { - "start": { "line": 178, "column": 4 }, - "end": { "line": 194, "column": 83 } - }, - "48": { - "start": { "line": 192, "column": 55 }, - "end": { "line": 192, "column": 79 } - }, - "49": { - "start": { "line": 194, "column": 55 }, - "end": { "line": 194, "column": 79 } - }, - "50": { - "start": { "line": 200, "column": 4 }, - "end": { "line": 220, "column": 83 } - }, - "51": { - "start": { "line": 218, "column": 55 }, - "end": { "line": 218, "column": 79 } - }, - "52": { - "start": { "line": 220, "column": 55 }, - "end": { "line": 220, "column": 79 } - }, - "53": { - "start": { "line": 226, "column": 4 }, - "end": { "line": 226, "column": 67 } - }, - "54": { - "start": { "line": 232, "column": 23 }, - "end": { "line": 232, "column": 56 } - }, - "55": { - "start": { "line": 237, "column": 4 }, - "end": { "line": 237, "column": 24 } - }, - "56": { - "start": { "line": 240, "column": 4 }, - "end": { "line": 253, "column": null } - }, - "57": { - "start": { "line": 242, "column": 6 }, - "end": { "line": 250, "column": null } - }, - "58": { - "start": { "line": 244, "column": 8 }, - "end": { "line": 249, "column": null } - }, - "59": { - "start": { "line": 246, "column": 10 }, - "end": { "line": 246, "column": 44 } - }, - "60": { - "start": { "line": 248, "column": 10 }, - "end": { "line": 248, "column": 14 } - }, - "61": { - "start": { "line": 252, "column": 6 }, - "end": { "line": 252, "column": 30 } - }, - "62": { - "start": { "line": 256, "column": 4 }, - "end": { "line": 275, "column": null } - }, - "63": { - "start": { "line": 260, "column": 8 }, - "end": { "line": 260, "column": 31 } - }, - "64": { - "start": { "line": 265, "column": 8 }, - "end": { "line": 265, "column": 58 } - }, - "65": { - "start": { "line": 270, "column": 8 }, - "end": { "line": 274, "column": 50 } - }, - "66": { - "start": { "line": 281, "column": 4 }, - "end": { "line": 281, "column": 71 } - }, - "67": { - "start": { "line": 285, "column": 2 }, - "end": { "line": 285, "column": 95 } - }, - "68": { - "start": { "line": 291, "column": 2 }, - "end": { "line": 291, "column": 49 } - }, - "69": { - "start": { "line": 294, "column": 19 }, - "end": { "line": 294, "column": 21 } - }, - "70": { - "start": { "line": 296, "column": 19 }, - "end": { "line": 296, "column": 40 } - }, - "71": { - "start": { "line": 299, "column": 31 }, - "end": { "line": 299, "column": 649 } - }, - "72": { - "start": { "line": 301, "column": 30 }, - "end": { "line": 301, "column": 51 } - }, - "73": { - "start": { "line": 304, "column": 15 }, - "end": { "line": 304, "column": 19 } - }, - "74": { - "start": { "line": 305, "column": 15 }, - "end": { "line": 305, "column": 19 } - }, - "75": { - "start": { "line": 306, "column": 15 }, - "end": { "line": 306, "column": 18 } - }, - "76": { - "start": { "line": 307, "column": 15 }, - "end": { "line": 307, "column": 18 } - }, - "77": { - "start": { "line": 308, "column": 15 }, - "end": { "line": 308, "column": 18 } - }, - "78": { - "start": { "line": 309, "column": 15 }, - "end": { "line": 309, "column": 18 } - }, - "79": { - "start": { "line": 310, "column": 15 }, - "end": { "line": 310, "column": 18 } - }, - "80": { - "start": { "line": 311, "column": 15 }, - "end": { "line": 311, "column": 19 } - }, - "81": { - "start": { "line": 312, "column": 15 }, - "end": { "line": 312, "column": 19 } - }, - "82": { - "start": { "line": 313, "column": 15 }, - "end": { "line": 313, "column": 18 } - }, - "83": { - "start": { "line": 314, "column": 16 }, - "end": { "line": 314, "column": 19 } - }, - "84": { - "start": { "line": 315, "column": 16 }, - "end": { "line": 315, "column": 19 } - }, - "85": { - "start": { "line": 316, "column": 16 }, - "end": { "line": 316, "column": 20 } - }, - "86": { - "start": { "line": 317, "column": 16 }, - "end": { "line": 317, "column": 19 } - }, - "87": { - "start": { "line": 318, "column": 16 }, - "end": { "line": 318, "column": 19 } - }, - "88": { - "start": { "line": 319, "column": 16 }, - "end": { "line": 319, "column": 19 } - }, - "89": { - "start": { "line": 320, "column": 16 }, - "end": { "line": 320, "column": 19 } - }, - "90": { - "start": { "line": 321, "column": 16 }, - "end": { "line": 321, "column": 19 } - }, - "91": { - "start": { "line": 323, "column": 15 }, - "end": { "line": 323, "column": 23 } - }, - "92": { - "start": { "line": 324, "column": 15 }, - "end": { "line": 324, "column": 26 } - }, - "93": { - "start": { "line": 325, "column": 15 }, - "end": { "line": 325, "column": 23 } - }, - "94": { - "start": { "line": 326, "column": 15 }, - "end": { "line": 326, "column": 27 } - }, - "95": { - "start": { "line": 328, "column": 15 }, - "end": { "line": 328, "column": 50 } - }, - "96": { - "start": { "line": 329, "column": 15 }, - "end": { "line": 329, "column": 50 } - }, - "97": { - "start": { "line": 330, "column": 15 }, - "end": { "line": 330, "column": 49 } - }, - "98": { - "start": { "line": 331, "column": 15 }, - "end": { "line": 331, "column": 49 } - }, - "99": { - "start": { "line": 332, "column": 15 }, - "end": { "line": 332, "column": 49 } - }, - "100": { - "start": { "line": 333, "column": 15 }, - "end": { "line": 333, "column": 49 } - }, - "101": { - "start": { "line": 334, "column": 15 }, - "end": { "line": 334, "column": 49 } - }, - "102": { - "start": { "line": 335, "column": 15 }, - "end": { "line": 335, "column": 50 } - }, - "103": { - "start": { "line": 336, "column": 15 }, - "end": { "line": 336, "column": 50 } - }, - "104": { - "start": { "line": 337, "column": 15 }, - "end": { "line": 337, "column": 49 } - }, - "105": { - "start": { "line": 338, "column": 16 }, - "end": { "line": 338, "column": 50 } - }, - "106": { - "start": { "line": 339, "column": 16 }, - "end": { "line": 339, "column": 50 } - }, - "107": { - "start": { "line": 340, "column": 16 }, - "end": { "line": 340, "column": 51 } - }, - "108": { - "start": { "line": 341, "column": 16 }, - "end": { "line": 341, "column": 50 } - }, - "109": { - "start": { "line": 342, "column": 16 }, - "end": { "line": 342, "column": 50 } - }, - "110": { - "start": { "line": 343, "column": 16 }, - "end": { "line": 343, "column": 50 } - }, - "111": { - "start": { "line": 344, "column": 16 }, - "end": { "line": 344, "column": 50 } - }, - "112": { - "start": { "line": 345, "column": 16 }, - "end": { "line": 345, "column": 64 } - }, - "113": { - "start": { "line": 346, "column": 16 }, - "end": { "line": 346, "column": 76 } - }, - "114": { - "start": { "line": 347, "column": 16 }, - "end": { "line": 347, "column": 50 } - }, - "115": { - "start": { "line": 348, "column": 16 }, - "end": { "line": 348, "column": 64 } - }, - "116": { - "start": { "line": 349, "column": 16 }, - "end": { "line": 349, "column": 50 } - }, - "117": { - "start": { "line": 350, "column": 16 }, - "end": { "line": 350, "column": 75 } - }, - "118": { - "start": { "line": 353, "column": 15 }, - "end": { "line": 354, "column": 34 } - }, - "119": { - "start": { "line": 354, "column": 1 }, - "end": { "line": 354, "column": 33 } - }, - "120": { - "start": { "line": 356, "column": 15 }, - "end": { "line": 357, "column": 47 } - }, - "121": { - "start": { "line": 357, "column": 1 }, - "end": { "line": 357, "column": 46 } - }, - "122": { - "start": { "line": 359, "column": 15 }, - "end": { "line": 360, "column": 120 } - }, - "123": { - "start": { "line": 360, "column": 1 }, - "end": { "line": 360, "column": 119 } - }, - "124": { - "start": { "line": 362, "column": 15 }, - "end": { "line": 363, "column": 38 } - }, - "125": { - "start": { "line": 363, "column": 1 }, - "end": { "line": 363, "column": 38 } - }, - "126": { - "start": { "line": 365, "column": 15 }, - "end": { "line": 366, "column": 25 } - }, - "127": { - "start": { "line": 366, "column": 1 }, - "end": { "line": 366, "column": 24 } - }, - "128": { - "start": { "line": 368, "column": 15 }, - "end": { "line": 369, "column": 26 } - }, - "129": { - "start": { "line": 369, "column": 1 }, - "end": { "line": 369, "column": 25 } - }, - "130": { - "start": { "line": 371, "column": 15 }, - "end": { "line": 372, "column": 15 } - }, - "131": { - "start": { "line": 372, "column": 1 }, - "end": { "line": 372, "column": 13 } - }, - "132": { - "start": { "line": 374, "column": 15 }, - "end": { "line": 375, "column": 15 } - }, - "133": { - "start": { "line": 375, "column": 1 }, - "end": { "line": 375, "column": 13 } - }, - "134": { - "start": { "line": 377, "column": 15 }, - "end": { "line": 378, "column": 14 } - }, - "135": { - "start": { "line": 378, "column": 1 }, - "end": { "line": 378, "column": 12 } - }, - "136": { - "start": { "line": 380, "column": 15 }, - "end": { "line": 381, "column": 14 } - }, - "137": { - "start": { "line": 381, "column": 1 }, - "end": { "line": 381, "column": 12 } - }, - "138": { - "start": { "line": 383, "column": 16 }, - "end": { "line": 384, "column": 14 } - }, - "139": { - "start": { "line": 384, "column": 1 }, - "end": { "line": 384, "column": 12 } - }, - "140": { - "start": { "line": 386, "column": 16 }, - "end": { "line": 387, "column": 15 } - }, - "141": { - "start": { "line": 387, "column": 1 }, - "end": { "line": 387, "column": 13 } - }, - "142": { - "start": { "line": 389, "column": 16 }, - "end": { "line": 390, "column": 14 } - }, - "143": { - "start": { "line": 390, "column": 1 }, - "end": { "line": 390, "column": 12 } - }, - "144": { - "start": { "line": 392, "column": 16 }, - "end": { "line": 393, "column": 14 } - }, - "145": { - "start": { "line": 393, "column": 1 }, - "end": { "line": 393, "column": 12 } - }, - "146": { - "start": { "line": 395, "column": 16 }, - "end": { "line": 398, "column": 3 } - }, - "147": { - "start": { "line": 397, "column": 4 }, - "end": { "line": 397, "column": null } - }, - "148": { - "start": { "line": 400, "column": 16 }, - "end": { "line": 420, "column": 3 } - }, - "149": { - "start": { "line": 402, "column": 4 }, - "end": { "line": 419, "column": null } - }, - "150": { - "start": { "line": 422, "column": 16 }, - "end": { "line": 423, "column": 16 } - }, - "151": { - "start": { "line": 423, "column": 1 }, - "end": { "line": 423, "column": 15 } - }, - "152": { - "start": { "line": 425, "column": 16 }, - "end": { "line": 426, "column": 16 } - }, - "153": { - "start": { "line": 426, "column": 1 }, - "end": { "line": 426, "column": 15 } - }, - "154": { - "start": { "line": 428, "column": 16 }, - "end": { "line": 429, "column": 17 } - }, - "155": { - "start": { "line": 429, "column": 1 }, - "end": { "line": 429, "column": 15 } - }, - "156": { - "start": { "line": 431, "column": 16 }, - "end": { "line": 439, "column": 3 } - }, - "157": { - "start": { "line": 433, "column": 4 }, - "end": { "line": 438, "column": 6 } - }, - "158": { - "start": { "line": 441, "column": 16 }, - "end": { "line": 444, "column": 3 } - }, - "159": { - "start": { "line": 443, "column": 4 }, - "end": { "line": 443, "column": 47 } - }, - "160": { - "start": { "line": 443, "column": 40 }, - "end": { "line": 443, "column": 44 } - }, - "161": { - "start": { "line": 446, "column": 16 }, - "end": { "line": 449, "column": 3 } - }, - "162": { - "start": { "line": 448, "column": 4 }, - "end": { "line": 448, "column": 19 } - }, - "163": { - "start": { "line": 451, "column": 16 }, - "end": { "line": 454, "column": 3 } - }, - "164": { - "start": { "line": 453, "column": 4 }, - "end": { "line": 453, "column": 47 } - }, - "165": { - "start": { "line": 453, "column": 40 }, - "end": { "line": 453, "column": 44 } - }, - "166": { - "start": { "line": 456, "column": 16 }, - "end": { "line": 457, "column": 31 } - }, - "167": { - "start": { "line": 457, "column": 1 }, - "end": { "line": 457, "column": 29 } - }, - "168": { - "start": { "line": 459, "column": 20 }, - "end": { "line": 459, "column": 21 } - }, - "169": { - "start": { "line": 461, "column": 21 }, - "end": { "line": 461, "column": 22 } - }, - "170": { - "start": { "line": 463, "column": 28 }, - "end": { "line": 463, "column": 52 } - }, - "171": { - "start": { "line": 465, "column": 23 }, - "end": { "line": 465, "column": 24 } - }, - "172": { - "start": { "line": 467, "column": 28 }, - "end": { "line": 467, "column": 30 } - }, - "173": { - "start": { "line": 469, "column": 24 }, - "end": { "line": 469, "column": 25 } - }, - "174": { - "start": { "line": 475, "column": 2 }, - "end": { "line": 484, "column": null } - }, - "175": { - "start": { "line": 477, "column": 4 }, - "end": { "line": 480, "column": null } - }, - "176": { - "start": { "line": 479, "column": 6 }, - "end": { "line": 479, "column": 86 } - }, - "177": { - "start": { "line": 483, "column": 4 }, - "end": { "line": 483, "column": 70 } - }, - "178": { - "start": { "line": 489, "column": 4 }, - "end": { "line": 489, "column": 54 } - }, - "179": { - "start": { "line": 495, "column": 4 }, - "end": { "line": 495, "column": 24 } - }, - "180": { - "start": { "line": 501, "column": 4 }, - "end": { "line": 508, "column": 6 } - }, - "181": { - "start": { "line": 514, "column": 4 }, - "end": { "line": 514, "column": 58 } - }, - "182": { - "start": { "line": 520, "column": 4 }, - "end": { "line": 524, "column": 55 } - }, - "183": { - "start": { "line": 527, "column": 4 }, - "end": { "line": 534, "column": 6 } - }, - "184": { - "start": { "line": 540, "column": 4 }, - "end": { "line": 544, "column": 55 } - }, - "185": { - "start": { "line": 547, "column": 4 }, - "end": { "line": 547, "column": 50 } - }, - "186": { - "start": { "line": 553, "column": 4 }, - "end": { "line": 553, "column": 67 } - }, - "187": { - "start": { "line": 559, "column": 4 }, - "end": { "line": 559, "column": 87 } - }, - "188": { - "start": { "line": 565, "column": 4 }, - "end": { "line": 565, "column": 27 } - }, - "189": { - "start": { "line": 571, "column": 4 }, - "end": { "line": 571, "column": 27 } - }, - "190": { - "start": { "line": 577, "column": 4 }, - "end": { "line": 577, "column": 55 } - }, - "191": { - "start": { "line": 583, "column": 18 }, - "end": { "line": 583, "column": 42 } - }, - "192": { - "start": { "line": 588, "column": 4 }, - "end": { "line": 634, "column": null } - }, - "193": { - "start": { "line": 590, "column": 6 }, - "end": { "line": 590, "column": 21 } - }, - "194": { - "start": { "line": 594, "column": 6 }, - "end": { "line": 594, "column": 18 } - }, - "195": { - "start": { "line": 596, "column": 6 }, - "end": { "line": 599, "column": null } - }, - "196": { - "start": { "line": 598, "column": 8 }, - "end": { "line": 598, "column": 12 } - }, - "197": { - "start": { "line": 602, "column": 6 }, - "end": { "line": 602, "column": 39 } - }, - "198": { - "start": { "line": 604, "column": 6 }, - "end": { "line": 609, "column": 8 } - }, - "199": { - "start": { "line": 612, "column": 6 }, - "end": { "line": 627, "column": null } - }, - "200": { - "start": { "line": 614, "column": 8 }, - "end": { "line": 623, "column": null } - }, - "201": { - "start": { "line": 616, "column": 10 }, - "end": { "line": 616, "column": 25 } - }, - "202": { - "start": { "line": 618, "column": 10 }, - "end": { "line": 618, "column": 29 } - }, - "203": { - "start": { "line": 622, "column": 10 }, - "end": { "line": 622, "column": 27 } - }, - "204": { - "start": { "line": 626, "column": 8 }, - "end": { "line": 626, "column": 12 } - }, - "205": { - "start": { "line": 630, "column": 6 }, - "end": { "line": 630, "column": 41 } - }, - "206": { - "start": { "line": 633, "column": 6 }, - "end": { "line": 633, "column": 21 } - }, - "207": { - "start": { "line": 640, "column": 26 }, - "end": { "line": 640, "column": 57 } - }, - "208": { - "start": { "line": 642, "column": 24 }, - "end": { "line": 642, "column": 53 } - }, - "209": { - "start": { "line": 645, "column": 14 }, - "end": { "line": 666, "column": 6 } - }, - "210": { - "start": { "line": 668, "column": 4 }, - "end": { "line": 673, "column": null } - }, - "211": { - "start": { "line": 670, "column": 6 }, - "end": { "line": 670, "column": 47 } - }, - "212": { - "start": { "line": 672, "column": 6 }, - "end": { "line": 672, "column": 43 } - }, - "213": { - "start": { "line": 675, "column": 4 }, - "end": { "line": 675, "column": 15 } - }, - "214": { - "start": { "line": 681, "column": 4 }, - "end": { "line": 681, "column": null } - }, - "215": { - "start": { "line": 681, "column": 40 }, - "end": { "line": 681, "column": 47 } - }, - "216": { - "start": { "line": 684, "column": 4 }, - "end": { "line": 689, "column": null } - }, - "217": { - "start": { "line": 686, "column": 6 }, - "end": { "line": 686, "column": 35 } - }, - "218": { - "start": { "line": 688, "column": 6 }, - "end": { "line": 688, "column": 31 } - }, - "219": { - "start": { "line": 692, "column": 4 }, - "end": { "line": 692, "column": 39 } - }, - "220": { - "start": { "line": 698, "column": 4 }, - "end": { "line": 698, "column": 62 } - }, - "221": { - "start": { "line": 704, "column": 4 }, - "end": { "line": 713, "column": 6 } - }, - "222": { - "start": { "line": 723, "column": 4 }, - "end": { "line": 723, "column": 21 } - }, - "223": { - "start": { "line": 725, "column": 4 }, - "end": { "line": 725, "column": 37 } - }, - "224": { - "start": { "line": 727, "column": 4 }, - "end": { "line": 841, "column": null } - }, - "225": { - "start": { "line": 729, "column": 6 }, - "end": { "line": 729, "column": 14 } - }, - "226": { - "start": { "line": 731, "column": 6 }, - "end": { "line": 731, "column": 23 } - }, - "227": { - "start": { "line": 733, "column": 6 }, - "end": { "line": 733, "column": 24 } - }, - "228": { - "start": { "line": 735, "column": 6 }, - "end": { "line": 735, "column": 23 } - }, - "229": { - "start": { "line": 737, "column": 6 }, - "end": { "line": 737, "column": 25 } - }, - "230": { - "start": { "line": 739, "column": 6 }, - "end": { "line": 742, "column": null } - }, - "231": { - "start": { "line": 741, "column": 8 }, - "end": { "line": 741, "column": 28 } - }, - "232": { - "start": { "line": 744, "column": 6 }, - "end": { "line": 757, "column": null } - }, - "233": { - "start": { "line": 746, "column": 8 }, - "end": { "line": 746, "column": 26 } - }, - "234": { - "start": { "line": 748, "column": 8 }, - "end": { "line": 748, "column": 22 } - }, - "235": { - "start": { "line": 750, "column": 8 }, - "end": { "line": 750, "column": 16 } - }, - "236": { - "start": { "line": 754, "column": 8 }, - "end": { "line": 754, "column": 25 } - }, - "237": { - "start": { "line": 756, "column": 8 }, - "end": { "line": 756, "column": 24 } - }, - "238": { - "start": { "line": 759, "column": 6 }, - "end": { "line": 762, "column": null } - }, - "239": { - "start": { "line": 761, "column": 8 }, - "end": { "line": 761, "column": 18 } - }, - "240": { - "start": { "line": 764, "column": 6 }, - "end": { "line": 764, "column": 39 } - }, - "241": { - "start": { "line": 766, "column": 6 }, - "end": { "line": 777, "column": null } - }, - "242": { - "start": { "line": 768, "column": 8 }, - "end": { "line": 768, "column": 26 } - }, - "243": { - "start": { "line": 770, "column": 8 }, - "end": { "line": 770, "column": 16 } - }, - "244": { - "start": { "line": 774, "column": 8 }, - "end": { "line": 774, "column": 25 } - }, - "245": { - "start": { "line": 776, "column": 8 }, - "end": { "line": 776, "column": 24 } - }, - "246": { - "start": { "line": 779, "column": 6 }, - "end": { "line": 830, "column": null } - }, - "247": { - "start": { "line": 781, "column": 8 }, - "end": { "line": 781, "column": 20 } - }, - "248": { - "start": { "line": 783, "column": 8 }, - "end": { "line": 783, "column": 25 } - }, - "249": { - "start": { "line": 785, "column": 8 }, - "end": { "line": 785, "column": 26 } - }, - "250": { - "start": { "line": 787, "column": 8 }, - "end": { "line": 787, "column": 25 } - }, - "251": { - "start": { "line": 789, "column": 8 }, - "end": { "line": 789, "column": 27 } - }, - "252": { - "start": { "line": 791, "column": 8 }, - "end": { "line": 794, "column": null } - }, - "253": { - "start": { "line": 793, "column": 10 }, - "end": { "line": 793, "column": 30 } - }, - "254": { - "start": { "line": 796, "column": 8 }, - "end": { "line": 809, "column": null } - }, - "255": { - "start": { "line": 798, "column": 10 }, - "end": { "line": 798, "column": 28 } - }, - "256": { - "start": { "line": 800, "column": 10 }, - "end": { "line": 800, "column": 24 } - }, - "257": { - "start": { "line": 802, "column": 10 }, - "end": { "line": 802, "column": 18 } - }, - "258": { - "start": { "line": 806, "column": 10 }, - "end": { "line": 806, "column": 27 } - }, - "259": { - "start": { "line": 808, "column": 10 }, - "end": { "line": 808, "column": 26 } - }, - "260": { - "start": { "line": 811, "column": 8 }, - "end": { "line": 814, "column": null } - }, - "261": { - "start": { "line": 813, "column": 10 }, - "end": { "line": 813, "column": 20 } - }, - "262": { - "start": { "line": 816, "column": 8 }, - "end": { "line": 816, "column": 41 } - }, - "263": { - "start": { "line": 818, "column": 8 }, - "end": { "line": 829, "column": null } - }, - "264": { - "start": { "line": 820, "column": 10 }, - "end": { "line": 820, "column": 28 } - }, - "265": { - "start": { "line": 822, "column": 10 }, - "end": { "line": 822, "column": 18 } - }, - "266": { - "start": { "line": 826, "column": 10 }, - "end": { "line": 826, "column": 27 } - }, - "267": { - "start": { "line": 828, "column": 10 }, - "end": { "line": 828, "column": 26 } - }, - "268": { - "start": { "line": 832, "column": 6 }, - "end": { "line": 832, "column": 20 } - }, - "269": { - "start": { "line": 834, "column": 6 }, - "end": { "line": 834, "column": 14 } - }, - "270": { - "start": { "line": 838, "column": 6 }, - "end": { "line": 838, "column": 23 } - }, - "271": { - "start": { "line": 840, "column": 6 }, - "end": { "line": 840, "column": 22 } - }, - "272": { - "start": { "line": 844, "column": 4 }, - "end": { "line": 844, "column": 14 } - }, - "273": { - "start": { "line": 854, "column": 4 }, - "end": { "line": 865, "column": null } - }, - "274": { - "start": { "line": 856, "column": 6 }, - "end": { "line": 856, "column": 18 } - }, - "275": { - "start": { "line": 858, "column": 6 }, - "end": { "line": 858, "column": 23 } - }, - "276": { - "start": { "line": 862, "column": 6 }, - "end": { "line": 862, "column": 22 } - }, - "277": { - "start": { "line": 864, "column": 6 }, - "end": { "line": 864, "column": null } - }, - "278": { - "start": { "line": 864, "column": 35 }, - "end": { "line": 864, "column": 52 } - }, - "279": { - "start": { "line": 868, "column": 4 }, - "end": { "line": 868, "column": 14 } - }, - "280": { - "start": { "line": 878, "column": 4 }, - "end": { "line": 889, "column": null } - }, - "281": { - "start": { "line": 880, "column": 6 }, - "end": { "line": 880, "column": 18 } - }, - "282": { - "start": { "line": 882, "column": 6 }, - "end": { "line": 882, "column": 23 } - }, - "283": { - "start": { "line": 886, "column": 6 }, - "end": { "line": 886, "column": 22 } - }, - "284": { - "start": { "line": 888, "column": 6 }, - "end": { "line": 888, "column": null } - }, - "285": { - "start": { "line": 888, "column": 35 }, - "end": { "line": 888, "column": 52 } - }, - "286": { - "start": { "line": 892, "column": 4 }, - "end": { "line": 892, "column": 14 } - }, - "287": { - "start": { "line": 902, "column": 4 }, - "end": { "line": 902, "column": 27 } - }, - "288": { - "start": { "line": 904, "column": 4 }, - "end": { "line": 922, "column": null } - }, - "289": { - "start": { "line": 906, "column": 6 }, - "end": { "line": 906, "column": 29 } - }, - "290": { - "start": { "line": 908, "column": 6 }, - "end": { "line": 921, "column": null } - }, - "291": { - "start": { "line": 910, "column": 8 }, - "end": { "line": 910, "column": 28 } - }, - "292": { - "start": { "line": 912, "column": 8 }, - "end": { "line": 920, "column": null } - }, - "293": { - "start": { "line": 914, "column": 10 }, - "end": { "line": 914, "column": 30 } - }, - "294": { - "start": { "line": 916, "column": 10 }, - "end": { "line": 919, "column": null } - }, - "295": { - "start": { "line": 918, "column": 12 }, - "end": { "line": 918, "column": 33 } - }, - "296": { - "start": { "line": 925, "column": 4 }, - "end": { "line": 925, "column": 14 } - }, - "297": { - "start": { "line": 935, "column": 4 }, - "end": { "line": 935, "column": 21 } - }, - "298": { - "start": { "line": 937, "column": 4 }, - "end": { "line": 948, "column": null } - }, - "299": { - "start": { "line": 939, "column": 6 }, - "end": { "line": 939, "column": 18 } - }, - "300": { - "start": { "line": 941, "column": 6 }, - "end": { "line": 941, "column": 20 } - }, - "301": { - "start": { "line": 945, "column": 6 }, - "end": { "line": 945, "column": 22 } - }, - "302": { - "start": { "line": 947, "column": 6 }, - "end": { "line": 947, "column": null } - }, - "303": { - "start": { "line": 947, "column": 35 }, - "end": { "line": 947, "column": 52 } - }, - "304": { - "start": { "line": 950, "column": 4 }, - "end": { "line": 998, "column": null } - }, - "305": { - "start": { "line": 952, "column": 6 }, - "end": { "line": 952, "column": 24 } - }, - "306": { - "start": { "line": 954, "column": 6 }, - "end": { "line": 954, "column": 35 } - }, - "307": { - "start": { "line": 956, "column": 6 }, - "end": { "line": 991, "column": null } - }, - "308": { - "start": { "line": 958, "column": 8 }, - "end": { "line": 958, "column": 26 } - }, - "309": { - "start": { "line": 960, "column": 8 }, - "end": { "line": 971, "column": null } - }, - "310": { - "start": { "line": 962, "column": 10 }, - "end": { "line": 962, "column": 22 } - }, - "311": { - "start": { "line": 964, "column": 10 }, - "end": { "line": 964, "column": 24 } - }, - "312": { - "start": { "line": 968, "column": 10 }, - "end": { "line": 968, "column": 26 } - }, - "313": { - "start": { "line": 970, "column": 10 }, - "end": { "line": 970, "column": null } - }, - "314": { - "start": { "line": 970, "column": 39 }, - "end": { "line": 970, "column": 56 } - }, - "315": { - "start": { "line": 973, "column": 8 }, - "end": { "line": 984, "column": null } - }, - "316": { - "start": { "line": 975, "column": 10 }, - "end": { "line": 975, "column": 28 } - }, - "317": { - "start": { "line": 977, "column": 10 }, - "end": { "line": 977, "column": 26 } - }, - "318": { - "start": { "line": 981, "column": 10 }, - "end": { "line": 981, "column": 27 } - }, - "319": { - "start": { "line": 983, "column": 10 }, - "end": { "line": 983, "column": 26 } - }, - "320": { - "start": { "line": 988, "column": 8 }, - "end": { "line": 988, "column": 25 } - }, - "321": { - "start": { "line": 990, "column": 8 }, - "end": { "line": 990, "column": 24 } - }, - "322": { - "start": { "line": 995, "column": 6 }, - "end": { "line": 995, "column": 23 } - }, - "323": { - "start": { "line": 997, "column": 6 }, - "end": { "line": 997, "column": 22 } - }, - "324": { - "start": { "line": 1001, "column": 4 }, - "end": { "line": 1001, "column": 14 } - }, - "325": { - "start": { "line": 1011, "column": 4 }, - "end": { "line": 1011, "column": 21 } - }, - "326": { - "start": { "line": 1013, "column": 4 }, - "end": { "line": 1013, "column": 26 } - }, - "327": { - "start": { "line": 1015, "column": 4 }, - "end": { "line": 1018, "column": null } - }, - "328": { - "start": { "line": 1017, "column": 6 }, - "end": { "line": 1017, "column": 16 } - }, - "329": { - "start": { "line": 1020, "column": 4 }, - "end": { "line": 1020, "column": 22 } - }, - "330": { - "start": { "line": 1022, "column": 4 }, - "end": { "line": 1022, "column": 32 } - }, - "331": { - "start": { "line": 1024, "column": 4 }, - "end": { "line": 1035, "column": null } - }, - "332": { - "start": { "line": 1026, "column": 6 }, - "end": { "line": 1026, "column": 24 } - }, - "333": { - "start": { "line": 1028, "column": 6 }, - "end": { "line": 1028, "column": 26 } - }, - "334": { - "start": { "line": 1032, "column": 6 }, - "end": { "line": 1032, "column": 23 } - }, - "335": { - "start": { "line": 1034, "column": 6 }, - "end": { "line": 1034, "column": 22 } - }, - "336": { - "start": { "line": 1038, "column": 4 }, - "end": { "line": 1038, "column": 14 } - }, - "337": { - "start": { "line": 1048, "column": 4 }, - "end": { "line": 1048, "column": 21 } - }, - "338": { - "start": { "line": 1050, "column": 4 }, - "end": { "line": 1050, "column": 27 } - }, - "339": { - "start": { "line": 1052, "column": 4 }, - "end": { "line": 1055, "column": null } - }, - "340": { - "start": { "line": 1054, "column": 6 }, - "end": { "line": 1054, "column": 16 } - }, - "341": { - "start": { "line": 1057, "column": 4 }, - "end": { "line": 1057, "column": 28 } - }, - "342": { - "start": { "line": 1059, "column": 4 }, - "end": { "line": 1114, "column": null } - }, - "343": { - "start": { "line": 1061, "column": 6 }, - "end": { "line": 1061, "column": 23 } - }, - "344": { - "start": { "line": 1063, "column": 6 }, - "end": { "line": 1074, "column": null } - }, - "345": { - "start": { "line": 1065, "column": 8 }, - "end": { "line": 1065, "column": 20 } - }, - "346": { - "start": { "line": 1067, "column": 8 }, - "end": { "line": 1067, "column": 22 } - }, - "347": { - "start": { "line": 1071, "column": 8 }, - "end": { "line": 1071, "column": 24 } - }, - "348": { - "start": { "line": 1073, "column": 8 }, - "end": { "line": 1073, "column": null } - }, - "349": { - "start": { "line": 1073, "column": 37 }, - "end": { "line": 1073, "column": 54 } - }, - "350": { - "start": { "line": 1076, "column": 6 }, - "end": { "line": 1098, "column": null } - }, - "351": { - "start": { "line": 1078, "column": 8 }, - "end": { "line": 1078, "column": 32 } - }, - "352": { - "start": { "line": 1080, "column": 8 }, - "end": { "line": 1091, "column": null } - }, - "353": { - "start": { "line": 1082, "column": 10 }, - "end": { "line": 1082, "column": 24 } - }, - "354": { - "start": { "line": 1084, "column": 10 }, - "end": { "line": 1084, "column": 18 } - }, - "355": { - "start": { "line": 1088, "column": 10 }, - "end": { "line": 1088, "column": 27 } - }, - "356": { - "start": { "line": 1090, "column": 10 }, - "end": { "line": 1090, "column": 26 } - }, - "357": { - "start": { "line": 1095, "column": 8 }, - "end": { "line": 1095, "column": 25 } - }, - "358": { - "start": { "line": 1097, "column": 8 }, - "end": { "line": 1097, "column": 24 } - }, - "359": { - "start": { "line": 1100, "column": 6 }, - "end": { "line": 1103, "column": null } - }, - "360": { - "start": { "line": 1102, "column": 8 }, - "end": { "line": 1102, "column": 18 } - }, - "361": { - "start": { "line": 1105, "column": 6 }, - "end": { "line": 1105, "column": 24 } - }, - "362": { - "start": { "line": 1107, "column": 6 }, - "end": { "line": 1107, "column": 30 } - }, - "363": { - "start": { "line": 1111, "column": 6 }, - "end": { "line": 1111, "column": 23 } - }, - "364": { - "start": { "line": 1113, "column": 6 }, - "end": { "line": 1113, "column": 22 } - }, - "365": { - "start": { "line": 1117, "column": 4 }, - "end": { "line": 1117, "column": 14 } - }, - "366": { - "start": { "line": 1127, "column": 4 }, - "end": { "line": 1127, "column": 21 } - }, - "367": { - "start": { "line": 1129, "column": 4 }, - "end": { "line": 1140, "column": null } - }, - "368": { - "start": { "line": 1131, "column": 6 }, - "end": { "line": 1131, "column": 18 } - }, - "369": { - "start": { "line": 1133, "column": 6 }, - "end": { "line": 1133, "column": 20 } - }, - "370": { - "start": { "line": 1137, "column": 6 }, - "end": { "line": 1137, "column": 22 } - }, - "371": { - "start": { "line": 1139, "column": 6 }, - "end": { "line": 1139, "column": null } - }, - "372": { - "start": { "line": 1139, "column": 35 }, - "end": { "line": 1139, "column": 52 } - }, - "373": { - "start": { "line": 1142, "column": 4 }, - "end": { "line": 1166, "column": null } - }, - "374": { - "start": { "line": 1144, "column": 6 }, - "end": { "line": 1144, "column": 24 } - }, - "375": { - "start": { "line": 1146, "column": 6 }, - "end": { "line": 1146, "column": 39 } - }, - "376": { - "start": { "line": 1148, "column": 6 }, - "end": { "line": 1159, "column": null } - }, - "377": { - "start": { "line": 1150, "column": 8 }, - "end": { "line": 1150, "column": 26 } - }, - "378": { - "start": { "line": 1152, "column": 8 }, - "end": { "line": 1152, "column": 24 } - }, - "379": { - "start": { "line": 1156, "column": 8 }, - "end": { "line": 1156, "column": 25 } - }, - "380": { - "start": { "line": 1158, "column": 8 }, - "end": { "line": 1158, "column": 24 } - }, - "381": { - "start": { "line": 1163, "column": 6 }, - "end": { "line": 1163, "column": 23 } - }, - "382": { - "start": { "line": 1165, "column": 6 }, - "end": { "line": 1165, "column": 22 } - }, - "383": { - "start": { "line": 1169, "column": 4 }, - "end": { "line": 1169, "column": 14 } - }, - "384": { - "start": { "line": 1179, "column": 4 }, - "end": { "line": 1179, "column": 21 } - }, - "385": { - "start": { "line": 1181, "column": 4 }, - "end": { "line": 1192, "column": null } - }, - "386": { - "start": { "line": 1183, "column": 6 }, - "end": { "line": 1183, "column": 18 } - }, - "387": { - "start": { "line": 1185, "column": 6 }, - "end": { "line": 1185, "column": 20 } - }, - "388": { - "start": { "line": 1189, "column": 6 }, - "end": { "line": 1189, "column": 22 } - }, - "389": { - "start": { "line": 1191, "column": 6 }, - "end": { "line": 1191, "column": null } - }, - "390": { - "start": { "line": 1191, "column": 35 }, - "end": { "line": 1191, "column": 52 } - }, - "391": { - "start": { "line": 1194, "column": 4 }, - "end": { "line": 1199, "column": null } - }, - "392": { - "start": { "line": 1196, "column": 6 }, - "end": { "line": 1196, "column": 24 } - }, - "393": { - "start": { "line": 1198, "column": 6 }, - "end": { "line": 1198, "column": 20 } - }, - "394": { - "start": { "line": 1201, "column": 4 }, - "end": { "line": 1201, "column": 12 } - }, - "395": { - "start": { "line": 1204, "column": 4 }, - "end": { "line": 1204, "column": 14 } - }, - "396": { - "start": { "line": 1214, "column": 4 }, - "end": { "line": 1214, "column": 21 } - }, - "397": { - "start": { "line": 1216, "column": 4 }, - "end": { "line": 1227, "column": null } - }, - "398": { - "start": { "line": 1218, "column": 6 }, - "end": { "line": 1218, "column": 18 } - }, - "399": { - "start": { "line": 1220, "column": 6 }, - "end": { "line": 1220, "column": 20 } - }, - "400": { - "start": { "line": 1224, "column": 6 }, - "end": { "line": 1224, "column": 22 } - }, - "401": { - "start": { "line": 1226, "column": 6 }, - "end": { "line": 1226, "column": null } - }, - "402": { - "start": { "line": 1226, "column": 35 }, - "end": { "line": 1226, "column": 52 } - }, - "403": { - "start": { "line": 1229, "column": 4 }, - "end": { "line": 1234, "column": null } - }, - "404": { - "start": { "line": 1231, "column": 6 }, - "end": { "line": 1231, "column": 24 } - }, - "405": { - "start": { "line": 1233, "column": 6 }, - "end": { "line": 1233, "column": 20 } - }, - "406": { - "start": { "line": 1236, "column": 4 }, - "end": { "line": 1236, "column": 12 } - }, - "407": { - "start": { "line": 1239, "column": 4 }, - "end": { "line": 1239, "column": 14 } - }, - "408": { - "start": { "line": 1249, "column": 4 }, - "end": { "line": 1249, "column": 21 } - }, - "409": { - "start": { "line": 1251, "column": 4 }, - "end": { "line": 1262, "column": null } - }, - "410": { - "start": { "line": 1253, "column": 6 }, - "end": { "line": 1253, "column": 18 } - }, - "411": { - "start": { "line": 1255, "column": 6 }, - "end": { "line": 1255, "column": 23 } - }, - "412": { - "start": { "line": 1259, "column": 6 }, - "end": { "line": 1259, "column": 22 } - }, - "413": { - "start": { "line": 1261, "column": 6 }, - "end": { "line": 1261, "column": null } - }, - "414": { - "start": { "line": 1261, "column": 35 }, - "end": { "line": 1261, "column": 52 } - }, - "415": { - "start": { "line": 1264, "column": 4 }, - "end": { "line": 1269, "column": null } - }, - "416": { - "start": { "line": 1266, "column": 6 }, - "end": { "line": 1266, "column": 24 } - }, - "417": { - "start": { "line": 1268, "column": 6 }, - "end": { "line": 1268, "column": 20 } - }, - "418": { - "start": { "line": 1271, "column": 4 }, - "end": { "line": 1271, "column": 12 } - }, - "419": { - "start": { "line": 1273, "column": 4 }, - "end": { "line": 1460, "column": null } - }, - "420": { - "start": { "line": 1275, "column": 6 }, - "end": { "line": 1275, "column": 23 } - }, - "421": { - "start": { "line": 1277, "column": 6 }, - "end": { "line": 1288, "column": null } - }, - "422": { - "start": { "line": 1279, "column": 8 }, - "end": { "line": 1279, "column": 20 } - }, - "423": { - "start": { "line": 1281, "column": 8 }, - "end": { "line": 1281, "column": 25 } - }, - "424": { - "start": { "line": 1285, "column": 8 }, - "end": { "line": 1285, "column": 24 } - }, - "425": { - "start": { "line": 1287, "column": 8 }, - "end": { "line": 1287, "column": null } - }, - "426": { - "start": { "line": 1287, "column": 37 }, - "end": { "line": 1287, "column": 54 } - }, - "427": { - "start": { "line": 1290, "column": 6 }, - "end": { "line": 1295, "column": null } - }, - "428": { - "start": { "line": 1292, "column": 8 }, - "end": { "line": 1292, "column": 26 } - }, - "429": { - "start": { "line": 1294, "column": 8 }, - "end": { "line": 1294, "column": 22 } - }, - "430": { - "start": { "line": 1297, "column": 6 }, - "end": { "line": 1297, "column": 14 } - }, - "431": { - "start": { "line": 1299, "column": 6 }, - "end": { "line": 1459, "column": null } - }, - "432": { - "start": { "line": 1301, "column": 8 }, - "end": { "line": 1301, "column": 25 } - }, - "433": { - "start": { "line": 1303, "column": 8 }, - "end": { "line": 1314, "column": null } - }, - "434": { - "start": { "line": 1305, "column": 10 }, - "end": { "line": 1305, "column": 22 } - }, - "435": { - "start": { "line": 1307, "column": 10 }, - "end": { "line": 1307, "column": 24 } - }, - "436": { - "start": { "line": 1311, "column": 10 }, - "end": { "line": 1311, "column": 26 } - }, - "437": { - "start": { "line": 1313, "column": 10 }, - "end": { "line": 1313, "column": null } - }, - "438": { - "start": { "line": 1313, "column": 39 }, - "end": { "line": 1313, "column": 56 } - }, - "439": { - "start": { "line": 1316, "column": 8 }, - "end": { "line": 1321, "column": null } - }, - "440": { - "start": { "line": 1318, "column": 10 }, - "end": { "line": 1318, "column": 28 } - }, - "441": { - "start": { "line": 1320, "column": 10 }, - "end": { "line": 1320, "column": 24 } - }, - "442": { - "start": { "line": 1323, "column": 8 }, - "end": { "line": 1323, "column": 16 } - }, - "443": { - "start": { "line": 1325, "column": 8 }, - "end": { "line": 1458, "column": null } - }, - "444": { - "start": { "line": 1327, "column": 10 }, - "end": { "line": 1327, "column": 27 } - }, - "445": { - "start": { "line": 1329, "column": 10 }, - "end": { "line": 1340, "column": null } - }, - "446": { - "start": { "line": 1331, "column": 12 }, - "end": { "line": 1331, "column": 25 } - }, - "447": { - "start": { "line": 1333, "column": 12 }, - "end": { "line": 1333, "column": 26 } - }, - "448": { - "start": { "line": 1337, "column": 12 }, - "end": { "line": 1337, "column": 28 } - }, - "449": { - "start": { "line": 1339, "column": 12 }, - "end": { "line": 1339, "column": null } - }, - "450": { - "start": { "line": 1339, "column": 41 }, - "end": { "line": 1339, "column": 59 } - }, - "451": { - "start": { "line": 1342, "column": 10 }, - "end": { "line": 1347, "column": null } - }, - "452": { - "start": { "line": 1344, "column": 12 }, - "end": { "line": 1344, "column": 30 } - }, - "453": { - "start": { "line": 1346, "column": 12 }, - "end": { "line": 1346, "column": 26 } - }, - "454": { - "start": { "line": 1349, "column": 10 }, - "end": { "line": 1349, "column": 18 } - }, - "455": { - "start": { "line": 1351, "column": 10 }, - "end": { "line": 1457, "column": null } - }, - "456": { - "start": { "line": 1353, "column": 12 }, - "end": { "line": 1353, "column": 29 } - }, - "457": { - "start": { "line": 1355, "column": 12 }, - "end": { "line": 1366, "column": null } - }, - "458": { - "start": { "line": 1357, "column": 14 }, - "end": { "line": 1357, "column": 27 } - }, - "459": { - "start": { "line": 1359, "column": 14 }, - "end": { "line": 1359, "column": 28 } - }, - "460": { - "start": { "line": 1363, "column": 14 }, - "end": { "line": 1363, "column": 30 } - }, - "461": { - "start": { "line": 1365, "column": 14 }, - "end": { "line": 1365, "column": null } - }, - "462": { - "start": { "line": 1365, "column": 43 }, - "end": { "line": 1365, "column": 61 } - }, - "463": { - "start": { "line": 1368, "column": 12 }, - "end": { "line": 1373, "column": null } - }, - "464": { - "start": { "line": 1370, "column": 14 }, - "end": { "line": 1370, "column": 32 } - }, - "465": { - "start": { "line": 1372, "column": 14 }, - "end": { "line": 1372, "column": 29 } - }, - "466": { - "start": { "line": 1375, "column": 12 }, - "end": { "line": 1375, "column": 20 } - }, - "467": { - "start": { "line": 1377, "column": 12 }, - "end": { "line": 1456, "column": null } - }, - "468": { - "start": { "line": 1379, "column": 14 }, - "end": { "line": 1379, "column": 31 } - }, - "469": { - "start": { "line": 1381, "column": 14 }, - "end": { "line": 1392, "column": null } - }, - "470": { - "start": { "line": 1383, "column": 16 }, - "end": { "line": 1383, "column": 29 } - }, - "471": { - "start": { "line": 1385, "column": 16 }, - "end": { "line": 1385, "column": 33 } - }, - "472": { - "start": { "line": 1389, "column": 16 }, - "end": { "line": 1389, "column": 32 } - }, - "473": { - "start": { "line": 1391, "column": 16 }, - "end": { "line": 1391, "column": null } - }, - "474": { - "start": { "line": 1391, "column": 45 }, - "end": { "line": 1391, "column": 63 } - }, - "475": { - "start": { "line": 1394, "column": 14 }, - "end": { "line": 1399, "column": null } - }, - "476": { - "start": { "line": 1396, "column": 16 }, - "end": { "line": 1396, "column": 34 } - }, - "477": { - "start": { "line": 1398, "column": 16 }, - "end": { "line": 1398, "column": 31 } - }, - "478": { - "start": { "line": 1401, "column": 14 }, - "end": { "line": 1401, "column": 22 } - }, - "479": { - "start": { "line": 1403, "column": 14 }, - "end": { "line": 1455, "column": null } - }, - "480": { - "start": { "line": 1405, "column": 16 }, - "end": { "line": 1405, "column": 33 } - }, - "481": { - "start": { "line": 1407, "column": 16 }, - "end": { "line": 1418, "column": null } - }, - "482": { - "start": { "line": 1409, "column": 18 }, - "end": { "line": 1409, "column": 31 } - }, - "483": { - "start": { "line": 1411, "column": 18 }, - "end": { "line": 1411, "column": 32 } - }, - "484": { - "start": { "line": 1415, "column": 18 }, - "end": { "line": 1415, "column": 34 } - }, - "485": { - "start": { "line": 1417, "column": 18 }, - "end": { "line": 1417, "column": null } - }, - "486": { - "start": { "line": 1417, "column": 47 }, - "end": { "line": 1417, "column": 65 } - }, - "487": { - "start": { "line": 1420, "column": 16 }, - "end": { "line": 1425, "column": null } - }, - "488": { - "start": { "line": 1422, "column": 18 }, - "end": { "line": 1422, "column": 36 } - }, - "489": { - "start": { "line": 1424, "column": 18 }, - "end": { "line": 1424, "column": 33 } - }, - "490": { - "start": { "line": 1427, "column": 16 }, - "end": { "line": 1427, "column": 24 } - }, - "491": { - "start": { "line": 1429, "column": 16 }, - "end": { "line": 1454, "column": null } - }, - "492": { - "start": { "line": 1431, "column": 18 }, - "end": { "line": 1431, "column": 35 } - }, - "493": { - "start": { "line": 1433, "column": 18 }, - "end": { "line": 1444, "column": null } - }, - "494": { - "start": { "line": 1435, "column": 20 }, - "end": { "line": 1435, "column": 33 } - }, - "495": { - "start": { "line": 1437, "column": 20 }, - "end": { "line": 1437, "column": 34 } - }, - "496": { - "start": { "line": 1441, "column": 20 }, - "end": { "line": 1441, "column": 36 } - }, - "497": { - "start": { "line": 1443, "column": 20 }, - "end": { "line": 1443, "column": null } - }, - "498": { - "start": { "line": 1443, "column": 49 }, - "end": { "line": 1443, "column": 67 } - }, - "499": { - "start": { "line": 1446, "column": 18 }, - "end": { "line": 1451, "column": null } - }, - "500": { - "start": { "line": 1448, "column": 20 }, - "end": { "line": 1448, "column": 38 } - }, - "501": { - "start": { "line": 1450, "column": 20 }, - "end": { "line": 1450, "column": 35 } - }, - "502": { - "start": { "line": 1453, "column": 18 }, - "end": { "line": 1453, "column": 26 } - }, - "503": { - "start": { "line": 1463, "column": 4 }, - "end": { "line": 1463, "column": 14 } - }, - "504": { - "start": { "line": 1473, "column": 4 }, - "end": { "line": 1473, "column": 21 } - }, - "505": { - "start": { "line": 1475, "column": 4 }, - "end": { "line": 1475, "column": 27 } - }, - "506": { - "start": { "line": 1477, "column": 4 }, - "end": { "line": 1480, "column": null } - }, - "507": { - "start": { "line": 1479, "column": 6 }, - "end": { "line": 1479, "column": 16 } - }, - "508": { - "start": { "line": 1482, "column": 4 }, - "end": { "line": 1482, "column": 28 } - }, - "509": { - "start": { "line": 1484, "column": 4 }, - "end": { "line": 1528, "column": null } - }, - "510": { - "start": { "line": 1486, "column": 6 }, - "end": { "line": 1497, "column": null } - }, - "511": { - "start": { "line": 1488, "column": 8 }, - "end": { "line": 1488, "column": 20 } - }, - "512": { - "start": { "line": 1490, "column": 8 }, - "end": { "line": 1490, "column": 22 } - }, - "513": { - "start": { "line": 1494, "column": 8 }, - "end": { "line": 1494, "column": 24 } - }, - "514": { - "start": { "line": 1496, "column": 8 }, - "end": { "line": 1496, "column": null } - }, - "515": { - "start": { "line": 1496, "column": 37 }, - "end": { "line": 1496, "column": 54 } - }, - "516": { - "start": { "line": 1499, "column": 6 }, - "end": { "line": 1521, "column": null } - }, - "517": { - "start": { "line": 1501, "column": 8 }, - "end": { "line": 1501, "column": 32 } - }, - "518": { - "start": { "line": 1503, "column": 8 }, - "end": { "line": 1514, "column": null } - }, - "519": { - "start": { "line": 1505, "column": 10 }, - "end": { "line": 1505, "column": 28 } - }, - "520": { - "start": { "line": 1507, "column": 10 }, - "end": { "line": 1507, "column": 35 } - }, - "521": { - "start": { "line": 1511, "column": 10 }, - "end": { "line": 1511, "column": 27 } - }, - "522": { - "start": { "line": 1513, "column": 10 }, - "end": { "line": 1513, "column": 26 } - }, - "523": { - "start": { "line": 1518, "column": 8 }, - "end": { "line": 1518, "column": 25 } - }, - "524": { - "start": { "line": 1520, "column": 8 }, - "end": { "line": 1520, "column": 24 } - }, - "525": { - "start": { "line": 1525, "column": 6 }, - "end": { "line": 1525, "column": 23 } - }, - "526": { - "start": { "line": 1527, "column": 6 }, - "end": { "line": 1527, "column": 22 } - }, - "527": { - "start": { "line": 1531, "column": 4 }, - "end": { "line": 1531, "column": 14 } - }, - "528": { - "start": { "line": 1541, "column": 4 }, - "end": { "line": 1541, "column": 21 } - }, - "529": { - "start": { "line": 1543, "column": 4 }, - "end": { "line": 1543, "column": 26 } - }, - "530": { - "start": { "line": 1545, "column": 4 }, - "end": { "line": 1666, "column": null } - }, - "531": { - "start": { "line": 1547, "column": 6 }, - "end": { "line": 1558, "column": null } - }, - "532": { - "start": { "line": 1549, "column": 8 }, - "end": { "line": 1549, "column": 21 } - }, - "533": { - "start": { "line": 1551, "column": 8 }, - "end": { "line": 1551, "column": 22 } - }, - "534": { - "start": { "line": 1555, "column": 8 }, - "end": { "line": 1555, "column": 24 } - }, - "535": { - "start": { "line": 1557, "column": 8 }, - "end": { "line": 1557, "column": null } - }, - "536": { - "start": { "line": 1557, "column": 37 }, - "end": { "line": 1557, "column": 55 } - }, - "537": { - "start": { "line": 1560, "column": 6 }, - "end": { "line": 1659, "column": null } - }, - "538": { - "start": { "line": 1562, "column": 8 }, - "end": { "line": 1562, "column": 30 } - }, - "539": { - "start": { "line": 1564, "column": 8 }, - "end": { "line": 1652, "column": null } - }, - "540": { - "start": { "line": 1566, "column": 10 }, - "end": { "line": 1577, "column": null } - }, - "541": { - "start": { "line": 1568, "column": 12 }, - "end": { "line": 1568, "column": 25 } - }, - "542": { - "start": { "line": 1570, "column": 12 }, - "end": { "line": 1570, "column": 26 } - }, - "543": { - "start": { "line": 1574, "column": 12 }, - "end": { "line": 1574, "column": 28 } - }, - "544": { - "start": { "line": 1576, "column": 12 }, - "end": { "line": 1576, "column": null } - }, - "545": { - "start": { "line": 1576, "column": 41 }, - "end": { "line": 1576, "column": 59 } - }, - "546": { - "start": { "line": 1579, "column": 10 }, - "end": { "line": 1645, "column": null } - }, - "547": { - "start": { "line": 1581, "column": 12 }, - "end": { "line": 1581, "column": 34 } - }, - "548": { - "start": { "line": 1583, "column": 12 }, - "end": { "line": 1638, "column": null } - }, - "549": { - "start": { "line": 1585, "column": 14 }, - "end": { "line": 1585, "column": 31 } - }, - "550": { - "start": { "line": 1587, "column": 14 }, - "end": { "line": 1598, "column": null } - }, - "551": { - "start": { "line": 1589, "column": 16 }, - "end": { "line": 1589, "column": 29 } - }, - "552": { - "start": { "line": 1591, "column": 16 }, - "end": { "line": 1591, "column": 30 } - }, - "553": { - "start": { "line": 1595, "column": 16 }, - "end": { "line": 1595, "column": 32 } - }, - "554": { - "start": { "line": 1597, "column": 16 }, - "end": { "line": 1597, "column": null } - }, - "555": { - "start": { "line": 1597, "column": 45 }, - "end": { "line": 1597, "column": 63 } - }, - "556": { - "start": { "line": 1600, "column": 14 }, - "end": { "line": 1622, "column": null } - }, - "557": { - "start": { "line": 1602, "column": 16 }, - "end": { "line": 1602, "column": 38 } - }, - "558": { - "start": { "line": 1604, "column": 16 }, - "end": { "line": 1615, "column": null } - }, - "559": { - "start": { "line": 1606, "column": 18 }, - "end": { "line": 1606, "column": 32 } - }, - "560": { - "start": { "line": 1608, "column": 18 }, - "end": { "line": 1608, "column": 26 } - }, - "561": { - "start": { "line": 1612, "column": 18 }, - "end": { "line": 1612, "column": 35 } - }, - "562": { - "start": { "line": 1614, "column": 18 }, - "end": { "line": 1614, "column": 34 } - }, - "563": { - "start": { "line": 1619, "column": 16 }, - "end": { "line": 1619, "column": 33 } - }, - "564": { - "start": { "line": 1621, "column": 16 }, - "end": { "line": 1621, "column": 32 } - }, - "565": { - "start": { "line": 1624, "column": 14 }, - "end": { "line": 1627, "column": null } - }, - "566": { - "start": { "line": 1626, "column": 16 }, - "end": { "line": 1626, "column": 26 } - }, - "567": { - "start": { "line": 1629, "column": 14 }, - "end": { "line": 1629, "column": 32 } - }, - "568": { - "start": { "line": 1631, "column": 14 }, - "end": { "line": 1631, "column": 39 } - }, - "569": { - "start": { "line": 1635, "column": 14 }, - "end": { "line": 1635, "column": 31 } - }, - "570": { - "start": { "line": 1637, "column": 14 }, - "end": { "line": 1637, "column": 30 } - }, - "571": { - "start": { "line": 1642, "column": 12 }, - "end": { "line": 1642, "column": 29 } - }, - "572": { - "start": { "line": 1644, "column": 12 }, - "end": { "line": 1644, "column": 28 } - }, - "573": { - "start": { "line": 1649, "column": 10 }, - "end": { "line": 1649, "column": 27 } - }, - "574": { - "start": { "line": 1651, "column": 10 }, - "end": { "line": 1651, "column": 26 } - }, - "575": { - "start": { "line": 1656, "column": 8 }, - "end": { "line": 1656, "column": 25 } - }, - "576": { - "start": { "line": 1658, "column": 8 }, - "end": { "line": 1658, "column": 24 } - }, - "577": { - "start": { "line": 1663, "column": 6 }, - "end": { "line": 1663, "column": 23 } - }, - "578": { - "start": { "line": 1665, "column": 6 }, - "end": { "line": 1665, "column": 22 } - }, - "579": { - "start": { "line": 1669, "column": 4 }, - "end": { "line": 1669, "column": 14 } - }, - "580": { - "start": { "line": 1679, "column": 4 }, - "end": { "line": 1679, "column": 21 } - }, - "581": { - "start": { "line": 1681, "column": 4 }, - "end": { "line": 1692, "column": null } - }, - "582": { - "start": { "line": 1683, "column": 6 }, - "end": { "line": 1683, "column": 19 } - }, - "583": { - "start": { "line": 1685, "column": 6 }, - "end": { "line": 1685, "column": 20 } - }, - "584": { - "start": { "line": 1689, "column": 6 }, - "end": { "line": 1689, "column": 22 } - }, - "585": { - "start": { "line": 1691, "column": 6 }, - "end": { "line": 1691, "column": null } - }, - "586": { - "start": { "line": 1691, "column": 35 }, - "end": { "line": 1691, "column": 53 } - }, - "587": { - "start": { "line": 1694, "column": 4 }, - "end": { "line": 1738, "column": null } - }, - "588": { - "start": { "line": 1696, "column": 6 }, - "end": { "line": 1696, "column": 32 } - }, - "589": { - "start": { "line": 1698, "column": 6 }, - "end": { "line": 1731, "column": null } - }, - "590": { - "start": { "line": 1700, "column": 8 }, - "end": { "line": 1711, "column": null } - }, - "591": { - "start": { "line": 1702, "column": 10 }, - "end": { "line": 1702, "column": 22 } - }, - "592": { - "start": { "line": 1704, "column": 10 }, - "end": { "line": 1704, "column": 24 } - }, - "593": { - "start": { "line": 1708, "column": 10 }, - "end": { "line": 1708, "column": 26 } - }, - "594": { - "start": { "line": 1710, "column": 10 }, - "end": { "line": 1710, "column": null } - }, - "595": { - "start": { "line": 1710, "column": 39 }, - "end": { "line": 1710, "column": 56 } - }, - "596": { - "start": { "line": 1713, "column": 8 }, - "end": { "line": 1724, "column": null } - }, - "597": { - "start": { "line": 1715, "column": 10 }, - "end": { "line": 1715, "column": 28 } - }, - "598": { - "start": { "line": 1717, "column": 10 }, - "end": { "line": 1717, "column": 27 } - }, - "599": { - "start": { "line": 1721, "column": 10 }, - "end": { "line": 1721, "column": 27 } - }, - "600": { - "start": { "line": 1723, "column": 10 }, - "end": { "line": 1723, "column": 26 } - }, - "601": { - "start": { "line": 1728, "column": 8 }, - "end": { "line": 1728, "column": 25 } - }, - "602": { - "start": { "line": 1730, "column": 8 }, - "end": { "line": 1730, "column": 24 } - }, - "603": { - "start": { "line": 1735, "column": 6 }, - "end": { "line": 1735, "column": 23 } - }, - "604": { - "start": { "line": 1737, "column": 6 }, - "end": { "line": 1737, "column": 22 } - }, - "605": { - "start": { "line": 1741, "column": 4 }, - "end": { "line": 1741, "column": 14 } - }, - "606": { - "start": { "line": 1751, "column": 4 }, - "end": { "line": 1751, "column": 21 } - }, - "607": { - "start": { "line": 1753, "column": 4 }, - "end": { "line": 1753, "column": 12 } - }, - "608": { - "start": { "line": 1755, "column": 4 }, - "end": { "line": 1766, "column": null } - }, - "609": { - "start": { "line": 1757, "column": 6 }, - "end": { "line": 1757, "column": 37 } - }, - "610": { - "start": { "line": 1759, "column": 6 }, - "end": { "line": 1759, "column": 20 } - }, - "611": { - "start": { "line": 1763, "column": 6 }, - "end": { "line": 1763, "column": 22 } - }, - "612": { - "start": { "line": 1765, "column": 6 }, - "end": { "line": 1765, "column": null } - }, - "613": { - "start": { "line": 1765, "column": 35 }, - "end": { "line": 1765, "column": 53 } - }, - "614": { - "start": { "line": 1768, "column": 4 }, - "end": { "line": 1791, "column": null } - }, - "615": { - "start": { "line": 1770, "column": 6 }, - "end": { "line": 1786, "column": null } - }, - "616": { - "start": { "line": 1772, "column": 8 }, - "end": { "line": 1772, "column": 20 } - }, - "617": { - "start": { "line": 1774, "column": 8 }, - "end": { "line": 1785, "column": null } - }, - "618": { - "start": { "line": 1776, "column": 10 }, - "end": { "line": 1776, "column": 41 } - }, - "619": { - "start": { "line": 1778, "column": 10 }, - "end": { "line": 1778, "column": 24 } - }, - "620": { - "start": { "line": 1782, "column": 10 }, - "end": { "line": 1782, "column": 26 } - }, - "621": { - "start": { "line": 1784, "column": 10 }, - "end": { "line": 1784, "column": null } - }, - "622": { - "start": { "line": 1784, "column": 39 }, - "end": { "line": 1784, "column": 57 } - }, - "623": { - "start": { "line": 1790, "column": 6 }, - "end": { "line": 1790, "column": 22 } - }, - "624": { - "start": { "line": 1793, "column": 4 }, - "end": { "line": 1798, "column": null } - }, - "625": { - "start": { "line": 1795, "column": 6 }, - "end": { "line": 1795, "column": 24 } - }, - "626": { - "start": { "line": 1797, "column": 6 }, - "end": { "line": 1797, "column": 21 } - }, - "627": { - "start": { "line": 1800, "column": 4 }, - "end": { "line": 1800, "column": 12 } - }, - "628": { - "start": { "line": 1803, "column": 4 }, - "end": { "line": 1803, "column": 14 } - }, - "629": { - "start": { "line": 1813, "column": 4 }, - "end": { "line": 1813, "column": 21 } - }, - "630": { - "start": { "line": 1815, "column": 4 }, - "end": { "line": 1815, "column": 12 } - }, - "631": { - "start": { "line": 1817, "column": 4 }, - "end": { "line": 1828, "column": null } - }, - "632": { - "start": { "line": 1819, "column": 6 }, - "end": { "line": 1819, "column": 37 } - }, - "633": { - "start": { "line": 1821, "column": 6 }, - "end": { "line": 1821, "column": 20 } - }, - "634": { - "start": { "line": 1825, "column": 6 }, - "end": { "line": 1825, "column": 22 } - }, - "635": { - "start": { "line": 1827, "column": 6 }, - "end": { "line": 1827, "column": null } - }, - "636": { - "start": { "line": 1827, "column": 35 }, - "end": { "line": 1827, "column": 53 } - }, - "637": { - "start": { "line": 1830, "column": 4 }, - "end": { "line": 1853, "column": null } - }, - "638": { - "start": { "line": 1832, "column": 6 }, - "end": { "line": 1848, "column": null } - }, - "639": { - "start": { "line": 1834, "column": 8 }, - "end": { "line": 1834, "column": 20 } - }, - "640": { - "start": { "line": 1836, "column": 8 }, - "end": { "line": 1847, "column": null } - }, - "641": { - "start": { "line": 1838, "column": 10 }, - "end": { "line": 1838, "column": 41 } - }, - "642": { - "start": { "line": 1840, "column": 10 }, - "end": { "line": 1840, "column": 24 } - }, - "643": { - "start": { "line": 1844, "column": 10 }, - "end": { "line": 1844, "column": 26 } - }, - "644": { - "start": { "line": 1846, "column": 10 }, - "end": { "line": 1846, "column": null } - }, - "645": { - "start": { "line": 1846, "column": 39 }, - "end": { "line": 1846, "column": 57 } - }, - "646": { - "start": { "line": 1852, "column": 6 }, - "end": { "line": 1852, "column": 22 } - }, - "647": { - "start": { "line": 1855, "column": 4 }, - "end": { "line": 1860, "column": null } - }, - "648": { - "start": { "line": 1857, "column": 6 }, - "end": { "line": 1857, "column": 24 } - }, - "649": { - "start": { "line": 1859, "column": 6 }, - "end": { "line": 1859, "column": 21 } - }, - "650": { - "start": { "line": 1862, "column": 4 }, - "end": { "line": 1862, "column": 12 } - }, - "651": { - "start": { "line": 1865, "column": 4 }, - "end": { "line": 1865, "column": 14 } - }, - "652": { - "start": { "line": 1875, "column": 4 }, - "end": { "line": 1875, "column": 21 } - }, - "653": { - "start": { "line": 1877, "column": 4 }, - "end": { "line": 1877, "column": 34 } - }, - "654": { - "start": { "line": 1879, "column": 4 }, - "end": { "line": 1897, "column": null } - }, - "655": { - "start": { "line": 1881, "column": 6 }, - "end": { "line": 1881, "column": 33 } - }, - "656": { - "start": { "line": 1883, "column": 6 }, - "end": { "line": 1886, "column": null } - }, - "657": { - "start": { "line": 1885, "column": 8 }, - "end": { "line": 1885, "column": 18 } - }, - "658": { - "start": { "line": 1888, "column": 6 }, - "end": { "line": 1888, "column": 24 } - }, - "659": { - "start": { "line": 1890, "column": 6 }, - "end": { "line": 1890, "column": 27 } - }, - "660": { - "start": { "line": 1894, "column": 6 }, - "end": { "line": 1894, "column": 23 } - }, - "661": { - "start": { "line": 1896, "column": 6 }, - "end": { "line": 1896, "column": 22 } - }, - "662": { - "start": { "line": 1900, "column": 4 }, - "end": { "line": 1900, "column": 14 } - }, - "663": { - "start": { "line": 1910, "column": 4 }, - "end": { "line": 1910, "column": 21 } - }, - "664": { - "start": { "line": 1912, "column": 4 }, - "end": { "line": 1923, "column": null } - }, - "665": { - "start": { "line": 1914, "column": 6 }, - "end": { "line": 1914, "column": 19 } - }, - "666": { - "start": { "line": 1916, "column": 6 }, - "end": { "line": 1916, "column": 20 } - }, - "667": { - "start": { "line": 1920, "column": 6 }, - "end": { "line": 1920, "column": 22 } - }, - "668": { - "start": { "line": 1922, "column": 6 }, - "end": { "line": 1922, "column": null } - }, - "669": { - "start": { "line": 1922, "column": 35 }, - "end": { "line": 1922, "column": 53 } - }, - "670": { - "start": { "line": 1925, "column": 4 }, - "end": { "line": 2032, "column": null } - }, - "671": { - "start": { "line": 1927, "column": 6 }, - "end": { "line": 1927, "column": 40 } - }, - "672": { - "start": { "line": 1929, "column": 6 }, - "end": { "line": 2025, "column": null } - }, - "673": { - "start": { "line": 1931, "column": 8 }, - "end": { "line": 1931, "column": 16 } - }, - "674": { - "start": { "line": 1933, "column": 8 }, - "end": { "line": 1933, "column": 25 } - }, - "675": { - "start": { "line": 1935, "column": 8 }, - "end": { "line": 1946, "column": null } - }, - "676": { - "start": { "line": 1937, "column": 10 }, - "end": { "line": 1937, "column": 23 } - }, - "677": { - "start": { "line": 1939, "column": 10 }, - "end": { "line": 1939, "column": 24 } - }, - "678": { - "start": { "line": 1943, "column": 10 }, - "end": { "line": 1943, "column": 26 } - }, - "679": { - "start": { "line": 1945, "column": 10 }, - "end": { "line": 1945, "column": null } - }, - "680": { - "start": { "line": 1945, "column": 39 }, - "end": { "line": 1945, "column": 57 } - }, - "681": { - "start": { "line": 1948, "column": 8 }, - "end": { "line": 1970, "column": null } - }, - "682": { - "start": { "line": 1950, "column": 10 }, - "end": { "line": 1950, "column": 44 } - }, - "683": { - "start": { "line": 1952, "column": 10 }, - "end": { "line": 1963, "column": null } - }, - "684": { - "start": { "line": 1954, "column": 12 }, - "end": { "line": 1954, "column": 26 } - }, - "685": { - "start": { "line": 1956, "column": 12 }, - "end": { "line": 1956, "column": 20 } - }, - "686": { - "start": { "line": 1960, "column": 12 }, - "end": { "line": 1960, "column": 29 } - }, - "687": { - "start": { "line": 1962, "column": 12 }, - "end": { "line": 1962, "column": 28 } - }, - "688": { - "start": { "line": 1967, "column": 10 }, - "end": { "line": 1967, "column": 27 } - }, - "689": { - "start": { "line": 1969, "column": 10 }, - "end": { "line": 1969, "column": 26 } - }, - "690": { - "start": { "line": 1972, "column": 8 }, - "end": { "line": 2014, "column": null } - }, - "691": { - "start": { "line": 1974, "column": 10 }, - "end": { "line": 1974, "column": 22 } - }, - "692": { - "start": { "line": 1976, "column": 10 }, - "end": { "line": 1976, "column": 27 } - }, - "693": { - "start": { "line": 1978, "column": 10 }, - "end": { "line": 1989, "column": null } - }, - "694": { - "start": { "line": 1980, "column": 12 }, - "end": { "line": 1980, "column": 25 } - }, - "695": { - "start": { "line": 1982, "column": 12 }, - "end": { "line": 1982, "column": 26 } - }, - "696": { - "start": { "line": 1986, "column": 12 }, - "end": { "line": 1986, "column": 28 } - }, - "697": { - "start": { "line": 1988, "column": 12 }, - "end": { "line": 1988, "column": null } - }, - "698": { - "start": { "line": 1988, "column": 41 }, - "end": { "line": 1988, "column": 59 } - }, - "699": { - "start": { "line": 1991, "column": 10 }, - "end": { "line": 2013, "column": null } - }, - "700": { - "start": { "line": 1993, "column": 12 }, - "end": { "line": 1993, "column": 46 } - }, - "701": { - "start": { "line": 1995, "column": 12 }, - "end": { "line": 2006, "column": null } - }, - "702": { - "start": { "line": 1997, "column": 14 }, - "end": { "line": 1997, "column": 28 } - }, - "703": { - "start": { "line": 1999, "column": 14 }, - "end": { "line": 1999, "column": 22 } - }, - "704": { - "start": { "line": 2003, "column": 14 }, - "end": { "line": 2003, "column": 31 } - }, - "705": { - "start": { "line": 2005, "column": 14 }, - "end": { "line": 2005, "column": 30 } - }, - "706": { - "start": { "line": 2010, "column": 12 }, - "end": { "line": 2010, "column": 29 } - }, - "707": { - "start": { "line": 2012, "column": 12 }, - "end": { "line": 2012, "column": 28 } - }, - "708": { - "start": { "line": 2016, "column": 8 }, - "end": { "line": 2016, "column": 26 } - }, - "709": { - "start": { "line": 2018, "column": 8 }, - "end": { "line": 2018, "column": 29 } - }, - "710": { - "start": { "line": 2022, "column": 8 }, - "end": { "line": 2022, "column": 25 } - }, - "711": { - "start": { "line": 2024, "column": 8 }, - "end": { "line": 2024, "column": 24 } - }, - "712": { - "start": { "line": 2029, "column": 6 }, - "end": { "line": 2029, "column": 23 } - }, - "713": { - "start": { "line": 2031, "column": 6 }, - "end": { "line": 2031, "column": 22 } - }, - "714": { - "start": { "line": 2035, "column": 4 }, - "end": { "line": 2035, "column": 14 } - }, - "715": { - "start": { "line": 2045, "column": 4 }, - "end": { "line": 2045, "column": 21 } - }, - "716": { - "start": { "line": 2047, "column": 4 }, - "end": { "line": 2058, "column": null } - }, - "717": { - "start": { "line": 2049, "column": 6 }, - "end": { "line": 2049, "column": 19 } - }, - "718": { - "start": { "line": 2051, "column": 6 }, - "end": { "line": 2051, "column": 20 } - }, - "719": { - "start": { "line": 2055, "column": 6 }, - "end": { "line": 2055, "column": 22 } - }, - "720": { - "start": { "line": 2057, "column": 6 }, - "end": { "line": 2057, "column": null } - }, - "721": { - "start": { "line": 2057, "column": 35 }, - "end": { "line": 2057, "column": 53 } - }, - "722": { - "start": { "line": 2060, "column": 4 }, - "end": { "line": 2063, "column": null } - }, - "723": { - "start": { "line": 2062, "column": 6 }, - "end": { "line": 2062, "column": 16 } - }, - "724": { - "start": { "line": 2065, "column": 4 }, - "end": { "line": 2065, "column": 26 } - }, - "725": { - "start": { "line": 2067, "column": 4 }, - "end": { "line": 2070, "column": null } - }, - "726": { - "start": { "line": 2069, "column": 6 }, - "end": { "line": 2069, "column": 29 } - }, - "727": { - "start": { "line": 2072, "column": 4 }, - "end": { "line": 2083, "column": null } - }, - "728": { - "start": { "line": 2074, "column": 6 }, - "end": { "line": 2074, "column": 24 } - }, - "729": { - "start": { "line": 2076, "column": 6 }, - "end": { "line": 2076, "column": 23 } - }, - "730": { - "start": { "line": 2080, "column": 6 }, - "end": { "line": 2080, "column": 23 } - }, - "731": { - "start": { "line": 2082, "column": 6 }, - "end": { "line": 2082, "column": 22 } - }, - "732": { - "start": { "line": 2086, "column": 4 }, - "end": { "line": 2086, "column": 14 } - }, - "733": { - "start": { "line": 2096, "column": 4 }, - "end": { "line": 2096, "column": 21 } - }, - "734": { - "start": { "line": 2098, "column": 4 }, - "end": { "line": 2098, "column": 26 } - }, - "735": { - "start": { "line": 2100, "column": 4 }, - "end": { "line": 2196, "column": null } - }, - "736": { - "start": { "line": 2102, "column": 6 }, - "end": { "line": 2102, "column": 14 } - }, - "737": { - "start": { "line": 2104, "column": 6 }, - "end": { "line": 2104, "column": 23 } - }, - "738": { - "start": { "line": 2106, "column": 6 }, - "end": { "line": 2117, "column": null } - }, - "739": { - "start": { "line": 2108, "column": 8 }, - "end": { "line": 2108, "column": 21 } - }, - "740": { - "start": { "line": 2110, "column": 8 }, - "end": { "line": 2110, "column": 22 } - }, - "741": { - "start": { "line": 2114, "column": 8 }, - "end": { "line": 2114, "column": 24 } - }, - "742": { - "start": { "line": 2116, "column": 8 }, - "end": { "line": 2116, "column": null } - }, - "743": { - "start": { "line": 2116, "column": 37 }, - "end": { "line": 2116, "column": 55 } - }, - "744": { - "start": { "line": 2119, "column": 6 }, - "end": { "line": 2141, "column": null } - }, - "745": { - "start": { "line": 2121, "column": 8 }, - "end": { "line": 2121, "column": 30 } - }, - "746": { - "start": { "line": 2123, "column": 8 }, - "end": { "line": 2134, "column": null } - }, - "747": { - "start": { "line": 2125, "column": 10 }, - "end": { "line": 2125, "column": 24 } - }, - "748": { - "start": { "line": 2127, "column": 10 }, - "end": { "line": 2127, "column": 18 } - }, - "749": { - "start": { "line": 2131, "column": 10 }, - "end": { "line": 2131, "column": 27 } - }, - "750": { - "start": { "line": 2133, "column": 10 }, - "end": { "line": 2133, "column": 26 } - }, - "751": { - "start": { "line": 2138, "column": 8 }, - "end": { "line": 2138, "column": 25 } - }, - "752": { - "start": { "line": 2140, "column": 8 }, - "end": { "line": 2140, "column": 24 } - }, - "753": { - "start": { "line": 2143, "column": 6 }, - "end": { "line": 2185, "column": null } - }, - "754": { - "start": { "line": 2145, "column": 8 }, - "end": { "line": 2145, "column": 20 } - }, - "755": { - "start": { "line": 2147, "column": 8 }, - "end": { "line": 2147, "column": 25 } - }, - "756": { - "start": { "line": 2149, "column": 8 }, - "end": { "line": 2160, "column": null } - }, - "757": { - "start": { "line": 2151, "column": 10 }, - "end": { "line": 2151, "column": 23 } - }, - "758": { - "start": { "line": 2153, "column": 10 }, - "end": { "line": 2153, "column": 24 } - }, - "759": { - "start": { "line": 2157, "column": 10 }, - "end": { "line": 2157, "column": 26 } - }, - "760": { - "start": { "line": 2159, "column": 10 }, - "end": { "line": 2159, "column": null } - }, - "761": { - "start": { "line": 2159, "column": 39 }, - "end": { "line": 2159, "column": 57 } - }, - "762": { - "start": { "line": 2162, "column": 8 }, - "end": { "line": 2184, "column": null } - }, - "763": { - "start": { "line": 2164, "column": 10 }, - "end": { "line": 2164, "column": 32 } - }, - "764": { - "start": { "line": 2166, "column": 10 }, - "end": { "line": 2177, "column": null } - }, - "765": { - "start": { "line": 2168, "column": 12 }, - "end": { "line": 2168, "column": 26 } - }, - "766": { - "start": { "line": 2170, "column": 12 }, - "end": { "line": 2170, "column": 20 } - }, - "767": { - "start": { "line": 2174, "column": 12 }, - "end": { "line": 2174, "column": 29 } - }, - "768": { - "start": { "line": 2176, "column": 12 }, - "end": { "line": 2176, "column": 28 } - }, - "769": { - "start": { "line": 2181, "column": 10 }, - "end": { "line": 2181, "column": 27 } - }, - "770": { - "start": { "line": 2183, "column": 10 }, - "end": { "line": 2183, "column": 26 } - }, - "771": { - "start": { "line": 2187, "column": 6 }, - "end": { "line": 2187, "column": 24 } - }, - "772": { - "start": { "line": 2189, "column": 6 }, - "end": { "line": 2189, "column": 27 } - }, - "773": { - "start": { "line": 2193, "column": 6 }, - "end": { "line": 2193, "column": 23 } - }, - "774": { - "start": { "line": 2195, "column": 6 }, - "end": { "line": 2195, "column": 22 } - }, - "775": { - "start": { "line": 2199, "column": 4 }, - "end": { "line": 2199, "column": 14 } - }, - "776": { - "start": { "line": 2209, "column": 4 }, - "end": { "line": 2209, "column": 21 } - }, - "777": { - "start": { "line": 2211, "column": 4 }, - "end": { "line": 2211, "column": 12 } - }, - "778": { - "start": { "line": 2213, "column": 4 }, - "end": { "line": 2224, "column": null } - }, - "779": { - "start": { "line": 2215, "column": 6 }, - "end": { "line": 2215, "column": 37 } - }, - "780": { - "start": { "line": 2217, "column": 6 }, - "end": { "line": 2217, "column": 20 } - }, - "781": { - "start": { "line": 2221, "column": 6 }, - "end": { "line": 2221, "column": 22 } - }, - "782": { - "start": { "line": 2223, "column": 6 }, - "end": { "line": 2223, "column": null } - }, - "783": { - "start": { "line": 2223, "column": 35 }, - "end": { "line": 2223, "column": 53 } - }, - "784": { - "start": { "line": 2226, "column": 4 }, - "end": { "line": 2249, "column": null } - }, - "785": { - "start": { "line": 2228, "column": 6 }, - "end": { "line": 2244, "column": null } - }, - "786": { - "start": { "line": 2230, "column": 8 }, - "end": { "line": 2230, "column": 20 } - }, - "787": { - "start": { "line": 2232, "column": 8 }, - "end": { "line": 2243, "column": null } - }, - "788": { - "start": { "line": 2234, "column": 10 }, - "end": { "line": 2234, "column": 41 } - }, - "789": { - "start": { "line": 2236, "column": 10 }, - "end": { "line": 2236, "column": 24 } - }, - "790": { - "start": { "line": 2240, "column": 10 }, - "end": { "line": 2240, "column": 26 } - }, - "791": { - "start": { "line": 2242, "column": 10 }, - "end": { "line": 2242, "column": null } - }, - "792": { - "start": { "line": 2242, "column": 39 }, - "end": { "line": 2242, "column": 57 } - }, - "793": { - "start": { "line": 2248, "column": 6 }, - "end": { "line": 2248, "column": 22 } - }, - "794": { - "start": { "line": 2251, "column": 4 }, - "end": { "line": 2256, "column": null } - }, - "795": { - "start": { "line": 2253, "column": 6 }, - "end": { "line": 2253, "column": 24 } - }, - "796": { - "start": { "line": 2255, "column": 6 }, - "end": { "line": 2255, "column": 21 } - }, - "797": { - "start": { "line": 2258, "column": 4 }, - "end": { "line": 2258, "column": 12 } - }, - "798": { - "start": { "line": 2261, "column": 4 }, - "end": { "line": 2261, "column": 14 } - }, - "799": { - "start": { "line": 2271, "column": 4 }, - "end": { "line": 2271, "column": 22 } - }, - "800": { - "start": { "line": 2273, "column": 4 }, - "end": { "line": 2273, "column": 12 } - }, - "801": { - "start": { "line": 2275, "column": 4 }, - "end": { "line": 2286, "column": null } - }, - "802": { - "start": { "line": 2277, "column": 6 }, - "end": { "line": 2277, "column": 37 } - }, - "803": { - "start": { "line": 2279, "column": 6 }, - "end": { "line": 2279, "column": 20 } - }, - "804": { - "start": { "line": 2283, "column": 6 }, - "end": { "line": 2283, "column": 22 } - }, - "805": { - "start": { "line": 2285, "column": 6 }, - "end": { "line": 2285, "column": null } - }, - "806": { - "start": { "line": 2285, "column": 35 }, - "end": { "line": 2285, "column": 53 } - }, - "807": { - "start": { "line": 2288, "column": 4 }, - "end": { "line": 2304, "column": null } - }, - "808": { - "start": { "line": 2290, "column": 6 }, - "end": { "line": 2290, "column": 18 } - }, - "809": { - "start": { "line": 2292, "column": 6 }, - "end": { "line": 2303, "column": null } - }, - "810": { - "start": { "line": 2294, "column": 8 }, - "end": { "line": 2294, "column": 39 } - }, - "811": { - "start": { "line": 2296, "column": 8 }, - "end": { "line": 2296, "column": 22 } - }, - "812": { - "start": { "line": 2300, "column": 8 }, - "end": { "line": 2300, "column": 24 } - }, - "813": { - "start": { "line": 2302, "column": 8 }, - "end": { "line": 2302, "column": null } - }, - "814": { - "start": { "line": 2302, "column": 37 }, - "end": { "line": 2302, "column": 55 } - }, - "815": { - "start": { "line": 2306, "column": 4 }, - "end": { "line": 2306, "column": 22 } - }, - "816": { - "start": { "line": 2308, "column": 4 }, - "end": { "line": 2308, "column": 20 } - }, - "817": { - "start": { "line": 2310, "column": 4 }, - "end": { "line": 2310, "column": null } - }, - "818": { - "start": { "line": 2310, "column": 33 }, - "end": { "line": 2310, "column": 51 } - }, - "819": { - "start": { "line": 2313, "column": 4 }, - "end": { "line": 2313, "column": 14 } - }, - "820": { - "start": { "line": 2317, "column": 2 }, - "end": { "line": 2317, "column": 39 } - }, - "821": { - "start": { "line": 2320, "column": 2 }, - "end": { "line": 2344, "column": null } - }, - "822": { - "start": { "line": 2322, "column": 4 }, - "end": { "line": 2322, "column": 22 } - }, - "823": { - "start": { "line": 2326, "column": 4 }, - "end": { "line": 2329, "column": null } - }, - "824": { - "start": { "line": 2328, "column": 6 }, - "end": { "line": 2328, "column": 37 } - }, - "825": { - "start": { "line": 2332, "column": 4 }, - "end": { "line": 2343, "column": 6 } - }, - "826": { - "start": { "line": 2348, "column": 2 }, - "end": { "line": 2351, "column": 4 } - }, - "827": { - "start": { "line": 2422, "column": 0 }, - "end": { "line": 2422, "column": 60 } - }, - "828": { - "start": { "line": 2457, "column": 13 }, - "end": { "line": 2457, "column": 54 } - }, - "829": { - "start": { "line": 2459, "column": 13 }, - "end": { "line": 2459, "column": 84 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 9, "column": 1 }, - "end": { "line": 9, "column": null } - }, - "loc": { - "start": { "line": 9, "column": 1 }, - "end": { "line": 2352, "column": 1 } - } - }, - "1": { - "name": "peg$subclass", - "decl": { - "start": { "line": 14, "column": 9 }, - "end": { "line": 14, "column": 21 } - }, - "loc": { - "start": { "line": 14, "column": 35 }, - "end": { "line": 21, "column": 1 } - } - }, - "2": { - "name": "C", - "decl": { - "start": { "line": 16, "column": 11 }, - "end": { "line": 16, "column": 12 } - }, - "loc": { - "start": { "line": 16, "column": 12 }, - "end": { "line": 16, "column": 44 } - } - }, - "3": { - "name": "peg$SyntaxError", - "decl": { - "start": { "line": 24, "column": 9 }, - "end": { "line": 24, "column": 24 } - }, - "loc": { - "start": { "line": 24, "column": 59 }, - "end": { "line": 43, "column": 1 } - } - }, - "4": { - "name": "peg$padEnd", - "decl": { - "start": { "line": 49, "column": 9 }, - "end": { "line": 49, "column": 19 } - }, - "loc": { - "start": { "line": 49, "column": 48 }, - "end": { "line": 60, "column": 1 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 63, "column": 35 }, - "end": { "line": 63, "column": 44 } - }, - "loc": { - "start": { "line": 63, "column": 51 }, - "end": { "line": 122, "column": 1 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 125, "column": 31 }, - "end": { "line": 125, "column": 40 } - }, - "loc": { - "start": { "line": 125, "column": 55 }, - "end": { "line": 286, "column": 1 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 129, "column": 13 }, - "end": { "line": 129, "column": 22 } - }, - "loc": { - "start": { "line": 129, "column": 33 }, - "end": { "line": 132, "column": 5 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 135, "column": 11 }, - "end": { "line": 135, "column": 20 } - }, - "loc": { - "start": { "line": 135, "column": 31 }, - "end": { "line": 148, "column": 5 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 137, "column": 47 }, - "end": { "line": 137, "column": 56 } - }, - "loc": { - "start": { "line": 137, "column": 60 }, - "end": { "line": 144, "column": 7 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 151, "column": 9 }, - "end": { "line": 151, "column": null } - }, - "loc": { - "start": { "line": 151, "column": 9 }, - "end": { "line": 154, "column": 5 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 157, "column": 9 }, - "end": { "line": 157, "column": null } - }, - "loc": { - "start": { "line": 157, "column": 9 }, - "end": { "line": 160, "column": 5 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 163, "column": 11 }, - "end": { "line": 163, "column": 20 } - }, - "loc": { - "start": { "line": 163, "column": 31 }, - "end": { "line": 166, "column": 5 } - } - }, - "13": { - "name": "hex", - "decl": { - "start": { "line": 170, "column": 11 }, - "end": { "line": 170, "column": 14 } - }, - "loc": { - "start": { "line": 170, "column": 17 }, - "end": { "line": 173, "column": 3 } - } - }, - "14": { - "name": "literalEscape", - "decl": { - "start": { "line": 176, "column": 11 }, - "end": { "line": 176, "column": 24 } - }, - "loc": { - "start": { "line": 176, "column": 26 }, - "end": { "line": 195, "column": 3 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 192, "column": 40 }, - "end": { "line": 192, "column": 49 } - }, - "loc": { - "start": { "line": 192, "column": 51 }, - "end": { "line": 192, "column": 81 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 194, "column": 40 }, - "end": { "line": 194, "column": 49 } - }, - "loc": { - "start": { "line": 194, "column": 51 }, - "end": { "line": 194, "column": 81 } - } - }, - "17": { - "name": "classEscape", - "decl": { - "start": { "line": 198, "column": 11 }, - "end": { "line": 198, "column": 22 } - }, - "loc": { - "start": { "line": 198, "column": 24 }, - "end": { "line": 221, "column": 3 } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 218, "column": 40 }, - "end": { "line": 218, "column": 49 } - }, - "loc": { - "start": { "line": 218, "column": 51 }, - "end": { "line": 218, "column": 81 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 220, "column": 40 }, - "end": { "line": 220, "column": 49 } - }, - "loc": { - "start": { "line": 220, "column": 51 }, - "end": { "line": 220, "column": 81 } - } - }, - "20": { - "name": "describeExpectation", - "decl": { - "start": { "line": 224, "column": 11 }, - "end": { "line": 224, "column": 30 } - }, - "loc": { - "start": { "line": 224, "column": 42 }, - "end": { "line": 227, "column": 3 } - } - }, - "21": { - "name": "describeExpected", - "decl": { - "start": { "line": 230, "column": 11 }, - "end": { "line": 230, "column": 27 } - }, - "loc": { - "start": { "line": 230, "column": 36 }, - "end": { "line": 276, "column": 3 } - } - }, - "22": { - "name": "describeFound", - "decl": { - "start": { "line": 279, "column": 11 }, - "end": { "line": 279, "column": 24 } - }, - "loc": { - "start": { "line": 279, "column": 30 }, - "end": { "line": 282, "column": 3 } - } - }, - "23": { - "name": "peg$parse", - "decl": { - "start": { "line": 289, "column": 9 }, - "end": { "line": 289, "column": 18 } - }, - "loc": { - "start": { "line": 289, "column": 33 }, - "end": { "line": 2345, "column": 1 } - } - }, - "24": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 353, "column": 15 }, - "end": { "line": 353, "column": 24 } - }, - "loc": { - "start": { "line": 353, "column": 28 }, - "end": { "line": 354, "column": 34 } - } - }, - "25": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 356, "column": 15 }, - "end": { "line": 356, "column": 24 } - }, - "loc": { - "start": { "line": 356, "column": 41 }, - "end": { "line": 357, "column": 47 } - } - }, - "26": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 359, "column": 15 }, - "end": { "line": 359, "column": 24 } - }, - "loc": { - "start": { "line": 359, "column": 52 }, - "end": { "line": 360, "column": 120 } - } - }, - "27": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 362, "column": 15 }, - "end": { "line": 362, "column": 24 } - }, - "loc": { - "start": { "line": 362, "column": 29 }, - "end": { "line": 363, "column": 38 } - } - }, - "28": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 365, "column": 15 }, - "end": { "line": 365, "column": null } - }, - "loc": { - "start": { "line": 365, "column": 15 }, - "end": { "line": 366, "column": 25 } - } - }, - "29": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 368, "column": 15 }, - "end": { "line": 368, "column": null } - }, - "loc": { - "start": { "line": 368, "column": 15 }, - "end": { "line": 369, "column": 26 } - } - }, - "30": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 371, "column": 15 }, - "end": { "line": 371, "column": null } - }, - "loc": { - "start": { "line": 371, "column": 15 }, - "end": { "line": 372, "column": 15 } - } - }, - "31": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 374, "column": 15 }, - "end": { "line": 374, "column": null } - }, - "loc": { - "start": { "line": 374, "column": 15 }, - "end": { "line": 375, "column": 15 } - } - }, - "32": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 377, "column": 15 }, - "end": { "line": 377, "column": null } - }, - "loc": { - "start": { "line": 377, "column": 15 }, - "end": { "line": 378, "column": 14 } - } - }, - "33": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 380, "column": 15 }, - "end": { "line": 380, "column": null } - }, - "loc": { - "start": { "line": 380, "column": 15 }, - "end": { "line": 381, "column": 14 } - } - }, - "34": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 383, "column": 16 }, - "end": { "line": 383, "column": null } - }, - "loc": { - "start": { "line": 383, "column": 16 }, - "end": { "line": 384, "column": 14 } - } - }, - "35": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 386, "column": 16 }, - "end": { "line": 386, "column": null } - }, - "loc": { - "start": { "line": 386, "column": 16 }, - "end": { "line": 387, "column": 15 } - } - }, - "36": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 389, "column": 16 }, - "end": { "line": 389, "column": null } - }, - "loc": { - "start": { "line": 389, "column": 16 }, - "end": { "line": 390, "column": 14 } - } - }, - "37": { - "name": "(anonymous_37)", - "decl": { - "start": { "line": 392, "column": 16 }, - "end": { "line": 392, "column": null } - }, - "loc": { - "start": { "line": 392, "column": 16 }, - "end": { "line": 393, "column": 14 } - } - }, - "38": { - "name": "(anonymous_38)", - "decl": { - "start": { "line": 395, "column": 16 }, - "end": { "line": 395, "column": 25 } - }, - "loc": { - "start": { "line": 395, "column": 53 }, - "end": { "line": 398, "column": 3 } - } - }, - "39": { - "name": "(anonymous_39)", - "decl": { - "start": { "line": 400, "column": 16 }, - "end": { "line": 400, "column": 25 } - }, - "loc": { - "start": { "line": 400, "column": 44 }, - "end": { "line": 420, "column": 3 } - } - }, - "40": { - "name": "(anonymous_40)", - "decl": { - "start": { "line": 422, "column": 16 }, - "end": { "line": 422, "column": 25 } - }, - "loc": { - "start": { "line": 422, "column": 31 }, - "end": { "line": 423, "column": 16 } - } - }, - "41": { - "name": "(anonymous_41)", - "decl": { - "start": { "line": 425, "column": 16 }, - "end": { "line": 425, "column": null } - }, - "loc": { - "start": { "line": 425, "column": 16 }, - "end": { "line": 426, "column": 16 } - } - }, - "42": { - "name": "(anonymous_42)", - "decl": { - "start": { "line": 428, "column": 16 }, - "end": { "line": 428, "column": null } - }, - "loc": { - "start": { "line": 428, "column": 16 }, - "end": { "line": 429, "column": 17 } - } - }, - "43": { - "name": "(anonymous_43)", - "decl": { - "start": { "line": 431, "column": 16 }, - "end": { "line": 431, "column": 25 } - }, - "loc": { - "start": { "line": 431, "column": 43 }, - "end": { "line": 439, "column": 3 } - } - }, - "44": { - "name": "(anonymous_44)", - "decl": { - "start": { "line": 441, "column": 16 }, - "end": { "line": 441, "column": 25 } - }, - "loc": { - "start": { "line": 441, "column": 36 }, - "end": { "line": 444, "column": 3 } - } - }, - "45": { - "name": "(anonymous_45)", - "decl": { - "start": { "line": 443, "column": 35 }, - "end": { "line": 443, "column": 36 } - }, - "loc": { - "start": { "line": 443, "column": 40 }, - "end": { "line": 443, "column": 44 } - } - }, - "46": { - "name": "(anonymous_46)", - "decl": { - "start": { "line": 446, "column": 16 }, - "end": { "line": 446, "column": 25 } - }, - "loc": { - "start": { "line": 446, "column": 32 }, - "end": { "line": 449, "column": 3 } - } - }, - "47": { - "name": "(anonymous_47)", - "decl": { - "start": { "line": 451, "column": 16 }, - "end": { "line": 451, "column": 25 } - }, - "loc": { - "start": { "line": 451, "column": 36 }, - "end": { "line": 454, "column": 3 } - } - }, - "48": { - "name": "(anonymous_48)", - "decl": { - "start": { "line": 453, "column": 35 }, - "end": { "line": 453, "column": 36 } - }, - "loc": { - "start": { "line": 453, "column": 40 }, - "end": { "line": 453, "column": 44 } - } - }, - "49": { - "name": "(anonymous_49)", - "decl": { - "start": { "line": 456, "column": 16 }, - "end": { "line": 456, "column": null } - }, - "loc": { - "start": { "line": 456, "column": 16 }, - "end": { "line": 457, "column": 31 } - } - }, - "50": { - "name": "text", - "decl": { - "start": { "line": 487, "column": 11 }, - "end": { "line": 487, "column": 15 } - }, - "loc": { - "start": { "line": 487, "column": 15 }, - "end": { "line": 490, "column": 3 } - } - }, - "51": { - "name": "offset", - "decl": { - "start": { "line": 493, "column": 11 }, - "end": { "line": 493, "column": 17 } - }, - "loc": { - "start": { "line": 493, "column": 17 }, - "end": { "line": 496, "column": 3 } - } - }, - "52": { - "name": "range", - "decl": { - "start": { "line": 499, "column": 11 }, - "end": { "line": 499, "column": 16 } - }, - "loc": { - "start": { "line": 499, "column": 16 }, - "end": { "line": 509, "column": 3 } - } - }, - "53": { - "name": "location", - "decl": { - "start": { "line": 512, "column": 11 }, - "end": { "line": 512, "column": 19 } - }, - "loc": { - "start": { "line": 512, "column": 19 }, - "end": { "line": 515, "column": 3 } - } - }, - "54": { - "name": "expected", - "decl": { - "start": { "line": 518, "column": 11 }, - "end": { "line": 518, "column": 19 } - }, - "loc": { - "start": { "line": 518, "column": 41 }, - "end": { "line": 535, "column": 3 } - } - }, - "55": { - "name": "error", - "decl": { - "start": { "line": 538, "column": 11 }, - "end": { "line": 538, "column": 16 } - }, - "loc": { - "start": { "line": 538, "column": 34 }, - "end": { "line": 548, "column": 3 } - } - }, - "56": { - "name": "peg$literalExpectation", - "decl": { - "start": { "line": 551, "column": 11 }, - "end": { "line": 551, "column": 33 } - }, - "loc": { - "start": { "line": 551, "column": 50 }, - "end": { "line": 554, "column": 3 } - } - }, - "57": { - "name": "peg$classExpectation", - "decl": { - "start": { "line": 557, "column": 11 }, - "end": { "line": 557, "column": 31 } - }, - "loc": { - "start": { "line": 557, "column": 59 }, - "end": { "line": 560, "column": 3 } - } - }, - "58": { - "name": "peg$anyExpectation", - "decl": { - "start": { "line": 563, "column": 11 }, - "end": { "line": 563, "column": 29 } - }, - "loc": { - "start": { "line": 563, "column": 29 }, - "end": { "line": 566, "column": 3 } - } - }, - "59": { - "name": "peg$endExpectation", - "decl": { - "start": { "line": 569, "column": 11 }, - "end": { "line": 569, "column": 29 } - }, - "loc": { - "start": { "line": 569, "column": 29 }, - "end": { "line": 572, "column": 3 } - } - }, - "60": { - "name": "peg$otherExpectation", - "decl": { - "start": { "line": 575, "column": 11 }, - "end": { "line": 575, "column": 31 } - }, - "loc": { - "start": { "line": 575, "column": 43 }, - "end": { "line": 578, "column": 3 } - } - }, - "61": { - "name": "peg$computePosDetails", - "decl": { - "start": { "line": 581, "column": 11 }, - "end": { "line": 581, "column": 32 } - }, - "loc": { - "start": { "line": 581, "column": 36 }, - "end": { "line": 635, "column": 3 } - } - }, - "62": { - "name": "peg$computeLocation", - "decl": { - "start": { "line": 638, "column": 11 }, - "end": { "line": 638, "column": 30 } - }, - "loc": { - "start": { "line": 638, "column": 55 }, - "end": { "line": 676, "column": 3 } - } - }, - "63": { - "name": "peg$fail", - "decl": { - "start": { "line": 679, "column": 11 }, - "end": { "line": 679, "column": 19 } - }, - "loc": { - "start": { "line": 679, "column": 28 }, - "end": { "line": 693, "column": 3 } - } - }, - "64": { - "name": "peg$buildSimpleError", - "decl": { - "start": { "line": 696, "column": 11 }, - "end": { "line": 696, "column": 31 } - }, - "loc": { - "start": { "line": 696, "column": 49 }, - "end": { "line": 699, "column": 3 } - } - }, - "65": { - "name": "peg$buildStructuredError", - "decl": { - "start": { "line": 702, "column": 11 }, - "end": { "line": 702, "column": 35 } - }, - "loc": { - "start": { "line": 702, "column": 61 }, - "end": { "line": 714, "column": 3 } - } - }, - "66": { - "name": "peg$parseVersionRange", - "decl": { - "start": { "line": 718, "column": 0 }, - "end": { "line": 718, "column": 21 } - }, - "loc": { - "start": { "line": 718, "column": 21 }, - "end": { "line": 845, "column": 3 } - } - }, - "67": { - "name": "peg$parseOr", - "decl": { - "start": { "line": 849, "column": 0 }, - "end": { "line": 849, "column": 11 } - }, - "loc": { - "start": { "line": 849, "column": 11 }, - "end": { "line": 869, "column": 3 } - } - }, - "68": { - "name": "peg$parseAnd", - "decl": { - "start": { "line": 873, "column": 0 }, - "end": { "line": 873, "column": 12 } - }, - "loc": { - "start": { "line": 873, "column": 12 }, - "end": { "line": 893, "column": 3 } - } - }, - "69": { - "name": "peg$parseVersionRangeAtom", - "decl": { - "start": { "line": 897, "column": 0 }, - "end": { "line": 897, "column": 25 } - }, - "loc": { - "start": { "line": 897, "column": 25 }, - "end": { "line": 926, "column": 3 } - } - }, - "70": { - "name": "peg$parseParens", - "decl": { - "start": { "line": 930, "column": 0 }, - "end": { "line": 930, "column": 15 } - }, - "loc": { - "start": { "line": 930, "column": 15 }, - "end": { "line": 1002, "column": 3 } - } - }, - "71": { - "name": "peg$parseAnchor", - "decl": { - "start": { "line": 1006, "column": 0 }, - "end": { "line": 1006, "column": 15 } - }, - "loc": { - "start": { "line": 1006, "column": 15 }, - "end": { "line": 1039, "column": 3 } - } - }, - "72": { - "name": "peg$parseVersionSpec", - "decl": { - "start": { "line": 1043, "column": 0 }, - "end": { "line": 1043, "column": 20 } - }, - "loc": { - "start": { "line": 1043, "column": 20 }, - "end": { "line": 1118, "column": 3 } - } - }, - "73": { - "name": "peg$parseNot", - "decl": { - "start": { "line": 1122, "column": 0 }, - "end": { "line": 1122, "column": 12 } - }, - "loc": { - "start": { "line": 1122, "column": 12 }, - "end": { "line": 1170, "column": 3 } - } - }, - "74": { - "name": "peg$parseAny", - "decl": { - "start": { "line": 1174, "column": 0 }, - "end": { "line": 1174, "column": 12 } - }, - "loc": { - "start": { "line": 1174, "column": 12 }, - "end": { "line": 1205, "column": 3 } - } - }, - "75": { - "name": "peg$parseNone", - "decl": { - "start": { "line": 1209, "column": 0 }, - "end": { "line": 1209, "column": 13 } - }, - "loc": { - "start": { "line": 1209, "column": 13 }, - "end": { "line": 1240, "column": 3 } - } - }, - "76": { - "name": "peg$parseCmpOp", - "decl": { - "start": { "line": 1244, "column": 0 }, - "end": { "line": 1244, "column": 14 } - }, - "loc": { - "start": { "line": 1244, "column": 14 }, - "end": { "line": 1464, "column": 3 } - } - }, - "77": { - "name": "peg$parseExtendedVersion", - "decl": { - "start": { "line": 1468, "column": 0 }, - "end": { "line": 1468, "column": 24 } - }, - "loc": { - "start": { "line": 1468, "column": 24 }, - "end": { "line": 1532, "column": 3 } - } - }, - "78": { - "name": "peg$parseEmVer", - "decl": { - "start": { "line": 1536, "column": 0 }, - "end": { "line": 1536, "column": 14 } - }, - "loc": { - "start": { "line": 1536, "column": 14 }, - "end": { "line": 1670, "column": 3 } - } - }, - "79": { - "name": "peg$parseFlavor", - "decl": { - "start": { "line": 1674, "column": 0 }, - "end": { "line": 1674, "column": 15 } - }, - "loc": { - "start": { "line": 1674, "column": 15 }, - "end": { "line": 1742, "column": 3 } - } - }, - "80": { - "name": "peg$parseLowercase", - "decl": { - "start": { "line": 1746, "column": 0 }, - "end": { "line": 1746, "column": 18 } - }, - "loc": { - "start": { "line": 1746, "column": 18 }, - "end": { "line": 1804, "column": 3 } - } - }, - "81": { - "name": "peg$parseString", - "decl": { - "start": { "line": 1808, "column": 0 }, - "end": { "line": 1808, "column": 15 } - }, - "loc": { - "start": { "line": 1808, "column": 15 }, - "end": { "line": 1866, "column": 3 } - } - }, - "82": { - "name": "peg$parseVersion", - "decl": { - "start": { "line": 1870, "column": 0 }, - "end": { "line": 1870, "column": 16 } - }, - "loc": { - "start": { "line": 1870, "column": 16 }, - "end": { "line": 1901, "column": 3 } - } - }, - "83": { - "name": "peg$parsePreRelease", - "decl": { - "start": { "line": 1905, "column": 0 }, - "end": { "line": 1905, "column": 19 } - }, - "loc": { - "start": { "line": 1905, "column": 19 }, - "end": { "line": 2036, "column": 3 } - } - }, - "84": { - "name": "peg$parsePreReleaseSegment", - "decl": { - "start": { "line": 2040, "column": 0 }, - "end": { "line": 2040, "column": 26 } - }, - "loc": { - "start": { "line": 2040, "column": 26 }, - "end": { "line": 2087, "column": 3 } - } - }, - "85": { - "name": "peg$parseVersionNumber", - "decl": { - "start": { "line": 2091, "column": 0 }, - "end": { "line": 2091, "column": 22 } - }, - "loc": { - "start": { "line": 2091, "column": 22 }, - "end": { "line": 2200, "column": 3 } - } - }, - "86": { - "name": "peg$parseDigit", - "decl": { - "start": { "line": 2204, "column": 0 }, - "end": { "line": 2204, "column": 14 } - }, - "loc": { - "start": { "line": 2204, "column": 14 }, - "end": { "line": 2262, "column": 3 } - } - }, - "87": { - "name": "peg$parse_", - "decl": { - "start": { "line": 2266, "column": 0 }, - "end": { "line": 2266, "column": 10 } - }, - "loc": { - "start": { "line": 2266, "column": 10 }, - "end": { "line": 2314, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 51, "column": 14 }, - "end": { "line": 51, "column": 30 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 51, "column": 14 }, - "end": { "line": 51, "column": 23 } - }, - { - "start": { "line": 51, "column": 27 }, - "end": { "line": 51, "column": 30 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 53, "column": 2 }, - "end": { "line": 53, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 53, "column": 2 }, - "end": { "line": 53, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 119, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 67, "column": 2 }, - "end": { "line": 119, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 75, "column": 6 }, - "end": { "line": 80, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 75, "column": 6 }, - "end": { "line": 80, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 85, "column": 19 }, - "end": { "line": 89, "column": 9 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 87, "column": 8 }, - "end": { "line": 87, "column": 38 } - }, - { - "start": { "line": 89, "column": 8 }, - "end": { "line": 89, "column": 9 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 85, "column": 20 }, - "end": { "line": 85, "column": 95 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 85, "column": 20 }, - "end": { "line": 85, "column": 40 } - }, - { - "start": { "line": 85, "column": 45 }, - "end": { "line": 85, "column": 94 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 93, "column": 4 }, - "end": { "line": 118, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 93, "column": 4 }, - "end": { "line": 118, "column": null } - }, - { - "start": { "line": 115, "column": 11 }, - "end": { "line": 118, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 101, "column": 17 }, - "end": { "line": 101, "column": 63 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 101, "column": 37 }, - "end": { "line": 101, "column": 45 } - }, - { - "start": { "line": 101, "column": 48 }, - "end": { "line": 101, "column": 63 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 103, "column": 19 }, - "end": { "line": 103, "column": 41 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 103, "column": 20 }, - "end": { "line": 103, "column": 35 } - }, - { - "start": { "line": 103, "column": 40 }, - "end": { "line": 103, "column": 41 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 139, "column": 15 }, - "end": { "line": 143, "column": 29 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 141, "column": 12 }, - "end": { "line": 141, "column": 61 } - }, - { - "start": { "line": 143, "column": 12 }, - "end": { "line": 143, "column": 29 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 147, "column": 20 }, - "end": { "line": 147, "column": 51 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 147, "column": 43 }, - "end": { "line": 147, "column": 46 } - }, - { - "start": { "line": 147, "column": 49 }, - "end": { "line": 147, "column": 51 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 240, "column": 4 }, - "end": { "line": 253, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 240, "column": 4 }, - "end": { "line": 253, "column": null } - } - ] - }, - "12": { - "loc": { - "start": { "line": 244, "column": 8 }, - "end": { "line": 249, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 244, "column": 8 }, - "end": { "line": 249, "column": null } - } - ] - }, - "13": { - "loc": { - "start": { "line": 256, "column": 4 }, - "end": { "line": 275, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 258, "column": 6 }, - "end": { "line": 260, "column": 31 } - }, - { - "start": { "line": 263, "column": 6 }, - "end": { "line": 265, "column": 58 } - }, - { - "start": { "line": 268, "column": 6 }, - "end": { "line": 274, "column": 50 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 281, "column": 11 }, - "end": { "line": 281, "column": 70 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 281, "column": 19 }, - "end": { "line": 281, "column": 53 } - }, - { - "start": { "line": 281, "column": 56 }, - "end": { "line": 281, "column": 70 } - } - ] - }, - "15": { - "loc": { - "start": { "line": 291, "column": 12 }, - "end": { "line": 291, "column": 48 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 291, "column": 36 }, - "end": { "line": 291, "column": 43 } - }, - { - "start": { "line": 291, "column": 46 }, - "end": { "line": 291, "column": 48 } - } - ] - }, - "16": { - "loc": { - "start": { "line": 360, "column": 18 }, - "end": { "line": 360, "column": 32 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 360, "column": 18 }, - "end": { "line": 360, "column": 24 } - }, - { - "start": { "line": 360, "column": 28 }, - "end": { "line": 360, "column": 32 } - } - ] - }, - "17": { - "loc": { - "start": { "line": 360, "column": 56 }, - "end": { "line": 360, "column": 116 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 360, "column": 69 }, - "end": { "line": 360, "column": 82 } - }, - { - "start": { "line": 360, "column": 85 }, - "end": { "line": 360, "column": 116 } - } - ] - }, - "18": { - "loc": { - "start": { "line": 397, "column": 21 }, - "end": { "line": 397, "column": 35 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 397, "column": 21 }, - "end": { "line": 397, "column": 27 } - }, - { - "start": { "line": 397, "column": 31 }, - "end": { "line": 397, "column": 35 } - } - ] - }, - "19": { - "loc": { - "start": { "line": 415, "column": 17 }, - "end": { "line": 415, "column": 30 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 415, "column": 17 }, - "end": { "line": 415, "column": 25 } - }, - { - "start": { "line": 415, "column": 29 }, - "end": { "line": 415, "column": 30 } - } - ] - }, - "20": { - "loc": { - "start": { "line": 437, "column": 18 }, - "end": { "line": 437, "column": 34 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 437, "column": 18 }, - "end": { "line": 437, "column": 28 } - }, - { - "start": { "line": 437, "column": 32 }, - "end": { "line": 437, "column": 34 } - } - ] - }, - "21": { - "loc": { - "start": { "line": 475, "column": 2 }, - "end": { "line": 484, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 475, "column": 2 }, - "end": { "line": 484, "column": null } - } - ] - }, - "22": { - "loc": { - "start": { "line": 477, "column": 4 }, - "end": { "line": 480, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 477, "column": 4 }, - "end": { "line": 480, "column": null } - } - ] - }, - "23": { - "loc": { - "start": { "line": 520, "column": 15 }, - "end": { "line": 524, "column": 54 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 522, "column": 8 }, - "end": { "line": 522, "column": 16 } - }, - { - "start": { "line": 524, "column": 8 }, - "end": { "line": 524, "column": 54 } - } - ] - }, - "24": { - "loc": { - "start": { "line": 540, "column": 15 }, - "end": { "line": 544, "column": 54 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 542, "column": 8 }, - "end": { "line": 542, "column": 16 } - }, - { - "start": { "line": 544, "column": 8 }, - "end": { "line": 544, "column": 54 } - } - ] - }, - "25": { - "loc": { - "start": { "line": 588, "column": 4 }, - "end": { "line": 634, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 588, "column": 4 }, - "end": { "line": 634, "column": null } - }, - { - "start": { "line": 592, "column": 11 }, - "end": { "line": 634, "column": null } - } - ] - }, - "26": { - "loc": { - "start": { "line": 614, "column": 8 }, - "end": { "line": 623, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 614, "column": 8 }, - "end": { "line": 623, "column": null } - }, - { - "start": { "line": 620, "column": 15 }, - "end": { "line": 623, "column": null } - } - ] - }, - "27": { - "loc": { - "start": { "line": 668, "column": 4 }, - "end": { "line": 673, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 668, "column": 4 }, - "end": { "line": 673, "column": null } - } - ] - }, - "28": { - "loc": { - "start": { "line": 668, "column": 8 }, - "end": { "line": 668, "column": 73 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 668, "column": 8 }, - "end": { "line": 668, "column": 14 } - }, - { - "start": { "line": 668, "column": 18 }, - "end": { "line": 668, "column": 28 } - }, - { - "start": { "line": 668, "column": 33 }, - "end": { "line": 668, "column": 72 } - } - ] - }, - "29": { - "loc": { - "start": { "line": 681, "column": 4 }, - "end": { "line": 681, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 681, "column": 4 }, - "end": { "line": 681, "column": null } - } - ] - }, - "30": { - "loc": { - "start": { "line": 684, "column": 4 }, - "end": { "line": 689, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 684, "column": 4 }, - "end": { "line": 689, "column": null } - } - ] - }, - "31": { - "loc": { - "start": { "line": 727, "column": 4 }, - "end": { "line": 841, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 727, "column": 4 }, - "end": { "line": 841, "column": null } - }, - { - "start": { "line": 836, "column": 11 }, - "end": { "line": 841, "column": null } - } - ] - }, - "32": { - "loc": { - "start": { "line": 739, "column": 6 }, - "end": { "line": 742, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 739, "column": 6 }, - "end": { "line": 742, "column": null } - } - ] - }, - "33": { - "loc": { - "start": { "line": 744, "column": 6 }, - "end": { "line": 757, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 744, "column": 6 }, - "end": { "line": 757, "column": null } - }, - { - "start": { "line": 752, "column": 13 }, - "end": { "line": 757, "column": null } - } - ] - }, - "34": { - "loc": { - "start": { "line": 759, "column": 6 }, - "end": { "line": 762, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 759, "column": 6 }, - "end": { "line": 762, "column": null } - } - ] - }, - "35": { - "loc": { - "start": { "line": 766, "column": 6 }, - "end": { "line": 777, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 766, "column": 6 }, - "end": { "line": 777, "column": null } - }, - { - "start": { "line": 772, "column": 13 }, - "end": { "line": 777, "column": null } - } - ] - }, - "36": { - "loc": { - "start": { "line": 791, "column": 8 }, - "end": { "line": 794, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 791, "column": 8 }, - "end": { "line": 794, "column": null } - } - ] - }, - "37": { - "loc": { - "start": { "line": 796, "column": 8 }, - "end": { "line": 809, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 796, "column": 8 }, - "end": { "line": 809, "column": null } - }, - { - "start": { "line": 804, "column": 15 }, - "end": { "line": 809, "column": null } - } - ] - }, - "38": { - "loc": { - "start": { "line": 811, "column": 8 }, - "end": { "line": 814, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 811, "column": 8 }, - "end": { "line": 814, "column": null } - } - ] - }, - "39": { - "loc": { - "start": { "line": 818, "column": 8 }, - "end": { "line": 829, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 818, "column": 8 }, - "end": { "line": 829, "column": null } - }, - { - "start": { "line": 824, "column": 15 }, - "end": { "line": 829, "column": null } - } - ] - }, - "40": { - "loc": { - "start": { "line": 854, "column": 4 }, - "end": { "line": 865, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 854, "column": 4 }, - "end": { "line": 865, "column": null } - }, - { - "start": { "line": 860, "column": 11 }, - "end": { "line": 865, "column": null } - } - ] - }, - "41": { - "loc": { - "start": { "line": 864, "column": 6 }, - "end": { "line": 864, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 864, "column": 6 }, - "end": { "line": 864, "column": null } - } - ] - }, - "42": { - "loc": { - "start": { "line": 878, "column": 4 }, - "end": { "line": 889, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 878, "column": 4 }, - "end": { "line": 889, "column": null } - }, - { - "start": { "line": 884, "column": 11 }, - "end": { "line": 889, "column": null } - } - ] - }, - "43": { - "loc": { - "start": { "line": 888, "column": 6 }, - "end": { "line": 888, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 888, "column": 6 }, - "end": { "line": 888, "column": null } - } - ] - }, - "44": { - "loc": { - "start": { "line": 904, "column": 4 }, - "end": { "line": 922, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 904, "column": 4 }, - "end": { "line": 922, "column": null } - } - ] - }, - "45": { - "loc": { - "start": { "line": 908, "column": 6 }, - "end": { "line": 921, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 908, "column": 6 }, - "end": { "line": 921, "column": null } - } - ] - }, - "46": { - "loc": { - "start": { "line": 912, "column": 8 }, - "end": { "line": 920, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 912, "column": 8 }, - "end": { "line": 920, "column": null } - } - ] - }, - "47": { - "loc": { - "start": { "line": 916, "column": 10 }, - "end": { "line": 919, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 916, "column": 10 }, - "end": { "line": 919, "column": null } - } - ] - }, - "48": { - "loc": { - "start": { "line": 937, "column": 4 }, - "end": { "line": 948, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 937, "column": 4 }, - "end": { "line": 948, "column": null } - }, - { - "start": { "line": 943, "column": 11 }, - "end": { "line": 948, "column": null } - } - ] - }, - "49": { - "loc": { - "start": { "line": 947, "column": 6 }, - "end": { "line": 947, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 947, "column": 6 }, - "end": { "line": 947, "column": null } - } - ] - }, - "50": { - "loc": { - "start": { "line": 950, "column": 4 }, - "end": { "line": 998, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 950, "column": 4 }, - "end": { "line": 998, "column": null } - }, - { - "start": { "line": 993, "column": 11 }, - "end": { "line": 998, "column": null } - } - ] - }, - "51": { - "loc": { - "start": { "line": 956, "column": 6 }, - "end": { "line": 991, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 956, "column": 6 }, - "end": { "line": 991, "column": null } - }, - { - "start": { "line": 986, "column": 13 }, - "end": { "line": 991, "column": null } - } - ] - }, - "52": { - "loc": { - "start": { "line": 960, "column": 8 }, - "end": { "line": 971, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 960, "column": 8 }, - "end": { "line": 971, "column": null } - }, - { - "start": { "line": 966, "column": 15 }, - "end": { "line": 971, "column": null } - } - ] - }, - "53": { - "loc": { - "start": { "line": 970, "column": 10 }, - "end": { "line": 970, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 970, "column": 10 }, - "end": { "line": 970, "column": null } - } - ] - }, - "54": { - "loc": { - "start": { "line": 973, "column": 8 }, - "end": { "line": 984, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 973, "column": 8 }, - "end": { "line": 984, "column": null } - }, - { - "start": { "line": 979, "column": 15 }, - "end": { "line": 984, "column": null } - } - ] - }, - "55": { - "loc": { - "start": { "line": 1015, "column": 4 }, - "end": { "line": 1018, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1015, "column": 4 }, - "end": { "line": 1018, "column": null } - } - ] - }, - "56": { - "loc": { - "start": { "line": 1024, "column": 4 }, - "end": { "line": 1035, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1024, "column": 4 }, - "end": { "line": 1035, "column": null } - }, - { - "start": { "line": 1030, "column": 11 }, - "end": { "line": 1035, "column": null } - } - ] - }, - "57": { - "loc": { - "start": { "line": 1052, "column": 4 }, - "end": { "line": 1055, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1052, "column": 4 }, - "end": { "line": 1055, "column": null } - } - ] - }, - "58": { - "loc": { - "start": { "line": 1059, "column": 4 }, - "end": { "line": 1114, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1059, "column": 4 }, - "end": { "line": 1114, "column": null } - }, - { - "start": { "line": 1109, "column": 11 }, - "end": { "line": 1114, "column": null } - } - ] - }, - "59": { - "loc": { - "start": { "line": 1063, "column": 6 }, - "end": { "line": 1074, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1063, "column": 6 }, - "end": { "line": 1074, "column": null } - }, - { - "start": { "line": 1069, "column": 13 }, - "end": { "line": 1074, "column": null } - } - ] - }, - "60": { - "loc": { - "start": { "line": 1073, "column": 8 }, - "end": { "line": 1073, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1073, "column": 8 }, - "end": { "line": 1073, "column": null } - } - ] - }, - "61": { - "loc": { - "start": { "line": 1076, "column": 6 }, - "end": { "line": 1098, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1076, "column": 6 }, - "end": { "line": 1098, "column": null } - }, - { - "start": { "line": 1093, "column": 13 }, - "end": { "line": 1098, "column": null } - } - ] - }, - "62": { - "loc": { - "start": { "line": 1080, "column": 8 }, - "end": { "line": 1091, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1080, "column": 8 }, - "end": { "line": 1091, "column": null } - }, - { - "start": { "line": 1086, "column": 15 }, - "end": { "line": 1091, "column": null } - } - ] - }, - "63": { - "loc": { - "start": { "line": 1100, "column": 6 }, - "end": { "line": 1103, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1100, "column": 6 }, - "end": { "line": 1103, "column": null } - } - ] - }, - "64": { - "loc": { - "start": { "line": 1129, "column": 4 }, - "end": { "line": 1140, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1129, "column": 4 }, - "end": { "line": 1140, "column": null } - }, - { - "start": { "line": 1135, "column": 11 }, - "end": { "line": 1140, "column": null } - } - ] - }, - "65": { - "loc": { - "start": { "line": 1139, "column": 6 }, - "end": { "line": 1139, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1139, "column": 6 }, - "end": { "line": 1139, "column": null } - } - ] - }, - "66": { - "loc": { - "start": { "line": 1142, "column": 4 }, - "end": { "line": 1166, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1142, "column": 4 }, - "end": { "line": 1166, "column": null } - }, - { - "start": { "line": 1161, "column": 11 }, - "end": { "line": 1166, "column": null } - } - ] - }, - "67": { - "loc": { - "start": { "line": 1148, "column": 6 }, - "end": { "line": 1159, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1148, "column": 6 }, - "end": { "line": 1159, "column": null } - }, - { - "start": { "line": 1154, "column": 13 }, - "end": { "line": 1159, "column": null } - } - ] - }, - "68": { - "loc": { - "start": { "line": 1181, "column": 4 }, - "end": { "line": 1192, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1181, "column": 4 }, - "end": { "line": 1192, "column": null } - }, - { - "start": { "line": 1187, "column": 11 }, - "end": { "line": 1192, "column": null } - } - ] - }, - "69": { - "loc": { - "start": { "line": 1191, "column": 6 }, - "end": { "line": 1191, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1191, "column": 6 }, - "end": { "line": 1191, "column": null } - } - ] - }, - "70": { - "loc": { - "start": { "line": 1194, "column": 4 }, - "end": { "line": 1199, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1194, "column": 4 }, - "end": { "line": 1199, "column": null } - } - ] - }, - "71": { - "loc": { - "start": { "line": 1216, "column": 4 }, - "end": { "line": 1227, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1216, "column": 4 }, - "end": { "line": 1227, "column": null } - }, - { - "start": { "line": 1222, "column": 11 }, - "end": { "line": 1227, "column": null } - } - ] - }, - "72": { - "loc": { - "start": { "line": 1226, "column": 6 }, - "end": { "line": 1226, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1226, "column": 6 }, - "end": { "line": 1226, "column": null } - } - ] - }, - "73": { - "loc": { - "start": { "line": 1229, "column": 4 }, - "end": { "line": 1234, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1229, "column": 4 }, - "end": { "line": 1234, "column": null } - } - ] - }, - "74": { - "loc": { - "start": { "line": 1251, "column": 4 }, - "end": { "line": 1262, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1251, "column": 4 }, - "end": { "line": 1262, "column": null } - }, - { - "start": { "line": 1257, "column": 11 }, - "end": { "line": 1262, "column": null } - } - ] - }, - "75": { - "loc": { - "start": { "line": 1261, "column": 6 }, - "end": { "line": 1261, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1261, "column": 6 }, - "end": { "line": 1261, "column": null } - } - ] - }, - "76": { - "loc": { - "start": { "line": 1264, "column": 4 }, - "end": { "line": 1269, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1264, "column": 4 }, - "end": { "line": 1269, "column": null } - } - ] - }, - "77": { - "loc": { - "start": { "line": 1273, "column": 4 }, - "end": { "line": 1460, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1273, "column": 4 }, - "end": { "line": 1460, "column": null } - } - ] - }, - "78": { - "loc": { - "start": { "line": 1277, "column": 6 }, - "end": { "line": 1288, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1277, "column": 6 }, - "end": { "line": 1288, "column": null } - }, - { - "start": { "line": 1283, "column": 13 }, - "end": { "line": 1288, "column": null } - } - ] - }, - "79": { - "loc": { - "start": { "line": 1287, "column": 8 }, - "end": { "line": 1287, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1287, "column": 8 }, - "end": { "line": 1287, "column": null } - } - ] - }, - "80": { - "loc": { - "start": { "line": 1290, "column": 6 }, - "end": { "line": 1295, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1290, "column": 6 }, - "end": { "line": 1295, "column": null } - } - ] - }, - "81": { - "loc": { - "start": { "line": 1299, "column": 6 }, - "end": { "line": 1459, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1299, "column": 6 }, - "end": { "line": 1459, "column": null } - } - ] - }, - "82": { - "loc": { - "start": { "line": 1303, "column": 8 }, - "end": { "line": 1314, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1303, "column": 8 }, - "end": { "line": 1314, "column": null } - }, - { - "start": { "line": 1309, "column": 15 }, - "end": { "line": 1314, "column": null } - } - ] - }, - "83": { - "loc": { - "start": { "line": 1313, "column": 10 }, - "end": { "line": 1313, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1313, "column": 10 }, - "end": { "line": 1313, "column": null } - } - ] - }, - "84": { - "loc": { - "start": { "line": 1316, "column": 8 }, - "end": { "line": 1321, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1316, "column": 8 }, - "end": { "line": 1321, "column": null } - } - ] - }, - "85": { - "loc": { - "start": { "line": 1325, "column": 8 }, - "end": { "line": 1458, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1325, "column": 8 }, - "end": { "line": 1458, "column": null } - } - ] - }, - "86": { - "loc": { - "start": { "line": 1329, "column": 10 }, - "end": { "line": 1340, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1329, "column": 10 }, - "end": { "line": 1340, "column": null } - }, - { - "start": { "line": 1335, "column": 17 }, - "end": { "line": 1340, "column": null } - } - ] - }, - "87": { - "loc": { - "start": { "line": 1339, "column": 12 }, - "end": { "line": 1339, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1339, "column": 12 }, - "end": { "line": 1339, "column": null } - } - ] - }, - "88": { - "loc": { - "start": { "line": 1342, "column": 10 }, - "end": { "line": 1347, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1342, "column": 10 }, - "end": { "line": 1347, "column": null } - } - ] - }, - "89": { - "loc": { - "start": { "line": 1351, "column": 10 }, - "end": { "line": 1457, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1351, "column": 10 }, - "end": { "line": 1457, "column": null } - } - ] - }, - "90": { - "loc": { - "start": { "line": 1355, "column": 12 }, - "end": { "line": 1366, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1355, "column": 12 }, - "end": { "line": 1366, "column": null } - }, - { - "start": { "line": 1361, "column": 19 }, - "end": { "line": 1366, "column": null } - } - ] - }, - "91": { - "loc": { - "start": { "line": 1365, "column": 14 }, - "end": { "line": 1365, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1365, "column": 14 }, - "end": { "line": 1365, "column": null } - } - ] - }, - "92": { - "loc": { - "start": { "line": 1368, "column": 12 }, - "end": { "line": 1373, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1368, "column": 12 }, - "end": { "line": 1373, "column": null } - } - ] - }, - "93": { - "loc": { - "start": { "line": 1377, "column": 12 }, - "end": { "line": 1456, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1377, "column": 12 }, - "end": { "line": 1456, "column": null } - } - ] - }, - "94": { - "loc": { - "start": { "line": 1381, "column": 14 }, - "end": { "line": 1392, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1381, "column": 14 }, - "end": { "line": 1392, "column": null } - }, - { - "start": { "line": 1387, "column": 21 }, - "end": { "line": 1392, "column": null } - } - ] - }, - "95": { - "loc": { - "start": { "line": 1391, "column": 16 }, - "end": { "line": 1391, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1391, "column": 16 }, - "end": { "line": 1391, "column": null } - } - ] - }, - "96": { - "loc": { - "start": { "line": 1394, "column": 14 }, - "end": { "line": 1399, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1394, "column": 14 }, - "end": { "line": 1399, "column": null } - } - ] - }, - "97": { - "loc": { - "start": { "line": 1403, "column": 14 }, - "end": { "line": 1455, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1403, "column": 14 }, - "end": { "line": 1455, "column": null } - } - ] - }, - "98": { - "loc": { - "start": { "line": 1407, "column": 16 }, - "end": { "line": 1418, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1407, "column": 16 }, - "end": { "line": 1418, "column": null } - }, - { - "start": { "line": 1413, "column": 23 }, - "end": { "line": 1418, "column": null } - } - ] - }, - "99": { - "loc": { - "start": { "line": 1417, "column": 18 }, - "end": { "line": 1417, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1417, "column": 18 }, - "end": { "line": 1417, "column": null } - } - ] - }, - "100": { - "loc": { - "start": { "line": 1420, "column": 16 }, - "end": { "line": 1425, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1420, "column": 16 }, - "end": { "line": 1425, "column": null } - } - ] - }, - "101": { - "loc": { - "start": { "line": 1429, "column": 16 }, - "end": { "line": 1454, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1429, "column": 16 }, - "end": { "line": 1454, "column": null } - } - ] - }, - "102": { - "loc": { - "start": { "line": 1433, "column": 18 }, - "end": { "line": 1444, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1433, "column": 18 }, - "end": { "line": 1444, "column": null } - }, - { - "start": { "line": 1439, "column": 25 }, - "end": { "line": 1444, "column": null } - } - ] - }, - "103": { - "loc": { - "start": { "line": 1443, "column": 20 }, - "end": { "line": 1443, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1443, "column": 20 }, - "end": { "line": 1443, "column": null } - } - ] - }, - "104": { - "loc": { - "start": { "line": 1446, "column": 18 }, - "end": { "line": 1451, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1446, "column": 18 }, - "end": { "line": 1451, "column": null } - } - ] - }, - "105": { - "loc": { - "start": { "line": 1477, "column": 4 }, - "end": { "line": 1480, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1477, "column": 4 }, - "end": { "line": 1480, "column": null } - } - ] - }, - "106": { - "loc": { - "start": { "line": 1484, "column": 4 }, - "end": { "line": 1528, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1484, "column": 4 }, - "end": { "line": 1528, "column": null } - }, - { - "start": { "line": 1523, "column": 11 }, - "end": { "line": 1528, "column": null } - } - ] - }, - "107": { - "loc": { - "start": { "line": 1486, "column": 6 }, - "end": { "line": 1497, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1486, "column": 6 }, - "end": { "line": 1497, "column": null } - }, - { - "start": { "line": 1492, "column": 13 }, - "end": { "line": 1497, "column": null } - } - ] - }, - "108": { - "loc": { - "start": { "line": 1496, "column": 8 }, - "end": { "line": 1496, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1496, "column": 8 }, - "end": { "line": 1496, "column": null } - } - ] - }, - "109": { - "loc": { - "start": { "line": 1499, "column": 6 }, - "end": { "line": 1521, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1499, "column": 6 }, - "end": { "line": 1521, "column": null } - }, - { - "start": { "line": 1516, "column": 13 }, - "end": { "line": 1521, "column": null } - } - ] - }, - "110": { - "loc": { - "start": { "line": 1503, "column": 8 }, - "end": { "line": 1514, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1503, "column": 8 }, - "end": { "line": 1514, "column": null } - }, - { - "start": { "line": 1509, "column": 15 }, - "end": { "line": 1514, "column": null } - } - ] - }, - "111": { - "loc": { - "start": { "line": 1545, "column": 4 }, - "end": { "line": 1666, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1545, "column": 4 }, - "end": { "line": 1666, "column": null } - }, - { - "start": { "line": 1661, "column": 11 }, - "end": { "line": 1666, "column": null } - } - ] - }, - "112": { - "loc": { - "start": { "line": 1547, "column": 6 }, - "end": { "line": 1558, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1547, "column": 6 }, - "end": { "line": 1558, "column": null } - }, - { - "start": { "line": 1553, "column": 13 }, - "end": { "line": 1558, "column": null } - } - ] - }, - "113": { - "loc": { - "start": { "line": 1557, "column": 8 }, - "end": { "line": 1557, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1557, "column": 8 }, - "end": { "line": 1557, "column": null } - } - ] - }, - "114": { - "loc": { - "start": { "line": 1560, "column": 6 }, - "end": { "line": 1659, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1560, "column": 6 }, - "end": { "line": 1659, "column": null } - }, - { - "start": { "line": 1654, "column": 13 }, - "end": { "line": 1659, "column": null } - } - ] - }, - "115": { - "loc": { - "start": { "line": 1564, "column": 8 }, - "end": { "line": 1652, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1564, "column": 8 }, - "end": { "line": 1652, "column": null } - }, - { - "start": { "line": 1647, "column": 15 }, - "end": { "line": 1652, "column": null } - } - ] - }, - "116": { - "loc": { - "start": { "line": 1566, "column": 10 }, - "end": { "line": 1577, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1566, "column": 10 }, - "end": { "line": 1577, "column": null } - }, - { - "start": { "line": 1572, "column": 17 }, - "end": { "line": 1577, "column": null } - } - ] - }, - "117": { - "loc": { - "start": { "line": 1576, "column": 12 }, - "end": { "line": 1576, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1576, "column": 12 }, - "end": { "line": 1576, "column": null } - } - ] - }, - "118": { - "loc": { - "start": { "line": 1579, "column": 10 }, - "end": { "line": 1645, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1579, "column": 10 }, - "end": { "line": 1645, "column": null } - }, - { - "start": { "line": 1640, "column": 17 }, - "end": { "line": 1645, "column": null } - } - ] - }, - "119": { - "loc": { - "start": { "line": 1583, "column": 12 }, - "end": { "line": 1638, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1583, "column": 12 }, - "end": { "line": 1638, "column": null } - }, - { - "start": { "line": 1633, "column": 19 }, - "end": { "line": 1638, "column": null } - } - ] - }, - "120": { - "loc": { - "start": { "line": 1587, "column": 14 }, - "end": { "line": 1598, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1587, "column": 14 }, - "end": { "line": 1598, "column": null } - }, - { - "start": { "line": 1593, "column": 21 }, - "end": { "line": 1598, "column": null } - } - ] - }, - "121": { - "loc": { - "start": { "line": 1597, "column": 16 }, - "end": { "line": 1597, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1597, "column": 16 }, - "end": { "line": 1597, "column": null } - } - ] - }, - "122": { - "loc": { - "start": { "line": 1600, "column": 14 }, - "end": { "line": 1622, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1600, "column": 14 }, - "end": { "line": 1622, "column": null } - }, - { - "start": { "line": 1617, "column": 21 }, - "end": { "line": 1622, "column": null } - } - ] - }, - "123": { - "loc": { - "start": { "line": 1604, "column": 16 }, - "end": { "line": 1615, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1604, "column": 16 }, - "end": { "line": 1615, "column": null } - }, - { - "start": { "line": 1610, "column": 23 }, - "end": { "line": 1615, "column": null } - } - ] - }, - "124": { - "loc": { - "start": { "line": 1624, "column": 14 }, - "end": { "line": 1627, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1624, "column": 14 }, - "end": { "line": 1627, "column": null } - } - ] - }, - "125": { - "loc": { - "start": { "line": 1681, "column": 4 }, - "end": { "line": 1692, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1681, "column": 4 }, - "end": { "line": 1692, "column": null } - }, - { - "start": { "line": 1687, "column": 11 }, - "end": { "line": 1692, "column": null } - } - ] - }, - "126": { - "loc": { - "start": { "line": 1691, "column": 6 }, - "end": { "line": 1691, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1691, "column": 6 }, - "end": { "line": 1691, "column": null } - } - ] - }, - "127": { - "loc": { - "start": { "line": 1694, "column": 4 }, - "end": { "line": 1738, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1694, "column": 4 }, - "end": { "line": 1738, "column": null } - }, - { - "start": { "line": 1733, "column": 11 }, - "end": { "line": 1738, "column": null } - } - ] - }, - "128": { - "loc": { - "start": { "line": 1698, "column": 6 }, - "end": { "line": 1731, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1698, "column": 6 }, - "end": { "line": 1731, "column": null } - }, - { - "start": { "line": 1726, "column": 13 }, - "end": { "line": 1731, "column": null } - } - ] - }, - "129": { - "loc": { - "start": { "line": 1700, "column": 8 }, - "end": { "line": 1711, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1700, "column": 8 }, - "end": { "line": 1711, "column": null } - }, - { - "start": { "line": 1706, "column": 15 }, - "end": { "line": 1711, "column": null } - } - ] - }, - "130": { - "loc": { - "start": { "line": 1710, "column": 10 }, - "end": { "line": 1710, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1710, "column": 10 }, - "end": { "line": 1710, "column": null } - } - ] - }, - "131": { - "loc": { - "start": { "line": 1713, "column": 8 }, - "end": { "line": 1724, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1713, "column": 8 }, - "end": { "line": 1724, "column": null } - }, - { - "start": { "line": 1719, "column": 15 }, - "end": { "line": 1724, "column": null } - } - ] - }, - "132": { - "loc": { - "start": { "line": 1755, "column": 4 }, - "end": { "line": 1766, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1755, "column": 4 }, - "end": { "line": 1766, "column": null } - }, - { - "start": { "line": 1761, "column": 11 }, - "end": { "line": 1766, "column": null } - } - ] - }, - "133": { - "loc": { - "start": { "line": 1765, "column": 6 }, - "end": { "line": 1765, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1765, "column": 6 }, - "end": { "line": 1765, "column": null } - } - ] - }, - "134": { - "loc": { - "start": { "line": 1768, "column": 4 }, - "end": { "line": 1791, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1768, "column": 4 }, - "end": { "line": 1791, "column": null } - }, - { - "start": { "line": 1788, "column": 11 }, - "end": { "line": 1791, "column": null } - } - ] - }, - "135": { - "loc": { - "start": { "line": 1774, "column": 8 }, - "end": { "line": 1785, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1774, "column": 8 }, - "end": { "line": 1785, "column": null } - }, - { - "start": { "line": 1780, "column": 15 }, - "end": { "line": 1785, "column": null } - } - ] - }, - "136": { - "loc": { - "start": { "line": 1784, "column": 10 }, - "end": { "line": 1784, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1784, "column": 10 }, - "end": { "line": 1784, "column": null } - } - ] - }, - "137": { - "loc": { - "start": { "line": 1793, "column": 4 }, - "end": { "line": 1798, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1793, "column": 4 }, - "end": { "line": 1798, "column": null } - } - ] - }, - "138": { - "loc": { - "start": { "line": 1817, "column": 4 }, - "end": { "line": 1828, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1817, "column": 4 }, - "end": { "line": 1828, "column": null } - }, - { - "start": { "line": 1823, "column": 11 }, - "end": { "line": 1828, "column": null } - } - ] - }, - "139": { - "loc": { - "start": { "line": 1827, "column": 6 }, - "end": { "line": 1827, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1827, "column": 6 }, - "end": { "line": 1827, "column": null } - } - ] - }, - "140": { - "loc": { - "start": { "line": 1830, "column": 4 }, - "end": { "line": 1853, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1830, "column": 4 }, - "end": { "line": 1853, "column": null } - }, - { - "start": { "line": 1850, "column": 11 }, - "end": { "line": 1853, "column": null } - } - ] - }, - "141": { - "loc": { - "start": { "line": 1836, "column": 8 }, - "end": { "line": 1847, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1836, "column": 8 }, - "end": { "line": 1847, "column": null } - }, - { - "start": { "line": 1842, "column": 15 }, - "end": { "line": 1847, "column": null } - } - ] - }, - "142": { - "loc": { - "start": { "line": 1846, "column": 10 }, - "end": { "line": 1846, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1846, "column": 10 }, - "end": { "line": 1846, "column": null } - } - ] - }, - "143": { - "loc": { - "start": { "line": 1855, "column": 4 }, - "end": { "line": 1860, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1855, "column": 4 }, - "end": { "line": 1860, "column": null } - } - ] - }, - "144": { - "loc": { - "start": { "line": 1879, "column": 4 }, - "end": { "line": 1897, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1879, "column": 4 }, - "end": { "line": 1897, "column": null } - }, - { - "start": { "line": 1892, "column": 11 }, - "end": { "line": 1897, "column": null } - } - ] - }, - "145": { - "loc": { - "start": { "line": 1883, "column": 6 }, - "end": { "line": 1886, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1883, "column": 6 }, - "end": { "line": 1886, "column": null } - } - ] - }, - "146": { - "loc": { - "start": { "line": 1912, "column": 4 }, - "end": { "line": 1923, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1912, "column": 4 }, - "end": { "line": 1923, "column": null } - }, - { - "start": { "line": 1918, "column": 11 }, - "end": { "line": 1923, "column": null } - } - ] - }, - "147": { - "loc": { - "start": { "line": 1922, "column": 6 }, - "end": { "line": 1922, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1922, "column": 6 }, - "end": { "line": 1922, "column": null } - } - ] - }, - "148": { - "loc": { - "start": { "line": 1925, "column": 4 }, - "end": { "line": 2032, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1925, "column": 4 }, - "end": { "line": 2032, "column": null } - }, - { - "start": { "line": 2027, "column": 11 }, - "end": { "line": 2032, "column": null } - } - ] - }, - "149": { - "loc": { - "start": { "line": 1929, "column": 6 }, - "end": { "line": 2025, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1929, "column": 6 }, - "end": { "line": 2025, "column": null } - }, - { - "start": { "line": 2020, "column": 13 }, - "end": { "line": 2025, "column": null } - } - ] - }, - "150": { - "loc": { - "start": { "line": 1935, "column": 8 }, - "end": { "line": 1946, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1935, "column": 8 }, - "end": { "line": 1946, "column": null } - }, - { - "start": { "line": 1941, "column": 15 }, - "end": { "line": 1946, "column": null } - } - ] - }, - "151": { - "loc": { - "start": { "line": 1945, "column": 10 }, - "end": { "line": 1945, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1945, "column": 10 }, - "end": { "line": 1945, "column": null } - } - ] - }, - "152": { - "loc": { - "start": { "line": 1948, "column": 8 }, - "end": { "line": 1970, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1948, "column": 8 }, - "end": { "line": 1970, "column": null } - }, - { - "start": { "line": 1965, "column": 15 }, - "end": { "line": 1970, "column": null } - } - ] - }, - "153": { - "loc": { - "start": { "line": 1952, "column": 10 }, - "end": { "line": 1963, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1952, "column": 10 }, - "end": { "line": 1963, "column": null } - }, - { - "start": { "line": 1958, "column": 17 }, - "end": { "line": 1963, "column": null } - } - ] - }, - "154": { - "loc": { - "start": { "line": 1978, "column": 10 }, - "end": { "line": 1989, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1978, "column": 10 }, - "end": { "line": 1989, "column": null } - }, - { - "start": { "line": 1984, "column": 17 }, - "end": { "line": 1989, "column": null } - } - ] - }, - "155": { - "loc": { - "start": { "line": 1988, "column": 12 }, - "end": { "line": 1988, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1988, "column": 12 }, - "end": { "line": 1988, "column": null } - } - ] - }, - "156": { - "loc": { - "start": { "line": 1991, "column": 10 }, - "end": { "line": 2013, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1991, "column": 10 }, - "end": { "line": 2013, "column": null } - }, - { - "start": { "line": 2008, "column": 17 }, - "end": { "line": 2013, "column": null } - } - ] - }, - "157": { - "loc": { - "start": { "line": 1995, "column": 12 }, - "end": { "line": 2006, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 1995, "column": 12 }, - "end": { "line": 2006, "column": null } - }, - { - "start": { "line": 2001, "column": 19 }, - "end": { "line": 2006, "column": null } - } - ] - }, - "158": { - "loc": { - "start": { "line": 2047, "column": 4 }, - "end": { "line": 2058, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2047, "column": 4 }, - "end": { "line": 2058, "column": null } - }, - { - "start": { "line": 2053, "column": 11 }, - "end": { "line": 2058, "column": null } - } - ] - }, - "159": { - "loc": { - "start": { "line": 2057, "column": 6 }, - "end": { "line": 2057, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2057, "column": 6 }, - "end": { "line": 2057, "column": null } - } - ] - }, - "160": { - "loc": { - "start": { "line": 2060, "column": 4 }, - "end": { "line": 2063, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2060, "column": 4 }, - "end": { "line": 2063, "column": null } - } - ] - }, - "161": { - "loc": { - "start": { "line": 2067, "column": 4 }, - "end": { "line": 2070, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2067, "column": 4 }, - "end": { "line": 2070, "column": null } - } - ] - }, - "162": { - "loc": { - "start": { "line": 2072, "column": 4 }, - "end": { "line": 2083, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2072, "column": 4 }, - "end": { "line": 2083, "column": null } - }, - { - "start": { "line": 2078, "column": 11 }, - "end": { "line": 2083, "column": null } - } - ] - }, - "163": { - "loc": { - "start": { "line": 2100, "column": 4 }, - "end": { "line": 2196, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2100, "column": 4 }, - "end": { "line": 2196, "column": null } - }, - { - "start": { "line": 2191, "column": 11 }, - "end": { "line": 2196, "column": null } - } - ] - }, - "164": { - "loc": { - "start": { "line": 2106, "column": 6 }, - "end": { "line": 2117, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2106, "column": 6 }, - "end": { "line": 2117, "column": null } - }, - { - "start": { "line": 2112, "column": 13 }, - "end": { "line": 2117, "column": null } - } - ] - }, - "165": { - "loc": { - "start": { "line": 2116, "column": 8 }, - "end": { "line": 2116, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2116, "column": 8 }, - "end": { "line": 2116, "column": null } - } - ] - }, - "166": { - "loc": { - "start": { "line": 2119, "column": 6 }, - "end": { "line": 2141, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2119, "column": 6 }, - "end": { "line": 2141, "column": null } - }, - { - "start": { "line": 2136, "column": 13 }, - "end": { "line": 2141, "column": null } - } - ] - }, - "167": { - "loc": { - "start": { "line": 2123, "column": 8 }, - "end": { "line": 2134, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2123, "column": 8 }, - "end": { "line": 2134, "column": null } - }, - { - "start": { "line": 2129, "column": 15 }, - "end": { "line": 2134, "column": null } - } - ] - }, - "168": { - "loc": { - "start": { "line": 2149, "column": 8 }, - "end": { "line": 2160, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2149, "column": 8 }, - "end": { "line": 2160, "column": null } - }, - { - "start": { "line": 2155, "column": 15 }, - "end": { "line": 2160, "column": null } - } - ] - }, - "169": { - "loc": { - "start": { "line": 2159, "column": 10 }, - "end": { "line": 2159, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2159, "column": 10 }, - "end": { "line": 2159, "column": null } - } - ] - }, - "170": { - "loc": { - "start": { "line": 2162, "column": 8 }, - "end": { "line": 2184, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2162, "column": 8 }, - "end": { "line": 2184, "column": null } - }, - { - "start": { "line": 2179, "column": 15 }, - "end": { "line": 2184, "column": null } - } - ] - }, - "171": { - "loc": { - "start": { "line": 2166, "column": 10 }, - "end": { "line": 2177, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2166, "column": 10 }, - "end": { "line": 2177, "column": null } - }, - { - "start": { "line": 2172, "column": 17 }, - "end": { "line": 2177, "column": null } - } - ] - }, - "172": { - "loc": { - "start": { "line": 2213, "column": 4 }, - "end": { "line": 2224, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2213, "column": 4 }, - "end": { "line": 2224, "column": null } - }, - { - "start": { "line": 2219, "column": 11 }, - "end": { "line": 2224, "column": null } - } - ] - }, - "173": { - "loc": { - "start": { "line": 2223, "column": 6 }, - "end": { "line": 2223, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2223, "column": 6 }, - "end": { "line": 2223, "column": null } - } - ] - }, - "174": { - "loc": { - "start": { "line": 2226, "column": 4 }, - "end": { "line": 2249, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2226, "column": 4 }, - "end": { "line": 2249, "column": null } - }, - { - "start": { "line": 2246, "column": 11 }, - "end": { "line": 2249, "column": null } - } - ] - }, - "175": { - "loc": { - "start": { "line": 2232, "column": 8 }, - "end": { "line": 2243, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2232, "column": 8 }, - "end": { "line": 2243, "column": null } - }, - { - "start": { "line": 2238, "column": 15 }, - "end": { "line": 2243, "column": null } - } - ] - }, - "176": { - "loc": { - "start": { "line": 2242, "column": 10 }, - "end": { "line": 2242, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2242, "column": 10 }, - "end": { "line": 2242, "column": null } - } - ] - }, - "177": { - "loc": { - "start": { "line": 2251, "column": 4 }, - "end": { "line": 2256, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2251, "column": 4 }, - "end": { "line": 2256, "column": null } - } - ] - }, - "178": { - "loc": { - "start": { "line": 2275, "column": 4 }, - "end": { "line": 2286, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2275, "column": 4 }, - "end": { "line": 2286, "column": null } - }, - { - "start": { "line": 2281, "column": 11 }, - "end": { "line": 2286, "column": null } - } - ] - }, - "179": { - "loc": { - "start": { "line": 2285, "column": 6 }, - "end": { "line": 2285, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2285, "column": 6 }, - "end": { "line": 2285, "column": null } - } - ] - }, - "180": { - "loc": { - "start": { "line": 2292, "column": 6 }, - "end": { "line": 2303, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2292, "column": 6 }, - "end": { "line": 2303, "column": null } - }, - { - "start": { "line": 2298, "column": 13 }, - "end": { "line": 2303, "column": null } - } - ] - }, - "181": { - "loc": { - "start": { "line": 2302, "column": 8 }, - "end": { "line": 2302, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2302, "column": 8 }, - "end": { "line": 2302, "column": null } - } - ] - }, - "182": { - "loc": { - "start": { "line": 2310, "column": 4 }, - "end": { "line": 2310, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2310, "column": 4 }, - "end": { "line": 2310, "column": null } - } - ] - }, - "183": { - "loc": { - "start": { "line": 2320, "column": 2 }, - "end": { "line": 2344, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2320, "column": 2 }, - "end": { "line": 2344, "column": null } - }, - { - "start": { "line": 2324, "column": 9 }, - "end": { "line": 2344, "column": null } - } - ] - }, - "184": { - "loc": { - "start": { "line": 2320, "column": 6 }, - "end": { "line": 2320, "column": 63 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 2320, "column": 6 }, - "end": { "line": 2320, "column": 31 } - }, - { - "start": { "line": 2320, "column": 35 }, - "end": { "line": 2320, "column": 63 } - } - ] - }, - "185": { - "loc": { - "start": { "line": 2326, "column": 4 }, - "end": { "line": 2329, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2326, "column": 4 }, - "end": { "line": 2329, "column": null } - } - ] - }, - "186": { - "loc": { - "start": { "line": 2326, "column": 8 }, - "end": { "line": 2326, "column": 63 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 2326, "column": 8 }, - "end": { "line": 2326, "column": 33 } - }, - { - "start": { "line": 2326, "column": 37 }, - "end": { "line": 2326, "column": 63 } - } - ] - }, - "187": { - "loc": { - "start": { "line": 2336, "column": 6 }, - "end": { "line": 2336, "column": 73 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 2336, "column": 38 }, - "end": { "line": 2336, "column": 66 } - }, - { - "start": { "line": 2336, "column": 69 }, - "end": { "line": 2336, "column": 73 } - } - ] - }, - "188": { - "loc": { - "start": { "line": 2338, "column": 6 }, - "end": { "line": 2342, "column": 61 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 2340, "column": 10 }, - "end": { "line": 2340, "column": 65 } - }, - { - "start": { "line": 2342, "column": 10 }, - "end": { "line": 2342, "column": 61 } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 6, - "3": 6, - "4": 3, - "5": 3, - "6": 3, - "7": 3, - "8": 3, - "9": 3, - "10": 6, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 6, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 6, - "38": 3, - "39": 2, - "40": 3, - "41": 3, - "42": 3, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 4, - "48": 0, - "49": 0, - "50": 6, - "51": 0, - "52": 0, - "53": 5, - "54": 3, - "55": 3, - "56": 3, - "57": 3, - "58": 2, - "59": 2, - "60": 2, - "61": 3, - "62": 3, - "63": 1, - "64": 2, - "65": 0, - "66": 3, - "67": 3, - "68": 127, - "69": 127, - "70": 127, - "71": 127, - "72": 127, - "73": 127, - "74": 127, - "75": 127, - "76": 127, - "77": 127, - "78": 127, - "79": 127, - "80": 127, - "81": 127, - "82": 127, - "83": 127, - "84": 127, - "85": 127, - "86": 127, - "87": 127, - "88": 127, - "89": 127, - "90": 127, - "91": 127, - "92": 127, - "93": 127, - "94": 127, - "95": 127, - "96": 127, - "97": 127, - "98": 127, - "99": 127, - "100": 127, - "101": 127, - "102": 127, - "103": 127, - "104": 127, - "105": 127, - "106": 127, - "107": 127, - "108": 127, - "109": 127, - "110": 127, - "111": 127, - "112": 127, - "113": 127, - "114": 127, - "115": 127, - "116": 127, - "117": 127, - "118": 127, - "119": 0, - "120": 127, - "121": 24, - "122": 127, - "123": 24, - "124": 127, - "125": 2, - "126": 127, - "127": 1, - "128": 127, - "129": 0, - "130": 127, - "131": 1, - "132": 127, - "133": 2, - "134": 127, - "135": 7, - "136": 127, - "137": 4, - "138": 127, - "139": 7, - "140": 127, - "141": 0, - "142": 127, - "143": 0, - "144": 127, - "145": 3, - "146": 127, - "147": 106, - "148": 127, - "149": 0, - "150": 127, - "151": 0, - "152": 127, - "153": 0, - "154": 127, - "155": 1, - "156": 127, - "157": 242, - "158": 127, - "159": 1, - "160": 1, - "161": 127, - "162": 2, - "163": 127, - "164": 242, - "165": 150, - "166": 127, - "167": 393, - "168": 127, - "169": 127, - "170": 127, - "171": 127, - "172": 127, - "173": 127, - "174": 127, - "175": 127, - "176": 0, - "177": 127, - "178": 394, - "179": 0, - "180": 0, - "181": 0, - "182": 0, - "183": 0, - "184": 0, - "185": 0, - "186": 2286, - "187": 508, - "188": 0, - "189": 0, - "190": 127, - "191": 6, - "192": 6, - "193": 3, - "194": 3, - "195": 3, - "196": 1, - "197": 3, - "198": 3, - "199": 3, - "200": 4, - "201": 0, - "202": 0, - "203": 4, - "204": 4, - "205": 3, - "206": 3, - "207": 3, - "208": 3, - "209": 3, - "210": 3, - "211": 0, - "212": 0, - "213": 3, - "214": 1542, - "215": 2, - "216": 1540, - "217": 438, - "218": 438, - "219": 1540, - "220": 0, - "221": 3, - "222": 18, - "223": 18, - "224": 18, - "225": 18, - "226": 18, - "227": 18, - "228": 18, - "229": 18, - "230": 18, - "231": 17, - "232": 18, - "233": 4, - "234": 4, - "235": 4, - "236": 14, - "237": 14, - "238": 18, - "239": 14, - "240": 18, - "241": 18, - "242": 4, - "243": 4, - "244": 14, - "245": 14, - "246": 18, - "247": 7, - "248": 7, - "249": 7, - "250": 7, - "251": 7, - "252": 7, - "253": 5, - "254": 7, - "255": 3, - "256": 3, - "257": 3, - "258": 4, - "259": 4, - "260": 7, - "261": 4, - "262": 7, - "263": 7, - "264": 3, - "265": 3, - "266": 4, - "267": 4, - "268": 18, - "269": 18, - "270": 0, - "271": 0, - "272": 18, - "273": 25, - "274": 3, - "275": 3, - "276": 22, - "277": 22, - "278": 22, - "279": 25, - "280": 22, - "281": 4, - "282": 4, - "283": 18, - "284": 18, - "285": 18, - "286": 22, - "287": 45, - "288": 45, - "289": 45, - "290": 45, - "291": 21, - "292": 21, - "293": 19, - "294": 19, - "295": 18, - "296": 45, - "297": 45, - "298": 45, - "299": 0, - "300": 0, - "301": 45, - "302": 45, - "303": 45, - "304": 45, - "305": 0, - "306": 0, - "307": 0, - "308": 0, - "309": 0, - "310": 0, - "311": 0, - "312": 0, - "313": 0, - "314": 0, - "315": 0, - "316": 0, - "317": 0, - "318": 0, - "319": 0, - "320": 0, - "321": 0, - "322": 45, - "323": 45, - "324": 45, - "325": 45, - "326": 45, - "327": 45, - "328": 21, - "329": 45, - "330": 45, - "331": 45, - "332": 24, - "333": 24, - "334": 21, - "335": 21, - "336": 45, - "337": 45, - "338": 45, - "339": 45, - "340": 45, - "341": 45, - "342": 45, - "343": 24, - "344": 24, - "345": 5, - "346": 5, - "347": 19, - "348": 19, - "349": 19, - "350": 24, - "351": 5, - "352": 5, - "353": 5, - "354": 5, - "355": 0, - "356": 0, - "357": 19, - "358": 19, - "359": 24, - "360": 19, - "361": 24, - "362": 24, - "363": 21, - "364": 21, - "365": 45, - "366": 21, - "367": 21, - "368": 2, - "369": 2, - "370": 19, - "371": 19, - "372": 19, - "373": 21, - "374": 2, - "375": 2, - "376": 2, - "377": 2, - "378": 2, - "379": 0, - "380": 0, - "381": 19, - "382": 19, - "383": 21, - "384": 19, - "385": 19, - "386": 1, - "387": 1, - "388": 18, - "389": 18, - "390": 18, - "391": 19, - "392": 1, - "393": 1, - "394": 19, - "395": 19, - "396": 18, - "397": 18, - "398": 0, - "399": 0, - "400": 18, - "401": 18, - "402": 18, - "403": 18, - "404": 0, - "405": 0, - "406": 18, - "407": 18, - "408": 45, - "409": 45, - "410": 1, - "411": 1, - "412": 44, - "413": 44, - "414": 44, - "415": 45, - "416": 1, - "417": 1, - "418": 45, - "419": 45, - "420": 44, - "421": 44, - "422": 2, - "423": 2, - "424": 42, - "425": 42, - "426": 42, - "427": 44, - "428": 2, - "429": 2, - "430": 44, - "431": 44, - "432": 42, - "433": 42, - "434": 7, - "435": 7, - "436": 35, - "437": 35, - "438": 35, - "439": 42, - "440": 7, - "441": 7, - "442": 42, - "443": 42, - "444": 35, - "445": 35, - "446": 4, - "447": 4, - "448": 31, - "449": 31, - "450": 31, - "451": 35, - "452": 4, - "453": 4, - "454": 35, - "455": 35, - "456": 31, - "457": 31, - "458": 7, - "459": 7, - "460": 24, - "461": 24, - "462": 24, - "463": 31, - "464": 7, - "465": 7, - "466": 31, - "467": 31, - "468": 24, - "469": 24, - "470": 0, - "471": 0, - "472": 24, - "473": 24, - "474": 24, - "475": 24, - "476": 0, - "477": 0, - "478": 24, - "479": 24, - "480": 24, - "481": 24, - "482": 0, - "483": 0, - "484": 24, - "485": 24, - "486": 24, - "487": 24, - "488": 0, - "489": 0, - "490": 24, - "491": 24, - "492": 24, - "493": 24, - "494": 3, - "495": 3, - "496": 21, - "497": 21, - "498": 21, - "499": 24, - "500": 3, - "501": 3, - "502": 24, - "503": 45, - "504": 109, - "505": 109, - "506": 109, - "507": 109, - "508": 109, - "509": 109, - "510": 107, - "511": 106, - "512": 106, - "513": 1, - "514": 1, - "515": 1, - "516": 107, - "517": 106, - "518": 106, - "519": 106, - "520": 106, - "521": 0, - "522": 0, - "523": 1, - "524": 1, - "525": 2, - "526": 2, - "527": 109, - "528": 0, - "529": 0, - "530": 0, - "531": 0, - "532": 0, - "533": 0, - "534": 0, - "535": 0, - "536": 0, - "537": 0, - "538": 0, - "539": 0, - "540": 0, - "541": 0, - "542": 0, - "543": 0, - "544": 0, - "545": 0, - "546": 0, - "547": 0, - "548": 0, - "549": 0, - "550": 0, - "551": 0, - "552": 0, - "553": 0, - "554": 0, - "555": 0, - "556": 0, - "557": 0, - "558": 0, - "559": 0, - "560": 0, - "561": 0, - "562": 0, - "563": 0, - "564": 0, - "565": 0, - "566": 0, - "567": 0, - "568": 0, - "569": 0, - "570": 0, - "571": 0, - "572": 0, - "573": 0, - "574": 0, - "575": 0, - "576": 0, - "577": 0, - "578": 0, - "579": 0, - "580": 154, - "581": 154, - "582": 0, - "583": 0, - "584": 154, - "585": 154, - "586": 154, - "587": 154, - "588": 0, - "589": 0, - "590": 0, - "591": 0, - "592": 0, - "593": 0, - "594": 0, - "595": 0, - "596": 0, - "597": 0, - "598": 0, - "599": 0, - "600": 0, - "601": 0, - "602": 0, - "603": 154, - "604": 154, - "605": 154, - "606": 0, - "607": 0, - "608": 0, - "609": 0, - "610": 0, - "611": 0, - "612": 0, - "613": 0, - "614": 0, - "615": 0, - "616": 0, - "617": 0, - "618": 0, - "619": 0, - "620": 0, - "621": 0, - "622": 0, - "623": 0, - "624": 0, - "625": 0, - "626": 0, - "627": 0, - "628": 0, - "629": 1, - "630": 1, - "631": 1, - "632": 1, - "633": 1, - "634": 0, - "635": 0, - "636": 0, - "637": 1, - "638": 1, - "639": 4, - "640": 4, - "641": 3, - "642": 3, - "643": 1, - "644": 1, - "645": 1, - "646": 0, - "647": 1, - "648": 1, - "649": 1, - "650": 1, - "651": 1, - "652": 265, - "653": 265, - "654": 265, - "655": 242, - "656": 242, - "657": 241, - "658": 242, - "659": 242, - "660": 23, - "661": 23, - "662": 265, - "663": 242, - "664": 242, - "665": 1, - "666": 1, - "667": 241, - "668": 241, - "669": 241, - "670": 242, - "671": 1, - "672": 1, - "673": 1, - "674": 1, - "675": 1, - "676": 1, - "677": 1, - "678": 0, - "679": 0, - "680": 0, - "681": 1, - "682": 1, - "683": 1, - "684": 1, - "685": 1, - "686": 0, - "687": 0, - "688": 0, - "689": 0, - "690": 1, - "691": 1, - "692": 1, - "693": 1, - "694": 0, - "695": 0, - "696": 1, - "697": 1, - "698": 1, - "699": 1, - "700": 0, - "701": 0, - "702": 0, - "703": 0, - "704": 0, - "705": 0, - "706": 1, - "707": 1, - "708": 1, - "709": 1, - "710": 0, - "711": 0, - "712": 241, - "713": 241, - "714": 242, - "715": 2, - "716": 2, - "717": 0, - "718": 0, - "719": 2, - "720": 2, - "721": 2, - "722": 2, - "723": 2, - "724": 2, - "725": 2, - "726": 1, - "727": 2, - "728": 2, - "729": 2, - "730": 0, - "731": 0, - "732": 2, - "733": 265, - "734": 265, - "735": 265, - "736": 242, - "737": 242, - "738": 242, - "739": 93, - "740": 93, - "741": 149, - "742": 149, - "743": 149, - "744": 242, - "745": 93, - "746": 93, - "747": 92, - "748": 92, - "749": 1, - "750": 1, - "751": 149, - "752": 149, - "753": 242, - "754": 150, - "755": 150, - "756": 150, - "757": 58, - "758": 58, - "759": 92, - "760": 92, - "761": 92, - "762": 150, - "763": 58, - "764": 58, - "765": 58, - "766": 58, - "767": 0, - "768": 0, - "769": 92, - "770": 92, - "771": 242, - "772": 242, - "773": 23, - "774": 23, - "775": 265, - "776": 418, - "777": 418, - "778": 418, - "779": 393, - "780": 393, - "781": 25, - "782": 25, - "783": 25, - "784": 418, - "785": 393, - "786": 395, - "787": 395, - "788": 2, - "789": 2, - "790": 393, - "791": 393, - "792": 393, - "793": 25, - "794": 418, - "795": 393, - "796": 393, - "797": 418, - "798": 418, - "799": 79, - "800": 79, - "801": 79, - "802": 14, - "803": 14, - "804": 65, - "805": 65, - "806": 0, - "807": 79, - "808": 14, - "809": 14, - "810": 0, - "811": 0, - "812": 14, - "813": 14, - "814": 0, - "815": 79, - "816": 79, - "817": 79, - "818": 79, - "819": 79, - "820": 127, - "821": 127, - "822": 124, - "823": 3, - "824": 0, - "825": 3, - "826": 6, - "827": 6, - "828": 6, - "829": 6 - }, - "f": { - "0": 6, - "1": 6, - "2": 6, - "3": 3, - "4": 0, - "5": 0, - "6": 3, - "7": 2, - "8": 3, - "9": 3, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 4, - "15": 0, - "16": 0, - "17": 6, - "18": 0, - "19": 0, - "20": 5, - "21": 3, - "22": 3, - "23": 127, - "24": 0, - "25": 24, - "26": 24, - "27": 2, - "28": 1, - "29": 0, - "30": 1, - "31": 2, - "32": 7, - "33": 4, - "34": 7, - "35": 0, - "36": 0, - "37": 3, - "38": 106, - "39": 0, - "40": 0, - "41": 0, - "42": 1, - "43": 242, - "44": 1, - "45": 1, - "46": 2, - "47": 242, - "48": 150, - "49": 393, - "50": 394, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 2286, - "57": 508, - "58": 0, - "59": 0, - "60": 127, - "61": 6, - "62": 3, - "63": 1542, - "64": 0, - "65": 3, - "66": 18, - "67": 25, - "68": 22, - "69": 45, - "70": 45, - "71": 45, - "72": 45, - "73": 21, - "74": 19, - "75": 18, - "76": 45, - "77": 109, - "78": 0, - "79": 154, - "80": 0, - "81": 1, - "82": 265, - "83": 242, - "84": 2, - "85": 265, - "86": 418, - "87": 79 - }, - "b": { - "0": [0, 0], - "1": [0], - "2": [0], - "3": [0], - "4": [0, 0], - "5": [0, 0], - "6": [0, 0], - "7": [0, 0], - "8": [0, 0], - "9": [3, 0], - "10": [0, 3], - "11": [3], - "12": [2], - "13": [1, 2, 0], - "14": [2, 1], - "15": [127, 0], - "16": [24, 24], - "17": [5, 19], - "18": [106, 106], - "19": [0, 0], - "20": [242, 241], - "21": [127], - "22": [0], - "23": [0, 0], - "24": [0, 0], - "25": [3, 3], - "26": [0, 4], - "27": [0], - "28": [3, 0, 0], - "29": [2], - "30": [438], - "31": [18, 0], - "32": [17], - "33": [4, 14], - "34": [14], - "35": [4, 14], - "36": [5], - "37": [3, 4], - "38": [4], - "39": [3, 4], - "40": [3, 22], - "41": [22], - "42": [4, 18], - "43": [18], - "44": [45], - "45": [21], - "46": [19], - "47": [18], - "48": [0, 45], - "49": [45], - "50": [0, 45], - "51": [0, 0], - "52": [0, 0], - "53": [0], - "54": [0, 0], - "55": [21], - "56": [24, 21], - "57": [45], - "58": [24, 21], - "59": [5, 19], - "60": [19], - "61": [5, 19], - "62": [5, 0], - "63": [19], - "64": [2, 19], - "65": [19], - "66": [2, 19], - "67": [2, 0], - "68": [1, 18], - "69": [18], - "70": [1], - "71": [0, 18], - "72": [18], - "73": [0], - "74": [1, 44], - "75": [44], - "76": [1], - "77": [44], - "78": [2, 42], - "79": [42], - "80": [2], - "81": [42], - "82": [7, 35], - "83": [35], - "84": [7], - "85": [35], - "86": [4, 31], - "87": [31], - "88": [4], - "89": [31], - "90": [7, 24], - "91": [24], - "92": [7], - "93": [24], - "94": [0, 24], - "95": [24], - "96": [0], - "97": [24], - "98": [0, 24], - "99": [24], - "100": [0], - "101": [24], - "102": [3, 21], - "103": [21], - "104": [3], - "105": [109], - "106": [107, 2], - "107": [106, 1], - "108": [1], - "109": [106, 1], - "110": [106, 0], - "111": [0, 0], - "112": [0, 0], - "113": [0], - "114": [0, 0], - "115": [0, 0], - "116": [0, 0], - "117": [0], - "118": [0, 0], - "119": [0, 0], - "120": [0, 0], - "121": [0], - "122": [0, 0], - "123": [0, 0], - "124": [0], - "125": [0, 154], - "126": [154], - "127": [0, 154], - "128": [0, 0], - "129": [0, 0], - "130": [0], - "131": [0, 0], - "132": [0, 0], - "133": [0], - "134": [0, 0], - "135": [0, 0], - "136": [0], - "137": [0], - "138": [1, 0], - "139": [0], - "140": [1, 0], - "141": [3, 1], - "142": [1], - "143": [1], - "144": [242, 23], - "145": [241], - "146": [1, 241], - "147": [241], - "148": [1, 241], - "149": [1, 0], - "150": [1, 0], - "151": [0], - "152": [1, 0], - "153": [1, 0], - "154": [0, 1], - "155": [1], - "156": [0, 1], - "157": [0, 0], - "158": [0, 2], - "159": [2], - "160": [2], - "161": [1], - "162": [2, 0], - "163": [242, 23], - "164": [93, 149], - "165": [149], - "166": [93, 149], - "167": [92, 1], - "168": [58, 92], - "169": [92], - "170": [58, 92], - "171": [58, 0], - "172": [393, 25], - "173": [25], - "174": [393, 25], - "175": [2, 393], - "176": [393], - "177": [393], - "178": [14, 65], - "179": [0], - "180": [0, 14], - "181": [0], - "182": [79], - "183": [124, 3], - "184": [127, 124], - "185": [0], - "186": [3, 0], - "187": [2, 1], - "188": [2, 1] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/exver/index.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/exver/index.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 28 } - }, - "1": { - "start": { "line": 47, "column": 29 }, - "end": { "line": 47, "column": 75 } - }, - "2": { - "start": { "line": 50, "column": 4 }, - "end": { "line": 63, "column": null } - }, - "3": { - "start": { "line": 52, "column": 8 }, - "end": { "line": 52, "column": null } - }, - "4": { - "start": { "line": 54, "column": 8 }, - "end": { "line": 54, "column": null } - }, - "5": { - "start": { "line": 56, "column": 8 }, - "end": { "line": 56, "column": null } - }, - "6": { - "start": { "line": 58, "column": 8 }, - "end": { "line": 58, "column": null } - }, - "7": { - "start": { "line": 60, "column": 8 }, - "end": { "line": 60, "column": null } - }, - "8": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 62, "column": null } - }, - "9": { - "start": { "line": 67, "column": 4 }, - "end": { "line": 93, "column": null } - }, - "10": { - "start": { "line": 69, "column": 8 }, - "end": { "line": 72, "column": null } - }, - "11": { - "start": { "line": 74, "column": 8 }, - "end": { "line": 74, "column": null } - }, - "12": { - "start": { "line": 76, "column": 8 }, - "end": { "line": 90, "column": null } - }, - "13": { - "start": { "line": 92, "column": 8 }, - "end": { "line": 92, "column": null } - }, - "14": { - "start": { "line": 97, "column": 17 }, - "end": { "line": 97, "column": 49 } - }, - "15": { - "start": { "line": 98, "column": 4 }, - "end": { "line": 116, "column": null } - }, - "16": { - "start": { "line": 99, "column": 6 }, - "end": { "line": 115, "column": null } - }, - "17": { - "start": { "line": 101, "column": 10 }, - "end": { "line": 105, "column": null } - }, - "18": { - "start": { "line": 106, "column": 10 }, - "end": { "line": 106, "column": 15 } - }, - "19": { - "start": { "line": 109, "column": 10 }, - "end": { "line": 113, "column": null } - }, - "20": { - "start": { "line": 114, "column": 10 }, - "end": { "line": 114, "column": 15 } - }, - "21": { - "start": { "line": 117, "column": 4 }, - "end": { "line": 117, "column": null } - }, - "22": { - "start": { "line": 121, "column": 4 }, - "end": { "line": 123, "column": null } - }, - "23": { - "start": { "line": 127, "column": 4 }, - "end": { "line": 127, "column": null } - }, - "24": { - "start": { "line": 131, "column": 4 }, - "end": { "line": 131, "column": null } - }, - "25": { - "start": { "line": 135, "column": 4 }, - "end": { "line": 135, "column": null } - }, - "26": { - "start": { "line": 139, "column": 4 }, - "end": { "line": 139, "column": null } - }, - "27": { - "start": { "line": 143, "column": 4 }, - "end": { "line": 143, "column": null } - }, - "28": { - "start": { "line": 147, "column": 4 }, - "end": { "line": 147, "column": null } - }, - "29": { - "start": { "line": 151, "column": 4 }, - "end": { "line": 151, "column": null } - }, - "30": { - "start": { "line": 46, "column": 0 }, - "end": { "line": 46, "column": 13 } - }, - "31": { - "start": { "line": 157, "column": 11 }, - "end": { "line": 157, "column": 27 } - }, - "32": { - "start": { "line": 158, "column": 11 }, - "end": { "line": 158, "column": 42 } - }, - "33": { - "start": { "line": 162, "column": 4 }, - "end": { "line": 162, "column": null } - }, - "34": { - "start": { "line": 166, "column": 19 }, - "end": { "line": 166, "column": 68 } - }, - "35": { - "start": { "line": 167, "column": 4 }, - "end": { "line": 173, "column": null } - }, - "36": { - "start": { "line": 167, "column": 17 }, - "end": { "line": 167, "column": 18 } - }, - "37": { - "start": { "line": 168, "column": 6 }, - "end": { "line": 172, "column": null } - }, - "38": { - "start": { "line": 169, "column": 8 }, - "end": { "line": 169, "column": null } - }, - "39": { - "start": { "line": 170, "column": 13 }, - "end": { "line": 172, "column": null } - }, - "40": { - "start": { "line": 171, "column": 8 }, - "end": { "line": 171, "column": null } - }, - "41": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 179, "column": null } - }, - "42": { - "start": { "line": 176, "column": 6 }, - "end": { "line": 176, "column": null } - }, - "43": { - "start": { "line": 177, "column": 11 }, - "end": { "line": 179, "column": null } - }, - "44": { - "start": { "line": 178, "column": 6 }, - "end": { "line": 178, "column": null } - }, - "45": { - "start": { "line": 181, "column": 26 }, - "end": { "line": 181, "column": 75 } - }, - "46": { - "start": { "line": 182, "column": 4 }, - "end": { "line": 203, "column": null } - }, - "47": { - "start": { "line": 182, "column": 17 }, - "end": { "line": 182, "column": 18 } - }, - "48": { - "start": { "line": 183, "column": 6 }, - "end": { "line": 202, "column": null } - }, - "49": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 188, "column": null } - }, - "50": { - "start": { "line": 185, "column": 10 }, - "end": { "line": 185, "column": null } - }, - "51": { - "start": { "line": 186, "column": 15 }, - "end": { "line": 188, "column": null } - }, - "52": { - "start": { "line": 187, "column": 10 }, - "end": { "line": 187, "column": null } - }, - "53": { - "start": { "line": 190, "column": 8 }, - "end": { "line": 201, "column": null } - }, - "54": { - "start": { "line": 192, "column": 12 }, - "end": { "line": 192, "column": null } - }, - "55": { - "start": { "line": 194, "column": 12 }, - "end": { "line": 194, "column": null } - }, - "56": { - "start": { "line": 197, "column": 12 }, - "end": { "line": 197, "column": null } - }, - "57": { - "start": { "line": 200, "column": 12 }, - "end": { "line": 200, "column": null } - }, - "58": { - "start": { "line": 205, "column": 4 }, - "end": { "line": 205, "column": null } - }, - "59": { - "start": { "line": 209, "column": 19 }, - "end": { "line": 209, "column": 61 } - }, - "60": { - "start": { "line": 210, "column": 4 }, - "end": { "line": 210, "column": null } - }, - "61": { - "start": { "line": 214, "column": 4 }, - "end": { "line": 216, "column": null } - }, - "62": { - "start": { "line": 155, "column": 0 }, - "end": { "line": 155, "column": 13 } - }, - "63": { - "start": { "line": 223, "column": 11 }, - "end": { "line": 223, "column": 32 } - }, - "64": { - "start": { "line": 224, "column": 11 }, - "end": { "line": 224, "column": 28 } - }, - "65": { - "start": { "line": 225, "column": 11 }, - "end": { "line": 225, "column": 30 } - }, - "66": { - "start": { "line": 229, "column": 4 }, - "end": { "line": 229, "column": null } - }, - "67": { - "start": { "line": 233, "column": 4 }, - "end": { "line": 235, "column": null } - }, - "68": { - "start": { "line": 234, "column": 6 }, - "end": { "line": 234, "column": null } - }, - "69": { - "start": { "line": 236, "column": 24 }, - "end": { "line": 236, "column": 61 } - }, - "70": { - "start": { "line": 237, "column": 4 }, - "end": { "line": 239, "column": null } - }, - "71": { - "start": { "line": 238, "column": 6 }, - "end": { "line": 238, "column": null } - }, - "72": { - "start": { "line": 240, "column": 4 }, - "end": { "line": 240, "column": null } - }, - "73": { - "start": { "line": 244, "column": 4 }, - "end": { "line": 250, "column": null } - }, - "74": { - "start": { "line": 245, "column": 6 }, - "end": { "line": 245, "column": null } - }, - "75": { - "start": { "line": 246, "column": 11 }, - "end": { "line": 250, "column": null } - }, - "76": { - "start": { "line": 247, "column": 6 }, - "end": { "line": 247, "column": null } - }, - "77": { - "start": { "line": 249, "column": 6 }, - "end": { "line": 249, "column": null } - }, - "78": { - "start": { "line": 254, "column": 4 }, - "end": { "line": 261, "column": null } - }, - "79": { - "start": { "line": 256, "column": 8 }, - "end": { "line": 256, "column": null } - }, - "80": { - "start": { "line": 258, "column": 8 }, - "end": { "line": 258, "column": null } - }, - "81": { - "start": { "line": 260, "column": 8 }, - "end": { "line": 260, "column": null } - }, - "82": { - "start": { "line": 265, "column": 4 }, - "end": { "line": 265, "column": null } - }, - "83": { - "start": { "line": 269, "column": 4 }, - "end": { "line": 269, "column": null } - }, - "84": { - "start": { "line": 273, "column": 4 }, - "end": { "line": 273, "column": null } - }, - "85": { - "start": { "line": 277, "column": 4 }, - "end": { "line": 277, "column": null } - }, - "86": { - "start": { "line": 281, "column": 4 }, - "end": { "line": 281, "column": null } - }, - "87": { - "start": { "line": 285, "column": 19 }, - "end": { "line": 285, "column": 77 } - }, - "88": { - "start": { "line": 286, "column": 4 }, - "end": { "line": 290, "column": null } - }, - "89": { - "start": { "line": 294, "column": 19 }, - "end": { "line": 294, "column": 67 } - }, - "90": { - "start": { "line": 295, "column": 4 }, - "end": { "line": 299, "column": null } - }, - "91": { - "start": { "line": 308, "column": 21 }, - "end": { "line": 308, "column": 79 } - }, - "92": { - "start": { "line": 308, "column": 69 }, - "end": { "line": 308, "column": 78 } - }, - "93": { - "start": { "line": 310, "column": 24 }, - "end": { "line": 317, "column": 6 } - }, - "94": { - "start": { "line": 311, "column": 6 }, - "end": { "line": 315, "column": null } - }, - "95": { - "start": { "line": 312, "column": 8 }, - "end": { "line": 312, "column": null } - }, - "96": { - "start": { "line": 313, "column": 13 }, - "end": { "line": 315, "column": null } - }, - "97": { - "start": { "line": 314, "column": 8 }, - "end": { "line": 314, "column": null } - }, - "98": { - "start": { "line": 316, "column": 6 }, - "end": { "line": 316, "column": null } - }, - "99": { - "start": { "line": 319, "column": 32 }, - "end": { "line": 319, "column": 60 } - }, - "100": { - "start": { "line": 320, "column": 30 }, - "end": { "line": 320, "column": 50 } - }, - "101": { - "start": { "line": 322, "column": 4 }, - "end": { "line": 326, "column": null } - }, - "102": { - "start": { "line": 335, "column": 21 }, - "end": { "line": 335, "column": 79 } - }, - "103": { - "start": { "line": 335, "column": 69 }, - "end": { "line": 335, "column": 78 } - }, - "104": { - "start": { "line": 336, "column": 19 }, - "end": { "line": 336, "column": 60 } - }, - "105": { - "start": { "line": 338, "column": 24 }, - "end": { "line": 345, "column": 6 } - }, - "106": { - "start": { "line": 339, "column": 6 }, - "end": { "line": 343, "column": null } - }, - "107": { - "start": { "line": 340, "column": 8 }, - "end": { "line": 340, "column": null } - }, - "108": { - "start": { "line": 341, "column": 13 }, - "end": { "line": 343, "column": null } - }, - "109": { - "start": { "line": 342, "column": 8 }, - "end": { "line": 342, "column": null } - }, - "110": { - "start": { "line": 344, "column": 6 }, - "end": { "line": 344, "column": null } - }, - "111": { - "start": { "line": 347, "column": 32 }, - "end": { "line": 347, "column": 60 } - }, - "112": { - "start": { "line": 348, "column": 30 }, - "end": { "line": 348, "column": 50 } - }, - "113": { - "start": { "line": 350, "column": 4 }, - "end": { "line": 354, "column": null } - }, - "114": { - "start": { "line": 362, "column": 4 }, - "end": { "line": 415, "column": null } - }, - "115": { - "start": { "line": 364, "column": 29 }, - "end": { "line": 364, "column": 54 } - }, - "116": { - "start": { "line": 365, "column": 8 }, - "end": { "line": 398, "column": null } - }, - "117": { - "start": { "line": 367, "column": 12 }, - "end": { "line": 367, "column": null } - }, - "118": { - "start": { "line": 369, "column": 12 }, - "end": { "line": 369, "column": null } - }, - "119": { - "start": { "line": 371, "column": 12 }, - "end": { "line": 371, "column": null } - }, - "120": { - "start": { "line": 373, "column": 12 }, - "end": { "line": 373, "column": null } - }, - "121": { - "start": { "line": 375, "column": 12 }, - "end": { "line": 375, "column": null } - }, - "122": { - "start": { "line": 377, "column": 12 }, - "end": { "line": 377, "column": null } - }, - "123": { - "start": { "line": 379, "column": 30 }, - "end": { "line": 379, "column": 72 } - }, - "124": { - "start": { "line": 380, "column": 12 }, - "end": { "line": 387, "column": null } - }, - "125": { - "start": { "line": 384, "column": 14 }, - "end": { "line": 384, "column": null } - }, - "126": { - "start": { "line": 386, "column": 14 }, - "end": { "line": 386, "column": null } - }, - "127": { - "start": { "line": 389, "column": 30 }, - "end": { "line": 389, "column": 72 } - }, - "128": { - "start": { "line": 390, "column": 12 }, - "end": { "line": 397, "column": null } - }, - "129": { - "start": { "line": 394, "column": 14 }, - "end": { "line": 394, "column": null } - }, - "130": { - "start": { "line": 396, "column": 14 }, - "end": { "line": 396, "column": null } - }, - "131": { - "start": { "line": 400, "column": 8 }, - "end": { "line": 403, "column": null } - }, - "132": { - "start": { "line": 405, "column": 8 }, - "end": { "line": 408, "column": null } - }, - "133": { - "start": { "line": 410, "column": 8 }, - "end": { "line": 410, "column": null } - }, - "134": { - "start": { "line": 412, "column": 8 }, - "end": { "line": 412, "column": null } - }, - "135": { - "start": { "line": 414, "column": 8 }, - "end": { "line": 414, "column": null } - }, - "136": { - "start": { "line": 221, "column": 0 }, - "end": { "line": 221, "column": 13 } - }, - "137": { - "start": { "line": 419, "column": 29 }, - "end": { "line": 419, "column": 77 } - }, - "138": { - "start": { "line": 419, "column": 76 }, - "end": { "line": 419, "column": 77 } - }, - "139": { - "start": { "line": 419, "column": 13 }, - "end": { "line": 419, "column": 29 } - }, - "140": { - "start": { "line": 421, "column": 31 }, - "end": { "line": 422, "column": 3 } - }, - "141": { - "start": { "line": 422, "column": 2 }, - "end": { "line": 422, "column": 3 } - }, - "142": { - "start": { "line": 421, "column": 13 }, - "end": { "line": 421, "column": 31 } - }, - "143": { - "start": { "line": 424, "column": 2 }, - "end": { "line": 424, "column": null } - }, - "144": { - "start": { "line": 425, "column": 2 }, - "end": { "line": 425, "column": null } - }, - "145": { - "start": { "line": 426, "column": 2 }, - "end": { "line": 426, "column": null } - }, - "146": { - "start": { "line": 427, "column": 2 }, - "end": { "line": 427, "column": null } - }, - "147": { - "start": { "line": 428, "column": 2 }, - "end": { "line": 428, "column": null } - }, - "148": { - "start": { "line": 429, "column": 2 }, - "end": { "line": 429, "column": null } - }, - "149": { - "start": { "line": 431, "column": 2 }, - "end": { "line": 431, "column": null } - }, - "150": { - "start": { "line": 433, "column": 2 }, - "end": { "line": 433, "column": null } - }, - "151": { - "start": { "line": 435, "column": 2 }, - "end": { "line": 435, "column": null } - }, - "152": { - "start": { "line": 437, "column": 2 }, - "end": { "line": 437, "column": null } - }, - "153": { - "start": { "line": 438, "column": 2 }, - "end": { "line": 438, "column": null } - }, - "154": { - "start": { "line": 439, "column": 2 }, - "end": { "line": 439, "column": null } - }, - "155": { - "start": { "line": 440, "column": 2 }, - "end": { "line": 440, "column": null } - }, - "156": { - "start": { "line": 441, "column": 2 }, - "end": { "line": 441, "column": null } - }, - "157": { - "start": { "line": 442, "column": 2 }, - "end": { "line": 442, "column": null } - }, - "158": { - "start": { "line": 443, "column": 2 }, - "end": { "line": 443, "column": null } - }, - "159": { - "start": { "line": 445, "column": 2 }, - "end": { "line": 445, "column": null } - }, - "160": { - "start": { "line": 447, "column": 2 }, - "end": { "line": 447, "column": null } - }, - "161": { - "start": { "line": 449, "column": 2 }, - "end": { "line": 449, "column": null } - }, - "162": { - "start": { "line": 451, "column": 2 }, - "end": { "line": 451, "column": null } - }, - "163": { - "start": { "line": 453, "column": 2 }, - "end": { "line": 453, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 47, "column": 2 }, - "end": { "line": 47, "column": 29 } - }, - "loc": { - "start": { "line": 47, "column": 75 }, - "end": { "line": 47, "column": 79 } - } - }, - "1": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 49, "column": 2 }, - "end": { "line": 49, "column": 10 } - }, - "loc": { - "start": { "line": 49, "column": 10 }, - "end": { "line": 64, "column": 3 } - } - }, - "2": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 66, "column": 10 }, - "end": { "line": 66, "column": 16 } - }, - "loc": { - "start": { "line": 66, "column": 51 }, - "end": { "line": 94, "column": 3 } - } - }, - "3": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 96, "column": 10 }, - "end": { "line": 96, "column": 16 } - }, - "loc": { - "start": { "line": 96, "column": 49 }, - "end": { "line": 118, "column": 3 } - } - }, - "4": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 120, "column": 2 }, - "end": { "line": 120, "column": 8 } - }, - "loc": { - "start": { "line": 120, "column": 28 }, - "end": { "line": 124, "column": 3 } - } - }, - "5": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 126, "column": 2 }, - "end": { "line": 126, "column": 5 } - }, - "loc": { - "start": { "line": 126, "column": 25 }, - "end": { "line": 128, "column": 3 } - } - }, - "6": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 130, "column": 2 }, - "end": { "line": 130, "column": 4 } - }, - "loc": { - "start": { "line": 130, "column": 24 }, - "end": { "line": 132, "column": 3 } - } - }, - "7": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 134, "column": 2 }, - "end": { "line": 134, "column": 5 } - }, - "loc": { - "start": { "line": 134, "column": 5 }, - "end": { "line": 136, "column": 3 } - } - }, - "8": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 138, "column": 2 }, - "end": { "line": 138, "column": 8 } - }, - "loc": { - "start": { "line": 138, "column": 59 }, - "end": { "line": 140, "column": 3 } - } - }, - "9": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 142, "column": 2 }, - "end": { "line": 142, "column": 8 } - }, - "loc": { - "start": { "line": 142, "column": 12 }, - "end": { "line": 144, "column": 3 } - } - }, - "10": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 146, "column": 2 }, - "end": { "line": 146, "column": 8 } - }, - "loc": { - "start": { "line": 146, "column": 13 }, - "end": { "line": 148, "column": 3 } - } - }, - "11": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 150, "column": 2 }, - "end": { "line": 150, "column": 13 } - }, - "loc": { - "start": { "line": 150, "column": 48 }, - "end": { "line": 152, "column": 3 } - } - }, - "12": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 156, "column": 2 }, - "end": { "line": 156, "column": null } - }, - "loc": { - "start": { "line": 158, "column": 42 }, - "end": { "line": 159, "column": 6 } - } - }, - "13": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 161, "column": 2 }, - "end": { "line": 161, "column": 10 } - }, - "loc": { - "start": { "line": 161, "column": 10 }, - "end": { "line": 163, "column": 3 } - } - }, - "14": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 165, "column": 2 }, - "end": { "line": 165, "column": 9 } - }, - "loc": { - "start": { "line": 165, "column": 24 }, - "end": { "line": 206, "column": 3 } - } - }, - "15": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 208, "column": 2 }, - "end": { "line": 208, "column": 8 } - }, - "loc": { - "start": { "line": 208, "column": 30 }, - "end": { "line": 211, "column": 3 } - } - }, - "16": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 213, "column": 2 }, - "end": { "line": 213, "column": 11 } - }, - "loc": { - "start": { "line": 213, "column": 38 }, - "end": { "line": 217, "column": 3 } - } - }, - "17": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 222, "column": 2 }, - "end": { "line": 222, "column": null } - }, - "loc": { - "start": { "line": 225, "column": 30 }, - "end": { "line": 226, "column": 6 } - } - }, - "18": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 228, "column": 2 }, - "end": { "line": 228, "column": 10 } - }, - "loc": { - "start": { "line": 228, "column": 10 }, - "end": { "line": 230, "column": 3 } - } - }, - "19": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 232, "column": 2 }, - "end": { "line": 232, "column": 9 } - }, - "loc": { - "start": { "line": 232, "column": 32 }, - "end": { "line": 241, "column": 3 } - } - }, - "20": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 243, "column": 2 }, - "end": { "line": 243, "column": 22 } - }, - "loc": { - "start": { "line": 243, "column": 45 }, - "end": { "line": 251, "column": 3 } - } - }, - "21": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 253, "column": 2 }, - "end": { "line": 253, "column": 16 } - }, - "loc": { - "start": { "line": 253, "column": 39 }, - "end": { "line": 262, "column": 3 } - } - }, - "22": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 264, "column": 2 }, - "end": { "line": 264, "column": 13 } - }, - "loc": { - "start": { "line": 264, "column": 36 }, - "end": { "line": 266, "column": 3 } - } - }, - "23": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 268, "column": 2 }, - "end": { "line": 268, "column": 20 } - }, - "loc": { - "start": { "line": 268, "column": 43 }, - "end": { "line": 270, "column": 3 } - } - }, - "24": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 272, "column": 2 }, - "end": { "line": 272, "column": 8 } - }, - "loc": { - "start": { "line": 272, "column": 31 }, - "end": { "line": 274, "column": 3 } - } - }, - "25": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 276, "column": 2 }, - "end": { "line": 276, "column": 10 } - }, - "loc": { - "start": { "line": 276, "column": 33 }, - "end": { "line": 278, "column": 3 } - } - }, - "26": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 280, "column": 2 }, - "end": { "line": 280, "column": 17 } - }, - "loc": { - "start": { "line": 280, "column": 40 }, - "end": { "line": 282, "column": 3 } - } - }, - "27": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 284, "column": 2 }, - "end": { "line": 284, "column": 8 } - }, - "loc": { - "start": { "line": 284, "column": 38 }, - "end": { "line": 291, "column": 3 } - } - }, - "28": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 293, "column": 2 }, - "end": { "line": 293, "column": 8 } - }, - "loc": { - "start": { "line": 293, "column": 43 }, - "end": { "line": 300, "column": 3 } - } - }, - "29": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 307, "column": 2 }, - "end": { "line": 307, "column": 16 } - }, - "loc": { - "start": { "line": 307, "column": 16 }, - "end": { "line": 327, "column": 3 } - } - }, - "30": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 308, "column": 52 }, - "end": { "line": 308, "column": 53 } - }, - "loc": { - "start": { "line": 308, "column": 69 }, - "end": { "line": 308, "column": 78 } - } - }, - "31": { - "name": "(anonymous_37)", - "decl": { - "start": { "line": 310, "column": 49 }, - "end": { "line": 310, "column": 50 } - }, - "loc": { - "start": { "line": 310, "column": 70 }, - "end": { "line": 317, "column": 5 } - } - }, - "32": { - "name": "(anonymous_38)", - "decl": { - "start": { "line": 334, "column": 2 }, - "end": { "line": 334, "column": 16 } - }, - "loc": { - "start": { "line": 334, "column": 16 }, - "end": { "line": 355, "column": 3 } - } - }, - "33": { - "name": "(anonymous_39)", - "decl": { - "start": { "line": 335, "column": 52 }, - "end": { "line": 335, "column": 53 } - }, - "loc": { - "start": { "line": 335, "column": 69 }, - "end": { "line": 335, "column": 78 } - } - }, - "34": { - "name": "(anonymous_40)", - "decl": { - "start": { "line": 338, "column": 49 }, - "end": { "line": 338, "column": 50 } - }, - "loc": { - "start": { "line": 338, "column": 70 }, - "end": { "line": 345, "column": 5 } - } - }, - "35": { - "name": "(anonymous_41)", - "decl": { - "start": { "line": 361, "column": 2 }, - "end": { "line": 361, "column": 11 } - }, - "loc": { - "start": { "line": 361, "column": 38 }, - "end": { "line": 416, "column": 3 } - } - }, - "36": { - "name": "(anonymous_42)", - "decl": { - "start": { "line": 419, "column": 29 }, - "end": { "line": 419, "column": 48 } - }, - "loc": { - "start": { "line": 419, "column": 76 }, - "end": { "line": 419, "column": 77 } - } - }, - "37": { - "name": "(anonymous_43)", - "decl": { - "start": { "line": 421, "column": 31 }, - "end": { "line": 421, "column": 50 } - }, - "loc": { - "start": { "line": 422, "column": 2 }, - "end": { "line": 422, "column": 3 } - } - }, - "38": { - "name": "tests", - "decl": { - "start": { "line": 423, "column": 9 }, - "end": { "line": 423, "column": 14 } - }, - "loc": { - "start": { "line": 423, "column": 14 }, - "end": { "line": 454, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 50, "column": 4 }, - "end": { "line": 63, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 51, "column": 6 }, - "end": { "line": 52, "column": null } - }, - { - "start": { "line": 53, "column": 6 }, - "end": { "line": 54, "column": null } - }, - { - "start": { "line": 55, "column": 6 }, - "end": { "line": 56, "column": null } - }, - { - "start": { "line": 57, "column": 6 }, - "end": { "line": 58, "column": null } - }, - { - "start": { "line": 59, "column": 6 }, - "end": { "line": 60, "column": null } - }, - { - "start": { "line": 61, "column": 6 }, - "end": { "line": 62, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 67, "column": 4 }, - "end": { "line": 93, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 68, "column": 6 }, - "end": { "line": 72, "column": null } - }, - { - "start": { "line": 73, "column": 6 }, - "end": { "line": 74, "column": null } - }, - { - "start": { "line": 75, "column": 6 }, - "end": { "line": 90, "column": null } - }, - { - "start": { "line": 91, "column": 6 }, - "end": { "line": 92, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 78, "column": 20 }, - "end": { "line": 78, "column": 40 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 78, "column": 20 }, - "end": { "line": 78, "column": 33 } - }, - { - "start": { "line": 78, "column": 37 }, - "end": { "line": 78, "column": 40 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 99, "column": 6 }, - "end": { "line": 115, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 100, "column": 8 }, - "end": { "line": 106, "column": 15 } - }, - { - "start": { "line": 107, "column": 8 }, - "end": { "line": 107, "column": 18 } - }, - { - "start": { "line": 108, "column": 8 }, - "end": { "line": 114, "column": 15 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 162, "column": 38 }, - "end": { "line": 162, "column": 103 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 162, "column": 67 }, - "end": { "line": 162, "column": 98 } - }, - { - "start": { "line": 162, "column": 101 }, - "end": { "line": 162, "column": 103 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 168, "column": 6 }, - "end": { "line": 172, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 168, "column": 6 }, - "end": { "line": 172, "column": null } - }, - { - "start": { "line": 170, "column": 13 }, - "end": { "line": 172, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 168, "column": 11 }, - "end": { "line": 168, "column": 30 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 168, "column": 11 }, - "end": { "line": 168, "column": 25 } - }, - { - "start": { "line": 168, "column": 29 }, - "end": { "line": 168, "column": 30 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 168, "column": 35 }, - "end": { "line": 168, "column": 55 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 168, "column": 35 }, - "end": { "line": 168, "column": 50 } - }, - { - "start": { "line": 168, "column": 54 }, - "end": { "line": 168, "column": 55 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 170, "column": 13 }, - "end": { "line": 172, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 170, "column": 13 }, - "end": { "line": 172, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 170, "column": 18 }, - "end": { "line": 170, "column": 37 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 170, "column": 18 }, - "end": { "line": 170, "column": 32 } - }, - { - "start": { "line": 170, "column": 36 }, - "end": { "line": 170, "column": 37 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 170, "column": 42 }, - "end": { "line": 170, "column": 62 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 170, "column": 42 }, - "end": { "line": 170, "column": 57 } - }, - { - "start": { "line": 170, "column": 61 }, - "end": { "line": 170, "column": 62 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 179, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 175, "column": 4 }, - "end": { "line": 179, "column": null } - }, - { - "start": { "line": 177, "column": 11 }, - "end": { "line": 179, "column": null } - } - ] - }, - "12": { - "loc": { - "start": { "line": 175, "column": 8 }, - "end": { "line": 175, "column": 69 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 175, "column": 8 }, - "end": { "line": 175, "column": 36 } - }, - { - "start": { "line": 175, "column": 40 }, - "end": { "line": 175, "column": 69 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 177, "column": 11 }, - "end": { "line": 179, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 177, "column": 11 }, - "end": { "line": 179, "column": null } - } - ] - }, - "14": { - "loc": { - "start": { "line": 177, "column": 15 }, - "end": { "line": 177, "column": 76 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 177, "column": 15 }, - "end": { "line": 177, "column": 43 } - }, - { - "start": { "line": 177, "column": 47 }, - "end": { "line": 177, "column": 76 } - } - ] - }, - "15": { - "loc": { - "start": { "line": 183, "column": 6 }, - "end": { "line": 202, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 183, "column": 6 }, - "end": { "line": 202, "column": null } - }, - { - "start": { "line": 189, "column": 13 }, - "end": { "line": 202, "column": null } - } - ] - }, - "16": { - "loc": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 188, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 184, "column": 8 }, - "end": { "line": 188, "column": null } - }, - { - "start": { "line": 186, "column": 15 }, - "end": { "line": 188, "column": null } - } - ] - }, - "17": { - "loc": { - "start": { "line": 186, "column": 15 }, - "end": { "line": 188, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 186, "column": 15 }, - "end": { "line": 188, "column": null } - } - ] - }, - "18": { - "loc": { - "start": { "line": 190, "column": 8 }, - "end": { "line": 201, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 191, "column": 10 }, - "end": { "line": 192, "column": null } - }, - { - "start": { "line": 193, "column": 10 }, - "end": { "line": 194, "column": null } - }, - { - "start": { "line": 195, "column": 10 }, - "end": { "line": 195, "column": 34 } - }, - { - "start": { "line": 196, "column": 10 }, - "end": { "line": 197, "column": null } - }, - { - "start": { "line": 198, "column": 10 }, - "end": { "line": 198, "column": 34 } - }, - { - "start": { "line": 199, "column": 10 }, - "end": { "line": 200, "column": null } - } - ] - }, - "19": { - "loc": { - "start": { "line": 229, "column": 14 }, - "end": { "line": 229, "column": 51 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 229, "column": 28 }, - "end": { "line": 229, "column": 46 } - }, - { - "start": { "line": 229, "column": 49 }, - "end": { "line": 229, "column": 51 } - } - ] - }, - "20": { - "loc": { - "start": { "line": 233, "column": 4 }, - "end": { "line": 235, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 233, "column": 4 }, - "end": { "line": 235, "column": null } - } - ] - }, - "21": { - "loc": { - "start": { "line": 237, "column": 4 }, - "end": { "line": 239, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 237, "column": 4 }, - "end": { "line": 239, "column": null } - } - ] - }, - "22": { - "loc": { - "start": { "line": 244, "column": 4 }, - "end": { "line": 250, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 244, "column": 4 }, - "end": { "line": 250, "column": null } - }, - { - "start": { "line": 246, "column": 11 }, - "end": { "line": 250, "column": null } - } - ] - }, - "23": { - "loc": { - "start": { "line": 244, "column": 9 }, - "end": { "line": 244, "column": 26 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 244, "column": 9 }, - "end": { "line": 244, "column": 20 } - }, - { - "start": { "line": 244, "column": 24 }, - "end": { "line": 244, "column": 26 } - } - ] - }, - "24": { - "loc": { - "start": { "line": 244, "column": 31 }, - "end": { "line": 244, "column": 49 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 244, "column": 31 }, - "end": { "line": 244, "column": 43 } - }, - { - "start": { "line": 244, "column": 47 }, - "end": { "line": 244, "column": 49 } - } - ] - }, - "25": { - "loc": { - "start": { "line": 246, "column": 11 }, - "end": { "line": 250, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 246, "column": 11 }, - "end": { "line": 250, "column": null } - }, - { - "start": { "line": 248, "column": 11 }, - "end": { "line": 250, "column": null } - } - ] - }, - "26": { - "loc": { - "start": { "line": 246, "column": 16 }, - "end": { "line": 246, "column": 33 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 246, "column": 16 }, - "end": { "line": 246, "column": 27 } - }, - { - "start": { "line": 246, "column": 31 }, - "end": { "line": 246, "column": 33 } - } - ] - }, - "27": { - "loc": { - "start": { "line": 246, "column": 38 }, - "end": { "line": 246, "column": 56 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 246, "column": 38 }, - "end": { "line": 246, "column": 50 } - }, - { - "start": { "line": 246, "column": 54 }, - "end": { "line": 246, "column": 56 } - } - ] - }, - "28": { - "loc": { - "start": { "line": 254, "column": 4 }, - "end": { "line": 261, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 255, "column": 6 }, - "end": { "line": 256, "column": null } - }, - { - "start": { "line": 257, "column": 6 }, - "end": { "line": 258, "column": null } - }, - { - "start": { "line": 259, "column": 6 }, - "end": { "line": 260, "column": null } - } - ] - }, - "29": { - "loc": { - "start": { "line": 311, "column": 6 }, - "end": { "line": 315, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 311, "column": 6 }, - "end": { "line": 315, "column": null } - }, - { - "start": { "line": 313, "column": 13 }, - "end": { "line": 315, "column": null } - } - ] - }, - "30": { - "loc": { - "start": { "line": 313, "column": 13 }, - "end": { "line": 315, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 313, "column": 13 }, - "end": { "line": 315, "column": null } - } - ] - }, - "31": { - "loc": { - "start": { "line": 336, "column": 19 }, - "end": { "line": 336, "column": 60 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 336, "column": 37 }, - "end": { "line": 336, "column": 45 } - }, - { - "start": { "line": 336, "column": 48 }, - "end": { "line": 336, "column": 60 } - } - ] - }, - "32": { - "loc": { - "start": { "line": 339, "column": 6 }, - "end": { "line": 343, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 339, "column": 6 }, - "end": { "line": 343, "column": null } - }, - { - "start": { "line": 341, "column": 13 }, - "end": { "line": 343, "column": null } - } - ] - }, - "33": { - "loc": { - "start": { "line": 341, "column": 13 }, - "end": { "line": 343, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 341, "column": 13 }, - "end": { "line": 343, "column": null } - } - ] - }, - "34": { - "loc": { - "start": { "line": 362, "column": 4 }, - "end": { "line": 415, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 363, "column": 6 }, - "end": { "line": 398, "column": null } - }, - { - "start": { "line": 399, "column": 6 }, - "end": { "line": 403, "column": null } - }, - { - "start": { "line": 404, "column": 6 }, - "end": { "line": 408, "column": null } - }, - { - "start": { "line": 409, "column": 6 }, - "end": { "line": 410, "column": null } - }, - { - "start": { "line": 411, "column": 6 }, - "end": { "line": 412, "column": null } - }, - { - "start": { "line": 413, "column": 6 }, - "end": { "line": 414, "column": null } - } - ] - }, - "35": { - "loc": { - "start": { "line": 365, "column": 8 }, - "end": { "line": 398, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 366, "column": 10 }, - "end": { "line": 367, "column": null } - }, - { - "start": { "line": 368, "column": 10 }, - "end": { "line": 369, "column": null } - }, - { - "start": { "line": 370, "column": 10 }, - "end": { "line": 371, "column": null } - }, - { - "start": { "line": 372, "column": 10 }, - "end": { "line": 373, "column": null } - }, - { - "start": { "line": 374, "column": 10 }, - "end": { "line": 375, "column": null } - }, - { - "start": { "line": 376, "column": 10 }, - "end": { "line": 377, "column": null } - }, - { - "start": { "line": 378, "column": 10 }, - "end": { "line": 387, "column": null } - }, - { - "start": { "line": 388, "column": 10 }, - "end": { "line": 397, "column": null } - } - ] - }, - "36": { - "loc": { - "start": { "line": 380, "column": 12 }, - "end": { "line": 387, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 380, "column": 12 }, - "end": { "line": 387, "column": null } - }, - { - "start": { "line": 385, "column": 19 }, - "end": { "line": 387, "column": null } - } - ] - }, - "37": { - "loc": { - "start": { "line": 381, "column": 14 }, - "end": { "line": 382, "column": 38 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 381, "column": 14 }, - "end": { "line": 381, "column": 51 } - }, - { - "start": { "line": 382, "column": 14 }, - "end": { "line": 382, "column": 38 } - } - ] - }, - "38": { - "loc": { - "start": { "line": 390, "column": 12 }, - "end": { "line": 397, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 390, "column": 12 }, - "end": { "line": 397, "column": null } - }, - { - "start": { "line": 395, "column": 19 }, - "end": { "line": 397, "column": null } - } - ] - }, - "39": { - "loc": { - "start": { "line": 391, "column": 14 }, - "end": { "line": 392, "column": 38 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 391, "column": 14 }, - "end": { "line": 391, "column": 51 } - }, - { - "start": { "line": 392, "column": 14 }, - "end": { "line": 392, "column": 38 } - } - ] - }, - "40": { - "loc": { - "start": { "line": 401, "column": 10 }, - "end": { "line": 402, "column": 49 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 401, "column": 10 }, - "end": { "line": 401, "column": 48 } - }, - { - "start": { "line": 402, "column": 10 }, - "end": { "line": 402, "column": 49 } - } - ] - }, - "41": { - "loc": { - "start": { "line": 406, "column": 10 }, - "end": { "line": 407, "column": 49 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 406, "column": 10 }, - "end": { "line": 406, "column": 48 } - }, - { - "start": { "line": 407, "column": 10 }, - "end": { "line": 407, "column": 49 } - } - ] - } - }, - "s": { - "0": 6, - "1": 87, - "2": 50, - "3": 20, - "4": 0, - "5": 20, - "6": 0, - "7": 0, - "8": 10, - "9": 27, - "10": 2, - "11": 0, - "12": 24, - "13": 1, - "14": 18, - "15": 18, - "16": 7, - "17": 3, - "18": 3, - "19": 4, - "20": 4, - "21": 18, - "22": 18, - "23": 1, - "24": 21, - "25": 1, - "26": 20, - "27": 0, - "28": 10, - "29": 112, - "30": 6, - "31": 308, - "32": 308, - "33": 40, - "34": 235, - "35": 235, - "36": 235, - "37": 419, - "38": 63, - "39": 356, - "40": 38, - "41": 134, - "42": 0, - "43": 134, - "44": 0, - "45": 134, - "46": 134, - "47": 134, - "48": 252, - "49": 252, - "50": 0, - "51": 252, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 134, - "59": 0, - "60": 0, - "61": 0, - "62": 6, - "63": 154, - "64": 154, - "65": 154, - "66": 20, - "67": 160, - "68": 0, - "69": 160, - "70": 160, - "71": 85, - "72": 75, - "73": 3, - "74": 0, - "75": 3, - "76": 0, - "77": 3, - "78": 3, - "79": 1, - "80": 1, - "81": 1, - "82": 30, - "83": 30, - "84": 31, - "85": 54, - "86": 9, - "87": 109, - "88": 106, - "89": 0, - "90": 0, - "91": 0, - "92": 0, - "93": 0, - "94": 0, - "95": 0, - "96": 0, - "97": 0, - "98": 0, - "99": 0, - "100": 0, - "101": 0, - "102": 24, - "103": 24, - "104": 24, - "105": 24, - "106": 48, - "107": 0, - "108": 48, - "109": 24, - "110": 24, - "111": 24, - "112": 24, - "113": 24, - "114": 198, - "115": 129, - "116": 129, - "117": 21, - "118": 30, - "119": 39, - "120": 6, - "121": 9, - "122": 0, - "123": 0, - "124": 0, - "125": 0, - "126": 0, - "127": 24, - "128": 24, - "129": 6, - "130": 18, - "131": 21, - "132": 17, - "133": 22, - "134": 9, - "135": 0, - "136": 6, - "137": 6, - "138": 0, - "139": 6, - "140": 6, - "141": 5, - "142": 6, - "143": 0, - "144": 0, - "145": 0, - "146": 0, - "147": 0, - "148": 0, - "149": 0, - "150": 0, - "151": 0, - "152": 0, - "153": 0, - "154": 0, - "155": 0, - "156": 0, - "157": 0, - "158": 0, - "159": 0, - "160": 0, - "161": 0, - "162": 0, - "163": 0 - }, - "f": { - "0": 87, - "1": 50, - "2": 27, - "3": 18, - "4": 18, - "5": 1, - "6": 21, - "7": 1, - "8": 20, - "9": 0, - "10": 10, - "11": 112, - "12": 308, - "13": 40, - "14": 235, - "15": 0, - "16": 0, - "17": 154, - "18": 20, - "19": 160, - "20": 3, - "21": 3, - "22": 30, - "23": 30, - "24": 31, - "25": 54, - "26": 9, - "27": 109, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 24, - "33": 24, - "34": 48, - "35": 198, - "36": 0, - "37": 5, - "38": 0 - }, - "b": { - "0": [20, 0, 20, 0, 0, 10], - "1": [2, 0, 24, 1], - "2": [24, 0], - "3": [3, 4, 4], - "4": [0, 40], - "5": [63, 356], - "6": [419, 131], - "7": [419, 135], - "8": [38], - "9": [356, 131], - "10": [356, 114], - "11": [0, 134], - "12": [134, 134], - "13": [0], - "14": [134, 0], - "15": [252, 0], - "16": [0, 252], - "17": [0], - "18": [0, 0, 0, 0, 0, 0], - "19": [0, 20], - "20": [0], - "21": [85], - "22": [0, 3], - "23": [3, 3], - "24": [3, 3], - "25": [0, 3], - "26": [3, 3], - "27": [3, 3], - "28": [1, 1, 1], - "29": [0, 0], - "30": [0], - "31": [0, 24], - "32": [0, 48], - "33": [24], - "34": [129, 21, 17, 22, 9, 0], - "35": [21, 30, 39, 6, 9, 0, 0, 24], - "36": [0, 0], - "37": [0, 0], - "38": [6, 18], - "39": [24, 15], - "40": [21, 13], - "41": [17, 13] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/health/HealthCheck.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/health/HealthCheck.ts", - "statementMap": { - "0": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 58 } - }, - "1": { - "start": { "line": 7, "column": 0 }, - "end": { "line": 7, "column": 35 } - }, - "2": { - "start": { "line": 9, "column": 0 }, - "end": { "line": 9, "column": 44 } - }, - "3": { - "start": { "line": 11, "column": 0 }, - "end": { "line": 11, "column": 41 } - }, - "4": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 60, "column": null } - }, - "5": { - "start": { "line": 23, "column": 37 }, - "end": { "line": 23, "column": 39 } - }, - "6": { - "start": { "line": 24, "column": 28 }, - "end": { "line": 24, "column": 46 } - }, - "7": { - "start": { "line": 24, "column": 34 }, - "end": { "line": 24, "column": 46 } - }, - "8": { - "start": { "line": 25, "column": 20 }, - "end": { "line": 25, "column": 66 } - }, - "9": { - "start": { "line": 26, "column": 32 }, - "end": { "line": 31, "column": null } - }, - "10": { - "start": { "line": 27, "column": 6 }, - "end": { "line": 30, "column": null } - }, - "11": { - "start": { "line": 33, "column": 4 }, - "end": { "line": 59, "column": null } - }, - "12": { - "start": { "line": 34, "column": 16 }, - "end": { "line": 34, "column": 36 } - }, - "13": { - "start": { "line": 38, "column": 6 }, - "end": { "line": 58, "column": null } - }, - "14": { - "start": { "line": 39, "column": 36 }, - "end": { "line": 39, "column": 48 } - }, - "15": { - "start": { "line": 40, "column": 8 }, - "end": { "line": 45, "column": null } - }, - "16": { - "start": { "line": 46, "column": 8 }, - "end": { "line": 46, "column": null } - }, - "17": { - "start": { "line": 47, "column": 8 }, - "end": { "line": 49, "column": null } - }, - "18": { - "start": { "line": 48, "column": 10 }, - "end": { "line": 48, "column": null } - }, - "19": { - "start": { "line": 51, "column": 8 }, - "end": { "line": 56, "column": null } - }, - "20": { - "start": { "line": 57, "column": 8 }, - "end": { "line": 57, "column": null } - }, - "21": { - "start": { "line": 61, "column": 2 }, - "end": { "line": 61, "column": null } - }, - "22": { - "start": { "line": 21, "column": 0 }, - "end": { "line": 21, "column": 16 } - }, - "23": { - "start": { "line": 64, "column": 2 }, - "end": { "line": 64, "column": null } - }, - "24": { - "start": { "line": 64, "column": 44 }, - "end": { "line": 64, "column": null } - }, - "25": { - "start": { "line": 65, "column": 16 }, - "end": { "line": 65, "column": 25 } - }, - "26": { - "start": { "line": 66, "column": 2 }, - "end": { "line": 66, "column": null } - }, - "27": { - "start": { "line": 66, "column": 28 }, - "end": { "line": 66, "column": null } - }, - "28": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 67, "column": null } - } - }, - "fnMap": { - "0": { - "name": "healthCheck", - "decl": { - "start": { "line": 21, "column": 16 }, - "end": { "line": 21, "column": 27 } - }, - "loc": { - "start": { "line": 21, "column": 48 }, - "end": { "line": 62, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 22, "column": 14 }, - "end": { "line": 22, "column": 19 } - }, - "loc": { - "start": { "line": 22, "column": 25 }, - "end": { "line": 60, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 24, "column": 28 }, - "end": { "line": 24, "column": 31 } - }, - "loc": { - "start": { "line": 24, "column": 34 }, - "end": { "line": 24, "column": 46 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 26, "column": 37 }, - "end": { "line": 26, "column": 40 } - }, - "loc": { - "start": { "line": 27, "column": 6 }, - "end": { "line": 30, "column": null } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 47, "column": 42 }, - "end": { "line": 47, "column": 43 } - }, - "loc": { - "start": { "line": 47, "column": 50 }, - "end": { "line": 49, "column": 9 } - } - }, - "5": { - "name": "asMessage", - "decl": { - "start": { "line": 63, "column": 9 }, - "end": { "line": 63, "column": 18 } - }, - "loc": { - "start": { "line": 63, "column": 29 }, - "end": { "line": 68, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 25, "column": 21 }, - "end": { "line": 25, "column": 48 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 25, "column": 21 }, - "end": { "line": 25, "column": 30 } - }, - { - "start": { "line": 25, "column": 34 }, - "end": { "line": 25, "column": 48 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 28, "column": 8 }, - "end": { "line": 30, "column": 21 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 29, "column": 12 }, - "end": { "line": 29, "column": 30 } - }, - { - "start": { "line": 30, "column": 12 }, - "end": { "line": 30, "column": 21 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 28, "column": 8 }, - "end": { "line": 28, "column": 49 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 28, "column": 8 }, - "end": { "line": 28, "column": 29 } - }, - { - "start": { "line": 28, "column": 33 }, - "end": { "line": 28, "column": 49 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 44, "column": 19 }, - "end": { "line": 44, "column": 32 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 44, "column": 19 }, - "end": { "line": 44, "column": 26 } - }, - { - "start": { "line": 44, "column": 30 }, - "end": { "line": 44, "column": 32 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 55, "column": 19 }, - "end": { "line": 55, "column": 37 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 55, "column": 19 }, - "end": { "line": 55, "column": 31 } - }, - { - "start": { "line": 55, "column": 35 }, - "end": { "line": 55, "column": 37 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 64, "column": 2 }, - "end": { "line": 64, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 64, "column": 2 }, - "end": { "line": 64, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 66, "column": 2 }, - "end": { "line": 66, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 66, "column": 2 }, - "end": { "line": 66, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 5, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0 }, - "b": { - "0": [0, 0], - "1": [0, 0], - "2": [0, 0], - "3": [0, 0], - "4": [0, 0], - "5": [0], - "6": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/checkPortListening.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/checkPortListening.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 68 } - }, - "1": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 37 } - }, - "2": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 40 } - }, - "3": { - "start": { "line": 8, "column": 15 }, - "end": { "line": 8, "column": 33 } - }, - "4": { - "start": { "line": 9, "column": 19 }, - "end": { "line": 9, "column": 41 } - }, - "5": { - "start": { "line": 11, "column": 20 }, - "end": { "line": 18, "column": 28 } - }, - "6": { - "start": { "line": 15, "column": 16 }, - "end": { "line": 15, "column": 64 } - }, - "7": { - "start": { "line": 17, "column": 16 }, - "end": { "line": 17, "column": 38 } - }, - "8": { - "start": { "line": 19, "column": 2 }, - "end": { "line": 19, "column": null } - }, - "9": { - "start": { "line": 10, "column": 0 }, - "end": { "line": 10, "column": 16 } - }, - "10": { - "start": { "line": 36, "column": 2 }, - "end": { "line": 66, "column": null } - }, - "11": { - "start": { "line": 39, "column": 8 }, - "end": { "line": 45, "column": null } - }, - "12": { - "start": { "line": 47, "column": 6 }, - "end": { "line": 49, "column": null } - }, - "13": { - "start": { "line": 48, "column": 8 }, - "end": { "line": 48, "column": null } - }, - "14": { - "start": { "line": 50, "column": 6 }, - "end": { "line": 53, "column": null } - }, - "15": { - "start": { "line": 56, "column": 6 }, - "end": { "line": 64, "column": null } - }, - "16": { - "start": { "line": 58, "column": 10 }, - "end": { "line": 62, "column": 12 } - }, - "17": { - "start": { "line": 26, "column": 0 }, - "end": { "line": 26, "column": 7 } - } - }, - "fnMap": { - "0": { - "name": "containsAddress", - "decl": { - "start": { "line": 10, "column": 16 }, - "end": { "line": 10, "column": 31 } - }, - "loc": { - "start": { "line": 10, "column": 55 }, - "end": { "line": 20, "column": 1 } - } - }, - "1": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 15, "column": 9 }, - "end": { "line": 15, "column": 10 } - }, - "loc": { - "start": { "line": 15, "column": 16 }, - "end": { "line": 15, "column": 64 } - } - }, - "2": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 17, "column": 9 }, - "end": { "line": 17, "column": 10 } - }, - "loc": { - "start": { "line": 17, "column": 16 }, - "end": { "line": 17, "column": 38 } - } - }, - "3": { - "name": "checkPortListening", - "decl": { - "start": { "line": 26, "column": 22 }, - "end": { "line": 26, "column": 40 } - }, - "loc": { - "start": { "line": 34, "column": 3 }, - "end": { "line": 67, "column": 1 } - } - }, - "4": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 37, "column": 27 }, - "end": { "line": 37, "column": 32 } - }, - "loc": { - "start": { "line": 37, "column": 38 }, - "end": { "line": 54, "column": 5 } - } - }, - "5": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 55, "column": 16 }, - "end": { "line": 55, "column": 17 } - }, - "loc": { - "start": { "line": 55, "column": 28 }, - "end": { "line": 65, "column": 5 } - } - }, - "6": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 57, "column": 8 }, - "end": { "line": 57, "column": 11 } - }, - "loc": { - "start": { "line": 58, "column": 10 }, - "end": { "line": 62, "column": 12 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 39, "column": 8 }, - "end": { "line": 45, "column": null } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 39, "column": 8 }, - "end": { "line": 41, "column": null } - }, - { - "start": { "line": 43, "column": 8 }, - "end": { "line": 45, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 47, "column": 6 }, - "end": { "line": 49, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 47, "column": 6 }, - "end": { "line": 49, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 61, "column": 14 }, - "end": { "line": 61, "column": 78 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 61, "column": 14 }, - "end": { "line": 61, "column": 36 } - }, - { - "start": { "line": 61, "column": 40 }, - "end": { "line": 61, "column": 78 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": 32 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": 23 } - }, - { - "start": { "line": 63, "column": 27 }, - "end": { "line": 63, "column": 32 } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 6, - "3": 6, - "4": 6, - "5": 2, - "6": 12, - "7": 8, - "8": 2, - "9": 6, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 6 - }, - "f": { "0": 2, "1": 12, "2": 8, "3": 0, "4": 0, "5": 0, "6": 0 }, - "b": { "0": [0, 0], "1": [0], "2": [0, 0], "3": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/checkWebUrl.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/checkWebUrl.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 44 } - }, - "1": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 40 } - }, - "2": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 25 } - }, - "3": { - "start": { "line": 13, "column": 27 }, - "end": { "line": 36, "column": 1 } - }, - "4": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 35, "column": null } - }, - "5": { - "start": { "line": 25, "column": 9 }, - "end": { "line": 28, "column": 19 } - }, - "6": { - "start": { "line": 31, "column": 6 }, - "end": { "line": 31, "column": null } - }, - "7": { - "start": { "line": 32, "column": 6 }, - "end": { "line": 32, "column": null } - }, - "8": { - "start": { "line": 33, "column": 6 }, - "end": { "line": 33, "column": null } - }, - "9": { - "start": { "line": 34, "column": 6 }, - "end": { "line": 34, "column": null } - }, - "10": { - "start": { "line": 13, "column": 13 }, - "end": { "line": 13, "column": 27 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 13, "column": 27 }, - "end": { "line": 13, "column": 32 } - }, - "loc": { - "start": { "line": 21, "column": 32 }, - "end": { "line": 36, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 24, "column": 6 }, - "end": { "line": 24, "column": 7 } - }, - "loc": { - "start": { "line": 25, "column": 9 }, - "end": { "line": 28, "column": 19 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 30, "column": 11 }, - "end": { "line": 30, "column": 12 } - }, - "loc": { - "start": { "line": 30, "column": 17 }, - "end": { "line": 35, "column": 5 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 20, "column": 8 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 20, "column": 6 }, - "end": { "line": 20, "column": 8 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 17, "column": 4 }, - "end": { "line": 17, "column": 18 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 17, "column": 14 }, - "end": { "line": 17, "column": 18 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 18, "column": 37 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 18, "column": 21 }, - "end": { "line": 18, "column": 37 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 19, "column": 4 }, - "end": { "line": 19, "column": 53 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 19, "column": 19 }, - "end": { "line": 19, "column": 53 } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 5 - }, - "f": { "0": 0, "1": 0, "2": 0 }, - "b": { "0": [0], "1": [0], "2": [0], "3": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/index.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/index.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 9 } - }, - "1": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 1, "column": 51 } - }, - "2": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 9 } - }, - "3": { - "start": { "line": 2, "column": 9 }, - "end": { "line": 2, "column": 57 } - }, - "4": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 9 } - }, - "5": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 43 } - }, - "6": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "7": { - "start": { "line": 8, "column": 4 }, - "end": { "line": 8, "column": 52 } - }, - "8": { - "start": { "line": 8, "column": 21 }, - "end": { "line": 8, "column": 47 } - }, - "9": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 11, "column": 24 } - }, - "loc": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 1, "column": 51 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 2, "column": 9 }, - "end": { "line": 2, "column": 27 } - }, - "loc": { - "start": { "line": 2, "column": 9 }, - "end": { "line": 2, "column": 57 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 20 } - }, - "loc": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 43 } - } - }, - "3": { - "name": "timeoutPromise", - "decl": { - "start": { "line": 6, "column": 16 }, - "end": { "line": 6, "column": 30 } - }, - "loc": { - "start": { "line": 6, "column": 73 }, - "end": { "line": 10, "column": 1 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 7, "column": 28 }, - "end": { "line": 7, "column": 29 } - }, - "loc": { - "start": { "line": 8, "column": 4 }, - "end": { "line": 8, "column": 52 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 8, "column": 15 }, - "end": { "line": 8, "column": 18 } - }, - "loc": { - "start": { "line": 8, "column": 21 }, - "end": { "line": 8, "column": 47 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 6, "column": 43 }, - "end": { "line": 6, "column": 73 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 6, "column": 71 }, - "end": { "line": 6, "column": 73 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 6, "column": 45 }, - "end": { "line": 6, "column": 66 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 6, "column": 55 }, - "end": { "line": 6, "column": 66 } - } - ] - } - }, - "s": { - "0": 5, - "1": 11, - "2": 5, - "3": 5, - "4": 5, - "5": 11, - "6": 0, - "7": 0, - "8": 0, - "9": 5 - }, - "f": { "0": 6, "1": 0, "2": 6, "3": 0, "4": 0, "5": 0 }, - "b": { "0": [0], "1": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/runHealthScript.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/health/checkFns/runHealthScript.ts", - "statementMap": { - "0": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 40 } - }, - "1": { - "start": { "line": 14, "column": 31 }, - "end": { "line": 37, "column": 1 } - }, - "2": { - "start": { "line": 21, "column": 6 }, - "end": { "line": 21, "column": 60 } - }, - "3": { - "start": { "line": 24, "column": 14 }, - "end": { "line": 32, "column": 4 } - }, - "4": { - "start": { "line": 28, "column": 4 }, - "end": { "line": 28, "column": null } - }, - "5": { - "start": { "line": 29, "column": 4 }, - "end": { "line": 29, "column": null } - }, - "6": { - "start": { "line": 30, "column": 4 }, - "end": { "line": 30, "column": null } - }, - "7": { - "start": { "line": 31, "column": 4 }, - "end": { "line": 31, "column": null } - }, - "8": { - "start": { "line": 33, "column": 2 }, - "end": { "line": 36, "column": null } - }, - "9": { - "start": { "line": 14, "column": 13 }, - "end": { "line": 14, "column": 31 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 14, "column": 31 }, - "end": { "line": 14, "column": 36 } - }, - "loc": { - "start": { "line": 23, "column": 32 }, - "end": { "line": 37, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 20, "column": 14 }, - "end": { "line": 20, "column": 15 } - }, - "loc": { - "start": { "line": 21, "column": 6 }, - "end": { "line": 21, "column": 60 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 27, "column": 11 }, - "end": { "line": 27, "column": 12 } - }, - "loc": { - "start": { "line": 27, "column": 17 }, - "end": { "line": 32, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 22, "column": 8 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 22, "column": 6 }, - "end": { "line": 22, "column": 8 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 18, "column": 19 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 18, "column": 14 }, - "end": { "line": 18, "column": 19 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 19, "column": 4 }, - "end": { "line": 19, "column": 63 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 19, "column": 19 }, - "end": { "line": 19, "column": 63 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 20, "column": 4 }, - "end": { "line": 21, "column": 60 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 20, "column": 14 }, - "end": { "line": 21, "column": 60 } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 5 - }, - "f": { "0": 0, "1": 0, "2": 0 }, - "b": { "0": [0], "1": [0], "2": [0], "3": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupInit.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupInit.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 56 } - }, - "1": { - "start": { "line": 25, "column": 2 }, - "end": { "line": 61, "column": null } - }, - "2": { - "start": { "line": 27, "column": 19 }, - "end": { "line": 27, "column": 54 } - }, - "3": { - "start": { "line": 28, "column": 6 }, - "end": { "line": 39, "column": null } - }, - "4": { - "start": { "line": 29, "column": 8 }, - "end": { "line": 33, "column": null } - }, - "5": { - "start": { "line": 35, "column": 8 }, - "end": { "line": 35, "column": null } - }, - "6": { - "start": { "line": 36, "column": 8 }, - "end": { "line": 38, "column": null } - }, - "7": { - "start": { "line": 40, "column": 6 }, - "end": { "line": 43, "column": null } - }, - "8": { - "start": { "line": 44, "column": 6 }, - "end": { "line": 44, "column": null } - }, - "9": { - "start": { "line": 45, "column": 6 }, - "end": { "line": 45, "column": null } - }, - "10": { - "start": { "line": 48, "column": 6 }, - "end": { "line": 59, "column": null } - }, - "11": { - "start": { "line": 49, "column": 21 }, - "end": { "line": 49, "column": 56 } - }, - "12": { - "start": { "line": 50, "column": 8 }, - "end": { "line": 56, "column": null } - }, - "13": { - "start": { "line": 51, "column": 10 }, - "end": { "line": 55, "column": null } - }, - "14": { - "start": { "line": 58, "column": 8 }, - "end": { "line": 58, "column": null } - }, - "15": { - "start": { "line": 11, "column": 0 }, - "end": { "line": 11, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "setupInit", - "decl": { - "start": { "line": 11, "column": 16 }, - "end": { "line": 11, "column": 25 } - }, - "loc": { - "start": { "line": 20, "column": 33 }, - "end": { "line": 62, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 26, "column": 10 }, - "end": { "line": 26, "column": 15 } - }, - "loc": { - "start": { "line": 26, "column": 25 }, - "end": { "line": 46, "column": 5 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 47, "column": 12 }, - "end": { "line": 47, "column": 17 } - }, - "loc": { - "start": { "line": 47, "column": 27 }, - "end": { "line": 60, "column": 5 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 28, "column": 6 }, - "end": { "line": 39, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 28, "column": 6 }, - "end": { "line": 39, "column": null } - }, - { - "start": { "line": 34, "column": 13 }, - "end": { "line": 39, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 48, "column": 6 }, - "end": { "line": 59, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 48, "column": 6 }, - "end": { "line": 59, "column": null } - }, - { - "start": { "line": 57, "column": 13 }, - "end": { "line": 59, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 50, "column": 8 }, - "end": { "line": 56, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 50, "column": 8 }, - "end": { "line": 56, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 5 - }, - "f": { "0": 0, "1": 0, "2": 0 }, - "b": { "0": [0, 0], "1": [0, 0], "2": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupInstall.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupInstall.ts", - "statementMap": { - "0": { - "start": { "line": 7, "column": 31 }, - "end": { "line": 7, "column": 61 } - }, - "1": { - "start": { "line": 11, "column": 4 }, - "end": { "line": 11, "column": null } - }, - "2": { - "start": { "line": 15, "column": 4 }, - "end": { "line": 17, "column": null } - }, - "3": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 13 } - }, - "4": { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": null } - }, - "5": { - "start": { "line": 21, "column": 0 }, - "end": { "line": 21, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": 31 } - }, - "loc": { - "start": { "line": 7, "column": 61 }, - "end": { "line": 7, "column": 65 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": 8 } - }, - "loc": { - "start": { "line": 9, "column": 34 }, - "end": { "line": 12, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": 7 } - }, - "loc": { - "start": { "line": 14, "column": 66 }, - "end": { "line": 18, "column": 3 } - } - }, - "3": { - "name": "setupInstall", - "decl": { - "start": { "line": 21, "column": 16 }, - "end": { "line": 21, "column": 28 } - }, - "loc": { - "start": { "line": 22, "column": 32 }, - "end": { "line": 25, "column": 1 } - } - } - }, - "branchMap": {}, - "s": { "0": 0, "1": 0, "2": 0, "3": 5, "4": 0, "5": 5 }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupUninstall.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/inits/setupUninstall.ts", - "statementMap": { - "0": { - "start": { "line": 7, "column": 31 }, - "end": { "line": 7, "column": 63 } - }, - "1": { - "start": { "line": 11, "column": 4 }, - "end": { "line": 11, "column": null } - }, - "2": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 21, "column": null } - }, - "3": { - "start": { "line": 19, "column": 6 }, - "end": { "line": 21, "column": null } - }, - "4": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 13 } - }, - "5": { - "start": { "line": 28, "column": 2 }, - "end": { "line": 28, "column": null } - }, - "6": { - "start": { "line": 25, "column": 0 }, - "end": { "line": 25, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": 31 } - }, - "loc": { - "start": { "line": 7, "column": 63 }, - "end": { "line": 7, "column": 67 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": 8 } - }, - "loc": { - "start": { "line": 9, "column": 36 }, - "end": { "line": 12, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": 7 } - }, - "loc": { - "start": { "line": 17, "column": 44 }, - "end": { "line": 22, "column": 3 } - } - }, - "3": { - "name": "setupUninstall", - "decl": { - "start": { "line": 25, "column": 16 }, - "end": { "line": 25, "column": 30 } - }, - "loc": { - "start": { "line": 26, "column": 34 }, - "end": { "line": 29, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 21, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 18, "column": 4 }, - "end": { "line": 21, "column": null } - } - ] - } - }, - "s": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 5, "5": 0, "6": 5 }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0 }, - "b": { "0": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/Host.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/Host.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 51 } - }, - "1": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 33 } - }, - "2": { - "start": { "line": 11, "column": 13 }, - "end": { "line": 52, "column": null } - }, - "3": { - "start": { "line": 84, "column": 26 }, - "end": { "line": 86, "column": 7 } - }, - "4": { - "start": { "line": 90, "column": 13 }, - "end": { "line": 90, "column": null } - }, - "5": { - "start": { "line": 101, "column": 4 }, - "end": { "line": 105, "column": null } - }, - "6": { - "start": { "line": 102, "column": 6 }, - "end": { "line": 102, "column": null } - }, - "7": { - "start": { "line": 104, "column": 6 }, - "end": { "line": 104, "column": null } - }, - "8": { - "start": { "line": 116, "column": 26 }, - "end": { "line": 121, "column": null } - }, - "9": { - "start": { "line": 122, "column": 4 }, - "end": { "line": 122, "column": null } - }, - "10": { - "start": { "line": 124, "column": 4 }, - "end": { "line": 124, "column": null } - }, - "11": { - "start": { "line": 131, "column": 22 }, - "end": { "line": 131, "column": 54 } - }, - "12": { - "start": { "line": 133, "column": 6 }, - "end": { "line": 134, "column": 50 } - }, - "13": { - "start": { "line": 135, "column": 21 }, - "end": { "line": 135, "column": 57 } - }, - "14": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 145, "column": 14 } - }, - "15": { - "start": { "line": 147, "column": 36 }, - "end": { "line": 147, "column": 77 } - }, - "16": { - "start": { "line": 149, "column": 4 }, - "end": { "line": 156, "column": null } - }, - "17": { - "start": { "line": 158, "column": 4 }, - "end": { "line": 158, "column": null } - }, - "18": { - "start": { "line": 165, "column": 4 }, - "end": { "line": 165, "column": null } - }, - "19": { - "start": { "line": 165, "column": 59 }, - "end": { "line": 165, "column": null } - }, - "20": { - "start": { "line": 166, "column": 4 }, - "end": { "line": 166, "column": null } - }, - "21": { - "start": { "line": 166, "column": 53 }, - "end": { "line": 166, "column": null } - }, - "22": { - "start": { "line": 167, "column": 4 }, - "end": { "line": 167, "column": null } - }, - "23": { - "start": { "line": 88, "column": 0 }, - "end": { "line": 88, "column": 13 } - }, - "24": { - "start": { "line": 175, "column": 2 }, - "end": { "line": 175, "column": null } - }, - "25": { - "start": { "line": 192, "column": 4 }, - "end": { "line": 192, "column": null } - }, - "26": { - "start": { "line": 190, "column": 0 }, - "end": { "line": 190, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 89, "column": 2 }, - "end": { "line": 89, "column": null } - }, - "loc": { - "start": { "line": 94, "column": 5 }, - "end": { "line": 95, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 97, "column": 2 }, - "end": { "line": 97, "column": 7 } - }, - "loc": { - "start": { "line": 99, "column": 34 }, - "end": { "line": 106, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 108, "column": 10 }, - "end": { "line": 108, "column": 15 } - }, - "loc": { - "start": { "line": 114, "column": 5 }, - "end": { "line": 125, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 127, "column": 10 }, - "end": { "line": 127, "column": 15 } - }, - "loc": { - "start": { "line": 129, "column": 24 }, - "end": { "line": 159, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 161, "column": 10 }, - "end": { "line": 161, "column": 21 } - }, - "loc": { - "start": { "line": 163, "column": 51 }, - "end": { "line": 168, "column": 3 } - } - }, - "5": { - "name": "inObject", - "decl": { - "start": { "line": 171, "column": 9 }, - "end": { "line": 171, "column": 17 } - }, - "loc": { - "start": { "line": 173, "column": 10 }, - "end": { "line": 176, "column": 1 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 191, "column": 2 }, - "end": { "line": 191, "column": 14 } - }, - "loc": { - "start": { "line": 191, "column": 55 }, - "end": { "line": 193, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 101, "column": 4 }, - "end": { "line": 105, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 101, "column": 4 }, - "end": { "line": 105, "column": null } - }, - { - "start": { "line": 103, "column": 11 }, - "end": { "line": 105, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 133, "column": 6 }, - "end": { "line": 134, "column": 50 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 133, "column": 6 }, - "end": { "line": 133, "column": 35 } - }, - { - "start": { "line": 134, "column": 6 }, - "end": { "line": 134, "column": 50 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 145, "column": 14 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 138, "column": 10 }, - "end": { "line": 144, "column": null } - }, - { - "start": { "line": 145, "column": 10 }, - "end": { "line": 145, "column": 14 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 137, "column": 37 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 137, "column": 6 }, - "end": { "line": 137, "column": 14 } - }, - { - "start": { "line": 137, "column": 18 }, - "end": { "line": 137, "column": 37 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 143, "column": 16 }, - "end": { "line": 143, "column": 59 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 143, "column": 38 }, - "end": { "line": 143, "column": 52 } - }, - { - "start": { "line": 143, "column": 55 }, - "end": { "line": 143, "column": 59 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 147, "column": 36 }, - "end": { "line": 147, "column": 77 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 147, "column": 56 }, - "end": { "line": 147, "column": 60 } - }, - { - "start": { "line": 147, "column": 63 }, - "end": { "line": 147, "column": 77 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 165, "column": 4 }, - "end": { "line": 165, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 165, "column": 4 }, - "end": { "line": 165, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 165, "column": 8 }, - "end": { "line": 165, "column": 57 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 165, "column": 8 }, - "end": { "line": 165, "column": 37 } - }, - { - "start": { "line": 165, "column": 41 }, - "end": { "line": 165, "column": 57 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 166, "column": 4 }, - "end": { "line": 166, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 166, "column": 4 }, - "end": { "line": 166, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 166, "column": 8 }, - "end": { "line": 166, "column": 51 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 166, "column": 8 }, - "end": { "line": 166, "column": 30 } - }, - { - "start": { "line": 166, "column": 34 }, - "end": { "line": 166, "column": 51 } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 6, - "3": 6, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 6, - "24": 0, - "25": 0, - "26": 6 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0 }, - "b": { - "0": [0, 0], - "1": [0, 0], - "2": [0, 0], - "3": [0, 0], - "4": [0, 0], - "5": [0, 0], - "6": [0], - "7": [0, 0], - "8": [0], - "9": [0, 0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/Origin.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/Origin.ts", - "statementMap": { - "0": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 8, "column": 20 } - }, - "1": { - "start": { "line": 9, "column": 13 }, - "end": { "line": 9, "column": 33 } - }, - "2": { - "start": { "line": 10, "column": 13 }, - "end": { "line": 10, "column": 34 } - }, - "3": { - "start": { "line": 11, "column": 13 }, - "end": { "line": 11, "column": 37 } - }, - "4": { - "start": { "line": 15, "column": 22 }, - "end": { "line": 19, "column": 16 } - }, - "5": { - "start": { "line": 17, "column": 24 }, - "end": { "line": 17, "column": 79 } - }, - "6": { - "start": { "line": 21, "column": 15 }, - "end": { "line": 21, "column": 54 } - }, - "7": { - "start": { "line": 23, "column": 4 }, - "end": { "line": 30, "column": null } - }, - "8": { - "start": { "line": 44, "column": 26 }, - "end": { "line": 44, "column": 28 } - }, - "9": { - "start": { "line": 45, "column": 4 }, - "end": { "line": 77, "column": null } - }, - "10": { - "start": { "line": 57, "column": 10 }, - "end": { "line": 57, "column": 34 } - }, - "11": { - "start": { "line": 59, "column": 26 }, - "end": { "line": 64, "column": 8 } - }, - "12": { - "start": { "line": 66, "column": 6 }, - "end": { "line": 74, "column": null } - }, - "13": { - "start": { "line": 76, "column": 6 }, - "end": { "line": 76, "column": null } - }, - "14": { - "start": { "line": 79, "column": 4 }, - "end": { "line": 79, "column": null } - }, - "15": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "loc": { - "start": { "line": 11, "column": 37 }, - "end": { "line": 12, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": 7 } - }, - "loc": { - "start": { "line": 14, "column": 64 }, - "end": { "line": 31, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 17, "column": 8 }, - "end": { "line": 17, "column": 9 } - }, - "loc": { - "start": { "line": 17, "column": 24 }, - "end": { "line": 17, "column": 79 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 41, "column": 2 }, - "end": { "line": 41, "column": 7 } - }, - "loc": { - "start": { "line": 42, "column": 48 }, - "end": { "line": 80, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 21, "column": 15 }, - "end": { "line": 21, "column": 54 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 21, "column": 34 }, - "end": { "line": 21, "column": 49 } - }, - { - "start": { "line": 21, "column": 52 }, - "end": { "line": 21, "column": 54 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 26, "column": 14 }, - "end": { "line": 26, "column": 65 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 26, "column": 31 }, - "end": { "line": 26, "column": 51 } - }, - { - "start": { "line": 26, "column": 54 }, - "end": { "line": 26, "column": 65 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 27, "column": 17 }, - "end": { "line": 27, "column": 69 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 27, "column": 34 }, - "end": { "line": 27, "column": 52 } - }, - { - "start": { "line": 27, "column": 55 }, - "end": { "line": 27, "column": 69 } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 6 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0 }, - "b": { "0": [0, 0], "1": [0, 0], "2": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/ServiceInterfaceBuilder.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/ServiceInterfaceBuilder.ts", - "statementMap": { - "0": { - "start": { "line": 18, "column": 13 }, - "end": { "line": 18, "column": null } - }, - "1": { - "start": { "line": 16, "column": 0 }, - "end": { "line": 16, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 17, "column": null } - }, - "loc": { - "start": { "line": 30, "column": 5 }, - "end": { "line": 31, "column": 6 } - } - } - }, - "branchMap": {}, - "s": { "0": 0, "1": 5 }, - "f": { "0": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/setupInterfaces.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/interfaces/setupInterfaces.ts", - "statementMap": { - "0": { - "start": { "line": 22, "column": 13 }, - "end": { "line": 22, "column": null } - }, - "1": { - "start": { "line": 23, "column": 48 }, - "end": { "line": 23, "column": 67 } - }, - "2": { - "start": { "line": 23, "column": 65 }, - "end": { "line": 23, "column": 67 } - }, - "3": { - "start": { "line": 23, "column": 13 }, - "end": { "line": 23, "column": 48 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 23, "column": 48 }, - "end": { "line": 23, "column": 49 } - }, - "loc": { - "start": { "line": 23, "column": 65 }, - "end": { "line": 23, "column": 67 } - } - } - }, - "branchMap": {}, - "s": { "0": 5, "1": 5, "2": 0, "3": 5 }, - "f": { "0": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/CommandController.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/CommandController.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 43 } - }, - "1": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 58 } - }, - "2": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": null } - }, - "3": { - "start": { "line": 12, "column": 0 }, - "end": { "line": 12, "column": 51 } - }, - "4": { - "start": { "line": 17, "column": 13 }, - "end": { "line": 17, "column": 44 } - }, - "5": { - "start": { "line": 18, "column": 12 }, - "end": { "line": 18, "column": 38 } - }, - "6": { - "start": { "line": 19, "column": 21 }, - "end": { "line": 19, "column": 47 } - }, - "7": { - "start": { "line": 20, "column": 12 }, - "end": { "line": 20, "column": 54 } - }, - "8": { - "start": { "line": 21, "column": 13 }, - "end": { "line": 21, "column": 38 } - }, - "9": { - "start": { "line": 24, "column": 4 }, - "end": { "line": 100, "column": null } - }, - "10": { - "start": { "line": 49, "column": 23 }, - "end": { "line": 49, "column": 44 } - }, - "11": { - "start": { "line": 51, "column": 8 }, - "end": { "line": 59, "column": 16 } - }, - "12": { - "start": { "line": 54, "column": 27 }, - "end": { "line": 54, "column": 71 } - }, - "13": { - "start": { "line": 55, "column": 14 }, - "end": { "line": 57, "column": null } - }, - "14": { - "start": { "line": 56, "column": 16 }, - "end": { "line": 56, "column": null } - }, - "15": { - "start": { "line": 58, "column": 14 }, - "end": { "line": 58, "column": null } - }, - "16": { - "start": { "line": 61, "column": 6 }, - "end": { "line": 69, "column": null } - }, - "17": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 64, "column": null } - }, - "18": { - "start": { "line": 66, "column": 8 }, - "end": { "line": 68, "column": null } - }, - "19": { - "start": { "line": 70, "column": 20 }, - "end": { "line": 70, "column": 37 } - }, - "20": { - "start": { "line": 71, "column": 21 }, - "end": { "line": 91, "column": 8 } - }, - "21": { - "start": { "line": 72, "column": 8 }, - "end": { "line": 90, "column": null } - }, - "22": { - "start": { "line": 73, "column": 10 }, - "end": { "line": 73, "column": null } - }, - "23": { - "start": { "line": 74, "column": 10 }, - "end": { "line": 80, "column": null } - }, - "24": { - "start": { "line": 79, "column": 12 }, - "end": { "line": 79, "column": null } - }, - "25": { - "start": { "line": 81, "column": 10 }, - "end": { "line": 89, "column": null } - }, - "26": { - "start": { "line": 82, "column": 12 }, - "end": { "line": 82, "column": null } - }, - "27": { - "start": { "line": 84, "column": 12 }, - "end": { "line": 88, "column": null } - }, - "28": { - "start": { "line": 93, "column": 6 }, - "end": { "line": 99, "column": null } - }, - "29": { - "start": { "line": 103, "column": 4 }, - "end": { "line": 103, "column": null } - }, - "30": { - "start": { "line": 106, "column": 4 }, - "end": { "line": 109, "column": null } - }, - "31": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 109, "column": null } - }, - "32": { - "start": { "line": 108, "column": 8 }, - "end": { "line": 108, "column": null } - }, - "33": { - "start": { "line": 110, "column": 4 }, - "end": { "line": 117, "column": null } - }, - "34": { - "start": { "line": 111, "column": 6 }, - "end": { "line": 111, "column": null } - }, - "35": { - "start": { "line": 113, "column": 6 }, - "end": { "line": 115, "column": null } - }, - "36": { - "start": { "line": 114, "column": 8 }, - "end": { "line": 114, "column": null } - }, - "37": { - "start": { "line": 116, "column": 6 }, - "end": { "line": 116, "column": null } - }, - "38": { - "start": { "line": 120, "column": 4 }, - "end": { "line": 137, "column": null } - }, - "39": { - "start": { "line": 121, "column": 6 }, - "end": { "line": 127, "column": null } - }, - "40": { - "start": { "line": 122, "column": 8 }, - "end": { "line": 126, "column": null } - }, - "41": { - "start": { "line": 123, "column": 10 }, - "end": { "line": 125, "column": null } - }, - "42": { - "start": { "line": 129, "column": 6 }, - "end": { "line": 133, "column": null } - }, - "43": { - "start": { "line": 130, "column": 8 }, - "end": { "line": 132, "column": null } - }, - "44": { - "start": { "line": 131, "column": 10 }, - "end": { "line": 131, "column": null } - }, - "45": { - "start": { "line": 134, "column": 6 }, - "end": { "line": 134, "column": null } - }, - "46": { - "start": { "line": 136, "column": 6 }, - "end": { "line": 136, "column": null } - }, - "47": { - "start": { "line": 15, "column": 0 }, - "end": { "line": 15, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 16, "column": null } - }, - "loc": { - "start": { "line": 21, "column": 61 }, - "end": { "line": 22, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 23, "column": 2 }, - "end": { "line": 23, "column": 8 } - }, - "loc": { - "start": { "line": 23, "column": 11 }, - "end": { "line": 101, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 24, "column": 11 }, - "end": { "line": 24, "column": 16 } - }, - "loc": { - "start": { "line": 48, "column": 8 }, - "end": { "line": 100, "column": 5 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 53, "column": 19 }, - "end": { "line": 53, "column": 24 } - }, - "loc": { - "start": { "line": 53, "column": 30 }, - "end": { "line": 59, "column": 13 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 71, "column": 39 }, - "end": { "line": 71, "column": 40 } - }, - "loc": { - "start": { "line": 71, "column": 59 }, - "end": { "line": 91, "column": 7 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 72, "column": 32 }, - "end": { "line": 72, "column": 33 } - }, - "loc": { - "start": { "line": 72, "column": 41 }, - "end": { "line": 90, "column": 9 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 102, "column": 2 }, - "end": { "line": 102, "column": 6 } - }, - "loc": { - "start": { "line": 102, "column": 24 }, - "end": { "line": 104, "column": 3 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 105, "column": 2 }, - "end": { "line": 105, "column": 7 } - }, - "loc": { - "start": { "line": 105, "column": 42 }, - "end": { "line": 118, "column": 3 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 107, "column": 17 }, - "end": { "line": 107, "column": 20 } - }, - "loc": { - "start": { "line": 107, "column": 22 }, - "end": { "line": 109, "column": 7 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 116, "column": 48 }, - "end": { "line": 116, "column": 49 } - }, - "loc": { - "start": { "line": 116, "column": 54 }, - "end": { "line": 116, "column": 57 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 119, "column": 2 }, - "end": { "line": 119, "column": 7 } - }, - "loc": { - "start": { "line": 119, "column": 69 }, - "end": { "line": 138, "column": 3 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 130, "column": 19 }, - "end": { "line": 130, "column": 22 } - }, - "loc": { - "start": { "line": 130, "column": 24 }, - "end": { "line": 132, "column": 9 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 21, "column": 13 }, - "end": { "line": 21, "column": 61 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 21, "column": 38 }, - "end": { "line": 21, "column": 61 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 51, "column": 8 }, - "end": { "line": 59, "column": 16 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 52, "column": 12 }, - "end": { "line": 52, "column": 24 } - }, - { - "start": { "line": 53, "column": 12 }, - "end": { "line": 59, "column": 16 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 55, "column": 32 }, - "end": { "line": 55, "column": 52 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 55, "column": 32 }, - "end": { "line": 55, "column": 46 } - }, - { - "start": { "line": 55, "column": 50 }, - "end": { "line": 55, "column": 52 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 61, "column": 6 }, - "end": { "line": 69, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 61, "column": 6 }, - "end": { "line": 69, "column": null } - }, - { - "start": { "line": 65, "column": 13 }, - "end": { "line": 69, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 74, "column": 10 }, - "end": { "line": 80, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 74, "column": 10 }, - "end": { "line": 80, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 75, "column": 12 }, - "end": { "line": 77, "column": 67 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 75, "column": 12 }, - "end": { "line": 75, "column": 22 } - }, - { - "start": { "line": 76, "column": 12 }, - "end": { "line": 76, "column": 24 } - }, - { - "start": { "line": 77, "column": 13 }, - "end": { "line": 77, "column": 26 } - }, - { - "start": { "line": 77, "column": 30 }, - "end": { "line": 77, "column": 66 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 81, "column": 10 }, - "end": { "line": 89, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 81, "column": 10 }, - "end": { "line": 89, "column": null } - }, - { - "start": { "line": 83, "column": 17 }, - "end": { "line": 89, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 105, "column": 13 }, - "end": { "line": 105, "column": 42 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 105, "column": 40 }, - "end": { "line": 105, "column": 42 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 105, "column": 15 }, - "end": { "line": 105, "column": 35 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 105, "column": 25 }, - "end": { "line": 105, "column": 35 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 106, "column": 4 }, - "end": { "line": 109, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 106, "column": 4 }, - "end": { "line": 109, "column": null } - } - ] - }, - "10": { - "loc": { - "start": { "line": 113, "column": 6 }, - "end": { "line": 115, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 113, "column": 6 }, - "end": { "line": 115, "column": null } - } - ] - }, - "11": { - "loc": { - "start": { "line": 119, "column": 13 }, - "end": { "line": 119, "column": 69 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 119, "column": 67 }, - "end": { "line": 119, "column": 69 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 119, "column": 15 }, - "end": { "line": 119, "column": 31 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 119, "column": 24 }, - "end": { "line": 119, "column": 31 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 119, "column": 33 }, - "end": { "line": 119, "column": 62 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 119, "column": 43 }, - "end": { "line": 119, "column": 62 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 121, "column": 6 }, - "end": { "line": 127, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 121, "column": 6 }, - "end": { "line": 127, "column": null } - } - ] - }, - "15": { - "loc": { - "start": { "line": 122, "column": 8 }, - "end": { "line": 126, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 122, "column": 8 }, - "end": { "line": 126, "column": null } - } - ] - }, - "16": { - "loc": { - "start": { "line": 129, "column": 6 }, - "end": { "line": 133, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 129, "column": 6 }, - "end": { "line": 133, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0 - }, - "b": { - "0": [0], - "1": [0, 0], - "2": [0, 0], - "3": [0, 0], - "4": [0], - "5": [0, 0, 0, 0], - "6": [0, 0], - "7": [0], - "8": [0], - "9": [0], - "10": [0], - "11": [0], - "12": [0], - "13": [0], - "14": [0], - "15": [0], - "16": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Daemon.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Daemon.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 41 } - }, - "1": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 55 } - }, - "2": { - "start": { "line": 6, "column": 29 }, - "end": { "line": 6, "column": 33 } - }, - "3": { - "start": { "line": 7, "column": 23 }, - "end": { "line": 7, "column": 28 } - }, - "4": { - "start": { "line": 14, "column": 56 }, - "end": { "line": 14, "column": 60 } - }, - "5": { - "start": { "line": 15, "column": 28 }, - "end": { "line": 15, "column": 33 } - }, - "6": { - "start": { "line": 16, "column": 22 }, - "end": { "line": 16, "column": 68 } - }, - "7": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 18, "column": null } - }, - "8": { - "start": { "line": 21, "column": 4 }, - "end": { "line": 52, "column": null } - }, - "9": { - "start": { "line": 44, "column": 27 }, - "end": { "line": 49, "column": null } - }, - "10": { - "start": { "line": 45, "column": 8 }, - "end": { "line": 49, "column": null } - }, - "11": { - "start": { "line": 51, "column": 6 }, - "end": { "line": 51, "column": null } - }, - "12": { - "start": { "line": 55, "column": 4 }, - "end": { "line": 57, "column": null } - }, - "13": { - "start": { "line": 56, "column": 6 }, - "end": { "line": 56, "column": 12 } - }, - "14": { - "start": { "line": 58, "column": 4 }, - "end": { "line": 58, "column": null } - }, - "15": { - "start": { "line": 59, "column": 25 }, - "end": { "line": 59, "column": 26 } - }, - "16": { - "start": { "line": 60, "column": 4 }, - "end": { "line": 70, "column": null } - }, - "17": { - "start": { "line": 61, "column": 6 }, - "end": { "line": 67, "column": null } - }, - "18": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 62, "column": null } - }, - "19": { - "start": { "line": 63, "column": 8 }, - "end": { "line": 63, "column": null } - }, - "20": { - "start": { "line": 63, "column": 59 }, - "end": { "line": 63, "column": 77 } - }, - "21": { - "start": { "line": 64, "column": 8 }, - "end": { "line": 64, "column": null } - }, - "22": { - "start": { "line": 64, "column": 39 }, - "end": { "line": 64, "column": 74 } - }, - "23": { - "start": { "line": 65, "column": 8 }, - "end": { "line": 65, "column": null } - }, - "24": { - "start": { "line": 66, "column": 8 }, - "end": { "line": 66, "column": null } - }, - "25": { - "start": { "line": 69, "column": 6 }, - "end": { "line": 69, "column": null } - }, - "26": { - "start": { "line": 76, "column": 4 }, - "end": { "line": 76, "column": null } - }, - "27": { - "start": { "line": 82, "column": 4 }, - "end": { "line": 82, "column": null } - }, - "28": { - "start": { "line": 83, "column": 4 }, - "end": { "line": 85, "column": null } - }, - "29": { - "start": { "line": 85, "column": 20 }, - "end": { "line": 85, "column": 45 } - }, - "30": { - "start": { "line": 86, "column": 4 }, - "end": { "line": 86, "column": null } - }, - "31": { - "start": { "line": 13, "column": 0 }, - "end": { "line": 13, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 16, "column": 22 } - }, - "loc": { - "start": { "line": 16, "column": 68 }, - "end": { "line": 16, "column": 72 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 17, "column": 6 } - }, - "loc": { - "start": { "line": 17, "column": 24 }, - "end": { "line": 19, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 20, "column": 2 }, - "end": { "line": 20, "column": 8 } - }, - "loc": { - "start": { "line": 20, "column": 11 }, - "end": { "line": 53, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 21, "column": 11 }, - "end": { "line": 21, "column": 16 } - }, - "loc": { - "start": { "line": 43, "column": 8 }, - "end": { "line": 52, "column": 5 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 44, "column": 27 }, - "end": { "line": 44, "column": 30 } - }, - "loc": { - "start": { "line": 45, "column": 8 }, - "end": { "line": 49, "column": null } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 54, "column": 2 }, - "end": { "line": 54, "column": 7 } - }, - "loc": { - "start": { "line": 54, "column": 13 }, - "end": { "line": 71, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 60, "column": 16 }, - "end": { "line": 60, "column": 21 } - }, - "loc": { - "start": { "line": 60, "column": 27 }, - "end": { "line": 68, "column": 5 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 63, "column": 50 }, - "end": { "line": 63, "column": 51 } - }, - "loc": { - "start": { "line": 63, "column": 59 }, - "end": { "line": 63, "column": 77 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 64, "column": 26 }, - "end": { "line": 64, "column": 27 } - }, - "loc": { - "start": { "line": 64, "column": 39 }, - "end": { "line": 64, "column": 74 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 68, "column": 13 }, - "end": { "line": 68, "column": 14 } - }, - "loc": { - "start": { "line": 68, "column": 21 }, - "end": { "line": 70, "column": 5 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 72, "column": 7 } - }, - "loc": { - "start": { "line": 75, "column": 3 }, - "end": { "line": 77, "column": 3 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 78, "column": 2 }, - "end": { "line": 78, "column": 7 } - }, - "loc": { - "start": { "line": 81, "column": 3 }, - "end": { "line": 87, "column": 3 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 85, "column": 13 }, - "end": { "line": 85, "column": 14 } - }, - "loc": { - "start": { "line": 85, "column": 20 }, - "end": { "line": 85, "column": 45 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 55, "column": 4 }, - "end": { "line": 57, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 55, "column": 4 }, - "end": { "line": 57, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0 - }, - "b": { "0": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Daemons.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Daemons.ts", - "statementMap": { - "0": { - "start": { "line": 18, "column": 0 }, - "end": { "line": 18, "column": 37 } - }, - "1": { - "start": { "line": 19, "column": 0 }, - "end": { "line": 19, "column": 40 } - }, - "2": { - "start": { "line": 21, "column": 0 }, - "end": { "line": 21, "column": 9 } - }, - "3": { - "start": { "line": 21, "column": 9 }, - "end": { "line": 21, "column": 33 } - }, - "4": { - "start": { "line": 22, "column": 0 }, - "end": { "line": 22, "column": 9 } - }, - "5": { - "start": { "line": 22, "column": 9 }, - "end": { "line": 22, "column": 55 } - }, - "6": { - "start": { "line": 23, "column": 0 }, - "end": { "line": 23, "column": 45 } - }, - "7": { - "start": { "line": 24, "column": 0 }, - "end": { "line": 24, "column": 33 } - }, - "8": { - "start": { "line": 25, "column": 0 }, - "end": { "line": 25, "column": 55 } - }, - "9": { - "start": { "line": 27, "column": 13 }, - "end": { "line": 27, "column": null } - }, - "10": { - "start": { "line": 28, "column": 13 }, - "end": { "line": 28, "column": null } - }, - "11": { - "start": { "line": 54, "column": 26 }, - "end": { "line": 55, "column": 34 } - }, - "12": { - "start": { "line": 55, "column": 2 }, - "end": { "line": 55, "column": 34 } - }, - "13": { - "start": { "line": 54, "column": 13 }, - "end": { "line": 54, "column": 26 } - }, - "14": { - "start": { "line": 82, "column": 13 }, - "end": { "line": 82, "column": 31 } - }, - "15": { - "start": { "line": 83, "column": 13 }, - "end": { "line": 83, "column": 76 } - }, - "16": { - "start": { "line": 84, "column": 13 }, - "end": { "line": 84, "column": 39 } - }, - "17": { - "start": { "line": 85, "column": 13 }, - "end": { "line": 85, "column": 23 } - }, - "18": { - "start": { "line": 86, "column": 13 }, - "end": { "line": 86, "column": 42 } - }, - "19": { - "start": { "line": 103, "column": 4 }, - "end": { "line": 109, "column": null } - }, - "20": { - "start": { "line": 126, "column": 24 }, - "end": { "line": 126, "column": 43 } - }, - "21": { - "start": { "line": 127, "column": 19 }, - "end": { "line": 130, "column": 6 } - }, - "22": { - "start": { "line": 131, "column": 25 }, - "end": { "line": 142, "column": null } - }, - "23": { - "start": { "line": 135, "column": 20 }, - "end": { "line": 135, "column": 47 } - }, - "24": { - "start": { "line": 136, "column": 23 }, - "end": { "line": 136, "column": 29 } - }, - "25": { - "start": { "line": 137, "column": 21 }, - "end": { "line": 137, "column": 43 } - }, - "26": { - "start": { "line": 144, "column": 20 }, - "end": { "line": 144, "column": 47 } - }, - "27": { - "start": { "line": 145, "column": 16 }, - "end": { "line": 145, "column": 49 } - }, - "28": { - "start": { "line": 146, "column": 26 }, - "end": { "line": 146, "column": 63 } - }, - "29": { - "start": { "line": 147, "column": 4 }, - "end": { "line": 153, "column": null } - }, - "30": { - "start": { "line": 157, "column": 4 }, - "end": { "line": 157, "column": null } - }, - "31": { - "start": { "line": 158, "column": 4 }, - "end": { "line": 160, "column": null } - }, - "32": { - "start": { "line": 159, "column": 6 }, - "end": { "line": 159, "column": 49 } - }, - "33": { - "start": { "line": 159, "column": 25 }, - "end": { "line": 159, "column": 48 } - }, - "34": { - "start": { "line": 161, "column": 18 }, - "end": { "line": 169, "column": null } - }, - "35": { - "start": { "line": 163, "column": 8 }, - "end": { "line": 167, "column": null } - }, - "36": { - "start": { "line": 164, "column": 10 }, - "end": { "line": 164, "column": null } - }, - "37": { - "start": { "line": 164, "column": 58 }, - "end": { "line": 164, "column": 73 } - }, - "38": { - "start": { "line": 166, "column": 10 }, - "end": { "line": 166, "column": null } - }, - "39": { - "start": { "line": 170, "column": 4 }, - "end": { "line": 170, "column": null } - }, - "40": { - "start": { "line": 170, "column": 23 }, - "end": { "line": 170, "column": 35 } - }, - "41": { - "start": { "line": 171, "column": 4 }, - "end": { "line": 171, "column": null } - }, - "42": { - "start": { "line": 175, "column": 4 }, - "end": { "line": 175, "column": null } - }, - "43": { - "start": { "line": 80, "column": 0 }, - "end": { "line": 80, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 21, "column": 9 }, - "end": { "line": 21, "column": 15 } - }, - "loc": { - "start": { "line": 21, "column": 9 }, - "end": { "line": 21, "column": 33 } - } - }, - "1": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 22, "column": 9 }, - "end": { "line": 22, "column": 26 } - }, - "loc": { - "start": { "line": 22, "column": 9 }, - "end": { "line": 22, "column": 55 } - } - }, - "2": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 54, "column": 26 }, - "end": { "line": 54, "column": 58 } - }, - "loc": { - "start": { "line": 55, "column": 2 }, - "end": { "line": 55, "column": 34 } - } - }, - "3": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 81, "column": 2 }, - "end": { "line": 81, "column": null } - }, - "loc": { - "start": { "line": 86, "column": 42 }, - "end": { "line": 87, "column": 6 } - } - }, - "4": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 98, "column": 2 }, - "end": { "line": 98, "column": 8 } - }, - "loc": { - "start": { "line": 102, "column": 3 }, - "end": { "line": 110, "column": 3 } - } - }, - "5": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 117, "column": 2 }, - "end": { "line": 117, "column": 11 } - }, - "loc": { - "start": { "line": 124, "column": 54 }, - "end": { "line": 154, "column": 3 } - } - }, - "6": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 135, "column": 13 }, - "end": { "line": 135, "column": 14 } - }, - "loc": { - "start": { "line": 135, "column": 20 }, - "end": { "line": 135, "column": 47 } - } - }, - "7": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 136, "column": 16 }, - "end": { "line": 136, "column": 17 } - }, - "loc": { - "start": { "line": 136, "column": 23 }, - "end": { "line": 136, "column": 29 } - } - }, - "8": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 137, "column": 13 }, - "end": { "line": 137, "column": 14 } - }, - "loc": { - "start": { "line": 137, "column": 21 }, - "end": { "line": 137, "column": 43 } - } - }, - "9": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 156, "column": 2 }, - "end": { "line": 156, "column": 7 } - }, - "loc": { - "start": { "line": 156, "column": 13 }, - "end": { "line": 172, "column": 3 } - } - }, - "10": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 158, "column": 31 }, - "end": { "line": 158, "column": 32 } - }, - "loc": { - "start": { "line": 159, "column": 6 }, - "end": { "line": 159, "column": 49 } - } - }, - "11": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 159, "column": 19 }, - "end": { "line": 159, "column": 22 } - }, - "loc": { - "start": { "line": 159, "column": 25 }, - "end": { "line": 159, "column": 48 } - } - }, - "12": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 162, "column": 12 }, - "end": { "line": 162, "column": 17 } - }, - "loc": { - "start": { "line": 162, "column": 71 }, - "end": { "line": 168, "column": 7 } - } - }, - "13": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 164, "column": 51 }, - "end": { "line": 164, "column": 52 } - }, - "loc": { - "start": { "line": 164, "column": 58 }, - "end": { "line": 164, "column": 73 } - } - }, - "14": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 170, "column": 17 }, - "end": { "line": 170, "column": 20 } - }, - "loc": { - "start": { "line": 170, "column": 23 }, - "end": { "line": 170, "column": 35 } - } - }, - "15": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 174, "column": 10 }, - "end": { "line": 174, "column": 26 } - }, - "loc": { - "start": { "line": 174, "column": 26 }, - "end": { "line": 176, "column": 3 } - } - } - }, - "branchMap": {}, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5, - "11": 5, - "12": 0, - "13": 5, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0 - }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/HealthDaemon.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/HealthDaemon.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 58 } - }, - "1": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 43 } - }, - "2": { - "start": { "line": 7, "column": 0 }, - "end": { "line": 7, "column": 41 } - }, - "3": { - "start": { "line": 9, "column": 20 }, - "end": { "line": 15, "column": 1 } - }, - "4": { - "start": { "line": 11, "column": 18 }, - "end": { "line": 13, "column": 4 } - }, - "5": { - "start": { "line": 12, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "6": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": null } - }, - "7": { - "start": { "line": 25, "column": 39 }, - "end": { "line": 25, "column": 76 } - }, - "8": { - "start": { "line": 26, "column": 49 }, - "end": { "line": 26, "column": 51 } - }, - "9": { - "start": { "line": 27, "column": 20 }, - "end": { "line": 27, "column": 25 } - }, - "10": { - "start": { "line": 29, "column": 21 }, - "end": { "line": 29, "column": 44 } - }, - "11": { - "start": { "line": 30, "column": 13 }, - "end": { "line": 30, "column": 32 } - }, - "12": { - "start": { "line": 31, "column": 21 }, - "end": { "line": 31, "column": 49 } - }, - "13": { - "start": { "line": 32, "column": 13 }, - "end": { "line": 32, "column": 23 } - }, - "14": { - "start": { "line": 33, "column": 13 }, - "end": { "line": 33, "column": 26 } - }, - "15": { - "start": { "line": 34, "column": 13 }, - "end": { "line": 34, "column": 25 } - }, - "16": { - "start": { "line": 35, "column": 13 }, - "end": { "line": 35, "column": 29 } - }, - "17": { - "start": { "line": 36, "column": 13 }, - "end": { "line": 36, "column": 38 } - }, - "18": { - "start": { "line": 38, "column": 4 }, - "end": { "line": 38, "column": null } - }, - "19": { - "start": { "line": 39, "column": 4 }, - "end": { "line": 39, "column": null } - }, - "20": { - "start": { "line": 39, "column": 37 }, - "end": { "line": 39, "column": 76 } - }, - "21": { - "start": { "line": 39, "column": 56 }, - "end": { "line": 39, "column": 75 } - }, - "22": { - "start": { "line": 47, "column": 4 }, - "end": { "line": 47, "column": null } - }, - "23": { - "start": { "line": 48, "column": 4 }, - "end": { "line": 48, "column": null } - }, - "24": { - "start": { "line": 49, "column": 4 }, - "end": { "line": 49, "column": null } - }, - "25": { - "start": { "line": 51, "column": 4 }, - "end": { "line": 56, "column": null } - }, - "26": { - "start": { "line": 52, "column": 6 }, - "end": { "line": 55, "column": 8 } - }, - "27": { - "start": { "line": 61, "column": 4 }, - "end": { "line": 61, "column": null } - }, - "28": { - "start": { "line": 65, "column": 4 }, - "end": { "line": 65, "column": null } - }, - "29": { - "start": { "line": 69, "column": 4 }, - "end": { "line": 69, "column": 42 } - }, - "30": { - "start": { "line": 69, "column": 36 }, - "end": { "line": 69, "column": 42 } - }, - "31": { - "start": { "line": 71, "column": 4 }, - "end": { "line": 71, "column": null } - }, - "32": { - "start": { "line": 73, "column": 4 }, - "end": { "line": 81, "column": null } - }, - "33": { - "start": { "line": 74, "column": 7 }, - "end": { "line": 74, "column": null } - }, - "34": { - "start": { "line": 75, "column": 6 }, - "end": { "line": 75, "column": null } - }, - "35": { - "start": { "line": 77, "column": 7 }, - "end": { "line": 77, "column": null } - }, - "36": { - "start": { "line": 78, "column": 6 }, - "end": { "line": 78, "column": null } - }, - "37": { - "start": { "line": 80, "column": 6 }, - "end": { "line": 80, "column": null } - }, - "38": { - "start": { "line": 84, "column": 52 }, - "end": { "line": 84, "column": 56 } - }, - "39": { - "start": { "line": 86, "column": 4 }, - "end": { "line": 86, "column": null } - }, - "40": { - "start": { "line": 89, "column": 4 }, - "end": { "line": 89, "column": 39 } - }, - "41": { - "start": { "line": 89, "column": 33 }, - "end": { "line": 89, "column": 39 } - }, - "42": { - "start": { "line": 90, "column": 20 }, - "end": { "line": 92, "column": 7 } - }, - "43": { - "start": { "line": 90, "column": 66 }, - "end": { "line": 92, "column": 6 } - }, - "44": { - "start": { "line": 94, "column": 52 }, - "end": { "line": 94, "column": null } - }, - "45": { - "start": { "line": 97, "column": 4 }, - "end": { "line": 123, "column": null } - }, - "46": { - "start": { "line": 98, "column": 6 }, - "end": { "line": 122, "column": null } - }, - "47": { - "start": { "line": 99, "column": 18 }, - "end": { "line": 99, "column": 62 } - }, - "48": { - "start": { "line": 103, "column": 23 }, - "end": { "line": 103, "column": 61 } - }, - "49": { - "start": { "line": 105, "column": 8 }, - "end": { "line": 121, "column": null } - }, - "50": { - "start": { "line": 106, "column": 46 }, - "end": { "line": 114, "column": 12 } - }, - "51": { - "start": { "line": 109, "column": 12 }, - "end": { "line": 109, "column": null } - }, - "52": { - "start": { "line": 110, "column": 12 }, - "end": { "line": 113, "column": null } - }, - "53": { - "start": { "line": 115, "column": 10 }, - "end": { "line": 115, "column": null } - }, - "54": { - "start": { "line": 117, "column": 10 }, - "end": { "line": 120, "column": null } - }, - "55": { - "start": { "line": 123, "column": 22 }, - "end": { "line": 123, "column": 71 } - }, - "56": { - "start": { "line": 125, "column": 4 }, - "end": { "line": 128, "column": null } - }, - "57": { - "start": { "line": 126, "column": 6 }, - "end": { "line": 126, "column": null } - }, - "58": { - "start": { "line": 127, "column": 6 }, - "end": { "line": 127, "column": null } - }, - "59": { - "start": { "line": 132, "column": 4 }, - "end": { "line": 132, "column": null } - }, - "60": { - "start": { "line": 133, "column": 4 }, - "end": { "line": 133, "column": null } - }, - "61": { - "start": { "line": 133, "column": 45 }, - "end": { "line": 133, "column": 54 } - }, - "62": { - "start": { "line": 134, "column": 20 }, - "end": { "line": 134, "column": 38 } - }, - "63": { - "start": { "line": 135, "column": 19 }, - "end": { "line": 135, "column": 32 } - }, - "64": { - "start": { "line": 136, "column": 4 }, - "end": { "line": 138, "column": null } - }, - "65": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 137, "column": 12 } - }, - "66": { - "start": { "line": 139, "column": 4 }, - "end": { "line": 143, "column": null } - }, - "67": { - "start": { "line": 147, "column": 20 }, - "end": { "line": 147, "column": 59 } - }, - "68": { - "start": { "line": 147, "column": 49 }, - "end": { "line": 147, "column": 58 } - }, - "69": { - "start": { "line": 148, "column": 4 }, - "end": { "line": 148, "column": null } - }, - "70": { - "start": { "line": 148, "column": 44 }, - "end": { "line": 148, "column": 66 } - }, - "71": { - "start": { "line": 24, "column": 0 }, - "end": { "line": 24, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 9, "column": 20 }, - "end": { "line": 9, "column": 26 } - }, - "loc": { - "start": { "line": 9, "column": 28 }, - "end": { "line": 15, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 11, "column": 33 }, - "end": { "line": 11, "column": 34 } - }, - "loc": { - "start": { "line": 11, "column": 41 }, - "end": { "line": 13, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 28, "column": 2 }, - "end": { "line": 28, "column": null } - }, - "loc": { - "start": { "line": 36, "column": 61 }, - "end": { "line": 40, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 39, "column": 30 }, - "end": { "line": 39, "column": 31 } - }, - "loc": { - "start": { "line": 39, "column": 37 }, - "end": { "line": 39, "column": 76 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 39, "column": 50 }, - "end": { "line": 39, "column": 53 } - }, - "loc": { - "start": { "line": 39, "column": 56 }, - "end": { "line": 39, "column": 75 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 43, "column": 2 }, - "end": { "line": 43, "column": 7 } - }, - "loc": { - "start": { "line": 46, "column": 3 }, - "end": { "line": 57, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 51, "column": 27 }, - "end": { "line": 51, "column": 28 } - }, - "loc": { - "start": { "line": 52, "column": 6 }, - "end": { "line": 55, "column": 8 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 60, "column": 2 }, - "end": { "line": 60, "column": 12 } - }, - "loc": { - "start": { "line": 60, "column": 35 }, - "end": { "line": 62, "column": 3 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 64, "column": 2 }, - "end": { "line": 64, "column": 6 } - }, - "loc": { - "start": { "line": 64, "column": 12 }, - "end": { "line": 66, "column": 3 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 68, "column": 10 }, - "end": { "line": 68, "column": 15 } - }, - "loc": { - "start": { "line": 68, "column": 48 }, - "end": { "line": 82, "column": 3 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 85, "column": 10 }, - "end": { "line": 85, "column": 28 } - }, - "loc": { - "start": { "line": 85, "column": 28 }, - "end": { "line": 87, "column": 3 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 88, "column": 10 }, - "end": { "line": 88, "column": 15 } - }, - "loc": { - "start": { "line": 88, "column": 32 }, - "end": { "line": 129, "column": 3 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 90, "column": 59 }, - "end": { "line": 90, "column": 62 } - }, - "loc": { - "start": { "line": 90, "column": 66 }, - "end": { "line": 92, "column": 6 } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 97, "column": 16 }, - "end": { "line": 97, "column": 21 } - }, - "loc": { - "start": { "line": 97, "column": 27 }, - "end": { "line": 123, "column": 5 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 108, "column": 18 }, - "end": { "line": 108, "column": 19 } - }, - "loc": { - "start": { "line": 108, "column": 26 }, - "end": { "line": 114, "column": 11 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 123, "column": 13 }, - "end": { "line": 123, "column": 14 } - }, - "loc": { - "start": { "line": 123, "column": 22 }, - "end": { "line": 123, "column": 71 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 125, "column": 30 }, - "end": { "line": 125, "column": 33 } - }, - "loc": { - "start": { "line": 125, "column": 35 }, - "end": { "line": 128, "column": 5 } - } - }, - "17": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 131, "column": 10 }, - "end": { "line": 131, "column": 15 } - }, - "loc": { - "start": { "line": 131, "column": 51 }, - "end": { "line": 144, "column": 3 } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 133, "column": 32 }, - "end": { "line": 133, "column": 33 } - }, - "loc": { - "start": { "line": 133, "column": 45 }, - "end": { "line": 133, "column": 54 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 146, "column": 10 }, - "end": { "line": 146, "column": 15 } - }, - "loc": { - "start": { "line": 146, "column": 28 }, - "end": { "line": 149, "column": 3 } - } - }, - "20": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 147, "column": 42 }, - "end": { "line": 147, "column": 43 } - }, - "loc": { - "start": { "line": 147, "column": 49 }, - "end": { "line": 147, "column": 58 } - } - }, - "21": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 148, "column": 37 }, - "end": { "line": 148, "column": 38 } - }, - "loc": { - "start": { "line": 148, "column": 44 }, - "end": { "line": 148, "column": 66 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 36, "column": 13 }, - "end": { "line": 36, "column": 61 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 36, "column": 38 }, - "end": { "line": 36, "column": 61 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 69, "column": 4 }, - "end": { "line": 69, "column": 42 } - }, - "type": "if", - "locations": [ - { - "start": { "line": 69, "column": 4 }, - "end": { "line": 69, "column": 42 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 73, "column": 4 }, - "end": { "line": 81, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 73, "column": 4 }, - "end": { "line": 81, "column": null } - }, - { - "start": { "line": 76, "column": 11 }, - "end": { "line": 81, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 89, "column": 4 }, - "end": { "line": 89, "column": 39 } - }, - "type": "if", - "locations": [ - { - "start": { "line": 89, "column": 4 }, - "end": { "line": 89, "column": 39 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 90, "column": 21 }, - "end": { "line": 90, "column": 57 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 90, "column": 21 }, - "end": { "line": 90, "column": 39 } - }, - { - "start": { "line": 90, "column": 43 }, - "end": { "line": 90, "column": 57 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 105, "column": 8 }, - "end": { "line": 121, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 105, "column": 8 }, - "end": { "line": 121, "column": null } - }, - { - "start": { "line": 116, "column": 15 }, - "end": { "line": 121, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 112, "column": 23 }, - "end": { "line": 112, "column": 67 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 112, "column": 42 }, - "end": { "line": 112, "column": 53 } - }, - { - "start": { "line": 112, "column": 56 }, - "end": { "line": 112, "column": 67 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 136, "column": 4 }, - "end": { "line": 138, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 136, "column": 4 }, - "end": { "line": 138, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0 - }, - "b": { - "0": [0], - "1": [0], - "2": [0, 0], - "3": [0], - "4": [0, 0], - "5": [0, 0], - "6": [0, 0], - "7": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Mounts.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/Mounts.ts", - "statementMap": { - "0": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 8, "column": null } - }, - "1": { - "start": { "line": 14, "column": 13 }, - "end": { "line": 14, "column": null } - }, - "2": { - "start": { "line": 19, "column": 13 }, - "end": { "line": 19, "column": null } - }, - "3": { - "start": { "line": 29, "column": 4 }, - "end": { "line": 29, "column": null } - }, - "4": { - "start": { "line": 38, "column": 4 }, - "end": { "line": 43, "column": null } - }, - "5": { - "start": { "line": 44, "column": 4 }, - "end": { "line": 44, "column": null } - }, - "6": { - "start": { "line": 52, "column": 4 }, - "end": { "line": 56, "column": null } - }, - "7": { - "start": { "line": 57, "column": 4 }, - "end": { "line": 57, "column": null } - }, - "8": { - "start": { "line": 67, "column": 4 }, - "end": { "line": 73, "column": null } - }, - "9": { - "start": { "line": 74, "column": 4 }, - "end": { "line": 74, "column": null } - }, - "10": { - "start": { "line": 78, "column": 24 }, - "end": { "line": 78, "column": 33 } - }, - "11": { - "start": { "line": 79, "column": 4 }, - "end": { "line": 89, "column": null } - }, - "12": { - "start": { "line": 80, "column": 18 }, - "end": { "line": 80, "column": 30 } - }, - "13": { - "start": { "line": 81, "column": 37 }, - "end": { "line": 81, "column": 49 } - }, - "14": { - "start": { "line": 82, "column": 43 }, - "end": { "line": 82, "column": 55 } - }, - "15": { - "start": { "line": 83, "column": 6 }, - "end": { "line": 87, "column": null } - }, - "16": { - "start": { "line": 84, "column": 8 }, - "end": { "line": 86, "column": null } - }, - "17": { - "start": { "line": 88, "column": 6 }, - "end": { "line": 88, "column": null } - }, - "18": { - "start": { "line": 90, "column": 4 }, - "end": { "line": 123, "column": null } - }, - "19": { - "start": { "line": 92, "column": 33 }, - "end": { "line": 100, "column": 10 } - }, - "20": { - "start": { "line": 103, "column": 32 }, - "end": { "line": 110, "column": 10 } - }, - "21": { - "start": { "line": 113, "column": 38 }, - "end": { "line": 122, "column": 10 } - }, - "22": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "loc": { - "start": { "line": 25, "column": 7 }, - "end": { "line": 26, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 28, "column": 2 }, - "end": { "line": 28, "column": 8 } - }, - "loc": { - "start": { "line": 28, "column": 11 }, - "end": { "line": 30, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 32, "column": 2 }, - "end": { "line": 32, "column": 11 } - }, - "loc": { - "start": { "line": 36, "column": 21 }, - "end": { "line": 45, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 47, "column": 2 }, - "end": { "line": 47, "column": 11 } - }, - "loc": { - "start": { "line": 50, "column": 22 }, - "end": { "line": 58, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 60, "column": 2 }, - "end": { "line": 60, "column": 15 } - }, - "loc": { - "start": { "line": 65, "column": 21 }, - "end": { "line": 75, "column": 3 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 77, "column": 2 }, - "end": { "line": 77, "column": 7 } - }, - "loc": { - "start": { "line": 77, "column": 7 }, - "end": { "line": 124, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 80, "column": 11 }, - "end": { "line": 80, "column": 12 } - }, - "loc": { - "start": { "line": 80, "column": 18 }, - "end": { "line": 80, "column": 30 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 81, "column": 30 }, - "end": { "line": 81, "column": 31 } - }, - "loc": { - "start": { "line": 81, "column": 37 }, - "end": { "line": 81, "column": 49 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 82, "column": 36 }, - "end": { "line": 82, "column": 37 } - }, - "loc": { - "start": { "line": 82, "column": 43 }, - "end": { "line": 82, "column": 55 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 92, "column": 25 }, - "end": { "line": 92, "column": 26 } - }, - "loc": { - "start": { "line": 92, "column": 33 }, - "end": { "line": 100, "column": 10 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 103, "column": 24 }, - "end": { "line": 103, "column": 25 } - }, - "loc": { - "start": { "line": 103, "column": 32 }, - "end": { "line": 110, "column": 10 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 113, "column": 30 }, - "end": { "line": 113, "column": 31 } - }, - "loc": { - "start": { "line": 113, "column": 38 }, - "end": { "line": 122, "column": 10 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 83, "column": 6 }, - "end": { "line": 87, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 83, "column": 6 }, - "end": { "line": 87, "column": null } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0 - }, - "b": { "0": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/index.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/mainFn/index.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 46 } - }, - "1": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 29 } - }, - "2": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 18 } - }, - "3": { - "start": { "line": 10, "column": 13 }, - "end": { "line": 10, "column": null } - }, - "4": { - "start": { "line": 21, "column": 25 }, - "end": { "line": 31, "column": 1 } - }, - "5": { - "start": { "line": 27, "column": 2 }, - "end": { "line": 30, "column": null } - }, - "6": { - "start": { "line": 28, "column": 19 }, - "end": { "line": 28, "column": 36 } - }, - "7": { - "start": { "line": 29, "column": 4 }, - "end": { "line": 29, "column": null } - }, - "8": { - "start": { "line": 21, "column": 13 }, - "end": { "line": 21, "column": 25 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 21, "column": 25 }, - "end": { "line": 21, "column": null } - }, - "loc": { - "start": { "line": 26, "column": 28 }, - "end": { "line": 31, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 27, "column": 9 }, - "end": { "line": 27, "column": 14 } - }, - "loc": { - "start": { "line": 27, "column": 27 }, - "end": { "line": 30, "column": 3 } - } - } - }, - "branchMap": {}, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 0, - "6": 0, - "7": 0, - "8": 5 - }, - "f": { "0": 0, "1": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/manifest/setupManifest.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/manifest/setupManifest.ts", - "statementMap": { - "0": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 40 } - }, - "1": { - "start": { "line": 31, "column": 17 }, - "end": { "line": 39, "column": null } - }, - "2": { - "start": { "line": 33, "column": 6 }, - "end": { "line": 33, "column": null } - }, - "3": { - "start": { "line": 34, "column": 6 }, - "end": { "line": 35, "column": null } - }, - "4": { - "start": { "line": 35, "column": 8 }, - "end": { "line": 35, "column": null } - }, - "5": { - "start": { "line": 36, "column": 6 }, - "end": { "line": 36, "column": null } - }, - "6": { - "start": { "line": 37, "column": 6 }, - "end": { "line": 37, "column": null } - }, - "7": { - "start": { "line": 41, "column": 2 }, - "end": { "line": 83, "column": null } - }, - "8": { - "start": { "line": 63, "column": 22 }, - "end": { "line": 63, "column": 35 } - }, - "9": { - "start": { "line": 71, "column": 16 }, - "end": { "line": 73, "column": null } - }, - "10": { - "start": { "line": 72, "column": 18 }, - "end": { "line": 72, "column": null } - }, - "11": { - "start": { "line": 74, "column": 16 }, - "end": { "line": 76, "column": null } - }, - "12": { - "start": { "line": 75, "column": 18 }, - "end": { "line": 75, "column": null } - }, - "13": { - "start": { "line": 77, "column": 16 }, - "end": { "line": 77, "column": null } - }, - "14": { - "start": { "line": 77, "column": 42 }, - "end": { "line": 77, "column": 65 } - }, - "15": { - "start": { "line": 12, "column": 0 }, - "end": { "line": 12, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "setupManifest", - "decl": { - "start": { "line": 12, "column": 16 }, - "end": { "line": 12, "column": 29 } - }, - "loc": { - "start": { "line": 29, "column": 34 }, - "end": { "line": 84, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 32, "column": 4 }, - "end": { "line": 32, "column": 5 } - }, - "loc": { - "start": { "line": 32, "column": 23 }, - "end": { "line": 38, "column": 5 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 63, "column": 10 }, - "end": { "line": 63, "column": 11 } - }, - "loc": { - "start": { "line": 63, "column": 22 }, - "end": { "line": 63, "column": 35 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 70, "column": 14 }, - "end": { "line": 70, "column": 15 } - }, - "loc": { - "start": { "line": 70, "column": 31 }, - "end": { "line": 78, "column": 15 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 77, "column": 35 }, - "end": { "line": 77, "column": 36 } - }, - "loc": { - "start": { "line": 77, "column": 42 }, - "end": { "line": 77, "column": 65 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 33, "column": 15 }, - "end": { "line": 33, "column": 46 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 33, "column": 15 }, - "end": { "line": 33, "column": 21 } - }, - { - "start": { "line": 33, "column": 25 }, - "end": { "line": 33, "column": 46 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 34, "column": 6 }, - "end": { "line": 35, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 34, "column": 6 }, - "end": { "line": 35, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 35, "column": 29 }, - "end": { "line": 35, "column": 46 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 35, "column": 29 }, - "end": { "line": 35, "column": 38 } - }, - { - "start": { "line": 35, "column": 42 }, - "end": { "line": 35, "column": 46 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 47, "column": 15 }, - "end": { "line": 47, "column": 55 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 47, "column": 15 }, - "end": { "line": 47, "column": 49 } - }, - { - "start": { "line": 47, "column": 53 }, - "end": { "line": 47, "column": 55 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 52, "column": 15 }, - "end": { "line": 52, "column": 47 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 52, "column": 15 }, - "end": { "line": 52, "column": 39 } - }, - { - "start": { "line": 52, "column": 43 }, - "end": { "line": 52, "column": 47 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 53, "column": 14 }, - "end": { "line": 53, "column": 45 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 53, "column": 14 }, - "end": { "line": 53, "column": 37 } - }, - { - "start": { "line": 53, "column": 41 }, - "end": { "line": 53, "column": 45 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 54, "column": 17 }, - "end": { "line": 54, "column": 51 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 54, "column": 17 }, - "end": { "line": 54, "column": 43 } - }, - { - "start": { "line": 54, "column": 47 }, - "end": { "line": 54, "column": 51 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 55, "column": 15 }, - "end": { "line": 55, "column": 47 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 55, "column": 15 }, - "end": { "line": 55, "column": 39 } - }, - { - "start": { "line": 55, "column": 43 }, - "end": { "line": 55, "column": 47 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 56, "column": 13 }, - "end": { "line": 56, "column": 43 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 56, "column": 13 }, - "end": { "line": 56, "column": 35 } - }, - { - "start": { "line": 56, "column": 39 }, - "end": { "line": 56, "column": 43 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 57, "column": 12 }, - "end": { "line": 57, "column": 41 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 57, "column": 12 }, - "end": { "line": 57, "column": 33 } - }, - { - "start": { "line": 57, "column": 37 }, - "end": { "line": 57, "column": 41 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 59, "column": 15 }, - "end": { "line": 59, "column": 75 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 59, "column": 50 }, - "end": { "line": 59, "column": 54 } - }, - { - "start": { "line": 59, "column": 57 }, - "end": { "line": 59, "column": 75 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 62, "column": 23 }, - "end": { "line": 62, "column": 66 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 62, "column": 23 }, - "end": { "line": 62, "column": 60 } - }, - { - "start": { "line": 62, "column": 64 }, - "end": { "line": 62, "column": 66 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 66, "column": 11 }, - "end": { "line": 66, "column": 53 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 66, "column": 11 }, - "end": { "line": 66, "column": 45 } - }, - { - "start": { "line": 66, "column": 49 }, - "end": { "line": 66, "column": 53 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 68, "column": 8 }, - "end": { "line": 81, "column": 47 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 69, "column": 12 }, - "end": { "line": 79, "column": null } - }, - { - "start": { "line": 81, "column": 12 }, - "end": { "line": 81, "column": 47 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 71, "column": 16 }, - "end": { "line": 73, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 71, "column": 16 }, - "end": { "line": 73, "column": null } - } - ] - }, - "15": { - "loc": { - "start": { "line": 74, "column": 16 }, - "end": { "line": 76, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 74, "column": 16 }, - "end": { "line": 76, "column": null } - } - ] - } - }, - "s": { - "0": 4, - "1": 5, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 5, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 4 - }, - "f": { "0": 5, "1": 0, "2": 0, "3": 0, "4": 0 }, - "b": { - "0": [0, 0], - "1": [0], - "2": [0, 0], - "3": [5, 0], - "4": [5, 5], - "5": [5, 5], - "6": [5, 5], - "7": [5, 5], - "8": [5, 5], - "9": [5, 5], - "10": [5, 0], - "11": [5, 5], - "12": [5, 5], - "13": [5, 0], - "14": [0], - "15": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/store/PathBuilder.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/store/PathBuilder.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 18 }, - "end": { "line": 3, "column": 37 } - }, - "1": { - "start": { "line": 21, "column": 22 }, - "end": { "line": 21, "column": 40 } - }, - "2": { - "start": { "line": 22, "column": 31 }, - "end": { "line": 24, "column": 1 } - }, - "3": { - "start": { "line": 23, "column": 2 }, - "end": { "line": 23, "column": null } - }, - "4": { - "start": { "line": 22, "column": 13 }, - "end": { "line": 22, "column": 31 } - }, - "5": { - "start": { "line": 26, "column": 27 }, - "end": { "line": 38, "column": 1 } - }, - "6": { - "start": { "line": 29, "column": 2 }, - "end": { "line": 37, "column": null } - }, - "7": { - "start": { "line": 31, "column": 6 }, - "end": { "line": 34, "column": null } - }, - "8": { - "start": { "line": 32, "column": 8 }, - "end": { "line": 32, "column": null } - }, - "9": { - "start": { "line": 32, "column": 32 }, - "end": { "line": 32, "column": null } - }, - "10": { - "start": { "line": 33, "column": 8 }, - "end": { "line": 33, "column": null } - }, - "11": { - "start": { "line": 35, "column": 6 }, - "end": { "line": 35, "column": null } - }, - "12": { - "start": { "line": 26, "column": 13 }, - "end": { "line": 26, "column": 27 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 22, "column": 31 }, - "end": { "line": 22, "column": 32 } - }, - "loc": { - "start": { "line": 22, "column": 65 }, - "end": { "line": 24, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 26, "column": 27 }, - "end": { "line": 26, "column": null } - }, - "loc": { - "start": { "line": 28, "column": 35 }, - "end": { "line": 38, "column": 1 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 30, "column": 4 }, - "end": { "line": 30, "column": 7 } - }, - "loc": { - "start": { "line": 30, "column": 20 }, - "end": { "line": 36, "column": 5 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 27, "column": 2 }, - "end": { "line": 27, "column": 22 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 27, "column": 20 }, - "end": { "line": 27, "column": 22 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 31, "column": 6 }, - "end": { "line": 34, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 31, "column": 6 }, - "end": { "line": 34, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 32, "column": 8 }, - "end": { "line": 32, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 32, "column": 8 }, - "end": { "line": 32, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 0, - "4": 5, - "5": 5, - "6": 6, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 5 - }, - "f": { "0": 0, "1": 6, "2": 0 }, - "b": { "0": [6], "1": [0], "2": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/store/getStore.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/store/getStore.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 60 } - }, - "1": { - "start": { "line": 6, "column": 13 }, - "end": { "line": 6, "column": 29 } - }, - "2": { - "start": { "line": 7, "column": 13 }, - "end": { "line": 7, "column": 49 } - }, - "3": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 8, "column": null } - }, - "4": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 22, "column": null } - }, - "5": { - "start": { "line": 28, "column": 4 }, - "end": { "line": 31, "column": null } - }, - "6": { - "start": { "line": 38, "column": 4 }, - "end": { "line": 49, "column": null } - }, - "7": { - "start": { "line": 40, "column": 26 }, - "end": { "line": 42, "column": 8 } - }, - "8": { - "start": { "line": 41, "column": 8 }, - "end": { "line": 41, "column": null } - }, - "9": { - "start": { "line": 43, "column": 6 }, - "end": { "line": 47, "column": null } - }, - "10": { - "start": { "line": 46, "column": 24 }, - "end": { "line": 46, "column": 34 } - }, - "11": { - "start": { "line": 48, "column": 6 }, - "end": { "line": 48, "column": null } - }, - "12": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 13 } - }, - "13": { - "start": { "line": 60, "column": 2 }, - "end": { "line": 60, "column": null } - }, - "14": { - "start": { "line": 52, "column": 0 }, - "end": { "line": 52, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "loc": { - "start": { "line": 11, "column": 10 }, - "end": { "line": 12, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 17, "column": 7 } - }, - "loc": { - "start": { "line": 17, "column": 7 }, - "end": { "line": 23, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 27, "column": 2 }, - "end": { "line": 27, "column": 6 } - }, - "loc": { - "start": { "line": 27, "column": 6 }, - "end": { "line": 32, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 37, "column": 2 }, - "end": { "line": 37, "column": 7 } - }, - "loc": { - "start": { "line": 37, "column": 14 }, - "end": { "line": 50, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 40, "column": 44 }, - "end": { "line": 40, "column": 45 } - }, - "loc": { - "start": { "line": 40, "column": 56 }, - "end": { "line": 42, "column": 7 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 46, "column": 18 }, - "end": { "line": 46, "column": 21 } - }, - "loc": { - "start": { "line": 46, "column": 24 }, - "end": { "line": 46, "column": 34 } - } - }, - "6": { - "name": "getStore", - "decl": { - "start": { "line": 52, "column": 16 }, - "end": { "line": 52, "column": 24 } - }, - "loc": { - "start": { "line": 58, "column": 8 }, - "end": { "line": 61, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 11, "column": 10 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 11, "column": 8 }, - "end": { "line": 11, "column": 10 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 55, "column": 2 }, - "end": { "line": 58, "column": 8 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 58, "column": 6 }, - "end": { "line": 58, "column": 8 } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 5, - "13": 0, - "14": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0 }, - "b": { "0": [0], "1": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/test/output.sdk.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/test/output.sdk.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 38 } - }, - "1": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 57 } - }, - "2": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 52 } - }, - "3": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 54 } - }, - "4": { - "start": { "line": 7, "column": 13 }, - "end": { "line": 56, "column": null } - } - }, - "fnMap": {}, - "branchMap": {}, - "s": { "0": 4, "1": 4, "2": 4, "3": 4, "4": 4 }, - "f": {}, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/test/output.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/test/output.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 34 } - }, - "1": { - "start": { "line": 3, "column": 40 }, - "end": { "line": 3, "column": 43 } - }, - "2": { - "start": { "line": 5, "column": 13 }, - "end": { "line": 375, "column": 14 } - }, - "3": { - "start": { "line": 376, "column": 13 }, - "end": { "line": 376, "column": 52 } - } - }, - "fnMap": {}, - "branchMap": {}, - "s": { "0": 2, "1": 2, "2": 2, "3": 2 }, - "f": {}, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/changeOnFirstSuccess.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/changeOnFirstSuccess.ts", - "statementMap": { - "0": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 31, "column": null } - }, - "1": { - "start": { "line": 8, "column": 23 }, - "end": { "line": 8, "column": 33 } - }, - "2": { - "start": { "line": 9, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "3": { - "start": { "line": 10, "column": 6 }, - "end": { "line": 10, "column": null } - }, - "4": { - "start": { "line": 11, "column": 6 }, - "end": { "line": 11, "column": null } - }, - "5": { - "start": { "line": 13, "column": 31 }, - "end": { "line": 13, "column": 61 } - }, - "6": { - "start": { "line": 14, "column": 4 }, - "end": { "line": 21, "column": null } - }, - "7": { - "start": { "line": 15, "column": 16 }, - "end": { "line": 15, "column": 47 } - }, - "8": { - "start": { "line": 19, "column": 6 }, - "end": { "line": 19, "column": null } - }, - "9": { - "start": { "line": 20, "column": 6 }, - "end": { "line": 20, "column": null } - }, - "10": { - "start": { "line": 22, "column": 30 }, - "end": { "line": 22, "column": 59 } - }, - "11": { - "start": { "line": 23, "column": 4 }, - "end": { "line": 30, "column": null } - }, - "12": { - "start": { "line": 24, "column": 16 }, - "end": { "line": 24, "column": 46 } - }, - "13": { - "start": { "line": 28, "column": 6 }, - "end": { "line": 28, "column": null } - }, - "14": { - "start": { "line": 29, "column": 6 }, - "end": { "line": 29, "column": null } - }, - "15": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "changeOnFirstSuccess", - "decl": { - "start": { "line": 3, "column": 16 }, - "end": { "line": 3, "column": 36 } - }, - "loc": { - "start": { "line": 6, "column": 1 }, - "end": { "line": 32, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 7, "column": 9 }, - "end": { "line": 7, "column": 14 } - }, - "loc": { - "start": { "line": 7, "column": 34 }, - "end": { "line": 31, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 16, "column": 6 }, - "end": { "line": 16, "column": 57 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 16, "column": 6 }, - "end": { "line": 16, "column": 44 } - }, - { - "start": { "line": 16, "column": 48 }, - "end": { "line": 16, "column": 57 } - } - ] - } - }, - "s": { - "0": 5, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 5 - }, - "f": { "0": 5, "1": 0 }, - "b": { "0": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/cooldownTrigger.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/cooldownTrigger.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "1": { - "start": { "line": 3, "column": 4 }, - "end": { "line": 6, "column": null } - }, - "2": { - "start": { "line": 4, "column": 6 }, - "end": { "line": 4, "column": null } - }, - "3": { - "start": { "line": 4, "column": 37 }, - "end": { "line": 4, "column": 64 } - }, - "4": { - "start": { "line": 5, "column": 6 }, - "end": { "line": 5, "column": null } - }, - "5": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "cooldownTrigger", - "decl": { - "start": { "line": 1, "column": 16 }, - "end": { "line": 1, "column": 31 } - }, - "loc": { - "start": { "line": 1, "column": 46 }, - "end": { "line": 8, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 2, "column": 9 }, - "end": { "line": 2, "column": 14 } - }, - "loc": { - "start": { "line": 2, "column": 24 }, - "end": { "line": 7, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 4, "column": 24 }, - "end": { "line": 4, "column": 25 } - }, - "loc": { - "start": { "line": 4, "column": 37 }, - "end": { "line": 4, "column": 64 } - } - } - }, - "branchMap": {}, - "s": { "0": 10, "1": 0, "2": 0, "3": 0, "4": 0, "5": 5 }, - "f": { "0": 10, "1": 0, "2": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/defaultTrigger.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/defaultTrigger.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 51 } - }, - "1": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 61 } - }, - "2": { - "start": { "line": 5, "column": 13 }, - "end": { "line": 8, "column": null } - } - }, - "fnMap": {}, - "branchMap": {}, - "s": { "0": 5, "1": 5, "2": 5 }, - "f": {}, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/index.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/index.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 9 } - }, - "1": { - "start": { "line": 3, "column": 9 }, - "end": { "line": 3, "column": 61 } - }, - "2": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 9 } - }, - "3": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 51 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 3, "column": 9 }, - "end": { "line": 3, "column": 29 } - }, - "loc": { - "start": { "line": 3, "column": 9 }, - "end": { "line": 3, "column": 61 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 24 } - }, - "loc": { - "start": { "line": 4, "column": 9 }, - "end": { "line": 4, "column": 51 } - } - } - }, - "branchMap": {}, - "s": { "0": 5, "1": 11, "2": 5, "3": 11 }, - "f": { "0": 6, "1": 6 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/lastStatus.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/lastStatus.ts", - "statementMap": { - "0": { - "start": { "line": 9, "column": 2 }, - "end": { "line": 32, "column": null } - }, - "1": { - "start": { "line": 10, "column": 18 }, - "end": { "line": 10, "column": 37 } - }, - "2": { - "start": { "line": 13, "column": 62 }, - "end": { "line": 15, "column": null } - }, - "3": { - "start": { "line": 16, "column": 4 }, - "end": { "line": 31, "column": null } - }, - "4": { - "start": { "line": 17, "column": 25 }, - "end": { "line": 17, "column": 35 } - }, - "5": { - "start": { "line": 18, "column": 55 }, - "end": { "line": 18, "column": 78 } - }, - "6": { - "start": { "line": 19, "column": 6 }, - "end": { "line": 22, "column": null } - }, - "7": { - "start": { "line": 20, "column": 8 }, - "end": { "line": 20, "column": null } - }, - "8": { - "start": { "line": 21, "column": 8 }, - "end": { "line": 21, "column": 16 } - }, - "9": { - "start": { "line": 23, "column": 6 }, - "end": { "line": 25, "column": null } - }, - "10": { - "start": { "line": 24, "column": 8 }, - "end": { "line": 24, "column": null } - }, - "11": { - "start": { "line": 26, "column": 6 }, - "end": { "line": 28, "column": null } - }, - "12": { - "start": { "line": 27, "column": 8 }, - "end": { "line": 27, "column": null } - }, - "13": { - "start": { "line": 29, "column": 6 }, - "end": { "line": 29, "column": null } - }, - "14": { - "start": { "line": 30, "column": 6 }, - "end": { "line": 30, "column": null } - }, - "15": { - "start": { "line": 8, "column": 0 }, - "end": { "line": 8, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "lastStatus", - "decl": { - "start": { "line": 8, "column": 16 }, - "end": { "line": 8, "column": 26 } - }, - "loc": { - "start": { "line": 8, "column": 53 }, - "end": { "line": 33, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 9, "column": 9 }, - "end": { "line": 9, "column": 14 } - }, - "loc": { - "start": { "line": 9, "column": 34 }, - "end": { "line": 32, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 19, "column": 6 }, - "end": { "line": 22, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 19, "column": 6 }, - "end": { "line": 22, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 23, "column": 6 }, - "end": { "line": 25, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 23, "column": 6 }, - "end": { "line": 25, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 26, "column": 6 }, - "end": { "line": 28, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 26, "column": 6 }, - "end": { "line": 28, "column": null } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 5 - }, - "f": { "0": 0, "1": 0 }, - "b": { "0": [0], "1": [0], "2": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/successFailure.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/trigger/successFailure.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 41 } - }, - "1": { - "start": { "line": 4, "column": 30 }, - "end": { "line": 7, "column": 70 } - }, - "2": { - "start": { "line": 7, "column": 6 }, - "end": { "line": 7, "column": 70 } - }, - "3": { - "start": { "line": 4, "column": 13 }, - "end": { "line": 4, "column": 30 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 4, "column": 30 }, - "end": { "line": 4, "column": 31 } - }, - "loc": { - "start": { "line": 7, "column": 6 }, - "end": { "line": 7, "column": 70 } - } - } - }, - "branchMap": {}, - "s": { "0": 5, "1": 5, "2": 0, "3": 5 }, - "f": { "0": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/GetSslCertificate.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/GetSslCertificate.ts", - "statementMap": { - "0": { - "start": { "line": 6, "column": 13 }, - "end": { "line": 6, "column": 29 } - }, - "1": { - "start": { "line": 7, "column": 13 }, - "end": { "line": 7, "column": 32 } - }, - "2": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 8, "column": 36 } - }, - "3": { - "start": { "line": 15, "column": 4 }, - "end": { "line": 19, "column": null } - }, - "4": { - "start": { "line": 25, "column": 4 }, - "end": { "line": 28, "column": null } - }, - "5": { - "start": { "line": 34, "column": 4 }, - "end": { "line": 45, "column": null } - }, - "6": { - "start": { "line": 36, "column": 26 }, - "end": { "line": 38, "column": 8 } - }, - "7": { - "start": { "line": 37, "column": 8 }, - "end": { "line": 37, "column": null } - }, - "8": { - "start": { "line": 39, "column": 6 }, - "end": { "line": 43, "column": null } - }, - "9": { - "start": { "line": 42, "column": 24 }, - "end": { "line": 42, "column": 34 } - }, - "10": { - "start": { "line": 44, "column": 6 }, - "end": { "line": 44, "column": null } - }, - "11": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "loc": { - "start": { "line": 8, "column": 36 }, - "end": { "line": 9, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": 7 } - }, - "loc": { - "start": { "line": 14, "column": 7 }, - "end": { "line": 20, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": 6 } - }, - "loc": { - "start": { "line": 24, "column": 6 }, - "end": { "line": 29, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 33, "column": 2 }, - "end": { "line": 33, "column": 7 } - }, - "loc": { - "start": { "line": 33, "column": 14 }, - "end": { "line": 46, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 36, "column": 44 }, - "end": { "line": 36, "column": 45 } - }, - "loc": { - "start": { "line": 36, "column": 56 }, - "end": { "line": 38, "column": 7 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 42, "column": 18 }, - "end": { "line": 42, "column": 21 } - }, - "loc": { - "start": { "line": 42, "column": 24 }, - "end": { "line": 42, "column": 34 } - } - } - }, - "branchMap": {}, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/GetSystemSmtp.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/GetSystemSmtp.ts", - "statementMap": { - "0": { - "start": { "line": 4, "column": 23 }, - "end": { "line": 4, "column": 39 } - }, - "1": { - "start": { "line": 10, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "2": { - "start": { "line": 18, "column": 4 }, - "end": { "line": 18, "column": null } - }, - "3": { - "start": { "line": 24, "column": 4 }, - "end": { "line": 33, "column": null } - }, - "4": { - "start": { "line": 26, "column": 26 }, - "end": { "line": 28, "column": 8 } - }, - "5": { - "start": { "line": 27, "column": 8 }, - "end": { "line": 27, "column": null } - }, - "6": { - "start": { "line": 29, "column": 6 }, - "end": { "line": 31, "column": null } - }, - "7": { - "start": { "line": 30, "column": 24 }, - "end": { "line": 30, "column": 34 } - }, - "8": { - "start": { "line": 32, "column": 6 }, - "end": { "line": 32, "column": null } - }, - "9": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": 23 } - }, - "loc": { - "start": { "line": 4, "column": 39 }, - "end": { "line": 4, "column": 43 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 9, "column": 2 }, - "end": { "line": 9, "column": 7 } - }, - "loc": { - "start": { "line": 9, "column": 7 }, - "end": { "line": 13, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 17, "column": 6 } - }, - "loc": { - "start": { "line": 17, "column": 6 }, - "end": { "line": 19, "column": 3 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 23, "column": 2 }, - "end": { "line": 23, "column": 7 } - }, - "loc": { - "start": { "line": 23, "column": 14 }, - "end": { "line": 34, "column": 3 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 26, "column": 44 }, - "end": { "line": 26, "column": 45 } - }, - "loc": { - "start": { "line": 26, "column": 56 }, - "end": { "line": 28, "column": 7 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 30, "column": 18 }, - "end": { "line": 30, "column": 21 } - }, - "loc": { - "start": { "line": 30, "column": 24 }, - "end": { "line": 30, "column": 34 } - } - } - }, - "branchMap": {}, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/Hostname.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/Hostname.ts", - "statementMap": { - "0": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "1": { - "start": { "line": 5, "column": 4 }, - "end": { "line": 5, "column": null } - }, - "2": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "3": { - "start": { "line": 8, "column": 4 }, - "end": { "line": 8, "column": null } - }, - "4": { - "start": { "line": 10, "column": 19 }, - "end": { "line": 10, "column": 36 } - }, - "5": { - "start": { "line": 11, "column": 2 }, - "end": { "line": 13, "column": null } - }, - "6": { - "start": { "line": 12, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "7": { - "start": { "line": 14, "column": 15 }, - "end": { "line": 14, "column": 48 } - }, - "8": { - "start": { "line": 15, "column": 21 }, - "end": { "line": 15, "column": 43 } - }, - "9": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 18, "column": null } - }, - "10": { - "start": { "line": 17, "column": 4 }, - "end": { "line": 17, "column": null } - }, - "11": { - "start": { "line": 19, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "12": { - "start": { "line": 20, "column": 4 }, - "end": { "line": 20, "column": null } - }, - "13": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 24, "column": null } - }, - "14": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "hostnameInfoToAddress", - "decl": { - "start": { "line": 3, "column": 16 }, - "end": { "line": 3, "column": 37 } - }, - "loc": { - "start": { "line": 3, "column": 60 }, - "end": { "line": 25, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 4, "column": 2 }, - "end": { "line": 6, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 7, "column": 2 }, - "end": { "line": 9, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 11, "column": 2 }, - "end": { "line": 13, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 11, "column": 2 }, - "end": { "line": 13, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 12, "column": 14 }, - "end": { "line": 12, "column": 64 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 12, "column": 35 }, - "end": { "line": 12, "column": 59 } - }, - { - "start": { "line": 12, "column": 62 }, - "end": { "line": 12, "column": 64 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 14, "column": 15 }, - "end": { "line": 14, "column": 48 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 14, "column": 15 }, - "end": { "line": 14, "column": 31 } - }, - { - "start": { "line": 14, "column": 35 }, - "end": { "line": 14, "column": 48 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 15, "column": 21 }, - "end": { "line": 15, "column": 43 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 15, "column": 28 }, - "end": { "line": 15, "column": 38 } - }, - { - "start": { "line": 15, "column": 41 }, - "end": { "line": 15, "column": 43 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 18, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 16, "column": 2 }, - "end": { "line": 18, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 16, "column": 6 }, - "end": { "line": 16, "column": 58 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 16, "column": 6 }, - "end": { "line": 16, "column": 30 } - }, - { - "start": { "line": 16, "column": 34 }, - "end": { "line": 16, "column": 58 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 19, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 19, "column": 2 }, - "end": { "line": 21, "column": null } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 5 - }, - "f": { "0": 0 }, - "b": { - "0": [0], - "1": [0], - "2": [0], - "3": [0, 0], - "4": [0, 0], - "5": [0, 0], - "6": [0], - "7": [0, 0], - "8": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/SubContainer.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/SubContainer.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 33 } - }, - "1": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 35 } - }, - "2": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 32 } - }, - "3": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 36 } - }, - "4": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 29 } - }, - "5": { - "start": { "line": 7, "column": 13 }, - "end": { "line": 7, "column": null } - }, - "6": { - "start": { "line": 8, "column": 16 }, - "end": { "line": 8, "column": 72 } - }, - "7": { - "start": { "line": 8, "column": 37 }, - "end": { "line": 8, "column": 72 } - }, - "8": { - "start": { "line": 9, "column": 14 }, - "end": { "line": 9, "column": 25 } - }, - "9": { - "start": { "line": 9, "column": 20 }, - "end": { "line": 9, "column": 25 } - }, - "10": { - "start": { "line": 21, "column": 31 }, - "end": { "line": 21, "column": 34 } - }, - "11": { - "start": { "line": 49, "column": 34 }, - "end": { "line": 49, "column": 39 } - }, - "12": { - "start": { "line": 52, "column": 13 }, - "end": { "line": 52, "column": 31 } - }, - "13": { - "start": { "line": 53, "column": 13 }, - "end": { "line": 53, "column": 31 } - }, - "14": { - "start": { "line": 54, "column": 13 }, - "end": { "line": 54, "column": 27 } - }, - "15": { - "start": { "line": 55, "column": 13 }, - "end": { "line": 55, "column": 25 } - }, - "16": { - "start": { "line": 57, "column": 4 }, - "end": { "line": 57, "column": null } - }, - "17": { - "start": { "line": 58, "column": 4 }, - "end": { "line": 61, "column": null } - }, - "18": { - "start": { "line": 62, "column": 4 }, - "end": { "line": 64, "column": null } - }, - "19": { - "start": { "line": 63, "column": 6 }, - "end": { "line": 63, "column": null } - }, - "20": { - "start": { "line": 65, "column": 4 }, - "end": { "line": 84, "column": null } - }, - "21": { - "start": { "line": 67, "column": 8 }, - "end": { "line": 83, "column": 10 } - }, - "22": { - "start": { "line": 68, "column": 22 }, - "end": { "line": 68, "column": 23 } - }, - "23": { - "start": { "line": 69, "column": 10 }, - "end": { "line": 81, "column": null } - }, - "24": { - "start": { "line": 70, "column": 65 }, - "end": { "line": 70, "column": 68 } - }, - "25": { - "start": { "line": 72, "column": 12 }, - "end": { "line": 79, "column": null } - }, - "26": { - "start": { "line": 73, "column": 14 }, - "end": { "line": 77, "column": null } - }, - "27": { - "start": { "line": 78, "column": 14 }, - "end": { "line": 78, "column": null } - }, - "28": { - "start": { "line": 80, "column": 12 }, - "end": { "line": 80, "column": null } - }, - "29": { - "start": { "line": 82, "column": 10 }, - "end": { "line": 82, "column": null } - }, - "30": { - "start": { "line": 90, "column": 30 }, - "end": { "line": 90, "column": 35 } - }, - "31": { - "start": { "line": 91, "column": 27 }, - "end": { "line": 93, "column": 6 } - }, - "32": { - "start": { "line": 95, "column": 19 }, - "end": { "line": 95, "column": 33 } - }, - "33": { - "start": { "line": 96, "column": 4 }, - "end": { "line": 98, "column": null } - }, - "34": { - "start": { "line": 97, "column": 6 }, - "end": { "line": 97, "column": null } - }, - "35": { - "start": { "line": 100, "column": 4 }, - "end": { "line": 100, "column": null } - }, - "36": { - "start": { "line": 102, "column": 4 }, - "end": { "line": 108, "column": null } - }, - "37": { - "start": { "line": 103, "column": 19 }, - "end": { "line": 103, "column": 32 } - }, - "38": { - "start": { "line": 104, "column": 17 }, - "end": { "line": 104, "column": 39 } - }, - "39": { - "start": { "line": 105, "column": 6 }, - "end": { "line": 105, "column": null } - }, - "40": { - "start": { "line": 106, "column": 6 }, - "end": { "line": 106, "column": null } - }, - "41": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 107, "column": null } - }, - "42": { - "start": { "line": 110, "column": 4 }, - "end": { "line": 110, "column": null } - }, - "43": { - "start": { "line": 119, "column": 25 }, - "end": { "line": 119, "column": 62 } - }, - "44": { - "start": { "line": 120, "column": 4 }, - "end": { "line": 127, "column": null } - }, - "45": { - "start": { "line": 121, "column": 6 }, - "end": { "line": 123, "column": null } - }, - "46": { - "start": { "line": 122, "column": 8 }, - "end": { "line": 122, "column": null } - }, - "47": { - "start": { "line": 124, "column": 6 }, - "end": { "line": 124, "column": null } - }, - "48": { - "start": { "line": 126, "column": 6 }, - "end": { "line": 126, "column": null } - }, - "49": { - "start": { "line": 131, "column": 4 }, - "end": { "line": 133, "column": null } - }, - "50": { - "start": { "line": 134, "column": 4 }, - "end": { "line": 171, "column": null } - }, - "51": { - "start": { "line": 135, "column": 22 }, - "end": { "line": 139, "column": 13 } - }, - "52": { - "start": { "line": 140, "column": 19 }, - "end": { "line": 140, "column": 67 } - }, - "53": { - "start": { "line": 142, "column": 6 }, - "end": { "line": 142, "column": null } - }, - "54": { - "start": { "line": 143, "column": 6 }, - "end": { "line": 143, "column": null } - }, - "55": { - "start": { "line": 144, "column": 6 }, - "end": { "line": 144, "column": null } - }, - "56": { - "start": { "line": 145, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "57": { - "start": { "line": 146, "column": 22 }, - "end": { "line": 150, "column": 13 } - }, - "58": { - "start": { "line": 151, "column": 19 }, - "end": { "line": 151, "column": 66 } - }, - "59": { - "start": { "line": 153, "column": 6 }, - "end": { "line": 153, "column": null } - }, - "60": { - "start": { "line": 154, "column": 6 }, - "end": { "line": 154, "column": null } - }, - "61": { - "start": { "line": 155, "column": 6 }, - "end": { "line": 155, "column": null } - }, - "62": { - "start": { "line": 156, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "63": { - "start": { "line": 157, "column": 6 }, - "end": { "line": 157, "column": null } - }, - "64": { - "start": { "line": 158, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "65": { - "start": { "line": 159, "column": 22 }, - "end": { "line": 163, "column": 13 } - }, - "66": { - "start": { "line": 164, "column": 19 }, - "end": { "line": 164, "column": 52 } - }, - "67": { - "start": { "line": 166, "column": 6 }, - "end": { "line": 166, "column": null } - }, - "68": { - "start": { "line": 167, "column": 6 }, - "end": { "line": 167, "column": null } - }, - "69": { - "start": { "line": 168, "column": 6 }, - "end": { "line": 168, "column": null } - }, - "70": { - "start": { "line": 170, "column": 6 }, - "end": { "line": 170, "column": null } - }, - "71": { - "start": { "line": 172, "column": 4 }, - "end": { "line": 172, "column": null } - }, - "72": { - "start": { "line": 176, "column": 4 }, - "end": { "line": 178, "column": null } - }, - "73": { - "start": { "line": 177, "column": 6 }, - "end": { "line": 177, "column": 12 } - }, - "74": { - "start": { "line": 179, "column": 4 }, - "end": { "line": 190, "column": null } - }, - "75": { - "start": { "line": 180, "column": 6 }, - "end": { "line": 189, "column": null } - }, - "76": { - "start": { "line": 181, "column": 8 }, - "end": { "line": 183, "column": null } - }, - "77": { - "start": { "line": 182, "column": 10 }, - "end": { "line": 182, "column": null } - }, - "78": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 186, "column": null } - }, - "79": { - "start": { "line": 185, "column": 10 }, - "end": { "line": 185, "column": null } - }, - "80": { - "start": { "line": 188, "column": 8 }, - "end": { "line": 188, "column": null } - }, - "81": { - "start": { "line": 194, "column": 4 }, - "end": { "line": 198, "column": null } - }, - "82": { - "start": { "line": 195, "column": 19 }, - "end": { "line": 195, "column": 28 } - }, - "83": { - "start": { "line": 196, "column": 6 }, - "end": { "line": 196, "column": null } - }, - "84": { - "start": { "line": 197, "column": 6 }, - "end": { "line": 197, "column": null } - }, - "85": { - "start": { "line": 211, "column": 4 }, - "end": { "line": 211, "column": null } - }, - "86": { - "start": { "line": 212, "column": 39 }, - "end": { "line": 217, "column": 23 } - }, - "87": { - "start": { "line": 216, "column": 19 }, - "end": { "line": 216, "column": 23 } - }, - "88": { - "start": { "line": 218, "column": 26 }, - "end": { "line": 218, "column": 28 } - }, - "89": { - "start": { "line": 219, "column": 4 }, - "end": { "line": 222, "column": null } - }, - "90": { - "start": { "line": 220, "column": 6 }, - "end": { "line": 220, "column": null } - }, - "91": { - "start": { "line": 221, "column": 6 }, - "end": { "line": 221, "column": null } - }, - "92": { - "start": { "line": 223, "column": 18 }, - "end": { "line": 223, "column": 42 } - }, - "93": { - "start": { "line": 224, "column": 4 }, - "end": { "line": 227, "column": null } - }, - "94": { - "start": { "line": 225, "column": 6 }, - "end": { "line": 225, "column": null } - }, - "95": { - "start": { "line": 226, "column": 6 }, - "end": { "line": 226, "column": null } - }, - "96": { - "start": { "line": 228, "column": 18 }, - "end": { "line": 239, "column": null } - }, - "97": { - "start": { "line": 241, "column": 4 }, - "end": { "line": 252, "column": null } - }, - "98": { - "start": { "line": 242, "column": 6 }, - "end": { "line": 250, "column": null } - }, - "99": { - "start": { "line": 243, "column": 8 }, - "end": { "line": 249, "column": 10 } - }, - "100": { - "start": { "line": 244, "column": 10 }, - "end": { "line": 248, "column": null } - }, - "101": { - "start": { "line": 245, "column": 12 }, - "end": { "line": 245, "column": null } - }, - "102": { - "start": { "line": 247, "column": 12 }, - "end": { "line": 247, "column": null } - }, - "103": { - "start": { "line": 251, "column": 6 }, - "end": { "line": 251, "column": null } - }, - "104": { - "start": { "line": 251, "column": 43 }, - "end": { "line": 251, "column": 67 } - }, - "105": { - "start": { "line": 253, "column": 16 }, - "end": { "line": 253, "column": 25 } - }, - "106": { - "start": { "line": 254, "column": 19 }, - "end": { "line": 254, "column": 50 } - }, - "107": { - "start": { "line": 255, "column": 19 }, - "end": { "line": 255, "column": 50 } - }, - "108": { - "start": { "line": 257, "column": 6 }, - "end": { "line": 269, "column": 7 } - }, - "109": { - "start": { "line": 258, "column": 6 }, - "end": { "line": 269, "column": 7 } - }, - "110": { - "start": { "line": 259, "column": 8 }, - "end": { "line": 268, "column": null } - }, - "111": { - "start": { "line": 260, "column": 10 }, - "end": { "line": 260, "column": null } - }, - "112": { - "start": { "line": 261, "column": 15 }, - "end": { "line": 268, "column": null } - }, - "113": { - "start": { "line": 262, "column": 10 }, - "end": { "line": 265, "column": null } - }, - "114": { - "start": { "line": 267, "column": 10 }, - "end": { "line": 267, "column": null } - }, - "115": { - "start": { "line": 270, "column": 4 }, - "end": { "line": 287, "column": null } - }, - "116": { - "start": { "line": 271, "column": 6 }, - "end": { "line": 271, "column": null } - }, - "117": { - "start": { "line": 273, "column": 6 }, - "end": { "line": 275, "column": null } - }, - "118": { - "start": { "line": 274, "column": 8 }, - "end": { "line": 274, "column": null } - }, - "119": { - "start": { "line": 274, "column": 39 }, - "end": { "line": 274, "column": 60 } - }, - "120": { - "start": { "line": 276, "column": 6 }, - "end": { "line": 276, "column": null } - }, - "121": { - "start": { "line": 277, "column": 6 }, - "end": { "line": 277, "column": null } - }, - "122": { - "start": { "line": 278, "column": 6 }, - "end": { "line": 286, "column": null } - }, - "123": { - "start": { "line": 279, "column": 8 }, - "end": { "line": 279, "column": null } - }, - "124": { - "start": { "line": 280, "column": 8 }, - "end": { "line": 285, "column": null } - }, - "125": { - "start": { "line": 294, "column": 4 }, - "end": { "line": 294, "column": null } - }, - "126": { - "start": { "line": 295, "column": 27 }, - "end": { "line": 300, "column": 23 } - }, - "127": { - "start": { "line": 299, "column": 19 }, - "end": { "line": 299, "column": 23 } - }, - "128": { - "start": { "line": 301, "column": 26 }, - "end": { "line": 301, "column": 28 } - }, - "129": { - "start": { "line": 302, "column": 4 }, - "end": { "line": 305, "column": null } - }, - "130": { - "start": { "line": 303, "column": 6 }, - "end": { "line": 303, "column": null } - }, - "131": { - "start": { "line": 304, "column": 6 }, - "end": { "line": 304, "column": null } - }, - "132": { - "start": { "line": 306, "column": 18 }, - "end": { "line": 306, "column": 42 } - }, - "133": { - "start": { "line": 307, "column": 4 }, - "end": { "line": 310, "column": null } - }, - "134": { - "start": { "line": 308, "column": 6 }, - "end": { "line": 308, "column": null } - }, - "135": { - "start": { "line": 309, "column": 6 }, - "end": { "line": 309, "column": null } - }, - "136": { - "start": { "line": 311, "column": 4 }, - "end": { "line": 311, "column": null } - }, - "137": { - "start": { "line": 312, "column": 4 }, - "end": { "line": 312, "column": null } - }, - "138": { - "start": { "line": 313, "column": 4 }, - "end": { "line": 325, "column": null } - }, - "139": { - "start": { "line": 326, "column": 4 }, - "end": { "line": 328, "column": null } - }, - "140": { - "start": { "line": 327, "column": 6 }, - "end": { "line": 327, "column": null } - }, - "141": { - "start": { "line": 329, "column": 4 }, - "end": { "line": 329, "column": null } - }, - "142": { - "start": { "line": 336, "column": 4 }, - "end": { "line": 336, "column": null } - }, - "143": { - "start": { "line": 337, "column": 27 }, - "end": { "line": 342, "column": 23 } - }, - "144": { - "start": { "line": 341, "column": 19 }, - "end": { "line": 341, "column": 23 } - }, - "145": { - "start": { "line": 343, "column": 26 }, - "end": { "line": 343, "column": 28 } - }, - "146": { - "start": { "line": 344, "column": 4 }, - "end": { "line": 347, "column": null } - }, - "147": { - "start": { "line": 345, "column": 6 }, - "end": { "line": 345, "column": null } - }, - "148": { - "start": { "line": 346, "column": 6 }, - "end": { "line": 346, "column": null } - }, - "149": { - "start": { "line": 348, "column": 18 }, - "end": { "line": 348, "column": 42 } - }, - "150": { - "start": { "line": 349, "column": 4 }, - "end": { "line": 352, "column": null } - }, - "151": { - "start": { "line": 350, "column": 6 }, - "end": { "line": 350, "column": null } - }, - "152": { - "start": { "line": 351, "column": 6 }, - "end": { "line": 351, "column": null } - }, - "153": { - "start": { "line": 353, "column": 4 }, - "end": { "line": 365, "column": null } - }, - "154": { - "start": { "line": 47, "column": 0 }, - "end": { "line": 47, "column": 13 } - }, - "155": { - "start": { "line": 375, "column": 22 }, - "end": { "line": 375, "column": 49 } - }, - "156": { - "start": { "line": 377, "column": 4 }, - "end": { "line": 377, "column": null } - }, - "157": { - "start": { "line": 385, "column": 4 }, - "end": { "line": 385, "column": null } - }, - "158": { - "start": { "line": 391, "column": 4 }, - "end": { "line": 391, "column": null } - }, - "159": { - "start": { "line": 374, "column": 0 }, - "end": { "line": 374, "column": 13 } - }, - "160": { - "start": { "line": 433, "column": 2 }, - "end": { "line": 433, "column": null } - }, - "161": { - "start": { "line": 433, "column": 34 }, - "end": { "line": 433, "column": 59 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 8, "column": 16 }, - "end": { "line": 8, "column": 17 } - }, - "loc": { - "start": { "line": 8, "column": 37 }, - "end": { "line": 8, "column": 72 } - } - }, - "1": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 9, "column": 14 }, - "end": { "line": 9, "column": 17 } - }, - "loc": { - "start": { "line": 9, "column": 20 }, - "end": { "line": 9, "column": 25 } - } - }, - "2": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 51, "column": 2 }, - "end": { "line": 51, "column": null } - }, - "loc": { - "start": { "line": 55, "column": 25 }, - "end": { "line": 85, "column": 3 } - } - }, - "3": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 62, "column": 27 }, - "end": { "line": 62, "column": 30 } - }, - "loc": { - "start": { "line": 62, "column": 32 }, - "end": { "line": 64, "column": 5 } - } - }, - "4": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 66, "column": 6 }, - "end": { "line": 66, "column": 9 } - }, - "loc": { - "start": { "line": 67, "column": 8 }, - "end": { "line": 83, "column": 10 } - } - }, - "5": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 67, "column": 20 }, - "end": { "line": 67, "column": 25 } - }, - "loc": { - "start": { "line": 67, "column": 46 }, - "end": { "line": 83, "column": 9 } - } - }, - "6": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 70, "column": 58 }, - "end": { "line": 70, "column": 59 } - }, - "loc": { - "start": { "line": 70, "column": 65 }, - "end": { "line": 70, "column": 68 } - } - }, - "7": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 86, "column": 2 }, - "end": { "line": 86, "column": 8 } - }, - "loc": { - "start": { "line": 88, "column": 49 }, - "end": { "line": 111, "column": 3 } - } - }, - "8": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 113, "column": 2 }, - "end": { "line": 113, "column": 8 } - }, - "loc": { - "start": { "line": 117, "column": 50 }, - "end": { "line": 128, "column": 3 } - } - }, - "9": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 130, "column": 2 }, - "end": { "line": 130, "column": 7 } - }, - "loc": { - "start": { "line": 130, "column": 49 }, - "end": { "line": 173, "column": 3 } - } - }, - "10": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 175, "column": 10 }, - "end": { "line": 175, "column": 15 } - }, - "loc": { - "start": { "line": 175, "column": 26 }, - "end": { "line": 191, "column": 3 } - } - }, - "11": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 179, "column": 29 }, - "end": { "line": 179, "column": 30 } - }, - "loc": { - "start": { "line": 179, "column": 49 }, - "end": { "line": 190, "column": 5 } - } - }, - "12": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 181, "column": 31 }, - "end": { "line": 181, "column": 34 } - }, - "loc": { - "start": { "line": 181, "column": 36 }, - "end": { "line": 183, "column": 9 } - } - }, - "13": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 193, "column": 2 }, - "end": { "line": 193, "column": 6 } - }, - "loc": { - "start": { "line": 193, "column": 13 }, - "end": { "line": 199, "column": 3 } - } - }, - "14": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 194, "column": 11 }, - "end": { "line": 194, "column": 16 } - }, - "loc": { - "start": { "line": 194, "column": 22 }, - "end": { "line": 198, "column": 5 } - } - }, - "15": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 201, "column": 2 }, - "end": { "line": 201, "column": 7 } - }, - "loc": { - "start": { "line": 204, "column": 36 }, - "end": { "line": 288, "column": 3 } - } - }, - "16": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 216, "column": 13 }, - "end": { "line": 216, "column": 16 } - }, - "loc": { - "start": { "line": 216, "column": 19 }, - "end": { "line": 216, "column": 23 } - } - }, - "17": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 242, "column": 30 }, - "end": { "line": 242, "column": 31 } - }, - "loc": { - "start": { "line": 243, "column": 8 }, - "end": { "line": 249, "column": 10 } - } - }, - "18": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 243, "column": 41 }, - "end": { "line": 243, "column": 42 } - }, - "loc": { - "start": { "line": 243, "column": 47 }, - "end": { "line": 249, "column": 9 } - } - }, - "19": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 251, "column": 30 }, - "end": { "line": 251, "column": 31 } - }, - "loc": { - "start": { "line": 251, "column": 43 }, - "end": { "line": 251, "column": 67 } - } - }, - "20": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 257, "column": 6 }, - "end": { "line": 257, "column": 7 } - }, - "loc": { - "start": { "line": 258, "column": 6 }, - "end": { "line": 269, "column": 7 } - } - }, - "21": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 258, "column": 6 }, - "end": { "line": 258, "column": 7 } - }, - "loc": { - "start": { "line": 258, "column": 39 }, - "end": { "line": 269, "column": 7 } - } - }, - "22": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 270, "column": 23 }, - "end": { "line": 270, "column": 24 } - }, - "loc": { - "start": { "line": 270, "column": 43 }, - "end": { "line": 287, "column": 5 } - } - }, - "23": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 274, "column": 33 }, - "end": { "line": 274, "column": 36 } - }, - "loc": { - "start": { "line": 274, "column": 39 }, - "end": { "line": 274, "column": 60 } - } - }, - "24": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 278, "column": 23 }, - "end": { "line": 278, "column": 24 } - }, - "loc": { - "start": { "line": 278, "column": 40 }, - "end": { "line": 286, "column": 7 } - } - }, - "25": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 290, "column": 2 }, - "end": { "line": 290, "column": 7 } - }, - "loc": { - "start": { "line": 292, "column": 28 }, - "end": { "line": 330, "column": 3 } - } - }, - "26": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 299, "column": 13 }, - "end": { "line": 299, "column": 16 } - }, - "loc": { - "start": { "line": 299, "column": 19 }, - "end": { "line": 299, "column": 23 } - } - }, - "27": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 326, "column": 27 }, - "end": { "line": 326, "column": 30 } - }, - "loc": { - "start": { "line": 326, "column": 32 }, - "end": { "line": 328, "column": 5 } - } - }, - "28": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 332, "column": 2 }, - "end": { "line": 332, "column": 7 } - }, - "loc": { - "start": { "line": 334, "column": 28 }, - "end": { "line": 366, "column": 3 } - } - }, - "29": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 341, "column": 13 }, - "end": { "line": 341, "column": 16 } - }, - "loc": { - "start": { "line": 341, "column": 19 }, - "end": { "line": 341, "column": 23 } - } - }, - "30": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 375, "column": 2 }, - "end": { "line": 375, "column": 22 } - }, - "loc": { - "start": { "line": 375, "column": 49 }, - "end": { "line": 375, "column": 53 } - } - }, - "31": { - "name": "(anonymous_37)", - "decl": { - "start": { "line": 376, "column": 2 }, - "end": { "line": 376, "column": 6 } - }, - "loc": { - "start": { "line": 376, "column": 13 }, - "end": { "line": 378, "column": 3 } - } - }, - "32": { - "name": "(anonymous_38)", - "decl": { - "start": { "line": 380, "column": 2 }, - "end": { "line": 380, "column": 6 } - }, - "loc": { - "start": { "line": 383, "column": 29 }, - "end": { "line": 386, "column": 3 } - } - }, - "33": { - "name": "(anonymous_39)", - "decl": { - "start": { "line": 387, "column": 2 }, - "end": { "line": 387, "column": 7 } - }, - "loc": { - "start": { "line": 389, "column": 28 }, - "end": { "line": 392, "column": 3 } - } - }, - "34": { - "name": "wait", - "decl": { - "start": { "line": 432, "column": 9 }, - "end": { "line": 432, "column": 13 } - }, - "loc": { - "start": { "line": 432, "column": 26 }, - "end": { "line": 434, "column": 1 } - } - }, - "35": { - "name": "(anonymous_41)", - "decl": { - "start": { "line": 433, "column": 21 }, - "end": { "line": 433, "column": 22 } - }, - "loc": { - "start": { "line": 433, "column": 34 }, - "end": { "line": 433, "column": 59 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 72, "column": 12 }, - "end": { "line": 79, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 72, "column": 12 }, - "end": { "line": 79, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 96, "column": 4 }, - "end": { "line": 98, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 96, "column": 4 }, - "end": { "line": 98, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 131, "column": 11 }, - "end": { "line": 133, "column": 32 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 132, "column": 8 }, - "end": { "line": 132, "column": 31 } - }, - { - "start": { "line": 133, "column": 8 }, - "end": { "line": 133, "column": 32 } - } - ] - }, - "3": { - "loc": { - "start": { "line": 134, "column": 4 }, - "end": { "line": 171, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 134, "column": 4 }, - "end": { "line": 171, "column": null } - }, - { - "start": { "line": 145, "column": 11 }, - "end": { "line": 171, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 135, "column": 22 }, - "end": { "line": 139, "column": 13 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 136, "column": 10 }, - "end": { "line": 138, "column": 33 } - }, - { - "start": { "line": 139, "column": 10 }, - "end": { "line": 139, "column": 13 } - } - ] - }, - "5": { - "loc": { - "start": { "line": 136, "column": 10 }, - "end": { "line": 138, "column": 33 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 137, "column": 12 }, - "end": { "line": 137, "column": 27 } - }, - { - "start": { "line": 138, "column": 12 }, - "end": { "line": 138, "column": 33 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 145, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 145, "column": 11 }, - "end": { "line": 171, "column": null } - }, - { - "start": { "line": 156, "column": 11 }, - "end": { "line": 171, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 146, "column": 22 }, - "end": { "line": 150, "column": 13 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 147, "column": 10 }, - "end": { "line": 149, "column": 33 } - }, - { - "start": { "line": 150, "column": 10 }, - "end": { "line": 150, "column": 13 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 147, "column": 10 }, - "end": { "line": 149, "column": 33 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 148, "column": 12 }, - "end": { "line": 148, "column": 27 } - }, - { - "start": { "line": 149, "column": 12 }, - "end": { "line": 149, "column": 33 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 156, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 156, "column": 11 }, - "end": { "line": 171, "column": null } - }, - { - "start": { "line": 158, "column": 11 }, - "end": { "line": 171, "column": null } - } - ] - }, - "10": { - "loc": { - "start": { "line": 158, "column": 11 }, - "end": { "line": 171, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 158, "column": 11 }, - "end": { "line": 171, "column": null } - }, - { - "start": { "line": 169, "column": 11 }, - "end": { "line": 171, "column": null } - } - ] - }, - "11": { - "loc": { - "start": { "line": 159, "column": 22 }, - "end": { "line": 163, "column": 13 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 160, "column": 10 }, - "end": { "line": 162, "column": 33 } - }, - { - "start": { "line": 163, "column": 10 }, - "end": { "line": 163, "column": 13 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 160, "column": 10 }, - "end": { "line": 162, "column": 33 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 161, "column": 12 }, - "end": { "line": 161, "column": 27 } - }, - { - "start": { "line": 162, "column": 12 }, - "end": { "line": 162, "column": 33 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 176, "column": 4 }, - "end": { "line": 178, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 176, "column": 4 }, - "end": { "line": 178, "column": null } - } - ] - }, - "14": { - "loc": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 186, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 184, "column": 8 }, - "end": { "line": 186, "column": null } - } - ] - }, - "15": { - "loc": { - "start": { "line": 204, "column": 4 }, - "end": { "line": 204, "column": 36 } - }, - "type": "default-arg", - "locations": [ - { - "start": { "line": 204, "column": 31 }, - "end": { "line": 204, "column": 36 } - } - ] - }, - "16": { - "loc": { - "start": { "line": 219, "column": 4 }, - "end": { "line": 222, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 219, "column": 4 }, - "end": { "line": 222, "column": null } - } - ] - }, - "17": { - "loc": { - "start": { "line": 223, "column": 18 }, - "end": { "line": 223, "column": 42 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 223, "column": 18 }, - "end": { "line": 223, "column": 35 } - }, - { - "start": { "line": 223, "column": 39 }, - "end": { "line": 223, "column": 42 } - } - ] - }, - "18": { - "loc": { - "start": { "line": 224, "column": 4 }, - "end": { "line": 227, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 224, "column": 4 }, - "end": { "line": 227, "column": null } - } - ] - }, - "19": { - "loc": { - "start": { "line": 239, "column": 6 }, - "end": { "line": 239, "column": 19 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 239, "column": 6 }, - "end": { "line": 239, "column": 13 } - }, - { - "start": { "line": 239, "column": 17 }, - "end": { "line": 239, "column": 19 } - } - ] - }, - "20": { - "loc": { - "start": { "line": 241, "column": 4 }, - "end": { "line": 252, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 241, "column": 4 }, - "end": { "line": 252, "column": null } - } - ] - }, - "21": { - "loc": { - "start": { "line": 244, "column": 10 }, - "end": { "line": 248, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 244, "column": 10 }, - "end": { "line": 248, "column": null } - }, - { - "start": { "line": 246, "column": 17 }, - "end": { "line": 248, "column": null } - } - ] - }, - "22": { - "loc": { - "start": { "line": 259, "column": 8 }, - "end": { "line": 268, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 259, "column": 8 }, - "end": { "line": 268, "column": null } - }, - { - "start": { "line": 261, "column": 15 }, - "end": { "line": 268, "column": null } - } - ] - }, - "23": { - "loc": { - "start": { "line": 259, "column": 12 }, - "end": { "line": 259, "column": 74 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 259, "column": 12 }, - "end": { "line": 259, "column": 45 } - }, - { - "start": { "line": 259, "column": 49 }, - "end": { "line": 259, "column": 74 } - } - ] - }, - "24": { - "loc": { - "start": { "line": 261, "column": 15 }, - "end": { "line": 268, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 261, "column": 15 }, - "end": { "line": 268, "column": null } - }, - { - "start": { "line": 266, "column": 15 }, - "end": { "line": 268, "column": null } - } - ] - }, - "25": { - "loc": { - "start": { "line": 261, "column": 19 }, - "end": { "line": 261, "column": 71 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 261, "column": 19 }, - "end": { "line": 261, "column": 44 } - }, - { - "start": { "line": 261, "column": 48 }, - "end": { "line": 261, "column": 71 } - } - ] - }, - "26": { - "loc": { - "start": { "line": 273, "column": 6 }, - "end": { "line": 275, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 273, "column": 6 }, - "end": { "line": 275, "column": null } - } - ] - }, - "27": { - "loc": { - "start": { "line": 273, "column": 10 }, - "end": { "line": 273, "column": 41 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 273, "column": 10 }, - "end": { "line": 273, "column": 28 } - }, - { - "start": { "line": 273, "column": 32 }, - "end": { "line": 273, "column": 41 } - } - ] - }, - "28": { - "loc": { - "start": { "line": 302, "column": 4 }, - "end": { "line": 305, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 302, "column": 4 }, - "end": { "line": 305, "column": null } - } - ] - }, - "29": { - "loc": { - "start": { "line": 306, "column": 18 }, - "end": { "line": 306, "column": 42 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 306, "column": 18 }, - "end": { "line": 306, "column": 35 } - }, - { - "start": { "line": 306, "column": 39 }, - "end": { "line": 306, "column": 42 } - } - ] - }, - "30": { - "loc": { - "start": { "line": 307, "column": 4 }, - "end": { "line": 310, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 307, "column": 4 }, - "end": { "line": 310, "column": null } - } - ] - }, - "31": { - "loc": { - "start": { "line": 344, "column": 4 }, - "end": { "line": 347, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 344, "column": 4 }, - "end": { "line": 347, "column": null } - } - ] - }, - "32": { - "loc": { - "start": { "line": 348, "column": 18 }, - "end": { "line": 348, "column": 42 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 348, "column": 18 }, - "end": { "line": 348, "column": 35 } - }, - { - "start": { "line": 348, "column": 39 }, - "end": { "line": 348, "column": 42 } - } - ] - }, - "33": { - "loc": { - "start": { "line": 349, "column": 4 }, - "end": { "line": 352, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 349, "column": 4 }, - "end": { "line": 352, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 0, - "8": 5, - "9": 0, - "10": 5, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 0, - "62": 0, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0, - "73": 0, - "74": 0, - "75": 0, - "76": 0, - "77": 0, - "78": 0, - "79": 0, - "80": 0, - "81": 0, - "82": 0, - "83": 0, - "84": 0, - "85": 0, - "86": 0, - "87": 0, - "88": 0, - "89": 0, - "90": 0, - "91": 0, - "92": 0, - "93": 0, - "94": 0, - "95": 0, - "96": 0, - "97": 0, - "98": 0, - "99": 0, - "100": 0, - "101": 0, - "102": 0, - "103": 0, - "104": 0, - "105": 0, - "106": 0, - "107": 0, - "108": 0, - "109": 0, - "110": 0, - "111": 0, - "112": 0, - "113": 0, - "114": 0, - "115": 0, - "116": 0, - "117": 0, - "118": 0, - "119": 0, - "120": 0, - "121": 0, - "122": 0, - "123": 0, - "124": 0, - "125": 0, - "126": 0, - "127": 0, - "128": 0, - "129": 0, - "130": 0, - "131": 0, - "132": 0, - "133": 0, - "134": 0, - "135": 0, - "136": 0, - "137": 0, - "138": 0, - "139": 0, - "140": 0, - "141": 0, - "142": 0, - "143": 0, - "144": 0, - "145": 0, - "146": 0, - "147": 0, - "148": 0, - "149": 0, - "150": 0, - "151": 0, - "152": 0, - "153": 0, - "154": 5, - "155": 0, - "156": 0, - "157": 0, - "158": 0, - "159": 5, - "160": 0, - "161": 0 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0 - }, - "b": { - "0": [0], - "1": [0], - "2": [0, 0], - "3": [0, 0], - "4": [0, 0], - "5": [0, 0], - "6": [0, 0], - "7": [0, 0], - "8": [0, 0], - "9": [0, 0], - "10": [0, 0], - "11": [0, 0], - "12": [0, 0], - "13": [0], - "14": [0], - "15": [0], - "16": [0], - "17": [0, 0], - "18": [0], - "19": [0, 0], - "20": [0], - "21": [0, 0], - "22": [0, 0], - "23": [0, 0], - "24": [0, 0], - "25": [0, 0], - "26": [0], - "27": [0, 0], - "28": [0], - "29": [0, 0], - "30": [0], - "31": [0], - "32": [0, 0], - "33": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/asError.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/asError.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 23 }, - "end": { "line": 6, "column": 1 } - }, - "1": { - "start": { "line": 2, "column": 2 }, - "end": { "line": 4, "column": null } - }, - "2": { - "start": { "line": 3, "column": 4 }, - "end": { "line": 3, "column": null } - }, - "3": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "4": { - "start": { "line": 1, "column": 13 }, - "end": { "line": 1, "column": 23 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 1, "column": 23 }, - "end": { "line": 1, "column": 24 } - }, - "loc": { - "start": { "line": 1, "column": 38 }, - "end": { "line": 6, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 2, "column": 2 }, - "end": { "line": 4, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 2, "column": 2 }, - "end": { "line": 4, "column": null } - } - ] - } - }, - "s": { "0": 5, "1": 0, "2": 0, "3": 0, "4": 5 }, - "f": { "0": 0 }, - "b": { "0": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/deepEqual.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/deepEqual.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 35 } - }, - "1": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": null } - }, - "2": { - "start": { "line": 4, "column": 43 }, - "end": { "line": 4, "column": null } - }, - "3": { - "start": { "line": 5, "column": 18 }, - "end": { "line": 5, "column": 42 } - }, - "4": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "5": { - "start": { "line": 7, "column": 4 }, - "end": { "line": 7, "column": null } - }, - "6": { - "start": { "line": 7, "column": 26 }, - "end": { "line": 7, "column": null } - }, - "7": { - "start": { "line": 7, "column": 45 }, - "end": { "line": 7, "column": null } - }, - "8": { - "start": { "line": 8, "column": 4 }, - "end": { "line": 8, "column": null } - }, - "9": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "10": { - "start": { "line": 10, "column": 38 }, - "end": { "line": 10, "column": null } - }, - "11": { - "start": { "line": 11, "column": 18 }, - "end": { "line": 11, "column": 65 } - }, - "12": { - "start": { "line": 11, "column": 49 }, - "end": { "line": 11, "column": 63 } - }, - "13": { - "start": { "line": 12, "column": 2 }, - "end": { "line": 17, "column": null } - }, - "14": { - "start": { "line": 13, "column": 4 }, - "end": { "line": 16, "column": null } - }, - "15": { - "start": { "line": 14, "column": 6 }, - "end": { "line": 14, "column": null } - }, - "16": { - "start": { "line": 14, "column": 23 }, - "end": { "line": 14, "column": null } - }, - "17": { - "start": { "line": 15, "column": 6 }, - "end": { "line": 15, "column": null } - }, - "18": { - "start": { "line": 15, "column": 65 }, - "end": { "line": 15, "column": null } - }, - "19": { - "start": { "line": 18, "column": 2 }, - "end": { "line": 18, "column": null } - }, - "20": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "deepEqual", - "decl": { - "start": { "line": 3, "column": 16 }, - "end": { "line": 3, "column": 25 } - }, - "loc": { - "start": { "line": 3, "column": 44 }, - "end": { "line": 19, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 11, "column": 42 }, - "end": { "line": 11, "column": 43 } - }, - "loc": { - "start": { "line": 11, "column": 49 }, - "end": { "line": 11, "column": 63 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 6, "column": 2 }, - "end": { "line": 9, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 7, "column": 26 }, - "end": { "line": 7, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 7, "column": 26 }, - "end": { "line": 7, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 14, "column": 6 }, - "end": { "line": 14, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 14, "column": 6 }, - "end": { "line": 14, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 15, "column": 6 }, - "end": { "line": 15, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 15, "column": 6 }, - "end": { "line": 15, "column": null } - } - ] - } - }, - "s": { - "0": 6, - "1": 11, - "2": 8, - "3": 3, - "4": 3, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 3, - "10": 0, - "11": 3, - "12": 6, - "13": 3, - "14": 5, - "15": 10, - "16": 0, - "17": 10, - "18": 0, - "19": 3, - "20": 6 - }, - "f": { "0": 11, "1": 6 }, - "b": { "0": [8], "1": [0], "2": [0], "3": [0], "4": [0], "5": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/deepMerge.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/deepMerge.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 35 } - }, - "1": { - "start": { "line": 4, "column": 20 }, - "end": { "line": 4, "column": 49 } - }, - "2": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "3": { - "start": { "line": 5, "column": 30 }, - "end": { "line": 5, "column": null } - }, - "4": { - "start": { "line": 6, "column": 18 }, - "end": { "line": 6, "column": 75 } - }, - "5": { - "start": { "line": 6, "column": 57 }, - "end": { "line": 6, "column": 74 } - }, - "6": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "7": { - "start": { "line": 7, "column": 28 }, - "end": { "line": 7, "column": null } - }, - "8": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "9": { - "start": { "line": 8, "column": 28 }, - "end": { "line": 8, "column": null } - }, - "10": { - "start": { "line": 9, "column": 18 }, - "end": { "line": 9, "column": 65 } - }, - "11": { - "start": { "line": 9, "column": 49 }, - "end": { "line": 9, "column": 63 } - }, - "12": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 15, "column": null } - }, - "13": { - "start": { "line": 11, "column": 27 }, - "end": { "line": 12, "column": null } - }, - "14": { - "start": { "line": 12, "column": 6 }, - "end": { "line": 12, "column": 39 } - }, - "15": { - "start": { "line": 14, "column": 6 }, - "end": { "line": 14, "column": null } - }, - "16": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 16, "column": null } - }, - "17": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "deepMerge", - "decl": { - "start": { "line": 3, "column": 16 }, - "end": { "line": 3, "column": 25 } - }, - "loc": { - "start": { "line": 3, "column": 44 }, - "end": { "line": 17, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 6, "column": 50 }, - "end": { "line": 6, "column": 51 } - }, - "loc": { - "start": { "line": 6, "column": 57 }, - "end": { "line": 6, "column": 74 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 9, "column": 42 }, - "end": { "line": 9, "column": 43 } - }, - "loc": { - "start": { "line": 9, "column": 49 }, - "end": { "line": 9, "column": 63 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 11, "column": 43 }, - "end": { "line": 11, "column": 44 } - }, - "loc": { - "start": { "line": 12, "column": 6 }, - "end": { "line": 12, "column": 39 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 12, "column": 6 }, - "end": { "line": 12, "column": 39 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 12, "column": 17 }, - "end": { "line": 12, "column": 34 } - }, - { - "start": { "line": 12, "column": 37 }, - "end": { "line": 12, "column": 39 } - } - ] - } - }, - "s": { - "0": 6, - "1": 253, - "2": 253, - "3": 156, - "4": 97, - "5": 126, - "6": 97, - "7": 26, - "8": 71, - "9": 50, - "10": 71, - "11": 149, - "12": 71, - "13": 242, - "14": 528, - "15": 242, - "16": 71, - "17": 6 - }, - "f": { "0": 253, "1": 126, "2": 149, "3": 528 }, - "b": { "0": [156], "1": [26], "2": [50], "3": [262, 266] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/fileHelper.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/fileHelper.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 28 } - }, - "1": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 35 } - }, - "2": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 32 } - }, - "3": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 38 } - }, - "4": { - "start": { "line": 8, "column": 21 }, - "end": { "line": 8, "column": 38 } - }, - "5": { - "start": { "line": 57, "column": 13 }, - "end": { "line": 57, "column": 25 } - }, - "6": { - "start": { "line": 58, "column": 13 }, - "end": { "line": 58, "column": 45 } - }, - "7": { - "start": { "line": 59, "column": 13 }, - "end": { "line": 59, "column": 49 } - }, - "8": { - "start": { "line": 62, "column": 19 }, - "end": { "line": 62, "column": 47 } - }, - "9": { - "start": { "line": 63, "column": 4 }, - "end": { "line": 65, "column": null } - }, - "10": { - "start": { "line": 64, "column": 6 }, - "end": { "line": 64, "column": null } - }, - "11": { - "start": { "line": 67, "column": 4 }, - "end": { "line": 67, "column": null } - }, - "12": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 77, "column": null } - }, - "13": { - "start": { "line": 72, "column": 14 }, - "end": { "line": 72, "column": 18 } - }, - "14": { - "start": { "line": 73, "column": 14 }, - "end": { "line": 73, "column": 19 } - }, - "15": { - "start": { "line": 76, "column": 6 }, - "end": { "line": 76, "column": null } - }, - "16": { - "start": { "line": 78, "column": 4 }, - "end": { "line": 80, "column": null } - }, - "17": { - "start": { "line": 79, "column": 50 }, - "end": { "line": 79, "column": 72 } - }, - "18": { - "start": { "line": 84, "column": 21 }, - "end": { "line": 84, "column": 71 } - }, - "19": { - "start": { "line": 84, "column": 60 }, - "end": { "line": 84, "column": 62 } - }, - "20": { - "start": { "line": 85, "column": 22 }, - "end": { "line": 85, "column": 47 } - }, - "21": { - "start": { "line": 86, "column": 4 }, - "end": { "line": 86, "column": null } - }, - "22": { - "start": { "line": 98, "column": 4 }, - "end": { "line": 98, "column": null } - }, - "23": { - "start": { "line": 104, "column": 4 }, - "end": { "line": 112, "column": null } - }, - "24": { - "start": { "line": 107, "column": 8 }, - "end": { "line": 107, "column": null } - }, - "25": { - "start": { "line": 110, "column": 8 }, - "end": { "line": 110, "column": null } - }, - "26": { - "start": { "line": 121, "column": 4 }, - "end": { "line": 129, "column": null } - }, - "27": { - "start": { "line": 124, "column": 8 }, - "end": { "line": 124, "column": null } - }, - "28": { - "start": { "line": 127, "column": 8 }, - "end": { "line": 127, "column": null } - }, - "29": { - "start": { "line": 138, "column": 4 }, - "end": { "line": 146, "column": null } - }, - "30": { - "start": { "line": 141, "column": 8 }, - "end": { "line": 141, "column": null } - }, - "31": { - "start": { "line": 144, "column": 8 }, - "end": { "line": 144, "column": null } - }, - "32": { - "start": { "line": 55, "column": 0 }, - "end": { "line": 55, "column": 13 } - }, - "33": { - "start": { "line": 150, "column": 0 }, - "end": { "line": 150, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 56, "column": 2 }, - "end": { "line": 56, "column": null } - }, - "loc": { - "start": { "line": 59, "column": 49 }, - "end": { "line": 60, "column": 6 } - } - }, - "1": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 61, "column": 2 }, - "end": { "line": 61, "column": 7 } - }, - "loc": { - "start": { "line": 61, "column": 41 }, - "end": { "line": 68, "column": 3 } - } - }, - "2": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 69, "column": 2 }, - "end": { "line": 69, "column": 7 } - }, - "loc": { - "start": { "line": 69, "column": 31 }, - "end": { "line": 81, "column": 3 } - } - }, - "3": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 72, "column": 8 }, - "end": { "line": 72, "column": 11 } - }, - "loc": { - "start": { "line": 72, "column": 14 }, - "end": { "line": 72, "column": 18 } - } - }, - "4": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 73, "column": 8 }, - "end": { "line": 73, "column": 11 } - }, - "loc": { - "start": { "line": 73, "column": 14 }, - "end": { "line": 73, "column": 19 } - } - }, - "5": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 79, "column": 40 }, - "end": { "line": 79, "column": 41 } - }, - "loc": { - "start": { "line": 79, "column": 50 }, - "end": { "line": 79, "column": 72 } - } - }, - "6": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 83, "column": 2 }, - "end": { "line": 83, "column": 7 } - }, - "loc": { - "start": { "line": 83, "column": 41 }, - "end": { "line": 87, "column": 3 } - } - }, - "7": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 84, "column": 53 }, - "end": { "line": 84, "column": 56 } - }, - "loc": { - "start": { "line": 84, "column": 60 }, - "end": { "line": 84, "column": 62 } - } - }, - "8": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 93, "column": 2 }, - "end": { "line": 93, "column": 8 } - }, - "loc": { - "start": { "line": 96, "column": 36 }, - "end": { "line": 99, "column": 3 } - } - }, - "9": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 103, "column": 2 }, - "end": { "line": 103, "column": 8 } - }, - "loc": { - "start": { "line": 103, "column": 67 }, - "end": { "line": 113, "column": 3 } - } - }, - "10": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 106, "column": 6 }, - "end": { "line": 106, "column": 7 } - }, - "loc": { - "start": { "line": 106, "column": 17 }, - "end": { "line": 108, "column": 7 } - } - }, - "11": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 109, "column": 6 }, - "end": { "line": 109, "column": 7 } - }, - "loc": { - "start": { "line": 109, "column": 19 }, - "end": { "line": 111, "column": 7 } - } - }, - "12": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 117, "column": 2 }, - "end": { "line": 117, "column": 8 } - }, - "loc": { - "start": { "line": 119, "column": 40 }, - "end": { "line": 130, "column": 3 } - } - }, - "13": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 123, "column": 6 }, - "end": { "line": 123, "column": 7 } - }, - "loc": { - "start": { "line": 123, "column": 17 }, - "end": { "line": 125, "column": 7 } - } - }, - "14": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 126, "column": 6 }, - "end": { "line": 126, "column": 7 } - }, - "loc": { - "start": { "line": 126, "column": 19 }, - "end": { "line": 128, "column": 7 } - } - }, - "15": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 134, "column": 2 }, - "end": { "line": 134, "column": 8 } - }, - "loc": { - "start": { "line": 136, "column": 40 }, - "end": { "line": 147, "column": 3 } - } - }, - "16": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 140, "column": 6 }, - "end": { "line": 140, "column": 7 } - }, - "loc": { - "start": { "line": 140, "column": 17 }, - "end": { "line": 142, "column": 7 } - } - }, - "17": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 143, "column": 6 }, - "end": { "line": 143, "column": 7 } - }, - "loc": { - "start": { "line": 143, "column": 19 }, - "end": { "line": 145, "column": 7 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 63, "column": 4 }, - "end": { "line": 65, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 63, "column": 4 }, - "end": { "line": 65, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 77, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 70, "column": 4 }, - "end": { "line": 77, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 84, "column": 21 }, - "end": { "line": 84, "column": 71 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 84, "column": 22 }, - "end": { "line": 84, "column": 64 } - }, - { - "start": { "line": 84, "column": 69 }, - "end": { "line": 84, "column": 71 } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 5, - "33": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0 - }, - "b": { "0": [0], "1": [0], "2": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/getDefaultString.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/getDefaultString.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 51 } - }, - "1": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "2": { - "start": { "line": 6, "column": 4 }, - "end": { "line": 6, "column": null } - }, - "3": { - "start": { "line": 8, "column": 4 }, - "end": { "line": 8, "column": null } - }, - "4": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "getDefaultString", - "decl": { - "start": { "line": 4, "column": 16 }, - "end": { "line": 4, "column": 32 } - }, - "loc": { - "start": { "line": 4, "column": 59 }, - "end": { "line": 10, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 5, "column": 2 }, - "end": { "line": 9, "column": null } - }, - { - "start": { "line": 7, "column": 9 }, - "end": { "line": 9, "column": null } - } - ] - } - }, - "s": { "0": 5, "1": 0, "2": 0, "3": 0, "4": 5 }, - "f": { "0": 0 }, - "b": { "0": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/getRandomCharInSet.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/getRandomCharInSet.ts", - "statementMap": { - "0": { - "start": { "line": 4, "column": 14 }, - "end": { "line": 4, "column": 38 } - }, - "1": { - "start": { "line": 5, "column": 16 }, - "end": { "line": 6, "column": null } - }, - "2": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 13, "column": null } - }, - "3": { - "start": { "line": 9, "column": 4 }, - "end": { "line": 11, "column": null } - }, - "4": { - "start": { "line": 10, "column": 6 }, - "end": { "line": 10, "column": null } - }, - "5": { - "start": { "line": 12, "column": 4 }, - "end": { "line": 12, "column": null } - }, - "6": { - "start": { "line": 14, "column": 2 }, - "end": { "line": 14, "column": null } - }, - "7": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 16 } - }, - "8": { - "start": { "line": 17, "column": 21 }, - "end": { "line": 17, "column": 43 } - }, - "9": { - "start": { "line": 18, "column": 29 }, - "end": { "line": 18, "column": 33 } - }, - "10": { - "start": { "line": 19, "column": 27 }, - "end": { "line": 19, "column": 31 } - }, - "11": { - "start": { "line": 20, "column": 17 }, - "end": { "line": 20, "column": 22 } - }, - "12": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 70, "column": null } - }, - "13": { - "start": { "line": 22, "column": 4 }, - "end": { "line": 69, "column": null } - }, - "14": { - "start": { "line": 24, "column": 8 }, - "end": { "line": 48, "column": null } - }, - "15": { - "start": { "line": 25, "column": 10 }, - "end": { "line": 27, "column": null } - }, - "16": { - "start": { "line": 26, "column": 12 }, - "end": { "line": 26, "column": null } - }, - "17": { - "start": { "line": 28, "column": 22 }, - "end": { "line": 28, "column": 65 } - }, - "18": { - "start": { "line": 29, "column": 10 }, - "end": { "line": 33, "column": null } - }, - "19": { - "start": { "line": 34, "column": 10 }, - "end": { "line": 34, "column": null } - }, - "20": { - "start": { "line": 35, "column": 10 }, - "end": { "line": 35, "column": null } - }, - "21": { - "start": { "line": 36, "column": 10 }, - "end": { "line": 36, "column": null } - }, - "22": { - "start": { "line": 37, "column": 10 }, - "end": { "line": 37, "column": null } - }, - "23": { - "start": { "line": 38, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "24": { - "start": { "line": 39, "column": 10 }, - "end": { "line": 39, "column": null } - }, - "25": { - "start": { "line": 40, "column": 10 }, - "end": { "line": 40, "column": null } - }, - "26": { - "start": { "line": 41, "column": 10 }, - "end": { "line": 41, "column": null } - }, - "27": { - "start": { "line": 42, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "28": { - "start": { "line": 43, "column": 10 }, - "end": { "line": 43, "column": null } - }, - "29": { - "start": { "line": 44, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "30": { - "start": { "line": 45, "column": 10 }, - "end": { "line": 45, "column": null } - }, - "31": { - "start": { "line": 47, "column": 10 }, - "end": { "line": 47, "column": null } - }, - "32": { - "start": { "line": 49, "column": 8 }, - "end": { "line": 49, "column": 13 } - }, - "33": { - "start": { "line": 51, "column": 8 }, - "end": { "line": 59, "column": null } - }, - "34": { - "start": { "line": 52, "column": 10 }, - "end": { "line": 52, "column": null } - }, - "35": { - "start": { "line": 53, "column": 15 }, - "end": { "line": 59, "column": null } - }, - "36": { - "start": { "line": 54, "column": 10 }, - "end": { "line": 54, "column": null } - }, - "37": { - "start": { "line": 55, "column": 15 }, - "end": { "line": 59, "column": null } - }, - "38": { - "start": { "line": 56, "column": 10 }, - "end": { "line": 56, "column": null } - }, - "39": { - "start": { "line": 58, "column": 10 }, - "end": { "line": 58, "column": null } - }, - "40": { - "start": { "line": 60, "column": 8 }, - "end": { "line": 60, "column": 13 } - }, - "41": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 68, "column": null } - }, - "42": { - "start": { "line": 63, "column": 10 }, - "end": { "line": 63, "column": null } - }, - "43": { - "start": { "line": 64, "column": 15 }, - "end": { "line": 68, "column": null } - }, - "44": { - "start": { "line": 65, "column": 10 }, - "end": { "line": 65, "column": null } - }, - "45": { - "start": { "line": 67, "column": 10 }, - "end": { "line": 67, "column": null } - }, - "46": { - "start": { "line": 71, "column": 2 }, - "end": { "line": 89, "column": null } - }, - "47": { - "start": { "line": 72, "column": 4 }, - "end": { "line": 74, "column": null } - }, - "48": { - "start": { "line": 73, "column": 6 }, - "end": { "line": 73, "column": null } - }, - "49": { - "start": { "line": 75, "column": 16 }, - "end": { "line": 75, "column": 59 } - }, - "50": { - "start": { "line": 76, "column": 4 }, - "end": { "line": 80, "column": null } - }, - "51": { - "start": { "line": 81, "column": 4 }, - "end": { "line": 81, "column": null } - }, - "52": { - "start": { "line": 82, "column": 9 }, - "end": { "line": 89, "column": null } - }, - "53": { - "start": { "line": 83, "column": 4 }, - "end": { "line": 83, "column": null } - }, - "54": { - "start": { "line": 84, "column": 4 }, - "end": { "line": 88, "column": null } - }, - "55": { - "start": { "line": 90, "column": 2 }, - "end": { "line": 90, "column": null } - } - }, - "fnMap": { - "0": { - "name": "getRandomCharInSet", - "decl": { - "start": { "line": 3, "column": 16 }, - "end": { "line": 3, "column": 34 } - }, - "loc": { - "start": { "line": 3, "column": 50 }, - "end": { "line": 15, "column": 1 } - } - }, - "1": { - "name": "stringToCharSet", - "decl": { - "start": { "line": 16, "column": 9 }, - "end": { "line": 16, "column": 24 } - }, - "loc": { - "start": { "line": 16, "column": 40 }, - "end": { "line": 91, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 9, "column": 4 }, - "end": { "line": 11, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 9, "column": 4 }, - "end": { "line": 11, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 22, "column": 4 }, - "end": { "line": 69, "column": null } - }, - "type": "switch", - "locations": [ - { - "start": { "line": 23, "column": 6 }, - "end": { "line": 49, "column": 13 } - }, - { - "start": { "line": 50, "column": 6 }, - "end": { "line": 60, "column": 13 } - }, - { - "start": { "line": 61, "column": 6 }, - "end": { "line": 68, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 24, "column": 8 }, - "end": { "line": 48, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 24, "column": 8 }, - "end": { "line": 48, "column": null } - }, - { - "start": { "line": 38, "column": 15 }, - "end": { "line": 48, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 24, "column": 12 }, - "end": { "line": 24, "column": 42 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 24, "column": 12 }, - "end": { "line": 24, "column": 26 } - }, - { - "start": { "line": 24, "column": 30 }, - "end": { "line": 24, "column": 42 } - } - ] - }, - "4": { - "loc": { - "start": { "line": 25, "column": 10 }, - "end": { "line": 27, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 25, "column": 10 }, - "end": { "line": 27, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 38, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 38, "column": 15 }, - "end": { "line": 48, "column": null } - }, - { - "start": { "line": 42, "column": 15 }, - "end": { "line": 48, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 38, "column": 19 }, - "end": { "line": 38, "column": 46 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 38, "column": 19 }, - "end": { "line": 38, "column": 33 } - }, - { - "start": { "line": 38, "column": 37 }, - "end": { "line": 38, "column": 46 } - } - ] - }, - "7": { - "loc": { - "start": { "line": 42, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 42, "column": 15 }, - "end": { "line": 48, "column": null } - }, - { - "start": { "line": 44, "column": 15 }, - "end": { "line": 48, "column": null } - } - ] - }, - "8": { - "loc": { - "start": { "line": 42, "column": 19 }, - "end": { "line": 42, "column": 45 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 42, "column": 19 }, - "end": { "line": 42, "column": 33 } - }, - { - "start": { "line": 42, "column": 37 }, - "end": { "line": 42, "column": 45 } - } - ] - }, - "9": { - "loc": { - "start": { "line": 44, "column": 15 }, - "end": { "line": 48, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 44, "column": 15 }, - "end": { "line": 48, "column": null } - }, - { - "start": { "line": 46, "column": 15 }, - "end": { "line": 48, "column": null } - } - ] - }, - "10": { - "loc": { - "start": { "line": 44, "column": 19 }, - "end": { "line": 44, "column": 62 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 44, "column": 19 }, - "end": { "line": 44, "column": 33 } - }, - { - "start": { "line": 44, "column": 37 }, - "end": { "line": 44, "column": 49 } - }, - { - "start": { "line": 44, "column": 53 }, - "end": { "line": 44, "column": 62 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 51, "column": 8 }, - "end": { "line": 59, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 51, "column": 8 }, - "end": { "line": 59, "column": null } - }, - { - "start": { "line": 53, "column": 15 }, - "end": { "line": 59, "column": null } - } - ] - }, - "12": { - "loc": { - "start": { "line": 53, "column": 15 }, - "end": { "line": 59, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 53, "column": 15 }, - "end": { "line": 59, "column": null } - }, - { - "start": { "line": 55, "column": 15 }, - "end": { "line": 59, "column": null } - } - ] - }, - "13": { - "loc": { - "start": { "line": 55, "column": 15 }, - "end": { "line": 59, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 55, "column": 15 }, - "end": { "line": 59, "column": null } - }, - { - "start": { "line": 57, "column": 15 }, - "end": { "line": 59, "column": null } - } - ] - }, - "14": { - "loc": { - "start": { "line": 55, "column": 19 }, - "end": { "line": 55, "column": 43 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 55, "column": 19 }, - "end": { "line": 55, "column": 27 } - }, - { - "start": { "line": 55, "column": 31 }, - "end": { "line": 55, "column": 43 } - } - ] - }, - "15": { - "loc": { - "start": { "line": 62, "column": 8 }, - "end": { "line": 68, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 62, "column": 8 }, - "end": { "line": 68, "column": null } - }, - { - "start": { "line": 64, "column": 15 }, - "end": { "line": 68, "column": null } - } - ] - }, - "16": { - "loc": { - "start": { "line": 64, "column": 15 }, - "end": { "line": 68, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 64, "column": 15 }, - "end": { "line": 68, "column": null } - }, - { - "start": { "line": 66, "column": 15 }, - "end": { "line": 68, "column": null } - } - ] - }, - "17": { - "loc": { - "start": { "line": 64, "column": 19 }, - "end": { "line": 64, "column": 43 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 64, "column": 19 }, - "end": { "line": 64, "column": 27 } - }, - { - "start": { "line": 64, "column": 31 }, - "end": { "line": 64, "column": 43 } - } - ] - }, - "18": { - "loc": { - "start": { "line": 71, "column": 2 }, - "end": { "line": 89, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 71, "column": 2 }, - "end": { "line": 89, "column": null } - }, - { - "start": { "line": 82, "column": 9 }, - "end": { "line": 89, "column": null } - } - ] - }, - "19": { - "loc": { - "start": { "line": 71, "column": 6 }, - "end": { "line": 71, "column": 36 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 71, "column": 6 }, - "end": { "line": 71, "column": 20 } - }, - { - "start": { "line": 71, "column": 24 }, - "end": { "line": 71, "column": 36 } - } - ] - }, - "20": { - "loc": { - "start": { "line": 72, "column": 4 }, - "end": { "line": 74, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 72, "column": 4 }, - "end": { "line": 74, "column": null } - } - ] - }, - "21": { - "loc": { - "start": { "line": 82, "column": 9 }, - "end": { "line": 89, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 82, "column": 9 }, - "end": { "line": 89, "column": null } - } - ] - } - }, - "s": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 5, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0 - }, - "f": { "0": 0, "1": 0 }, - "b": { - "0": [0], - "1": [0, 0, 0], - "2": [0, 0], - "3": [0, 0], - "4": [0], - "5": [0, 0], - "6": [0, 0], - "7": [0, 0], - "8": [0, 0], - "9": [0, 0], - "10": [0, 0, 0], - "11": [0, 0], - "12": [0, 0], - "13": [0, 0], - "14": [0, 0], - "15": [0, 0], - "16": [0, 0], - "17": [0, 0], - "18": [0, 0], - "19": [0, 0], - "20": [0], - "21": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/getRandomString.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/getRandomString.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 57 } - }, - "1": { - "start": { "line": 5, "column": 10 }, - "end": { "line": 5, "column": 12 } - }, - "2": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "3": { - "start": { "line": 6, "column": 15 }, - "end": { "line": 6, "column": 16 } - }, - "4": { - "start": { "line": 7, "column": 4 }, - "end": { "line": 7, "column": null } - }, - "5": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "6": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "getRandomString", - "decl": { - "start": { "line": 4, "column": 16 }, - "end": { "line": 4, "column": 31 } - }, - "loc": { - "start": { "line": 4, "column": 55 }, - "end": { "line": 11, "column": 1 } - } - } - }, - "branchMap": {}, - "s": { "0": 5, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 5 }, - "f": { "0": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/getServiceInterface.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/getServiceInterface.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 51 } - }, - "1": { - "start": { "line": 18, "column": 25 }, - "end": { "line": 18, "column": 65 } - }, - "2": { - "start": { "line": 19, "column": 27 }, - "end": { "line": 25, "column": 1 } - }, - "3": { - "start": { "line": 20, "column": 17 }, - "end": { "line": 20, "column": 49 } - }, - "4": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "5": { - "start": { "line": 21, "column": 15 }, - "end": { "line": 21, "column": null } - }, - "6": { - "start": { "line": 22, "column": 16 }, - "end": { "line": 22, "column": 33 } - }, - "7": { - "start": { "line": 23, "column": 15 }, - "end": { "line": 23, "column": 57 } - }, - "8": { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": null } - }, - "9": { - "start": { "line": 19, "column": 13 }, - "end": { "line": 19, "column": 27 } - }, - "10": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 69, "column": 26 } - }, - "11": { - "start": { "line": 68, "column": 2 }, - "end": { "line": 69, "column": 26 } - }, - "12": { - "start": { "line": 69, "column": 4 }, - "end": { "line": 69, "column": 26 } - }, - "13": { - "start": { "line": 69, "column": 21 }, - "end": { "line": 69, "column": 25 } - }, - "14": { - "start": { "line": 71, "column": 2 }, - "end": { "line": 73, "column": 10 } - }, - "15": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 73, "column": 10 } - }, - "16": { - "start": { "line": 73, "column": 4 }, - "end": { "line": 73, "column": 10 } - }, - "17": { - "start": { "line": 74, "column": 15 }, - "end": { "line": 74, "column": 62 } - }, - "18": { - "start": { "line": 74, "column": 35 }, - "end": { "line": 74, "column": 62 } - }, - "19": { - "start": { "line": 75, "column": 32 }, - "end": { "line": 109, "column": 1 } - }, - "20": { - "start": { "line": 79, "column": 14 }, - "end": { "line": 79, "column": 16 } - }, - "21": { - "start": { "line": 80, "column": 14 }, - "end": { "line": 100, "column": 3 } - }, - "22": { - "start": { "line": 82, "column": 6 }, - "end": { "line": 84, "column": 80 } - }, - "23": { - "start": { "line": 86, "column": 4 }, - "end": { "line": 96, "column": null } - }, - "24": { - "start": { "line": 87, "column": 6 }, - "end": { "line": 87, "column": null } - }, - "25": { - "start": { "line": 88, "column": 11 }, - "end": { "line": 96, "column": null } - }, - "26": { - "start": { "line": 89, "column": 6 }, - "end": { "line": 95, "column": null } - }, - "27": { - "start": { "line": 90, "column": 8 }, - "end": { "line": 90, "column": null } - }, - "28": { - "start": { "line": 91, "column": 13 }, - "end": { "line": 95, "column": null } - }, - "29": { - "start": { "line": 92, "column": 8 }, - "end": { "line": 92, "column": null } - }, - "30": { - "start": { "line": 94, "column": 8 }, - "end": { "line": 94, "column": null } - }, - "31": { - "start": { "line": 97, "column": 4 }, - "end": { "line": 99, "column": null } - }, - "32": { - "start": { "line": 101, "column": 2 }, - "end": { "line": 103, "column": null } - }, - "33": { - "start": { "line": 102, "column": 4 }, - "end": { "line": 102, "column": null } - }, - "34": { - "start": { "line": 104, "column": 2 }, - "end": { "line": 106, "column": null } - }, - "35": { - "start": { "line": 105, "column": 4 }, - "end": { "line": 105, "column": null } - }, - "36": { - "start": { "line": 108, "column": 2 }, - "end": { "line": 108, "column": null } - }, - "37": { - "start": { "line": 75, "column": 13 }, - "end": { "line": 75, "column": 32 } - }, - "38": { - "start": { "line": 111, "column": 29 }, - "end": { "line": 176, "column": 1 } - }, - "39": { - "start": { "line": 115, "column": 16 }, - "end": { "line": 115, "column": 56 } - }, - "40": { - "start": { "line": 116, "column": 20 }, - "end": { "line": 116, "column": 63 } - }, - "41": { - "start": { "line": 118, "column": 2 }, - "end": { "line": 175, "column": null } - }, - "42": { - "start": { "line": 122, "column": 6 }, - "end": { "line": 122, "column": null } - }, - "43": { - "start": { "line": 122, "column": 37 }, - "end": { "line": 122, "column": 55 } - }, - "44": { - "start": { "line": 125, "column": 6 }, - "end": { "line": 127, "column": null } - }, - "45": { - "start": { "line": 126, "column": 15 }, - "end": { "line": 126, "column": 61 } - }, - "46": { - "start": { "line": 130, "column": 6 }, - "end": { "line": 134, "column": null } - }, - "47": { - "start": { "line": 132, "column": 10 }, - "end": { "line": 133, "column": 68 } - }, - "48": { - "start": { "line": 137, "column": 6 }, - "end": { "line": 139, "column": null } - }, - "49": { - "start": { "line": 138, "column": 15 }, - "end": { "line": 138, "column": 60 } - }, - "50": { - "start": { "line": 142, "column": 6 }, - "end": { "line": 144, "column": null } - }, - "51": { - "start": { "line": 143, "column": 15 }, - "end": { "line": 143, "column": 60 } - }, - "52": { - "start": { "line": 147, "column": 6 }, - "end": { "line": 152, "column": null } - }, - "53": { - "start": { "line": 149, "column": 10 }, - "end": { "line": 151, "column": 36 } - }, - "54": { - "start": { "line": 155, "column": 6 }, - "end": { "line": 155, "column": null } - }, - "55": { - "start": { "line": 158, "column": 6 }, - "end": { "line": 158, "column": null } - }, - "56": { - "start": { "line": 161, "column": 6 }, - "end": { "line": 161, "column": null } - }, - "57": { - "start": { "line": 164, "column": 6 }, - "end": { "line": 164, "column": null } - }, - "58": { - "start": { "line": 167, "column": 6 }, - "end": { "line": 167, "column": null } - }, - "59": { - "start": { "line": 170, "column": 6 }, - "end": { "line": 170, "column": null } - }, - "60": { - "start": { "line": 173, "column": 6 }, - "end": { "line": 173, "column": null } - }, - "61": { - "start": { "line": 111, "column": 13 }, - "end": { "line": 111, "column": 29 } - }, - "62": { - "start": { "line": 178, "column": 28 }, - "end": { "line": 222, "column": 1 } - }, - "63": { - "start": { "line": 189, "column": 32 }, - "end": { "line": 193, "column": 4 } - }, - "64": { - "start": { "line": 194, "column": 2 }, - "end": { "line": 196, "column": null } - }, - "65": { - "start": { "line": 195, "column": 4 }, - "end": { "line": 195, "column": null } - }, - "66": { - "start": { "line": 197, "column": 17 }, - "end": { "line": 197, "column": 57 } - }, - "67": { - "start": { "line": 198, "column": 15 }, - "end": { "line": 202, "column": 4 } - }, - "68": { - "start": { "line": 203, "column": 21 }, - "end": { "line": 207, "column": 4 } - }, - "69": { - "start": { "line": 209, "column": 50 }, - "end": { "line": 220, "column": null } - }, - "70": { - "start": { "line": 217, "column": 6 }, - "end": { "line": 217, "column": null } - }, - "71": { - "start": { "line": 217, "column": 30 }, - "end": { "line": 217, "column": null } - }, - "72": { - "start": { "line": 218, "column": 6 }, - "end": { "line": 218, "column": null } - }, - "73": { - "start": { "line": 221, "column": 2 }, - "end": { "line": 221, "column": null } - }, - "74": { - "start": { "line": 226, "column": 13 }, - "end": { "line": 226, "column": 29 } - }, - "75": { - "start": { "line": 227, "column": 13 }, - "end": { "line": 227, "column": 53 } - }, - "76": { - "start": { "line": 234, "column": 30 }, - "end": { "line": 234, "column": 39 } - }, - "77": { - "start": { "line": 235, "column": 21 }, - "end": { "line": 235, "column": 41 } - }, - "78": { - "start": { "line": 236, "column": 28 }, - "end": { "line": 241, "column": 6 } - }, - "79": { - "start": { "line": 243, "column": 4 }, - "end": { "line": 243, "column": null } - }, - "80": { - "start": { "line": 249, "column": 30 }, - "end": { "line": 249, "column": 39 } - }, - "81": { - "start": { "line": 250, "column": 28 }, - "end": { "line": 254, "column": 6 } - }, - "82": { - "start": { "line": 256, "column": 4 }, - "end": { "line": 256, "column": null } - }, - "83": { - "start": { "line": 263, "column": 30 }, - "end": { "line": 263, "column": 39 } - }, - "84": { - "start": { "line": 264, "column": 4 }, - "end": { "line": 276, "column": null } - }, - "85": { - "start": { "line": 265, "column": 33 }, - "end": { "line": 265, "column": 41 } - }, - "86": { - "start": { "line": 266, "column": 26 }, - "end": { "line": 268, "column": 8 } - }, - "87": { - "start": { "line": 267, "column": 8 }, - "end": { "line": 267, "column": null } - }, - "88": { - "start": { "line": 269, "column": 6 }, - "end": { "line": 274, "column": null } - }, - "89": { - "start": { "line": 275, "column": 6 }, - "end": { "line": 275, "column": null } - }, - "90": { - "start": { "line": 224, "column": 0 }, - "end": { "line": 224, "column": 13 } - }, - "91": { - "start": { "line": 283, "column": 2 }, - "end": { "line": 283, "column": null } - }, - "92": { - "start": { "line": 279, "column": 0 }, - "end": { "line": 279, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 19, "column": 27 }, - "end": { "line": 19, "column": 28 } - }, - "loc": { - "start": { "line": 19, "column": 60 }, - "end": { "line": 25, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 67, "column": 2 }, - "end": { "line": 67, "column": 6 } - }, - "loc": { - "start": { "line": 68, "column": 2 }, - "end": { "line": 69, "column": 26 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 68, "column": 2 }, - "end": { "line": 68, "column": 3 } - }, - "loc": { - "start": { "line": 69, "column": 4 }, - "end": { "line": 69, "column": 26 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 69, "column": 14 }, - "end": { "line": 69, "column": 15 } - }, - "loc": { - "start": { "line": 69, "column": 21 }, - "end": { "line": 69, "column": 25 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 71, "column": 2 }, - "end": { "line": 71, "column": 6 } - }, - "loc": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 73, "column": 10 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 72, "column": 3 } - }, - "loc": { - "start": { "line": 73, "column": 4 }, - "end": { "line": 73, "column": 10 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 74, "column": 15 }, - "end": { "line": 74, "column": 19 } - }, - "loc": { - "start": { "line": 74, "column": 35 }, - "end": { "line": 74, "column": 62 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 75, "column": 32 }, - "end": { "line": 75, "column": null } - }, - "loc": { - "start": { "line": 78, "column": 17 }, - "end": { "line": 109, "column": 1 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 80, "column": 14 }, - "end": { "line": 80, "column": 15 } - }, - "loc": { - "start": { "line": 80, "column": 74 }, - "end": { "line": 100, "column": 3 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 111, "column": 29 }, - "end": { "line": 111, "column": null } - }, - "loc": { - "start": { "line": 114, "column": 23 }, - "end": { "line": 176, "column": 1 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 121, "column": 4 }, - "end": { "line": 121, "column": 8 } - }, - "loc": { - "start": { "line": 121, "column": 22 }, - "end": { "line": 123, "column": 5 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 122, "column": 30 }, - "end": { "line": 122, "column": 31 } - }, - "loc": { - "start": { "line": 122, "column": 37 }, - "end": { "line": 122, "column": 55 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 124, "column": 4 }, - "end": { "line": 124, "column": 8 } - }, - "loc": { - "start": { "line": 124, "column": 22 }, - "end": { "line": 128, "column": 5 } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 126, "column": 8 }, - "end": { "line": 126, "column": 9 } - }, - "loc": { - "start": { "line": 126, "column": 15 }, - "end": { "line": 126, "column": 61 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 129, "column": 4 }, - "end": { "line": 129, "column": 8 } - }, - "loc": { - "start": { "line": 129, "column": 19 }, - "end": { "line": 135, "column": 5 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 131, "column": 8 }, - "end": { "line": 131, "column": 9 } - }, - "loc": { - "start": { "line": 132, "column": 10 }, - "end": { "line": 133, "column": 68 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 136, "column": 4 }, - "end": { "line": 136, "column": 8 } - }, - "loc": { - "start": { "line": 136, "column": 21 }, - "end": { "line": 140, "column": 5 } - } - }, - "17": { - "name": "(anonymous_17)", - "decl": { - "start": { "line": 138, "column": 8 }, - "end": { "line": 138, "column": 9 } - }, - "loc": { - "start": { "line": 138, "column": 15 }, - "end": { "line": 138, "column": 60 } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 141, "column": 4 }, - "end": { "line": 141, "column": 8 } - }, - "loc": { - "start": { "line": 141, "column": 21 }, - "end": { "line": 145, "column": 5 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 143, "column": 8 }, - "end": { "line": 143, "column": 9 } - }, - "loc": { - "start": { "line": 143, "column": 15 }, - "end": { "line": 143, "column": 60 } - } - }, - "20": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 146, "column": 4 }, - "end": { "line": 146, "column": 8 } - }, - "loc": { - "start": { "line": 146, "column": 22 }, - "end": { "line": 153, "column": 5 } - } - }, - "21": { - "name": "(anonymous_21)", - "decl": { - "start": { "line": 148, "column": 8 }, - "end": { "line": 148, "column": 9 } - }, - "loc": { - "start": { "line": 149, "column": 10 }, - "end": { "line": 151, "column": 36 } - } - }, - "22": { - "name": "(anonymous_22)", - "decl": { - "start": { "line": 154, "column": 4 }, - "end": { "line": 154, "column": 8 } - }, - "loc": { - "start": { "line": 154, "column": 12 }, - "end": { "line": 156, "column": 5 } - } - }, - "23": { - "name": "(anonymous_23)", - "decl": { - "start": { "line": 157, "column": 4 }, - "end": { "line": 157, "column": 8 } - }, - "loc": { - "start": { "line": 157, "column": 17 }, - "end": { "line": 159, "column": 5 } - } - }, - "24": { - "name": "(anonymous_24)", - "decl": { - "start": { "line": 160, "column": 4 }, - "end": { "line": 160, "column": 8 } - }, - "loc": { - "start": { "line": 160, "column": 17 }, - "end": { "line": 162, "column": 5 } - } - }, - "25": { - "name": "(anonymous_25)", - "decl": { - "start": { "line": 163, "column": 4 }, - "end": { "line": 163, "column": 8 } - }, - "loc": { - "start": { "line": 163, "column": 14 }, - "end": { "line": 165, "column": 5 } - } - }, - "26": { - "name": "(anonymous_26)", - "decl": { - "start": { "line": 166, "column": 4 }, - "end": { "line": 166, "column": 8 } - }, - "loc": { - "start": { "line": 166, "column": 16 }, - "end": { "line": 168, "column": 5 } - } - }, - "27": { - "name": "(anonymous_27)", - "decl": { - "start": { "line": 169, "column": 4 }, - "end": { "line": 169, "column": 8 } - }, - "loc": { - "start": { "line": 169, "column": 16 }, - "end": { "line": 171, "column": 5 } - } - }, - "28": { - "name": "(anonymous_28)", - "decl": { - "start": { "line": 172, "column": 4 }, - "end": { "line": 172, "column": 8 } - }, - "loc": { - "start": { "line": 172, "column": 17 }, - "end": { "line": 174, "column": 5 } - } - }, - "29": { - "name": "(anonymous_29)", - "decl": { - "start": { "line": 178, "column": 28 }, - "end": { "line": 178, "column": 33 } - }, - "loc": { - "start": { "line": 188, "column": 5 }, - "end": { "line": 222, "column": 1 } - } - }, - "30": { - "name": "(anonymous_30)", - "decl": { - "start": { "line": 216, "column": 4 }, - "end": { "line": 216, "column": 8 } - }, - "loc": { - "start": { "line": 216, "column": 23 }, - "end": { "line": 219, "column": 5 } - } - }, - "31": { - "name": "(anonymous_31)", - "decl": { - "start": { "line": 225, "column": 2 }, - "end": { "line": 225, "column": null } - }, - "loc": { - "start": { "line": 227, "column": 53 }, - "end": { "line": 228, "column": 6 } - } - }, - "32": { - "name": "(anonymous_32)", - "decl": { - "start": { "line": 233, "column": 2 }, - "end": { "line": 233, "column": 7 } - }, - "loc": { - "start": { "line": 233, "column": 13 }, - "end": { "line": 244, "column": 3 } - } - }, - "33": { - "name": "(anonymous_33)", - "decl": { - "start": { "line": 248, "column": 2 }, - "end": { "line": 248, "column": 7 } - }, - "loc": { - "start": { "line": 248, "column": 12 }, - "end": { "line": 257, "column": 3 } - } - }, - "34": { - "name": "(anonymous_34)", - "decl": { - "start": { "line": 262, "column": 2 }, - "end": { "line": 262, "column": 7 } - }, - "loc": { - "start": { "line": 262, "column": 14 }, - "end": { "line": 277, "column": 3 } - } - }, - "35": { - "name": "(anonymous_35)", - "decl": { - "start": { "line": 265, "column": 33 }, - "end": { "line": 265, "column": 36 } - }, - "loc": { - "start": { "line": 265, "column": 38 }, - "end": { "line": 265, "column": 41 } - } - }, - "36": { - "name": "(anonymous_36)", - "decl": { - "start": { "line": 266, "column": 44 }, - "end": { "line": 266, "column": 45 } - }, - "loc": { - "start": { "line": 266, "column": 56 }, - "end": { "line": 268, "column": 7 } - } - }, - "37": { - "name": "getServiceInterface", - "decl": { - "start": { "line": 279, "column": 16 }, - "end": { "line": 279, "column": 35 } - }, - "loc": { - "start": { "line": 281, "column": 42 }, - "end": { "line": 284, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 82, "column": 6 }, - "end": { "line": 84, "column": 80 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 82, "column": 6 }, - "end": { "line": 82, "column": 12 } - }, - { - "start": { "line": 83, "column": 6 }, - "end": { "line": 83, "column": 30 } - }, - { - "start": { "line": 84, "column": 6 }, - "end": { "line": 84, "column": 80 } - } - ] - }, - "2": { - "loc": { - "start": { "line": 86, "column": 4 }, - "end": { "line": 96, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 86, "column": 4 }, - "end": { "line": 96, "column": null } - }, - { - "start": { "line": 88, "column": 11 }, - "end": { "line": 96, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 88, "column": 11 }, - "end": { "line": 96, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 88, "column": 11 }, - "end": { "line": 96, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 89, "column": 6 }, - "end": { "line": 95, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 89, "column": 6 }, - "end": { "line": 95, "column": null } - }, - { - "start": { "line": 91, "column": 13 }, - "end": { "line": 95, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 90, "column": 22 }, - "end": { "line": 90, "column": 82 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 90, "column": 48 }, - "end": { "line": 90, "column": 77 } - }, - { - "start": { "line": 90, "column": 80 }, - "end": { "line": 90, "column": 82 } - } - ] - }, - "6": { - "loc": { - "start": { "line": 91, "column": 13 }, - "end": { "line": 95, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 91, "column": 13 }, - "end": { "line": 95, "column": null } - }, - { - "start": { "line": 93, "column": 13 }, - "end": { "line": 95, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 97, "column": 14 }, - "end": { "line": 97, "column": 42 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 97, "column": 23 }, - "end": { "line": 97, "column": 37 } - }, - { - "start": { "line": 97, "column": 40 }, - "end": { "line": 97, "column": 42 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 98, "column": 6 }, - "end": { "line": 98, "column": null } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 98, "column": 17 }, - "end": { "line": 98, "column": 31 } - }, - { - "start": { "line": 98, "column": 34 }, - "end": { "line": 98, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 99, "column": 18 }, - "end": { "line": 99, "column": 47 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 99, "column": 32 }, - "end": { "line": 99, "column": 34 } - }, - { - "start": { "line": 99, "column": 37 }, - "end": { "line": 99, "column": 47 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 101, "column": 2 }, - "end": { "line": 103, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 101, "column": 2 }, - "end": { "line": 103, "column": null } - } - ] - }, - "11": { - "loc": { - "start": { "line": 104, "column": 2 }, - "end": { "line": 106, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 104, "column": 2 }, - "end": { "line": 106, "column": null } - } - ] - }, - "12": { - "loc": { - "start": { "line": 126, "column": 15 }, - "end": { "line": 126, "column": 61 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 126, "column": 15 }, - "end": { "line": 126, "column": 30 } - }, - { - "start": { "line": 126, "column": 34 }, - "end": { "line": 126, "column": 61 } - } - ] - }, - "13": { - "loc": { - "start": { "line": 132, "column": 10 }, - "end": { "line": 133, "column": 68 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 132, "column": 10 }, - "end": { "line": 132, "column": 25 } - }, - { - "start": { "line": 133, "column": 11 }, - "end": { "line": 133, "column": 37 } - }, - { - "start": { "line": 133, "column": 41 }, - "end": { "line": 133, "column": 67 } - } - ] - }, - "14": { - "loc": { - "start": { "line": 138, "column": 15 }, - "end": { "line": 138, "column": 60 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 138, "column": 15 }, - "end": { "line": 138, "column": 30 } - }, - { - "start": { "line": 138, "column": 34 }, - "end": { "line": 138, "column": 60 } - } - ] - }, - "15": { - "loc": { - "start": { "line": 143, "column": 15 }, - "end": { "line": 143, "column": 60 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 143, "column": 15 }, - "end": { "line": 143, "column": 30 } - }, - { - "start": { "line": 143, "column": 34 }, - "end": { "line": 143, "column": 60 } - } - ] - }, - "16": { - "loc": { - "start": { "line": 149, "column": 10 }, - "end": { "line": 151, "column": 36 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 149, "column": 10 }, - "end": { "line": 149, "column": 25 } - }, - { - "start": { "line": 150, "column": 10 }, - "end": { "line": 150, "column": 36 } - }, - { - "start": { "line": 151, "column": 10 }, - "end": { "line": 151, "column": 36 } - } - ] - }, - "17": { - "loc": { - "start": { "line": 194, "column": 2 }, - "end": { "line": 196, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 194, "column": 2 }, - "end": { "line": 196, "column": null } - } - ] - }, - "18": { - "loc": { - "start": { "line": 213, "column": 17 }, - "end": { "line": 215, "column": 12 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 214, "column": 8 }, - "end": { "line": 214, "column": 62 } - }, - { - "start": { "line": 215, "column": 8 }, - "end": { "line": 215, "column": 12 } - } - ] - }, - "19": { - "loc": { - "start": { "line": 217, "column": 6 }, - "end": { "line": 217, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 217, "column": 6 }, - "end": { "line": 217, "column": null } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 6, - "3": 8, - "4": 8, - "5": 0, - "6": 8, - "7": 8, - "8": 8, - "9": 6, - "10": 6, - "11": 0, - "12": 0, - "13": 0, - "14": 6, - "15": 0, - "16": 0, - "17": 6, - "18": 0, - "19": 6, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 6, - "38": 6, - "39": 0, - "40": 0, - "41": 0, - "42": 0, - "43": 0, - "44": 0, - "45": 0, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 0, - "59": 0, - "60": 0, - "61": 6, - "62": 6, - "63": 0, - "64": 0, - "65": 0, - "66": 0, - "67": 0, - "68": 0, - "69": 0, - "70": 0, - "71": 0, - "72": 0, - "73": 0, - "74": 0, - "75": 0, - "76": 0, - "77": 0, - "78": 0, - "79": 0, - "80": 0, - "81": 0, - "82": 0, - "83": 0, - "84": 0, - "85": 0, - "86": 0, - "87": 0, - "88": 0, - "89": 0, - "90": 6, - "91": 0, - "92": 6 - }, - "f": { - "0": 8, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 0, - "35": 0, - "36": 0, - "37": 0 - }, - "b": { - "0": [0], - "1": [0, 0, 0], - "2": [0, 0], - "3": [0], - "4": [0, 0], - "5": [0, 0], - "6": [0, 0], - "7": [0, 0], - "8": [0, 0], - "9": [0, 0], - "10": [0], - "11": [0], - "12": [0, 0], - "13": [0, 0, 0], - "14": [0, 0], - "15": [0, 0], - "16": [0, 0, 0], - "17": [0], - "18": [0, 0], - "19": [0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/getServiceInterfaces.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/getServiceInterfaces.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": null } - }, - "1": { - "start": { "line": 8, "column": 32 }, - "end": { "line": 53, "column": 1 } - }, - "2": { - "start": { "line": 17, "column": 33 }, - "end": { "line": 20, "column": 4 } - }, - "3": { - "start": { "line": 22, "column": 60 }, - "end": { "line": 50, "column": null } - }, - "4": { - "start": { "line": 24, "column": 21 }, - "end": { "line": 24, "column": 61 } - }, - "5": { - "start": { "line": 25, "column": 19 }, - "end": { "line": 29, "column": 8 } - }, - "6": { - "start": { "line": 30, "column": 6 }, - "end": { "line": 32, "column": null } - }, - "7": { - "start": { "line": 31, "column": 8 }, - "end": { "line": 31, "column": null } - }, - "8": { - "start": { "line": 33, "column": 25 }, - "end": { "line": 39, "column": 26 } - }, - "9": { - "start": { "line": 39, "column": 21 }, - "end": { "line": 39, "column": 25 } - }, - "10": { - "start": { "line": 40, "column": 6 }, - "end": { "line": 49, "column": null } - }, - "11": { - "start": { "line": 46, "column": 10 }, - "end": { "line": 46, "column": null } - }, - "12": { - "start": { "line": 46, "column": 34 }, - "end": { "line": 46, "column": null } - }, - "13": { - "start": { "line": 47, "column": 10 }, - "end": { "line": 47, "column": null } - }, - "14": { - "start": { "line": 52, "column": 2 }, - "end": { "line": 52, "column": null } - }, - "15": { - "start": { "line": 57, "column": 13 }, - "end": { "line": 57, "column": 29 } - }, - "16": { - "start": { "line": 58, "column": 13 }, - "end": { "line": 58, "column": 41 } - }, - "17": { - "start": { "line": 65, "column": 26 }, - "end": { "line": 65, "column": 35 } - }, - "18": { - "start": { "line": 66, "column": 21 }, - "end": { "line": 66, "column": 41 } - }, - "19": { - "start": { "line": 68, "column": 6 }, - "end": { "line": 72, "column": 8 } - }, - "20": { - "start": { "line": 74, "column": 4 }, - "end": { "line": 74, "column": null } - }, - "21": { - "start": { "line": 80, "column": 26 }, - "end": { "line": 80, "column": 35 } - }, - "22": { - "start": { "line": 82, "column": 6 }, - "end": { "line": 85, "column": 8 } - }, - "23": { - "start": { "line": 87, "column": 4 }, - "end": { "line": 87, "column": null } - }, - "24": { - "start": { "line": 94, "column": 26 }, - "end": { "line": 94, "column": 35 } - }, - "25": { - "start": { "line": 95, "column": 4 }, - "end": { "line": 106, "column": null } - }, - "26": { - "start": { "line": 96, "column": 33 }, - "end": { "line": 96, "column": 41 } - }, - "27": { - "start": { "line": 97, "column": 26 }, - "end": { "line": 99, "column": 8 } - }, - "28": { - "start": { "line": 98, "column": 8 }, - "end": { "line": 98, "column": null } - }, - "29": { - "start": { "line": 100, "column": 6 }, - "end": { "line": 104, "column": null } - }, - "30": { - "start": { "line": 105, "column": 6 }, - "end": { "line": 105, "column": null } - }, - "31": { - "start": { "line": 55, "column": 0 }, - "end": { "line": 55, "column": 13 } - }, - "32": { - "start": { "line": 113, "column": 2 }, - "end": { "line": 113, "column": null } - }, - "33": { - "start": { "line": 109, "column": 0 }, - "end": { "line": 109, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 8, "column": 32 }, - "end": { "line": 8, "column": 37 } - }, - "loc": { - "start": { "line": 16, "column": 5 }, - "end": { "line": 53, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 23, "column": 46 }, - "end": { "line": 23, "column": 51 } - }, - "loc": { - "start": { "line": 23, "column": 78 }, - "end": { "line": 50, "column": 5 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 39, "column": 15 }, - "end": { "line": 39, "column": 18 } - }, - "loc": { - "start": { "line": 39, "column": 21 }, - "end": { "line": 39, "column": 25 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 45, "column": 8 }, - "end": { "line": 45, "column": 12 } - }, - "loc": { - "start": { "line": 45, "column": 27 }, - "end": { "line": 48, "column": 9 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 56, "column": 2 }, - "end": { "line": 56, "column": null } - }, - "loc": { - "start": { "line": 58, "column": 41 }, - "end": { "line": 59, "column": 6 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 64, "column": 2 }, - "end": { "line": 64, "column": 7 } - }, - "loc": { - "start": { "line": 64, "column": 13 }, - "end": { "line": 75, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 79, "column": 2 }, - "end": { "line": 79, "column": 7 } - }, - "loc": { - "start": { "line": 79, "column": 12 }, - "end": { "line": 88, "column": 3 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 93, "column": 2 }, - "end": { "line": 93, "column": 7 } - }, - "loc": { - "start": { "line": 93, "column": 14 }, - "end": { "line": 107, "column": 3 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 96, "column": 33 }, - "end": { "line": 96, "column": 36 } - }, - "loc": { - "start": { "line": 96, "column": 38 }, - "end": { "line": 96, "column": 41 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 97, "column": 44 }, - "end": { "line": 97, "column": 45 } - }, - "loc": { - "start": { "line": 97, "column": 56 }, - "end": { "line": 99, "column": 7 } - } - }, - "10": { - "name": "getServiceInterfaces", - "decl": { - "start": { "line": 109, "column": 16 }, - "end": { "line": 109, "column": 36 } - }, - "loc": { - "start": { "line": 111, "column": 30 }, - "end": { "line": 114, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 30, "column": 6 }, - "end": { "line": 32, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 30, "column": 6 }, - "end": { "line": 32, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 46, "column": 10 }, - "end": { "line": 46, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 46, "column": 10 }, - "end": { "line": 46, "column": null } - } - ] - } - }, - "s": { - "0": 5, - "1": 5, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 0, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 0, - "22": 0, - "23": 0, - "24": 0, - "25": 0, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 5, - "32": 0, - "33": 5 - }, - "f": { - "0": 0, - "1": 0, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0 - }, - "b": { "0": [0], "1": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/graph.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/graph.ts", - "statementMap": { - "0": { - "start": { "line": 15, "column": 67 }, - "end": { "line": 15, "column": 69 } - }, - "1": { - "start": { "line": 22, "column": 49 }, - "end": { "line": 25, "column": null } - }, - "2": { - "start": { "line": 26, "column": 4 }, - "end": { "line": 34, "column": null } - }, - "3": { - "start": { "line": 27, "column": 20 }, - "end": { "line": 31, "column": null } - }, - "4": { - "start": { "line": 32, "column": 6 }, - "end": { "line": 32, "column": null } - }, - "5": { - "start": { "line": 33, "column": 6 }, - "end": { "line": 33, "column": null } - }, - "6": { - "start": { "line": 35, "column": 4 }, - "end": { "line": 43, "column": null } - }, - "7": { - "start": { "line": 36, "column": 20 }, - "end": { "line": 40, "column": null } - }, - "8": { - "start": { "line": 41, "column": 6 }, - "end": { "line": 41, "column": null } - }, - "9": { - "start": { "line": 42, "column": 6 }, - "end": { "line": 42, "column": null } - }, - "10": { - "start": { "line": 44, "column": 4 }, - "end": { "line": 44, "column": null } - }, - "11": { - "start": { "line": 45, "column": 4 }, - "end": { "line": 45, "column": null } - }, - "12": { - "start": { "line": 50, "column": 21 }, - "end": { "line": 50, "column": 34 } - }, - "13": { - "start": { "line": 52, "column": 6 }, - "end": { "line": 56, "column": null } - }, - "14": { - "start": { "line": 53, "column": 8 }, - "end": { "line": 55, "column": null } - }, - "15": { - "start": { "line": 54, "column": 10 }, - "end": { "line": 54, "column": null } - }, - "16": { - "start": { "line": 58, "column": 4 }, - "end": { "line": 58, "column": null } - }, - "17": { - "start": { "line": 65, "column": 17 }, - "end": { "line": 69, "column": null } - }, - "18": { - "start": { "line": 70, "column": 4 }, - "end": { "line": 70, "column": null } - }, - "19": { - "start": { "line": 71, "column": 4 }, - "end": { "line": 71, "column": null } - }, - "20": { - "start": { "line": 72, "column": 4 }, - "end": { "line": 72, "column": null } - }, - "21": { - "start": { "line": 79, "column": 57 }, - "end": { "line": 79, "column": 59 } - }, - "22": { - "start": { "line": 83, "column": 6 }, - "end": { "line": 85, "column": null } - }, - "23": { - "start": { "line": 84, "column": 8 }, - "end": { "line": 84, "column": 14 } - }, - "24": { - "start": { "line": 86, "column": 6 }, - "end": { "line": 86, "column": null } - }, - "25": { - "start": { "line": 87, "column": 6 }, - "end": { "line": 87, "column": null } - }, - "26": { - "start": { "line": 88, "column": 23 }, - "end": { "line": 90, "column": 30 } - }, - "27": { - "start": { "line": 89, "column": 23 }, - "end": { "line": 89, "column": 40 } - }, - "28": { - "start": { "line": 90, "column": 20 }, - "end": { "line": 90, "column": 29 } - }, - "29": { - "start": { "line": 91, "column": 6 }, - "end": { "line": 101, "column": null } - }, - "30": { - "start": { "line": 92, "column": 19 }, - "end": { "line": 92, "column": 29 } - }, - "31": { - "start": { "line": 93, "column": 8 }, - "end": { "line": 93, "column": null } - }, - "32": { - "start": { "line": 94, "column": 8 }, - "end": { "line": 100, "column": null } - }, - "33": { - "start": { "line": 95, "column": 23 }, - "end": { "line": 95, "column": 33 } - }, - "34": { - "start": { "line": 96, "column": 10 }, - "end": { "line": 99, "column": null } - }, - "35": { - "start": { "line": 97, "column": 12 }, - "end": { "line": 97, "column": null } - }, - "36": { - "start": { "line": 98, "column": 12 }, - "end": { "line": 98, "column": null } - }, - "37": { - "start": { "line": 104, "column": 4 }, - "end": { "line": 121, "column": null } - }, - "38": { - "start": { "line": 105, "column": 23 }, - "end": { "line": 105, "column": 58 } - }, - "39": { - "start": { "line": 106, "column": 6 }, - "end": { "line": 118, "column": null } - }, - "40": { - "start": { "line": 107, "column": 8 }, - "end": { "line": 117, "column": null } - }, - "41": { - "start": { "line": 108, "column": 21 }, - "end": { "line": 108, "column": 31 } - }, - "42": { - "start": { "line": 109, "column": 10 }, - "end": { "line": 109, "column": null } - }, - "43": { - "start": { "line": 110, "column": 10 }, - "end": { "line": 116, "column": null } - }, - "44": { - "start": { "line": 111, "column": 25 }, - "end": { "line": 111, "column": 35 } - }, - "45": { - "start": { "line": 112, "column": 12 }, - "end": { "line": 115, "column": null } - }, - "46": { - "start": { "line": 113, "column": 14 }, - "end": { "line": 113, "column": null } - }, - "47": { - "start": { "line": 114, "column": 14 }, - "end": { "line": 114, "column": null } - }, - "48": { - "start": { "line": 120, "column": 6 }, - "end": { "line": 120, "column": null } - }, - "49": { - "start": { "line": 128, "column": 57 }, - "end": { "line": 128, "column": 59 } - }, - "50": { - "start": { "line": 132, "column": 6 }, - "end": { "line": 134, "column": null } - }, - "51": { - "start": { "line": 133, "column": 8 }, - "end": { "line": 133, "column": 14 } - }, - "52": { - "start": { "line": 135, "column": 6 }, - "end": { "line": 135, "column": null } - }, - "53": { - "start": { "line": 136, "column": 6 }, - "end": { "line": 136, "column": null } - }, - "54": { - "start": { "line": 137, "column": 23 }, - "end": { "line": 139, "column": 32 } - }, - "55": { - "start": { "line": 138, "column": 23 }, - "end": { "line": 138, "column": 38 } - }, - "56": { - "start": { "line": 139, "column": 20 }, - "end": { "line": 139, "column": 31 } - }, - "57": { - "start": { "line": 140, "column": 6 }, - "end": { "line": 150, "column": null } - }, - "58": { - "start": { "line": 141, "column": 19 }, - "end": { "line": 141, "column": 29 } - }, - "59": { - "start": { "line": 142, "column": 8 }, - "end": { "line": 142, "column": null } - }, - "60": { - "start": { "line": 143, "column": 8 }, - "end": { "line": 149, "column": null } - }, - "61": { - "start": { "line": 144, "column": 23 }, - "end": { "line": 144, "column": 33 } - }, - "62": { - "start": { "line": 145, "column": 10 }, - "end": { "line": 148, "column": null } - }, - "63": { - "start": { "line": 146, "column": 12 }, - "end": { "line": 146, "column": null } - }, - "64": { - "start": { "line": 147, "column": 12 }, - "end": { "line": 147, "column": null } - }, - "65": { - "start": { "line": 153, "column": 4 }, - "end": { "line": 170, "column": null } - }, - "66": { - "start": { "line": 154, "column": 23 }, - "end": { "line": 154, "column": 56 } - }, - "67": { - "start": { "line": 155, "column": 6 }, - "end": { "line": 167, "column": null } - }, - "68": { - "start": { "line": 156, "column": 8 }, - "end": { "line": 166, "column": null } - }, - "69": { - "start": { "line": 157, "column": 21 }, - "end": { "line": 157, "column": 31 } - }, - "70": { - "start": { "line": 158, "column": 10 }, - "end": { "line": 158, "column": null } - }, - "71": { - "start": { "line": 159, "column": 10 }, - "end": { "line": 165, "column": null } - }, - "72": { - "start": { "line": 160, "column": 25 }, - "end": { "line": 160, "column": 35 } - }, - "73": { - "start": { "line": 161, "column": 12 }, - "end": { "line": 164, "column": null } - }, - "74": { - "start": { "line": 162, "column": 14 }, - "end": { "line": 162, "column": null } - }, - "75": { - "start": { "line": 163, "column": 14 }, - "end": { "line": 163, "column": null } - }, - "76": { - "start": { "line": 169, "column": 6 }, - "end": { "line": 169, "column": null } - }, - "77": { - "start": { "line": 181, "column": 6 }, - "end": { "line": 183, "column": 55 } - }, - "78": { - "start": { "line": 183, "column": 47 }, - "end": { "line": 183, "column": 55 } - }, - "79": { - "start": { "line": 184, "column": 52 }, - "end": { "line": 184, "column": 54 } - }, - "80": { - "start": { "line": 185, "column": 57 }, - "end": { "line": 185, "column": 59 } - }, - "81": { - "start": { "line": 190, "column": 6 }, - "end": { "line": 192, "column": null } - }, - "82": { - "start": { "line": 191, "column": 8 }, - "end": { "line": 191, "column": null } - }, - "83": { - "start": { "line": 193, "column": 6 }, - "end": { "line": 195, "column": null } - }, - "84": { - "start": { "line": 194, "column": 8 }, - "end": { "line": 194, "column": 14 } - }, - "85": { - "start": { "line": 196, "column": 6 }, - "end": { "line": 196, "column": null } - }, - "86": { - "start": { "line": 197, "column": 6 }, - "end": { "line": 197, "column": null } - }, - "87": { - "start": { "line": 198, "column": 23 }, - "end": { "line": 200, "column": 46 } - }, - "88": { - "start": { "line": 199, "column": 23 }, - "end": { "line": 199, "column": 40 } - }, - "89": { - "start": { "line": 200, "column": 20 }, - "end": { "line": 200, "column": 45 } - }, - "90": { - "start": { "line": 201, "column": 6 }, - "end": { "line": 215, "column": null } - }, - "91": { - "start": { "line": 202, "column": 19 }, - "end": { "line": 202, "column": 29 } - }, - "92": { - "start": { "line": 203, "column": 8 }, - "end": { "line": 203, "column": null } - }, - "93": { - "start": { "line": 204, "column": 8 }, - "end": { "line": 214, "column": null } - }, - "94": { - "start": { "line": 205, "column": 23 }, - "end": { "line": 205, "column": 33 } - }, - "95": { - "start": { "line": 206, "column": 10 }, - "end": { "line": 213, "column": null } - }, - "96": { - "start": { "line": 207, "column": 12 }, - "end": { "line": 209, "column": null } - }, - "97": { - "start": { "line": 208, "column": 14 }, - "end": { "line": 208, "column": null } - }, - "98": { - "start": { "line": 211, "column": 12 }, - "end": { "line": 211, "column": null } - }, - "99": { - "start": { "line": 212, "column": 12 }, - "end": { "line": 212, "column": null } - }, - "100": { - "start": { "line": 218, "column": 4 }, - "end": { "line": 242, "column": null } - }, - "101": { - "start": { "line": 219, "column": 23 }, - "end": { "line": 219, "column": 74 } - }, - "102": { - "start": { "line": 219, "column": 61 }, - "end": { "line": 219, "column": 73 } - }, - "103": { - "start": { "line": 220, "column": 6 }, - "end": { "line": 233, "column": null } - }, - "104": { - "start": { "line": 221, "column": 19 }, - "end": { "line": 221, "column": 29 } - }, - "105": { - "start": { "line": 222, "column": 8 }, - "end": { "line": 222, "column": null } - }, - "106": { - "start": { "line": 223, "column": 8 }, - "end": { "line": 232, "column": null } - }, - "107": { - "start": { "line": 224, "column": 23 }, - "end": { "line": 224, "column": 33 } - }, - "108": { - "start": { "line": 225, "column": 10 }, - "end": { "line": 231, "column": null } - }, - "109": { - "start": { "line": 226, "column": 12 }, - "end": { "line": 228, "column": null } - }, - "110": { - "start": { "line": 227, "column": 14 }, - "end": { "line": 227, "column": null } - }, - "111": { - "start": { "line": 230, "column": 12 }, - "end": { "line": 230, "column": null } - }, - "112": { - "start": { "line": 235, "column": 18 }, - "end": { "line": 235, "column": 33 } - }, - "113": { - "start": { "line": 236, "column": 6 }, - "end": { "line": 241, "column": null } - }, - "114": { - "start": { "line": 237, "column": 21 }, - "end": { "line": 237, "column": 31 } - }, - "115": { - "start": { "line": 238, "column": 8 }, - "end": { "line": 240, "column": null } - }, - "116": { - "start": { "line": 239, "column": 10 }, - "end": { "line": 239, "column": null } - }, - "117": { - "start": { "line": 14, "column": 0 }, - "end": { "line": 14, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 16, "column": 17 } - }, - "loc": { - "start": { "line": 16, "column": 2 }, - "end": { "line": 16, "column": 18 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 17, "column": 2 }, - "end": { "line": 17, "column": 11 } - }, - "loc": { - "start": { "line": 20, "column": 60 }, - "end": { "line": 46, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 47, "column": 2 }, - "end": { "line": 47, "column": 12 } - }, - "loc": { - "start": { "line": 48, "column": 64 }, - "end": { "line": 59, "column": 3 } - } - }, - "3": { - "name": "gen", - "decl": { - "start": { "line": 51, "column": 14 }, - "end": { "line": 51, "column": 17 } - }, - "loc": { - "start": { "line": 51, "column": 17 }, - "end": { "line": 57, "column": 5 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 60, "column": 2 }, - "end": { "line": 60, "column": 9 } - }, - "loc": { - "start": { "line": 63, "column": 36 }, - "end": { "line": 73, "column": 3 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 74, "column": 2 }, - "end": { "line": 74, "column": 20 } - }, - "loc": { - "start": { "line": 77, "column": 59 }, - "end": { "line": 122, "column": 3 } - } - }, - "6": { - "name": "rec", - "decl": { - "start": { "line": 80, "column": 14 }, - "end": { "line": 80, "column": 17 } - }, - "loc": { - "start": { "line": 81, "column": 42 }, - "end": { "line": 102, "column": 5 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 89, "column": 16 }, - "end": { "line": 89, "column": 17 } - }, - "loc": { - "start": { "line": 89, "column": 23 }, - "end": { "line": 89, "column": 40 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 90, "column": 13 }, - "end": { "line": 90, "column": 14 } - }, - "loc": { - "start": { "line": 90, "column": 20 }, - "end": { "line": 90, "column": 29 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 106, "column": 14 }, - "end": { "line": 106, "column": 22 } - }, - "loc": { - "start": { "line": 106, "column": 23 }, - "end": { "line": 118, "column": 7 } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 123, "column": 2 }, - "end": { "line": 123, "column": 27 } - }, - "loc": { - "start": { "line": 126, "column": 59 }, - "end": { "line": 171, "column": 3 } - } - }, - "11": { - "name": "rec", - "decl": { - "start": { "line": 129, "column": 14 }, - "end": { "line": 129, "column": 17 } - }, - "loc": { - "start": { "line": 130, "column": 42 }, - "end": { "line": 151, "column": 5 } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 138, "column": 16 }, - "end": { "line": 138, "column": 17 } - }, - "loc": { - "start": { "line": 138, "column": 23 }, - "end": { "line": 138, "column": 38 } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 139, "column": 13 }, - "end": { "line": 139, "column": 14 } - }, - "loc": { - "start": { "line": 139, "column": 20 }, - "end": { "line": 139, "column": 31 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 155, "column": 14 }, - "end": { "line": 155, "column": 22 } - }, - "loc": { - "start": { "line": 155, "column": 23 }, - "end": { "line": 167, "column": 7 } - } - }, - "15": { - "name": "(anonymous_15)", - "decl": { - "start": { "line": 172, "column": 2 }, - "end": { "line": 172, "column": 14 } - }, - "loc": { - "start": { "line": 178, "column": 59 }, - "end": { "line": 243, "column": 3 } - } - }, - "16": { - "name": "(anonymous_16)", - "decl": { - "start": { "line": 183, "column": 10 }, - "end": { "line": 183, "column": 11 } - }, - "loc": { - "start": { "line": 183, "column": 47 }, - "end": { "line": 183, "column": 55 } - } - }, - "17": { - "name": "check", - "decl": { - "start": { "line": 186, "column": 14 }, - "end": { "line": 186, "column": 19 } - }, - "loc": { - "start": { "line": 188, "column": 45 }, - "end": { "line": 216, "column": 5 } - } - }, - "18": { - "name": "(anonymous_18)", - "decl": { - "start": { "line": 199, "column": 16 }, - "end": { "line": 199, "column": 17 } - }, - "loc": { - "start": { "line": 199, "column": 23 }, - "end": { "line": 199, "column": 40 } - } - }, - "19": { - "name": "(anonymous_19)", - "decl": { - "start": { "line": 200, "column": 13 }, - "end": { "line": 200, "column": 14 } - }, - "loc": { - "start": { "line": 200, "column": 20 }, - "end": { "line": 200, "column": 45 } - } - }, - "20": { - "name": "(anonymous_20)", - "decl": { - "start": { "line": 219, "column": 54 }, - "end": { "line": 219, "column": 55 } - }, - "loc": { - "start": { "line": 219, "column": 61 }, - "end": { "line": 219, "column": 73 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 53, "column": 8 }, - "end": { "line": 55, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 53, "column": 8 }, - "end": { "line": 55, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 83, "column": 6 }, - "end": { "line": 85, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 83, "column": 6 }, - "end": { "line": 85, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 96, "column": 10 }, - "end": { "line": 99, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 96, "column": 10 }, - "end": { "line": 99, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 104, "column": 4 }, - "end": { "line": 121, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 104, "column": 4 }, - "end": { "line": 121, "column": null } - }, - { - "start": { "line": 119, "column": 11 }, - "end": { "line": 121, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 112, "column": 12 }, - "end": { "line": 115, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 112, "column": 12 }, - "end": { "line": 115, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 132, "column": 6 }, - "end": { "line": 134, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 132, "column": 6 }, - "end": { "line": 134, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 145, "column": 10 }, - "end": { "line": 148, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 145, "column": 10 }, - "end": { "line": 148, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 153, "column": 4 }, - "end": { "line": 170, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 153, "column": 4 }, - "end": { "line": 170, "column": null } - }, - { - "start": { "line": 168, "column": 11 }, - "end": { "line": 170, "column": null } - } - ] - }, - "8": { - "loc": { - "start": { "line": 161, "column": 12 }, - "end": { "line": 164, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 161, "column": 12 }, - "end": { "line": 164, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 181, "column": 6 }, - "end": { "line": 183, "column": 55 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 182, "column": 10 }, - "end": { "line": 182, "column": 12 } - }, - { - "start": { "line": 183, "column": 10 }, - "end": { "line": 183, "column": 55 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 190, "column": 6 }, - "end": { "line": 192, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 190, "column": 6 }, - "end": { "line": 192, "column": null } - } - ] - }, - "11": { - "loc": { - "start": { "line": 193, "column": 6 }, - "end": { "line": 195, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 193, "column": 6 }, - "end": { "line": 195, "column": null } - } - ] - }, - "12": { - "loc": { - "start": { "line": 206, "column": 10 }, - "end": { "line": 213, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 206, "column": 10 }, - "end": { "line": 213, "column": null } - }, - { - "start": { "line": 210, "column": 17 }, - "end": { "line": 213, "column": null } - } - ] - }, - "13": { - "loc": { - "start": { "line": 207, "column": 12 }, - "end": { "line": 209, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 207, "column": 12 }, - "end": { "line": 209, "column": null } - } - ] - }, - "14": { - "loc": { - "start": { "line": 218, "column": 4 }, - "end": { "line": 242, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 218, "column": 4 }, - "end": { "line": 242, "column": null } - }, - { - "start": { "line": 234, "column": 11 }, - "end": { "line": 242, "column": null } - } - ] - }, - "15": { - "loc": { - "start": { "line": 225, "column": 10 }, - "end": { "line": 231, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 225, "column": 10 }, - "end": { "line": 231, "column": null } - }, - { - "start": { "line": 229, "column": 17 }, - "end": { "line": 231, "column": null } - } - ] - }, - "16": { - "loc": { - "start": { "line": 226, "column": 12 }, - "end": { "line": 228, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 226, "column": 12 }, - "end": { "line": 228, "column": null } - } - ] - }, - "17": { - "loc": { - "start": { "line": 238, "column": 8 }, - "end": { "line": 240, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 238, "column": 8 }, - "end": { "line": 240, "column": null } - } - ] - } - }, - "s": { - "0": 11, - "1": 39, - "2": 39, - "3": 20, - "4": 20, - "5": 20, - "6": 39, - "7": 1, - "8": 1, - "9": 1, - "10": 39, - "11": 39, - "12": 1, - "13": 1, - "14": 4, - "15": 1, - "16": 1, - "17": 12, - "18": 12, - "19": 12, - "20": 12, - "21": 6, - "22": 15, - "23": 1, - "24": 14, - "25": 14, - "26": 14, - "27": 23, - "28": 9, - "29": 14, - "30": 16, - "31": 16, - "32": 16, - "33": 18, - "34": 18, - "35": 9, - "36": 9, - "37": 6, - "38": 5, - "39": 5, - "40": 5, - "41": 15, - "42": 15, - "43": 15, - "44": 15, - "45": 15, - "46": 10, - "47": 10, - "48": 1, - "49": 6, - "50": 15, - "51": 1, - "52": 14, - "53": 14, - "54": 14, - "55": 23, - "56": 9, - "57": 14, - "58": 16, - "59": 16, - "60": 16, - "61": 18, - "62": 18, - "63": 9, - "64": 9, - "65": 6, - "66": 5, - "67": 5, - "68": 5, - "69": 15, - "70": 15, - "71": 15, - "72": 15, - "73": 15, - "74": 10, - "75": 10, - "76": 1, - "77": 3, - "78": 11, - "79": 3, - "80": 3, - "81": 11, - "82": 3, - "83": 8, - "84": 0, - "85": 8, - "86": 8, - "87": 6, - "88": 12, - "89": 8, - "90": 6, - "91": 11, - "92": 11, - "93": 11, - "94": 13, - "95": 13, - "96": 6, - "97": 6, - "98": 7, - "99": 7, - "100": 3, - "101": 0, - "102": 0, - "103": 0, - "104": 0, - "105": 0, - "106": 0, - "107": 0, - "108": 0, - "109": 0, - "110": 0, - "111": 0, - "112": 3, - "113": 3, - "114": 11, - "115": 11, - "116": 3, - "117": 5 - }, - "f": { - "0": 11, - "1": 39, - "2": 1, - "3": 1, - "4": 12, - "5": 6, - "6": 15, - "7": 23, - "8": 9, - "9": 5, - "10": 6, - "11": 15, - "12": 23, - "13": 9, - "14": 5, - "15": 3, - "16": 11, - "17": 11, - "18": 12, - "19": 8, - "20": 0 - }, - "b": { - "0": [1], - "1": [1], - "2": [9], - "3": [5, 1], - "4": [10], - "5": [1], - "6": [9], - "7": [5, 1], - "8": [10], - "9": [0, 3], - "10": [3], - "11": [0], - "12": [6, 7], - "13": [6], - "14": [0, 3], - "15": [0, 0], - "16": [0], - "17": [3] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/inMs.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/inMs.ts", - "statementMap": { - "0": { - "start": { "line": 3, "column": 23 }, - "end": { "line": 3, "column": 58 } - }, - "1": { - "start": { "line": 5, "column": 23 }, - "end": { "line": 13, "column": 1 } - }, - "2": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "3": { - "start": { "line": 6, "column": 13 }, - "end": { "line": 6, "column": null } - }, - "4": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "5": { - "start": { "line": 7, "column": 21 }, - "end": { "line": 7, "column": null } - }, - "6": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "7": { - "start": { "line": 8, "column": 20 }, - "end": { "line": 8, "column": null } - }, - "8": { - "start": { "line": 9, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "9": { - "start": { "line": 9, "column": 20 }, - "end": { "line": 9, "column": null } - }, - "10": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "11": { - "start": { "line": 10, "column": 20 }, - "end": { "line": 10, "column": null } - }, - "12": { - "start": { "line": 11, "column": 2 }, - "end": { "line": 11, "column": null } - }, - "13": { - "start": { "line": 11, "column": 20 }, - "end": { "line": 11, "column": null } - }, - "14": { - "start": { "line": 12, "column": 2 }, - "end": { "line": 12, "column": null } - }, - "15": { - "start": { "line": 14, "column": 17 }, - "end": { "line": 19, "column": 1 } - }, - "16": { - "start": { "line": 15, "column": 2 }, - "end": { "line": 15, "column": null } - }, - "17": { - "start": { "line": 15, "column": 15 }, - "end": { "line": 15, "column": null } - }, - "18": { - "start": { "line": 16, "column": 16 }, - "end": { "line": 16, "column": 41 } - }, - "19": { - "start": { "line": 17, "column": 19 }, - "end": { "line": 17, "column": 63 } - }, - "20": { - "start": { "line": 18, "column": 2 }, - "end": { "line": 18, "column": null } - }, - "21": { - "start": { "line": 20, "column": 20 }, - "end": { "line": 31, "column": 1 } - }, - "22": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "23": { - "start": { "line": 21, "column": 32 }, - "end": { "line": 21, "column": null } - }, - "24": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 22, "column": null } - }, - "25": { - "start": { "line": 22, "column": 13 }, - "end": { "line": 22, "column": null } - }, - "26": { - "start": { "line": 23, "column": 18 }, - "end": { "line": 23, "column": 44 } - }, - "27": { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": null } - }, - "28": { - "start": { "line": 24, "column": 16 }, - "end": { "line": 24, "column": null } - }, - "29": { - "start": { "line": 25, "column": 42 }, - "end": { "line": 25, "column": 49 } - }, - "30": { - "start": { "line": 26, "column": 21 }, - "end": { "line": 26, "column": 41 } - }, - "31": { - "start": { "line": 27, "column": 21 }, - "end": { "line": 27, "column": 63 } - }, - "32": { - "start": { "line": 28, "column": 22 }, - "end": { "line": 28, "column": 50 } - }, - "33": { - "start": { "line": 30, "column": 2 }, - "end": { "line": 30, "column": null } - }, - "34": { - "start": { "line": 20, "column": 13 }, - "end": { "line": 20, "column": 20 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 5, "column": 23 }, - "end": { "line": 5, "column": 24 } - }, - "loc": { - "start": { "line": 5, "column": 41 }, - "end": { "line": 13, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 14, "column": 17 }, - "end": { "line": 14, "column": 18 } - }, - "loc": { - "start": { "line": 14, "column": 63 }, - "end": { "line": 19, "column": 1 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 20, "column": 20 }, - "end": { "line": 20, "column": 21 } - }, - "loc": { - "start": { "line": 20, "column": 47 }, - "end": { "line": 31, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 8, "column": 2 }, - "end": { "line": 8, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 9, "column": 2 }, - "end": { "line": 9, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 9, "column": 2 }, - "end": { "line": 9, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 11, "column": 2 }, - "end": { "line": 11, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 11, "column": 2 }, - "end": { "line": 11, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 15, "column": 2 }, - "end": { "line": 15, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 15, "column": 2 }, - "end": { "line": 15, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 21, "column": 2 }, - "end": { "line": 21, "column": null } - } - ] - }, - "8": { - "loc": { - "start": { "line": 22, "column": 2 }, - "end": { "line": 22, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 22, "column": 2 }, - "end": { "line": 22, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 24, "column": 2 }, - "end": { "line": 24, "column": null } - } - ] - }, - "10": { - "loc": { - "start": { "line": 27, "column": 30 }, - "end": { "line": 27, "column": 49 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 27, "column": 30 }, - "end": { "line": 27, "column": 42 } - }, - { - "start": { "line": 27, "column": 46 }, - "end": { "line": 27, "column": 49 } - } - ] - } - }, - "s": { - "0": 6, - "1": 6, - "2": 0, - "3": 0, - "4": 0, - "5": 0, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0, - "11": 0, - "12": 0, - "13": 0, - "14": 0, - "15": 6, - "16": 0, - "17": 0, - "18": 0, - "19": 0, - "20": 0, - "21": 6, - "22": 1, - "23": 0, - "24": 1, - "25": 1, - "26": 0, - "27": 0, - "28": 0, - "29": 0, - "30": 0, - "31": 0, - "32": 0, - "33": 0, - "34": 6 - }, - "f": { "0": 0, "1": 0, "2": 1 }, - "b": { - "0": [0], - "1": [0], - "2": [0], - "3": [0], - "4": [0], - "5": [0], - "6": [0], - "7": [0], - "8": [1], - "9": [0], - "10": [0, 0] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/index.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/index.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 22 } - }, - "1": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 21 } - }, - "2": { - "start": { "line": 3, "column": 0 }, - "end": { "line": 3, "column": 26 } - }, - "3": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 20 } - }, - "4": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 20 } - }, - "5": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 23 } - }, - "6": { - "start": { "line": 7, "column": 0 }, - "end": { "line": 7, "column": 15 } - }, - "7": { - "start": { "line": 9, "column": 0 }, - "end": { "line": 9, "column": 9 } - }, - "8": { - "start": { "line": 9, "column": 9 }, - "end": { "line": 9, "column": 30 } - }, - "9": { - "start": { "line": 9, "column": 30 }, - "end": { "line": 9, "column": 80 } - }, - "10": { - "start": { "line": 10, "column": 0 }, - "end": { "line": 10, "column": 9 } - }, - "11": { - "start": { "line": 10, "column": 9 }, - "end": { "line": 10, "column": 35 } - }, - "12": { - "start": { "line": 11, "column": 0 }, - "end": { "line": 11, "column": 9 } - }, - "13": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 11, "column": 61 } - }, - "14": { - "start": { "line": 12, "column": 0 }, - "end": { "line": 12, "column": 9 } - }, - "15": { - "start": { "line": 12, "column": 9 }, - "end": { "line": 12, "column": 56 } - }, - "16": { - "start": { "line": 13, "column": 0 }, - "end": { "line": 13, "column": 9 } - }, - "17": { - "start": { "line": 13, "column": 9 }, - "end": { "line": 13, "column": 50 } - }, - "18": { - "start": { "line": 14, "column": 0 }, - "end": { "line": 14, "column": 29 } - }, - "19": { - "start": { "line": 15, "column": 0 }, - "end": { "line": 15, "column": 9 } - }, - "20": { - "start": { "line": 15, "column": 9 }, - "end": { "line": 15, "column": 53 } - }, - "21": { - "start": { "line": 16, "column": 0 }, - "end": { "line": 16, "column": 9 } - }, - "22": { - "start": { "line": 16, "column": 9 }, - "end": { "line": 16, "column": 29 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 9, "column": 9 }, - "end": { "line": 9, "column": 28 } - }, - "loc": { - "start": { "line": 9, "column": 9 }, - "end": { "line": 9, "column": 30 } - } - }, - "1": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 9, "column": 30 }, - "end": { "line": 9, "column": 49 } - }, - "loc": { - "start": { "line": 9, "column": 30 }, - "end": { "line": 9, "column": 80 } - } - }, - "2": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 10, "column": 9 }, - "end": { "line": 10, "column": 16 } - }, - "loc": { - "start": { "line": 10, "column": 9 }, - "end": { "line": 10, "column": 35 } - } - }, - "3": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 11, "column": 29 } - }, - "loc": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 11, "column": 61 } - } - }, - "4": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 12, "column": 9 }, - "end": { "line": 12, "column": 25 } - }, - "loc": { - "start": { "line": 12, "column": 9 }, - "end": { "line": 12, "column": 56 } - } - }, - "5": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 13, "column": 9 }, - "end": { "line": 13, "column": 30 } - }, - "loc": { - "start": { "line": 13, "column": 9 }, - "end": { "line": 13, "column": 50 } - } - }, - "6": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 15, "column": 9 }, - "end": { "line": 15, "column": 25 } - }, - "loc": { - "start": { "line": 15, "column": 9 }, - "end": { "line": 15, "column": 53 } - } - }, - "7": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 16, "column": 9 }, - "end": { "line": 16, "column": 13 } - }, - "loc": { - "start": { "line": 16, "column": 9 }, - "end": { "line": 16, "column": 29 } - } - } - }, - "branchMap": {}, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5, - "11": 5, - "12": 5, - "13": 5, - "14": 5, - "15": 5, - "16": 5, - "17": 5, - "18": 5, - "19": 5, - "20": 5, - "21": 5, - "22": 5 - }, - "f": { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0 }, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/nullIfEmpty.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/nullIfEmpty.ts", - "statementMap": { - "0": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "1": { - "start": { "line": 10, "column": 18 }, - "end": { "line": 10, "column": null } - }, - "2": { - "start": { "line": 11, "column": 2 }, - "end": { "line": 11, "column": null } - }, - "3": { - "start": { "line": 7, "column": 0 }, - "end": { "line": 7, "column": 24 } - } - }, - "fnMap": { - "0": { - "name": "nullIfEmpty", - "decl": { - "start": { "line": 7, "column": 24 }, - "end": { "line": 7, "column": 35 } - }, - "loc": { - "start": { "line": 8, "column": 13 }, - "end": { "line": 12, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 10, "column": 2 }, - "end": { "line": 10, "column": null } - } - ] - }, - "1": { - "loc": { - "start": { "line": 11, "column": 9 }, - "end": { "line": 11, "column": 47 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 11, "column": 39 }, - "end": { "line": 11, "column": 43 } - }, - { - "start": { "line": 11, "column": 46 }, - "end": { "line": 11, "column": 47 } - } - ] - } - }, - "s": { "0": 0, "1": 0, "2": 0, "3": 5 }, - "f": { "0": 0 }, - "b": { "0": [0], "1": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/once.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/once.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 25 }, - "end": { "line": 2, "column": 27 } - }, - "1": { - "start": { "line": 3, "column": 2 }, - "end": { "line": 8, "column": null } - }, - "2": { - "start": { "line": 4, "column": 4 }, - "end": { "line": 6, "column": null } - }, - "3": { - "start": { "line": 5, "column": 6 }, - "end": { "line": 5, "column": null } - }, - "4": { - "start": { "line": 7, "column": 4 }, - "end": { "line": 7, "column": null } - }, - "5": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 16 } - } - }, - "fnMap": { - "0": { - "name": "once", - "decl": { - "start": { "line": 1, "column": 16 }, - "end": { "line": 1, "column": 20 } - }, - "loc": { - "start": { "line": 1, "column": 35 }, - "end": { "line": 9, "column": 1 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 3, "column": 9 }, - "end": { "line": 3, "column": 12 } - }, - "loc": { - "start": { "line": 3, "column": 14 }, - "end": { "line": 8, "column": 3 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 4, "column": 4 }, - "end": { "line": 6, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 4, "column": 4 }, - "end": { "line": 6, "column": null } - } - ] - } - }, - "s": { "0": 26, "1": 26, "2": 139, "3": 25, "4": 139, "5": 6 }, - "f": { "0": 26, "1": 139 }, - "b": { "0": [25] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/patterns.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/patterns.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 0 }, - "end": { "line": 2, "column": 36 } - }, - "1": { - "start": { "line": 4, "column": 13 }, - "end": { "line": 7, "column": null } - }, - "2": { - "start": { "line": 9, "column": 13 }, - "end": { "line": 12, "column": null } - }, - "3": { - "start": { "line": 14, "column": 13 }, - "end": { "line": 17, "column": null } - }, - "4": { - "start": { "line": 19, "column": 13 }, - "end": { "line": 22, "column": null } - }, - "5": { - "start": { "line": 24, "column": 13 }, - "end": { "line": 27, "column": null } - }, - "6": { - "start": { "line": 29, "column": 13 }, - "end": { "line": 32, "column": null } - }, - "7": { - "start": { "line": 34, "column": 13 }, - "end": { "line": 37, "column": null } - }, - "8": { - "start": { "line": 39, "column": 13 }, - "end": { "line": 42, "column": null } - }, - "9": { - "start": { "line": 44, "column": 13 }, - "end": { "line": 48, "column": null } - }, - "10": { - "start": { "line": 50, "column": 13 }, - "end": { "line": 53, "column": null } - }, - "11": { - "start": { "line": 55, "column": 13 }, - "end": { "line": 59, "column": null } - } - }, - "fnMap": {}, - "branchMap": {}, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5, - "11": 5 - }, - "f": {}, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/regexes.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/regexes.ts", - "statementMap": { - "0": { - "start": { "line": 2, "column": 13 }, - "end": { "line": 3, "column": null } - }, - "1": { - "start": { "line": 6, "column": 13 }, - "end": { "line": 7, "column": null } - }, - "2": { - "start": { "line": 9, "column": 13 }, - "end": { "line": 10, "column": null } - }, - "3": { - "start": { "line": 12, "column": 13 }, - "end": { "line": 12, "column": null } - }, - "4": { - "start": { "line": 14, "column": 13 }, - "end": { "line": 14, "column": null } - }, - "5": { - "start": { "line": 17, "column": 13 }, - "end": { "line": 18, "column": null } - }, - "6": { - "start": { "line": 20, "column": 13 }, - "end": { "line": 21, "column": null } - }, - "7": { - "start": { "line": 23, "column": 13 }, - "end": { "line": 24, "column": null } - }, - "8": { - "start": { "line": 27, "column": 13 }, - "end": { "line": 27, "column": null } - }, - "9": { - "start": { "line": 30, "column": 13 }, - "end": { "line": 30, "column": null } - }, - "10": { - "start": { "line": 33, "column": 13 }, - "end": { "line": 34, "column": null } - } - }, - "fnMap": {}, - "branchMap": {}, - "s": { - "0": 5, - "1": 5, - "2": 5, - "3": 5, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5 - }, - "f": {}, - "b": {} - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/splitCommand.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/splitCommand.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 44 } - }, - "1": { - "start": { "line": 3, "column": 28 }, - "end": { "line": 8, "column": 1 } - }, - "2": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "3": { - "start": { "line": 6, "column": 37 }, - "end": { "line": 6, "column": null } - }, - "4": { - "start": { "line": 7, "column": 2 }, - "end": { "line": 7, "column": null } - }, - "5": { - "start": { "line": 3, "column": 13 }, - "end": { "line": 3, "column": 28 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 3, "column": 28 }, - "end": { "line": 3, "column": null } - }, - "loc": { - "start": { "line": 5, "column": 14 }, - "end": { "line": 8, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": null } - } - ] - } - }, - "s": { "0": 5, "1": 5, "2": 0, "3": 0, "4": 0, "5": 5 }, - "f": { "0": 0 }, - "b": { "0": [0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/stringFromStdErrOut.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/stringFromStdErrOut.ts", - "statementMap": { - "0": { - "start": { "line": 5, "column": 2 }, - "end": { "line": 5, "column": null } - }, - "1": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 7 } - } - }, - "fnMap": { - "0": { - "name": "stringFromStdErrOut", - "decl": { - "start": { "line": 1, "column": 22 }, - "end": { "line": 1, "column": 41 } - }, - "loc": { - "start": { "line": 4, "column": 1 }, - "end": { "line": 6, "column": 1 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 5, "column": 9 }, - "end": { "line": 5, "column": 56 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 5, "column": 21 }, - "end": { "line": 5, "column": 45 } - }, - { - "start": { "line": 5, "column": 48 }, - "end": { "line": 5, "column": 56 } - } - ] - } - }, - "s": { "0": 0, "1": 6 }, - "f": { "0": 0 }, - "b": { "0": [0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/util/typeHelpers.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/util/typeHelpers.ts", - "statementMap": { - "0": { - "start": { "line": 11, "column": 28 }, - "end": { "line": 12, "column": 60 } - }, - "1": { - "start": { "line": 12, "column": 2 }, - "end": { "line": 12, "column": 60 } - }, - "2": { - "start": { "line": 11, "column": 13 }, - "end": { "line": 11, "column": 28 } - }, - "3": { - "start": { "line": 108, "column": 12 }, - "end": { "line": 112, "column": 10 } - }, - "4": { - "start": { "line": 113, "column": 2 }, - "end": { "line": 113, "column": null } - }, - "5": { - "start": { "line": 115, "column": 2 }, - "end": { "line": 115, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 11, "column": 28 }, - "end": { "line": 11, "column": 29 } - }, - "loc": { - "start": { "line": 12, "column": 2 }, - "end": { "line": 12, "column": 60 } - } - }, - "1": { - "name": "test", - "decl": { - "start": { "line": 106, "column": 9 }, - "end": { "line": 106, "column": 13 } - }, - "loc": { - "start": { "line": 106, "column": 13 }, - "end": { "line": 116, "column": 1 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 108, "column": 12 }, - "end": { "line": 108, "column": 19 } - }, - "loc": { - "start": { "line": 112, "column": 7 }, - "end": { "line": 112, "column": 10 } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 12, "column": 2 }, - "end": { "line": 12, "column": 60 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 12, "column": 2 }, - "end": { "line": 12, "column": 21 } - }, - { - "start": { "line": 12, "column": 26 }, - "end": { "line": 12, "column": 38 } - }, - { - "start": { "line": 12, "column": 42 }, - "end": { "line": 12, "column": 59 } - } - ] - } - }, - "s": { "0": 5, "1": 0, "2": 5, "3": 0, "4": 0, "5": 0 }, - "f": { "0": 0, "1": 0, "2": 0 }, - "b": { "0": [0, 0, 0] } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/version/VersionGraph.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/version/VersionGraph.ts", - "statementMap": { - "0": { - "start": { "line": 1, "column": 0 }, - "end": { "line": 1, "column": 56 } - }, - "1": { - "start": { "line": 4, "column": 0 }, - "end": { "line": 4, "column": 45 } - }, - "2": { - "start": { "line": 5, "column": 0 }, - "end": { "line": 5, "column": 35 } - }, - "3": { - "start": { "line": 6, "column": 0 }, - "end": { "line": 6, "column": 55 } - }, - "4": { - "start": { "line": 14, "column": 13 }, - "end": { "line": 14, "column": 49 } - }, - "5": { - "start": { "line": 17, "column": 4 }, - "end": { "line": 108, "column": null } - }, - "6": { - "start": { "line": 18, "column": 20 }, - "end": { "line": 18, "column": null } - }, - "7": { - "start": { "line": 32, "column": 10 }, - "end": { "line": 32, "column": 12 } - }, - "8": { - "start": { "line": 33, "column": 6 }, - "end": { "line": 41, "column": null } - }, - "9": { - "start": { "line": 34, "column": 18 }, - "end": { "line": 34, "column": 64 } - }, - "10": { - "start": { "line": 35, "column": 23 }, - "end": { "line": 35, "column": 49 } - }, - "11": { - "start": { "line": 36, "column": 23 }, - "end": { "line": 36, "column": 37 } - }, - "12": { - "start": { "line": 37, "column": 8 }, - "end": { "line": 39, "column": null } - }, - "13": { - "start": { "line": 38, "column": 10 }, - "end": { "line": 38, "column": null } - }, - "14": { - "start": { "line": 40, "column": 8 }, - "end": { "line": 40, "column": null } - }, - "15": { - "start": { "line": 42, "column": 6 }, - "end": { "line": 106, "column": null } - }, - "16": { - "start": { "line": 43, "column": 8 }, - "end": { "line": 43, "column": null } - }, - "17": { - "start": { "line": 43, "column": 41 }, - "end": { "line": 43, "column": 66 } - }, - "18": { - "start": { "line": 53, "column": 24 }, - "end": { "line": 53, "column": 33 } - }, - "19": { - "start": { "line": 54, "column": 8 }, - "end": { "line": 105, "column": null } - }, - "20": { - "start": { "line": 55, "column": 10 }, - "end": { "line": 67, "column": null } - }, - "21": { - "start": { "line": 57, "column": 12 }, - "end": { "line": 64, "column": null } - }, - "22": { - "start": { "line": 58, "column": 14 }, - "end": { "line": 58, "column": null } - }, - "23": { - "start": { "line": 59, "column": 14 }, - "end": { "line": 61, "column": null } - }, - "24": { - "start": { "line": 63, "column": 14 }, - "end": { "line": 63, "column": null } - }, - "25": { - "start": { "line": 65, "column": 27 }, - "end": { "line": 65, "column": 57 } - }, - "26": { - "start": { "line": 66, "column": 12 }, - "end": { "line": 66, "column": null } - }, - "27": { - "start": { "line": 69, "column": 10 }, - "end": { "line": 81, "column": null } - }, - "28": { - "start": { "line": 71, "column": 12 }, - "end": { "line": 78, "column": null } - }, - "29": { - "start": { "line": 72, "column": 14 }, - "end": { "line": 72, "column": null } - }, - "30": { - "start": { "line": 73, "column": 14 }, - "end": { "line": 75, "column": null } - }, - "31": { - "start": { "line": 77, "column": 14 }, - "end": { "line": 77, "column": null } - }, - "32": { - "start": { "line": 79, "column": 27 }, - "end": { "line": 79, "column": 57 } - }, - "33": { - "start": { "line": 80, "column": 12 }, - "end": { "line": 80, "column": null } - }, - "34": { - "start": { "line": 83, "column": 10 }, - "end": { "line": 104, "column": null } - }, - "35": { - "start": { "line": 84, "column": 12 }, - "end": { "line": 103, "column": null } - }, - "36": { - "start": { "line": 85, "column": 28 }, - "end": { "line": 85, "column": 56 } - }, - "37": { - "start": { "line": 86, "column": 29 }, - "end": { "line": 86, "column": 59 } - }, - "38": { - "start": { "line": 87, "column": 14 }, - "end": { "line": 91, "column": null } - }, - "39": { - "start": { "line": 92, "column": 14 }, - "end": { "line": 102, "column": null } - }, - "40": { - "start": { "line": 94, "column": 18 }, - "end": { "line": 95, "column": 45 } - }, - "41": { - "start": { "line": 97, "column": 16 }, - "end": { "line": 101, "column": null } - }, - "42": { - "start": { "line": 107, "column": 6 }, - "end": { "line": 107, "column": null } - }, - "43": { - "start": { "line": 110, "column": 19 }, - "end": { "line": 111, "column": null } - }, - "44": { - "start": { "line": 111, "column": 4 }, - "end": { "line": 111, "column": 55 } - }, - "45": { - "start": { "line": 120, "column": 4 }, - "end": { "line": 120, "column": null } - }, - "46": { - "start": { "line": 131, "column": 18 }, - "end": { "line": 131, "column": 30 } - }, - "47": { - "start": { "line": 132, "column": 4 }, - "end": { "line": 151, "column": null } - }, - "48": { - "start": { "line": 133, "column": 19 }, - "end": { "line": 140, "column": null } - }, - "49": { - "start": { "line": 135, "column": 10 }, - "end": { "line": 137, "column": 76 } - }, - "50": { - "start": { "line": 139, "column": 10 }, - "end": { "line": 140, "column": 74 } - }, - "51": { - "start": { "line": 142, "column": 6 }, - "end": { "line": 150, "column": null } - }, - "52": { - "start": { "line": 143, "column": 8 }, - "end": { "line": 148, "column": null } - }, - "53": { - "start": { "line": 144, "column": 10 }, - "end": { "line": 146, "column": null } - }, - "54": { - "start": { "line": 145, "column": 12 }, - "end": { "line": 145, "column": null } - }, - "55": { - "start": { "line": 147, "column": 10 }, - "end": { "line": 147, "column": null } - }, - "56": { - "start": { "line": 149, "column": 8 }, - "end": { "line": 149, "column": 14 } - }, - "57": { - "start": { "line": 152, "column": 4 }, - "end": { "line": 152, "column": null } - }, - "58": { - "start": { "line": 154, "column": 19 }, - "end": { "line": 171, "column": null } - }, - "59": { - "start": { "line": 155, "column": 4 }, - "end": { "line": 170, "column": null } - }, - "60": { - "start": { "line": 158, "column": 10 }, - "end": { "line": 161, "column": 53 } - }, - "61": { - "start": { "line": 165, "column": 8 }, - "end": { "line": 168, "column": null } - }, - "62": { - "start": { "line": 173, "column": 17 }, - "end": { "line": 190, "column": null } - }, - "63": { - "start": { "line": 174, "column": 4 }, - "end": { "line": 189, "column": null } - }, - "64": { - "start": { "line": 177, "column": 10 }, - "end": { "line": 180, "column": 53 } - }, - "65": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 187, "column": null } - }, - "66": { - "start": { "line": 8, "column": 0 }, - "end": { "line": 8, "column": 13 } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 13, "column": 2 }, - "end": { "line": 13, "column": null } - }, - "loc": { - "start": { "line": 15, "column": 37 }, - "end": { "line": 109, "column": 3 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 17, "column": 22 }, - "end": { "line": 17, "column": 25 } - }, - "loc": { - "start": { "line": 17, "column": 27 }, - "end": { "line": 108, "column": 5 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 43, "column": 31 }, - "end": { "line": 43, "column": 32 } - }, - "loc": { - "start": { "line": 43, "column": 41 }, - "end": { "line": 43, "column": 66 } - } - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { "line": 93, "column": 16 }, - "end": { "line": 93, "column": 17 } - }, - "loc": { - "start": { "line": 94, "column": 18 }, - "end": { "line": 95, "column": 45 } - } - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { "line": 110, "column": 24 }, - "end": { "line": 110, "column": 27 } - }, - "loc": { - "start": { "line": 111, "column": 4 }, - "end": { "line": 111, "column": 55 } - } - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { "line": 113, "column": 2 }, - "end": { "line": 113, "column": 8 } - }, - "loc": { - "start": { "line": 118, "column": 74 }, - "end": { "line": 121, "column": 3 } - } - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { "line": 122, "column": 2 }, - "end": { "line": 122, "column": 7 } - }, - "loc": { - "start": { "line": 130, "column": 3 }, - "end": { "line": 153, "column": 3 } - } - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { "line": 134, "column": 8 }, - "end": { "line": 134, "column": 9 } - }, - "loc": { - "start": { "line": 135, "column": 10 }, - "end": { "line": 137, "column": 76 } - } - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { "line": 138, "column": 8 }, - "end": { "line": 138, "column": 9 } - }, - "loc": { - "start": { "line": 139, "column": 10 }, - "end": { "line": 140, "column": 74 } - } - }, - "9": { - "name": "(anonymous_9)", - "decl": { - "start": { "line": 154, "column": 24 }, - "end": { "line": 154, "column": 27 } - }, - "loc": { - "start": { "line": 155, "column": 4 }, - "end": { "line": 170, "column": null } - } - }, - "10": { - "name": "(anonymous_10)", - "decl": { - "start": { "line": 157, "column": 8 }, - "end": { "line": 157, "column": 9 } - }, - "loc": { - "start": { "line": 158, "column": 10 }, - "end": { "line": 161, "column": 53 } - } - }, - "11": { - "name": "(anonymous_11)", - "decl": { - "start": { "line": 164, "column": 6 }, - "end": { "line": 164, "column": 7 } - }, - "loc": { - "start": { "line": 165, "column": 8 }, - "end": { "line": 168, "column": null } - } - }, - "12": { - "name": "(anonymous_12)", - "decl": { - "start": { "line": 173, "column": 22 }, - "end": { "line": 173, "column": 25 } - }, - "loc": { - "start": { "line": 174, "column": 4 }, - "end": { "line": 189, "column": null } - } - }, - "13": { - "name": "(anonymous_13)", - "decl": { - "start": { "line": 176, "column": 8 }, - "end": { "line": 176, "column": 9 } - }, - "loc": { - "start": { "line": 177, "column": 10 }, - "end": { "line": 180, "column": 53 } - } - }, - "14": { - "name": "(anonymous_14)", - "decl": { - "start": { "line": 183, "column": 6 }, - "end": { "line": 183, "column": 7 } - }, - "loc": { - "start": { "line": 184, "column": 8 }, - "end": { "line": 187, "column": null } - } - } - }, - "branchMap": { - "0": { - "loc": { - "start": { "line": 36, "column": 23 }, - "end": { "line": 36, "column": 37 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 36, "column": 23 }, - "end": { "line": 36, "column": 31 } - }, - { - "start": { "line": 36, "column": 35 }, - "end": { "line": 36, "column": 37 } - } - ] - }, - "1": { - "loc": { - "start": { "line": 37, "column": 8 }, - "end": { "line": 39, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 37, "column": 8 }, - "end": { "line": 39, "column": null } - } - ] - }, - "2": { - "loc": { - "start": { "line": 55, "column": 10 }, - "end": { "line": 67, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 55, "column": 10 }, - "end": { "line": 67, "column": null } - } - ] - }, - "3": { - "loc": { - "start": { "line": 57, "column": 12 }, - "end": { "line": 64, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 57, "column": 12 }, - "end": { "line": 64, "column": null } - }, - { - "start": { "line": 62, "column": 19 }, - "end": { "line": 64, "column": null } - } - ] - }, - "4": { - "loc": { - "start": { "line": 69, "column": 10 }, - "end": { "line": 81, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 69, "column": 10 }, - "end": { "line": 81, "column": null } - } - ] - }, - "5": { - "loc": { - "start": { "line": 71, "column": 12 }, - "end": { "line": 78, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 71, "column": 12 }, - "end": { "line": 78, "column": null } - }, - { - "start": { "line": 76, "column": 19 }, - "end": { "line": 78, "column": null } - } - ] - }, - "6": { - "loc": { - "start": { "line": 83, "column": 10 }, - "end": { "line": 104, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 83, "column": 10 }, - "end": { "line": 104, "column": null } - } - ] - }, - "7": { - "loc": { - "start": { "line": 94, "column": 18 }, - "end": { "line": 95, "column": 45 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 94, "column": 18 }, - "end": { "line": 94, "column": 55 } - }, - { - "start": { "line": 95, "column": 18 }, - "end": { "line": 95, "column": 45 } - } - ] - }, - "8": { - "loc": { - "start": { "line": 132, "column": 4 }, - "end": { "line": 151, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 132, "column": 4 }, - "end": { "line": 151, "column": null } - } - ] - }, - "9": { - "loc": { - "start": { "line": 132, "column": 8 }, - "end": { "line": 132, "column": 18 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 132, "column": 8 }, - "end": { "line": 132, "column": 12 } - }, - { - "start": { "line": 132, "column": 16 }, - "end": { "line": 132, "column": 18 } - } - ] - }, - "10": { - "loc": { - "start": { "line": 135, "column": 10 }, - "end": { "line": 137, "column": 76 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 135, "column": 11 }, - "end": { "line": 135, "column": 45 } - }, - { - "start": { "line": 136, "column": 12 }, - "end": { "line": 136, "column": 40 } - }, - { - "start": { "line": 137, "column": 11 }, - "end": { "line": 137, "column": 48 } - }, - { - "start": { "line": 137, "column": 52 }, - "end": { "line": 137, "column": 75 } - } - ] - }, - "11": { - "loc": { - "start": { "line": 139, "column": 10 }, - "end": { "line": 140, "column": 74 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 139, "column": 11 }, - "end": { "line": 139, "column": 45 } - }, - { - "start": { "line": 139, "column": 49 }, - "end": { "line": 139, "column": 75 } - }, - { - "start": { "line": 140, "column": 11 }, - "end": { "line": 140, "column": 48 } - }, - { - "start": { "line": 140, "column": 52 }, - "end": { "line": 140, "column": 73 } - } - ] - }, - "12": { - "loc": { - "start": { "line": 142, "column": 6 }, - "end": { "line": 150, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 142, "column": 6 }, - "end": { "line": 150, "column": null } - } - ] - }, - "13": { - "loc": { - "start": { "line": 144, "column": 10 }, - "end": { "line": 146, "column": null } - }, - "type": "if", - "locations": [ - { - "start": { "line": 144, "column": 10 }, - "end": { "line": 146, "column": null } - } - ] - }, - "14": { - "loc": { - "start": { "line": 158, "column": 10 }, - "end": { "line": 161, "column": 53 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 158, "column": 11 }, - "end": { "line": 158, "column": 45 } - }, - { - "start": { "line": 159, "column": 12 }, - "end": { "line": 159, "column": 57 } - }, - { - "start": { "line": 160, "column": 11 }, - "end": { "line": 160, "column": 48 } - }, - { - "start": { "line": 161, "column": 12 }, - "end": { "line": 161, "column": 52 } - } - ] - }, - "15": { - "loc": { - "start": { "line": 166, "column": 10 }, - "end": { "line": 168, "column": 50 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 167, "column": 14 }, - "end": { "line": 167, "column": 24 } - }, - { - "start": { "line": 168, "column": 14 }, - "end": { "line": 168, "column": 50 } - } - ] - }, - "16": { - "loc": { - "start": { "line": 177, "column": 10 }, - "end": { "line": 180, "column": 53 } - }, - "type": "binary-expr", - "locations": [ - { - "start": { "line": 177, "column": 11 }, - "end": { "line": 177, "column": 45 } - }, - { - "start": { "line": 178, "column": 12 }, - "end": { "line": 178, "column": 57 } - }, - { - "start": { "line": 179, "column": 11 }, - "end": { "line": 179, "column": 48 } - }, - { - "start": { "line": 180, "column": 12 }, - "end": { "line": 180, "column": 52 } - } - ] - }, - "17": { - "loc": { - "start": { "line": 185, "column": 10 }, - "end": { "line": 187, "column": 50 } - }, - "type": "cond-expr", - "locations": [ - { - "start": { "line": 186, "column": 14 }, - "end": { "line": 186, "column": 24 } - }, - { - "start": { "line": 187, "column": 14 }, - "end": { "line": 187, "column": 50 } - } - ] - } - }, - "s": { - "0": 4, - "1": 4, - "2": 4, - "3": 4, - "4": 5, - "5": 5, - "6": 5, - "7": 5, - "8": 5, - "9": 5, - "10": 5, - "11": 5, - "12": 5, - "13": 5, - "14": 5, - "15": 5, - "16": 5, - "17": 0, - "18": 5, - "19": 5, - "20": 5, - "21": 5, - "22": 0, - "23": 0, - "24": 5, - "25": 5, - "26": 5, - "27": 5, - "28": 5, - "29": 0, - "30": 0, - "31": 5, - "32": 5, - "33": 5, - "34": 5, - "35": 0, - "36": 0, - "37": 0, - "38": 0, - "39": 0, - "40": 0, - "41": 0, - "42": 5, - "43": 5, - "44": 5, - "45": 5, - "46": 0, - "47": 0, - "48": 0, - "49": 0, - "50": 0, - "51": 0, - "52": 0, - "53": 0, - "54": 0, - "55": 0, - "56": 0, - "57": 0, - "58": 5, - "59": 5, - "60": 15, - "61": 10, - "62": 5, - "63": 5, - "64": 15, - "65": 10, - "66": 4 - }, - "f": { - "0": 5, - "1": 5, - "2": 0, - "3": 0, - "4": 5, - "5": 5, - "6": 0, - "7": 0, - "8": 0, - "9": 5, - "10": 15, - "11": 10, - "12": 5, - "13": 15, - "14": 10 - }, - "b": { - "0": [5, 5], - "1": [5], - "2": [5], - "3": [0, 5], - "4": [5], - "5": [0, 5], - "6": [0], - "7": [0, 0], - "8": [0], - "9": [0, 0], - "10": [0, 0, 0, 0], - "11": [0, 0, 0, 0], - "12": [0], - "13": [0], - "14": [15, 10, 15, 5], - "15": [5, 5], - "16": [15, 10, 15, 5], - "17": [5, 5] - } - }, - "/Users/matthill/Code/start9/start-os/sdk/lib/version/VersionInfo.ts": { - "path": "/Users/matthill/Code/start9/start-os/sdk/lib/version/VersionInfo.ts", - "statementMap": { - "0": { - "start": { "line": 4, "column": 13 }, - "end": { "line": 4, "column": null } - }, - "1": { - "start": { "line": 33, "column": 37 }, - "end": { "line": 33, "column": 41 } - }, - "2": { - "start": { "line": 35, "column": 13 }, - "end": { "line": 35, "column": 71 } - }, - "3": { - "start": { "line": 38, "column": 4 }, - "end": { "line": 38, "column": null } - }, - "4": { - "start": { "line": 44, "column": 4 }, - "end": { "line": 47, "column": null } - }, - "5": { - "start": { "line": 32, "column": 0 }, - "end": { "line": 32, "column": 13 } - }, - "6": { - "start": { "line": 52, "column": 42 }, - "end": { "line": 60, "column": 32 } - }, - "7": { - "start": { "line": 62, "column": 34 }, - "end": { "line": 62, "column": 41 } - }, - "8": { - "start": { "line": 64, "column": 34 }, - "end": { "line": 64, "column": 41 } - }, - "9": { - "start": { "line": 66, "column": 2 }, - "end": { "line": 71, "column": null } - }, - "10": { - "start": { "line": 72, "column": 2 }, - "end": { "line": 77, "column": null } - } - }, - "fnMap": { - "0": { - "name": "(anonymous_0)", - "decl": { - "start": { "line": 34, "column": 2 }, - "end": { "line": 34, "column": null } - }, - "loc": { - "start": { "line": 35, "column": 71 }, - "end": { "line": 36, "column": 6 } - } - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { "line": 37, "column": 2 }, - "end": { "line": 37, "column": 8 } - }, - "loc": { - "start": { "line": 37, "column": 68 }, - "end": { "line": 39, "column": 3 } - } - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { "line": 41, "column": 2 }, - "end": { "line": 41, "column": 11 } - }, - "loc": { - "start": { "line": 42, "column": 33 }, - "end": { "line": 48, "column": 3 } - } - }, - "3": { - "name": "__type_tests", - "decl": { - "start": { "line": 51, "column": 9 }, - "end": { "line": 51, "column": 21 } - }, - "loc": { - "start": { "line": 51, "column": 21 }, - "end": { "line": 78, "column": 1 } - } - } - }, - "branchMap": {}, - "s": { - "0": 4, - "1": 13, - "2": 13, - "3": 5, - "4": 8, - "5": 4, - "6": 0, - "7": 0, - "8": 0, - "9": 0, - "10": 0 - }, - "f": { "0": 13, "1": 5, "2": 8, "3": 0 }, - "b": {} - } -} diff --git a/sdk/lib/coverage/lcov-report/base.css b/sdk/lib/coverage/lcov-report/base.css deleted file mode 100644 index 3fc428eca..000000000 --- a/sdk/lib/coverage/lcov-report/base.css +++ /dev/null @@ -1,362 +0,0 @@ -body, -html { - margin: 0; - padding: 0; - height: 100%; -} -body { - 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; -} -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; -} -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; -} -.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); -} -.quiet a { - opacity: 0.7; -} - -.fraction { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #e8e8e8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, -div.path a:visited { - color: #333; -} -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width: 20px; -} - -table.coverage td span.cline-any { - 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; -} - -.skip-if-branch { - 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; -} -.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 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.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 .sorter { - 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; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { - height: 10px; -} -/* yellow */ -.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; -} -.highlighted, -.highlighted .cstat-no, -.highlighted .fstat-no, -.highlighted .cbranch-no { - background: #c21f39 !important; -} -/* medium red */ -.cstat-no, -.fstat-no, -.cbranch-no, -.cbranch-no { - background: #f6c6ce; -} -/* light red */ -.low, -.cline-no { - background: #fce1e5; -} -/* light green */ -.high, -.cline-yes { - background: rgb(230, 245, 208); -} -/* medium green */ -.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); -} -/* dark yellow (gold) */ -.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: 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; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { - color: #999 !important; -} -.ignore-none { - color: #999; - font-weight: normal; -} - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, -.push { - height: 48px; -} diff --git a/sdk/lib/coverage/lcov-report/block-navigation.js b/sdk/lib/coverage/lcov-report/block-navigation.js deleted file mode 100644 index 5b295be8a..000000000 --- a/sdk/lib/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,85 +0,0 @@ -/* 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"]; - - // 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) > ` - - // 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); - - var currentIndex; - - 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; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === "number" && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - 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; - } - - 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); diff --git a/sdk/lib/coverage/lcov-report/config/builder/config.ts.html b/sdk/lib/coverage/lcov-report/config/builder/config.ts.html deleted file mode 100644 index 8956a7683..000000000 --- a/sdk/lib/coverage/lcov-report/config/builder/config.ts.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - Code coverage report for config/builder/config.ts - - - - - - - - - - - - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/config/builder/index.html b/sdk/lib/coverage/lcov-report/config/builder/index.html deleted file mode 100644 index d97faa326..000000000 --- a/sdk/lib/coverage/lcov-report/config/builder/index.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - Code coverage report for config/builder - - - - - - - - - -
-
-

All files config/builder

-
-
- 31.73% - Statements - 33/104 -
- -
- 0% - Branches - 0/29 -
- -
- 17.18% - Functions - 11/64 -
- -
- 31.37% - Lines - 32/102 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- config.ts - -
-
-
-
-
78.57%11/14100%0/075%3/478.57%11/14
- list.ts - -
-
-
-
-
70%14/20100%0/062.5%5/870%14/20
- value.ts - -
-
-
-
-
11.42%8/700%0/295.76%3/5210.29%7/68
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/config/builder/list.ts.html b/sdk/lib/coverage/lcov-report/config/builder/list.ts.html deleted file mode 100644 index 3123fb577..000000000 --- a/sdk/lib/coverage/lcov-report/config/builder/list.ts.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - Code coverage report for config/builder/list.ts - - - - - - - - - -
-
-

- All files / - config/builder list.ts -

-
-
- 70% - Statements - 14/20 -
- -
- 100% - Branches - 0/0 -
- -
- 62.5% - Functions - 5/8 -
- -
- 70% - Lines - 14/20 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Config, LazyBuild } from "./config"
-import {
-  ListValueSpecText,
-  Pattern,
-  RandomString,
-  UniqueBy,
-  ValueSpecList,
-  ValueSpecListOf,
-} from "../configTypes"
-import { Parser, arrayOf, number, string } from "ts-matches"
-/**
- * Used as a subtype of Value.list
-```ts
-export const authorizationList = List.string({
-  "name": "Authorization",
-  "range": "[0,*)",
-  "default": [],
-  "description": "Username and hashed password for JSON-RPC connections. RPC clients connect using the usual http basic authentication.",
-  "warning": null
-}, {"masked":false,"placeholder":null,"pattern":"^[a-zA-Z0-9_-]+:([0-9a-fA-F]{2})+\\$([0-9a-fA-F]{2})+$","patternDescription":"Each item must be of the form \"<USERNAME>:<SALT>$<HASH>\"."});
-export const auth = Value.list(authorizationList);
-```
-*/
-export class List<Type, Store> {
-  private constructor(
-    public build: LazyBuild<Store, ValueSpecList>,
-    public validator: Parser<unknown, Type>,
-  ) {}
-  static text(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      /** Default = [] */
-      default?: string[]
-      minLength?: number | null
-      maxLength?: number | null
-    },
-    aSpec: {
-      /** Default = false */
-      masked?: boolean
-      placeholder?: string | null
-      minLength?: number | null
-      maxLength?: number | null
-      patterns: Pattern[]
-      /** Default = "text" */
-      inputmode?: ListValueSpecText["inputmode"]
-      generate?: null | RandomString
-    },
-  ) {
-    return new List<string[], never>(() => {
-      const spec = {
-        type: "text" as const,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        masked: false,
-        inputmode: "text" as const,
-        generate: null,
-        ...aSpec,
-      }
-      const built: ValueSpecListOf<"text"> = {
-        description: null,
-        warning: null,
-        default: [],
-        type: "list" as const,
-        minLength: null,
-        maxLength: null,
-        disabled: false,
-        ...a,
-        spec,
-      }
-      return built
-    }, arrayOf(string))
-  }
-  static dynamicText<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        /** Default = [] */
-        default?: string[]
-        minLength?: number | null
-        maxLength?: number | null
-        disabled?: false | string
-        generate?: null | RandomString
-        spec: {
-          /** Default = false */
-          masked?: boolean
-          placeholder?: string | null
-          minLength?: number | null
-          maxLength?: number | null
-          patterns: Pattern[]
-          /** Default = "text" */
-          inputmode?: ListValueSpecText["inputmode"]
-        }
-      }
-    >,
-  ) {
-    return new List<string[], Store>(async (options) => {
-      const { spec: aSpec, ...a } = await getA(options)
-      const spec = {
-        type: "text" as const,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        masked: false,
-        inputmode: "text" as const,
-        generate: null,
-        ...aSpec,
-      }
-      const built: ValueSpecListOf<"text"> = {
-        description: null,
-        warning: null,
-        default: [],
-        type: "list" as const,
-        minLength: null,
-        maxLength: null,
-        disabled: false,
-        ...a,
-        spec,
-      }
-      return built
-    }, arrayOf(string))
-  }
-  static obj<Type extends Record<string, any>, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      /** Default [] */
-      default?: []
-      minLength?: number | null
-      maxLength?: number | null
-    },
-    aSpec: {
-      spec: Config<Type, Store>
-      displayAs?: null | string
-      uniqueBy?: null | UniqueBy
-    },
-  ) {
-    return new List<Type[], Store>(async (options) => {
-      const { spec: previousSpecSpec, ...restSpec } = aSpec
-      const specSpec = await previousSpecSpec.build(options)
-      const spec = {
-        type: "object" as const,
-        displayAs: null,
-        uniqueBy: null,
-        ...restSpec,
-        spec: specSpec,
-      }
-      const value = {
-        spec,
-        default: [],
-        ...a,
-      }
-      return {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        type: "list" as const,
-        disabled: false,
-        ...value,
-      }
-    }, arrayOf(aSpec.spec.validator))
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as List<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/config/builder/value.ts.html b/sdk/lib/coverage/lcov-report/config/builder/value.ts.html deleted file mode 100644 index 6447f4a9c..000000000 --- a/sdk/lib/coverage/lcov-report/config/builder/value.ts.html +++ /dev/null @@ -1,2436 +0,0 @@ - - - - Code coverage report for config/builder/value.ts - - - - - - - - - -
-
-

- All files / - config/builder value.ts -

-
-
- 11.42% - Statements - 8/70 -
- -
- 0% - Branches - 0/29 -
- -
- 5.76% - Functions - 3/52 -
- -
- 10.29% - Lines - 7/68 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Config, LazyBuild, LazyBuildOptions } from "./config"
-import { List } from "./list"
-import { Variants } from "./variants"
-import {
-  FilePath,
-  Pattern,
-  RandomString,
-  ValueSpec,
-  ValueSpecDatetime,
-  ValueSpecText,
-  ValueSpecTextarea,
-} from "../configTypes"
-import { DefaultString } from "../configTypes"
-import { _ } from "../../util"
-import {
-  Parser,
-  anyOf,
-  arrayOf,
-  boolean,
-  literal,
-  literals,
-  number,
-  object,
-  string,
-  unknown,
-} from "ts-matches"
-import { once } from "../../util/once"
- 
-export type RequiredDefault<A> =
-  | false
-  | {
-      default: A | null
-    }
- 
-function requiredLikeToAbove<Input extends RequiredDefault<A>, A>(
-  requiredLike: Input,
-) {
-  // prettier-ignore
-  return {
-    required: (typeof requiredLike === 'object' ? true : requiredLike) as (
-      Input extends { default: unknown} ? true:
-      Input extends true ? true :
-      false
-    ),
-    default:(typeof requiredLike === 'object' ? requiredLike.default : null) as (
-      Input extends { default: infer Default } ? Default :
-      null
-    )
-  };
-}
-type AsRequired<Type, MaybeRequiredType> = MaybeRequiredType extends
-  | { default: unknown }
-  | never
-  ? Type
-  : Type | null | undefined
- 
-type InputAsRequired<A, Type> = A extends
-  | { required: { default: any } | never }
-  | never
-  ? Type
-  : Type | null | undefined
-const testForAsRequiredParser = once(
-  () => object({ required: object({ default: unknown }) }).test,
-)
-function asRequiredParser<
-  Type,
-  Input,
-  Return extends
-    | Parser<unknown, Type>
-    | Parser<unknown, Type | null | undefined>,
->(parser: Parser<unknown, Type>, input: Input): Return {
-  Iif (testForAsRequiredParser()(input)) return parser as any
-  return parser.optional() as any
-}
- 
-/**
- * A value is going to be part of the form in the FE of the OS.
- * Something like a boolean, a string, a number, etc.
- * in the fe it will ask for the name of value, and use the rest of the value to determine how to render it.
- * While writing with a value, you will start with `Value.` then let the IDE suggest the rest.
- * for things like string, the options are going to be in {}.
- * Keep an eye out for another config builder types as params.
- * Note, usually this is going to be used in a `Config` {@link Config} builder.
- ```ts
-const username = Value.string({
-  name: "Username",
-  default: "bitcoin",
-  description: "The username for connecting to Bitcoin over RPC.",
-  warning: null,
-  required: true,
-  masked: true,
-  placeholder: null,
-  pattern: "^[a-zA-Z0-9_]+$",
-  patternDescription: "Must be alphanumeric (can contain underscore).",
-});
- ```
- */
-export class Value<Type, Store> {
-  protected constructor(
-    public build: LazyBuild<Store, ValueSpec>,
-    public validator: Parser<unknown, Type>,
-  ) {}
-  static toggle(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    default: boolean
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<boolean, never>(
-      async () => ({
-        description: null,
-        warning: null,
-        type: "toggle" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }),
-      boolean,
-    )
-  }
-  static dynamicToggle<Store = never>(
-    a: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        default: boolean
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<boolean, Store>(
-      async (options) => ({
-        description: null,
-        warning: null,
-        type: "toggle" as const,
-        disabled: false,
-        immutable: false,
-        ...(await a(options)),
-      }),
-      boolean,
-    )
-  }
-  static text<Required extends RequiredDefault<DefaultString>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
- 
-    /** Default = false */
-    masked?: boolean
-    placeholder?: string | null
-    minLength?: number | null
-    maxLength?: number | null
-    patterns?: Pattern[]
-    /** Default = 'text' */
-    inputmode?: ValueSpecText["inputmode"]
-    /**  Immutable means it can only be configured at the first config then never again
-     * Default is false
-     */
-    immutable?: boolean
-    generate?: null | RandomString
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      async () => ({
-        type: "text" as const,
-        description: null,
-        warning: null,
-        masked: false,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        patterns: [],
-        inputmode: "text",
-        disabled: false,
-        immutable: a.immutable ?? false,
-        generate: a.generate ?? null,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(string, a),
-    )
-  }
-  static dynamicText<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<DefaultString>
- 
-        /** Default = false */
-        masked?: boolean
-        placeholder?: string | null
-        minLength?: number | null
-        maxLength?: number | null
-        patterns?: Pattern[]
-        /** Default = 'text' */
-        inputmode?: ValueSpecText["inputmode"]
-        disabled?: string | false
-        /**  Immutable means it can only be configured at the first config then never again
-         * Default is false
-         */
-        generate?: null | RandomString
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "text" as const,
-        description: null,
-        warning: null,
-        masked: false,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        patterns: [],
-        inputmode: "text",
-        disabled: false,
-        immutable: false,
-        generate: a.generate ?? null,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static textarea(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: boolean
-    minLength?: number | null
-    maxLength?: number | null
-    placeholder?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<string, never>(async () => {
-      const built: ValueSpecTextarea = {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        placeholder: null,
-        type: "textarea" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }
-      return built
-    }, string)
-  }
-  static dynamicTextarea<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: boolean
-        minLength?: number | null
-        maxLength?: number | null
-        placeholder?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        placeholder: null,
-        type: "textarea" as const,
-        disabled: false,
-        immutable: false,
-        ...a,
-      }
-    }, string)
-  }
-  static number<Required extends RequiredDefault<number>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    min?: number | null
-    max?: number | null
-    /** Default = '1' */
-    step?: number | null
-    integer: boolean
-    units?: string | null
-    placeholder?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<number, Required>, never>(
-      () => ({
-        type: "number" as const,
-        description: null,
-        warning: null,
-        min: null,
-        max: null,
-        step: null,
-        units: null,
-        placeholder: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(number, a),
-    )
-  }
-  static dynamicNumber<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<number>
-        min?: number | null
-        max?: number | null
-        /** Default = '1' */
-        step?: number | null
-        integer: boolean
-        units?: string | null
-        placeholder?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<number | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "number" as const,
-        description: null,
-        warning: null,
-        min: null,
-        max: null,
-        step: null,
-        units: null,
-        placeholder: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, number.optional())
-  }
-  static color<Required extends RequiredDefault<string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      () => ({
-        type: "color" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
- 
-      asRequiredParser(string, a),
-    )
-  }
- 
-  static dynamicColor<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "color" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static datetime<Required extends RequiredDefault<string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    /** Default = 'datetime-local' */
-    inputmode?: ValueSpecDatetime["inputmode"]
-    min?: string | null
-    max?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      () => ({
-        type: "datetime" as const,
-        description: null,
-        warning: null,
-        inputmode: "datetime-local",
-        min: null,
-        max: null,
-        step: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(string, a),
-    )
-  }
-  static dynamicDatetime<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        /** Default = 'datetime-local' */
-        inputmode?: ValueSpecDatetime["inputmode"]
-        min?: string | null
-        max?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "datetime" as const,
-        description: null,
-        warning: null,
-        inputmode: "datetime-local",
-        min: null,
-        max: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static select<
-    Required extends RequiredDefault<string>,
-    B extends Record<string, string>,
-  >(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    values: B
-    /**
-     * Disabled:  false means that there is nothing disabled, good to modify
-     *           string means that this is the message displayed and the whole thing is disabled
-     *           string[] means that the options are disabled
-     */
-    disabled?: false | string | (string & keyof B)[]
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<keyof B, Required>, never>(
-      () => ({
-        description: null,
-        warning: null,
-        type: "select" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(
-        anyOf(
-          ...Object.keys(a.values).map((x: keyof B & string) => literal(x)),
-        ),
-        a,
-      ) as any,
-    )
-  }
-  static dynamicSelect<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        values: Record<string, string>
-        /**
-         * Disabled:  false means that there is nothing disabled, good to modify
-         *           string means that this is the message displayed and the whole thing is disabled
-         *           string[] means that the options are disabled
-         */
-        disabled?: false | string | string[]
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        description: null,
-        warning: null,
-        type: "select" as const,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static multiselect<Values extends Record<string, string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    default: string[]
-    values: Values
-    minLength?: number | null
-    maxLength?: number | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-    /**
-     * Disabled:  false means that there is nothing disabled, good to modify
-     *           string means that this is the message displayed and the whole thing is disabled
-     *           string[] means that the options are disabled
-     */
-    disabled?: false | string | (string & keyof Values)[]
-  }) {
-    return new Value<(keyof Values)[], never>(
-      () => ({
-        type: "multiselect" as const,
-        minLength: null,
-        maxLength: null,
-        warning: null,
-        description: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }),
-      arrayOf(
-        literals(...(Object.keys(a.values) as any as [keyof Values & string])),
-      ),
-    )
-  }
-  static dynamicMultiselect<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        default: string[]
-        values: Record<string, string>
-        minLength?: number | null
-        maxLength?: number | null
-        /**
-         * Disabled:  false means that there is nothing disabled, good to modify
-         *           string means that this is the message displayed and the whole thing is disabled
-         *           string[] means that the options are disabled
-         */
-        disabled?: false | string | string[]
-      }
-    >,
-  ) {
-    return new Value<string[], Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "multiselect" as const,
-        minLength: null,
-        maxLength: null,
-        warning: null,
-        description: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-      }
-    }, arrayOf(string))
-  }
-  static object<Type extends Record<string, any>, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-    },
-    spec: Config<Type, Store>,
-  ) {
-    return new Value<Type, Store>(async (options) => {
-      const built = await spec.build(options as any)
-      return {
-        type: "object" as const,
-        description: null,
-        warning: null,
-        ...a,
-        spec: built,
-      }
-    }, spec.validator)
-  }
-  static file<Required extends RequiredDefault<string>, Store>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    extensions: string[]
-    required: Required
-  }) {
-    const buildValue = {
-      type: "file" as const,
-      description: null,
-      warning: null,
-      ...a,
-    }
-    return new Value<AsRequired<FilePath, Required>, Store>(
-      () => ({
-        ...buildValue,
- 
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(object({ filePath: string }), a),
-    )
-  }
-  static dynamicFile<Required extends boolean, Store>(
-    a: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        extensions: string[]
-        required: Required
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(
-      async (options) => ({
-        type: "file" as const,
-        description: null,
-        warning: null,
-        ...(await a(options)),
-      }),
-      string.optional(),
-    )
-  }
-  static union<Required extends RequiredDefault<string>, Type, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      required: Required
-      /**  Immutable means it can only be configed at the first config then never again 
-      Default is false */
-      immutable?: boolean
-      /**
-       * Disabled:  false means that there is nothing disabled, good to modify
-       *           string means that this is the message displayed and the whole thing is disabled
-       *           string[] means that the options are disabled
-       */
-      disabled?: false | string | string[]
-    },
-    aVariants: Variants<Type, Store>,
-  ) {
-    return new Value<AsRequired<Type, Required>, Store>(
-      async (options) => ({
-        type: "union" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        ...a,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(a.required),
-        immutable: a.immutable ?? false,
-      }),
-      asRequiredParser(aVariants.validator, a),
-    )
-  }
-  static filteredUnion<
-    Required extends RequiredDefault<string>,
-    Type extends Record<string, any>,
-    Store = never,
-  >(
-    getDisabledFn: LazyBuild<Store, string[] | false | string>,
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      required: Required
-    },
-    aVariants: Variants<Type, Store> | Variants<Type, never>,
-  ) {
-    return new Value<AsRequired<Type, Required>, Store>(
-      async (options) => ({
-        type: "union" as const,
-        description: null,
-        warning: null,
-        ...a,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(a.required),
-        disabled: (await getDisabledFn(options)) || false,
-        immutable: false,
-      }),
-      asRequiredParser(aVariants.validator, a),
-    )
-  }
-  static dynamicUnion<
-    Required extends RequiredDefault<string>,
-    Type extends Record<string, any>,
-    Store = never,
-  >(
-    getA: LazyBuild<
-      Store,
-      {
-        disabled: string[] | false | string
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: Required
-      }
-    >,
-    aVariants: Variants<Type, Store> | Variants<Type, never>,
-  ) {
-    return new Value<Type | null | undefined, Store>(async (options) => {
-      const newValues = await getA(options)
-      return {
-        type: "union" as const,
-        description: null,
-        warning: null,
-        ...newValues,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(newValues.required),
-        immutable: false,
-      }
-    }, aVariants.validator.optional())
-  }
- 
-  static list<Type, Store>(a: List<Type, Store>) {
-    return new Value<Type, Store>((options) => a.build(options), a.validator)
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as Value<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/config/configTypes.ts.html b/sdk/lib/coverage/lcov-report/config/configTypes.ts.html deleted file mode 100644 index 0f493597d..000000000 --- a/sdk/lib/coverage/lcov-report/config/configTypes.ts.html +++ /dev/null @@ -1,921 +0,0 @@ - - - - Code coverage report for config/configTypes.ts - - - - - - - - - -
-
-

- All files / - config configTypes.ts -

-
-
- 100% - Statements - 4/4 -
- -
- 100% - Branches - 2/2 -
- -
- 100% - Functions - 1/1 -
- -
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -3x -  -1x -  -  -1x -  - 
export type InputSpec = Record<string, ValueSpec>
-export type ValueType =
-  | "text"
-  | "textarea"
-  | "number"
-  | "color"
-  | "datetime"
-  | "toggle"
-  | "select"
-  | "multiselect"
-  | "list"
-  | "object"
-  | "file"
-  | "union"
-export type ValueSpec = ValueSpecOf<ValueType>
-/** core spec types. These types provide the metadata for performing validations */
-// prettier-ignore
-export type ValueSpecOf<T extends ValueType> = 
-  T extends "text" ? ValueSpecText : 
-  T extends "textarea" ? ValueSpecTextarea : 
-  T extends "number" ? ValueSpecNumber : 
-  T extends "color" ? ValueSpecColor : 
-  T extends "datetime" ? ValueSpecDatetime : 
-  T extends "toggle" ? ValueSpecToggle : 
-  T extends "select" ? ValueSpecSelect : 
-  T extends "multiselect" ? ValueSpecMultiselect : 
-  T extends "list" ? ValueSpecList : 
-  T extends "object" ? ValueSpecObject : 
-  T extends "file" ? ValueSpecFile : 
-  T extends "union" ? ValueSpecUnion : 
-  never
- 
-export type ValueSpecText = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "text"
-  patterns: Pattern[]
-  minLength: number | null
-  maxLength: number | null
-  masked: boolean
- 
-  inputmode: "text" | "email" | "tel" | "url"
-  placeholder: string | null
- 
-  required: boolean
-  default: DefaultString | null
-  disabled: false | string
-  generate: null | RandomString
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecTextarea = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "textarea"
-  placeholder: string | null
-  minLength: number | null
-  maxLength: number | null
-  required: boolean
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
- 
-export type FilePath = {
-  filePath: string
-}
-export type ValueSpecNumber = {
-  type: "number"
-  min: number | null
-  max: number | null
-  integer: boolean
-  step: number | null
-  units: string | null
-  placeholder: string | null
-  name: string
-  description: string | null
-  warning: string | null
-  required: boolean
-  default: number | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecColor = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "color"
-  required: boolean
-  default: string | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecDatetime = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "datetime"
-  required: boolean
-  inputmode: "date" | "time" | "datetime-local"
-  min: string | null
-  max: string | null
-  default: string | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecSelect = {
-  values: Record<string, string>
-  name: string
-  description: string | null
-  warning: string | null
-  type: "select"
-  required: boolean
-  default: string | null
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecMultiselect = {
-  values: Record<string, string>
- 
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "multiselect"
-  minLength: number | null
-  maxLength: number | null
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  default: string[]
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecToggle = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "toggle"
-  default: boolean | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecUnion = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "union"
-  variants: Record<
-    string,
-    {
-      name: string
-      spec: InputSpec
-    }
-  >
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  required: boolean
-  default: string | null
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecFile = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "file"
-  extensions: string[]
-  required: boolean
-}
-export type ValueSpecObject = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "object"
-  spec: InputSpec
-}
-export type ListValueSpecType = "text" | "object"
-/** represents a spec for the values of a list */
-// prettier-ignore
-export type ListValueSpecOf<T extends ListValueSpecType> = 
-  T extends "text" ? ListValueSpecText :
-  T extends "object" ? ListValueSpecObject :
-  never
-/** represents a spec for a list */
-export type ValueSpecList = ValueSpecListOf<ListValueSpecType>
-export type ValueSpecListOf<T extends ListValueSpecType> = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "list"
-  spec: ListValueSpecOf<T>
-  minLength: number | null
-  maxLength: number | null
-  disabled: false | string
-  default:
-    | string[]
-    | DefaultString[]
-    | Record<string, unknown>[]
-    | readonly string[]
-    | readonly DefaultString[]
-    | readonly Record<string, unknown>[]
-}
-export type Pattern = {
-  regex: string
-  description: string
-}
-export type ListValueSpecText = {
-  type: "text"
-  patterns: Pattern[]
-  minLength: number | null
-  maxLength: number | null
-  masked: boolean
- 
-  generate: null | RandomString
-  inputmode: "text" | "email" | "tel" | "url"
-  placeholder: string | null
-}
- 
-export type ListValueSpecObject = {
-  type: "object"
-  /** this is a mapped type of the config object at this level, replacing the object's values with specs on those values */
-  spec: InputSpec
-  /** indicates whether duplicates can be permitted in the list */
-  uniqueBy: UniqueBy
-  /** this should be a handlebars template which can make use of the entire config which corresponds to 'spec' */
-  displayAs: string | null
-}
-export type UniqueBy =
-  | null
-  | string
-  | {
-      any: readonly UniqueBy[] | UniqueBy[]
-    }
-  | {
-      all: readonly UniqueBy[] | UniqueBy[]
-    }
-export type DefaultString = string | RandomString
-export type RandomString = {
-  charset: string
-  len: number
-}
-// sometimes the type checker needs just a little bit of help
-export function isValueSpecListOf<S extends ListValueSpecType>(
-  t: ValueSpec,
-  s: S,
-): t is ValueSpecListOf<S> & { spec: ListValueSpecOf<S> } {
-  return "spec" in t && t.spec.type === s
-}
-export const unionSelectKey = "unionSelectKey" as const
-export type UnionSelectKey = typeof unionSelectKey
- 
-export const unionValueKey = "unionValueKey" as const
-export type UnionValueKey = typeof unionValueKey
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/config/index.html b/sdk/lib/coverage/lcov-report/config/index.html deleted file mode 100644 index ba47b715a..000000000 --- a/sdk/lib/coverage/lcov-report/config/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for config - - - - - - - - - -
-
-

All files config

-
-
- 100% - Statements - 4/4 -
- -
- 100% - Branches - 2/2 -
- -
- 100% - Functions - 1/1 -
- -
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- configTypes.ts - -
-
-
-
-
100%4/4100%2/2100%1/1100%4/4
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/emverLite/index.html b/sdk/lib/coverage/lcov-report/emverLite/index.html deleted file mode 100644 index 07fb7a53a..000000000 --- a/sdk/lib/coverage/lcov-report/emverLite/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for emverLite - - - - - - - - - -
-
-

All files emverLite

-
-
- 96.99% - Statements - 129/133 -
- -
- 91.89% - Branches - 34/37 -
- -
- 97.56% - Functions - 40/41 -
- -
- 97.65% - Lines - 125/128 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- mod.ts - -
-
-
-
-
96.99%129/13391.89%34/3797.56%40/4197.65%125/128
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/emverLite/mod.ts.html b/sdk/lib/coverage/lcov-report/emverLite/mod.ts.html deleted file mode 100644 index a7c905b51..000000000 --- a/sdk/lib/coverage/lcov-report/emverLite/mod.ts.html +++ /dev/null @@ -1,1056 +0,0 @@ - - - - Code coverage report for emverLite/mod.ts - - - - - - - - - -
-
-

- All files / - emverLite mod.ts -

-
-
- 96.99% - Statements - 129/133 -
- -
- 91.89% - Branches - 34/37 -
- -
- 97.56% - Functions - 40/41 -
- -
- 97.65% - Lines - 125/128 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -3241x -  -1x -  -  -  -  -  -  -4x -4x -4x -  -  -  -  -  -  -  -1x -19x -  -  -  -  -  -  -  -1x -6x -1x -  -5x -5x -  -  -  -  -  -  -  -1x -5x -1x -  -4x -4x -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -  -  -  -  -  -124x -  -  -124x -  -  -  -  -  -  -149x -317x -149x -316x -3x -  -  -146x -  -  -150x -150x -  -  -  -  -  -  -4x -  -  -  -106x -220x -18x -  -202x -35x -  -  -167x -19x -  -  -34x -  -  -  -61x -23x -  -38x -74x -18x -  -  -20x -  -  -24x -  -  -9x -  -  -18x -  -  -  -  -  -  -  -  -6x -2x -4x -2x -  -2x -  -  -  -  -  -  -  -  -3x -  -1x -1x -1x -  -  -  -  -7x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -55x -19x -  -36x -36x -6x -  -33x -8x -  -29x -1x -12x -9x -  -  -28x -28x -3x -22x -  -25x -25x -4x -4x -  -4x -24x -24x -  -  -  -  -  -  -  -21x -  -1x -1x -6x -6x -  -  -  -2x -2x -9x -9x -  -  -  -  -18x -  -7x -7x -30x -30x -  -  -  -4x -4x -18x -18x -  -  -  -7x -7x -21x -21x -  -  -  -  -  -  -  -  -  -  -38x -38x -  -  -  -  -  -  -  -  -  -  -5x -5x -  -20x -8x -  -12x -12x -6x -  -  -6x -  -5x -  -  -  -  -  -  -  -4x -4x -  -17x -4x -  -13x -13x -4x -  -  -9x -  -4x -  -  -  -  -  -  -  -  -1x -1x -  -  - 
import * as matches from "ts-matches"
- 
-const starSub = /((\d+\.)*\d+)\.\*/
-// prettier-ignore
-export type ValidEmVer = string;
-// prettier-ignore
-export type ValidEmVerRange = string;
- 
-function incrementLastNumber(list: number[]) {
-  const newList = [...list]
-  newList[newList.length - 1]++
-  return newList
-}
-/**
- * Will take in a range, like `>1.2` or `<1.2.3.4` or `=1.2` or `1.*`
- * and return a checker, that has the check function for checking that a version is in the valid
- * @param range
- * @returns
- */
-export function rangeOf(range: string | Checker): Checker {
-  return Checker.parse(range)
-}
- 
-/**
- * Used to create a checker that will `and` all the ranges passed in
- * @param ranges
- * @returns
- */
-export function rangeAnd(...ranges: (string | Checker)[]): Checker {
-  if (ranges.length === 0) {
-    throw new Error("No ranges given")
-  }
-  const [firstCheck, ...rest] = ranges
-  return Checker.parse(firstCheck).and(...rest)
-}
- 
-/**
- * Used to create a checker that will `or` all the ranges passed in
- * @param ranges
- * @returns
- */
-export function rangeOr(...ranges: (string | Checker)[]): Checker {
-  if (ranges.length === 0) {
-    throw new Error("No ranges given")
-  }
-  const [firstCheck, ...rest] = ranges
-  return Checker.parse(firstCheck).or(...rest)
-}
- 
-/**
- * This will negate the checker, so given a checker that checks for >= 1.0.0, it will check for < 1.0.0
- * @param range
- * @returns
- */
-export function notRange(range: string | Checker): Checker {
-  return rangeOf(range).not()
-}
- 
-/**
- * EmVer is a set of versioning of any pattern like 1 or 1.2 or 1.2.3 or 1.2.3.4 or ..
- */
-export class EmVer {
-  /**
-   * Convert the range, should be 1.2.* or * into a emver
-   * Or an already made emver
-   * IsUnsafe
-   */
-  static from(range: string | EmVer): EmVer {
-    Iif (range instanceof EmVer) {
-      return range
-    }
-    return EmVer.parse(range)
-  }
-  /**
-   * Convert the range, should be 1.2.* or * into a emver
-   * IsUnsafe
-   */
-  static parse(rangeExtra: string): EmVer {
-    const [range, extra] = rangeExtra.split("-")
-    const values = range.split(".").map((x) => parseInt(x))
-    for (const value of values) {
-      if (isNaN(value)) {
-        throw new Error(`Couldn't parse range: ${range}`)
-      }
-    }
-    return new EmVer(values, extra)
-  }
-  private constructor(
-    public readonly values: number[],
-    readonly extra: string | null,
-  ) {}
- 
-  /**
-   * Used when we need a new emver that has the last number incremented, used in the 1.* like things
-   */
-  public withLastIncremented() {
-    return new EmVer(incrementLastNumber(this.values), null)
-  }
- 
-  public greaterThan(other: EmVer): boolean {
-    for (const i in this.values) {
-      if (other.values[i] == null) {
-        return true
-      }
-      if (this.values[i] > other.values[i]) {
-        return true
-      }
- 
-      if (this.values[i] < other.values[i]) {
-        return false
-      }
-    }
-    return false
-  }
- 
-  public equals(other: EmVer): boolean {
-    if (other.values.length !== this.values.length) {
-      return false
-    }
-    for (const i in this.values) {
-      if (this.values[i] !== other.values[i]) {
-        return false
-      }
-    }
-    return true
-  }
-  public greaterThanOrEqual(other: EmVer): boolean {
-    return this.greaterThan(other) || this.equals(other)
-  }
-  public lessThanOrEqual(other: EmVer): boolean {
-    return !this.greaterThan(other)
-  }
-  public lessThan(other: EmVer): boolean {
-    return !this.greaterThanOrEqual(other)
-  }
-  /**
-   * Return a enum string that describes (used for switching/iffs)
-   * to know comparison
-   * @param other
-   * @returns
-   */
-  public compare(other: EmVer) {
-    if (this.equals(other)) {
-      return "equal" as const
-    } else if (this.greaterThan(other)) {
-      return "greater" as const
-    } else {
-      return "less" as const
-    }
-  }
-  /**
-   * Used when sorting emver's in a list using the sort method
-   * @param other
-   * @returns
-   */
-  public compareForSort(other: EmVer) {
-    return matches
-      .matches(this.compare(other))
-      .when("equal", () => 0 as const)
-      .when("greater", () => 1 as const)
-      .when("less", () => -1 as const)
-      .unwrap()
-  }
- 
-  toString() {
-    return `${this.values.join(".")}${this.extra ? `-${this.extra}` : ""}` as ValidEmVer
-  }
-}
- 
-/**
- * A checker is a function that takes a version and returns true if the version matches the checker.
- * Used when we are doing range checking, like saying ">=1.0.0".check("1.2.3") will be true
- */
-export class Checker {
-  /**
-   * Will take in a range, like `>1.2` or `<1.2.3.4` or `=1.2` or `1.*`
-   * and return a checker, that has the check function for checking that a version is in the valid
-   * @param range
-   * @returns
-   */
-  static parse(range: string | Checker): Checker {
-    if (range instanceof Checker) {
-      return range
-    }
-    range = range.trim()
-    if (range.indexOf("||") !== -1) {
-      return rangeOr(...range.split("||").map((x) => Checker.parse(x)))
-    }
-    if (range.indexOf("&&") !== -1) {
-      return rangeAnd(...range.split("&&").map((x) => Checker.parse(x)))
-    }
-    if (range === "*") {
-      return new Checker((version) => {
-        EmVer.from(version)
-        return true
-      }, range)
-    }
-    Iif (range.startsWith("!!")) return Checker.parse(range.substring(2))
-    if (range.startsWith("!")) {
-      const tempValue = Checker.parse(range.substring(1))
-      return new Checker((x) => !tempValue.check(x), range)
-    }
-    const starSubMatches = starSub.exec(range)
-    if (starSubMatches != null) {
-      const emVarLower = EmVer.parse(starSubMatches[1])
-      const emVarUpper = emVarLower.withLastIncremented()
- 
-      return new Checker((version) => {
-        const v = EmVer.from(version)
-        return (
-          (v.greaterThan(emVarLower) || v.equals(emVarLower)) &&
-          !v.greaterThan(emVarUpper) &&
-          !v.equals(emVarUpper)
-        )
-      }, range)
-    }
- 
-    switch (range.substring(0, 2)) {
-      case ">=": {
-        const emVar = EmVer.parse(range.substring(2))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.greaterThanOrEqual(emVar)
-        }, range)
-      }
-      case "<=": {
-        const emVar = EmVer.parse(range.substring(2))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.lessThanOrEqual(emVar)
-        }, range)
-      }
-    }
- 
-    switch (range.substring(0, 1)) {
-      case ">": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.greaterThan(emVar)
-        }, range)
-      }
-      case "<": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.lessThan(emVar)
-        }, range)
-      }
-      case "=": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.equals(emVar)
-        }, `=${emVar.toString()}`)
-      }
-    }
-    throw new Error("Couldn't parse range: " + range)
-  }
-  constructor(
-    /**
-     * Check is the function that will be given a emver or unparsed emver and should give if it follows
-     * a pattern
-     */
-    public readonly check: (value: ValidEmVer | EmVer) => boolean,
-    private readonly _range: string,
-  ) {}
- 
-  get range() {
-    return this._range as ValidEmVerRange
-  }
- 
-  /**
-   * Used when we want the `and` condition with another checker
-   */
-  public and(...others: (Checker | string)[]): Checker {
-    const othersCheck = others.map(Checker.parse)
-    return new Checker(
-      (value) => {
-        if (!this.check(value)) {
-          return false
-        }
-        for (const other of othersCheck) {
-          if (!other.check(value)) {
-            return false
-          }
-        }
-        return true
-      },
-      othersCheck.map((x) => x._range).join(" && "),
-    )
-  }
- 
-  /**
-   * Used when we want the `or` condition with another checker
-   */
-  public or(...others: (Checker | string)[]): Checker {
-    const othersCheck = others.map(Checker.parse)
-    return new Checker(
-      (value) => {
-        if (this.check(value)) {
-          return true
-        }
-        for (const other of othersCheck) {
-          if (other.check(value)) {
-            return true
-          }
-        }
-        return false
-      },
-      othersCheck.map((x) => x._range).join(" || "),
-    )
-  }
- 
-  /**
-   * A useful example is making sure we don't match an exact version, like !=1.2.3
-   * @returns
-   */
-  public not(): Checker {
-    let newRange = `!${this._range}`
-    return Checker.parse(newRange)
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/favicon.png b/sdk/lib/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b811..000000000 Binary files a/sdk/lib/coverage/lcov-report/favicon.png and /dev/null differ diff --git a/sdk/lib/coverage/lcov-report/health/checkFns/checkPortListening.ts.html b/sdk/lib/coverage/lcov-report/health/checkFns/checkPortListening.ts.html deleted file mode 100644 index 8e415e773..000000000 --- a/sdk/lib/coverage/lcov-report/health/checkFns/checkPortListening.ts.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - Code coverage report for health/checkFns/checkPortListening.ts - - - - - - - - - - -
-
-

- All files / - health/checkFns checkPortListening.ts -

-
-
- 61.11% - Statements - 11/18 -
- -
- 0% - Branches - 0/7 -
- -
- 42.85% - Functions - 3/7 -
- -
- 61.11% - Lines - 11/18 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68  -1x -  -  -1x -1x -  -1x -1x -1x -2x -  -  -  -12x -  -8x -  -2x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../../types"
-import { stringFromStdErrOut } from "../../util/stringFromStdErrOut"
-import { CheckResult } from "./CheckResult"
- 
-import { promisify } from "node:util"
-import * as CP from "node:child_process"
- 
-const cpExec = promisify(CP.exec)
-const cpExecFile = promisify(CP.execFile)
-export function containsAddress(x: string, port: number) {
-  const readPorts = x
-    .split("\n")
-    .filter(Boolean)
-    .splice(1)
-    .map((x) => x.split(" ").filter(Boolean)[1]?.split(":")?.[1])
-    .filter(Boolean)
-    .map((x) => Number.parseInt(x, 16))
-    .filter(Number.isFinite)
-  return readPorts.indexOf(port) >= 0
-}
- 
-/**
- * This is used to check if a port is listening on the system.
- * Used during the health check fn or the check main fn.
- */
-export async function checkPortListening(
-  effects: Effects,
-  port: number,
-  options: {
-    errorMessage: string
-    successMessage: string
-    timeoutMessage?: string
-    timeout?: number
-  },
-): Promise<CheckResult> {
-  return Promise.race<CheckResult>([
-    Promise.resolve().then(async () => {
-      const hasAddress =
-        containsAddress(
-          await cpExec(`cat /proc/net/tcp`, {}).then(stringFromStdErrOut),
-          port,
-        ) ||
-        containsAddress(
-          await cpExec("cat /proc/net/udp", {}).then(stringFromStdErrOut),
-          port,
-        )
-      Iif (hasAddress) {
-        return { status: "success", message: options.successMessage }
-      }
-      return {
-        status: "failure",
-        message: options.errorMessage,
-      }
-    }),
-    new Promise((resolve) => {
-      setTimeout(
-        () =>
-          resolve({
-            status: "failure",
-            message:
-              options.timeoutMessage || `Timeout trying to check port ${port}`,
-          }),
-        options.timeout ?? 1_000,
-      )
-    }),
-  ])
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/health/checkFns/index.html b/sdk/lib/coverage/lcov-report/health/checkFns/index.html deleted file mode 100644 index 4257aec10..000000000 --- a/sdk/lib/coverage/lcov-report/health/checkFns/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for health/checkFns - - - - - - - - - -
-
-

All files health/checkFns

-
-
- 61.11% - Statements - 11/18 -
- -
- 0% - Branches - 0/7 -
- -
- 42.85% - Functions - 3/7 -
- -
- 61.11% - Lines - 11/18 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- checkPortListening.ts - -
-
-
-
-
61.11%11/180%0/742.85%3/761.11%11/18
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/index.html b/sdk/lib/coverage/lcov-report/index.html deleted file mode 100644 index 5ed8e073d..000000000 --- a/sdk/lib/coverage/lcov-report/index.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
-
- 48.29% - Statements - 1329/2752 -
- -
- 37.19% - Branches - 334/898 -
- -
- 30.54% - Functions - 212/694 -
- -
- 48.21% - Lines - 1256/2605 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- lib - -
-
-
-
-
40.27%58/1440%0/1111.76%10/8540.27%58/144
- lib/actions - -
-
-
-
-
10.71%3/280%0/20%0/1210.71%3/28
- lib/backup - -
-
-
-
-
8.79%8/910%0/110%0/279.09%8/88
- lib/config - -
-
-
-
-
46.15%12/2625%2/820%1/546.15%12/26
- lib/config/builder - -
-
-
-
-
84.61%99/11755.17%16/2978.26%54/6984.34%97/115
- lib/dependencies - -
-
-
-
-
9.67%9/931.78%1/566.25%2/3210%9/90
- lib/exver - -
-
-
-
-
71.73%713/99463.29%250/39571.65%91/12771.77%679/946
- lib/health - -
-
-
-
-
17.24%5/290%0/120%0/619.23%5/26
- lib/health/checkFns - -
-
-
-
-
53.06%26/490%0/1726.31%5/1950%22/44
- lib/inits - -
-
-
-
-
20.68%6/290%0/60%0/1120.68%6/29
- lib/interfaces - -
-
-
-
-
22.44%11/490%0/240%0/1322.22%10/45
- lib/mainFn - -
-
-
-
-
15.78%36/2280%0/380%0/7715.16%32/211
- lib/manifest - -
-
-
-
-
25%4/1665.51%19/2920%1/526.66%4/15
- lib/store - -
-
-
-
-
35.71%10/2820%1/510%1/1032%8/25
- lib/test - -
-
-
-
-
100%9/9100%0/0100%0/0100%9/9
- lib/trigger - -
-
-
-
-
30.61%15/490%0/540%4/1026.66%12/45
- lib/util - -
-
-
-
-
36.83%256/69512.2%26/21317.96%30/16736.29%233/642
- lib/version - -
-
-
-
-
62.82%49/7851.35%19/3768.42%13/1963.63%49/77
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/interfaces/Host.ts.html b/sdk/lib/coverage/lcov-report/interfaces/Host.ts.html deleted file mode 100644 index f5df4727d..000000000 --- a/sdk/lib/coverage/lcov-report/interfaces/Host.ts.html +++ /dev/null @@ -1,669 +0,0 @@ - - - - Code coverage report for interfaces/Host.ts - - - - - - - - - -
-
-

- All files / - interfaces Host.ts -

-
-
- 22.22% - Statements - 6/27 -
- -
- 0% - Branches - 0/18 -
- -
- 0% - Functions - 0/7 -
- -
- 24% - Lines - 6/25 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -1951x -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  - 
import { number, object, string } from "ts-matches"
-import { Effects } from "../types"
-import { Origin } from "./Origin"
-import { AddSslOptions, BindParams } from ".././osBindings"
-import { Security } from ".././osBindings"
-import { BindOptions } from ".././osBindings"
-import { AlpnInfo } from ".././osBindings"
- 
-export { AddSslOptions, Security, BindOptions }
- 
-export const knownProtocols = {
-  http: {
-    secure: null,
-    defaultPort: 80,
-    withSsl: "https",
-    alpn: { specified: ["http/1.1"] } as AlpnInfo,
-  },
-  https: {
-    secure: { ssl: true },
-    defaultPort: 443,
-  },
-  ws: {
-    secure: null,
-    defaultPort: 80,
-    withSsl: "wss",
-    alpn: { specified: ["http/1.1"] } as AlpnInfo,
-  },
-  wss: {
-    secure: { ssl: true },
-    defaultPort: 443,
-  },
-  ssh: {
-    secure: { ssl: false },
-    defaultPort: 22,
-  },
-  bitcoin: {
-    secure: { ssl: false },
-    defaultPort: 8333,
-  },
-  lightning: {
-    secure: { ssl: true },
-    defaultPort: 9735,
-  },
-  grpc: {
-    secure: { ssl: true },
-    defaultPort: 50051,
-  },
-  dns: {
-    secure: { ssl: false },
-    defaultPort: 53,
-  },
-} as const
- 
-export type Scheme = string | null
- 
-type KnownProtocols = typeof knownProtocols
-type ProtocolsWithSslVariants = {
-  [K in keyof KnownProtocols]: KnownProtocols[K] extends {
-    withSsl: string
-  }
-    ? K
-    : never
-}[keyof KnownProtocols]
-type NotProtocolsWithSslVariants = Exclude<
-  keyof KnownProtocols,
-  ProtocolsWithSslVariants
->
- 
-type BindOptionsByKnownProtocol =
-  | {
-      protocol: ProtocolsWithSslVariants
-      preferredExternalPort?: number
-      addSsl?: Partial<AddSslOptions>
-    }
-  | {
-      protocol: NotProtocolsWithSslVariants
-      preferredExternalPort?: number
-      addSsl?: AddSslOptions
-    }
-export type BindOptionsByProtocol = BindOptionsByKnownProtocol | BindOptions
- 
-export type HostKind = BindParams["kind"]
- 
-const hasStringProtocol = object({
-  protocol: string,
-}).test
- 
-export class Host {
-  constructor(
-    readonly options: {
-      effects: Effects
-      kind: HostKind
-      id: string
-    },
-  ) {}
- 
-  async bindPort(
-    internalPort: number,
-    options: BindOptionsByProtocol,
-  ): Promise<Origin<this>> {
-    if (hasStringProtocol(options)) {
-      return await this.bindPortForKnown(options, internalPort)
-    } else {
-      return await this.bindPortForUnknown(internalPort, options)
-    }
-  }
- 
-  private async bindPortForUnknown(
-    internalPort: number,
-    options: {
-      preferredExternalPort: number
-      addSsl: AddSslOptions | null
-      secure: { ssl: boolean } | null
-    },
-  ) {
-    const binderOptions = {
-      kind: this.options.kind,
-      id: this.options.id,
-      internalPort,
-      ...options,
-    }
-    await this.options.effects.bind(binderOptions)
- 
-    return new Origin(this, internalPort, null, null)
-  }
- 
-  private async bindPortForKnown(
-    options: BindOptionsByKnownProtocol,
-    internalPort: number,
-  ) {
-    const protoInfo = knownProtocols[options.protocol]
-    const preferredExternalPort =
-      options.preferredExternalPort ||
-      knownProtocols[options.protocol].defaultPort
-    const sslProto = this.getSslProto(options, protoInfo)
-    const addSsl =
-      sslProto && "alpn" in protoInfo
-        ? {
-            // addXForwardedHeaders: null,
-            preferredExternalPort: knownProtocols[sslProto].defaultPort,
-            scheme: sslProto,
-            alpn: protoInfo.alpn,
-            ...("addSsl" in options ? options.addSsl : null),
-          }
-        : null
- 
-    const secure: Security | null = !protoInfo.secure ? null : { ssl: false }
- 
-    await this.options.effects.bind({
-      kind: this.options.kind,
-      id: this.options.id,
-      internalPort,
-      preferredExternalPort,
-      addSsl,
-      secure,
-    })
- 
-    return new Origin(this, internalPort, options.protocol, sslProto)
-  }
- 
-  private getSslProto(
-    options: BindOptionsByKnownProtocol,
-    protoInfo: KnownProtocols[keyof KnownProtocols],
-  ) {
-    Iif (inObject("noAddSsl", options) && options.noAddSsl) return null
-    Iif ("withSsl" in protoInfo && protoInfo.withSsl) return protoInfo.withSsl
-    return null
-  }
-}
- 
-function inObject<Key extends string>(
-  key: Key,
-  obj: any,
-): obj is { [K in Key]: unknown } {
-  return key in obj
-}
- 
-// export class StaticHost extends Host {
-//   constructor(options: { effects: Effects; id: string }) {
-//     super({ ...options, kind: "static" })
-//   }
-// }
- 
-// export class SingleHost extends Host {
-//   constructor(options: { effects: Effects; id: string }) {
-//     super({ ...options, kind: "single" })
-//   }
-// }
- 
-export class MultiHost extends Host {
-  constructor(options: { effects: Effects; id: string }) {
-    super({ ...options, kind: "multi" })
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/interfaces/Origin.ts.html b/sdk/lib/coverage/lcov-report/interfaces/Origin.ts.html deleted file mode 100644 index 59ed21c08..000000000 --- a/sdk/lib/coverage/lcov-report/interfaces/Origin.ts.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - Code coverage report for interfaces/Origin.ts - - - - - - - - - -
-
-

- All files / - interfaces Origin.ts -

-
-
- 6.25% - Statements - 1/16 -
- -
- 0% - Branches - 0/6 -
- -
- 0% - Functions - 0/4 -
- -
- 6.25% - Lines - 1/16 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { AddressInfo } from "../types"
-import { AddressReceipt } from "./AddressReceipt"
-import { Host, BindOptions, Scheme } from "./Host"
-import { ServiceInterfaceBuilder } from "./ServiceInterfaceBuilder"
- 
-export class Origin<T extends Host> {
-  constructor(
-    readonly host: T,
-    readonly internalPort: number,
-    readonly scheme: string | null,
-    readonly sslScheme: string | null,
-  ) {}
- 
-  build({ username, path, search, schemeOverride }: BuildOptions): AddressInfo {
-    const qpEntries = Object.entries(search)
-      .map(
-        ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`,
-      )
-      .join("&")
- 
-    const qp = qpEntries.length ? `?${qpEntries}` : ""
- 
-    return {
-      hostId: this.host.options.id,
-      internalPort: this.internalPort,
-      scheme: schemeOverride ? schemeOverride.noSsl : this.scheme,
-      sslScheme: schemeOverride ? schemeOverride.ssl : this.sslScheme,
-      suffix: `${path}${qp}`,
-      username,
-    }
-  }
- 
-  /**
-   * A function to register a group of origins (<PROTOCOL> :// <HOSTNAME> : <PORT>) with StartOS
-   *
-   * The returned addressReceipt serves as proof that the addresses were registered
-   *
-   * @param addressInfo
-   * @returns
-   */
-  async export(
-    serviceInterfaces: ServiceInterfaceBuilder[],
-  ): Promise<AddressInfo[] & AddressReceipt> {
-    const addressesInfo = []
-    for (let serviceInterface of serviceInterfaces) {
-      const {
-        name,
-        description,
-        hasPrimary,
-        disabled,
-        id,
-        type,
-        username,
-        path,
-        search,
-        schemeOverride,
-        masked,
-      } = serviceInterface.options
- 
-      const addressInfo = this.build({
-        username,
-        path,
-        search,
-        schemeOverride,
-      })
- 
-      await serviceInterface.options.effects.exportServiceInterface({
-        id,
-        name,
-        description,
-        hasPrimary,
-        disabled,
-        addressInfo,
-        type,
-        masked,
-      })
- 
-      addressesInfo.push(addressInfo)
-    }
- 
-    return addressesInfo as AddressInfo[] & AddressReceipt
-  }
-}
- 
-type BuildOptions = {
-  schemeOverride: { ssl: Scheme; noSsl: Scheme } | null
-  username: string | null
-  path: string
-  search: Record<string, string>
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/interfaces/index.html b/sdk/lib/coverage/lcov-report/interfaces/index.html deleted file mode 100644 index ba1051eec..000000000 --- a/sdk/lib/coverage/lcov-report/interfaces/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for interfaces - - - - - - - - - -
-
-

All files interfaces

-
-
- 16.27% - Statements - 7/43 -
- -
- 0% - Branches - 0/24 -
- -
- 0% - Functions - 0/11 -
- -
- 17.07% - Lines - 7/41 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- Host.ts - -
-
-
-
-
22.22%6/270%0/180%0/724%6/25
- Origin.ts - -
-
-
-
-
6.25%1/160%0/60%0/46.25%1/16
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/Dependency.ts.html b/sdk/lib/coverage/lcov-report/lib/Dependency.ts.html deleted file mode 100644 index ddcb676fd..000000000 --- a/sdk/lib/coverage/lcov-report/lib/Dependency.ts.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Code coverage report for lib/Dependency.ts - - - - - - - - - -
-
-

- All files / - lib Dependency.ts -

-
-
- 50% - Statements - 1/2 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/1 -
- -
- 50% - Lines - 1/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { VersionRange } from "./exver"
- 
-export class Dependency {
-  constructor(
-    readonly data:
-      | {
-          type: "running"
-          versionRange: VersionRange
-          registryUrl: string
-          healthChecks: string[]
-        }
-      | {
-          type: "exists"
-          versionRange: VersionRange
-          registryUrl: string
-        },
-  ) {}
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/StartSdk.ts.html b/sdk/lib/coverage/lcov-report/lib/StartSdk.ts.html deleted file mode 100644 index 1533d8385..000000000 --- a/sdk/lib/coverage/lcov-report/lib/StartSdk.ts.html +++ /dev/null @@ -1,2499 +0,0 @@ - - - - Code coverage report for lib/StartSdk.ts - - - - - - - - - -
-
-

- All files / - lib StartSdk.ts -

-
-
- 40.14% - Statements - 57/142 -
- -
- 0% - Branches - 0/11 -
- -
- 11.9% - Functions - 10/84 -
- -
- 40.14% - Lines - 57/142 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -8055x -5x -  -  -  -  -  -  -  -  -  -5x -5x -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -5x -  -  -  -  -5x -  -  -  -  -5x -  -5x -5x -5x -5x -5x -  -  -  -5x -5x -5x -5x -5x -5x -  -5x -  -5x -5x -  -  -  -  -5x -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -18x -  -6x -  -  -6x -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -32x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { RequiredDefault, Value } from "./config/builder/value"
-import { Config, ExtractConfigType, LazyBuild } from "./config/builder/config"
-import {
-  DefaultString,
-  ListValueSpecText,
-  Pattern,
-  RandomString,
-  UniqueBy,
-  ValueSpecDatetime,
-  ValueSpecText,
-} from "./config/configTypes"
-import { Variants } from "./config/builder/variants"
-import { CreatedAction, createAction } from "./actions/createAction"
-import {
-  ActionMetadata,
-  Effects,
-  ActionResult,
-  BackupOptions,
-  DeepPartial,
-  MaybePromise,
-  ServiceInterfaceId,
-  PackageId,
-} from "./types"
-import * as patterns from "./util/patterns"
-import { DependencyConfig, Update } from "./dependencies/DependencyConfig"
-import { BackupSet, Backups } from "./backup/Backups"
-import { smtpConfig } from "./config/configConstants"
-import { Daemons } from "./mainFn/Daemons"
-import { healthCheck, HealthCheckParams } from "./health/HealthCheck"
-import { checkPortListening } from "./health/checkFns/checkPortListening"
-import { checkWebUrl, runHealthScript } from "./health/checkFns"
-import { List } from "./config/builder/list"
-import { Install, InstallFn } from "./inits/setupInstall"
-import { setupActions } from "./actions/setupActions"
-import { setupDependencyConfig } from "./dependencies/setupDependencyConfig"
-import { SetupBackupsParams, setupBackups } from "./backup/setupBackups"
-import { setupInit } from "./inits/setupInit"
-import { Uninstall, UninstallFn, setupUninstall } from "./inits/setupUninstall"
-import { setupMain } from "./mainFn"
-import { defaultTrigger } from "./trigger/defaultTrigger"
-import { changeOnFirstSuccess, cooldownTrigger } from "./trigger"
-import setupConfig, {
-  DependenciesReceipt,
-  Read,
-  Save,
-} from "./config/setupConfig"
-import {
-  InterfacesReceipt,
-  SetInterfaces,
-  setupInterfaces,
-} from "./interfaces/setupInterfaces"
-import { successFailure } from "./trigger/successFailure"
-import { HealthReceipt } from "./health/HealthReceipt"
-import { MultiHost, Scheme } from "./interfaces/Host"
-import { ServiceInterfaceBuilder } from "./interfaces/ServiceInterfaceBuilder"
-import { GetSystemSmtp } from "./util/GetSystemSmtp"
-import nullIfEmpty from "./util/nullIfEmpty"
-import {
-  GetServiceInterface,
-  getServiceInterface,
-} from "./util/getServiceInterface"
-import { getServiceInterfaces } from "./util/getServiceInterfaces"
-import { getStore } from "./store/getStore"
-import { CommandOptions, MountOptions, SubContainer } from "./util/SubContainer"
-import { splitCommand } from "./util/splitCommand"
-import { Mounts } from "./mainFn/Mounts"
-import { Dependency } from "./Dependency"
-import * as T from "./types"
-import { testTypeVersion, ValidateExVer } from "./exver"
-import { ExposedStorePaths } from "./store/setupExposeStore"
-import { PathBuilder, extractJsonPath, pathBuilder } from "./store/PathBuilder"
-import {
-  CheckDependencies,
-  checkDependencies,
-} from "./dependencies/dependencies"
-import { health } from "."
-import { GetSslCertificate } from "./util/GetSslCertificate"
-import { VersionGraph } from "./version"
- 
-export const SDKVersion = testTypeVersion("0.3.6")
- 
-// prettier-ignore
-type AnyNeverCond<T extends any[], Then, Else> = 
-    T extends [] ? Else :
-    T extends [never, ...Array<any>] ? Then :
-    T extends [any, ...infer U] ? AnyNeverCond<U,Then, Else> :
-    never
- 
-export type ServiceInterfaceType = "ui" | "p2p" | "api"
-export type MainEffects = Effects & {
-  _type: "main"
-  clearCallbacks: () => Promise<void>
-}
-export type Signals = NodeJS.Signals
-export const SIGTERM: Signals = "SIGTERM"
-export const SIGKILL: Signals = "SIGKILL"
-export const NO_TIMEOUT = -1
- 
-function removeCallbackTypes<E extends Effects>(effects: E) {
-  return <T extends object>(t: T) => {
-    if ("_type" in effects && effects._type === "main") {
-      return t as E extends MainEffects ? T : Omit<T, "const" | "watch">
-    } else {
-      Iif ("const" in t) {
-        delete t.const
-      }
-      Iif ("watch" in t) {
-        delete t.watch
-      }
-      return t as E extends MainEffects ? T : Omit<T, "const" | "watch">
-    }
-  }
-}
- 
-export class StartSdk<Manifest extends T.Manifest, Store> {
-  private constructor(readonly manifest: Manifest) {}
-  static of() {
-    return new StartSdk<never, never>(null as never)
-  }
-  withManifest<Manifest extends T.Manifest = never>(manifest: Manifest) {
-    return new StartSdk<Manifest, Store>(manifest)
-  }
-  withStore<Store extends Record<string, any>>() {
-    return new StartSdk<Manifest, Store>(this.manifest)
-  }
- 
-  build(isReady: AnyNeverCond<[Manifest, Store], "Build not ready", true>) {
-    type DependencyType = {
-      [K in keyof {
-        [K in keyof Manifest["dependencies"]]: Manifest["dependencies"][K]["optional"] extends false
-          ? K
-          : never
-      }]: Dependency
-    } & {
-      [K in keyof {
-        [K in keyof Manifest["dependencies"]]: Manifest["dependencies"][K]["optional"] extends true
-          ? K
-          : never
-      }]?: Dependency
-    }
- 
-    type NestedEffects = "subcontainer" | "store"
-    type InterfaceEffects =
-      | "getServiceInterface"
-      | "listServiceInterfaces"
-      | "exportServiceInterface"
-      | "clearServiceInterfaces"
-      | "bind"
-      | "getHostInfo"
-      | "getPrimaryUrl"
-    type MainUsedEffects = "setMainStatus" | "setHealth"
-    type AlreadyExposed = "getSslCertificate" | "getSystemSmtp"
- 
-    // prettier-ignore
-    type StartSdkEffectWrapper = {
-      [K in keyof Omit<Effects, NestedEffects | InterfaceEffects | MainUsedEffects| AlreadyExposed>]: (effects: Effects, ...args: Parameters<Effects[K]>) => ReturnType<Effects[K]>
-    }
-    const startSdkEffectWrapper: StartSdkEffectWrapper = {
-      executeAction: (effects, ...args) => effects.executeAction(...args),
-      exportAction: (effects, ...args) => effects.exportAction(...args),
-      clearActions: (effects, ...args) => effects.clearActions(...args),
-      getConfigured: (effects, ...args) => effects.getConfigured(...args),
-      setConfigured: (effects, ...args) => effects.setConfigured(...args),
-      restart: (effects, ...args) => effects.restart(...args),
-      setDependencies: (effects, ...args) => effects.setDependencies(...args),
-      checkDependencies: (effects, ...args) =>
-        effects.checkDependencies(...args),
-      mount: (effects, ...args) => effects.mount(...args),
-      getInstalledPackages: (effects, ...args) =>
-        effects.getInstalledPackages(...args),
-      exposeForDependents: (effects, ...args) =>
-        effects.exposeForDependents(...args),
-      getServicePortForward: (effects, ...args) =>
-        effects.getServicePortForward(...args),
-      clearBindings: (effects, ...args) => effects.clearBindings(...args),
-      getContainerIp: (effects, ...args) => effects.getContainerIp(...args),
-      getSslKey: (effects, ...args) => effects.getSslKey(...args),
-      setDataVersion: (effects, ...args) => effects.setDataVersion(...args),
-      getDataVersion: (effects, ...args) => effects.getDataVersion(...args),
-      shutdown: (effects, ...args) => effects.shutdown(...args),
-      getDependencies: (effects, ...args) => effects.getDependencies(...args),
-    }
- 
-    return {
-      ...startSdkEffectWrapper,
- 
-      checkDependencies: checkDependencies as <
-        DependencyId extends keyof Manifest["dependencies"] &
-          PackageId = keyof Manifest["dependencies"] & PackageId,
-      >(
-        effects: Effects,
-        packageIds?: DependencyId[],
-      ) => Promise<CheckDependencies<DependencyId>>,
-      serviceInterface: {
-        getOwn: <E extends Effects>(effects: E, id: ServiceInterfaceId) =>
-          removeCallbackTypes<E>(effects)(
-            getServiceInterface(effects, {
-              id,
-            }),
-          ),
-        get: <E extends Effects>(
-          effects: E,
-          opts: { id: ServiceInterfaceId; packageId: PackageId },
-        ) =>
-          removeCallbackTypes<E>(effects)(getServiceInterface(effects, opts)),
-        getAllOwn: <E extends Effects>(effects: E) =>
-          removeCallbackTypes<E>(effects)(getServiceInterfaces(effects, {})),
-        getAll: <E extends Effects>(
-          effects: E,
-          opts: { packageId: PackageId },
-        ) =>
-          removeCallbackTypes<E>(effects)(getServiceInterfaces(effects, opts)),
-      },
- 
-      store: {
-        get: <E extends Effects, StoreValue = unknown>(
-          effects: E,
-          packageId: string,
-          path: PathBuilder<Store, StoreValue>,
-        ) =>
-          removeCallbackTypes<E>(effects)(
-            getStore<Store, StoreValue>(effects, path, {
-              packageId,
-            }),
-          ),
-        getOwn: <E extends Effects, StoreValue = unknown>(
-          effects: E,
-          path: PathBuilder<Store, StoreValue>,
-        ) =>
-          removeCallbackTypes<E>(effects)(
-            getStore<Store, StoreValue>(effects, path),
-          ),
-        setOwn: <E extends Effects, Path extends PathBuilder<Store, unknown>>(
-          effects: E,
-          path: Path,
-          value: Path extends PathBuilder<Store, infer Value> ? Value : never,
-        ) =>
-          effects.store.set<Store>({
-            value,
-            path: extractJsonPath(path),
-          }),
-      },
- 
-      host: {
-        // static: (effects: Effects, id: string) =>
-        //   new StaticHost({ id, effects }),
-        // single: (effects: Effects, id: string) =>
-        //   new SingleHost({ id, effects }),
-        multi: (effects: Effects, id: string) => new MultiHost({ id, effects }),
-      },
-      nullIfEmpty,
-      runCommand: async <A extends string>(
-        effects: Effects,
-        image: {
-          id: keyof Manifest["images"] & T.ImageId
-          sharedRun?: boolean
-        },
-        command: T.CommandType,
-        options: CommandOptions & {
-          mounts?: { path: string; options: MountOptions }[]
-        },
-      ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> => {
-        return runCommand<Manifest>(effects, image, command, options)
-      },
- 
-      createAction: <
-        ConfigType extends
-          | Record<string, any>
-          | Config<any, any>
-          | Config<any, never>,
-        Type extends Record<string, any> = ExtractConfigType<ConfigType>,
-      >(
-        id: string,
-        metaData: Omit<ActionMetadata, "input"> & {
-          input: Config<Type, Store> | Config<Type, never>
-        },
-        fn: (options: {
-          effects: Effects
-          input: Type
-        }) => Promise<ActionResult>,
-      ) => {
-        const { input, ...rest } = metaData
-        return createAction<Manifest, Store, ConfigType, Type>(
-          id,
-          rest,
-          fn,
-          input,
-        )
-      },
-      configConstants: { smtpConfig },
-      createInterface: (
-        effects: Effects,
-        options: {
-          name: string
-          id: string
-          description: string
-          hasPrimary: boolean
-          type: ServiceInterfaceType
-          username: null | string
-          path: string
-          search: Record<string, string>
-          schemeOverride: { ssl: Scheme; noSsl: Scheme } | null
-          masked: boolean
-        },
-      ) => new ServiceInterfaceBuilder({ ...options, effects }),
-      getSystemSmtp: <E extends Effects>(effects: E) =>
-        removeCallbackTypes<E>(effects)(new GetSystemSmtp(effects)),
- 
-      getSslCerificate: <E extends Effects>(
-        effects: E,
-        hostnames: string[],
-        algorithm?: T.Algorithm,
-      ) =>
-        removeCallbackTypes<E>(effects)(
-          new GetSslCertificate(effects, hostnames, algorithm),
-        ),
- 
-      createDynamicAction: <
-        ConfigType extends
-          | Record<string, any>
-          | Config<any, any>
-          | Config<any, never>,
-        Type extends Record<string, any> = ExtractConfigType<ConfigType>,
-      >(
-        id: string,
-        metaData: (options: {
-          effects: Effects
-        }) => MaybePromise<Omit<ActionMetadata, "input">>,
-        fn: (options: {
-          effects: Effects
-          input: Type
-        }) => Promise<ActionResult>,
-        input: Config<Type, Store> | Config<Type, never>,
-      ) => {
-        return createAction<Manifest, Store, ConfigType, Type>(
-          id,
-          metaData,
-          fn,
-          input,
-        )
-      },
-      HealthCheck: {
-        of(o: HealthCheckParams) {
-          return healthCheck(o)
-        },
-      },
-      Dependency: {
-        of(data: Dependency["data"]) {
-          return new Dependency({ ...data })
-        },
-      },
-      healthCheck: {
-        checkPortListening,
-        checkWebUrl,
-        runHealthScript,
-      },
-      patterns,
-      setupActions: (...createdActions: CreatedAction<any, any, any>[]) =>
-        setupActions<Manifest, Store>(...createdActions),
-      setupBackups: (...args: SetupBackupsParams<Manifest>) =>
-        setupBackups<Manifest>(this.manifest, ...args),
-      setupConfig: <
-        ConfigType extends Config<any, Store> | Config<any, never>,
-        Type extends Record<string, any> = ExtractConfigType<ConfigType>,
-      >(
-        spec: ConfigType,
-        write: Save<Type>,
-        read: Read<Manifest, Store, Type>,
-      ) => setupConfig<Store, ConfigType, Manifest, Type>(spec, write, read),
-      setupConfigRead: <
-        ConfigSpec extends
-          | Config<Record<string, any>, any>
-          | Config<Record<string, never>, never>,
-      >(
-        _configSpec: ConfigSpec,
-        fn: Read<Manifest, Store, ConfigSpec>,
-      ) => fn,
-      setupConfigSave: <
-        ConfigSpec extends
-          | Config<Record<string, any>, any>
-          | Config<Record<string, never>, never>,
-      >(
-        _configSpec: ConfigSpec,
-        fn: Save<ConfigSpec>,
-      ) => fn,
-      setupDependencyConfig: <Input extends Record<string, any>>(
-        config: Config<Input, Store> | Config<Input, never>,
-        autoConfigs: {
-          [K in keyof Manifest["dependencies"]]: DependencyConfig<
-            Manifest,
-            Store,
-            Input,
-            any
-          > | null
-        },
-      ) => setupDependencyConfig<Store, Input, Manifest>(config, autoConfigs),
-      setupDependencies: <Input extends Record<string, any>>(
-        fn: (options: {
-          effects: Effects
-          input: Input | null
-        }) => Promise<DependencyType>,
-      ) => {
-        return async (options: { effects: Effects; input: Input }) => {
-          const dependencyType = await fn(options)
-          return await options.effects.setDependencies({
-            dependencies: Object.entries(dependencyType).map(
-              ([
-                id,
-                {
-                  data: { versionRange, ...x },
-                },
-              ]) => ({
-                id,
-                ...x,
-                ...(x.type === "running"
-                  ? {
-                      kind: "running",
-                      healthChecks: x.healthChecks,
-                    }
-                  : {
-                      kind: "exists",
-                    }),
-                versionRange: versionRange.toString(),
-              }),
-            ),
-          })
-        }
-      },
-      setupInit: (
-        versions: VersionGraph<Manifest["version"]>,
-        install: Install<Manifest, Store>,
-        uninstall: Uninstall<Manifest, Store>,
-        setInterfaces: SetInterfaces<Manifest, Store, any, any>,
-        setDependencies: (options: {
-          effects: Effects
-          input: any
-        }) => Promise<DependenciesReceipt>,
-        exposedStore: ExposedStorePaths,
-      ) =>
-        setupInit<Manifest, Store>(
-          versions,
-          install,
-          uninstall,
-          setInterfaces,
-          setDependencies,
-          exposedStore,
-        ),
-      setupInstall: (fn: InstallFn<Manifest, Store>) => Install.of(fn),
-      setupInterfaces: <
-        ConfigInput extends Record<string, any>,
-        Output extends InterfacesReceipt,
-      >(
-        config: Config<ConfigInput, Store>,
-        fn: SetInterfaces<Manifest, Store, ConfigInput, Output>,
-      ) => setupInterfaces(config, fn),
-      setupMain: (
-        fn: (o: {
-          effects: MainEffects
-          started(onTerm: () => PromiseLike<void>): PromiseLike<void>
-        }) => Promise<Daemons<Manifest, any>>,
-      ) => setupMain<Manifest, Store>(fn),
-      setupProperties:
-        (
-          fn: (options: { effects: Effects }) => Promise<T.SdkPropertiesReturn>,
-        ): T.ExpectedExports.properties =>
-        (options) =>
-          fn(options).then(nullifyProperties),
-      setupUninstall: (fn: UninstallFn<Manifest, Store>) =>
-        setupUninstall<Manifest, Store>(fn),
-      trigger: {
-        defaultTrigger,
-        cooldownTrigger,
-        changeOnFirstSuccess,
-        successFailure,
-      },
-      Mounts: {
-        of() {
-          return Mounts.of<Manifest>()
-        },
-      },
-      Backups: {
-        volumes: (
-          ...volumeNames: Array<Manifest["volumes"][number] & string>
-        ) => Backups.volumes<Manifest>(...volumeNames),
-        addSets: (
-          ...options: BackupSet<Manifest["volumes"][number] & string>[]
-        ) => Backups.addSets<Manifest>(...options),
-        withOptions: (options?: Partial<BackupOptions>) =>
-          Backups.with_options<Manifest>(options),
-      },
-      Config: {
-        of: <
-          Spec extends Record<string, Value<any, Store> | Value<any, never>>,
-        >(
-          spec: Spec,
-        ) => Config.of<Spec, Store>(spec),
-      },
-      Daemons: {
-        of(config: {
-          effects: Effects
-          started: (onTerm: () => PromiseLike<void>) => PromiseLike<void>
-          healthReceipts: HealthReceipt[]
-        }) {
-          return Daemons.of<Manifest>(config)
-        },
-      },
-      DependencyConfig: {
-        of<
-          LocalConfig extends Record<string, any>,
-          RemoteConfig extends Record<string, any>,
-        >({
-          localConfigSpec,
-          remoteConfigSpec,
-          dependencyConfig,
-          update,
-        }: {
-          localConfigSpec:
-            | Config<LocalConfig, Store>
-            | Config<LocalConfig, never>
-          remoteConfigSpec:
-            | Config<RemoteConfig, any>
-            | Config<RemoteConfig, never>
-          dependencyConfig: (options: {
-            effects: Effects
-            localConfig: LocalConfig
-          }) => Promise<void | DeepPartial<RemoteConfig>>
-          update?: Update<void | DeepPartial<RemoteConfig>, RemoteConfig>
-        }) {
-          return new DependencyConfig<
-            Manifest,
-            Store,
-            LocalConfig,
-            RemoteConfig
-          >(dependencyConfig, update)
-        },
-      },
-      List: {
-        text: List.text,
-        obj: <Type extends Record<string, any>>(
-          a: {
-            name: string
-            description?: string | null
-            warning?: string | null
-            /** Default [] */
-            default?: []
-            minLength?: number | null
-            maxLength?: number | null
-          },
-          aSpec: {
-            spec: Config<Type, Store>
-            displayAs?: null | string
-            uniqueBy?: null | UniqueBy
-          },
-        ) => List.obj<Type, Store>(a, aSpec),
-        dynamicText: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              /** Default = [] */
-              default?: string[]
-              minLength?: number | null
-              maxLength?: number | null
-              disabled?: false | string
-              generate?: null | RandomString
-              spec: {
-                /** Default = false */
-                masked?: boolean
-                placeholder?: string | null
-                minLength?: number | null
-                maxLength?: number | null
-                patterns: Pattern[]
-                /** Default = "text" */
-                inputmode?: ListValueSpecText["inputmode"]
-              }
-            }
-          >,
-        ) => List.dynamicText<Store>(getA),
-      },
-      StorePath: pathBuilder<Store>(),
-      Value: {
-        toggle: Value.toggle,
-        text: Value.text,
-        textarea: Value.textarea,
-        number: Value.number,
-        color: Value.color,
-        datetime: Value.datetime,
-        select: Value.select,
-        multiselect: Value.multiselect,
-        object: Value.object,
-        union: Value.union,
-        list: Value.list,
-        dynamicToggle: (
-          a: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              default: boolean
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicToggle<Store>(a),
-        dynamicText: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: RequiredDefault<DefaultString>
- 
-              /** Default = false */
-              masked?: boolean
-              placeholder?: string | null
-              minLength?: number | null
-              maxLength?: number | null
-              patterns?: Pattern[]
-              /** Default = 'text' */
-              inputmode?: ValueSpecText["inputmode"]
-              generate?: null | RandomString
-            }
-          >,
-        ) => Value.dynamicText<Store>(getA),
-        dynamicTextarea: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: boolean
-              minLength?: number | null
-              maxLength?: number | null
-              placeholder?: string | null
-              disabled?: false | string
-              generate?: null | RandomString
-            }
-          >,
-        ) => Value.dynamicTextarea<Store>(getA),
-        dynamicNumber: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: RequiredDefault<number>
-              min?: number | null
-              max?: number | null
-              /** Default = '1' */
-              step?: number | null
-              integer: boolean
-              units?: string | null
-              placeholder?: string | null
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicNumber<Store>(getA),
-        dynamicColor: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: RequiredDefault<string>
- 
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicColor<Store>(getA),
-        dynamicDatetime: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: RequiredDefault<string>
-              /** Default = 'datetime-local' */
-              inputmode?: ValueSpecDatetime["inputmode"]
-              min?: string | null
-              max?: string | null
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicDatetime<Store>(getA),
-        dynamicSelect: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: RequiredDefault<string>
-              values: Record<string, string>
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicSelect<Store>(getA),
-        dynamicMultiselect: (
-          getA: LazyBuild<
-            Store,
-            {
-              name: string
-              description?: string | null
-              warning?: string | null
-              default: string[]
-              values: Record<string, string>
-              minLength?: number | null
-              maxLength?: number | null
-              disabled?: false | string
-            }
-          >,
-        ) => Value.dynamicMultiselect<Store>(getA),
-        filteredUnion: <
-          Required extends RequiredDefault<string>,
-          Type extends Record<string, any>,
-        >(
-          getDisabledFn: LazyBuild<Store, string[]>,
-          a: {
-            name: string
-            description?: string | null
-            warning?: string | null
-            required: Required
-          },
-          aVariants: Variants<Type, Store> | Variants<Type, never>,
-        ) =>
-          Value.filteredUnion<Required, Type, Store>(
-            getDisabledFn,
-            a,
-            aVariants,
-          ),
- 
-        dynamicUnion: <
-          Required extends RequiredDefault<string>,
-          Type extends Record<string, any>,
-        >(
-          getA: LazyBuild<
-            Store,
-            {
-              disabled: string[] | false | string
-              name: string
-              description?: string | null
-              warning?: string | null
-              required: Required
-            }
-          >,
-          aVariants: Variants<Type, Store> | Variants<Type, never>,
-        ) => Value.dynamicUnion<Required, Type, Store>(getA, aVariants),
-      },
-      Variants: {
-        of: <
-          VariantValues extends {
-            [K in string]: {
-              name: string
-              spec: Config<any, Store>
-            }
-          },
-        >(
-          a: VariantValues,
-        ) => Variants.of<VariantValues, Store>(a),
-      },
-    }
-  }
-}
- 
-export async function runCommand<Manifest extends T.Manifest>(
-  effects: Effects,
-  image: { id: keyof Manifest["images"] & T.ImageId; sharedRun?: boolean },
-  command: string | [string, ...string[]],
-  options: CommandOptions & {
-    mounts?: { path: string; options: MountOptions }[]
-  },
-): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> {
-  const commands = splitCommand(command)
-  return SubContainer.with(
-    effects,
-    image,
-    options.mounts || [],
-    (subcontainer) => subcontainer.exec(commands),
-  )
-}
-function nullifyProperties(value: T.SdkPropertiesReturn): T.PropertiesReturn {
-  return Object.fromEntries(
-    Object.entries(value).map(([k, v]) => [k, nullifyProperties_(v)]),
-  )
-}
-function nullifyProperties_(value: T.SdkPropertiesValue): T.PropertiesValue {
-  Iif (value.type === "string") {
-    return { description: null, copyable: null, qr: null, ...value }
-  }
-  return {
-    description: null,
-    ...value,
-    value: Object.fromEntries(
-      Object.entries(value.value).map(([k, v]) => [k, nullifyProperties_(v)]),
-    ),
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/actions/createAction.ts.html b/sdk/lib/coverage/lcov-report/lib/actions/createAction.ts.html deleted file mode 100644 index aea95ad78..000000000 --- a/sdk/lib/coverage/lcov-report/lib/actions/createAction.ts.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - Code coverage report for lib/actions/createAction.ts - - - - - - - - - -
-
-

- All files / - lib/actions createAction.ts -

-
-
- 11.76% - Statements - 2/17 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/7 -
- -
- 11.76% - Lines - 2/17 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x - 
import * as T from "../types"
-import { Config, ExtractConfigType } from "../config/builder/config"
- 
-import { ActionMetadata, ActionResult, Effects, ExportedAction } from "../types"
- 
-export type MaybeFn<Manifest extends T.Manifest, Store, Value> =
-  | Value
-  | ((options: { effects: Effects }) => Promise<Value> | Value)
-export class CreatedAction<
-  Manifest extends T.Manifest,
-  Store,
-  ConfigType extends
-    | Record<string, any>
-    | Config<any, Store>
-    | Config<any, never>,
-  Type extends Record<string, any> = ExtractConfigType<ConfigType>,
-> {
-  private constructor(
-    public readonly id: string,
-    public readonly myMetadata: MaybeFn<
-      Manifest,
-      Store,
-      Omit<ActionMetadata, "input">
-    >,
-    readonly fn: (options: {
-      effects: Effects
-      input: Type
-    }) => Promise<ActionResult>,
-    readonly input: Config<Type, Store>,
-    public validator = input.validator,
-  ) {}
- 
-  static of<
-    Manifest extends T.Manifest,
-    Store,
-    ConfigType extends
-      | Record<string, any>
-      | Config<any, any>
-      | Config<any, never>,
-    Type extends Record<string, any> = ExtractConfigType<ConfigType>,
-  >(
-    id: string,
-    metadata: MaybeFn<Manifest, Store, Omit<ActionMetadata, "input">>,
-    fn: (options: { effects: Effects; input: Type }) => Promise<ActionResult>,
-    inputConfig: Config<Type, Store> | Config<Type, never>,
-  ) {
-    return new CreatedAction<Manifest, Store, ConfigType, Type>(
-      id,
-      metadata,
-      fn,
-      inputConfig as Config<Type, Store>,
-    )
-  }
- 
-  exportedAction: ExportedAction = ({ effects, input }) => {
-    return this.fn({
-      effects,
-      input: this.validator.unsafeCast(input),
-    })
-  }
- 
-  run = async ({ effects, input }: { effects: Effects; input?: Type }) => {
-    return this.fn({
-      effects,
-      input: this.validator.unsafeCast(input),
-    })
-  }
- 
-  async metadata(options: { effects: Effects }) {
-    Iif (this.myMetadata instanceof Function)
-      return await this.myMetadata(options)
-    return this.myMetadata
-  }
- 
-  async ActionMetadata(options: { effects: Effects }): Promise<ActionMetadata> {
-    return {
-      ...(await this.metadata(options)),
-      input: await this.input.build(options),
-    }
-  }
- 
-  async getConfig({ effects }: { effects: Effects }) {
-    return this.input.build({
-      effects,
-    })
-  }
-}
- 
-export const createAction = CreatedAction.of
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/actions/index.html b/sdk/lib/coverage/lcov-report/lib/actions/index.html deleted file mode 100644 index 2ef08c5bf..000000000 --- a/sdk/lib/coverage/lcov-report/lib/actions/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/actions - - - - - - - - - -
-
-

All files lib/actions

-
-
- 10.71% - Statements - 3/28 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/12 -
- -
- 10.71% - Lines - 3/28 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- createAction.ts - -
-
-
-
-
11.76%2/170%0/20%0/711.76%2/17
- setupActions.ts - -
-
-
-
-
9.09%1/11100%0/00%0/59.09%1/11
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/actions/setupActions.ts.html b/sdk/lib/coverage/lcov-report/lib/actions/setupActions.ts.html deleted file mode 100644 index 6ee3deceb..000000000 --- a/sdk/lib/coverage/lcov-report/lib/actions/setupActions.ts.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - Code coverage report for lib/actions/setupActions.ts - - - - - - - - - -
-
-

- All files / - lib/actions setupActions.ts -

-
-
- 9.09% - Statements - 1/11 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/5 -
- -
- 9.09% - Lines - 1/11 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { Effects, ExpectedExports } from "../types"
-import { CreatedAction } from "./createAction"
- 
-export function setupActions<Manifest extends T.Manifest, Store>(
-  ...createdActions: CreatedAction<Manifest, Store, any>[]
-) {
-  const myActions = async (options: { effects: Effects }) => {
-    const actions: Record<string, CreatedAction<Manifest, Store, any>> = {}
-    for (const action of createdActions) {
-      actions[action.id] = action
-    }
-    return actions
-  }
-  const answer: {
-    actions: ExpectedExports.actions
-    actionsMetadata: ExpectedExports.actionsMetadata
-  } = {
-    actions(options: { effects: Effects }) {
-      return myActions(options)
-    },
-    async actionsMetadata({ effects }: { effects: Effects }) {
-      return Promise.all(
-        createdActions.map((x) => x.ActionMetadata({ effects })),
-      )
-    },
-  }
-  return answer
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/backup/Backups.ts.html b/sdk/lib/coverage/lcov-report/lib/backup/Backups.ts.html deleted file mode 100644 index 682f8bfea..000000000 --- a/sdk/lib/coverage/lcov-report/lib/backup/Backups.ts.html +++ /dev/null @@ -1,714 +0,0 @@ - - - - Code coverage report for lib/backup/Backups.ts - - - - - - - - - -
-
-

- All files / - lib/backup Backups.ts -

-
-
- 8.21% - Statements - 6/73 -
- -
- 0% - Branches - 0/9 -
- -
- 0% - Functions - 0/22 -
- -
- 8.57% - Lines - 6/70 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210  -  -5x -  -5x -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
- 
-import * as child_process from "child_process"
-import { promises as fsPromises } from "fs"
-import { asError } from "../util"
- 
-export type BACKUP = "BACKUP"
-export const DEFAULT_OPTIONS: T.BackupOptions = {
-  delete: true,
-  force: true,
-  ignoreExisting: false,
-  exclude: [],
-}
-export type BackupSet<Volumes extends string> = {
-  srcPath: string
-  srcVolume: Volumes | BACKUP
-  dstPath: string
-  dstVolume: Volumes | BACKUP
-  options?: Partial<T.BackupOptions>
-}
-/**
- * This utility simplifies the volume backup process.
- * ```ts
- * export const { createBackup, restoreBackup } = Backups.volumes("main").build();
- * ```
- *
- * Changing the options of the rsync, (ie exludes) use either
- * ```ts
- *  Backups.volumes("main").set_options({exclude: ['bigdata/']}).volumes('excludedVolume').build()
- * // or
- *  Backups.with_options({exclude: ['bigdata/']}).volumes('excludedVolume').build()
- * ```
- *
- * Using the more fine control, using the addSets for more control
- * ```ts
- * Backups.addSets({
- * srcVolume: 'main', srcPath:'smallData/', dstPath: 'main/smallData/', dstVolume: : Backups.BACKUP
- * }, {
- * srcVolume: 'main', srcPath:'bigData/', dstPath: 'main/bigData/', dstVolume: : Backups.BACKUP, options: {exclude:['bigData/excludeThis']}}
- * ).build()q
- * ```
- */
-export class Backups<M extends T.Manifest> {
-  static BACKUP: BACKUP = "BACKUP"
- 
-  private constructor(
-    private options = DEFAULT_OPTIONS,
-    private backupSet = [] as BackupSet<M["volumes"][number]>[],
-  ) {}
-  static volumes<M extends T.Manifest = never>(
-    ...volumeNames: Array<M["volumes"][0]>
-  ): Backups<M> {
-    return new Backups<M>().addSets(
-      ...volumeNames.map((srcVolume) => ({
-        srcVolume,
-        srcPath: "./",
-        dstPath: `./${srcVolume}/`,
-        dstVolume: Backups.BACKUP,
-      })),
-    )
-  }
-  static addSets<M extends T.Manifest = never>(
-    ...options: BackupSet<M["volumes"][0]>[]
-  ) {
-    return new Backups().addSets(...options)
-  }
-  static with_options<M extends T.Manifest = never>(
-    options?: Partial<T.BackupOptions>,
-  ) {
-    return new Backups({ ...DEFAULT_OPTIONS, ...options })
-  }
- 
-  static withOptions = Backups.with_options
-  setOptions(options?: Partial<T.BackupOptions>) {
-    this.options = {
-      ...this.options,
-      ...options,
-    }
-    return this
-  }
-  volumes(...volumeNames: Array<M["volumes"][0]>) {
-    return this.addSets(
-      ...volumeNames.map((srcVolume) => ({
-        srcVolume,
-        srcPath: "./",
-        dstPath: `./${srcVolume}/`,
-        dstVolume: Backups.BACKUP,
-      })),
-    )
-  }
-  addSets(...options: BackupSet<M["volumes"][0]>[]) {
-    options.forEach((x) =>
-      this.backupSet.push({ ...x, options: { ...this.options, ...x.options } }),
-    )
-    return this
-  }
-  build(pathMaker: T.PathMaker) {
-    const createBackup: T.ExpectedExports.createBackup = async ({
-      effects,
-    }) => {
-      for (const item of this.backupSet) {
-        const rsyncResults = await runRsync(
-          {
-            dstPath: item.dstPath,
-            dstVolume: item.dstVolume,
-            options: { ...this.options, ...item.options },
-            srcPath: item.srcPath,
-            srcVolume: item.srcVolume,
-          },
-          pathMaker,
-        )
-        await rsyncResults.wait()
-      }
-      return
-    }
-    const restoreBackup: T.ExpectedExports.restoreBackup = async ({
-      effects,
-    }) => {
-      for (const item of this.backupSet) {
-        const rsyncResults = await runRsync(
-          {
-            dstPath: item.dstPath,
-            dstVolume: item.dstVolume,
-            options: { ...this.options, ...item.options },
-            srcPath: item.srcPath,
-            srcVolume: item.srcVolume,
-          },
-          pathMaker,
-        )
-        await rsyncResults.wait()
-      }
-      return
-    }
-    return { createBackup, restoreBackup }
-  }
-}
-function notEmptyPath(file: string) {
-  return ["", ".", "./"].indexOf(file) === -1
-}
-async function runRsync(
-  rsyncOptions: {
-    srcVolume: string
-    dstVolume: string
-    srcPath: string
-    dstPath: string
-    options: T.BackupOptions
-  },
-  pathMaker: T.PathMaker,
-): Promise<{
-  id: () => Promise<string>
-  wait: () => Promise<null>
-  progress: () => Promise<number>
-}> {
-  const { srcVolume, dstVolume, srcPath, dstPath, options } = rsyncOptions
- 
-  const command = "rsync"
-  const args: string[] = []
-  Iif (options.delete) {
-    args.push("--delete")
-  }
-  Iif (options.force) {
-    args.push("--force")
-  }
-  Iif (options.ignoreExisting) {
-    args.push("--ignore-existing")
-  }
-  for (const exclude of options.exclude) {
-    args.push(`--exclude=${exclude}`)
-  }
-  args.push("-actAXH")
-  args.push("--info=progress2")
-  args.push("--no-inc-recursive")
-  args.push(pathMaker({ volume: srcVolume, path: srcPath }))
-  args.push(pathMaker({ volume: dstVolume, path: dstPath }))
-  const spawned = child_process.spawn(command, args, { detached: true })
-  let percentage = 0.0
-  spawned.stdout.on("data", (data: unknown) => {
-    const lines = String(data).replace("\r", "\n").split("\n")
-    for (const line of lines) {
-      const parsed = /$([0-9.]+)%/.exec(line)?.[1]
-      Iif (!parsed) continue
-      percentage = Number.parseFloat(parsed)
-    }
-  })
- 
-  spawned.stderr.on("data", (data: unknown) => {
-    console.error(`Backups.runAsync`, asError(data))
-  })
- 
-  const id = async () => {
-    const pid = spawned.pid
-    Iif (pid === undefined) {
-      throw new Error("rsync process has no pid")
-    }
-    return String(pid)
-  }
-  const waitPromise = new Promise<null>((resolve, reject) => {
-    spawned.on("exit", (code: any) => {
-      if (code === 0) {
-        resolve(null)
-      } else {
-        reject(new Error(`rsync exited with code ${code}`))
-      }
-    })
-  })
-  const wait = () => waitPromise
-  const progress = () => Promise.resolve(percentage)
-  return { id, wait, progress }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/backup/index.html b/sdk/lib/coverage/lcov-report/lib/backup/index.html deleted file mode 100644 index d42160aa7..000000000 --- a/sdk/lib/coverage/lcov-report/lib/backup/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/backup - - - - - - - - - -
-
-

All files lib/backup

-
-
- 8.79% - Statements - 8/91 -
- -
- 0% - Branches - 0/11 -
- -
- 0% - Functions - 0/27 -
- -
- 9.09% - Lines - 8/88 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- Backups.ts - -
-
-
-
-
8.21%6/730%0/90%0/228.57%6/70
- setupBackups.ts - -
-
-
-
-
11.11%2/180%0/20%0/511.11%2/18
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/backup/setupBackups.ts.html b/sdk/lib/coverage/lcov-report/lib/backup/setupBackups.ts.html deleted file mode 100644 index ba61876d0..000000000 --- a/sdk/lib/coverage/lcov-report/lib/backup/setupBackups.ts.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - Code coverage report for lib/backup/setupBackups.ts - - - - - - - - - -
-
-

- All files / - lib/backup setupBackups.ts -

-
-
- 11.11% - Statements - 2/18 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/5 -
- -
- 11.11% - Lines - 2/18 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -465x -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Backups } from "./Backups"
- 
-import * as T from "../types"
-import { _ } from "../util"
- 
-export type SetupBackupsParams<M extends T.Manifest> = Array<
-  M["volumes"][number] | Backups<M>
->
- 
-export function setupBackups<M extends T.Manifest>(
-  manifest: M,
-  ...args: _<SetupBackupsParams<M>>
-) {
-  const backups = Array<Backups<M>>()
-  const volumes = new Set<M["volumes"][0]>()
-  for (const arg of args) {
-    if (arg instanceof Backups) {
-      backups.push(arg)
-    } else {
-      volumes.add(arg)
-    }
-  }
-  backups.push(Backups.volumes(...volumes))
-  const answer: {
-    createBackup: T.ExpectedExports.createBackup
-    restoreBackup: T.ExpectedExports.restoreBackup
-  } = {
-    get createBackup() {
-      return (async (options) => {
-        for (const backup of backups) {
-          await backup.build(options.pathMaker).createBackup(options)
-        }
-      }) as T.ExpectedExports.createBackup
-    },
-    get restoreBackup() {
-      return (async (options) => {
-        for (const backup of backups) {
-          await backup.build(options.pathMaker).restoreBackup(options)
-        }
-        await options.effects.setDataVersion({ version: manifest.version })
-      }) as T.ExpectedExports.restoreBackup
-    },
-  }
-  return answer
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/builder/config.ts.html b/sdk/lib/coverage/lcov-report/lib/config/builder/config.ts.html deleted file mode 100644 index e5829a86e..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/builder/config.ts.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - Code coverage report for lib/config/builder/config.ts - - - - - - - - - -
-
-

- All files / - lib/config/builder config.ts -

-
-
- 92.85% - Statements - 13/14 -
- -
- 100% - Branches - 0/0 -
- -
- 75% - Functions - 3/4 -
- -
- 92.85% - Lines - 13/14 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -62x -  -  -62x -  -  -6x -  -  -6x -5x -  -6x -  -  -  -  -  -  -62x -  -  -62x -131x -  -62x -62x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ValueSpec } from "../configTypes"
-import { Value } from "./value"
-import { _ } from "../../util"
-import { Effects } from "../../types"
-import { Parser, object } from "ts-matches"
- 
-export type LazyBuildOptions<Store> = {
-  effects: Effects
-}
-export type LazyBuild<Store, ExpectedOut> = (
-  options: LazyBuildOptions<Store>,
-) => Promise<ExpectedOut> | ExpectedOut
- 
-// prettier-ignore
-export type ExtractConfigType<A extends Record<string, any> | Config<Record<string, any>, any> | Config<Record<string, any>, never>> = 
-  A extends Config<infer B, any> | Config<infer B, never> ? B :
-  A
- 
-export type ConfigSpecOf<A extends Record<string, any>, Store = never> = {
-  [K in keyof A]: Value<A[K], Store>
-}
- 
-export type MaybeLazyValues<A> = LazyBuild<any, A> | A
-/**
- * Configs are the specs that are used by the os configuration form for this service.
- * Here is an example of a simple configuration
-  ```ts
-    const smallConfig = Config.of({
-      test: Value.boolean({
-        name: "Test",
-        description: "This is the description for the test",
-        warning: null,
-        default: false,
-      }),
-    });
-  ```
- 
-  The idea of a config is that now the form is going to ask for
-  Test: [ ] and the value is going to be checked as a boolean.
-  There are more complex values like selects, lists, and objects. See {@link Value}
- 
-  Also, there is the ability to get a validator/parser from this config spec.
-  ```ts
-  const matchSmallConfig = smallConfig.validator();
-  type SmallConfig = typeof matchSmallConfig._TYPE;
-  ```
- 
-  Here is an example of a more complex configuration which came from a configuration for a service
-  that works with bitcoin, like c-lightning.
-  ```ts
- 
-    export const hostname = Value.string({
-  name: "Hostname",
-  default: null,
-  description: "Domain or IP address of bitcoin peer",
-  warning: null,
-  required: true,
-  masked: false,
-  placeholder: null,
-  pattern:
-    "(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)|((^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$)|(^[a-z2-7]{16}\\.onion$)|(^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$))",
-  patternDescription:
-    "Must be either a domain name, or an IPv4 or IPv6 address. Do not include protocol scheme (eg 'http://') or port.",
-});
-export const port = Value.number({
-  name: "Port",
-  default: null,
-  description: "Port that peer is listening on for inbound p2p connections",
-  warning: null,
-  required: false,
-  range: "[0,65535]",
-  integral: true,
-  units: null,
-  placeholder: null,
-});
-export const addNodesSpec = Config.of({ hostname: hostname, port: port });
- 
-  ```
- */
-export class Config<Type extends Record<string, any>, Store = never> {
-  private constructor(
-    private readonly spec: {
-      [K in keyof Type]: Value<Type[K], Store> | Value<Type[K], never>
-    },
-    public validator: Parser<unknown, Type>,
-  ) {}
-  async build(options: LazyBuildOptions<Store>) {
-    const answer = {} as {
-      [K in keyof Type]: ValueSpec
-    }
-    for (const k in this.spec) {
-      answer[k] = await this.spec[k].build(options as any)
-    }
-    return answer
-  }
- 
-  static of<
-    Spec extends Record<string, Value<any, Store> | Value<any, never>>,
-    Store = never,
-  >(spec: Spec) {
-    const validatorObj = {} as {
-      [K in keyof Spec]: Parser<unknown, any>
-    }
-    for (const key in spec) {
-      validatorObj[key] = spec[key].validator
-    }
-    const validator = object(validatorObj)
-    return new Config<
-      {
-        [K in keyof Spec]: Spec[K] extends
-          | Value<infer T, Store>
-          | Value<infer T, never>
-          ? T
-          : never
-      },
-      Store
-    >(spec, validator as any)
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as Config<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/builder/index.html b/sdk/lib/coverage/lcov-report/lib/config/builder/index.html deleted file mode 100644 index 5a9f421f4..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/builder/index.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - Code coverage report for lib/config/builder - - - - - - - - - -
-
-

All files lib/config/builder

-
-
- 84.61% - Statements - 99/117 -
- -
- 55.17% - Branches - 16/29 -
- -
- 78.26% - Functions - 54/69 -
- -
- 84.34% - Lines - 97/115 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- config.ts - -
-
-
-
-
92.85%13/14100%0/075%3/492.85%13/14
- list.ts - -
-
-
-
-
95%19/20100%0/087.5%7/895%19/20
- value.ts - -
-
-
-
-
78.57%55/7055.17%16/2976.92%40/5277.94%53/68
- variants.ts - -
-
-
-
-
92.3%12/13100%0/080%4/592.3%12/13
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/builder/list.ts.html b/sdk/lib/coverage/lcov-report/lib/config/builder/list.ts.html deleted file mode 100644 index 985a16eb5..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/builder/list.ts.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - Code coverage report for lib/config/builder/list.ts - - - - - - - - - -
-
-

- All files / - lib/config/builder list.ts -

-
-
- 95% - Statements - 19/20 -
- -
- 100% - Branches - 0/0 -
- -
- 87.5% - Functions - 7/8 -
- -
- 95% - Lines - 19/20 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -11x -11x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -1x -1x -1x -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Config, LazyBuild } from "./config"
-import {
-  ListValueSpecText,
-  Pattern,
-  RandomString,
-  UniqueBy,
-  ValueSpecList,
-  ValueSpecListOf,
-} from "../configTypes"
-import { Parser, arrayOf, number, string } from "ts-matches"
-/**
- * Used as a subtype of Value.list
-```ts
-export const authorizationList = List.string({
-  "name": "Authorization",
-  "range": "[0,*)",
-  "default": [],
-  "description": "Username and hashed password for JSON-RPC connections. RPC clients connect using the usual http basic authentication.",
-  "warning": null
-}, {"masked":false,"placeholder":null,"pattern":"^[a-zA-Z0-9_-]+:([0-9a-fA-F]{2})+\\$([0-9a-fA-F]{2})+$","patternDescription":"Each item must be of the form \"<USERNAME>:<SALT>$<HASH>\"."});
-export const auth = Value.list(authorizationList);
-```
-*/
-export class List<Type, Store> {
-  private constructor(
-    public build: LazyBuild<Store, ValueSpecList>,
-    public validator: Parser<unknown, Type>,
-  ) {}
-  static text(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      /** Default = [] */
-      default?: string[]
-      minLength?: number | null
-      maxLength?: number | null
-    },
-    aSpec: {
-      /** Default = false */
-      masked?: boolean
-      placeholder?: string | null
-      minLength?: number | null
-      maxLength?: number | null
-      patterns: Pattern[]
-      /** Default = "text" */
-      inputmode?: ListValueSpecText["inputmode"]
-      generate?: null | RandomString
-    },
-  ) {
-    return new List<string[], never>(() => {
-      const spec = {
-        type: "text" as const,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        masked: false,
-        inputmode: "text" as const,
-        generate: null,
-        ...aSpec,
-      }
-      const built: ValueSpecListOf<"text"> = {
-        description: null,
-        warning: null,
-        default: [],
-        type: "list" as const,
-        minLength: null,
-        maxLength: null,
-        disabled: false,
-        ...a,
-        spec,
-      }
-      return built
-    }, arrayOf(string))
-  }
-  static dynamicText<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        /** Default = [] */
-        default?: string[]
-        minLength?: number | null
-        maxLength?: number | null
-        disabled?: false | string
-        generate?: null | RandomString
-        spec: {
-          /** Default = false */
-          masked?: boolean
-          placeholder?: string | null
-          minLength?: number | null
-          maxLength?: number | null
-          patterns: Pattern[]
-          /** Default = "text" */
-          inputmode?: ListValueSpecText["inputmode"]
-        }
-      }
-    >,
-  ) {
-    return new List<string[], Store>(async (options) => {
-      const { spec: aSpec, ...a } = await getA(options)
-      const spec = {
-        type: "text" as const,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        masked: false,
-        inputmode: "text" as const,
-        generate: null,
-        ...aSpec,
-      }
-      const built: ValueSpecListOf<"text"> = {
-        description: null,
-        warning: null,
-        default: [],
-        type: "list" as const,
-        minLength: null,
-        maxLength: null,
-        disabled: false,
-        ...a,
-        spec,
-      }
-      return built
-    }, arrayOf(string))
-  }
-  static obj<Type extends Record<string, any>, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      /** Default [] */
-      default?: []
-      minLength?: number | null
-      maxLength?: number | null
-    },
-    aSpec: {
-      spec: Config<Type, Store>
-      displayAs?: null | string
-      uniqueBy?: null | UniqueBy
-    },
-  ) {
-    return new List<Type[], Store>(async (options) => {
-      const { spec: previousSpecSpec, ...restSpec } = aSpec
-      const specSpec = await previousSpecSpec.build(options)
-      const spec = {
-        type: "object" as const,
-        displayAs: null,
-        uniqueBy: null,
-        ...restSpec,
-        spec: specSpec,
-      }
-      const value = {
-        spec,
-        default: [],
-        ...a,
-      }
-      return {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        type: "list" as const,
-        disabled: false,
-        ...value,
-      }
-    }, arrayOf(aSpec.spec.validator))
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as List<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/builder/value.ts.html b/sdk/lib/coverage/lcov-report/lib/config/builder/value.ts.html deleted file mode 100644 index 39cc509c5..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/builder/value.ts.html +++ /dev/null @@ -1,2436 +0,0 @@ - - - - Code coverage report for lib/config/builder/value.ts - - - - - - - - - -
-
-

- All files / - lib/config/builder value.ts -

-
-
- 78.57% - Statements - 55/70 -
- -
- 55.17% - Branches - 16/29 -
- -
- 76.92% - Functions - 40/52 -
- -
- 77.94% - Lines - 53/68 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -16x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -5x -  -  -  -  -  -  -  -  -89x -28x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -169x -169x -  -  -  -  -  -  -  -  -  -  -34x -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -40x -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -28x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -1x -  -  -  -  -  -  -  -  -  -  -10x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -11x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Config, LazyBuild, LazyBuildOptions } from "./config"
-import { List } from "./list"
-import { Variants } from "./variants"
-import {
-  FilePath,
-  Pattern,
-  RandomString,
-  ValueSpec,
-  ValueSpecDatetime,
-  ValueSpecText,
-  ValueSpecTextarea,
-} from "../configTypes"
-import { DefaultString } from "../configTypes"
-import { _ } from "../../util"
-import {
-  Parser,
-  anyOf,
-  arrayOf,
-  boolean,
-  literal,
-  literals,
-  number,
-  object,
-  string,
-  unknown,
-} from "ts-matches"
-import { once } from "../../util/once"
- 
-export type RequiredDefault<A> =
-  | false
-  | {
-      default: A | null
-    }
- 
-function requiredLikeToAbove<Input extends RequiredDefault<A>, A>(
-  requiredLike: Input,
-) {
-  // prettier-ignore
-  return {
-    required: (typeof requiredLike === 'object' ? true : requiredLike) as (
-      Input extends { default: unknown} ? true:
-      Input extends true ? true :
-      false
-    ),
-    default:(typeof requiredLike === 'object' ? requiredLike.default : null) as (
-      Input extends { default: infer Default } ? Default :
-      null
-    )
-  };
-}
-type AsRequired<Type, MaybeRequiredType> = MaybeRequiredType extends
-  | { default: unknown }
-  | never
-  ? Type
-  : Type | null | undefined
- 
-type InputAsRequired<A, Type> = A extends
-  | { required: { default: any } | never }
-  | never
-  ? Type
-  : Type | null | undefined
-const testForAsRequiredParser = once(
-  () => object({ required: object({ default: unknown }) }).test,
-)
-function asRequiredParser<
-  Type,
-  Input,
-  Return extends
-    | Parser<unknown, Type>
-    | Parser<unknown, Type | null | undefined>,
->(parser: Parser<unknown, Type>, input: Input): Return {
-  if (testForAsRequiredParser()(input)) return parser as any
-  return parser.optional() as any
-}
- 
-/**
- * A value is going to be part of the form in the FE of the OS.
- * Something like a boolean, a string, a number, etc.
- * in the fe it will ask for the name of value, and use the rest of the value to determine how to render it.
- * While writing with a value, you will start with `Value.` then let the IDE suggest the rest.
- * for things like string, the options are going to be in {}.
- * Keep an eye out for another config builder types as params.
- * Note, usually this is going to be used in a `Config` {@link Config} builder.
- ```ts
-const username = Value.string({
-  name: "Username",
-  default: "bitcoin",
-  description: "The username for connecting to Bitcoin over RPC.",
-  warning: null,
-  required: true,
-  masked: true,
-  placeholder: null,
-  pattern: "^[a-zA-Z0-9_]+$",
-  patternDescription: "Must be alphanumeric (can contain underscore).",
-});
- ```
- */
-export class Value<Type, Store> {
-  protected constructor(
-    public build: LazyBuild<Store, ValueSpec>,
-    public validator: Parser<unknown, Type>,
-  ) {}
-  static toggle(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    default: boolean
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<boolean, never>(
-      async () => ({
-        description: null,
-        warning: null,
-        type: "toggle" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }),
-      boolean,
-    )
-  }
-  static dynamicToggle<Store = never>(
-    a: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        default: boolean
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<boolean, Store>(
-      async (options) => ({
-        description: null,
-        warning: null,
-        type: "toggle" as const,
-        disabled: false,
-        immutable: false,
-        ...(await a(options)),
-      }),
-      boolean,
-    )
-  }
-  static text<Required extends RequiredDefault<DefaultString>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
- 
-    /** Default = false */
-    masked?: boolean
-    placeholder?: string | null
-    minLength?: number | null
-    maxLength?: number | null
-    patterns?: Pattern[]
-    /** Default = 'text' */
-    inputmode?: ValueSpecText["inputmode"]
-    /**  Immutable means it can only be configured at the first config then never again
-     * Default is false
-     */
-    immutable?: boolean
-    generate?: null | RandomString
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      async () => ({
-        type: "text" as const,
-        description: null,
-        warning: null,
-        masked: false,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        patterns: [],
-        inputmode: "text",
-        disabled: false,
-        immutable: a.immutable ?? false,
-        generate: a.generate ?? null,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(string, a),
-    )
-  }
-  static dynamicText<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<DefaultString>
- 
-        /** Default = false */
-        masked?: boolean
-        placeholder?: string | null
-        minLength?: number | null
-        maxLength?: number | null
-        patterns?: Pattern[]
-        /** Default = 'text' */
-        inputmode?: ValueSpecText["inputmode"]
-        disabled?: string | false
-        /**  Immutable means it can only be configured at the first config then never again
-         * Default is false
-         */
-        generate?: null | RandomString
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "text" as const,
-        description: null,
-        warning: null,
-        masked: false,
-        placeholder: null,
-        minLength: null,
-        maxLength: null,
-        patterns: [],
-        inputmode: "text",
-        disabled: false,
-        immutable: false,
-        generate: a.generate ?? null,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static textarea(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: boolean
-    minLength?: number | null
-    maxLength?: number | null
-    placeholder?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<string, never>(async () => {
-      const built: ValueSpecTextarea = {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        placeholder: null,
-        type: "textarea" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }
-      return built
-    }, string)
-  }
-  static dynamicTextarea<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: boolean
-        minLength?: number | null
-        maxLength?: number | null
-        placeholder?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        description: null,
-        warning: null,
-        minLength: null,
-        maxLength: null,
-        placeholder: null,
-        type: "textarea" as const,
-        disabled: false,
-        immutable: false,
-        ...a,
-      }
-    }, string)
-  }
-  static number<Required extends RequiredDefault<number>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    min?: number | null
-    max?: number | null
-    /** Default = '1' */
-    step?: number | null
-    integer: boolean
-    units?: string | null
-    placeholder?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<number, Required>, never>(
-      () => ({
-        type: "number" as const,
-        description: null,
-        warning: null,
-        min: null,
-        max: null,
-        step: null,
-        units: null,
-        placeholder: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(number, a),
-    )
-  }
-  static dynamicNumber<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<number>
-        min?: number | null
-        max?: number | null
-        /** Default = '1' */
-        step?: number | null
-        integer: boolean
-        units?: string | null
-        placeholder?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<number | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "number" as const,
-        description: null,
-        warning: null,
-        min: null,
-        max: null,
-        step: null,
-        units: null,
-        placeholder: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, number.optional())
-  }
-  static color<Required extends RequiredDefault<string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      () => ({
-        type: "color" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
- 
-      asRequiredParser(string, a),
-    )
-  }
- 
-  static dynamicColor<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "color" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static datetime<Required extends RequiredDefault<string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    /** Default = 'datetime-local' */
-    inputmode?: ValueSpecDatetime["inputmode"]
-    min?: string | null
-    max?: string | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<string, Required>, never>(
-      () => ({
-        type: "datetime" as const,
-        description: null,
-        warning: null,
-        inputmode: "datetime-local",
-        min: null,
-        max: null,
-        step: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(string, a),
-    )
-  }
-  static dynamicDatetime<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        /** Default = 'datetime-local' */
-        inputmode?: ValueSpecDatetime["inputmode"]
-        min?: string | null
-        max?: string | null
-        disabled?: false | string
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "datetime" as const,
-        description: null,
-        warning: null,
-        inputmode: "datetime-local",
-        min: null,
-        max: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static select<
-    Required extends RequiredDefault<string>,
-    B extends Record<string, string>,
-  >(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    required: Required
-    values: B
-    /**
-     * Disabled:  false means that there is nothing disabled, good to modify
-     *           string means that this is the message displayed and the whole thing is disabled
-     *           string[] means that the options are disabled
-     */
-    disabled?: false | string | (string & keyof B)[]
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-  }) {
-    return new Value<AsRequired<keyof B, Required>, never>(
-      () => ({
-        description: null,
-        warning: null,
-        type: "select" as const,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(
-        anyOf(
-          ...Object.keys(a.values).map((x: keyof B & string) => literal(x)),
-        ),
-        a,
-      ) as any,
-    )
-  }
-  static dynamicSelect<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: RequiredDefault<string>
-        values: Record<string, string>
-        /**
-         * Disabled:  false means that there is nothing disabled, good to modify
-         *           string means that this is the message displayed and the whole thing is disabled
-         *           string[] means that the options are disabled
-         */
-        disabled?: false | string | string[]
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        description: null,
-        warning: null,
-        type: "select" as const,
-        disabled: false,
-        immutable: false,
-        ...a,
-        ...requiredLikeToAbove(a.required),
-      }
-    }, string.optional())
-  }
-  static multiselect<Values extends Record<string, string>>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    default: string[]
-    values: Values
-    minLength?: number | null
-    maxLength?: number | null
-    /**  Immutable means it can only be configed at the first config then never again 
-    Default is false */
-    immutable?: boolean
-    /**
-     * Disabled:  false means that there is nothing disabled, good to modify
-     *           string means that this is the message displayed and the whole thing is disabled
-     *           string[] means that the options are disabled
-     */
-    disabled?: false | string | (string & keyof Values)[]
-  }) {
-    return new Value<(keyof Values)[], never>(
-      () => ({
-        type: "multiselect" as const,
-        minLength: null,
-        maxLength: null,
-        warning: null,
-        description: null,
-        disabled: false,
-        immutable: a.immutable ?? false,
-        ...a,
-      }),
-      arrayOf(
-        literals(...(Object.keys(a.values) as any as [keyof Values & string])),
-      ),
-    )
-  }
-  static dynamicMultiselect<Store = never>(
-    getA: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        default: string[]
-        values: Record<string, string>
-        minLength?: number | null
-        maxLength?: number | null
-        /**
-         * Disabled:  false means that there is nothing disabled, good to modify
-         *           string means that this is the message displayed and the whole thing is disabled
-         *           string[] means that the options are disabled
-         */
-        disabled?: false | string | string[]
-      }
-    >,
-  ) {
-    return new Value<string[], Store>(async (options) => {
-      const a = await getA(options)
-      return {
-        type: "multiselect" as const,
-        minLength: null,
-        maxLength: null,
-        warning: null,
-        description: null,
-        disabled: false,
-        immutable: false,
-        ...a,
-      }
-    }, arrayOf(string))
-  }
-  static object<Type extends Record<string, any>, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-    },
-    spec: Config<Type, Store>,
-  ) {
-    return new Value<Type, Store>(async (options) => {
-      const built = await spec.build(options as any)
-      return {
-        type: "object" as const,
-        description: null,
-        warning: null,
-        ...a,
-        spec: built,
-      }
-    }, spec.validator)
-  }
-  static file<Required extends RequiredDefault<string>, Store>(a: {
-    name: string
-    description?: string | null
-    warning?: string | null
-    extensions: string[]
-    required: Required
-  }) {
-    const buildValue = {
-      type: "file" as const,
-      description: null,
-      warning: null,
-      ...a,
-    }
-    return new Value<AsRequired<FilePath, Required>, Store>(
-      () => ({
-        ...buildValue,
- 
-        ...requiredLikeToAbove(a.required),
-      }),
-      asRequiredParser(object({ filePath: string }), a),
-    )
-  }
-  static dynamicFile<Required extends boolean, Store>(
-    a: LazyBuild<
-      Store,
-      {
-        name: string
-        description?: string | null
-        warning?: string | null
-        extensions: string[]
-        required: Required
-      }
-    >,
-  ) {
-    return new Value<string | null | undefined, Store>(
-      async (options) => ({
-        type: "file" as const,
-        description: null,
-        warning: null,
-        ...(await a(options)),
-      }),
-      string.optional(),
-    )
-  }
-  static union<Required extends RequiredDefault<string>, Type, Store>(
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      required: Required
-      /**  Immutable means it can only be configed at the first config then never again 
-      Default is false */
-      immutable?: boolean
-      /**
-       * Disabled:  false means that there is nothing disabled, good to modify
-       *           string means that this is the message displayed and the whole thing is disabled
-       *           string[] means that the options are disabled
-       */
-      disabled?: false | string | string[]
-    },
-    aVariants: Variants<Type, Store>,
-  ) {
-    return new Value<AsRequired<Type, Required>, Store>(
-      async (options) => ({
-        type: "union" as const,
-        description: null,
-        warning: null,
-        disabled: false,
-        ...a,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(a.required),
-        immutable: a.immutable ?? false,
-      }),
-      asRequiredParser(aVariants.validator, a),
-    )
-  }
-  static filteredUnion<
-    Required extends RequiredDefault<string>,
-    Type extends Record<string, any>,
-    Store = never,
-  >(
-    getDisabledFn: LazyBuild<Store, string[] | false | string>,
-    a: {
-      name: string
-      description?: string | null
-      warning?: string | null
-      required: Required
-    },
-    aVariants: Variants<Type, Store> | Variants<Type, never>,
-  ) {
-    return new Value<AsRequired<Type, Required>, Store>(
-      async (options) => ({
-        type: "union" as const,
-        description: null,
-        warning: null,
-        ...a,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(a.required),
-        disabled: (await getDisabledFn(options)) || false,
-        immutable: false,
-      }),
-      asRequiredParser(aVariants.validator, a),
-    )
-  }
-  static dynamicUnion<
-    Required extends RequiredDefault<string>,
-    Type extends Record<string, any>,
-    Store = never,
-  >(
-    getA: LazyBuild<
-      Store,
-      {
-        disabled: string[] | false | string
-        name: string
-        description?: string | null
-        warning?: string | null
-        required: Required
-      }
-    >,
-    aVariants: Variants<Type, Store> | Variants<Type, never>,
-  ) {
-    return new Value<Type | null | undefined, Store>(async (options) => {
-      const newValues = await getA(options)
-      return {
-        type: "union" as const,
-        description: null,
-        warning: null,
-        ...newValues,
-        variants: await aVariants.build(options as any),
-        ...requiredLikeToAbove(newValues.required),
-        immutable: false,
-      }
-    }, aVariants.validator.optional())
-  }
- 
-  static list<Type, Store>(a: List<Type, Store>) {
-    return new Value<Type, Store>((options) => a.build(options), a.validator)
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as Value<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/builder/variants.ts.html b/sdk/lib/coverage/lcov-report/lib/config/builder/variants.ts.html deleted file mode 100644 index 2f58267be..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/builder/variants.ts.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - Code coverage report for lib/config/builder/variants.ts - - - - - - - - - -
-
-

- All files / - lib/config/builder variants.ts -

-
-
- 92.3% - Statements - 12/13 -
- -
- 100% - Branches - 0/0 -
- -
- 80% - Functions - 4/5 -
- -
- 92.3% - Lines - 12/13 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -12x -12x -  -  -  -  -  -  -  -  -  -  -12x -  -28x -  -  -  -  -  -  -12x -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -2x -4x -4x -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { InputSpec, ValueSpecUnion } from "../configTypes"
-import { LazyBuild, Config } from "./config"
-import { Parser, anyOf, literals, object } from "ts-matches"
- 
-/**
- * Used in the the Value.select { @link './value.ts' }
- * to indicate the type of select variants that are available. The key for the record passed in will be the
- * key to the tag.id in the Value.select
-```ts
- 
-export const disabled = Config.of({});
-export const size = Value.number({
-  name: "Max Chain Size",
-  default: 550,
-  description: "Limit of blockchain size on disk.",
-  warning: "Increasing this value will require re-syncing your node.",
-  required: true,
-  range: "[550,1000000)",
-  integral: true,
-  units: "MiB",
-  placeholder: null,
-});
-export const automatic = Config.of({ size: size });
-export const size1 = Value.number({
-  name: "Failsafe Chain Size",
-  default: 65536,
-  description: "Prune blockchain if size expands beyond this.",
-  warning: null,
-  required: true,
-  range: "[550,1000000)",
-  integral: true,
-  units: "MiB",
-  placeholder: null,
-});
-export const manual = Config.of({ size: size1 });
-export const pruningSettingsVariants = Variants.of({
-  disabled: { name: "Disabled", spec: disabled },
-  automatic: { name: "Automatic", spec: automatic },
-  manual: { name: "Manual", spec: manual },
-});
-export const pruning = Value.union(
-  {
-    name: "Pruning Settings",
-    description:
-      '- Disabled: Disable pruning\n- Automatic: Limit blockchain size on disk to a certain number of megabytes\n- Manual: Prune blockchain with the "pruneblockchain" RPC\n',
-    warning: null,
-    required: true,
-    default: "disabled",
-  },
-  pruningSettingsVariants
-);
-```
- */
-export class Variants<Type, Store> {
-  static text: any
-  private constructor(
-    public build: LazyBuild<Store, ValueSpecUnion["variants"]>,
-    public validator: Parser<unknown, Type>,
-  ) {}
-  static of<
-    VariantValues extends {
-      [K in string]: {
-        name: string
-        spec: Config<any, Store> | Config<any, never>
-      }
-    },
-    Store = never,
-  >(a: VariantValues) {
-    const validator = anyOf(
-      ...Object.entries(a).map(([name, { spec }]) =>
-        object({
-          selection: literals(name),
-          value: spec.validator,
-        }),
-      ),
-    ) as Parser<unknown, any>
- 
-    return new Variants<
-      {
-        [K in keyof VariantValues]: {
-          selection: K
-          // prettier-ignore
-          value: 
-            VariantValues[K]["spec"] extends (Config<infer B, Store> | Config<infer B, never>) ? B :
-            never
-        }
-      }[keyof VariantValues],
-      Store
-    >(async (options) => {
-      const variants = {} as {
-        [K in keyof VariantValues]: { name: string; spec: InputSpec }
-      }
-      for (const key in a) {
-        const value = a[key]
-        variants[key] = {
-          name: value.name,
-          spec: await value.spec.build(options as any),
-        }
-      }
-      return variants
-    }, validator)
-  }
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as Variants<Type, NewStore>
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/configConstants.ts.html b/sdk/lib/coverage/lcov-report/lib/config/configConstants.ts.html deleted file mode 100644 index b1859a88b..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/configConstants.ts.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - Code coverage report for lib/config/configConstants.ts - - - - - - - - - -
-
-

- All files / - lib/config configConstants.ts -

-
-
- 77.77% - Statements - 7/9 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/1 -
- -
- 77.77% - Lines - 7/9 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82  -5x -5x -5x -5x -5x -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { SmtpValue } from "../types"
-import { GetSystemSmtp } from "../util/GetSystemSmtp"
-import { email } from "../util/patterns"
-import { Config, ConfigSpecOf } from "./builder/config"
-import { Value } from "./builder/value"
-import { Variants } from "./builder/variants"
- 
-/**
- * Base SMTP settings, to be used by StartOS for system wide SMTP
- */
-export const customSmtp = Config.of<ConfigSpecOf<SmtpValue>, never>({
-  server: Value.text({
-    name: "SMTP Server",
-    required: {
-      default: null,
-    },
-  }),
-  port: Value.number({
-    name: "Port",
-    required: { default: 587 },
-    min: 1,
-    max: 65535,
-    integer: true,
-  }),
-  from: Value.text({
-    name: "From Address",
-    required: {
-      default: null,
-    },
-    placeholder: "<name>test@example.com",
-    inputmode: "email",
-    patterns: [email],
-  }),
-  login: Value.text({
-    name: "Login",
-    required: {
-      default: null,
-    },
-  }),
-  password: Value.text({
-    name: "Password",
-    required: false,
-    masked: true,
-  }),
-})
- 
-/**
- * For service config. Gives users 3 options for SMTP: (1) disabled, (2) use system SMTP settings, (3) use custom SMTP settings
- */
-export const smtpConfig = Value.filteredUnion(
-  async ({ effects }) => {
-    const smtp = await new GetSystemSmtp(effects).once()
-    return smtp ? [] : ["system"]
-  },
-  {
-    name: "SMTP",
-    description: "Optionally provide an SMTP server for sending emails",
-    required: { default: "disabled" },
-  },
-  Variants.of({
-    disabled: { name: "Disabled", spec: Config.of({}) },
-    system: {
-      name: "System Credentials",
-      spec: Config.of({
-        customFrom: Value.text({
-          name: "Custom From Address",
-          description:
-            "A custom from address for this service. If not provided, the system from address will be used.",
-          required: false,
-          placeholder: "<name>test@example.com",
-          inputmode: "email",
-          patterns: [email],
-        }),
-      }),
-    },
-    custom: {
-      name: "Custom Credentials",
-      spec: customSmtp,
-    },
-  }),
-)
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/configDependencies.ts.html b/sdk/lib/coverage/lcov-report/lib/config/configDependencies.ts.html deleted file mode 100644 index 648f6700e..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/configDependencies.ts.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - Code coverage report for lib/config/configDependencies.ts - - - - - - - - - -
-
-

- All files / - lib/config configDependencies.ts -

-
-
- 40% - Statements - 2/5 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/3 -
- -
- 25% - Lines - 1/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { SDKManifest } from "../manifest/ManifestTypes"
-import { Dependency } from "../types"
- 
-export type ConfigDependencies<T extends SDKManifest> = {
-  exists(id: keyof T["dependencies"]): Dependency
-  running(id: keyof T["dependencies"], healthChecks: string[]): Dependency
-}
- 
-export const configDependenciesSet = <
-  T extends SDKManifest,
->(): ConfigDependencies<T> => ({
-  exists(id: keyof T["dependencies"]) {
-    return {
-      id,
-      kind: "exists",
-    } as Dependency
-  },
- 
-  running(id: keyof T["dependencies"], healthChecks: string[]) {
-    return {
-      id,
-      kind: "running",
-      healthChecks,
-    } as Dependency
-  },
-})
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/configTypes.ts.html b/sdk/lib/coverage/lcov-report/lib/config/configTypes.ts.html deleted file mode 100644 index dfeb66ce0..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/configTypes.ts.html +++ /dev/null @@ -1,903 +0,0 @@ - - - - Code coverage report for lib/config/configTypes.ts - - - - - - - - - -
-
-

- All files / - lib/config configTypes.ts -

-
-
- 100% - Statements - 2/2 -
- -
- 100% - Branches - 2/2 -
- -
- 100% - Functions - 1/1 -
- -
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -3x -  - 
export type InputSpec = Record<string, ValueSpec>
-export type ValueType =
-  | "text"
-  | "textarea"
-  | "number"
-  | "color"
-  | "datetime"
-  | "toggle"
-  | "select"
-  | "multiselect"
-  | "list"
-  | "object"
-  | "file"
-  | "union"
-export type ValueSpec = ValueSpecOf<ValueType>
-/** core spec types. These types provide the metadata for performing validations */
-// prettier-ignore
-export type ValueSpecOf<T extends ValueType> = 
-  T extends "text" ? ValueSpecText : 
-  T extends "textarea" ? ValueSpecTextarea : 
-  T extends "number" ? ValueSpecNumber : 
-  T extends "color" ? ValueSpecColor : 
-  T extends "datetime" ? ValueSpecDatetime : 
-  T extends "toggle" ? ValueSpecToggle : 
-  T extends "select" ? ValueSpecSelect : 
-  T extends "multiselect" ? ValueSpecMultiselect : 
-  T extends "list" ? ValueSpecList : 
-  T extends "object" ? ValueSpecObject : 
-  T extends "file" ? ValueSpecFile : 
-  T extends "union" ? ValueSpecUnion : 
-  never
- 
-export type ValueSpecText = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "text"
-  patterns: Pattern[]
-  minLength: number | null
-  maxLength: number | null
-  masked: boolean
- 
-  inputmode: "text" | "email" | "tel" | "url"
-  placeholder: string | null
- 
-  required: boolean
-  default: DefaultString | null
-  disabled: false | string
-  generate: null | RandomString
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecTextarea = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "textarea"
-  placeholder: string | null
-  minLength: number | null
-  maxLength: number | null
-  required: boolean
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
- 
-export type FilePath = {
-  filePath: string
-}
-export type ValueSpecNumber = {
-  type: "number"
-  min: number | null
-  max: number | null
-  integer: boolean
-  step: number | null
-  units: string | null
-  placeholder: string | null
-  name: string
-  description: string | null
-  warning: string | null
-  required: boolean
-  default: number | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecColor = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "color"
-  required: boolean
-  default: string | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecDatetime = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "datetime"
-  required: boolean
-  inputmode: "date" | "time" | "datetime-local"
-  min: string | null
-  max: string | null
-  default: string | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecSelect = {
-  values: Record<string, string>
-  name: string
-  description: string | null
-  warning: string | null
-  type: "select"
-  required: boolean
-  default: string | null
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecMultiselect = {
-  values: Record<string, string>
- 
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "multiselect"
-  minLength: number | null
-  maxLength: number | null
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  default: string[]
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecToggle = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "toggle"
-  default: boolean | null
-  disabled: false | string
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecUnion = {
-  name: string
-  description: string | null
-  warning: string | null
- 
-  type: "union"
-  variants: Record<
-    string,
-    {
-      name: string
-      spec: InputSpec
-    }
-  >
-  /**
-   * Disabled:  false means that there is nothing disabled, good to modify
-   *           string means that this is the message displayed and the whole thing is disabled
-   *           string[] means that the options are disabled
-   */
-  disabled: false | string | string[]
-  required: boolean
-  default: string | null
-  /** Immutable means it can only be configured at the first config then never again */
-  immutable: boolean
-}
-export type ValueSpecFile = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "file"
-  extensions: string[]
-  required: boolean
-}
-export type ValueSpecObject = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "object"
-  spec: InputSpec
-}
-export type ListValueSpecType = "text" | "object"
-/** represents a spec for the values of a list */
-// prettier-ignore
-export type ListValueSpecOf<T extends ListValueSpecType> = 
-  T extends "text" ? ListValueSpecText :
-  T extends "object" ? ListValueSpecObject :
-  never
-/** represents a spec for a list */
-export type ValueSpecList = ValueSpecListOf<ListValueSpecType>
-export type ValueSpecListOf<T extends ListValueSpecType> = {
-  name: string
-  description: string | null
-  warning: string | null
-  type: "list"
-  spec: ListValueSpecOf<T>
-  minLength: number | null
-  maxLength: number | null
-  disabled: false | string
-  default:
-    | string[]
-    | DefaultString[]
-    | Record<string, unknown>[]
-    | readonly string[]
-    | readonly DefaultString[]
-    | readonly Record<string, unknown>[]
-}
-export type Pattern = {
-  regex: string
-  description: string
-}
-export type ListValueSpecText = {
-  type: "text"
-  patterns: Pattern[]
-  minLength: number | null
-  maxLength: number | null
-  masked: boolean
- 
-  generate: null | RandomString
-  inputmode: "text" | "email" | "tel" | "url"
-  placeholder: string | null
-}
-export type ListValueSpecObject = {
-  type: "object"
-  /** this is a mapped type of the config object at this level, replacing the object's values with specs on those values */
-  spec: InputSpec
-  /** indicates whether duplicates can be permitted in the list */
-  uniqueBy: UniqueBy
-  /** this should be a handlebars template which can make use of the entire config which corresponds to 'spec' */
-  displayAs: string | null
-}
-export type UniqueBy =
-  | null
-  | string
-  | {
-      any: readonly UniqueBy[] | UniqueBy[]
-    }
-  | {
-      all: readonly UniqueBy[] | UniqueBy[]
-    }
-export type DefaultString = string | RandomString
-export type RandomString = {
-  charset: string
-  len: number
-}
-// sometimes the type checker needs just a little bit of help
-export function isValueSpecListOf<S extends ListValueSpecType>(
-  t: ValueSpec,
-  s: S,
-): t is ValueSpecListOf<S> & { spec: ListValueSpecOf<S> } {
-  return "spec" in t && t.spec.type === s
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/index.html b/sdk/lib/coverage/lcov-report/lib/config/index.html deleted file mode 100644 index 51f930af0..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/index.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - Code coverage report for lib/config - - - - - - - - - -
-
-

All files lib/config

-
-
- 46.15% - Statements - 12/26 -
- -
- 25% - Branches - 2/8 -
- -
- 20% - Functions - 1/5 -
- -
- 46.15% - Lines - 12/26 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- configConstants.ts - -
-
-
-
-
77.77%7/90%0/20%0/177.77%7/9
- configTypes.ts - -
-
-
-
-
100%2/2100%2/2100%1/1100%2/2
- setupConfig.ts - -
-
-
-
-
20%3/150%0/40%0/320%3/15
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/config/setupConfig.ts.html b/sdk/lib/coverage/lcov-report/lib/config/setupConfig.ts.html deleted file mode 100644 index c9060d993..000000000 --- a/sdk/lib/coverage/lcov-report/lib/config/setupConfig.ts.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - Code coverage report for lib/config/setupConfig.ts - - - - - - - - - -
-
-

- All files / - lib/config setupConfig.ts -

-
-
- 20% - Statements - 3/15 -
- -
- 0% - Branches - 0/4 -
- -
- 0% - Functions - 0/3 -
- -
- 20% - Lines - 3/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x - 
import * as T from "../types"
- 
-import * as D from "./configDependencies"
-import { Config, ExtractConfigType } from "./builder/config"
-import nullIfEmpty from "../util/nullIfEmpty"
-import { InterfacesReceipt as InterfacesReceipt } from "../interfaces/setupInterfaces"
- 
-declare const dependencyProof: unique symbol
-export type DependenciesReceipt = void & {
-  [dependencyProof]: never
-}
- 
-export type Save<
-  A extends
-    | Record<string, any>
-    | Config<Record<string, any>, any>
-    | Config<Record<string, never>, never>,
-> = (options: {
-  effects: T.Effects
-  input: ExtractConfigType<A> & Record<string, any>
-}) => Promise<{
-  dependenciesReceipt: DependenciesReceipt
-  interfacesReceipt: InterfacesReceipt
-  restart: boolean
-}>
-export type Read<
-  Manifest extends T.Manifest,
-  Store,
-  A extends
-    | Record<string, any>
-    | Config<Record<string, any>, any>
-    | Config<Record<string, any>, never>,
-> = (options: {
-  effects: T.Effects
-}) => Promise<void | (ExtractConfigType<A> & Record<string, any>)>
-/**
- * We want to setup a config export with a get and set, this
- * is going to be the default helper to setup config, because it will help
- * enforce that we have a spec, write, and reading.
- * @param options
- * @returns
- */
-export function setupConfig<
-  Store,
-  ConfigType extends
-    | Record<string, any>
-    | Config<any, any>
-    | Config<any, never>,
-  Manifest extends T.Manifest,
-  Type extends Record<string, any> = ExtractConfigType<ConfigType>,
->(
-  spec: Config<Type, Store> | Config<Type, never>,
-  write: Save<Type>,
-  read: Read<Manifest, Store, Type>,
-) {
-  const validator = spec.validator
-  return {
-    setConfig: (async ({ effects, input }) => {
-      Iif (!validator.test(input)) {
-        await console.error(
-          new Error(validator.errorMessage(input)?.toString()),
-        )
-        return { error: "Set config type error for config" }
-      }
-      await effects.clearBindings()
-      await effects.clearServiceInterfaces()
-      const { restart } = await write({
-        input: JSON.parse(JSON.stringify(input)) as any,
-        effects,
-      })
-      Iif (restart) {
-        await effects.restart()
-      }
-    }) as T.ExpectedExports.setConfig,
-    getConfig: (async ({ effects }) => {
-      const configValue = nullIfEmpty((await read({ effects })) || null)
-      return {
-        spec: await spec.build({
-          effects,
-        }),
-        config: configValue,
-      }
-    }) as T.ExpectedExports.getConfig,
-  }
-}
- 
-export default setupConfig
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencies/DependencyConfig.ts.html b/sdk/lib/coverage/lcov-report/lib/dependencies/DependencyConfig.ts.html deleted file mode 100644 index a533305a1..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencies/DependencyConfig.ts.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - Code coverage report for lib/dependencies/DependencyConfig.ts - - - - - - - - - -
-
-

- All files / - lib/dependencies DependencyConfig.ts -

-
-
- 71.42% - Statements - 5/7 -
- -
- 33.33% - Branches - 1/3 -
- -
- 33.33% - Functions - 1/3 -
- -
- 71.42% - Lines - 5/7 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40  -  -5x -  -  -  -  -  -  -5x -  -  -  -  -  -5x -  -  -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { deepEqual } from "../util/deepEqual"
-import { deepMerge } from "../util/deepMerge"
- 
-export type Update<QueryResults, RemoteConfig> = (options: {
-  remoteConfig: RemoteConfig
-  queryResults: QueryResults
-}) => Promise<RemoteConfig>
- 
-export class DependencyConfig<
-  Manifest extends T.Manifest,
-  Store,
-  Input extends Record<string, any>,
-  RemoteConfig extends Record<string, any>,
-> {
-  static defaultUpdate = async (options: {
-    queryResults: unknown
-    remoteConfig: unknown
-  }): Promise<unknown> => {
-    return deepMerge({}, options.remoteConfig, options.queryResults || {})
-  }
-  constructor(
-    readonly dependencyConfig: (options: {
-      effects: T.Effects
-      localConfig: Input
-    }) => Promise<void | T.DeepPartial<RemoteConfig>>,
-    readonly update: Update<
-      void | T.DeepPartial<RemoteConfig>,
-      RemoteConfig
-    > = DependencyConfig.defaultUpdate as any,
-  ) {}
- 
-  async query(options: { effects: T.Effects; localConfig: unknown }) {
-    return this.dependencyConfig({
-      localConfig: options.localConfig as Input,
-      effects: options.effects,
-    })
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencies/dependencies.ts.html b/sdk/lib/coverage/lcov-report/lib/dependencies/dependencies.ts.html deleted file mode 100644 index 954402b40..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencies/dependencies.ts.html +++ /dev/null @@ -1,705 +0,0 @@ - - - - Code coverage report for lib/dependencies/dependencies.ts - - - - - - - - - -
-
-

- All files / - lib/dependencies dependencies.ts -

-
-
- 2.38% - Statements - 2/84 -
- -
- 0% - Branches - 0/53 -
- -
- 0% - Functions - 0/28 -
- -
- 2.46% - Lines - 2/81 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -2075x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ExtendedVersion, VersionRange } from "../exver"
-import {
-  Effects,
-  PackageId,
-  DependencyRequirement,
-  SetHealth,
-  CheckDependenciesResult,
-  HealthCheckId,
-} from "../types"
- 
-export type CheckDependencies<DependencyId extends PackageId = PackageId> = {
-  installedSatisfied: (packageId: DependencyId) => boolean
-  installedVersionSatisfied: (packageId: DependencyId) => boolean
-  runningSatisfied: (packageId: DependencyId) => boolean
-  configSatisfied: (packageId: DependencyId) => boolean
-  healthCheckSatisfied: (
-    packageId: DependencyId,
-    healthCheckId: HealthCheckId,
-  ) => boolean
-  satisfied: () => boolean
- 
-  throwIfInstalledNotSatisfied: (packageId: DependencyId) => void
-  throwIfInstalledVersionNotSatisfied: (packageId: DependencyId) => void
-  throwIfRunningNotSatisfied: (packageId: DependencyId) => void
-  throwIfConfigNotSatisfied: (packageId: DependencyId) => void
-  throwIfHealthNotSatisfied: (
-    packageId: DependencyId,
-    healthCheckId?: HealthCheckId,
-  ) => void
-  throwIfNotSatisfied: (packageId?: DependencyId) => void
-}
-export async function checkDependencies<
-  DependencyId extends PackageId = PackageId,
->(
-  effects: Effects,
-  packageIds?: DependencyId[],
-): Promise<CheckDependencies<DependencyId>> {
-  let [dependencies, results] = await Promise.all([
-    effects.getDependencies(),
-    effects.checkDependencies({
-      packageIds,
-    }),
-  ])
-  Iif (packageIds) {
-    dependencies = dependencies.filter((d) =>
-      (packageIds as PackageId[]).includes(d.id),
-    )
-  }
- 
-  const find = (packageId: DependencyId) => {
-    const dependencyRequirement = dependencies.find((d) => d.id === packageId)
-    const dependencyResult = results.find((d) => d.packageId === packageId)
-    Iif (!dependencyRequirement || !dependencyResult) {
-      throw new Error(`Unknown DependencyId ${packageId}`)
-    }
-    return { requirement: dependencyRequirement, result: dependencyResult }
-  }
- 
-  const installedSatisfied = (packageId: DependencyId) =>
-    !!find(packageId).result.installedVersion
-  const installedVersionSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    return (
-      !!dep.result.installedVersion &&
-      ExtendedVersion.parse(dep.result.installedVersion).satisfies(
-        VersionRange.parse(dep.requirement.versionRange),
-      )
-    )
-  }
-  const runningSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    return dep.requirement.kind !== "running" || dep.result.isRunning
-  }
-  const configSatisfied = (packageId: DependencyId) =>
-    find(packageId).result.configSatisfied
-  const healthCheckSatisfied = (
-    packageId: DependencyId,
-    healthCheckId?: HealthCheckId,
-  ) => {
-    const dep = find(packageId)
-    Iif (
-      healthCheckId &&
-      (dep.requirement.kind !== "running" ||
-        !dep.requirement.healthChecks.includes(healthCheckId))
-    ) {
-      throw new Error(`Unknown HealthCheckId ${healthCheckId}`)
-    }
-    const errors = Object.entries(dep.result.healthChecks)
-      .filter(([id, _]) => (healthCheckId ? id === healthCheckId : true))
-      .filter(([_, res]) => res.result !== "success")
-    return errors.length === 0
-  }
-  const pkgSatisfied = (packageId: DependencyId) =>
-    installedSatisfied(packageId) &&
-    installedVersionSatisfied(packageId) &&
-    runningSatisfied(packageId) &&
-    configSatisfied(packageId) &&
-    healthCheckSatisfied(packageId)
-  const satisfied = (packageId?: DependencyId) =>
-    packageId
-      ? pkgSatisfied(packageId)
-      : dependencies.every((d) => pkgSatisfied(d.id as DependencyId))
- 
-  const throwIfInstalledNotSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    Iif (!dep.result.installedVersion) {
-      throw new Error(`${dep.result.title || packageId} is not installed`)
-    }
-  }
-  const throwIfInstalledVersionNotSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    Iif (!dep.result.installedVersion) {
-      throw new Error(`${dep.result.title || packageId} is not installed`)
-    }
-    Iif (
-      ![dep.result.installedVersion, ...dep.result.satisfies].find((v) =>
-        ExtendedVersion.parse(v).satisfies(
-          VersionRange.parse(dep.requirement.versionRange),
-        ),
-      )
-    ) {
-      throw new Error(
-        `Installed version ${dep.result.installedVersion} of ${dep.result.title || packageId} does not match expected version range ${dep.requirement.versionRange}`,
-      )
-    }
-  }
-  const throwIfRunningNotSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    Iif (dep.requirement.kind === "running" && !dep.result.isRunning) {
-      throw new Error(`${dep.result.title || packageId} is not running`)
-    }
-  }
-  const throwIfConfigNotSatisfied = (packageId: DependencyId) => {
-    const dep = find(packageId)
-    Iif (!dep.result.configSatisfied) {
-      throw new Error(
-        `${dep.result.title || packageId}'s configuration does not satisfy requirements`,
-      )
-    }
-  }
-  const throwIfHealthNotSatisfied = (
-    packageId: DependencyId,
-    healthCheckId?: HealthCheckId,
-  ) => {
-    const dep = find(packageId)
-    Iif (
-      healthCheckId &&
-      (dep.requirement.kind !== "running" ||
-        !dep.requirement.healthChecks.includes(healthCheckId))
-    ) {
-      throw new Error(`Unknown HealthCheckId ${healthCheckId}`)
-    }
-    const errors = Object.entries(dep.result.healthChecks)
-      .filter(([id, _]) => (healthCheckId ? id === healthCheckId : true))
-      .filter(([_, res]) => res.result !== "success")
-    Iif (errors.length) {
-      throw new Error(
-        errors
-          .map(
-            ([_, e]) =>
-              `Health Check ${e.name} of ${dep.result.title || packageId} failed with status ${e.result}${e.message ? `: ${e.message}` : ""}`,
-          )
-          .join("; "),
-      )
-    }
-  }
-  const throwIfPkgNotSatisfied = (packageId: DependencyId) => {
-    throwIfInstalledNotSatisfied(packageId)
-    throwIfInstalledVersionNotSatisfied(packageId)
-    throwIfRunningNotSatisfied(packageId)
-    throwIfConfigNotSatisfied(packageId)
-    throwIfHealthNotSatisfied(packageId)
-  }
-  const throwIfNotSatisfied = (packageId?: DependencyId) =>
-    packageId
-      ? throwIfPkgNotSatisfied(packageId)
-      : (() => {
-          const err = dependencies.flatMap((d) => {
-            try {
-              throwIfPkgNotSatisfied(d.id as DependencyId)
-            } catch (e) {
-              Iif (e instanceof Error) return [e.message]
-              throw e
-            }
-            return []
-          })
-          Iif (err.length) {
-            throw new Error(err.join("; "))
-          }
-        })()
- 
-  return {
-    installedSatisfied,
-    installedVersionSatisfied,
-    runningSatisfied,
-    configSatisfied,
-    healthCheckSatisfied,
-    satisfied,
-    throwIfInstalledNotSatisfied,
-    throwIfInstalledVersionNotSatisfied,
-    throwIfRunningNotSatisfied,
-    throwIfConfigNotSatisfied,
-    throwIfHealthNotSatisfied,
-    throwIfNotSatisfied,
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencies/index.html b/sdk/lib/coverage/lcov-report/lib/dependencies/index.html deleted file mode 100644 index 58861c8af..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencies/index.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - Code coverage report for lib/dependencies - - - - - - - - - -
-
-

All files lib/dependencies

-
-
- 9.67% - Statements - 9/93 -
- -
- 1.78% - Branches - 1/56 -
- -
- 6.25% - Functions - 2/32 -
- -
- 10% - Lines - 9/90 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- DependencyConfig.ts - -
-
-
-
-
71.42%5/733.33%1/333.33%1/371.42%5/7
- dependencies.ts - -
-
-
-
-
2.38%2/840%0/530%0/282.46%2/81
- setupDependencyConfig.ts - -
-
-
-
-
100%2/2100%0/0100%1/1100%2/2
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencies/setupDependencyConfig.ts.html b/sdk/lib/coverage/lcov-report/lib/dependencies/setupDependencyConfig.ts.html deleted file mode 100644 index a1d1d2446..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencies/setupDependencyConfig.ts.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - Code coverage report for lib/dependencies/setupDependencyConfig.ts - - - - - - - - - - -
-
-

- All files / - lib/dependencies setupDependencyConfig.ts -

-
-
- 100% - Statements - 2/2 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 1/1 -
- -
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  - 
import { Config } from "../config/builder/config"
- 
-import * as T from "../types"
-import { DependencyConfig } from "./DependencyConfig"
- 
-export function setupDependencyConfig<
-  Store,
-  Input extends Record<string, any>,
-  Manifest extends T.Manifest,
->(
-  _config: Config<Input, Store> | Config<Input, never>,
-  autoConfigs: {
-    [key in keyof Manifest["dependencies"] & string]: DependencyConfig<
-      Manifest,
-      Store,
-      Input,
-      any
-    > | null
-  },
-): T.ExpectedExports.dependencyConfig {
-  return autoConfigs
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/DependencyConfig.ts.html b/sdk/lib/coverage/lcov-report/lib/dependencyConfig/DependencyConfig.ts.html deleted file mode 100644 index 3cadfaf05..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/DependencyConfig.ts.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - Code coverage report for lib/dependencyConfig/DependencyConfig.ts - - - - - - - - - - -
-
-

- All files / - lib/dependencyConfig DependencyConfig.ts -

-
-
- 71.42% - Statements - 5/7 -
- -
- 33.33% - Branches - 1/3 -
- -
- 33.33% - Functions - 1/3 -
- -
- 71.42% - Lines - 5/7 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45  -  -  -  -  -  -5x -  -  -  -  -  -  -  -5x -  -  -  -  -  -5x -  -  -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  - 
import {
-  DependencyConfig as DependencyConfigType,
-  DeepPartial,
-  Effects,
-} from "../types"
-import { deepEqual } from "../util/deepEqual"
-import { deepMerge } from "../util/deepMerge"
-import { SDKManifest } from "../manifest/ManifestTypes"
- 
-export type Update<QueryResults, RemoteConfig> = (options: {
-  remoteConfig: RemoteConfig
-  queryResults: QueryResults
-}) => Promise<RemoteConfig>
- 
-export class DependencyConfig<
-  Manifest extends SDKManifest,
-  Store,
-  Input extends Record<string, any>,
-  RemoteConfig extends Record<string, any>,
-> {
-  static defaultUpdate = async (options: {
-    queryResults: unknown
-    remoteConfig: unknown
-  }): Promise<unknown> => {
-    return deepMerge({}, options.remoteConfig, options.queryResults || {})
-  }
-  constructor(
-    readonly dependencyConfig: (options: {
-      effects: Effects
-      localConfig: Input
-    }) => Promise<void | DeepPartial<RemoteConfig>>,
-    readonly update: Update<
-      void | DeepPartial<RemoteConfig>,
-      RemoteConfig
-    > = DependencyConfig.defaultUpdate as any,
-  ) {}
- 
-  async query(options: { effects: Effects; localConfig: unknown }) {
-    return this.dependencyConfig({
-      localConfig: options.localConfig as Input,
-      effects: options.effects,
-    })
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/index.html b/sdk/lib/coverage/lcov-report/lib/dependencyConfig/index.html deleted file mode 100644 index a4a078b4a..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - Code coverage report for lib/dependencyConfig - - - - - - - - - -
-
-

All files lib/dependencyConfig

-
-
- 77.77% - Statements - 7/9 -
- -
- 33.33% - Branches - 1/3 -
- -
- 50% - Functions - 2/4 -
- -
- 77.77% - Lines - 7/9 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- DependencyConfig.ts - -
-
-
-
-
71.42%5/733.33%1/333.33%1/371.42%5/7
- setupDependencyConfig.ts - -
-
-
-
-
100%2/2100%0/0100%1/1100%2/2
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/setupDependencyConfig.ts.html b/sdk/lib/coverage/lcov-report/lib/dependencyConfig/setupDependencyConfig.ts.html deleted file mode 100644 index 54aa440f4..000000000 --- a/sdk/lib/coverage/lcov-report/lib/dependencyConfig/setupDependencyConfig.ts.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - Code coverage report for lib/dependencyConfig/setupDependencyConfig.ts - - - - - - - - - - -
-
-

- All files / - lib/dependencyConfig setupDependencyConfig.ts -

-
-
- 100% - Statements - 2/2 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 1/1 -
- -
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  - 
import { Config } from "../config/builder/config"
-import { SDKManifest } from "../manifest/ManifestTypes"
-import { ExpectedExports } from "../types"
-import { DependencyConfig } from "./DependencyConfig"
- 
-export function setupDependencyConfig<
-  Store,
-  Input extends Record<string, any>,
-  Manifest extends SDKManifest,
->(
-  _config: Config<Input, Store> | Config<Input, never>,
-  autoConfigs: {
-    [key in keyof Manifest["dependencies"] & string]: DependencyConfig<
-      Manifest,
-      Store,
-      Input,
-      any
-    > | null
-  },
-): ExpectedExports.dependencyConfig {
-  return autoConfigs
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/emverLite/index.html b/sdk/lib/coverage/lcov-report/lib/emverLite/index.html deleted file mode 100644 index 7674dcee9..000000000 --- a/sdk/lib/coverage/lcov-report/lib/emverLite/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for lib/emverLite - - - - - - - - - -
-
-

All files lib/emverLite

-
-
- 96.99% - Statements - 129/133 -
- -
- 91.89% - Branches - 34/37 -
- -
- 97.56% - Functions - 40/41 -
- -
- 97.65% - Lines - 125/128 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- mod.ts - -
-
-
-
-
96.99%129/13391.89%34/3797.56%40/4197.65%125/128
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/emverLite/mod.ts.html b/sdk/lib/coverage/lcov-report/lib/emverLite/mod.ts.html deleted file mode 100644 index 5f1c27f71..000000000 --- a/sdk/lib/coverage/lcov-report/lib/emverLite/mod.ts.html +++ /dev/null @@ -1,1056 +0,0 @@ - - - - Code coverage report for lib/emverLite/mod.ts - - - - - - - - - -
-
-

- All files / - lib/emverLite mod.ts -

-
-
- 96.99% - Statements - 129/133 -
- -
- 91.89% - Branches - 34/37 -
- -
- 97.56% - Functions - 40/41 -
- -
- 97.65% - Lines - 125/128 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -3246x -  -6x -  -  -  -  -  -  -4x -4x -4x -  -  -  -  -  -  -  -6x -19x -  -  -  -  -  -  -  -6x -6x -1x -  -5x -5x -  -  -  -  -  -  -  -6x -5x -1x -  -4x -4x -  -  -  -  -  -  -  -6x -1x -  -  -  -  -  -6x -  -  -  -  -  -  -124x -  -  -124x -  -  -  -  -  -  -149x -317x -149x -316x -3x -  -  -146x -  -  -150x -150x -  -  -  -  -  -  -4x -  -  -  -106x -220x -18x -  -202x -35x -  -  -167x -19x -  -  -34x -  -  -  -61x -23x -  -38x -74x -18x -  -  -20x -  -  -24x -  -  -9x -  -  -18x -  -  -  -  -  -  -  -  -6x -2x -4x -2x -  -2x -  -  -  -  -  -  -  -  -3x -  -1x -1x -1x -  -  -  -  -7x -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -55x -19x -  -36x -36x -6x -  -33x -8x -  -29x -1x -12x -9x -  -  -28x -28x -3x -22x -  -25x -25x -4x -4x -  -4x -24x -24x -  -  -  -  -  -  -  -21x -  -1x -1x -6x -6x -  -  -  -2x -2x -9x -9x -  -  -  -  -18x -  -7x -7x -30x -30x -  -  -  -4x -4x -18x -18x -  -  -  -7x -7x -21x -21x -  -  -  -  -  -  -  -  -  -  -38x -38x -  -  -  -  -  -  -  -  -  -  -5x -5x -  -20x -8x -  -12x -12x -6x -  -  -6x -  -5x -  -  -  -  -  -  -  -4x -4x -  -17x -4x -  -13x -13x -4x -  -  -9x -  -4x -  -  -  -  -  -  -  -  -1x -1x -  -  - 
import * as matches from "ts-matches"
- 
-const starSub = /((\d+\.)*\d+)\.\*/
-// prettier-ignore
-export type ValidEmVer = `${number}${`.${number}` | ""}${`.${number}` | ""}${`-${string}` | ""}`;
-// prettier-ignore
-export type ValidEmVerRange = `${'>=' | '<='| '<' | '>' | ''}${'^' | '~' | ''}${number | '*'}${`.${number | '*'}` | ""}${`.${number | '*'}` | ""}${`-${string}` | ""}`;
- 
-function incrementLastNumber(list: number[]) {
-  const newList = [...list]
-  newList[newList.length - 1]++
-  return newList
-}
-/**
- * Will take in a range, like `>1.2` or `<1.2.3.4` or `=1.2` or `1.*`
- * and return a checker, that has the check function for checking that a version is in the valid
- * @param range
- * @returns
- */
-export function rangeOf(range: string | Checker): Checker {
-  return Checker.parse(range)
-}
- 
-/**
- * Used to create a checker that will `and` all the ranges passed in
- * @param ranges
- * @returns
- */
-export function rangeAnd(...ranges: (string | Checker)[]): Checker {
-  if (ranges.length === 0) {
-    throw new Error("No ranges given")
-  }
-  const [firstCheck, ...rest] = ranges
-  return Checker.parse(firstCheck).and(...rest)
-}
- 
-/**
- * Used to create a checker that will `or` all the ranges passed in
- * @param ranges
- * @returns
- */
-export function rangeOr(...ranges: (string | Checker)[]): Checker {
-  if (ranges.length === 0) {
-    throw new Error("No ranges given")
-  }
-  const [firstCheck, ...rest] = ranges
-  return Checker.parse(firstCheck).or(...rest)
-}
- 
-/**
- * This will negate the checker, so given a checker that checks for >= 1.0.0, it will check for < 1.0.0
- * @param range
- * @returns
- */
-export function notRange(range: string | Checker): Checker {
-  return rangeOf(range).not()
-}
- 
-/**
- * EmVer is a set of versioning of any pattern like 1 or 1.2 or 1.2.3 or 1.2.3.4 or ..
- */
-export class EmVer {
-  /**
-   * Convert the range, should be 1.2.* or * into a emver
-   * Or an already made emver
-   * IsUnsafe
-   */
-  static from(range: string | EmVer): EmVer {
-    Iif (range instanceof EmVer) {
-      return range
-    }
-    return EmVer.parse(range)
-  }
-  /**
-   * Convert the range, should be 1.2.* or * into a emver
-   * IsUnsafe
-   */
-  static parse(rangeExtra: string): EmVer {
-    const [range, extra] = rangeExtra.split("-")
-    const values = range.split(".").map((x) => parseInt(x))
-    for (const value of values) {
-      if (isNaN(value)) {
-        throw new Error(`Couldn't parse range: ${range}`)
-      }
-    }
-    return new EmVer(values, extra)
-  }
-  private constructor(
-    public readonly values: number[],
-    readonly extra: string | null,
-  ) {}
- 
-  /**
-   * Used when we need a new emver that has the last number incremented, used in the 1.* like things
-   */
-  public withLastIncremented() {
-    return new EmVer(incrementLastNumber(this.values), null)
-  }
- 
-  public greaterThan(other: EmVer): boolean {
-    for (const i in this.values) {
-      if (other.values[i] == null) {
-        return true
-      }
-      if (this.values[i] > other.values[i]) {
-        return true
-      }
- 
-      if (this.values[i] < other.values[i]) {
-        return false
-      }
-    }
-    return false
-  }
- 
-  public equals(other: EmVer): boolean {
-    if (other.values.length !== this.values.length) {
-      return false
-    }
-    for (const i in this.values) {
-      if (this.values[i] !== other.values[i]) {
-        return false
-      }
-    }
-    return true
-  }
-  public greaterThanOrEqual(other: EmVer): boolean {
-    return this.greaterThan(other) || this.equals(other)
-  }
-  public lessThanOrEqual(other: EmVer): boolean {
-    return !this.greaterThan(other)
-  }
-  public lessThan(other: EmVer): boolean {
-    return !this.greaterThanOrEqual(other)
-  }
-  /**
-   * Return a enum string that describes (used for switching/iffs)
-   * to know comparison
-   * @param other
-   * @returns
-   */
-  public compare(other: EmVer) {
-    if (this.equals(other)) {
-      return "equal" as const
-    } else if (this.greaterThan(other)) {
-      return "greater" as const
-    } else {
-      return "less" as const
-    }
-  }
-  /**
-   * Used when sorting emver's in a list using the sort method
-   * @param other
-   * @returns
-   */
-  public compareForSort(other: EmVer) {
-    return matches
-      .matches(this.compare(other))
-      .when("equal", () => 0 as const)
-      .when("greater", () => 1 as const)
-      .when("less", () => -1 as const)
-      .unwrap()
-  }
- 
-  toString() {
-    return `${this.values.join(".")}${this.extra ? `-${this.extra}` : ""}` as ValidEmVer
-  }
-}
- 
-/**
- * A checker is a function that takes a version and returns true if the version matches the checker.
- * Used when we are doing range checking, like saying ">=1.0.0".check("1.2.3") will be true
- */
-export class Checker {
-  /**
-   * Will take in a range, like `>1.2` or `<1.2.3.4` or `=1.2` or `1.*`
-   * and return a checker, that has the check function for checking that a version is in the valid
-   * @param range
-   * @returns
-   */
-  static parse(range: string | Checker): Checker {
-    if (range instanceof Checker) {
-      return range
-    }
-    range = range.trim()
-    if (range.indexOf("||") !== -1) {
-      return rangeOr(...range.split("||").map((x) => Checker.parse(x)))
-    }
-    if (range.indexOf("&&") !== -1) {
-      return rangeAnd(...range.split("&&").map((x) => Checker.parse(x)))
-    }
-    if (range === "*") {
-      return new Checker((version) => {
-        EmVer.from(version)
-        return true
-      }, range)
-    }
-    Iif (range.startsWith("!!")) return Checker.parse(range.substring(2))
-    if (range.startsWith("!")) {
-      const tempValue = Checker.parse(range.substring(1))
-      return new Checker((x) => !tempValue.check(x), range)
-    }
-    const starSubMatches = starSub.exec(range)
-    if (starSubMatches != null) {
-      const emVarLower = EmVer.parse(starSubMatches[1])
-      const emVarUpper = emVarLower.withLastIncremented()
- 
-      return new Checker((version) => {
-        const v = EmVer.from(version)
-        return (
-          (v.greaterThan(emVarLower) || v.equals(emVarLower)) &&
-          !v.greaterThan(emVarUpper) &&
-          !v.equals(emVarUpper)
-        )
-      }, range)
-    }
- 
-    switch (range.substring(0, 2)) {
-      case ">=": {
-        const emVar = EmVer.parse(range.substring(2))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.greaterThanOrEqual(emVar)
-        }, range)
-      }
-      case "<=": {
-        const emVar = EmVer.parse(range.substring(2))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.lessThanOrEqual(emVar)
-        }, range)
-      }
-    }
- 
-    switch (range.substring(0, 1)) {
-      case ">": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.greaterThan(emVar)
-        }, range)
-      }
-      case "<": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.lessThan(emVar)
-        }, range)
-      }
-      case "=": {
-        const emVar = EmVer.parse(range.substring(1))
-        return new Checker((version) => {
-          const v = EmVer.from(version)
-          return v.equals(emVar)
-        }, `=${emVar.toString()}`)
-      }
-    }
-    throw new Error("Couldn't parse range: " + range)
-  }
-  constructor(
-    /**
-     * Check is the function that will be given a emver or unparsed emver and should give if it follows
-     * a pattern
-     */
-    public readonly check: (value: ValidEmVer | EmVer) => boolean,
-    private readonly _range: string,
-  ) {}
- 
-  get range() {
-    return this._range as ValidEmVerRange
-  }
- 
-  /**
-   * Used when we want the `and` condition with another checker
-   */
-  public and(...others: (Checker | string)[]): Checker {
-    const othersCheck = others.map(Checker.parse)
-    return new Checker(
-      (value) => {
-        if (!this.check(value)) {
-          return false
-        }
-        for (const other of othersCheck) {
-          if (!other.check(value)) {
-            return false
-          }
-        }
-        return true
-      },
-      othersCheck.map((x) => x._range).join(" && "),
-    )
-  }
- 
-  /**
-   * Used when we want the `or` condition with another checker
-   */
-  public or(...others: (Checker | string)[]): Checker {
-    const othersCheck = others.map(Checker.parse)
-    return new Checker(
-      (value) => {
-        if (this.check(value)) {
-          return true
-        }
-        for (const other of othersCheck) {
-          if (other.check(value)) {
-            return true
-          }
-        }
-        return false
-      },
-      othersCheck.map((x) => x._range).join(" || "),
-    )
-  }
- 
-  /**
-   * A useful example is making sure we don't match an exact version, like !=1.2.3
-   * @returns
-   */
-  public not(): Checker {
-    let newRange = `!${this._range}`
-    return Checker.parse(newRange)
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/exver/exver.ts.html b/sdk/lib/coverage/lcov-report/lib/exver/exver.ts.html deleted file mode 100644 index 2641cd496..000000000 --- a/sdk/lib/coverage/lcov-report/lib/exver/exver.ts.html +++ /dev/null @@ -1,7608 +0,0 @@ - - - - Code coverage report for lib/exver/exver.ts - - - - - - - - - -
-
-

- All files / - lib/exver exver.ts -

-
-
- 73.61% - Statements - 611/830 -
- -
- 62.5% - Branches - 185/296 -
- -
- 69.31% - Functions - 61/88 -
- -
- 73.76% - Lines - 582/789 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323 -1324 -1325 -1326 -1327 -1328 -1329 -1330 -1331 -1332 -1333 -1334 -1335 -1336 -1337 -1338 -1339 -1340 -1341 -1342 -1343 -1344 -1345 -1346 -1347 -1348 -1349 -1350 -1351 -1352 -1353 -1354 -1355 -1356 -1357 -1358 -1359 -1360 -1361 -1362 -1363 -1364 -1365 -1366 -1367 -1368 -1369 -1370 -1371 -1372 -1373 -1374 -1375 -1376 -1377 -1378 -1379 -1380 -1381 -1382 -1383 -1384 -1385 -1386 -1387 -1388 -1389 -1390 -1391 -1392 -1393 -1394 -1395 -1396 -1397 -1398 -1399 -1400 -1401 -1402 -1403 -1404 -1405 -1406 -1407 -1408 -1409 -1410 -1411 -1412 -1413 -1414 -1415 -1416 -1417 -1418 -1419 -1420 -1421 -1422 -1423 -1424 -1425 -1426 -1427 -1428 -1429 -1430 -1431 -1432 -1433 -1434 -1435 -1436 -1437 -1438 -1439 -1440 -1441 -1442 -1443 -1444 -1445 -1446 -1447 -1448 -1449 -1450 -1451 -1452 -1453 -1454 -1455 -1456 -1457 -1458 -1459 -1460 -1461 -1462 -1463 -1464 -1465 -1466 -1467 -1468 -1469 -1470 -1471 -1472 -1473 -1474 -1475 -1476 -1477 -1478 -1479 -1480 -1481 -1482 -1483 -1484 -1485 -1486 -1487 -1488 -1489 -1490 -1491 -1492 -1493 -1494 -1495 -1496 -1497 -1498 -1499 -1500 -1501 -1502 -1503 -1504 -1505 -1506 -1507 -1508 -1509 -1510 -1511 -1512 -1513 -1514 -1515 -1516 -1517 -1518 -1519 -1520 -1521 -1522 -1523 -1524 -1525 -1526 -1527 -1528 -1529 -1530 -1531 -1532 -1533 -1534 -1535 -1536 -1537 -1538 -1539 -1540 -1541 -1542 -1543 -1544 -1545 -1546 -1547 -1548 -1549 -1550 -1551 -1552 -1553 -1554 -1555 -1556 -1557 -1558 -1559 -1560 -1561 -1562 -1563 -1564 -1565 -1566 -1567 -1568 -1569 -1570 -1571 -1572 -1573 -1574 -1575 -1576 -1577 -1578 -1579 -1580 -1581 -1582 -1583 -1584 -1585 -1586 -1587 -1588 -1589 -1590 -1591 -1592 -1593 -1594 -1595 -1596 -1597 -1598 -1599 -1600 -1601 -1602 -1603 -1604 -1605 -1606 -1607 -1608 -1609 -1610 -1611 -1612 -1613 -1614 -1615 -1616 -1617 -1618 -1619 -1620 -1621 -1622 -1623 -1624 -1625 -1626 -1627 -1628 -1629 -1630 -1631 -1632 -1633 -1634 -1635 -1636 -1637 -1638 -1639 -1640 -1641 -1642 -1643 -1644 -1645 -1646 -1647 -1648 -1649 -1650 -1651 -1652 -1653 -1654 -1655 -1656 -1657 -1658 -1659 -1660 -1661 -1662 -1663 -1664 -1665 -1666 -1667 -1668 -1669 -1670 -1671 -1672 -1673 -1674 -1675 -1676 -1677 -1678 -1679 -1680 -1681 -1682 -1683 -1684 -1685 -1686 -1687 -1688 -1689 -1690 -1691 -1692 -1693 -1694 -1695 -1696 -1697 -1698 -1699 -1700 -1701 -1702 -1703 -1704 -1705 -1706 -1707 -1708 -1709 -1710 -1711 -1712 -1713 -1714 -1715 -1716 -1717 -1718 -1719 -1720 -1721 -1722 -1723 -1724 -1725 -1726 -1727 -1728 -1729 -1730 -1731 -1732 -1733 -1734 -1735 -1736 -1737 -1738 -1739 -1740 -1741 -1742 -1743 -1744 -1745 -1746 -1747 -1748 -1749 -1750 -1751 -1752 -1753 -1754 -1755 -1756 -1757 -1758 -1759 -1760 -1761 -1762 -1763 -1764 -1765 -1766 -1767 -1768 -1769 -1770 -1771 -1772 -1773 -1774 -1775 -1776 -1777 -1778 -1779 -1780 -1781 -1782 -1783 -1784 -1785 -1786 -1787 -1788 -1789 -1790 -1791 -1792 -1793 -1794 -1795 -1796 -1797 -1798 -1799 -1800 -1801 -1802 -1803 -1804 -1805 -1806 -1807 -1808 -1809 -1810 -1811 -1812 -1813 -1814 -1815 -1816 -1817 -1818 -1819 -1820 -1821 -1822 -1823 -1824 -1825 -1826 -1827 -1828 -1829 -1830 -1831 -1832 -1833 -1834 -1835 -1836 -1837 -1838 -1839 -1840 -1841 -1842 -1843 -1844 -1845 -1846 -1847 -1848 -1849 -1850 -1851 -1852 -1853 -1854 -1855 -1856 -1857 -1858 -1859 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -1881 -1882 -1883 -1884 -1885 -1886 -1887 -1888 -1889 -1890 -1891 -1892 -1893 -1894 -1895 -1896 -1897 -1898 -1899 -1900 -1901 -1902 -1903 -1904 -1905 -1906 -1907 -1908 -1909 -1910 -1911 -1912 -1913 -1914 -1915 -1916 -1917 -1918 -1919 -1920 -1921 -1922 -1923 -1924 -1925 -1926 -1927 -1928 -1929 -1930 -1931 -1932 -1933 -1934 -1935 -1936 -1937 -1938 -1939 -1940 -1941 -1942 -1943 -1944 -1945 -1946 -1947 -1948 -1949 -1950 -1951 -1952 -1953 -1954 -1955 -1956 -1957 -1958 -1959 -1960 -1961 -1962 -1963 -1964 -1965 -1966 -1967 -1968 -1969 -1970 -1971 -1972 -1973 -1974 -1975 -1976 -1977 -1978 -1979 -1980 -1981 -1982 -1983 -1984 -1985 -1986 -1987 -1988 -1989 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -1998 -1999 -2000 -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008 -2009 -2010 -2011 -2012 -2013 -2014 -2015 -2016 -2017 -2018 -2019 -2020 -2021 -2022 -2023 -2024 -2025 -2026 -2027 -2028 -2029 -2030 -2031 -2032 -2033 -2034 -2035 -2036 -2037 -2038 -2039 -2040 -2041 -2042 -2043 -2044 -2045 -2046 -2047 -2048 -2049 -2050 -2051 -2052 -2053 -2054 -2055 -2056 -2057 -2058 -2059 -2060 -2061 -2062 -2063 -2064 -2065 -2066 -2067 -2068 -2069 -2070 -2071 -2072 -2073 -2074 -2075 -2076 -2077 -2078 -2079 -2080 -2081 -2082 -2083 -2084 -2085 -2086 -2087 -2088 -2089 -2090 -2091 -2092 -2093 -2094 -2095 -2096 -2097 -2098 -2099 -2100 -2101 -2102 -2103 -2104 -2105 -2106 -2107 -2108 -2109 -2110 -2111 -2112 -2113 -2114 -2115 -2116 -2117 -2118 -2119 -2120 -2121 -2122 -2123 -2124 -2125 -2126 -2127 -2128 -2129 -2130 -2131 -2132 -2133 -2134 -2135 -2136 -2137 -2138 -2139 -2140 -2141 -2142 -2143 -2144 -2145 -2146 -2147 -2148 -2149 -2150 -2151 -2152 -2153 -2154 -2155 -2156 -2157 -2158 -2159 -2160 -2161 -2162 -2163 -2164 -2165 -2166 -2167 -2168 -2169 -2170 -2171 -2172 -2173 -2174 -2175 -2176 -2177 -2178 -2179 -2180 -2181 -2182 -2183 -2184 -2185 -2186 -2187 -2188 -2189 -2190 -2191 -2192 -2193 -2194 -2195 -2196 -2197 -2198 -2199 -2200 -2201 -2202 -2203 -2204 -2205 -2206 -2207 -2208 -2209 -2210 -2211 -2212 -2213 -2214 -2215 -2216 -2217 -2218 -2219 -2220 -2221 -2222 -2223 -2224 -2225 -2226 -2227 -2228 -2229 -2230 -2231 -2232 -2233 -2234 -2235 -2236 -2237 -2238 -2239 -2240 -2241 -2242 -2243 -2244 -2245 -2246 -2247 -2248 -2249 -2250 -2251 -2252 -2253 -2254 -2255 -2256 -2257 -2258 -2259 -2260 -2261 -2262 -2263 -2264 -2265 -2266 -2267 -2268 -2269 -2270 -2271 -2272 -2273 -2274 -2275 -2276 -2277 -2278 -2279 -2280 -2281 -2282 -2283 -2284 -2285 -2286 -2287 -2288 -2289 -2290 -2291 -2292 -2293 -2294 -2295 -2296 -2297 -2298 -2299 -2300 -2301 -2302 -2303 -2304 -2305 -2306 -2307 -2308 -2309 -2310 -2311 -2312 -2313 -2314 -2315 -2316 -2317 -2318 -2319 -2320 -2321 -2322 -2323 -2324 -2325 -2326 -2327 -2328 -2329 -2330 -2331 -2332 -2333 -2334 -2335 -2336 -2337 -2338 -2339 -2340 -2341 -2342 -2343 -2344 -2345 -2346 -2347 -2348 -2349 -2350 -2351 -2352 -2353 -2354 -2355 -2356 -2357 -2358 -2359 -2360 -2361 -2362 -2363 -2364 -2365 -2366 -2367 -2368 -2369 -2370 -2371 -2372 -2373 -2374 -2375 -2376 -2377 -2378 -2379 -2380 -2381 -2382 -2383 -2384 -2385 -2386 -2387 -2388 -2389 -2390 -2391 -2392 -2393 -2394 -2395 -2396 -2397 -2398 -2399 -2400 -2401 -2402 -2403 -2404 -2405 -2406 -2407 -2408 -2409 -2410 -2411 -2412 -2413 -2414 -2415 -2416 -2417 -2418 -2419 -2420 -2421 -2422 -2423 -2424 -2425 -2426 -2427 -2428 -2429 -2430 -2431 -2432 -2433 -2434 -2435 -2436 -2437 -2438 -2439 -2440 -2441 -2442 -2443 -2444 -2445 -2446 -2447 -2448 -2449 -2450 -2451 -2452 -2453 -2454 -2455 -2456 -2457 -2458 -2459 -2460 -2461 -2462 -2463 -2464 -2465 -2466 -2467 -2468 -2469 -2470 -2471 -2472 -2473 -2474 -2475 -2476 -2477 -2478 -2479 -2480 -2481 -2482 -2483 -2484 -2485 -2486 -2487 -2488 -2489 -2490 -2491 -2492 -2493 -2494 -2495 -2496 -2497 -2498 -2499 -2500 -2501 -2502 -2503 -2504 -2505 -2506 -2507 -2508  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -6x -  -6x -  -6x -  -  -  -  -  -3x -  -  -  -  -  -  -  -3x -  -3x -  -3x -  -3x -  -3x -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -3x -  -  -  -2x -  -  -  -  -  -3x -  -3x -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -3x -  -  -  -  -3x -  -  -3x -  -3x -  -2x -  -2x -  -2x -  -  -  -3x -  -  -  -3x -  -  -  -1x -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -3x -  -  -  -  -  -127x -  -  -127x -  -127x -  -  -127x -  -127x -  -  -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -  -127x -127x -127x -127x -  -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -127x -  -  -127x -  -  -127x -24x -  -127x -24x -  -127x -2x -  -127x -1x -  -127x -  -  -127x -1x -  -127x -2x -  -127x -7x -  -127x -4x -  -127x -7x -  -127x -  -  -127x -  -  -127x -3x -  -127x -  -106x -  -  -127x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -127x -  -  -127x -  -  -127x -1x -  -127x -  -242x -  -  -  -  -  -  -  -127x -  -1x -  -  -127x -  -2x -  -  -127x -  -242x -  -  -127x -393x -  -127x -  -127x -  -127x -  -127x -  -127x -  -127x -  -  -  -  -  -127x -  -127x -  -  -  -  -  -127x -  -  -  -  -  -394x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2286x -  -  -  -  -  -508x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -127x -  -  -  -  -  -6x -  -  -  -  -6x -  -3x -  -  -  -3x -  -3x -  -1x -  -  -  -3x -  -3x -  -  -  -  -  -  -  -3x -  -4x -  -  -  -  -  -  -  -4x -  -  -  -4x -  -  -  -3x -  -  -3x -  -  -  -  -  -  -3x -  -3x -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -3x -  -  -  -  -  -1542x -  -  -1540x -  -438x -  -438x -  -  -  -1540x -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -18x -  -18x -  -18x -  -18x -  -18x -  -18x -  -18x -  -18x -  -18x -  -17x -  -  -18x -  -4x -  -4x -  -4x -  -  -  -14x -  -14x -  -  -18x -  -14x -  -  -18x -  -18x -  -4x -  -4x -  -  -  -14x -  -14x -  -  -18x -  -7x -  -7x -  -7x -  -7x -  -7x -  -7x -  -5x -  -  -7x -  -3x -  -3x -  -3x -  -  -  -4x -  -4x -  -  -7x -  -4x -  -  -7x -  -7x -  -3x -  -3x -  -  -  -4x -  -4x -  -  -  -18x -  -18x -  -  -  -  -  -  -  -  -  -18x -  -  -  -  -  -  -  -  -  -25x -  -3x -  -3x -  -  -  -22x -  -22x -  -  -  -25x -  -  -  -  -  -  -  -  -  -22x -  -4x -  -4x -  -  -  -18x -  -18x -  -  -  -22x -  -  -  -  -  -  -  -  -  -45x -  -45x -  -45x -  -45x -  -21x -  -21x -  -19x -  -19x -  -18x -  -  -  -  -  -  -45x -  -  -  -  -  -  -  -  -  -45x -  -45x -  -  -  -  -  -  -  -45x -  -45x -  -  -45x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -45x -  -45x -  -  -  -45x -  -  -  -  -  -  -  -  -  -45x -  -45x -  -45x -  -21x -  -  -45x -  -45x -  -45x -  -24x -  -24x -  -  -  -21x -  -21x -  -  -  -45x -  -  -  -  -  -  -  -  -  -45x -  -45x -  -45x -  -45x -  -  -45x -  -45x -  -24x -  -24x -  -5x -  -5x -  -  -  -19x -  -19x -  -  -24x -  -5x -  -5x -  -5x -  -5x -  -  -  -  -  -  -  -  -  -  -19x -  -19x -  -  -24x -  -19x -  -  -24x -  -24x -  -  -  -21x -  -21x -  -  -  -45x -  -  -  -  -  -  -  -  -  -21x -  -21x -  -2x -  -2x -  -  -  -19x -  -19x -  -  -21x -  -2x -  -2x -  -2x -  -2x -  -2x -  -  -  -  -  -  -  -  -  -  -19x -  -19x -  -  -  -21x -  -  -  -  -  -  -  -  -  -19x -  -19x -  -1x -  -1x -  -  -  -18x -  -18x -  -  -19x -  -1x -  -1x -  -  -19x -  -  -19x -  -  -  -  -  -  -  -  -  -18x -  -18x -  -  -  -  -  -  -  -18x -  -18x -  -  -18x -  -  -  -  -  -  -18x -  -  -18x -  -  -  -  -  -  -  -  -  -45x -  -45x -  -1x -  -1x -  -  -  -44x -  -44x -  -  -45x -  -1x -  -1x -  -  -45x -  -45x -  -44x -  -44x -  -2x -  -2x -  -  -  -42x -  -42x -  -  -44x -  -2x -  -2x -  -  -44x -  -44x -  -42x -  -42x -  -7x -  -7x -  -  -  -35x -  -35x -  -  -42x -  -7x -  -7x -  -  -42x -  -42x -  -35x -  -35x -  -4x -  -4x -  -  -  -31x -  -31x -  -  -35x -  -4x -  -4x -  -  -35x -  -35x -  -31x -  -31x -  -7x -  -7x -  -  -  -24x -  -24x -  -  -31x -  -7x -  -7x -  -  -31x -  -31x -  -24x -  -24x -  -  -  -  -  -  -  -24x -  -24x -  -  -24x -  -  -  -  -  -  -24x -  -24x -  -24x -  -24x -  -  -  -  -  -  -  -24x -  -24x -  -  -24x -  -  -  -  -  -  -24x -  -24x -  -24x -  -24x -  -3x -  -3x -  -  -  -21x -  -21x -  -  -24x -  -3x -  -3x -  -  -24x -  -  -  -  -  -  -  -  -  -45x -  -  -  -  -  -  -  -  -  -109x -  -109x -  -109x -  -109x -  -  -109x -  -109x -  -107x -  -106x -  -106x -  -  -  -1x -  -1x -  -  -107x -  -106x -  -106x -  -106x -  -106x -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -  -  -  -2x -  -2x -  -  -  -109x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -154x -  -154x -  -  -  -  -  -  -  -154x -  -154x -  -  -154x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -154x -  -154x -  -  -  -154x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -  -  -  -  -  -  -  -1x -  -1x -  -4x -  -4x -  -3x -  -3x -  -  -  -1x -  -1x -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -  -1x -  -  -1x -  -  -  -  -  -  -  -  -  -265x -  -265x -  -265x -  -242x -  -242x -  -241x -  -  -242x -  -242x -  -  -  -23x -  -23x -  -  -  -265x -  -  -  -  -  -  -  -  -  -242x -  -242x -  -1x -  -1x -  -  -  -241x -  -241x -  -  -242x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -1x -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -1x -  -  -  -  -  -  -  -1x -  -1x -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -  -  -  -1x -  -1x -  -  -  -  -  -  -  -  -  -  -241x -  -241x -  -  -  -242x -  -  -  -  -  -  -  -  -  -2x -  -2x -  -  -  -  -  -  -  -2x -  -2x -  -  -2x -  -2x -  -  -2x -  -2x -  -1x -  -  -2x -  -2x -  -2x -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -265x -  -265x -  -265x -  -242x -  -242x -  -242x -  -93x -  -93x -  -  -  -149x -  -149x -  -  -242x -  -93x -  -93x -  -92x -  -92x -  -  -  -1x -  -1x -  -  -  -  -149x -  -149x -  -  -242x -  -150x -  -150x -  -150x -  -58x -  -58x -  -  -  -92x -  -92x -  -  -150x -  -58x -  -58x -  -58x -  -58x -  -  -  -  -  -  -  -  -  -  -92x -  -92x -  -  -  -242x -  -242x -  -  -  -23x -  -23x -  -  -  -265x -  -  -  -  -  -  -  -  -  -418x -  -418x -  -418x -  -393x -  -393x -  -  -  -25x -  -25x -  -  -418x -  -393x -  -395x -  -395x -  -2x -  -2x -  -  -  -393x -  -393x -  -  -  -  -  -25x -  -  -418x -  -393x -  -393x -  -  -418x -  -  -418x -  -  -  -  -  -  -  -  -  -79x -  -79x -  -79x -  -14x -  -14x -  -  -  -65x -  -65x -  -  -79x -  -14x -  -14x -  -  -  -  -  -  -  -14x -  -14x -  -  -  -79x -  -79x -  -79x -  -  -79x -  -  -  -127x -  -  -127x -  -124x -  -  -  -3x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/* eslint-disable */
- 
- 
- 
-const peggyParser: {parse: any, SyntaxError: any, DefaultTracer?: any} = // Generated by Peggy 3.0.2.
-//
-// https://peggyjs.org/
-// @ts-ignore
-(function() {
-// @ts-ignore
-  "use strict";
- 
-// @ts-ignore
-function peg$subclass(child, parent) {
-// @ts-ignore
-  function C() { this.constructor = child; }
-// @ts-ignore
-  C.prototype = parent.prototype;
-// @ts-ignore
-  child.prototype = new C();
-}
- 
-// @ts-ignore
-function peg$SyntaxError(message, expected, found, location) {
-// @ts-ignore
-  var self = Error.call(this, message);
-  // istanbul ignore next Check is a necessary evil to support older environments
-// @ts-ignore
-  if (Object.setPrototypeOf) {
-// @ts-ignore
-    Object.setPrototypeOf(self, peg$SyntaxError.prototype);
-  }
-// @ts-ignore
-  self.expected = expected;
-// @ts-ignore
-  self.found = found;
-// @ts-ignore
-  self.location = location;
-// @ts-ignore
-  self.name = "SyntaxError";
-// @ts-ignore
-  return self;
-}
- 
-// @ts-ignore
-peg$subclass(peg$SyntaxError, Error);
- 
-// @ts-ignore
-function peg$padEnd(str, targetLength, padString) {
-// @ts-ignore
-  padString = padString || " ";
-// @ts-ignore
-  Iif (str.length > targetLength) { return str; }
-// @ts-ignore
-  targetLength -= str.length;
-// @ts-ignore
-  padString += padString.repeat(targetLength);
-// @ts-ignore
-  return str + padString.slice(0, targetLength);
-}
- 
-// @ts-ignore
-peg$SyntaxError.prototype.format = function(sources) {
-// @ts-ignore
-  var str = "Error: " + this.message;
-// @ts-ignore
-  Iif (this.location) {
-// @ts-ignore
-    var src = null;
-// @ts-ignore
-    var k;
-// @ts-ignore
-    for (k = 0; k < sources.length; k++) {
-// @ts-ignore
-      Iif (sources[k].source === this.location.source) {
-// @ts-ignore
-        src = sources[k].text.split(/\r\n|\n|\r/g);
-// @ts-ignore
-        break;
-      }
-    }
-// @ts-ignore
-    var s = this.location.start;
-// @ts-ignore
-    var offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
-// @ts-ignore
-      ? this.location.source.offset(s)
-// @ts-ignore
-      : s;
-// @ts-ignore
-    var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
-// @ts-ignore
-    if (src) {
-// @ts-ignore
-      var e = this.location.end;
-// @ts-ignore
-      var filler = peg$padEnd("", offset_s.line.toString().length, ' ');
-// @ts-ignore
-      var line = src[s.line - 1];
-// @ts-ignore
-      var last = s.line === e.line ? e.column : line.length + 1;
-// @ts-ignore
-      var hatLen = (last - s.column) || 1;
-// @ts-ignore
-      str += "\n --> " + loc + "\n"
-// @ts-ignore
-          + filler + " |\n"
-// @ts-ignore
-          + offset_s.line + " | " + line + "\n"
-// @ts-ignore
-          + filler + " | " + peg$padEnd("", s.column - 1, ' ')
-// @ts-ignore
-          + peg$padEnd("", hatLen, "^");
-// @ts-ignore
-    } else {
-// @ts-ignore
-      str += "\n at " + loc;
-    }
-  }
-// @ts-ignore
-  return str;
-};
- 
-// @ts-ignore
-peg$SyntaxError.buildMessage = function(expected, found) {
-// @ts-ignore
-  var DESCRIBE_EXPECTATION_FNS = {
-// @ts-ignore
-    literal: function(expectation) {
-// @ts-ignore
-      return "\"" + literalEscape(expectation.text) + "\"";
-    },
- 
-// @ts-ignore
-    class: function(expectation) {
-// @ts-ignore
-      var escapedParts = expectation.parts.map(function(part) {
-// @ts-ignore
-        return Array.isArray(part)
-// @ts-ignore
-          ? classEscape(part[0]) + "-" + classEscape(part[1])
-// @ts-ignore
-          : classEscape(part);
-      });
- 
-// @ts-ignore
-      return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
-    },
- 
-// @ts-ignore
-    any: function() {
-// @ts-ignore
-      return "any character";
-    },
- 
-// @ts-ignore
-    end: function() {
-// @ts-ignore
-      return "end of input";
-    },
- 
-// @ts-ignore
-    other: function(expectation) {
-// @ts-ignore
-      return expectation.description;
-    }
-  };
- 
-// @ts-ignore
-  function hex(ch) {
-// @ts-ignore
-    return ch.charCodeAt(0).toString(16).toUpperCase();
-  }
- 
-// @ts-ignore
-  function literalEscape(s) {
-// @ts-ignore
-    return s
-// @ts-ignore
-      .replace(/\\/g, "\\\\")
-// @ts-ignore
-      .replace(/"/g,  "\\\"")
-// @ts-ignore
-      .replace(/\0/g, "\\0")
-// @ts-ignore
-      .replace(/\t/g, "\\t")
-// @ts-ignore
-      .replace(/\n/g, "\\n")
-// @ts-ignore
-      .replace(/\r/g, "\\r")
-// @ts-ignore
-      .replace(/[\x00-\x0F]/g,          function(ch) { return "\\x0" + hex(ch); })
-// @ts-ignore
-      .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x"  + hex(ch); });
-  }
- 
-// @ts-ignore
-  function classEscape(s) {
-// @ts-ignore
-    return s
-// @ts-ignore
-      .replace(/\\/g, "\\\\")
-// @ts-ignore
-      .replace(/\]/g, "\\]")
-// @ts-ignore
-      .replace(/\^/g, "\\^")
-// @ts-ignore
-      .replace(/-/g,  "\\-")
-// @ts-ignore
-      .replace(/\0/g, "\\0")
-// @ts-ignore
-      .replace(/\t/g, "\\t")
-// @ts-ignore
-      .replace(/\n/g, "\\n")
-// @ts-ignore
-      .replace(/\r/g, "\\r")
-// @ts-ignore
-      .replace(/[\x00-\x0F]/g,          function(ch) { return "\\x0" + hex(ch); })
-// @ts-ignore
-      .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x"  + hex(ch); });
-  }
- 
-// @ts-ignore
-  function describeExpectation(expectation) {
-// @ts-ignore
-    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
-  }
- 
-// @ts-ignore
-  function describeExpected(expected) {
-// @ts-ignore
-    var descriptions = expected.map(describeExpectation);
-// @ts-ignore
-    var i, j;
- 
-// @ts-ignore
-    descriptions.sort();
- 
-// @ts-ignore
-    if (descriptions.length > 0) {
-// @ts-ignore
-      for (i = 1, j = 1; i < descriptions.length; i++) {
-// @ts-ignore
-        if (descriptions[i - 1] !== descriptions[i]) {
-// @ts-ignore
-          descriptions[j] = descriptions[i];
-// @ts-ignore
-          j++;
-        }
-      }
-// @ts-ignore
-      descriptions.length = j;
-    }
- 
-// @ts-ignore
-    switch (descriptions.length) {
-// @ts-ignore
-      case 1:
-// @ts-ignore
-        return descriptions[0];
- 
-// @ts-ignore
-      case 2:
-// @ts-ignore
-        return descriptions[0] + " or " + descriptions[1];
- 
-// @ts-ignore
-      default:
-// @ts-ignore
-        return descriptions.slice(0, -1).join(", ")
-// @ts-ignore
-          + ", or "
-// @ts-ignore
-          + descriptions[descriptions.length - 1];
-    }
-  }
- 
-// @ts-ignore
-  function describeFound(found) {
-// @ts-ignore
-    return found ? "\"" + literalEscape(found) + "\"" : "end of input";
-  }
- 
-// @ts-ignore
-  return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
-};
- 
-// @ts-ignore
-function peg$parse(input, options) {
-// @ts-ignore
-  options = options !== undefined ? options : {};
- 
-// @ts-ignore
-  var peg$FAILED = {};
-// @ts-ignore
-  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_ };
-// @ts-ignore
-  var peg$startRuleFunction = peg$parseVersionRange;
- 
-// @ts-ignore
-  var peg$c0 = "||";
-  var peg$c1 = "&&";
-  var peg$c2 = "(";
-  var peg$c3 = ")";
-  var peg$c4 = ":";
-  var peg$c5 = "!";
-  var peg$c6 = "*";
-  var peg$c7 = ">=";
-  var peg$c8 = "<=";
-  var peg$c9 = ">";
-  var peg$c10 = "<";
-  var peg$c11 = "=";
-  var peg$c12 = "!=";
-  var peg$c13 = "^";
-  var peg$c14 = "~";
-  var peg$c15 = ".";
-  var peg$c16 = "#";
-  var peg$c17 = "-";
- 
-  var peg$r0 = /^[a-z]/;
-  var peg$r1 = /^[a-zA-Z]/;
-  var peg$r2 = /^[0-9]/;
-  var peg$r3 = /^[ \t\n\r]/;
- 
-  var peg$e0 = peg$literalExpectation("||", false);
-  var peg$e1 = peg$literalExpectation("&&", false);
-  var peg$e2 = peg$literalExpectation("(", false);
-  var peg$e3 = peg$literalExpectation(")", false);
-  var peg$e4 = peg$literalExpectation(":", false);
-  var peg$e5 = peg$literalExpectation("!", false);
-  var peg$e6 = peg$literalExpectation("*", false);
-  var peg$e7 = peg$literalExpectation(">=", false);
-  var peg$e8 = peg$literalExpectation("<=", false);
-  var peg$e9 = peg$literalExpectation(">", false);
-  var peg$e10 = peg$literalExpectation("<", false);
-  var peg$e11 = peg$literalExpectation("=", false);
-  var peg$e12 = peg$literalExpectation("!=", false);
-  var peg$e13 = peg$literalExpectation("^", false);
-  var peg$e14 = peg$literalExpectation("~", false);
-  var peg$e15 = peg$literalExpectation(".", false);
-  var peg$e16 = peg$literalExpectation("#", false);
-  var peg$e17 = peg$classExpectation([["a", "z"]], false, false);
-  var peg$e18 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false);
-  var peg$e19 = peg$literalExpectation("-", false);
-  var peg$e20 = peg$classExpectation([["0", "9"]], false, false);
-  var peg$e21 = peg$otherExpectation("whitespace");
-  var peg$e22 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false);
-// @ts-ignore
- 
-  var peg$f0 = function(expr) {// @ts-ignore
- return { type: "Parens", expr } };// @ts-ignore
- 
-  var peg$f1 = function(operator, version) {// @ts-ignore
- return { type: "Anchor", operator, version } };// @ts-ignore
- 
-  var peg$f2 = function(flavor, upstream, downstream) {// @ts-ignore
- return { flavor: flavor || null, upstream, downstream: downstream ? downstream[1] : { number: [0], prerelease: [] } } };// @ts-ignore
- 
-  var peg$f3 = function(value) {// @ts-ignore
- return { type: "Not", value: value }};// @ts-ignore
- 
-  var peg$f4 = function() {// @ts-ignore
- return { type: "Any" } };// @ts-ignore
- 
-  var peg$f5 = function() {// @ts-ignore
- return { type: "None" } };// @ts-ignore
- 
-  var peg$f6 = function() {// @ts-ignore
- return ">="; };// @ts-ignore
- 
-  var peg$f7 = function() {// @ts-ignore
- return "<="; };// @ts-ignore
- 
-  var peg$f8 = function() {// @ts-ignore
- return ">"; };// @ts-ignore
- 
-  var peg$f9 = function() {// @ts-ignore
- return "<"; };// @ts-ignore
- 
-  var peg$f10 = function() {// @ts-ignore
- return "="; };// @ts-ignore
- 
-  var peg$f11 = function() {// @ts-ignore
- return "!="; };// @ts-ignore
- 
-  var peg$f12 = function() {// @ts-ignore
- return "^"; };// @ts-ignore
- 
-  var peg$f13 = function() {// @ts-ignore
- return "~"; };// @ts-ignore
- 
-  var peg$f14 = function(flavor, upstream, downstream) {
-// @ts-ignore
-    return { flavor: flavor || null, upstream, downstream }
-  };// @ts-ignore
- 
-  var peg$f15 = function(major, minor, patch) {
-// @ts-ignore
-    return {
-// @ts-ignore
-      flavor: null,
-// @ts-ignore
-      upstream: {
-// @ts-ignore
-        number: [major, minor, patch],
-// @ts-ignore
-        prerelease: [],
-      },
-// @ts-ignore
-      downstream: {
-// @ts-ignore
-        number: [revision || 0],
-// @ts-ignore
-        prerelease: [],
-      },
-    }
-  };// @ts-ignore
- 
-  var peg$f16 = function(flavor) {// @ts-ignore
- return flavor };// @ts-ignore
- 
-  var peg$f17 = function() {// @ts-ignore
- return text() };// @ts-ignore
- 
-  var peg$f18 = function() {// @ts-ignore
- return text(); };// @ts-ignore
- 
-  var peg$f19 = function(number, prerelease) {
-// @ts-ignore
-    return { 
-// @ts-ignore
-      number,
-// @ts-ignore
-      prerelease: prerelease || []
-    };
-  };// @ts-ignore
- 
-  var peg$f20 = function(first, rest) {
-// @ts-ignore
-    return [first].concat(rest.map(r => r[1]));
-  };// @ts-ignore
- 
-  var peg$f21 = function(segment) {
-// @ts-ignore
-    return segment;
-  };// @ts-ignore
- 
-  var peg$f22 = function(first, rest) { 
-// @ts-ignore
-    return [first].concat(rest.map(r => r[1]));
-  };// @ts-ignore
- 
-  var peg$f23 = function() {// @ts-ignore
- return parseInt(text(), 10); };
-// @ts-ignore
-  var peg$currPos = 0;
-// @ts-ignore
-  var peg$savedPos = 0;
-// @ts-ignore
-  var peg$posDetailsCache = [{ line: 1, column: 1 }];
-// @ts-ignore
-  var peg$maxFailPos = 0;
-// @ts-ignore
-  var peg$maxFailExpected = [];
-// @ts-ignore
-  var peg$silentFails = 0;
- 
-// @ts-ignore
-  var peg$result;
- 
-// @ts-ignore
-  if ("startRule" in options) {
-// @ts-ignore
-    Iif (!(options.startRule in peg$startRuleFunctions)) {
-// @ts-ignore
-      throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
-    }
- 
-// @ts-ignore
-    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
-  }
- 
-// @ts-ignore
-  function text() {
-// @ts-ignore
-    return input.substring(peg$savedPos, peg$currPos);
-  }
- 
-// @ts-ignore
-  function offset() {
-// @ts-ignore
-    return peg$savedPos;
-  }
- 
-// @ts-ignore
-  function range() {
-// @ts-ignore
-    return {
-// @ts-ignore
-      source: peg$source,
-// @ts-ignore
-      start: peg$savedPos,
-// @ts-ignore
-      end: peg$currPos
-    };
-  }
- 
-// @ts-ignore
-  function location() {
-// @ts-ignore
-    return peg$computeLocation(peg$savedPos, peg$currPos);
-  }
- 
-// @ts-ignore
-  function expected(description, location) {
-// @ts-ignore
-    location = location !== undefined
-// @ts-ignore
-      ? location
-// @ts-ignore
-      : peg$computeLocation(peg$savedPos, peg$currPos);
- 
-// @ts-ignore
-    throw peg$buildStructuredError(
-// @ts-ignore
-      [peg$otherExpectation(description)],
-// @ts-ignore
-      input.substring(peg$savedPos, peg$currPos),
-// @ts-ignore
-      location
-    );
-  }
- 
-// @ts-ignore
-  function error(message, location) {
-// @ts-ignore
-    location = location !== undefined
-// @ts-ignore
-      ? location
-// @ts-ignore
-      : peg$computeLocation(peg$savedPos, peg$currPos);
- 
-// @ts-ignore
-    throw peg$buildSimpleError(message, location);
-  }
- 
-// @ts-ignore
-  function peg$literalExpectation(text, ignoreCase) {
-// @ts-ignore
-    return { type: "literal", text: text, ignoreCase: ignoreCase };
-  }
- 
-// @ts-ignore
-  function peg$classExpectation(parts, inverted, ignoreCase) {
-// @ts-ignore
-    return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
-  }
- 
-// @ts-ignore
-  function peg$anyExpectation() {
-// @ts-ignore
-    return { type: "any" };
-  }
- 
-// @ts-ignore
-  function peg$endExpectation() {
-// @ts-ignore
-    return { type: "end" };
-  }
- 
-// @ts-ignore
-  function peg$otherExpectation(description) {
-// @ts-ignore
-    return { type: "other", description: description };
-  }
- 
-// @ts-ignore
-  function peg$computePosDetails(pos) {
-// @ts-ignore
-    var details = peg$posDetailsCache[pos];
-// @ts-ignore
-    var p;
- 
-// @ts-ignore
-    if (details) {
-// @ts-ignore
-      return details;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      p = pos - 1;
-// @ts-ignore
-      while (!peg$posDetailsCache[p]) {
-// @ts-ignore
-        p--;
-      }
- 
-// @ts-ignore
-      details = peg$posDetailsCache[p];
-// @ts-ignore
-      details = {
-// @ts-ignore
-        line: details.line,
-// @ts-ignore
-        column: details.column
-      };
- 
-// @ts-ignore
-      while (p < pos) {
-// @ts-ignore
-        Iif (input.charCodeAt(p) === 10) {
-// @ts-ignore
-          details.line++;
-// @ts-ignore
-          details.column = 1;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          details.column++;
-        }
- 
-// @ts-ignore
-        p++;
-      }
- 
-// @ts-ignore
-      peg$posDetailsCache[pos] = details;
- 
-// @ts-ignore
-      return details;
-    }
-  }
- 
-// @ts-ignore
-  function peg$computeLocation(startPos, endPos, offset) {
-// @ts-ignore
-    var startPosDetails = peg$computePosDetails(startPos);
-// @ts-ignore
-    var endPosDetails = peg$computePosDetails(endPos);
- 
-// @ts-ignore
-    var res = {
-// @ts-ignore
-      source: peg$source,
-// @ts-ignore
-      start: {
-// @ts-ignore
-        offset: startPos,
-// @ts-ignore
-        line: startPosDetails.line,
-// @ts-ignore
-        column: startPosDetails.column
-      },
-// @ts-ignore
-      end: {
-// @ts-ignore
-        offset: endPos,
-// @ts-ignore
-        line: endPosDetails.line,
-// @ts-ignore
-        column: endPosDetails.column
-      }
-    };
-// @ts-ignore
-    Iif (offset && peg$source && (typeof peg$source.offset === "function")) {
-// @ts-ignore
-      res.start = peg$source.offset(res.start);
-// @ts-ignore
-      res.end = peg$source.offset(res.end);
-    }
-// @ts-ignore
-    return res;
-  }
- 
-// @ts-ignore
-  function peg$fail(expected) {
-// @ts-ignore
-    if (peg$currPos < peg$maxFailPos) { return; }
- 
-// @ts-ignore
-    if (peg$currPos > peg$maxFailPos) {
-// @ts-ignore
-      peg$maxFailPos = peg$currPos;
-// @ts-ignore
-      peg$maxFailExpected = [];
-    }
- 
-// @ts-ignore
-    peg$maxFailExpected.push(expected);
-  }
- 
-// @ts-ignore
-  function peg$buildSimpleError(message, location) {
-// @ts-ignore
-    return new peg$SyntaxError(message, null, null, location);
-  }
- 
-// @ts-ignore
-  function peg$buildStructuredError(expected, found, location) {
-// @ts-ignore
-    return new peg$SyntaxError(
-// @ts-ignore
-      peg$SyntaxError.buildMessage(expected, found),
-// @ts-ignore
-      expected,
-// @ts-ignore
-      found,
-// @ts-ignore
-      location
-    );
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseVersionRange() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5, s6, s7;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseVersionRangeAtom();
-// @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$parseVersionRangeAtom();
-// @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$parseVersionRangeAtom();
-// @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 E{
-// @ts-ignore
-      peg$currPos = s0;
-// @ts-ignore
-      s0 = peg$FAILED;
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseOr() {
-// @ts-ignore
-    var s0;
- 
-// @ts-ignore
-    if (input.substr(peg$currPos, 2) === peg$c0) {
-// @ts-ignore
-      s0 = peg$c0;
-// @ts-ignore
-      peg$currPos += 2;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s0 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e0); }
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseAnd() {
-// @ts-ignore
-    var s0;
- 
-// @ts-ignore
-    if (input.substr(peg$currPos, 2) === peg$c1) {
-// @ts-ignore
-      s0 = peg$c1;
-// @ts-ignore
-      peg$currPos += 2;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s0 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e1); }
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseVersionRangeAtom() {
-// @ts-ignore
-    var s0;
- 
-// @ts-ignore
-    s0 = peg$parseParens();
-// @ts-ignore
-    if (s0 === peg$FAILED) {
-// @ts-ignore
-      s0 = peg$parseAnchor();
-// @ts-ignore
-      if (s0 === peg$FAILED) {
-// @ts-ignore
-        s0 = peg$parseNot();
-// @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$parseParens() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    Iif (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
-    Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-      s2 = peg$parse_();
-// @ts-ignore
-      s3 = peg$parseVersionRange();
-// @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
-          Iif (peg$silentFails === 0) { peg$fail(peg$e3); }
-        }
-// @ts-ignore
-        if (s5 !== peg$FAILED) {
-// @ts-ignore
-          peg$savedPos = s0;
-// @ts-ignore
-          s0 = peg$f0(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$parseAnchor() {
-// @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$parseVersionSpec();
-// @ts-ignore
-    if (s3 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s0 = peg$f1(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$parseVersionSpec() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseFlavor();
-// @ts-ignore
-    if (s1 === peg$FAILED) {
-// @ts-ignore
-      s1 = null;
-    }
-// @ts-ignore
-    s2 = peg$parseVersion();
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      s3 = peg$currPos;
-// @ts-ignore
-      if (input.charCodeAt(peg$currPos) === 58) {
-// @ts-ignore
-        s4 = peg$c4;
-// @ts-ignore
-        peg$currPos++;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s4 = peg$FAILED;
-// @ts-ignore
-        if (peg$silentFails === 0) { peg$fail(peg$e4); }
-      }
-// @ts-ignore
-      if (s4 !== peg$FAILED) {
-// @ts-ignore
-        s5 = peg$parseVersion();
-// @ts-ignore
-        if (s5 !== peg$FAILED) {
-// @ts-ignore
-          s4 = [s4, s5];
-// @ts-ignore
-          s3 = s4;
-// @ts-ignore
-        } else E{
-// @ts-ignore
-          peg$currPos = s3;
-// @ts-ignore
-          s3 = peg$FAILED;
-        }
-// @ts-ignore
-      } else {
-// @ts-ignore
-        peg$currPos = s3;
-// @ts-ignore
-        s3 = peg$FAILED;
-      }
-// @ts-ignore
-      if (s3 === peg$FAILED) {
-// @ts-ignore
-        s3 = null;
-      }
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s0 = peg$f2(s1, s2, s3);
-// @ts-ignore
-    } else {
-// @ts-ignore
-      peg$currPos = s0;
-// @ts-ignore
-      s0 = peg$FAILED;
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseNot() {
-// @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$parseVersionRangeAtom();
-// @ts-ignore
-      if (s3 !== peg$FAILED) {
-// @ts-ignore
-        peg$savedPos = s0;
-// @ts-ignore
-        s0 = peg$f3(s3);
-// @ts-ignore
-      } else E{
-// @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$parseAny() {
-// @ts-ignore
-    var s0, s1;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    if (input.charCodeAt(peg$currPos) === 42) {
-// @ts-ignore
-      s1 = peg$c6;
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e6); }
-    }
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f4();
-    }
-// @ts-ignore
-    s0 = s1;
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseNone() {
-// @ts-ignore
-    var s0, s1;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    Iif (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
-    Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f5();
-    }
-// @ts-ignore
-    s0 = s1;
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseCmpOp() {
-// @ts-ignore
-    var s0, s1;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    if (input.substr(peg$currPos, 2) === peg$c7) {
-// @ts-ignore
-      s1 = peg$c7;
-// @ts-ignore
-      peg$currPos += 2;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e7); }
-    }
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f6();
-    }
-// @ts-ignore
-    s0 = s1;
-// @ts-ignore
-    if (s0 === peg$FAILED) {
-// @ts-ignore
-      s0 = peg$currPos;
-// @ts-ignore
-      if (input.substr(peg$currPos, 2) === peg$c8) {
-// @ts-ignore
-        s1 = peg$c8;
-// @ts-ignore
-        peg$currPos += 2;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s1 = peg$FAILED;
-// @ts-ignore
-        if (peg$silentFails === 0) { peg$fail(peg$e8); }
-      }
-// @ts-ignore
-      if (s1 !== peg$FAILED) {
-// @ts-ignore
-        peg$savedPos = s0;
-// @ts-ignore
-        s1 = peg$f7();
-      }
-// @ts-ignore
-      s0 = s1;
-// @ts-ignore
-      if (s0 === peg$FAILED) {
-// @ts-ignore
-        s0 = peg$currPos;
-// @ts-ignore
-        if (input.charCodeAt(peg$currPos) === 62) {
-// @ts-ignore
-          s1 = peg$c9;
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s1 = peg$FAILED;
-// @ts-ignore
-          if (peg$silentFails === 0) { peg$fail(peg$e9); }
-        }
-// @ts-ignore
-        if (s1 !== peg$FAILED) {
-// @ts-ignore
-          peg$savedPos = s0;
-// @ts-ignore
-          s1 = peg$f8();
-        }
-// @ts-ignore
-        s0 = s1;
-// @ts-ignore
-        if (s0 === peg$FAILED) {
-// @ts-ignore
-          s0 = peg$currPos;
-// @ts-ignore
-          if (input.charCodeAt(peg$currPos) === 60) {
-// @ts-ignore
-            s1 = peg$c10;
-// @ts-ignore
-            peg$currPos++;
-// @ts-ignore
-          } else {
-// @ts-ignore
-            s1 = peg$FAILED;
-// @ts-ignore
-            if (peg$silentFails === 0) { peg$fail(peg$e10); }
-          }
-// @ts-ignore
-          if (s1 !== peg$FAILED) {
-// @ts-ignore
-            peg$savedPos = s0;
-// @ts-ignore
-            s1 = peg$f9();
-          }
-// @ts-ignore
-          s0 = s1;
-// @ts-ignore
-          if (s0 === peg$FAILED) {
-// @ts-ignore
-            s0 = peg$currPos;
-// @ts-ignore
-            if (input.charCodeAt(peg$currPos) === 61) {
-// @ts-ignore
-              s1 = peg$c11;
-// @ts-ignore
-              peg$currPos++;
-// @ts-ignore
-            } else {
-// @ts-ignore
-              s1 = peg$FAILED;
-// @ts-ignore
-              if (peg$silentFails === 0) { peg$fail(peg$e11); }
-            }
-// @ts-ignore
-            if (s1 !== peg$FAILED) {
-// @ts-ignore
-              peg$savedPos = s0;
-// @ts-ignore
-              s1 = peg$f10();
-            }
-// @ts-ignore
-            s0 = s1;
-// @ts-ignore
-            if (s0 === peg$FAILED) {
-// @ts-ignore
-              s0 = peg$currPos;
-// @ts-ignore
-              Iif (input.substr(peg$currPos, 2) === peg$c12) {
-// @ts-ignore
-                s1 = peg$c12;
-// @ts-ignore
-                peg$currPos += 2;
-// @ts-ignore
-              } else {
-// @ts-ignore
-                s1 = peg$FAILED;
-// @ts-ignore
-                if (peg$silentFails === 0) { peg$fail(peg$e12); }
-              }
-// @ts-ignore
-              Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-                peg$savedPos = s0;
-// @ts-ignore
-                s1 = peg$f11();
-              }
-// @ts-ignore
-              s0 = s1;
-// @ts-ignore
-              if (s0 === peg$FAILED) {
-// @ts-ignore
-                s0 = peg$currPos;
-// @ts-ignore
-                Iif (input.charCodeAt(peg$currPos) === 94) {
-// @ts-ignore
-                  s1 = peg$c13;
-// @ts-ignore
-                  peg$currPos++;
-// @ts-ignore
-                } else {
-// @ts-ignore
-                  s1 = peg$FAILED;
-// @ts-ignore
-                  if (peg$silentFails === 0) { peg$fail(peg$e13); }
-                }
-// @ts-ignore
-                Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-                  peg$savedPos = s0;
-// @ts-ignore
-                  s1 = peg$f12();
-                }
-// @ts-ignore
-                s0 = s1;
-// @ts-ignore
-                if (s0 === peg$FAILED) {
-// @ts-ignore
-                  s0 = peg$currPos;
-// @ts-ignore
-                  if (input.charCodeAt(peg$currPos) === 126) {
-// @ts-ignore
-                    s1 = peg$c14;
-// @ts-ignore
-                    peg$currPos++;
-// @ts-ignore
-                  } else {
-// @ts-ignore
-                    s1 = peg$FAILED;
-// @ts-ignore
-                    if (peg$silentFails === 0) { peg$fail(peg$e14); }
-                  }
-// @ts-ignore
-                  if (s1 !== peg$FAILED) {
-// @ts-ignore
-                    peg$savedPos = s0;
-// @ts-ignore
-                    s1 = peg$f13();
-                  }
-// @ts-ignore
-                  s0 = s1;
-                }
-              }
-            }
-          }
-        }
-      }
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseExtendedVersion() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseFlavor();
-// @ts-ignore
-    if (s1 === peg$FAILED) {
-// @ts-ignore
-      s1 = null;
-    }
-// @ts-ignore
-    s2 = peg$parseVersion();
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      if (input.charCodeAt(peg$currPos) === 58) {
-// @ts-ignore
-        s3 = peg$c4;
-// @ts-ignore
-        peg$currPos++;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s3 = peg$FAILED;
-// @ts-ignore
-        if (peg$silentFails === 0) { peg$fail(peg$e4); }
-      }
-// @ts-ignore
-      if (s3 !== peg$FAILED) {
-// @ts-ignore
-        s4 = peg$parseVersion();
-// @ts-ignore
-        if (s4 !== peg$FAILED) {
-// @ts-ignore
-          peg$savedPos = s0;
-// @ts-ignore
-          s0 = peg$f14(s1, s2, s4);
-// @ts-ignore
-        } else E{
-// @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$parseEmVer() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5, s6, s7, s8;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseDigit();
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-        s2 = peg$c15;
-// @ts-ignore
-        peg$currPos++;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s2 = peg$FAILED;
-// @ts-ignore
-        Iif (peg$silentFails === 0) { peg$fail(peg$e15); }
-      }
-// @ts-ignore
-      if (s2 !== peg$FAILED) {
-// @ts-ignore
-        s3 = peg$parseDigit();
-// @ts-ignore
-        if (s3 !== peg$FAILED) {
-// @ts-ignore
-          if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-            s4 = peg$c15;
-// @ts-ignore
-            peg$currPos++;
-// @ts-ignore
-          } else {
-// @ts-ignore
-            s4 = peg$FAILED;
-// @ts-ignore
-            Iif (peg$silentFails === 0) { peg$fail(peg$e15); }
-          }
-// @ts-ignore
-          if (s4 !== peg$FAILED) {
-// @ts-ignore
-            s5 = peg$parseDigit();
-// @ts-ignore
-            if (s5 !== peg$FAILED) {
-// @ts-ignore
-              s6 = peg$currPos;
-// @ts-ignore
-              if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-                s7 = peg$c15;
-// @ts-ignore
-                peg$currPos++;
-// @ts-ignore
-              } else {
-// @ts-ignore
-                s7 = peg$FAILED;
-// @ts-ignore
-                Iif (peg$silentFails === 0) { peg$fail(peg$e15); }
-              }
-// @ts-ignore
-              if (s7 !== peg$FAILED) {
-// @ts-ignore
-                s8 = peg$parseDigit();
-// @ts-ignore
-                if (s8 !== peg$FAILED) {
-// @ts-ignore
-                  s7 = [s7, s8];
-// @ts-ignore
-                  s6 = s7;
-// @ts-ignore
-                } else {
-// @ts-ignore
-                  peg$currPos = s6;
-// @ts-ignore
-                  s6 = peg$FAILED;
-                }
-// @ts-ignore
-              } else {
-// @ts-ignore
-                peg$currPos = s6;
-// @ts-ignore
-                s6 = peg$FAILED;
-              }
-// @ts-ignore
-              Iif (s6 === peg$FAILED) {
-// @ts-ignore
-                s6 = null;
-              }
-// @ts-ignore
-              peg$savedPos = s0;
-// @ts-ignore
-              s0 = peg$f15(s1, s3, s5);
-// @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
-      } 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$parseFlavor() {
-// @ts-ignore
-    var s0, s1, s2, s3;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    Iif (input.charCodeAt(peg$currPos) === 35) {
-// @ts-ignore
-      s1 = peg$c16;
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e16); }
-    }
-// @ts-ignore
-    Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-      s2 = peg$parseLowercase();
-// @ts-ignore
-      if (s2 !== peg$FAILED) {
-// @ts-ignore
-        if (input.charCodeAt(peg$currPos) === 58) {
-// @ts-ignore
-          s3 = peg$c4;
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s3 = peg$FAILED;
-// @ts-ignore
-          Iif (peg$silentFails === 0) { peg$fail(peg$e4); }
-        }
-// @ts-ignore
-        if (s3 !== peg$FAILED) {
-// @ts-ignore
-          peg$savedPos = s0;
-// @ts-ignore
-          s0 = peg$f16(s2);
-// @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$parseLowercase() {
-// @ts-ignore
-    var s0, s1, s2;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = [];
-// @ts-ignore
-    if (peg$r0.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-      s2 = input.charAt(peg$currPos);
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s2 = peg$FAILED;
-// @ts-ignore
-      Iif (peg$silentFails === 0) { peg$fail(peg$e17); }
-    }
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      while (s2 !== peg$FAILED) {
-// @ts-ignore
-        s1.push(s2);
-// @ts-ignore
-        if (peg$r0.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-          s2 = input.charAt(peg$currPos);
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s2 = peg$FAILED;
-// @ts-ignore
-          Iif (peg$silentFails === 0) { peg$fail(peg$e17); }
-        }
-      }
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-    }
-// @ts-ignore
-    Iif (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f17();
-    }
-// @ts-ignore
-    s0 = s1;
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseString() {
-// @ts-ignore
-    var s0, s1, s2;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = [];
-// @ts-ignore
-    if (peg$r1.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-      s2 = input.charAt(peg$currPos);
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else E{
-// @ts-ignore
-      s2 = peg$FAILED;
-// @ts-ignore
-      Iif (peg$silentFails === 0) { peg$fail(peg$e18); }
-    }
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      while (s2 !== peg$FAILED) {
-// @ts-ignore
-        s1.push(s2);
-// @ts-ignore
-        if (peg$r1.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-          s2 = input.charAt(peg$currPos);
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s2 = peg$FAILED;
-// @ts-ignore
-          if (peg$silentFails === 0) { peg$fail(peg$e18); }
-        }
-      }
-// @ts-ignore
-    } else E{
-// @ts-ignore
-      s1 = peg$FAILED;
-    }
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f18();
-    }
-// @ts-ignore
-    s0 = s1;
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseVersion() {
-// @ts-ignore
-    var s0, s1, s2;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseVersionNumber();
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      s2 = peg$parsePreRelease();
-// @ts-ignore
-      if (s2 === peg$FAILED) {
-// @ts-ignore
-        s2 = null;
-      }
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s0 = peg$f19(s1, s2);
-// @ts-ignore
-    } else {
-// @ts-ignore
-      peg$currPos = s0;
-// @ts-ignore
-      s0 = peg$FAILED;
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parsePreRelease() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5, s6;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    if (input.charCodeAt(peg$currPos) === 45) {
-// @ts-ignore
-      s1 = peg$c17;
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e19); }
-    }
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      s2 = peg$parsePreReleaseSegment();
-// @ts-ignore
-      if (s2 !== peg$FAILED) {
-// @ts-ignore
-        s3 = [];
-// @ts-ignore
-        s4 = peg$currPos;
-// @ts-ignore
-        if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-          s5 = peg$c15;
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else E{
-// @ts-ignore
-          s5 = peg$FAILED;
-// @ts-ignore
-          Iif (peg$silentFails === 0) { peg$fail(peg$e15); }
-        }
-// @ts-ignore
-        if (s5 !== peg$FAILED) {
-// @ts-ignore
-          s6 = peg$parsePreReleaseSegment();
-// @ts-ignore
-          if (s6 !== peg$FAILED) {
-// @ts-ignore
-            s5 = [s5, s6];
-// @ts-ignore
-            s4 = s5;
-// @ts-ignore
-          } else E{
-// @ts-ignore
-            peg$currPos = s4;
-// @ts-ignore
-            s4 = peg$FAILED;
-          }
-// @ts-ignore
-        } else E{
-// @ts-ignore
-          peg$currPos = s4;
-// @ts-ignore
-          s4 = peg$FAILED;
-        }
-// @ts-ignore
-        while (s4 !== peg$FAILED) {
-// @ts-ignore
-          s3.push(s4);
-// @ts-ignore
-          s4 = peg$currPos;
-// @ts-ignore
-          Iif (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-            s5 = peg$c15;
-// @ts-ignore
-            peg$currPos++;
-// @ts-ignore
-          } else {
-// @ts-ignore
-            s5 = peg$FAILED;
-// @ts-ignore
-            if (peg$silentFails === 0) { peg$fail(peg$e15); }
-          }
-// @ts-ignore
-          Iif (s5 !== peg$FAILED) {
-// @ts-ignore
-            s6 = peg$parsePreReleaseSegment();
-// @ts-ignore
-            if (s6 !== peg$FAILED) {
-// @ts-ignore
-              s5 = [s5, s6];
-// @ts-ignore
-              s4 = s5;
-// @ts-ignore
-            } else {
-// @ts-ignore
-              peg$currPos = s4;
-// @ts-ignore
-              s4 = peg$FAILED;
-            }
-// @ts-ignore
-          } else {
-// @ts-ignore
-            peg$currPos = s4;
-// @ts-ignore
-            s4 = peg$FAILED;
-          }
-        }
-// @ts-ignore
-        peg$savedPos = s0;
-// @ts-ignore
-        s0 = peg$f20(s2, s3);
-// @ts-ignore
-      } else E{
-// @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$parsePreReleaseSegment() {
-// @ts-ignore
-    var s0, s1, s2;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    Iif (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-      s1 = peg$c15;
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e15); }
-    }
-// @ts-ignore
-    if (s1 === peg$FAILED) {
-// @ts-ignore
-      s1 = null;
-    }
-// @ts-ignore
-    s2 = peg$parseDigit();
-// @ts-ignore
-    if (s2 === peg$FAILED) {
-// @ts-ignore
-      s2 = peg$parseString();
-    }
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s0 = peg$f21(s2);
-// @ts-ignore
-    } else E{
-// @ts-ignore
-      peg$currPos = s0;
-// @ts-ignore
-      s0 = peg$FAILED;
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseVersionNumber() {
-// @ts-ignore
-    var s0, s1, s2, s3, s4, s5;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = peg$parseDigit();
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      s2 = [];
-// @ts-ignore
-      s3 = peg$currPos;
-// @ts-ignore
-      if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-        s4 = peg$c15;
-// @ts-ignore
-        peg$currPos++;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s4 = peg$FAILED;
-// @ts-ignore
-        if (peg$silentFails === 0) { peg$fail(peg$e15); }
-      }
-// @ts-ignore
-      if (s4 !== peg$FAILED) {
-// @ts-ignore
-        s5 = peg$parseDigit();
-// @ts-ignore
-        if (s5 !== peg$FAILED) {
-// @ts-ignore
-          s4 = [s4, s5];
-// @ts-ignore
-          s3 = s4;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          peg$currPos = s3;
-// @ts-ignore
-          s3 = peg$FAILED;
-        }
-// @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
-        if (input.charCodeAt(peg$currPos) === 46) {
-// @ts-ignore
-          s4 = peg$c15;
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s4 = peg$FAILED;
-// @ts-ignore
-          if (peg$silentFails === 0) { peg$fail(peg$e15); }
-        }
-// @ts-ignore
-        if (s4 !== peg$FAILED) {
-// @ts-ignore
-          s5 = peg$parseDigit();
-// @ts-ignore
-          if (s5 !== peg$FAILED) {
-// @ts-ignore
-            s4 = [s4, s5];
-// @ts-ignore
-            s3 = s4;
-// @ts-ignore
-          } else E{
-// @ts-ignore
-            peg$currPos = s3;
-// @ts-ignore
-            s3 = peg$FAILED;
-          }
-// @ts-ignore
-        } else {
-// @ts-ignore
-          peg$currPos = s3;
-// @ts-ignore
-          s3 = peg$FAILED;
-        }
-      }
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s0 = peg$f22(s1, s2);
-// @ts-ignore
-    } else {
-// @ts-ignore
-      peg$currPos = s0;
-// @ts-ignore
-      s0 = peg$FAILED;
-    }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parseDigit() {
-// @ts-ignore
-    var s0, s1, s2;
- 
-// @ts-ignore
-    s0 = peg$currPos;
-// @ts-ignore
-    s1 = [];
-// @ts-ignore
-    if (peg$r2.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-      s2 = input.charAt(peg$currPos);
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s2 = peg$FAILED;
-// @ts-ignore
-      if (peg$silentFails === 0) { peg$fail(peg$e20); }
-    }
-// @ts-ignore
-    if (s2 !== peg$FAILED) {
-// @ts-ignore
-      while (s2 !== peg$FAILED) {
-// @ts-ignore
-        s1.push(s2);
-// @ts-ignore
-        if (peg$r2.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-          s2 = input.charAt(peg$currPos);
-// @ts-ignore
-          peg$currPos++;
-// @ts-ignore
-        } else {
-// @ts-ignore
-          s2 = peg$FAILED;
-// @ts-ignore
-          if (peg$silentFails === 0) { peg$fail(peg$e20); }
-        }
-      }
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-    }
-// @ts-ignore
-    if (s1 !== peg$FAILED) {
-// @ts-ignore
-      peg$savedPos = s0;
-// @ts-ignore
-      s1 = peg$f23();
-    }
-// @ts-ignore
-    s0 = s1;
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  function // @ts-ignore
-peg$parse_() {
-// @ts-ignore
-    var s0, s1;
- 
-// @ts-ignore
-    peg$silentFails++;
-// @ts-ignore
-    s0 = [];
-// @ts-ignore
-    if (peg$r3.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-      s1 = input.charAt(peg$currPos);
-// @ts-ignore
-      peg$currPos++;
-// @ts-ignore
-    } else {
-// @ts-ignore
-      s1 = peg$FAILED;
-// @ts-ignore
-      Iif (peg$silentFails === 0) { peg$fail(peg$e22); }
-    }
-// @ts-ignore
-    while (s1 !== peg$FAILED) {
-// @ts-ignore
-      s0.push(s1);
-// @ts-ignore
-      Iif (peg$r3.test(input.charAt(peg$currPos))) {
-// @ts-ignore
-        s1 = input.charAt(peg$currPos);
-// @ts-ignore
-        peg$currPos++;
-// @ts-ignore
-      } else {
-// @ts-ignore
-        s1 = peg$FAILED;
-// @ts-ignore
-        Iif (peg$silentFails === 0) { peg$fail(peg$e22); }
-      }
-    }
-// @ts-ignore
-    peg$silentFails--;
-// @ts-ignore
-    s1 = peg$FAILED;
-// @ts-ignore
-    if (peg$silentFails === 0) { peg$fail(peg$e21); }
- 
-// @ts-ignore
-    return s0;
-  }
- 
-// @ts-ignore
-  peg$result = peg$startRuleFunction();
- 
-// @ts-ignore
-  if (peg$result !== peg$FAILED && peg$currPos === input.length) {
-// @ts-ignore
-    return peg$result;
-// @ts-ignore
-  } else {
-// @ts-ignore
-    Iif (peg$result !== peg$FAILED && peg$currPos < input.length) {
-// @ts-ignore
-      peg$fail(peg$endExpectation());
-    }
- 
-// @ts-ignore
-    throw peg$buildStructuredError(
-// @ts-ignore
-      peg$maxFailExpected,
-// @ts-ignore
-      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
-// @ts-ignore
-      peg$maxFailPos < input.length
-// @ts-ignore
-        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
-// @ts-ignore
-        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
-    );
-  }
-}
- 
-// @ts-ignore
-  return {
-    SyntaxError: peg$SyntaxError,
-    parse: peg$parse
-  };
-})()
- 
-export interface FilePosition {
-  offset: number;
-  line: number;
-  column: number;
-}
- 
-export interface FileRange {
-  start: FilePosition;
-  end: FilePosition;
-  source: string;
-}
- 
-export interface LiteralExpectation {
-  type: "literal";
-  text: string;
-  ignoreCase: boolean;
-}
- 
-export interface ClassParts extends Array<string | ClassParts> {}
- 
-export interface ClassExpectation {
-  type: "class";
-  parts: ClassParts;
-  inverted: boolean;
-  ignoreCase: boolean;
-}
- 
-export interface AnyExpectation {
-  type: "any";
-}
- 
-export interface EndExpectation {
-  type: "end";
-}
- 
-export interface OtherExpectation {
-  type: "other";
-  description: string;
-}
- 
-export type Expectation = LiteralExpectation | ClassExpectation | AnyExpectation | EndExpectation | OtherExpectation;
- 
-declare class _PeggySyntaxError extends Error {
-  public static buildMessage(expected: Expectation[], found: string | null): string;
-  public message: string;
-  public expected: Expectation[];
-  public found: string | null;
-  public location: FileRange;
-  public name: string;
-  constructor(message: string, expected: Expectation[], found: string | null, location: FileRange);
-  format(sources: {
-    source?: any;
-    text: string;
-  }[]): string;
-}
- 
-export interface TraceEvent {
-    type: string;
-    rule: string;
-    result?: any;
-    location: FileRange;
-  }
- 
-declare class _DefaultTracer {
-  private indentLevel: number;
-  public trace(event: TraceEvent): void;
-}
- 
-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" | "_";
-  tracer?: any;
-  [key: string]: any;
-}
-export type ParseFunction = <Options extends ParseOptions>(
-    input: string,
-    options?: Options
-  ) => Options extends { startRule: infer StartRule } ?
-    StartRule extends "VersionRange" ? VersionRange :
-    StartRule extends "Or" ? Or :
-    StartRule extends "And" ? And :
-    StartRule extends "VersionRangeAtom" ? VersionRangeAtom :
-    StartRule extends "Parens" ? Parens :
-    StartRule extends "Anchor" ? Anchor :
-    StartRule extends "VersionSpec" ? VersionSpec :
-    StartRule extends "Not" ? Not :
-    StartRule extends "Any" ? Any :
-    StartRule extends "None" ? None :
-    StartRule extends "CmpOp" ? CmpOp :
-    StartRule extends "ExtendedVersion" ? ExtendedVersion :
-    StartRule extends "EmVer" ? EmVer :
-    StartRule extends "Flavor" ? Flavor :
-    StartRule extends "Lowercase" ? Lowercase_1 :
-    StartRule extends "String" ? String_1 :
-    StartRule extends "Version" ? Version :
-    StartRule extends "PreRelease" ? PreRelease :
-    StartRule extends "PreReleaseSegment" ? PreReleaseSegment :
-    StartRule extends "VersionNumber" ? VersionNumber :
-    StartRule extends "Digit" ? Digit :
-    StartRule extends "_" ? _ : VersionRange
-    : VersionRange;
-export const parse: ParseFunction = peggyParser.parse;
- 
-export const PeggySyntaxError = peggyParser.SyntaxError as typeof _PeggySyntaxError;
- 
-export type PeggySyntaxError = _PeggySyntaxError;
- 
-// These types were autogenerated by ts-pegjs
-export type VersionRange = [
-  VersionRangeAtom,
-  [_, [Or | And, _] | null, VersionRangeAtom][]
-];
-export type Or = "||";
-export type And = "&&";
-export type VersionRangeAtom = Parens | Anchor | Not | Any | None;
-export type Parens = { type: "Parens"; expr: VersionRange };
-export type Anchor = {
-  type: "Anchor";
-  operator: CmpOp | null;
-  version: VersionSpec;
-};
-export type VersionSpec = {
-  flavor: NonNullable<Flavor | null> | null;
-  upstream: Version;
-  downstream: any;
-};
-export type Not = { type: "Not"; value: VersionRangeAtom };
-export type Any = { type: "Any" };
-export type None = { type: "None" };
-export type CmpOp = ">=" | "<=" | ">" | "<" | "=" | "!=" | "^" | "~";
-export type ExtendedVersion = {
-  flavor: NonNullable<Flavor | null> | null;
-  upstream: Version;
-  downstream: Version;
-};
-export type EmVer = {
-  flavor: null;
-  upstream: { number: [Digit, Digit, Digit]; prerelease: [] };
-  downstream: { number: [any]; prerelease: [] };
-};
-export type Flavor = Lowercase_1;
-export type Lowercase_1 = string;
-export type String_1 = string;
-export type Version = {
-  number: VersionNumber;
-  prerelease: never[] | NonNullable<PreRelease | null>;
-};
-export type PreRelease = PreReleaseSegment[];
-export type PreReleaseSegment = Digit | String_1;
-export type VersionNumber = Digit[];
-export type Digit = number;
-export type _ = string[];
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/exver/index.html b/sdk/lib/coverage/lcov-report/lib/exver/index.html deleted file mode 100644 index b98baaeca..000000000 --- a/sdk/lib/coverage/lcov-report/lib/exver/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/exver - - - - - - - - - -
-
-

All files lib/exver

-
-
- 71.73% - Statements - 713/994 -
- -
- 63.29% - Branches - 250/395 -
- -
- 71.65% - Functions - 91/127 -
- -
- 71.77% - Lines - 679/946 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- exver.ts - -
-
-
-
-
73.61%611/83062.5%185/29669.31%61/8873.76%582/789
- index.ts - -
-
-
-
-
62.19%102/16465.65%65/9976.92%30/3961.78%97/157
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/exver/index.ts.html b/sdk/lib/coverage/lcov-report/lib/exver/index.ts.html deleted file mode 100644 index 660e2124d..000000000 --- a/sdk/lib/coverage/lcov-report/lib/exver/index.ts.html +++ /dev/null @@ -1,1449 +0,0 @@ - - - - Code coverage report for lib/exver/index.ts - - - - - - - - - -
-
-

- All files / - lib/exver index.ts -

-
-
- 62.19% - Statements - 102/164 -
- -
- 65.65% - Branches - 65/99 -
- -
- 76.92% - Functions - 30/39 -
- -
- 61.78% - Lines - 97/157 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -4556x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -87x -  -  -50x -  -20x -  -  -  -20x -  -  -  -  -  -10x -  -  -  -  -27x -  -2x -  -  -  -  -  -  -24x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -18x -18x -7x -  -3x -  -  -  -  -3x -  -  -4x -  -  -  -  -4x -  -  -18x -  -  -  -18x -  -  -  -  -  -1x -  -  -  -21x -  -  -  -1x -  -  -  -20x -  -  -  -  -  -  -  -10x -  -  -  -112x -  -  -  -6x -  -308x -308x -  -  -  -40x -  -  -  -235x -235x -419x -63x -356x -38x -  -  -  -134x -  -134x -  -  -  -134x -134x -252x -252x -  -252x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -134x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -154x -154x -154x -  -  -  -20x -  -  -  -160x -  -  -160x -160x -85x -  -75x -  -  -  -3x -  -3x -  -  -3x -  -  -  -  -3x -  -1x -  -1x -  -1x -  -  -  -  -30x -  -  -  -30x -  -  -  -31x -  -  -  -54x -  -  -  -9x -  -  -  -109x -106x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -24x -24x -  -24x -48x -  -48x -24x -  -24x -  -  -24x -24x -  -24x -  -  -  -  -  -  -  -  -  -  -  -198x -  -129x -129x -  -21x -  -30x -  -39x -  -6x -  -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -24x -24x -  -  -  -6x -  -18x -  -  -  -21x -  -  -  -  -17x -  -  -  -  -22x -  -9x -  -  -  -  -  -  -6x -  -6x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as P from "./exver"
- 
-// prettier-ignore
-export type ValidateVersion<T extends String> = 
-T extends `-${infer A}` ? never  :
-T extends `${infer A}-${string}` ? ValidateVersion<A> :
-  T extends `${bigint}` ? unknown :
-  T extends `${bigint}.${infer A}` ? ValidateVersion<A> :
-  never
- 
-// prettier-ignore
-export type ValidateExVer<T extends string> = 
-  T extends `#${string}:${infer A}:${infer B}` ? ValidateVersion<A> & ValidateVersion<B> :
-  T extends `${infer A}:${infer B}` ? ValidateVersion<A> & ValidateVersion<B> :  
-  never
- 
-// prettier-ignore
-export type ValidateExVers<T> =
-  T extends [] ? unknown[] :
-  T extends [infer A, ...infer B] ? ValidateExVer<A & string> & ValidateExVers<B> :
-  never[]
- 
-type Anchor = {
-  type: "Anchor"
-  operator: P.CmpOp
-  version: ExtendedVersion
-}
- 
-type And = {
-  type: "And"
-  left: VersionRange
-  right: VersionRange
-}
- 
-type Or = {
-  type: "Or"
-  left: VersionRange
-  right: VersionRange
-}
- 
-type Not = {
-  type: "Not"
-  value: VersionRange
-}
- 
-export class VersionRange {
-  private constructor(public atom: Anchor | And | Or | Not | P.Any | P.None) {}
- 
-  toString(): string {
-    switch (this.atom.type) {
-      case "Anchor":
-        return `${this.atom.operator}${this.atom.version}`
-      case "And":
-        return `(${this.atom.left.toString()}) && (${this.atom.right.toString()})`
-      case "Or":
-        return `(${this.atom.left.toString()}) || (${this.atom.right.toString()})`
-      case "Not":
-        return `!(${this.atom.value.toString()})`
-      case "Any":
-        return "*"
-      case "None":
-        return "!"
-    }
-  }
- 
-  private static parseAtom(atom: P.VersionRangeAtom): VersionRange {
-    switch (atom.type) {
-      case "Not":
-        return new VersionRange({
-          type: "Not",
-          value: VersionRange.parseAtom(atom.value),
-        })
-      case "Parens":
-        return VersionRange.parseRange(atom.expr)
-      case "Anchor":
-        return new VersionRange({
-          type: "Anchor",
-          operator: atom.operator || "^",
-          version: new ExtendedVersion(
-            atom.version.flavor,
-            new Version(
-              atom.version.upstream.number,
-              atom.version.upstream.prerelease,
-            ),
-            new Version(
-              atom.version.downstream.number,
-              atom.version.downstream.prerelease,
-            ),
-          ),
-        })
-      default:
-        return new VersionRange(atom)
-    }
-  }
- 
-  private static parseRange(range: P.VersionRange): VersionRange {
-    let result = VersionRange.parseAtom(range[0])
-    for (const next of range[1]) {
-      switch (next[1]?.[0]) {
-        case "||":
-          result = new VersionRange({
-            type: "Or",
-            left: result,
-            right: VersionRange.parseAtom(next[2]),
-          })
-          break
-        case "&&":
-        default:
-          result = new VersionRange({
-            type: "And",
-            left: result,
-            right: VersionRange.parseAtom(next[2]),
-          })
-          break
-      }
-    }
-    return result
-  }
- 
-  static parse(range: string): VersionRange {
-    return VersionRange.parseRange(
-      P.parse(range, { startRule: "VersionRange" }),
-    )
-  }
- 
-  and(right: VersionRange) {
-    return new VersionRange({ type: "And", left: this, right })
-  }
- 
-  or(right: VersionRange) {
-    return new VersionRange({ type: "Or", left: this, right })
-  }
- 
-  not() {
-    return new VersionRange({ type: "Not", value: this })
-  }
- 
-  static anchor(operator: P.CmpOp, version: ExtendedVersion) {
-    return new VersionRange({ type: "Anchor", operator, version })
-  }
- 
-  static any() {
-    return new VersionRange({ type: "Any" })
-  }
- 
-  static none() {
-    return new VersionRange({ type: "None" })
-  }
- 
-  satisfiedBy(version: Version | ExtendedVersion) {
-    return version.satisfies(this)
-  }
-}
- 
-export class Version {
-  constructor(
-    public number: number[],
-    public prerelease: (string | number)[],
-  ) {}
- 
-  toString(): string {
-    return `${this.number.join(".")}${this.prerelease.length > 0 ? `-${this.prerelease.join(".")}` : ""}`
-  }
- 
-  compare(other: Version): "greater" | "equal" | "less" {
-    const numLen = Math.max(this.number.length, other.number.length)
-    for (let i = 0; i < numLen; i++) {
-      if ((this.number[i] || 0) > (other.number[i] || 0)) {
-        return "greater"
-      } else if ((this.number[i] || 0) < (other.number[i] || 0)) {
-        return "less"
-      }
-    }
- 
-    Iif (this.prerelease.length === 0 && other.prerelease.length !== 0) {
-      return "greater"
-    } else Iif (this.prerelease.length !== 0 && other.prerelease.length === 0) {
-      return "less"
-    }
- 
-    const prereleaseLen = Math.max(this.number.length, other.number.length)
-    for (let i = 0; i < prereleaseLen; i++) {
-      if (typeof this.prerelease[i] === typeof other.prerelease[i]) {
-        Iif (this.prerelease[i] > other.prerelease[i]) {
-          return "greater"
-        } else Iif (this.prerelease[i] < other.prerelease[i]) {
-          return "less"
-        }
-      } else E{
-        switch (`${typeof this.prerelease[1]}:${typeof other.prerelease[i]}`) {
-          case "number:string":
-            return "less"
-          case "string:number":
-            return "greater"
-          case "number:undefined":
-          case "string:undefined":
-            return "greater"
-          case "undefined:number":
-          case "undefined:string":
-            return "less"
-        }
-      }
-    }
- 
-    return "equal"
-  }
- 
-  static parse(version: string): Version {
-    const parsed = P.parse(version, { startRule: "Version" })
-    return new Version(parsed.number, parsed.prerelease)
-  }
- 
-  satisfies(versionRange: VersionRange): boolean {
-    return new ExtendedVersion(null, this, new Version([0], [])).satisfies(
-      versionRange,
-    )
-  }
-}
- 
-// #flavor:0.1.2-beta.1:0
-export class ExtendedVersion {
-  constructor(
-    public flavor: string | null,
-    public upstream: Version,
-    public downstream: Version,
-  ) {}
- 
-  toString(): string {
-    return `${this.flavor ? `#${this.flavor}:` : ""}${this.upstream.toString()}:${this.downstream.toString()}`
-  }
- 
-  compare(other: ExtendedVersion): "greater" | "equal" | "less" | null {
-    Iif (this.flavor !== other.flavor) {
-      return null
-    }
-    const upstreamCmp = this.upstream.compare(other.upstream)
-    if (upstreamCmp !== "equal") {
-      return upstreamCmp
-    }
-    return this.downstream.compare(other.downstream)
-  }
- 
-  compareLexicographic(other: ExtendedVersion): "greater" | "equal" | "less" {
-    Iif ((this.flavor || "") > (other.flavor || "")) {
-      return "greater"
-    } else Iif ((this.flavor || "") > (other.flavor || "")) {
-      return "less"
-    } else {
-      return this.compare(other)!
-    }
-  }
- 
-  compareForSort(other: ExtendedVersion): 1 | 0 | -1 {
-    switch (this.compareLexicographic(other)) {
-      case "greater":
-        return 1
-      case "equal":
-        return 0
-      case "less":
-        return -1
-    }
-  }
- 
-  greaterThan(other: ExtendedVersion): boolean {
-    return this.compare(other) === "greater"
-  }
- 
-  greaterThanOrEqual(other: ExtendedVersion): boolean {
-    return ["greater", "equal"].includes(this.compare(other) as string)
-  }
- 
-  equals(other: ExtendedVersion): boolean {
-    return this.compare(other) === "equal"
-  }
- 
-  lessThan(other: ExtendedVersion): boolean {
-    return this.compare(other) === "less"
-  }
- 
-  lessThanOrEqual(other: ExtendedVersion): boolean {
-    return ["less", "equal"].includes(this.compare(other) as string)
-  }
- 
-  static parse(extendedVersion: string): ExtendedVersion {
-    const parsed = P.parse(extendedVersion, { startRule: "ExtendedVersion" })
-    return new ExtendedVersion(
-      parsed.flavor,
-      new Version(parsed.upstream.number, parsed.upstream.prerelease),
-      new Version(parsed.downstream.number, parsed.downstream.prerelease),
-    )
-  }
- 
-  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),
-    )
-  }
- 
-  /**
-   * Returns an ExtendedVersion with the Upstream major version version incremented by 1
-   * and sets subsequent digits to zero.
-   * If no non-zero upstream digit can be found the last upstream digit will be incremented.
-   */
-  incrementMajor(): ExtendedVersion {
-    const majorIdx = this.upstream.number.findIndex((num: number) => num !== 0)
- 
-    const majorNumber = this.upstream.number.map((num, idx): number => {
-      if (idx > majorIdx) {
-        return 0
-      } else Iif (idx === majorIdx) {
-        return num + 1
-      }
-      return num
-    })
- 
-    const incrementedUpstream = new Version(majorNumber, [])
-    const updatedDownstream = new Version([0], [])
- 
-    return new ExtendedVersion(
-      this.flavor,
-      incrementedUpstream,
-      updatedDownstream,
-    )
-  }
- 
-  /**
-   * Returns an ExtendedVersion with the Upstream minor version version incremented by 1
-   * also sets subsequent digits to zero.
-   * If no non-zero upstream digit can be found the last digit will be incremented.
-   */
-  incrementMinor(): ExtendedVersion {
-    const majorIdx = this.upstream.number.findIndex((num: number) => num !== 0)
-    let minorIdx = majorIdx === -1 ? majorIdx : majorIdx + 1
- 
-    const majorNumber = this.upstream.number.map((num, idx): number => {
-      Iif (idx > minorIdx) {
-        return 0
-      } else if (idx === minorIdx) {
-        return num + 1
-      }
-      return num
-    })
- 
-    const incrementedUpstream = new Version(majorNumber, [])
-    const updatedDownstream = new Version([0], [])
- 
-    return new ExtendedVersion(
-      this.flavor,
-      incrementedUpstream,
-      updatedDownstream,
-    )
-  }
- 
-  /**
-   * Returns a boolean indicating whether a given version satisfies the VersionRange
-   * !( >= 1:1 <= 2:2) || <=#bitcoin:1.2.0-alpha:0
-   */
-  satisfies(versionRange: VersionRange): boolean {
-    switch (versionRange.atom.type) {
-      case "Anchor":
-        const otherVersion = versionRange.atom.version
-        switch (versionRange.atom.operator) {
-          case "=":
-            return this.equals(otherVersion)
-          case ">":
-            return this.greaterThan(otherVersion)
-          case "<":
-            return this.lessThan(otherVersion)
-          case ">=":
-            return this.greaterThanOrEqual(otherVersion)
-          case "<=":
-            return this.lessThanOrEqual(otherVersion)
-          case "!=":
-            return !this.equals(otherVersion)
-          case "^":
-            const nextMajor = versionRange.atom.version.incrementMajor()
-            if (
-              this.greaterThanOrEqual(otherVersion) &&
-              this.lessThan(nextMajor)
-            ) {
-              return true
-            } else {
-              return false
-            }
-          case "~":
-            const nextMinor = versionRange.atom.version.incrementMinor()
-            if (
-              this.greaterThanOrEqual(otherVersion) &&
-              this.lessThan(nextMinor)
-            ) {
-              return true
-            } else {
-              return false
-            }
-        }
-      case "And":
-        return (
-          this.satisfies(versionRange.atom.left) &&
-          this.satisfies(versionRange.atom.right)
-        )
-      case "Or":
-        return (
-          this.satisfies(versionRange.atom.left) ||
-          this.satisfies(versionRange.atom.right)
-        )
-      case "Not":
-        return !this.satisfies(versionRange.atom.value)
-      case "Any":
-        return true
-      case "None":
-        return false
-    }
-  }
-}
- 
-export const testTypeExVer = <T extends string>(t: T & ValidateExVer<T>) => t
- 
-export const testTypeVersion = <T extends string>(t: T & ValidateVersion<T>) =>
-  t
-function tests() {
-  testTypeVersion("1.2.3")
-  testTypeVersion("1")
-  testTypeVersion("12.34.56")
-  testTypeVersion("1.2-3")
-  testTypeVersion("1-3")
-  testTypeVersion("1-alpha")
-  // @ts-expect-error
-  testTypeVersion("-3")
-  // @ts-expect-error
-  testTypeVersion("1.2.3:1")
-  // @ts-expect-error
-  testTypeVersion("#cat:1:1")
- 
-  testTypeExVer("1.2.3:1.2.3")
-  testTypeExVer("1.2.3.4.5.6.7.8.9.0:1")
-  testTypeExVer("100:1")
-  testTypeExVer("#cat:1:1")
-  testTypeExVer("1.2.3.4.5.6.7.8.9.11.22.33:1")
-  testTypeExVer("1-0:1")
-  testTypeExVer("1-0:1")
-  // @ts-expect-error
-  testTypeExVer("1.2-3")
-  // @ts-expect-error
-  testTypeExVer("1-3")
-  // @ts-expect-error
-  testTypeExVer("1.2.3.4.5.6.7.8.9.0.10:1" as string)
-  // @ts-expect-error
-  testTypeExVer("1.-2:1")
-  // @ts-expect-error
-  testTypeExVer("1..2.3:3")
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/HealthCheck.ts.html b/sdk/lib/coverage/lcov-report/lib/health/HealthCheck.ts.html deleted file mode 100644 index 9d4761030..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/HealthCheck.ts.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - Code coverage report for lib/health/HealthCheck.ts - - - - - - - - - -
-
-

- All files / - lib/health HealthCheck.ts -

-
-
- 17.24% - Statements - 5/29 -
- -
- 0% - Branches - 0/12 -
- -
- 0% - Functions - 0/6 -
- -
- 19.23% - Lines - 5/26 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69  -  -  -  -  -5x -5x -  -5x -  -5x -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../types"
-import { HealthCheckResult } from "./checkFns/HealthCheckResult"
-import { HealthReceipt } from "./HealthReceipt"
-import { Trigger } from "../trigger"
-import { TriggerInput } from "../trigger/TriggerInput"
-import { defaultTrigger } from "../trigger/defaultTrigger"
-import { once } from "../util/once"
-import { SubContainer } from "../util/SubContainer"
-import { object, unknown } from "ts-matches"
-import * as T from "../types"
-import { asError } from "../util/asError"
- 
-export type HealthCheckParams = {
-  effects: Effects
-  name: string
-  trigger?: Trigger
-  fn(): Promise<HealthCheckResult> | HealthCheckResult
-  onFirstSuccess?: () => unknown | Promise<unknown>
-}
- 
-export function healthCheck(o: HealthCheckParams) {
-  new Promise(async () => {
-    let currentValue: TriggerInput = {}
-    const getCurrentValue = () => currentValue
-    const trigger = (o.trigger ?? defaultTrigger)(getCurrentValue)
-    const triggerFirstSuccess = once(() =>
-      Promise.resolve(
-        "onFirstSuccess" in o && o.onFirstSuccess
-          ? o.onFirstSuccess()
-          : undefined,
-      ),
-    )
-    for (
-      let res = await trigger.next();
-      !res.done;
-      res = await trigger.next()
-    ) {
-      try {
-        const { result, message } = await o.fn()
-        await o.effects.setHealth({
-          name: o.name,
-          id: o.name,
-          result,
-          message: message || "",
-        })
-        currentValue.lastResult = result
-        await triggerFirstSuccess().catch((err) => {
-          console.error(asError(err))
-        })
-      } catch (e) {
-        await o.effects.setHealth({
-          name: o.name,
-          id: o.name,
-          result: "failure",
-          message: asMessage(e) || "",
-        })
-        currentValue.lastResult = "failure"
-      }
-    }
-  })
-  return {} as HealthReceipt
-}
-function asMessage(e: unknown) {
-  Iif (object({ message: unknown }).test(e)) return String(e.message)
-  const value = String(e)
-  Iif (value.length == null) return null
-  return value
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkPortListening.ts.html b/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkPortListening.ts.html deleted file mode 100644 index 3b5534be6..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkPortListening.ts.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - Code coverage report for lib/health/checkFns/checkPortListening.ts - - - - - - - - - - -
-
-

- All files / - lib/health/checkFns checkPortListening.ts -

-
-
- 61.11% - Statements - 11/18 -
- -
- 0% - Branches - 0/7 -
- -
- 42.85% - Functions - 3/7 -
- -
- 61.11% - Lines - 11/18 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68  -6x -  -  -6x -6x -  -6x -6x -6x -2x -  -  -  -12x -  -8x -  -2x -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../../types"
-import { stringFromStdErrOut } from "../../util/stringFromStdErrOut"
-import { HealthCheckResult } from "./HealthCheckResult"
- 
-import { promisify } from "node:util"
-import * as CP from "node:child_process"
- 
-const cpExec = promisify(CP.exec)
-const cpExecFile = promisify(CP.execFile)
-export function containsAddress(x: string, port: number) {
-  const readPorts = x
-    .split("\n")
-    .filter(Boolean)
-    .splice(1)
-    .map((x) => x.split(" ").filter(Boolean)[1]?.split(":")?.[1])
-    .filter(Boolean)
-    .map((x) => Number.parseInt(x, 16))
-    .filter(Number.isFinite)
-  return readPorts.indexOf(port) >= 0
-}
- 
-/**
- * This is used to check if a port is listening on the system.
- * Used during the health check fn or the check main fn.
- */
-export async function checkPortListening(
-  effects: Effects,
-  port: number,
-  options: {
-    errorMessage: string
-    successMessage: string
-    timeoutMessage?: string
-    timeout?: number
-  },
-): Promise<HealthCheckResult> {
-  return Promise.race<HealthCheckResult>([
-    Promise.resolve().then(async () => {
-      const hasAddress =
-        containsAddress(
-          await cpExec(`cat /proc/net/tcp`, {}).then(stringFromStdErrOut),
-          port,
-        ) ||
-        containsAddress(
-          await cpExec("cat /proc/net/udp", {}).then(stringFromStdErrOut),
-          port,
-        )
-      Iif (hasAddress) {
-        return { result: "success", message: options.successMessage }
-      }
-      return {
-        result: "failure",
-        message: options.errorMessage,
-      }
-    }),
-    new Promise((resolve) => {
-      setTimeout(
-        () =>
-          resolve({
-            result: "failure",
-            message:
-              options.timeoutMessage || `Timeout trying to check port ${port}`,
-          }),
-        options.timeout ?? 1_000,
-      )
-    }),
-  ])
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkWebUrl.ts.html b/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkWebUrl.ts.html deleted file mode 100644 index 42483a1cc..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/checkFns/checkWebUrl.ts.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - Code coverage report for lib/health/checkFns/checkWebUrl.ts - - - - - - - - - -
-
-

- All files / - lib/health/checkFns checkWebUrl.ts -

-
-
- 45.45% - Statements - 5/11 -
- -
- 0% - Branches - 0/4 -
- -
- 0% - Functions - 0/3 -
- -
- 40% - Lines - 4/10 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37  -5x -  -5x -5x -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../../types"
-import { asError } from "../../util/asError"
-import { HealthCheckResult } from "./HealthCheckResult"
-import { timeoutPromise } from "./index"
-import "isomorphic-fetch"
- 
-/**
- * This is a helper function to check if a web url is reachable.
- * @param url
- * @param createSuccess
- * @returns
- */
-export const checkWebUrl = async (
-  effects: Effects,
-  url: string,
-  {
-    timeout = 1000,
-    successMessage = `Reached ${url}`,
-    errorMessage = `Error while fetching URL: ${url}`,
-  } = {},
-): Promise<HealthCheckResult> => {
-  return Promise.race([fetch(url), timeoutPromise(timeout)])
-    .then(
-      (x) =>
-        ({
-          result: "success",
-          message: successMessage,
-        }) as const,
-    )
-    .catch((e) => {
-      console.warn(`Error while fetching URL: ${url}`)
-      console.error(JSON.stringify(e))
-      console.error(asError(e))
-      return { result: "failure" as const, message: errorMessage }
-    })
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.html b/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.html deleted file mode 100644 index 40e2d3f5c..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - Code coverage report for lib/health/checkFns - - - - - - - - - -
-
-

All files lib/health/checkFns

-
-
- 53.06% - Statements - 26/49 -
- -
- 0% - Branches - 0/17 -
- -
- 26.31% - Functions - 5/19 -
- -
- 50% - Lines - 22/44 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- checkPortListening.ts - -
-
-
-
-
61.11%11/180%0/742.85%3/761.11%11/18
- checkWebUrl.ts - -
-
-
-
-
45.45%5/110%0/40%0/340%4/10
- index.ts - -
-
-
-
-
70%7/100%0/233.33%2/671.42%5/7
- runHealthScript.ts - -
-
-
-
-
30%3/100%0/40%0/322.22%2/9
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.ts.html b/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.ts.html deleted file mode 100644 index 4398f92fb..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/checkFns/index.ts.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - Code coverage report for lib/health/checkFns/index.ts - - - - - - - - - -
-
-

- All files / - lib/health/checkFns index.ts -

-
-
- 70% - Statements - 7/10 -
- -
- 0% - Branches - 0/2 -
- -
- 33.33% - Functions - 2/6 -
- -
- 71.42% - Lines - 5/7 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -125x -5x -  -11x -  -5x -  -  -  -  -11x - 
import { runHealthScript } from "./runHealthScript"
-export { checkPortListening } from "./checkPortListening"
-export { HealthCheckResult } from "./HealthCheckResult"
-export { checkWebUrl } from "./checkWebUrl"
- 
-export function timeoutPromise(ms: number, { message = "Timed out" } = {}) {
-  return new Promise<never>((resolve, reject) =>
-    setTimeout(() => reject(new Error(message)), ms),
-  )
-}
-export { runHealthScript }
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/checkFns/runHealthScript.ts.html b/sdk/lib/coverage/lcov-report/lib/health/checkFns/runHealthScript.ts.html deleted file mode 100644 index 0db4d4415..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/checkFns/runHealthScript.ts.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - Code coverage report for lib/health/checkFns/runHealthScript.ts - - - - - - - - - - -
-
-

- All files / - lib/health/checkFns runHealthScript.ts -

-
-
- 30% - Statements - 3/10 -
- -
- 0% - Branches - 0/4 -
- -
- 0% - Functions - 0/3 -
- -
- 22.22% - Lines - 2/9 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38  -  -  -  -5x -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../../types"
-import { SubContainer } from "../../util/SubContainer"
-import { stringFromStdErrOut } from "../../util/stringFromStdErrOut"
-import { HealthCheckResult } from "./HealthCheckResult"
-import { timeoutPromise } from "./index"
- 
-/**
- * Running a health script, is used when we want to have a simple
- * script in bash or something like that. It should return something that is useful
- * in {result: string} else it is considered an error
- * @param param0
- * @returns
- */
-export const runHealthScript = async (
-  runCommand: string[],
-  subcontainer: SubContainer,
-  {
-    timeout = 30000,
-    errorMessage = `Error while running command: ${runCommand}`,
-    message = (res: string) =>
-      `Have ran script ${runCommand} and the result: ${res}`,
-  } = {},
-): Promise<HealthCheckResult> => {
-  const res = await Promise.race([
-    subcontainer.exec(runCommand),
-    timeoutPromise(timeout),
-  ]).catch((e) => {
-    console.warn(errorMessage)
-    console.warn(JSON.stringify(e))
-    console.warn(e.toString())
-    throw { result: "failure", message: errorMessage } as HealthCheckResult
-  })
-  return {
-    result: "success",
-    message: message(res.stdout.toString()),
-  } as HealthCheckResult
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/health/index.html b/sdk/lib/coverage/lcov-report/lib/health/index.html deleted file mode 100644 index 1c3efdd54..000000000 --- a/sdk/lib/coverage/lcov-report/lib/health/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for lib/health - - - - - - - - - -
-
-

All files lib/health

-
-
- 17.24% - Statements - 5/29 -
- -
- 0% - Branches - 0/12 -
- -
- 0% - Functions - 0/6 -
- -
- 19.23% - Lines - 5/26 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- HealthCheck.ts - -
-
-
-
-
17.24%5/290%0/120%0/619.23%5/26
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/index.html b/sdk/lib/coverage/lcov-report/lib/index.html deleted file mode 100644 index 338272a44..000000000 --- a/sdk/lib/coverage/lcov-report/lib/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib - - - - - - - - - -
-
-

All files lib

-
-
- 40.27% - Statements - 58/144 -
- -
- 0% - Branches - 0/11 -
- -
- 11.76% - Functions - 10/85 -
- -
- 40.27% - Lines - 58/144 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- Dependency.ts - -
-
-
-
-
50%1/2100%0/00%0/150%1/2
- StartSdk.ts - -
-
-
-
-
40.14%57/1420%0/1111.9%10/8440.14%57/142
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/index.html b/sdk/lib/coverage/lcov-report/lib/inits/index.html deleted file mode 100644 index ed24b5bc4..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/index.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - Code coverage report for lib/inits - - - - - - - - - -
-
-

All files lib/inits

-
-
- 20.68% - Statements - 6/29 -
- -
- 0% - Branches - 0/6 -
- -
- 0% - Functions - 0/11 -
- -
- 20.68% - Lines - 6/29 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- setupInit.ts - -
-
-
-
-
12.5%2/160%0/50%0/312.5%2/16
- setupInstall.ts - -
-
-
-
-
33.33%2/6100%0/00%0/433.33%2/6
- setupUninstall.ts - -
-
-
-
-
28.57%2/70%0/10%0/428.57%2/7
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/migrations/Migration.ts.html b/sdk/lib/coverage/lcov-report/lib/inits/migrations/Migration.ts.html deleted file mode 100644 index 1e2ad99c8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/migrations/Migration.ts.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - Code coverage report for lib/inits/migrations/Migration.ts - - - - - - - - - -
-
-

- All files / - lib/inits/migrations Migration.ts -

-
-
- 20% - Statements - 1/5 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/4 -
- -
- 20% - Lines - 1/5 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ValidateExVer } from "../../exver"
-import * as T from "../../types"
- 
-export class Migration<
-  Manifest extends T.Manifest,
-  Store,
-  Version extends string,
-> {
-  constructor(
-    readonly options: {
-      version: Version & ValidateExVer<Version>
-      up: (opts: { effects: T.Effects }) => Promise<void>
-      down: (opts: { effects: T.Effects }) => Promise<void>
-    },
-  ) {}
-  static of<
-    Manifest extends T.Manifest,
-    Store,
-    Version extends string,
-  >(options: {
-    version: Version & ValidateExVer<Version>
-    up: (opts: { effects: T.Effects }) => Promise<void>
-    down: (opts: { effects: T.Effects }) => Promise<void>
-  }) {
-    return new Migration<Manifest, Store, Version>(options)
-  }
- 
-  async up(opts: { effects: T.Effects }) {
-    this.up(opts)
-  }
- 
-  async down(opts: { effects: T.Effects }) {
-    this.down(opts)
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/migrations/index.html b/sdk/lib/coverage/lcov-report/lib/inits/migrations/index.html deleted file mode 100644 index ed748aa90..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/migrations/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - Code coverage report for lib/inits/migrations - - - - - - - - - -
-
-

- All files lib/inits/migrations -

-
-
- 14.28% - Statements - 5/35 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/18 -
- -
- 14.7% - Lines - 5/34 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- Migration.ts - -
-
-
-
-
20%1/5100%0/00%0/420%1/5
- setupMigrations.ts - -
-
-
-
-
13.33%4/300%0/20%0/1413.79%4/29
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/migrations/setupMigrations.ts.html b/sdk/lib/coverage/lcov-report/lib/inits/migrations/setupMigrations.ts.html deleted file mode 100644 index 0a5cbb882..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/migrations/setupMigrations.ts.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - Code coverage report for lib/inits/migrations/setupMigrations.ts - - - - - - - - - - -
-
-

- All files / - lib/inits/migrations setupMigrations.ts -

-
-
- 13.33% - Statements - 4/30 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/14 -
- -
- 13.79% - Lines - 4/29 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -785x -  -  -5x -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ExtendedVersion } from "../../exver"
- 
-import * as T from "../../types"
-import { once } from "../../util/once"
-import { Migration } from "./Migration"
- 
-export class Migrations<Manifest extends T.Manifest, Store> {
-  private constructor(
-    readonly manifest: T.Manifest,
-    readonly migrations: Array<Migration<Manifest, Store, any>>,
-  ) {}
-  private sortedMigrations = once(() => {
-    const migrationsAsVersions = (
-      this.migrations as Array<Migration<Manifest, Store, any>>
-    )
-      .map((x) => [ExtendedVersion.parse(x.options.version), x] as const)
-      .filter(([v, _]) => v.flavor === this.currentVersion().flavor)
-    migrationsAsVersions.sort((a, b) => a[0].compareForSort(b[0]))
-    return migrationsAsVersions
-  })
-  private currentVersion = once(() =>
-    ExtendedVersion.parse(this.manifest.version),
-  )
-  static of<
-    Manifest extends T.Manifest,
-    Store,
-    Migrations extends Array<Migration<Manifest, Store, any>>,
-  >(manifest: T.Manifest, ...migrations: EnsureUniqueId<Migrations>) {
-    return new Migrations(
-      manifest,
-      migrations as Array<Migration<Manifest, Store, any>>,
-    )
-  }
-  async init({
-    effects,
-    previousVersion,
-  }: Parameters<T.ExpectedExports.init>[0]) {
-    Iif (!!previousVersion) {
-      const previousVersionExVer = ExtendedVersion.parse(previousVersion)
-      for (const [_, migration] of this.sortedMigrations()
-        .filter((x) => x[0].greaterThan(previousVersionExVer))
-        .filter((x) => x[0].lessThanOrEqual(this.currentVersion()))) {
-        await migration.up({ effects })
-      }
-    }
-  }
-  async uninit({
-    effects,
-    nextVersion,
-  }: Parameters<T.ExpectedExports.uninit>[0]) {
-    Iif (!!nextVersion) {
-      const nextVersionExVer = ExtendedVersion.parse(nextVersion)
-      const reversed = [...this.sortedMigrations()].reverse()
-      for (const [_, migration] of reversed
-        .filter((x) => x[0].greaterThan(nextVersionExVer))
-        .filter((x) => x[0].lessThanOrEqual(this.currentVersion()))) {
-        await migration.down({ effects })
-      }
-    }
-  }
-}
- 
-export function setupMigrations<
-  Manifest extends T.Manifest,
-  Store,
-  Migrations extends Array<Migration<Manifest, Store, any>>,
->(manifest: T.Manifest, ...migrations: EnsureUniqueId<Migrations>) {
-  return Migrations.of<Manifest, Store, Migrations>(manifest, ...migrations)
-}
- 
-// prettier-ignore
-export type EnsureUniqueId<A, B = A, ids = never> =
-  B extends [] ? A : 
-  B extends [Migration<any, any, infer id>, ...infer Rest] ? (
-    id extends ids ? "One of the ids are not unique"[] :
-    EnsureUniqueId<A, Rest, id | ids>
-  ) : "There exists a migration that is not a Migration"[]
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/setupInit.ts.html b/sdk/lib/coverage/lcov-report/lib/inits/setupInit.ts.html deleted file mode 100644 index 4d09fe0b8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/setupInit.ts.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - Code coverage report for lib/inits/setupInit.ts - - - - - - - - - -
-
-

- All files / - lib/inits setupInit.ts -

-
-
- 12.5% - Statements - 2/16 -
- -
- 0% - Branches - 0/5 -
- -
- 0% - Functions - 0/3 -
- -
- 12.5% - Lines - 2/16 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -5x -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { DependenciesReceipt } from "../config/setupConfig"
-import { ExtendedVersion, VersionRange } from "../exver"
-import { SetInterfaces } from "../interfaces/setupInterfaces"
- 
-import { ExposedStorePaths } from "../store/setupExposeStore"
-import * as T from "../types"
-import { VersionGraph } from "../version/VersionGraph"
-import { Install } from "./setupInstall"
-import { Uninstall } from "./setupUninstall"
- 
-export function setupInit<Manifest extends T.Manifest, Store>(
-  versions: VersionGraph<Manifest["version"]>,
-  install: Install<Manifest, Store>,
-  uninstall: Uninstall<Manifest, Store>,
-  setInterfaces: SetInterfaces<Manifest, Store, any, any>,
-  setDependencies: (options: {
-    effects: T.Effects
-    input: any
-  }) => Promise<DependenciesReceipt>,
-  exposedStore: ExposedStorePaths,
-): {
-  init: T.ExpectedExports.init
-  uninit: T.ExpectedExports.uninit
-} {
-  return {
-    init: async (opts) => {
-      const prev = await opts.effects.getDataVersion()
-      if (prev) {
-        await versions.migrate({
-          effects: opts.effects,
-          from: ExtendedVersion.parse(prev),
-          to: versions.currentVersion(),
-        })
-      } else {
-        await install.install(opts)
-        await opts.effects.setDataVersion({
-          version: versions.current.options.version,
-        })
-      }
-      await setInterfaces({
-        ...opts,
-        input: null,
-      })
-      await opts.effects.exposeForDependents({ paths: exposedStore })
-      await setDependencies({ effects: opts.effects, input: null })
-    },
-    uninit: async (opts) => {
-      if (opts.nextVersion) {
-        const prev = await opts.effects.getDataVersion()
-        Iif (prev) {
-          await versions.migrate({
-            effects: opts.effects,
-            from: ExtendedVersion.parse(prev),
-            to: ExtendedVersion.parse(opts.nextVersion),
-          })
-        }
-      } else {
-        await uninstall.uninstall(opts)
-      }
-    },
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/setupInstall.ts.html b/sdk/lib/coverage/lcov-report/lib/inits/setupInstall.ts.html deleted file mode 100644 index 05d473818..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/setupInstall.ts.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - Code coverage report for lib/inits/setupInstall.ts - - - - - - - - - -
-
-

- All files / - lib/inits setupInstall.ts -

-
-
- 33.33% - Statements - 2/6 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/4 -
- -
- 33.33% - Lines - 2/6 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  - 
import * as T from "../types"
- 
-export type InstallFn<Manifest extends T.Manifest, Store> = (opts: {
-  effects: T.Effects
-}) => Promise<void>
-export class Install<Manifest extends T.Manifest, Store> {
-  private constructor(readonly fn: InstallFn<Manifest, Store>) {}
-  static of<Manifest extends T.Manifest, Store>(
-    fn: InstallFn<Manifest, Store>,
-  ) {
-    return new Install(fn)
-  }
- 
-  async install({ effects }: Parameters<T.ExpectedExports.init>[0]) {
-    await this.fn({
-      effects,
-    })
-  }
-}
- 
-export function setupInstall<Manifest extends T.Manifest, Store>(
-  fn: InstallFn<Manifest, Store>,
-) {
-  return Install.of(fn)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/inits/setupUninstall.ts.html b/sdk/lib/coverage/lcov-report/lib/inits/setupUninstall.ts.html deleted file mode 100644 index ee6673da5..000000000 --- a/sdk/lib/coverage/lcov-report/lib/inits/setupUninstall.ts.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - Code coverage report for lib/inits/setupUninstall.ts - - - - - - - - - -
-
-

- All files / - lib/inits setupUninstall.ts -

-
-
- 28.57% - Statements - 2/7 -
- -
- 0% - Branches - 0/1 -
- -
- 0% - Functions - 0/4 -
- -
- 28.57% - Lines - 2/7 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  - 
import * as T from "../types"
- 
-export type UninstallFn<Manifest extends T.Manifest, Store> = (opts: {
-  effects: T.Effects
-}) => Promise<void>
-export class Uninstall<Manifest extends T.Manifest, Store> {
-  private constructor(readonly fn: UninstallFn<Manifest, Store>) {}
-  static of<Manifest extends T.Manifest, Store>(
-    fn: UninstallFn<Manifest, Store>,
-  ) {
-    return new Uninstall(fn)
-  }
- 
-  async uninstall({
-    effects,
-    nextVersion,
-  }: Parameters<T.ExpectedExports.uninit>[0]) {
-    Iif (!nextVersion)
-      await this.fn({
-        effects,
-      })
-  }
-}
- 
-export function setupUninstall<Manifest extends T.Manifest, Store>(
-  fn: UninstallFn<Manifest, Store>,
-) {
-  return Uninstall.of(fn)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/interfaces/Host.ts.html b/sdk/lib/coverage/lcov-report/lib/interfaces/Host.ts.html deleted file mode 100644 index 3a6a2e264..000000000 --- a/sdk/lib/coverage/lcov-report/lib/interfaces/Host.ts.html +++ /dev/null @@ -1,669 +0,0 @@ - - - - Code coverage report for lib/interfaces/Host.ts - - - - - - - - - -
-
-

- All files / - lib/interfaces Host.ts -

-
-
- 22.22% - Statements - 6/27 -
- -
- 0% - Branches - 0/18 -
- -
- 0% - Functions - 0/7 -
- -
- 24% - Lines - 6/25 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -1956x -  -6x -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  - 
import { number, object, string } from "ts-matches"
-import { Effects } from "../types"
-import { Origin } from "./Origin"
-import { AddSslOptions, BindParams } from ".././osBindings"
-import { Security } from ".././osBindings"
-import { BindOptions } from ".././osBindings"
-import { AlpnInfo } from ".././osBindings"
- 
-export { AddSslOptions, Security, BindOptions }
- 
-export const knownProtocols = {
-  http: {
-    secure: null,
-    defaultPort: 80,
-    withSsl: "https",
-    alpn: { specified: ["http/1.1"] } as AlpnInfo,
-  },
-  https: {
-    secure: { ssl: true },
-    defaultPort: 443,
-  },
-  ws: {
-    secure: null,
-    defaultPort: 80,
-    withSsl: "wss",
-    alpn: { specified: ["http/1.1"] } as AlpnInfo,
-  },
-  wss: {
-    secure: { ssl: true },
-    defaultPort: 443,
-  },
-  ssh: {
-    secure: { ssl: false },
-    defaultPort: 22,
-  },
-  bitcoin: {
-    secure: { ssl: false },
-    defaultPort: 8333,
-  },
-  lightning: {
-    secure: { ssl: true },
-    defaultPort: 9735,
-  },
-  grpc: {
-    secure: { ssl: true },
-    defaultPort: 50051,
-  },
-  dns: {
-    secure: { ssl: false },
-    defaultPort: 53,
-  },
-} as const
- 
-export type Scheme = string | null
- 
-type KnownProtocols = typeof knownProtocols
-type ProtocolsWithSslVariants = {
-  [K in keyof KnownProtocols]: KnownProtocols[K] extends {
-    withSsl: string
-  }
-    ? K
-    : never
-}[keyof KnownProtocols]
-type NotProtocolsWithSslVariants = Exclude<
-  keyof KnownProtocols,
-  ProtocolsWithSslVariants
->
- 
-type BindOptionsByKnownProtocol =
-  | {
-      protocol: ProtocolsWithSslVariants
-      preferredExternalPort?: number
-      addSsl?: Partial<AddSslOptions>
-    }
-  | {
-      protocol: NotProtocolsWithSslVariants
-      preferredExternalPort?: number
-      addSsl?: AddSslOptions
-    }
-export type BindOptionsByProtocol = BindOptionsByKnownProtocol | BindOptions
- 
-export type HostKind = BindParams["kind"]
- 
-const hasStringProtocol = object({
-  protocol: string,
-}).test
- 
-export class Host {
-  constructor(
-    readonly options: {
-      effects: Effects
-      kind: HostKind
-      id: string
-    },
-  ) {}
- 
-  async bindPort(
-    internalPort: number,
-    options: BindOptionsByProtocol,
-  ): Promise<Origin<this>> {
-    if (hasStringProtocol(options)) {
-      return await this.bindPortForKnown(options, internalPort)
-    } else {
-      return await this.bindPortForUnknown(internalPort, options)
-    }
-  }
- 
-  private async bindPortForUnknown(
-    internalPort: number,
-    options: {
-      preferredExternalPort: number
-      addSsl: AddSslOptions | null
-      secure: { ssl: boolean } | null
-    },
-  ) {
-    const binderOptions = {
-      kind: this.options.kind,
-      id: this.options.id,
-      internalPort,
-      ...options,
-    }
-    await this.options.effects.bind(binderOptions)
- 
-    return new Origin(this, internalPort, null, null)
-  }
- 
-  private async bindPortForKnown(
-    options: BindOptionsByKnownProtocol,
-    internalPort: number,
-  ) {
-    const protoInfo = knownProtocols[options.protocol]
-    const preferredExternalPort =
-      options.preferredExternalPort ||
-      knownProtocols[options.protocol].defaultPort
-    const sslProto = this.getSslProto(options, protoInfo)
-    const addSsl =
-      sslProto && "alpn" in protoInfo
-        ? {
-            // addXForwardedHeaders: null,
-            preferredExternalPort: knownProtocols[sslProto].defaultPort,
-            scheme: sslProto,
-            alpn: protoInfo.alpn,
-            ...("addSsl" in options ? options.addSsl : null),
-          }
-        : null
- 
-    const secure: Security | null = !protoInfo.secure ? null : { ssl: false }
- 
-    await this.options.effects.bind({
-      kind: this.options.kind,
-      id: this.options.id,
-      internalPort,
-      preferredExternalPort,
-      addSsl,
-      secure,
-    })
- 
-    return new Origin(this, internalPort, options.protocol, sslProto)
-  }
- 
-  private getSslProto(
-    options: BindOptionsByKnownProtocol,
-    protoInfo: KnownProtocols[keyof KnownProtocols],
-  ) {
-    Iif (inObject("noAddSsl", options) && options.noAddSsl) return null
-    Iif ("withSsl" in protoInfo && protoInfo.withSsl) return protoInfo.withSsl
-    return null
-  }
-}
- 
-function inObject<Key extends string>(
-  key: Key,
-  obj: any,
-): obj is { [K in Key]: unknown } {
-  return key in obj
-}
- 
-// export class StaticHost extends Host {
-//   constructor(options: { effects: Effects; id: string }) {
-//     super({ ...options, kind: "static" })
-//   }
-// }
- 
-// export class SingleHost extends Host {
-//   constructor(options: { effects: Effects; id: string }) {
-//     super({ ...options, kind: "single" })
-//   }
-// }
- 
-export class MultiHost extends Host {
-  constructor(options: { effects: Effects; id: string }) {
-    super({ ...options, kind: "multi" })
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/interfaces/Origin.ts.html b/sdk/lib/coverage/lcov-report/lib/interfaces/Origin.ts.html deleted file mode 100644 index 72e7c5b95..000000000 --- a/sdk/lib/coverage/lcov-report/lib/interfaces/Origin.ts.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - Code coverage report for lib/interfaces/Origin.ts - - - - - - - - - -
-
-

- All files / - lib/interfaces Origin.ts -

-
-
- 6.25% - Statements - 1/16 -
- -
- 0% - Branches - 0/6 -
- -
- 0% - Functions - 0/4 -
- -
- 6.25% - Lines - 1/16 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { AddressInfo } from "../types"
-import { AddressReceipt } from "./AddressReceipt"
-import { Host, BindOptions, Scheme } from "./Host"
-import { ServiceInterfaceBuilder } from "./ServiceInterfaceBuilder"
- 
-export class Origin<T extends Host> {
-  constructor(
-    readonly host: T,
-    readonly internalPort: number,
-    readonly scheme: string | null,
-    readonly sslScheme: string | null,
-  ) {}
- 
-  build({ username, path, search, schemeOverride }: BuildOptions): AddressInfo {
-    const qpEntries = Object.entries(search)
-      .map(
-        ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`,
-      )
-      .join("&")
- 
-    const qp = qpEntries.length ? `?${qpEntries}` : ""
- 
-    return {
-      hostId: this.host.options.id,
-      internalPort: this.internalPort,
-      scheme: schemeOverride ? schemeOverride.noSsl : this.scheme,
-      sslScheme: schemeOverride ? schemeOverride.ssl : this.sslScheme,
-      suffix: `${path}${qp}`,
-      username,
-    }
-  }
- 
-  /**
-   * A function to register a group of origins (<PROTOCOL> :// <HOSTNAME> : <PORT>) with StartOS
-   *
-   * The returned addressReceipt serves as proof that the addresses were registered
-   *
-   * @param addressInfo
-   * @returns
-   */
-  async export(
-    serviceInterfaces: ServiceInterfaceBuilder[],
-  ): Promise<AddressInfo[] & AddressReceipt> {
-    const addressesInfo = []
-    for (let serviceInterface of serviceInterfaces) {
-      const {
-        name,
-        description,
-        hasPrimary,
-        id,
-        type,
-        username,
-        path,
-        search,
-        schemeOverride,
-        masked,
-      } = serviceInterface.options
- 
-      const addressInfo = this.build({
-        username,
-        path,
-        search,
-        schemeOverride,
-      })
- 
-      await serviceInterface.options.effects.exportServiceInterface({
-        id,
-        name,
-        description,
-        hasPrimary,
-        addressInfo,
-        type,
-        masked,
-      })
- 
-      addressesInfo.push(addressInfo)
-    }
- 
-    return addressesInfo as AddressInfo[] & AddressReceipt
-  }
-}
- 
-type BuildOptions = {
-  schemeOverride: { ssl: Scheme; noSsl: Scheme } | null
-  username: string | null
-  path: string
-  search: Record<string, string>
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/interfaces/ServiceInterfaceBuilder.ts.html b/sdk/lib/coverage/lcov-report/lib/interfaces/ServiceInterfaceBuilder.ts.html deleted file mode 100644 index 16afb6027..000000000 --- a/sdk/lib/coverage/lcov-report/lib/interfaces/ServiceInterfaceBuilder.ts.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - Code coverage report for lib/interfaces/ServiceInterfaceBuilder.ts - - - - - - - - - - -
-
-

- All files / - lib/interfaces ServiceInterfaceBuilder.ts -

-
-
- 50% - Statements - 1/2 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/1 -
- -
- 50% - Lines - 1/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ServiceInterfaceType } from "../StartSdk"
-import { Effects } from "../types"
-import { Scheme } from "./Host"
- 
-/**
- * A helper class for creating a Network Interface
- *
- * Network Interfaces are collections of web addresses that expose the same API or other resource,
- * display to the user with under a common name and description.
- *
- * All URIs on an interface inherit the same ui: bool, basic auth credentials, path, and search (query) params
- *
- * @param options
- * @returns
- */
-export class ServiceInterfaceBuilder {
-  constructor(
-    readonly options: {
-      effects: Effects
-      name: string
-      id: string
-      description: string
-      hasPrimary: boolean
-      type: ServiceInterfaceType
-      username: string | null
-      path: string
-      search: Record<string, string>
-      schemeOverride: { ssl: Scheme; noSsl: Scheme } | null
-      masked: boolean
-    },
-  ) {}
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/interfaces/index.html b/sdk/lib/coverage/lcov-report/lib/interfaces/index.html deleted file mode 100644 index 826e9282e..000000000 --- a/sdk/lib/coverage/lcov-report/lib/interfaces/index.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - Code coverage report for lib/interfaces - - - - - - - - - -
-
-

All files lib/interfaces

-
-
- 22.44% - Statements - 11/49 -
- -
- 0% - Branches - 0/24 -
- -
- 0% - Functions - 0/13 -
- -
- 22.22% - Lines - 10/45 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- Host.ts - -
-
-
-
-
22.22%6/270%0/180%0/724%6/25
- Origin.ts - -
-
-
-
-
6.25%1/160%0/60%0/46.25%1/16
- ServiceInterfaceBuilder.ts - -
-
-
-
-
50%1/2100%0/00%0/150%1/2
- setupInterfaces.ts - -
-
-
-
-
75%3/4100%0/00%0/1100%2/2
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/interfaces/setupInterfaces.ts.html b/sdk/lib/coverage/lcov-report/lib/interfaces/setupInterfaces.ts.html deleted file mode 100644 index 76a51db8a..000000000 --- a/sdk/lib/coverage/lcov-report/lib/interfaces/setupInterfaces.ts.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - Code coverage report for lib/interfaces/setupInterfaces.ts - - - - - - - - - -
-
-

- All files / - lib/interfaces setupInterfaces.ts -

-
-
- 75% - Statements - 3/4 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/1 -
- -
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x - 
import { Config } from "../config/builder/config"
- 
-import * as T from "../types"
-import { AddressReceipt } from "./AddressReceipt"
- 
-export type InterfacesReceipt = Array<T.AddressInfo[] & AddressReceipt>
-export type SetInterfaces<
-  Manifest extends T.Manifest,
-  Store,
-  ConfigInput extends Record<string, any>,
-  Output extends InterfacesReceipt,
-> = (opts: { effects: T.Effects; input: null | ConfigInput }) => Promise<Output>
-export type SetupInterfaces = <
-  Manifest extends T.Manifest,
-  Store,
-  ConfigInput extends Record<string, any>,
-  Output extends InterfacesReceipt,
->(
-  config: Config<ConfigInput, Store>,
-  fn: SetInterfaces<Manifest, Store, ConfigInput, Output>,
-) => SetInterfaces<Manifest, Store, ConfigInput, Output>
-export const NO_INTERFACE_CHANGES = [] as InterfacesReceipt
-export const setupInterfaces: SetupInterfaces = (_config, fn) => fn
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/CommandController.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/CommandController.ts.html deleted file mode 100644 index 842399607..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/CommandController.ts.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - Code coverage report for lib/mainFn/CommandController.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn CommandController.ts -

-
-
- 10.41% - Statements - 5/48 -
- -
- 0% - Branches - 0/24 -
- -
- 0% - Functions - 0/12 -
- -
- 10.41% - Lines - 5/48 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -1405x -5x -  -  -  -5x -  -  -  -  -  -5x -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { DEFAULT_SIGTERM_TIMEOUT } from "."
-import { NO_TIMEOUT, SIGKILL, SIGTERM } from "../StartSdk"
- 
-import * as T from "../types"
-import { asError } from "../util/asError"
-import {
-  ExecSpawnable,
-  MountOptions,
-  SubContainerHandle,
-  SubContainer,
-} from "../util/SubContainer"
-import { splitCommand } from "../util/splitCommand"
-import * as cp from "child_process"
- 
-export class CommandController {
-  private constructor(
-    readonly runningAnswer: Promise<unknown>,
-    private state: { exited: boolean },
-    private readonly subcontainer: SubContainer,
-    private process: cp.ChildProcessWithoutNullStreams,
-    readonly sigtermTimeout: number = DEFAULT_SIGTERM_TIMEOUT,
-  ) {}
-  static of<Manifest extends T.Manifest>() {
-    return async <A extends string>(
-      effects: T.Effects,
-      subcontainer:
-        | {
-            id: keyof Manifest["images"] & T.ImageId
-            sharedRun?: boolean
-          }
-        | SubContainer,
-      command: T.CommandType,
-      options: {
-        // Defaults to the DEFAULT_SIGTERM_TIMEOUT = 30_000ms
-        sigtermTimeout?: number
-        mounts?: { path: string; options: MountOptions }[]
-        runAsInit?: boolean
-        env?:
-          | {
-              [variable: string]: string
-            }
-          | undefined
-        cwd?: string | undefined
-        user?: string | undefined
-        onStdout?: (x: Buffer) => void
-        onStderr?: (x: Buffer) => void
-      },
-    ) => {
-      const commands = splitCommand(command)
-      const subc =
-        subcontainer instanceof SubContainer
-          ? subcontainer
-          : await (async () => {
-              const subc = await SubContainer.of(effects, subcontainer)
-              for (let mount of options.mounts || []) {
-                await subc.mount(mount.options, mount.path)
-              }
-              return subc
-            })()
-      let childProcess: cp.ChildProcessWithoutNullStreams
-      if (options.runAsInit) {
-        childProcess = await subc.launch(commands, {
-          env: options.env,
-        })
-      } else {
-        childProcess = await subc.spawn(commands, {
-          env: options.env,
-        })
-      }
-      const state = { exited: false }
-      const answer = new Promise<null>((resolve, reject) => {
-        childProcess.on("exit", (code) => {
-          state.exited = true
-          Iif (
-            code === 0 ||
-            code === 143 ||
-            (code === null && childProcess.signalCode == "SIGTERM")
-          ) {
-            return resolve(null)
-          }
-          if (code) {
-            return reject(new Error(`${commands[0]} exited with code ${code}`))
-          } else {
-            return reject(
-              new Error(
-                `${commands[0]} exited with signal ${childProcess.signalCode}`,
-              ),
-            )
-          }
-        })
-      })
- 
-      return new CommandController(
-        answer,
-        state,
-        subc,
-        childProcess,
-        options.sigtermTimeout,
-      )
-    }
-  }
-  get subContainerHandle() {
-    return new SubContainerHandle(this.subcontainer)
-  }
-  async wait({ timeout = NO_TIMEOUT } = {}) {
-    Iif (timeout > 0)
-      setTimeout(() => {
-        this.term()
-      }, timeout)
-    try {
-      return await this.runningAnswer
-    } finally {
-      Iif (!this.state.exited) {
-        this.process.kill("SIGKILL")
-      }
-      await this.subcontainer.destroy?.().catch((_) => {})
-    }
-  }
-  async term({ signal = SIGTERM, timeout = this.sigtermTimeout } = {}) {
-    try {
-      Iif (!this.state.exited) {
-        Iif (!this.process.kill(signal)) {
-          console.error(
-            `failed to send signal ${signal} to pid ${this.process.pid}`,
-          )
-        }
-      }
- 
-      Iif (signal !== "SIGKILL") {
-        setTimeout(() => {
-          this.process.kill("SIGKILL")
-        }, timeout)
-      }
-      await this.runningAnswer
-    } finally {
-      await this.subcontainer.destroy?.()
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/Daemon.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/Daemon.ts.html deleted file mode 100644 index ac95c97c2..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/Daemon.ts.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - Code coverage report for lib/mainFn/Daemon.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn Daemon.ts -

-
-
- 15.62% - Statements - 5/32 -
- -
- 0% - Branches - 0/1 -
- -
- 0% - Functions - 0/13 -
- -
- 16.66% - Lines - 5/30 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89  -5x -  -5x -  -5x -5x -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { asError } from "../util/asError"
-import { ExecSpawnable, MountOptions, SubContainer } from "../util/SubContainer"
-import { CommandController } from "./CommandController"
- 
-const TIMEOUT_INCREMENT_MS = 1000
-const MAX_TIMEOUT_MS = 30000
-/**
- * This is a wrapper around CommandController that has a state of off, where the command shouldn't be running
- * and the others state of running, where it will keep a living running command
- */
- 
-export class Daemon {
-  private commandController: CommandController | null = null
-  private shouldBeRunning = false
-  constructor(private startCommand: () => Promise<CommandController>) {}
-  get subContainerHandle(): undefined | ExecSpawnable {
-    return this.commandController?.subContainerHandle
-  }
-  static of<Manifest extends T.Manifest>() {
-    return async <A extends string>(
-      effects: T.Effects,
-      subcontainer:
-        | {
-            id: keyof Manifest["images"] & T.ImageId
-            sharedRun?: boolean
-          }
-        | SubContainer,
-      command: T.CommandType,
-      options: {
-        mounts?: { path: string; options: MountOptions }[]
-        env?:
-          | {
-              [variable: string]: string
-            }
-          | undefined
-        cwd?: string | undefined
-        user?: string | undefined
-        onStdout?: (x: Buffer) => void
-        onStderr?: (x: Buffer) => void
-        sigtermTimeout?: number
-      },
-    ) => {
-      const startCommand = () =>
-        CommandController.of<Manifest>()(
-          effects,
-          subcontainer,
-          command,
-          options,
-        )
-      return new Daemon(startCommand)
-    }
-  }
-  async start() {
-    Iif (this.commandController) {
-      return
-    }
-    this.shouldBeRunning = true
-    let timeoutCounter = 0
-    new Promise(async () => {
-      while (this.shouldBeRunning) {
-        this.commandController = await this.startCommand()
-        await this.commandController.wait().catch((err) => console.error(err))
-        await new Promise((resolve) => setTimeout(resolve, timeoutCounter))
-        timeoutCounter += TIMEOUT_INCREMENT_MS
-        timeoutCounter = Math.max(MAX_TIMEOUT_MS, timeoutCounter)
-      }
-    }).catch((err) => {
-      console.error(asError(err))
-    })
-  }
-  async term(termOptions?: {
-    signal?: NodeJS.Signals | undefined
-    timeout?: number | undefined
-  }) {
-    return this.stop(termOptions)
-  }
-  async stop(termOptions?: {
-    signal?: NodeJS.Signals | undefined
-    timeout?: number | undefined
-  }) {
-    this.shouldBeRunning = false
-    await this.commandController
-      ?.term({ ...termOptions })
-      .catch((e) => console.error(asError(e)))
-    this.commandController = null
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/Daemons.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/Daemons.ts.html deleted file mode 100644 index e885f4c8d..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/Daemons.ts.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - Code coverage report for lib/mainFn/Daemons.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn Daemons.ts -

-
-
- 31.81% - Statements - 14/44 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/16 -
- -
- 28.94% - Lines - 11/38 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -  -5x -5x -5x -5x -5x -  -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { NO_TIMEOUT, SIGKILL, SIGTERM, Signals } from "../StartSdk"
-import { HealthReceipt } from "../health/HealthReceipt"
-import { HealthCheckResult } from "../health/checkFns"
- 
-import { Trigger } from "../trigger"
-import { TriggerInput } from "../trigger/TriggerInput"
-import { defaultTrigger } from "../trigger/defaultTrigger"
-import * as T from "../types"
-import { Mounts } from "./Mounts"
-import {
-  CommandOptions,
-  ExecSpawnable,
-  MountOptions,
-  SubContainer,
-} from "../util/SubContainer"
-import { splitCommand } from "../util/splitCommand"
- 
-import { promisify } from "node:util"
-import * as CP from "node:child_process"
- 
-export { Daemon } from "./Daemon"
-export { CommandController } from "./CommandController"
-import { HealthDaemon } from "./HealthDaemon"
-import { Daemon } from "./Daemon"
-import { CommandController } from "./CommandController"
- 
-export const cpExec = promisify(CP.exec)
-export const cpExecFile = promisify(CP.execFile)
-export type Ready = {
-  display: string | null
-  fn: (
-    spawnable: ExecSpawnable,
-  ) => Promise<HealthCheckResult> | HealthCheckResult
-  trigger?: Trigger
-}
- 
-type DaemonsParams<
-  Manifest extends T.Manifest,
-  Ids extends string,
-  Command extends string,
-  Id extends string,
-> = {
-  command: T.CommandType
-  image: { id: keyof Manifest["images"] & T.ImageId; sharedRun?: boolean }
-  mounts: Mounts<Manifest>
-  env?: Record<string, string>
-  ready: Ready
-  requires: Exclude<Ids, Id>[]
-  sigtermTimeout?: number
-}
- 
-type ErrorDuplicateId<Id extends string> = `The id '${Id}' is already used`
- 
-export const runCommand = <Manifest extends T.Manifest>() =>
-  CommandController.of<Manifest>()
- 
-/**
- * A class for defining and controlling the service daemons
-```ts
-Daemons.of({
-  effects,
-  started,
-  interfaceReceipt, // Provide the interfaceReceipt to prove it was completed
-  healthReceipts, // Provide the healthReceipts or [] to prove they were at least considered
-}).addDaemon('webui', {
-  command: 'hello-world', // The command to start the daemon
-  ready: {
-    display: 'Web Interface',
-    // The function to run to determine the health status of the daemon
-    fn: () =>
-      checkPortListening(effects, 80, {
-        successMessage: 'The web interface is ready',
-        errorMessage: 'The web interface is not ready',
-      }),
-  },
-  requires: [],
-})
-```
- */
-export class Daemons<Manifest extends T.Manifest, Ids extends string> {
-  private constructor(
-    readonly effects: T.Effects,
-    readonly started: (onTerm: () => PromiseLike<void>) => PromiseLike<void>,
-    readonly daemons: Promise<Daemon>[],
-    readonly ids: Ids[],
-    readonly healthDaemons: HealthDaemon[],
-  ) {}
-  /**
-   * Returns an empty new Daemons class with the provided config.
-   *
-   * Call .addDaemon() on the returned class to add a daemon.
-   *
-   * Daemons run in the order they are defined, with latter daemons being capable of
-   * depending on prior daemons
-   * @param config
-   * @returns
-   */
-  static of<Manifest extends T.Manifest>(config: {
-    effects: T.Effects
-    started: (onTerm: () => PromiseLike<void>) => PromiseLike<void>
-    healthReceipts: HealthReceipt[]
-  }) {
-    return new Daemons<Manifest, never>(
-      config.effects,
-      config.started,
-      [],
-      [],
-      [],
-    )
-  }
-  /**
-   * Returns the complete list of daemons, including the one defined here
-   * @param id
-   * @param newDaemon
-   * @returns
-   */
-  addDaemon<Id extends string, Command extends string>(
-    // prettier-ignore
-    id: 
-      "" extends Id ? never :
-      ErrorDuplicateId<Id> extends Id ? never :
-      Id extends Ids ? ErrorDuplicateId<Id> :
-      Id,
-    options: DaemonsParams<Manifest, Ids, Command, Id>,
-  ) {
-    const daemonIndex = this.daemons.length
-    const daemon = Daemon.of()(this.effects, options.image, options.command, {
-      ...options,
-      mounts: options.mounts.build(),
-    })
-    const healthDaemon = new HealthDaemon(
-      daemon,
-      daemonIndex,
-      options.requires
-        .map((x) => this.ids.indexOf(id as any))
-        .filter((x) => x >= 0)
-        .map((id) => this.healthDaemons[id]),
-      id,
-      this.ids,
-      options.ready,
-      this.effects,
-      options.sigtermTimeout,
-    )
-    const daemons = this.daemons.concat(daemon)
-    const ids = [...this.ids, id] as (Ids | Id)[]
-    const healthDaemons = [...this.healthDaemons, healthDaemon]
-    return new Daemons<Manifest, Ids | Id>(
-      this.effects,
-      this.started,
-      daemons,
-      ids,
-      healthDaemons,
-    )
-  }
- 
-  async build() {
-    this.updateMainHealth()
-    this.healthDaemons.forEach((x) =>
-      x.addWatcher(() => this.updateMainHealth()),
-    )
-    const built = {
-      term: async (options?: { signal?: Signals; timeout?: number }) => {
-        try {
-          await Promise.all(this.healthDaemons.map((x) => x.term(options)))
-        } finally {
-          this.effects.setMainStatus({ status: "stopped" })
-        }
-      },
-    }
-    this.started(() => built.term())
-    return built
-  }
- 
-  private updateMainHealth() {
-    this.effects.setMainStatus({ status: "running" })
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/HealthDaemon.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/HealthDaemon.ts.html deleted file mode 100644 index 09d6aa5a8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/HealthDaemon.ts.html +++ /dev/null @@ -1,537 +0,0 @@ - - - - Code coverage report for lib/mainFn/HealthDaemon.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn HealthDaemon.ts -

-
-
- 6.94% - Statements - 5/72 -
- -
- 0% - Branches - 0/12 -
- -
- 0% - Functions - 0/22 -
- -
- 7.81% - Lines - 5/64 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151  -5x -  -  -  -5x -5x -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { HealthCheckResult } from "../health/checkFns"
-import { defaultTrigger } from "../trigger/defaultTrigger"
-import { Ready } from "./Daemons"
-import { Daemon } from "./Daemon"
-import { Effects, SetHealth } from "../types"
-import { DEFAULT_SIGTERM_TIMEOUT } from "."
-import { asError } from "../util/asError"
- 
-const oncePromise = <T>() => {
-  let resolve: (value: T) => void
-  const promise = new Promise<T>((res) => {
-    resolve = res
-  })
-  return { resolve: resolve!, promise }
-}
- 
-/**
- * Wanted a structure that deals with controlling daemons by their health status
- * States:
- * -- Waiting for dependencies to be success
- * -- Running: Daemon is running and the status is in the health
- *
- */
-export class HealthDaemon {
-  private _health: HealthCheckResult = { result: "starting", message: null }
-  private healthWatchers: Array<() => unknown> = []
-  private running = false
-  constructor(
-    private readonly daemon: Promise<Daemon>,
-    readonly daemonIndex: number,
-    private readonly dependencies: HealthDaemon[],
-    readonly id: string,
-    readonly ids: string[],
-    readonly ready: Ready,
-    readonly effects: Effects,
-    readonly sigtermTimeout: number = DEFAULT_SIGTERM_TIMEOUT,
-  ) {
-    this.updateStatus()
-    this.dependencies.forEach((d) => d.addWatcher(() => this.updateStatus()))
-  }
- 
-  /** Run after we want to do cleanup */
-  async term(termOptions?: {
-    signal?: NodeJS.Signals | undefined
-    timeout?: number | undefined
-  }) {
-    this.healthWatchers = []
-    this.running = false
-    this.healthCheckCleanup?.()
- 
-    await this.daemon.then((d) =>
-      d.term({
-        timeout: this.sigtermTimeout,
-        ...termOptions,
-      }),
-    )
-  }
- 
-  /** Want to add another notifier that the health might have changed */
-  addWatcher(watcher: () => unknown) {
-    this.healthWatchers.push(watcher)
-  }
- 
-  get health() {
-    return Object.freeze(this._health)
-  }
- 
-  private async changeRunning(newStatus: boolean) {
-    Iif (this.running === newStatus) return
- 
-    this.running = newStatus
- 
-    if (newStatus) {
-      ;(await this.daemon).start()
-      this.setupHealthCheck()
-    } else {
-      ;(await this.daemon).stop()
-      this.turnOffHealthCheck()
- 
-      this.setHealth({ result: "starting", message: null })
-    }
-  }
- 
-  private healthCheckCleanup: (() => void) | null = null
-  private turnOffHealthCheck() {
-    this.healthCheckCleanup?.()
-  }
-  private async setupHealthCheck() {
-    Iif (this.healthCheckCleanup) return
-    const trigger = (this.ready.trigger ?? defaultTrigger)(() => ({
-      lastResult: this._health.result,
-    }))
- 
-    const { promise: status, resolve: setStatus } = oncePromise<{
-      done: true
-    }>()
-    new Promise(async () => {
-      for (
-        let res = await Promise.race([status, trigger.next()]);
-        !res.done;
-        res = await Promise.race([status, trigger.next()])
-      ) {
-        const handle = (await this.daemon).subContainerHandle
- 
-        if (handle) {
-          const response: HealthCheckResult = await Promise.resolve(
-            this.ready.fn(handle),
-          ).catch((err) => {
-            console.error(asError(err))
-            return {
-              result: "failure",
-              message: "message" in err ? err.message : String(err),
-            }
-          })
-          await this.setHealth(response)
-        } else {
-          await this.setHealth({
-            result: "failure",
-            message: "Daemon not running",
-          })
-        }
-      }
-    }).catch((err) => console.error(`Daemon ${this.id} failed: ${err}`))
- 
-    this.healthCheckCleanup = () => {
-      setStatus({ done: true })
-      this.healthCheckCleanup = null
-    }
-  }
- 
-  private async setHealth(health: HealthCheckResult) {
-    this._health = health
-    this.healthWatchers.forEach((watcher) => watcher())
-    const display = this.ready.display
-    const result = health.result
-    Iif (!display) {
-      return
-    }
-    await this.effects.setHealth({
-      ...health,
-      id: this.id,
-      name: display,
-    } as SetHealth)
-  }
- 
-  private async updateStatus() {
-    const healths = this.dependencies.map((d) => d._health)
-    this.changeRunning(healths.every((x) => x.result === "success"))
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/Mounts.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/Mounts.ts.html deleted file mode 100644 index 29d21179d..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/Mounts.ts.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - Code coverage report for lib/mainFn/Mounts.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn Mounts.ts -

-
-
- 4.34% - Statements - 1/23 -
- -
- 0% - Branches - 0/1 -
- -
- 0% - Functions - 0/12 -
- -
- 4.34% - Lines - 1/23 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { MountOptions } from "../util/SubContainer"
- 
-type MountArray = { path: string; options: MountOptions }[]
- 
-export class Mounts<Manifest extends T.Manifest> {
-  private constructor(
-    readonly volumes: {
-      id: Manifest["volumes"][number]
-      subpath: string | null
-      mountpoint: string
-      readonly: boolean
-    }[],
-    readonly assets: {
-      id: Manifest["assets"][number]
-      subpath: string | null
-      mountpoint: string
-    }[],
-    readonly dependencies: {
-      dependencyId: string
-      volumeId: string
-      subpath: string | null
-      mountpoint: string
-      readonly: boolean
-    }[],
-  ) {}
- 
-  static of<Manifest extends T.Manifest>() {
-    return new Mounts<Manifest>([], [], [])
-  }
- 
-  mountVolume(
-    id: Manifest["volumes"][number],
-    subpath: string | null,
-    mountpoint: string,
-    readonly: boolean,
-  ) {
-    this.volumes.push({
-      id,
-      subpath,
-      mountpoint,
-      readonly,
-    })
-    return this
-  }
- 
-  mountAssets(
-    id: Manifest["assets"][number],
-    subpath: string | null,
-    mountpoint: string,
-  ) {
-    this.assets.push({
-      id,
-      subpath,
-      mountpoint,
-    })
-    return this
-  }
- 
-  mountDependency<DependencyManifest extends T.Manifest>(
-    dependencyId: keyof Manifest["dependencies"] & string,
-    volumeId: DependencyManifest["volumes"][number],
-    subpath: string | null,
-    mountpoint: string,
-    readonly: boolean,
-  ) {
-    this.dependencies.push({
-      dependencyId,
-      volumeId,
-      subpath,
-      mountpoint,
-      readonly,
-    })
-    return this
-  }
- 
-  build(): MountArray {
-    const mountpoints = new Set()
-    for (let mountpoint of this.volumes
-      .map((v) => v.mountpoint)
-      .concat(this.assets.map((a) => a.mountpoint))
-      .concat(this.dependencies.map((d) => d.mountpoint))) {
-      Iif (mountpoints.has(mountpoint)) {
-        throw new Error(
-          `cannot mount more than once to mountpoint ${mountpoint}`,
-        )
-      }
-      mountpoints.add(mountpoint)
-    }
-    return ([] as MountArray)
-      .concat(
-        this.volumes.map((v) => ({
-          path: v.mountpoint,
-          options: {
-            type: "volume",
-            id: v.id,
-            subpath: v.subpath,
-            readonly: v.readonly,
-          },
-        })),
-      )
-      .concat(
-        this.assets.map((a) => ({
-          path: a.mountpoint,
-          options: {
-            type: "assets",
-            id: a.id,
-            subpath: a.subpath,
-          },
-        })),
-      )
-      .concat(
-        this.dependencies.map((d) => ({
-          path: d.mountpoint,
-          options: {
-            type: "pointer",
-            packageId: d.dependencyId,
-            volumeId: d.volumeId,
-            subpath: d.subpath,
-            readonly: d.readonly,
-          },
-        })),
-      )
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/index.html b/sdk/lib/coverage/lcov-report/lib/mainFn/index.html deleted file mode 100644 index 5c154836e..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/index.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - Code coverage report for lib/mainFn - - - - - - - - - -
-
-

All files lib/mainFn

-
-
- 15.78% - Statements - 36/228 -
- -
- 0% - Branches - 0/38 -
- -
- 0% - Functions - 0/77 -
- -
- 15.16% - Lines - 32/211 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- CommandController.ts - -
-
-
-
-
10.41%5/480%0/240%0/1210.41%5/48
- Daemon.ts - -
-
-
-
-
15.62%5/320%0/10%0/1316.66%5/30
- Daemons.ts - -
-
-
-
-
31.81%14/44100%0/00%0/1628.94%11/38
- HealthDaemon.ts - -
-
-
-
-
6.94%5/720%0/120%0/227.81%5/64
- Mounts.ts - -
-
-
-
-
4.34%1/230%0/10%0/124.34%1/23
- index.ts - -
-
-
-
-
66.66%6/9100%0/00%0/262.5%5/8
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/mainFn/index.ts.html b/sdk/lib/coverage/lcov-report/lib/mainFn/index.ts.html deleted file mode 100644 index 55625ad96..000000000 --- a/sdk/lib/coverage/lcov-report/lib/mainFn/index.ts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - Code coverage report for lib/mainFn/index.ts - - - - - - - - - -
-
-

- All files / - lib/mainFn index.ts -

-
-
- 66.66% - Statements - 6/9 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/2 -
- -
- 62.5% - Lines - 5/8 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32  -  -5x -5x -  -5x -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { Daemons } from "./Daemons"
-import "../interfaces/ServiceInterfaceBuilder"
-import "../interfaces/Origin"
- 
-import "./Daemons"
- 
-import { MainEffects } from "../StartSdk"
- 
-export const DEFAULT_SIGTERM_TIMEOUT = 30_000
-/**
- * Used to ensure that the main function is running with the valid proofs.
- * We first do the folowing order of things
- * 1. We get the interfaces
- * 2. We setup all the commands to setup the system
- * 3. We create the health checks
- * 4. We setup the daemons init system
- * @param fn
- * @returns
- */
-export const setupMain = <Manifest extends T.Manifest, Store>(
-  fn: (o: {
-    effects: MainEffects
-    started(onTerm: () => PromiseLike<void>): PromiseLike<void>
-  }) => Promise<Daemons<Manifest, any>>,
-): T.ExpectedExports.main => {
-  return async (options) => {
-    const result = await fn(options)
-    return result
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/manifest/index.html b/sdk/lib/coverage/lcov-report/lib/manifest/index.html deleted file mode 100644 index 55d869785..000000000 --- a/sdk/lib/coverage/lcov-report/lib/manifest/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - Code coverage report for lib/manifest - - - - - - - - - -
-
-

All files lib/manifest

-
-
- 25% - Statements - 4/16 -
- -
- 65.51% - Branches - 19/29 -
- -
- 20% - Functions - 1/5 -
- -
- 26.66% - Lines - 4/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- setupManifest.ts - -
-
-
-
-
25%4/1665.51%19/2920%1/526.66%4/15
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/manifest/setupManifest.ts.html b/sdk/lib/coverage/lcov-report/lib/manifest/setupManifest.ts.html deleted file mode 100644 index 6833af84a..000000000 --- a/sdk/lib/coverage/lcov-report/lib/manifest/setupManifest.ts.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - Code coverage report for lib/manifest/setupManifest.ts - - - - - - - - - -
-
-

- All files / - lib/manifest setupManifest.ts -

-
-
- 25% - Statements - 4/16 -
- -
- 65.51% - Branches - 19/29 -
- -
- 20% - Functions - 1/5 -
- -
- 26.66% - Lines - 4/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85  -  -  -4x -  -  -  -  -  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
-import { ImageConfig, ImageId, VolumeId } from "../osBindings"
-import { SDKManifest, SDKImageConfig } from "./ManifestTypes"
-import { SDKVersion } from "../StartSdk"
-import { VersionGraph } from "../version/VersionGraph"
- 
-/**
- * This is an example of a function that takes a manifest and returns a new manifest with additional properties
- * @param manifest Manifests are the description of the package
- * @returns The manifest with additional properties
- */
-export function setupManifest<
-  Id extends string,
-  Version extends string,
-  Dependencies extends Record<string, unknown>,
-  VolumesTypes extends VolumeId,
-  AssetTypes extends VolumeId,
-  ImagesTypes extends ImageId,
-  Manifest extends {
-    dependencies: Dependencies
-    id: Id
-    assets: AssetTypes[]
-    images: Record<ImagesTypes, SDKImageConfig>
-    volumes: VolumesTypes[]
-  },
-  Satisfies extends string[] = [],
->(
-  versions: VersionGraph<Version>,
-  manifest: SDKManifest & Manifest,
-): Manifest & T.Manifest {
-  const images = Object.entries(manifest.images).reduce(
-    (images, [k, v]) => {
-      v.arch = v.arch || ["aarch64", "x86_64"]
-      Iif (v.emulateMissingAs === undefined)
-        v.emulateMissingAs = v.arch[0] || null
-      images[k] = v as ImageConfig
-      return images
-    },
-    {} as { [k: string]: ImageConfig },
-  )
-  return {
-    ...manifest,
-    gitHash: null,
-    osVersion: SDKVersion,
-    version: versions.current.options.version,
-    releaseNotes: versions.current.options.releaseNotes,
-    satisfies: versions.current.options.satisfies || [],
-    canMigrateTo: versions.canMigrateTo().toString(),
-    canMigrateFrom: versions.canMigrateFrom().toString(),
-    images,
-    alerts: {
-      install: manifest.alerts?.install || null,
-      update: manifest.alerts?.update || null,
-      uninstall: manifest.alerts?.uninstall || null,
-      restore: manifest.alerts?.restore || null,
-      start: manifest.alerts?.start || null,
-      stop: manifest.alerts?.stop || null,
-    },
-    hasConfig: manifest.hasConfig === undefined ? true : manifest.hasConfig,
-    hardwareRequirements: {
-      device: Object.fromEntries(
-        Object.entries(manifest.hardwareRequirements?.device || {}).map(
-          ([k, v]) => [k, v.source],
-        ),
-      ),
-      ram: manifest.hardwareRequirements?.ram || null,
-      arch:
-        manifest.hardwareRequirements?.arch === undefined
-          ? Object.values(images).reduce(
-              (arch, config) => {
-                Iif (config.emulateMissingAs) {
-                  return arch
-                }
-                Iif (arch === null) {
-                  return config.arch
-                }
-                return arch.filter((a) => config.arch.includes(a))
-              },
-              null as string[] | null,
-            )
-          : manifest.hardwareRequirements?.arch,
-    },
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/store/PathBuilder.ts.html b/sdk/lib/coverage/lcov-report/lib/store/PathBuilder.ts.html deleted file mode 100644 index 03005d7bb..000000000 --- a/sdk/lib/coverage/lcov-report/lib/store/PathBuilder.ts.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - Code coverage report for lib/store/PathBuilder.ts - - - - - - - - - -
-
-

- All files / - lib/store PathBuilder.ts -

-
-
- 53.84% - Statements - 7/13 -
- -
- 33.33% - Branches - 1/3 -
- -
- 33.33% - Functions - 1/3 -
- -
- 50% - Lines - 5/10 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -  -  -  -5x -  -  -6x -  -  -  -  -  -  -  -  -  - 
import { Affine } from "../util"
- 
-const pathValue = Symbol("pathValue")
-export type PathValue = typeof pathValue
- 
-export type PathBuilderStored<AllStore, Store> = {
-  [K in PathValue]: [AllStore, Store]
-}
- 
-export type PathBuilder<AllStore, Store = AllStore> = (Store extends Record<
-  string,
-  unknown
->
-  ? {
-      [K in keyof Store]: PathBuilder<AllStore, Store[K]>
-    }
-  : {}) &
-  PathBuilderStored<AllStore, Store>
- 
-export type StorePath = string & Affine<"StorePath">
-const privateSymbol = Symbol("jsonPath")
-export const extractJsonPath = (builder: PathBuilder<unknown>) => {
-  return (builder as any)[privateSymbol] as StorePath
-}
- 
-export const pathBuilder = <Store, StorePath = Store>(
-  paths: string[] = [],
-): PathBuilder<Store, StorePath> => {
-  return new Proxy({} as PathBuilder<Store, StorePath>, {
-    get(target, prop) {
-      Iif (prop === privateSymbol) {
-        Iif (paths.length === 0) return ""
-        return `/${paths.join("/")}`
-      }
-      return pathBuilder<any>([...paths, prop as string])
-    },
-  }) as PathBuilder<Store, StorePath>
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/store/getStore.ts.html b/sdk/lib/coverage/lcov-report/lib/store/getStore.ts.html deleted file mode 100644 index 589091d03..000000000 --- a/sdk/lib/coverage/lcov-report/lib/store/getStore.ts.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - Code coverage report for lib/store/getStore.ts - - - - - - - - - -
-
-

- All files / - lib/store getStore.ts -

-
-
- 20% - Statements - 3/15 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/7 -
- -
- 20% - Lines - 3/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62  -5x -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../types"
-import { PathBuilder, extractJsonPath } from "./PathBuilder"
- 
-export class GetStore<Store, StoreValue> {
-  constructor(
-    readonly effects: Effects,
-    readonly path: PathBuilder<Store, StoreValue>,
-    readonly options: {
-      /** Defaults to what ever the package currently in */
-      packageId?: string | undefined
-    } = {},
-  ) {}
- 
-  /**
-   * Returns the value of Store at the provided path. Restart the service if the value changes
-   */
-  const() {
-    return this.effects.store.get<Store, StoreValue>({
-      ...this.options,
-      path: extractJsonPath(this.path),
-      callback: this.effects.restart,
-    })
-  }
-  /**
-   * Returns the value of Store at the provided path. Does nothing if the value changes
-   */
-  once() {
-    return this.effects.store.get<Store, StoreValue>({
-      ...this.options,
-      path: extractJsonPath(this.path),
-    })
-  }
- 
-  /**
-   * Watches the value of Store at the provided path. Takes a custom callback function to run whenever the value changes
-   */
-  async *watch() {
-    while (true) {
-      let callback: () => void
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await this.effects.store.get<Store, StoreValue>({
-        ...this.options,
-        path: extractJsonPath(this.path),
-        callback: () => callback(),
-      })
-      await waitForNext
-    }
-  }
-}
-export function getStore<Store, StoreValue>(
-  effects: Effects,
-  path: PathBuilder<Store, StoreValue>,
-  options: {
-    /** Defaults to what ever the package currently in */
-    packageId?: string | undefined
-  } = {},
-) {
-  return new GetStore<Store, StoreValue>(effects, path, options)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/store/index.html b/sdk/lib/coverage/lcov-report/lib/store/index.html deleted file mode 100644 index 90dedf396..000000000 --- a/sdk/lib/coverage/lcov-report/lib/store/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/store - - - - - - - - - -
-
-

All files lib/store

-
-
- 35.71% - Statements - 10/28 -
- -
- 20% - Branches - 1/5 -
- -
- 10% - Functions - 1/10 -
- -
- 32% - Lines - 8/25 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- PathBuilder.ts - -
-
-
-
-
53.84%7/1333.33%1/333.33%1/350%5/10
- getStore.ts - -
-
-
-
-
20%3/150%0/20%0/720%3/15
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/test/index.html b/sdk/lib/coverage/lcov-report/lib/test/index.html deleted file mode 100644 index 775af9bb6..000000000 --- a/sdk/lib/coverage/lcov-report/lib/test/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/test - - - - - - - - - -
-
-

All files lib/test

-
-
- 100% - Statements - 9/9 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 9/9 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- output.sdk.ts - -
-
-
-
-
100%5/5100%0/0100%0/0100%5/5
- output.ts - -
-
-
-
-
100%4/4100%0/0100%0/0100%4/4
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/test/output.sdk.ts.html b/sdk/lib/coverage/lcov-report/lib/test/output.sdk.ts.html deleted file mode 100644 index 64f430734..000000000 --- a/sdk/lib/coverage/lcov-report/lib/test/output.sdk.ts.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - Code coverage report for lib/test/output.sdk.ts - - - - - - - - - -
-
-

- All files / - lib/test output.sdk.ts -

-
-
- 100% - Statements - 5/5 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -574x -4x -4x -4x -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { StartSdk } from "../StartSdk"
-import { setupManifest } from "../manifest/setupManifest"
-import { VersionInfo } from "../version/VersionInfo"
-import { VersionGraph } from "../version/VersionGraph"
- 
-export type Manifest = any
-export const sdk = StartSdk.of()
-  .withManifest(
-    setupManifest(
-      VersionGraph.of(
-        VersionInfo.of({
-          version: "1.0.0:0",
-          releaseNotes: "",
-          migrations: {},
-        })
-          .satisfies("#other:1.0.0:0")
-          .satisfies("#other:2.0.0:0"),
-      ),
-      {
-        id: "testOutput",
-        title: "",
-        license: "",
-        replaces: [],
-        wrapperRepo: "",
-        upstreamRepo: "",
-        supportSite: "",
-        marketingSite: "",
-        donationUrl: null,
-        description: {
-          short: "",
-          long: "",
-        },
-        containers: {},
-        images: {},
-        volumes: [],
-        assets: [],
-        alerts: {
-          install: null,
-          update: null,
-          uninstall: null,
-          restore: null,
-          start: null,
-          stop: null,
-        },
-        dependencies: {
-          "remote-test": {
-            description: "",
-            optional: false,
-            s9pk: "https://example.com/remote-test.s9pk",
-          },
-        },
-      },
-    ),
-  )
-  .withStore<{ storeRoot: { storeLeaf: "value" } }>()
-  .build(true)
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/test/output.ts.html b/sdk/lib/coverage/lcov-report/lib/test/output.ts.html deleted file mode 100644 index 569059de8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/test/output.ts.html +++ /dev/null @@ -1,1215 +0,0 @@ - - - - Code coverage report for lib/test/output.ts - - - - - - - - - -
-
-

- All files / - lib/test output.ts -

-
-
- 100% - Statements - 4/4 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377  -2x -2x -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x - 
 
-import { sdk } from "./output.sdk"
-const {Config, List, Value, Variants} = sdk
- 
-export const configSpec = Config.of({"mediasources": Value.multiselect({
-  "name": "Media Sources",
-  "minLength": null,
-  "maxLength": null,
-  "default": [
-    "nextcloud"
-  ],
-  "description": "List of Media Sources to use with Jellyfin",
-  "warning": null,
-  "values": {
-    "nextcloud": "NextCloud",
-    "filebrowser": "File Browser"
-  }
-}),"testListUnion": Value.list(/* TODO: Convert range for this value ([1,*))*/List.obj({
-          name:"Lightning Nodes",
-          minLength:null,
-          maxLength:null,
-          default: [],
-          description: "List of Lightning Network node instances to manage",
-          warning: null,
-        }, {
-          spec: 
-          Config.of({
-            "union": /* TODO: Convert range for this value ([1,*))*/
-          Value.union({
-            name: "Type",
-            description: "- LND: Lightning Network Daemon from Lightning Labs\n- CLN: Core Lightning from Blockstream\n",
-            warning: null,
-            required: {"default":"lnd"},
-          }, Variants.of({"lnd": {name: "lnd", spec: Config.of({"name": Value.text({
-  "name": "Node Name",
-  "required": {
-    "default": "LND Wrapper"
-  },
-  "description": "Name of this node in the list",
-  "warning": null,
-  "masked": false,
-  "placeholder": null,
-  "inputmode": "text",
-  "patterns": [],
-  "minLength": null,
-  "maxLength": null
-}),})},}))
-        
-          })
-        ,
-          displayAs: "{{name}}",
-          uniqueBy: "name",
-        })),"rpc": Value.object({
-        name: "RPC Settings",
-        description: "RPC configuration options.",
-        warning: null,
-      }, Config.of({"enable": Value.toggle({
-  "name": "Enable",
-  "default": true,
-  "description": "Allow remote RPC requests.",
-  "warning": null
-}),"username": Value.text({
-  "name": "Username",
-  "required": {
-    "default": "bitcoin"
-  },
-  "description": "The username for connecting to Bitcoin over RPC.",
-  "warning": null,
-  "masked": true,
-  "placeholder": null,
-  "inputmode": "text",
-  "patterns": [
-    {
-      "regex": "^[a-zA-Z0-9_]+$",
-      "description": "Must be alphanumeric (can contain underscore)."
-    }
-  ],
-  "minLength": null,
-  "maxLength": null
-}),"password": Value.text({
-  "name": "RPC Password",
-  "required": {
-    "default": {
-      "charset": "a-z,2-7",
-      "len": 20
-    }
-  },
-  "description": "The password for connecting to Bitcoin over RPC.",
-  "warning": null,
-  "masked": true,
-  "placeholder": null,
-  "inputmode": "text",
-  "patterns": [
-    {
-      "regex": "^[^\\n\"]*$",
-      "description": "Must not contain newline or quote characters."
-    }
-  ],
-  "minLength": null,
-  "maxLength": null
-}),"bio": Value.textarea({
-  "name": "Username",
-  "description": "The username for connecting to Bitcoin over RPC.",
-  "warning": null,
-  "required": true,
-  "placeholder": null,
-  "maxLength": null,
-  "minLength": null
-}),"advanced": Value.object({
-        name: "Advanced",
-        description: "Advanced RPC Settings",
-        warning: null,
-      }, Config.of({"auth": Value.list(/* TODO: Convert range for this value ([0,*))*/List.text({
-  "name": "Authorization",
-  "minLength": null,
-  "maxLength": null,
-  "default": [],
-  "description": "Username and hashed password for JSON-RPC connections. RPC clients connect using the usual http basic authentication.",
-  "warning": null
-}, {"masked":false,"placeholder":null,"patterns":[{"regex":"^[a-zA-Z0-9_-]+:([0-9a-fA-F]{2})+\\$([0-9a-fA-F]{2})+$","description":"Each item must be of the form \"<USERNAME>:<SALT>$<HASH>\"."}],"minLength":null,"maxLength":null})),"serialversion": Value.select({
-  "name": "Serialization Version",
-  "description": "Return raw transaction or block hex with Segwit or non-SegWit serialization.",
-  "warning": null,
-  "required": {
-    "default": "segwit"
-  },
-  "values": {
-    "non-segwit": "non-segwit",
-    "segwit": "segwit"
-  }
-} as const),"servertimeout": /* TODO: Convert range for this value ([5,300])*/Value.number({
-  "name": "Rpc Server Timeout",
-  "description": "Number of seconds after which an uncompleted RPC call will time out.",
-  "warning": null,
-  "required": {
-    "default": 30
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "seconds",
-  "placeholder": null
-}),"threads": /* TODO: Convert range for this value ([1,64])*/Value.number({
-  "name": "Threads",
-  "description": "Set the number of threads for handling RPC calls. You may wish to increase this if you are making lots of calls via an integration.",
-  "warning": null,
-  "required": {
-    "default": 16
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": null,
-  "placeholder": null
-}),"workqueue": /* TODO: Convert range for this value ([8,256])*/Value.number({
-  "name": "Work Queue",
-  "description": "Set the depth of the work queue to service RPC calls. Determines how long the backlog of RPC requests can get before it just rejects new ones.",
-  "warning": null,
-  "required": {
-    "default": 128
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "requests",
-  "placeholder": null
-}),})),})),"zmq-enabled": Value.toggle({
-  "name": "ZeroMQ Enabled",
-  "default": true,
-  "description": "Enable the ZeroMQ interface",
-  "warning": null
-}),"txindex": Value.toggle({
-  "name": "Transaction Index",
-  "default": true,
-  "description": "Enable the Transaction Index (txindex)",
-  "warning": null
-}),"wallet": Value.object({
-        name: "Wallet",
-        description: "Wallet Settings",
-        warning: null,
-      }, Config.of({"enable": Value.toggle({
-  "name": "Enable Wallet",
-  "default": true,
-  "description": "Load the wallet and enable wallet RPC calls.",
-  "warning": null
-}),"avoidpartialspends": Value.toggle({
-  "name": "Avoid Partial Spends",
-  "default": true,
-  "description": "Group outputs by address, selecting all or none, instead of selecting on a per-output basis. This improves privacy at the expense of higher transaction fees.",
-  "warning": null
-}),"discardfee": /* TODO: Convert range for this value ([0,.01])*/Value.number({
-  "name": "Discard Change Tolerance",
-  "description": "The fee rate (in BTC/kB) that indicates your tolerance for discarding change by adding it to the fee.",
-  "warning": null,
-  "required": {
-    "default": 0.0001
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": false,
-  "units": "BTC/kB",
-  "placeholder": null
-}),})),"advanced": Value.object({
-        name: "Advanced",
-        description: "Advanced Settings",
-        warning: null,
-      }, Config.of({"mempool": Value.object({
-        name: "Mempool",
-        description: "Mempool Settings",
-        warning: null,
-      }, Config.of({"mempoolfullrbf": Value.toggle({
-  "name": "Enable Full RBF",
-  "default": false,
-  "description": "Policy for your node to use for relaying and mining unconfirmed transactions.  For details, see https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-24.0.md#notice-of-new-option-for-transaction-replacement-policies",
-  "warning": null
-}),"persistmempool": Value.toggle({
-  "name": "Persist Mempool",
-  "default": true,
-  "description": "Save the mempool on shutdown and load on restart.",
-  "warning": null
-}),"maxmempool": /* TODO: Convert range for this value ([1,*))*/Value.number({
-  "name": "Max Mempool Size",
-  "description": "Keep the transaction memory pool below <n> megabytes.",
-  "warning": null,
-  "required": {
-    "default": 300
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "MiB",
-  "placeholder": null
-}),"mempoolexpiry": /* TODO: Convert range for this value ([1,*))*/Value.number({
-  "name": "Mempool Expiration",
-  "description": "Do not keep transactions in the mempool longer than <n> hours.",
-  "warning": null,
-  "required": {
-    "default": 336
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "Hr",
-  "placeholder": null
-}),})),"peers": Value.object({
-        name: "Peers",
-        description: "Peer Connection Settings",
-        warning: null,
-      }, Config.of({"listen": Value.toggle({
-  "name": "Make Public",
-  "default": true,
-  "description": "Allow other nodes to find your server on the network.",
-  "warning": null
-}),"onlyconnect": Value.toggle({
-  "name": "Disable Peer Discovery",
-  "default": false,
-  "description": "Only connect to specified peers.",
-  "warning": null
-}),"onlyonion": Value.toggle({
-  "name": "Disable Clearnet",
-  "default": false,
-  "description": "Only connect to peers over Tor.",
-  "warning": null
-}),"addnode": Value.list(/* TODO: Convert range for this value ([0,*))*/List.obj({
-          name: "Add Nodes",
-          minLength: null,
-          maxLength: null,
-          default: [],
-          description: "Add addresses of nodes to connect to.",
-          warning: null,
-        }, {
-          spec: Config.of({"hostname": Value.text({
-  "name": "Hostname",
-  "required": false,
-  "description": "Domain or IP address of bitcoin peer",
-  "warning": null,
-  "masked": false,
-  "placeholder": null,
-  "inputmode": "text",
-  "patterns": [
-    {
-      "regex": "(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)|((^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$)|(^[a-z2-7]{16}\\.onion$)|(^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$))",
-      "description": "Must be either a domain name, or an IPv4 or IPv6 address. Do not include protocol scheme (eg 'http://') or port."
-    }
-  ],
-  "minLength": null,
-  "maxLength": null
-}),"port": /* TODO: Convert range for this value ([0,65535])*/Value.number({
-  "name": "Port",
-  "description": "Port that peer is listening on for inbound p2p connections",
-  "warning": null,
-  "required": false,
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": null,
-  "placeholder": null
-}),}),
-          displayAs: null,
-          uniqueBy: null,
-        })),})),"dbcache": /* TODO: Convert range for this value ((0,*))*/Value.number({
-  "name": "Database Cache",
-  "description": "How much RAM to allocate for caching the TXO set. Higher values improve syncing performance, but increase your chance of using up all your system's memory or corrupting your database in the event of an ungraceful shutdown. Set this high but comfortably below your system's total RAM during IBD, then turn down to 450 (or leave blank) once the sync completes.",
-  "warning": "WARNING: Increasing this value results in a higher chance of ungraceful shutdowns, which can leave your node unusable if it happens during the initial block download. Use this setting with caution. Be sure to set this back to the default (450 or leave blank) once your node is synced. DO NOT press the STOP button if your dbcache is large. Instead, set this number back to the default, hit save, and wait for bitcoind to restart on its own.",
-  "required": false,
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "MiB",
-  "placeholder": null
-}),"pruning": Value.union({
-        name: "Pruning Settings",
-        description: "- Disabled: Disable pruning\n- Automatic: Limit blockchain size on disk to a certain number of megabytes\n- Manual: Prune blockchain with the \"pruneblockchain\" RPC\n",
-        warning: null,
-        
-        // prettier-ignore
-        required: {"default":"disabled"},
-      }, Variants.of({"disabled": {name: "Disabled", spec: Config.of({})},"automatic": {name: "Automatic", spec: Config.of({"size": /* TODO: Convert range for this value ([550,1000000))*/Value.number({
-  "name": "Max Chain Size",
-  "description": "Limit of blockchain size on disk.",
-  "warning": "Increasing this value will require re-syncing your node.",
-  "required": {
-    "default": 550
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "MiB",
-  "placeholder": null
-}),})},"manual": {name: "Manual", spec: Config.of({"size": /* TODO: Convert range for this value ([550,1000000))*/Value.number({
-  "name": "Failsafe Chain Size",
-  "description": "Prune blockchain if size expands beyond this.",
-  "warning": null,
-  "required": {
-    "default": 65536
-  },
-  "min": null,
-  "max": null,
-  "step": null,
-  "integer": true,
-  "units": "MiB",
-  "placeholder": null
-}),})},})),"blockfilters": Value.object({
-        name: "Block Filters",
-        description: "Settings for storing and serving compact block filters",
-        warning: null,
-      }, Config.of({"blockfilterindex": Value.toggle({
-  "name": "Compute Compact Block Filters (BIP158)",
-  "default": true,
-  "description": "Generate Compact Block Filters during initial sync (IBD) to enable 'getblockfilter' RPC. This is useful if dependent services need block filters to efficiently scan for addresses/transactions etc.",
-  "warning": null
-}),"peerblockfilters": Value.toggle({
-  "name": "Serve Compact Block Filters to Peers (BIP157)",
-  "default": false,
-  "description": "Serve Compact Block Filters as a peer service to other nodes on the network. This is useful if you wish to connect an SPV client to your node to make it efficient to scan transactions without having to download all block data.  'Compute Compact Block Filters (BIP158)' is required.",
-  "warning": null
-}),})),"bloomfilters": Value.object({
-        name: "Bloom Filters (BIP37)",
-        description: "Setting for serving Bloom Filters",
-        warning: null,
-      }, Config.of({"peerbloomfilters": Value.toggle({
-  "name": "Serve Bloom Filters to Peers",
-  "default": false,
-  "description": "Peers have the option of setting filters on each connection they make after the version handshake has completed. Bloom filters are for clients implementing SPV (Simplified Payment Verification) that want to check that block headers  connect together correctly, without needing to verify the full blockchain.  The client must trust that the transactions in the chain are in fact valid.  It is highly recommended AGAINST using for anything except Bisq integration.",
-  "warning": "This is ONLY for use with Bisq integration, please use Block Filters for all other applications."
-}),})),})),});
-export const matchConfigSpec = configSpec.validator;
-export type ConfigSpec = typeof matchConfigSpec._TYPE;
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/changeOnFirstSuccess.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/changeOnFirstSuccess.ts.html deleted file mode 100644 index ec393e20a..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/changeOnFirstSuccess.ts.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - Code coverage report for lib/trigger/changeOnFirstSuccess.ts - - - - - - - - - -
-
-

- All files / - lib/trigger changeOnFirstSuccess.ts -

-
-
- 12.5% - Statements - 2/16 -
- -
- 0% - Branches - 0/2 -
- -
- 50% - Functions - 1/2 -
- -
- 12.5% - Lines - 2/16 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -5x -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Trigger } from "./index"
- 
-export function changeOnFirstSuccess(o: {
-  beforeFirstSuccess: Trigger
-  afterFirstSuccess: Trigger
-}): Trigger {
-  return async function* (getInput) {
-    let currentValue = getInput()
-    while (!currentValue.lastResult) {
-      yield
-      currentValue = getInput()
-    }
-    const beforeFirstSuccess = o.beforeFirstSuccess(getInput)
-    for (
-      let res = await beforeFirstSuccess.next();
-      currentValue?.lastResult !== "success" && !res.done;
-      res = await beforeFirstSuccess.next()
-    ) {
-      yield
-      currentValue = getInput()
-    }
-    const afterFirstSuccess = o.afterFirstSuccess(getInput)
-    for (
-      let res = await afterFirstSuccess.next();
-      !res.done;
-      res = await afterFirstSuccess.next()
-    ) {
-      yield
-      currentValue = getInput()
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/cooldownTrigger.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/cooldownTrigger.ts.html deleted file mode 100644 index f0b0e5c80..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/cooldownTrigger.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for lib/trigger/cooldownTrigger.ts - - - - - - - - - -
-
-

- All files / - lib/trigger cooldownTrigger.ts -

-
-
- 33.33% - Statements - 2/6 -
- -
- 100% - Branches - 0/0 -
- -
- 33.33% - Functions - 1/3 -
- -
- 40% - Lines - 2/5 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -95x -10x -  -  -  -  -  -  - 
export function cooldownTrigger(timeMs: number) {
-  return async function* () {
-    while (true) {
-      await new Promise((resolve) => setTimeout(resolve, timeMs))
-      yield
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/defaultTrigger.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/defaultTrigger.ts.html deleted file mode 100644 index a2dccbb4e..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/defaultTrigger.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for lib/trigger/defaultTrigger.ts - - - - - - - - - -
-
-

- All files / - lib/trigger defaultTrigger.ts -

-
-
- 100% - Statements - 3/3 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 3/3 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -95x -5x -  -  -5x -  -  -  - 
import { cooldownTrigger } from "./cooldownTrigger"
-import { changeOnFirstSuccess } from "./changeOnFirstSuccess"
-import { successFailure } from "./successFailure"
- 
-export const defaultTrigger = changeOnFirstSuccess({
-  beforeFirstSuccess: cooldownTrigger(1000),
-  afterFirstSuccess: cooldownTrigger(30000),
-})
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/index.html b/sdk/lib/coverage/lcov-report/lib/trigger/index.html deleted file mode 100644 index c2ecce9dd..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/index.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - Code coverage report for lib/trigger - - - - - - - - - -
-
-

All files lib/trigger

-
-
- 30.61% - Statements - 15/49 -
- -
- 0% - Branches - 0/5 -
- -
- 40% - Functions - 4/10 -
- -
- 26.66% - Lines - 12/45 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- changeOnFirstSuccess.ts - -
-
-
-
-
12.5%2/160%0/250%1/212.5%2/16
- cooldownTrigger.ts - -
-
-
-
-
33.33%2/6100%0/033.33%1/340%2/5
- defaultTrigger.ts - -
-
-
-
-
100%3/3100%0/0100%0/0100%3/3
- index.ts - -
-
-
-
-
100%4/4100%0/0100%2/2100%2/2
- lastStatus.ts - -
-
-
-
-
6.25%1/160%0/30%0/26.25%1/16
- successFailure.ts - -
-
-
-
-
75%3/4100%0/00%0/166.66%2/3
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/index.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/index.ts.html deleted file mode 100644 index 587513bfe..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/index.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for lib/trigger/index.ts - - - - - - - - - -
-
-

- All files / - lib/trigger index.ts -

-
-
- 100% - Statements - 4/4 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 2/2 -
- -
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -11x -11x -  -  -  -  - 
import { ExecSpawnable } from "../util/SubContainer"
-import { TriggerInput } from "./TriggerInput"
-export { changeOnFirstSuccess } from "./changeOnFirstSuccess"
-export { cooldownTrigger } from "./cooldownTrigger"
- 
-export type Trigger = (
-  getInput: () => TriggerInput,
-) => AsyncIterator<unknown, unknown, never>
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/lastStatus.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/lastStatus.ts.html deleted file mode 100644 index ac54db72f..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/lastStatus.ts.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - Code coverage report for lib/trigger/lastStatus.ts - - - - - - - - - -
-
-

- All files / - lib/trigger lastStatus.ts -

-
-
- 6.25% - Statements - 1/16 -
- -
- 0% - Branches - 0/3 -
- -
- 0% - Functions - 0/2 -
- -
- 6.25% - Lines - 1/16 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Trigger } from "."
-import { HealthStatus } from "../types"
- 
-export type LastStatusTriggerParams = { [k in HealthStatus]?: Trigger } & {
-  default: Trigger
-}
- 
-export function lastStatus(o: LastStatusTriggerParams): Trigger {
-  return async function* (getInput) {
-    let trigger = o.default(getInput)
-    const triggers: {
-      [k in HealthStatus]?: AsyncIterator<unknown, unknown, never>
-    } & { default: AsyncIterator<unknown, unknown, never> } = {
-      default: trigger,
-    }
-    while (true) {
-      let currentValue = getInput()
-      let prev: HealthStatus | "default" | undefined = currentValue.lastResult
-      Iif (!prev) {
-        yield
-        continue
-      }
-      Iif (!(prev in o)) {
-        prev = "default"
-      }
-      Iif (!triggers[prev]) {
-        triggers[prev] = o[prev]!(getInput)
-      }
-      await triggers[prev]?.next()
-      yield
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/trigger/successFailure.ts.html b/sdk/lib/coverage/lcov-report/lib/trigger/successFailure.ts.html deleted file mode 100644 index 91b432bf4..000000000 --- a/sdk/lib/coverage/lcov-report/lib/trigger/successFailure.ts.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - Code coverage report for lib/trigger/successFailure.ts - - - - - - - - - -
-
-

- All files / - lib/trigger successFailure.ts -

-
-
- 75% - Statements - 3/4 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/1 -
- -
- 66.66% - Lines - 2/3 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8  -5x -  -5x -  -  -  - 
import { Trigger } from "."
-import { lastStatus } from "./lastStatus"
- 
-export const successFailure = (o: {
-  duringSuccess: Trigger
-  duringError: Trigger
-}) => lastStatus({ success: o.duringSuccess, default: o.duringError })
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/GetSslCertificate.ts.html b/sdk/lib/coverage/lcov-report/lib/util/GetSslCertificate.ts.html deleted file mode 100644 index 6dcb60ae8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/GetSslCertificate.ts.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - Code coverage report for lib/util/GetSslCertificate.ts - - - - - - - - - -
-
-

- All files / - lib/util GetSslCertificate.ts -

-
-
- 8.33% - Statements - 1/12 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/6 -
- -
- 8.33% - Lines - 1/12 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { T } from ".."
-import { Effects } from "../types"
- 
-export class GetSslCertificate {
-  constructor(
-    readonly effects: Effects,
-    readonly hostnames: string[],
-    readonly algorithm?: T.Algorithm,
-  ) {}
- 
-  /**
-   * Returns the system SMTP credentials. Restarts the service if the credentials change
-   */
-  const() {
-    return this.effects.getSslCertificate({
-      hostnames: this.hostnames,
-      algorithm: this.algorithm,
-      callback: this.effects.restart,
-    })
-  }
-  /**
-   * Returns the system SMTP credentials. Does nothing if the credentials change
-   */
-  once() {
-    return this.effects.getSslCertificate({
-      hostnames: this.hostnames,
-      algorithm: this.algorithm,
-    })
-  }
-  /**
-   * Watches the system SMTP credentials. Takes a custom callback function to run whenever the credentials change
-   */
-  async *watch() {
-    while (true) {
-      let callback: () => void
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await this.effects.getSslCertificate({
-        hostnames: this.hostnames,
-        algorithm: this.algorithm,
-        callback: () => callback(),
-      })
-      await waitForNext
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/GetSystemSmtp.ts.html b/sdk/lib/coverage/lcov-report/lib/util/GetSystemSmtp.ts.html deleted file mode 100644 index 19bf05fce..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/GetSystemSmtp.ts.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - Code coverage report for lib/util/GetSystemSmtp.ts - - - - - - - - - -
-
-

- All files / - lib/util GetSystemSmtp.ts -

-
-
- 10% - Statements - 1/10 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/6 -
- -
- 10% - Lines - 1/10 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Effects } from "../types"
- 
-export class GetSystemSmtp {
-  constructor(readonly effects: Effects) {}
- 
-  /**
-   * Returns the system SMTP credentials. Restarts the service if the credentials change
-   */
-  const() {
-    return this.effects.getSystemSmtp({
-      callback: this.effects.restart,
-    })
-  }
-  /**
-   * Returns the system SMTP credentials. Does nothing if the credentials change
-   */
-  once() {
-    return this.effects.getSystemSmtp({})
-  }
-  /**
-   * Watches the system SMTP credentials. Takes a custom callback function to run whenever the credentials change
-   */
-  async *watch() {
-    while (true) {
-      let callback: () => void
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await this.effects.getSystemSmtp({
-        callback: () => callback(),
-      })
-      await waitForNext
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/Hostname.ts.html b/sdk/lib/coverage/lcov-report/lib/util/Hostname.ts.html deleted file mode 100644 index 823bdc4bc..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/Hostname.ts.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - Code coverage report for lib/util/Hostname.ts - - - - - - - - - -
-
-

- All files / - lib/util Hostname.ts -

-
-
- 6.66% - Statements - 1/15 -
- -
- 0% - Branches - 0/13 -
- -
- 0% - Functions - 0/1 -
- -
- 6.66% - Lines - 1/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { HostnameInfo } from "../types"
- 
-export function hostnameInfoToAddress(hostInfo: HostnameInfo): string {
-  Iif (hostInfo.kind === "onion") {
-    return `${hostInfo.hostname.value}`
-  }
-  Iif (hostInfo.kind !== "ip") {
-    throw Error("Expecting that the kind is ip.")
-  }
-  const hostname = hostInfo.hostname
-  Iif (hostname.kind === "domain") {
-    return `${hostname.subdomain ? `${hostname.subdomain}.` : ""}${hostname.domain}`
-  }
-  const port = hostname.sslPort || hostname.port
-  const portString = port ? `:${port}` : ""
-  Iif ("ipv4" === hostname.kind || "ipv6" === hostname.kind) {
-    return `${hostname.value}${portString}`
-  }
-  Iif ("local" === hostname.kind) {
-    return `${hostname.value}${portString}`
-  }
-  throw Error(
-    "Expecting to have a valid hostname kind." + JSON.stringify(hostname),
-  )
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/Overlay.ts.html b/sdk/lib/coverage/lcov-report/lib/util/Overlay.ts.html deleted file mode 100644 index 62c179ffd..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/Overlay.ts.html +++ /dev/null @@ -1,807 +0,0 @@ - - - - Code coverage report for lib/util/Overlay.ts - - - - - - - - - -
-
-

- All files / - lib/util Overlay.ts -

-
-
- 7.6% - Statements - 7/92 -
- -
- 0% - Branches - 0/45 -
- -
- 0% - Functions - 0/15 -
- -
- 7.69% - Lines - 7/91 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -2415x -  -5x -5x -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as fs from "fs/promises"
-import * as T from "../types"
-import * as cp from "child_process"
-import { promisify } from "util"
-import { Buffer } from "node:buffer"
-export const execFile = promisify(cp.execFile)
-const WORKDIR = (imageId: string) => `/media/startos/images/${imageId}/`
-export class Overlay {
-  private constructor(
-    readonly effects: T.Effects,
-    readonly imageId: T.ImageId,
-    readonly rootfs: string,
-    readonly guid: T.Guid,
-  ) {}
-  static async of(
-    effects: T.Effects,
-    image: { id: T.ImageId; sharedRun?: boolean },
-  ) {
-    const { id, sharedRun } = image
-    const [rootfs, guid] = await effects.createOverlayedImage({
-      imageId: id as string,
-    })
- 
-    const shared = ["dev", "sys", "proc"]
-    Iif (!!sharedRun) {
-      shared.push("run")
-    }
- 
-    fs.copyFile("/etc/resolv.conf", `${rootfs}/etc/resolv.conf`)
- 
-    for (const dirPart of shared) {
-      const from = `/${dirPart}`
-      const to = `${rootfs}/${dirPart}`
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(to, { recursive: true })
-      await execFile("mount", ["--rbind", from, to])
-    }
- 
-    return new Overlay(effects, id, rootfs, guid)
-  }
- 
-  async mount(options: MountOptions, path: string): Promise<Overlay> {
-    path = path.startsWith("/")
-      ? `${this.rootfs}${path}`
-      : `${this.rootfs}/${path}`
-    if (options.type === "volume") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/volumes/${options.id}${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await await execFile("mount", ["--bind", from, path])
-    } else if (options.type === "assets") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/assets/${options.id}${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await execFile("mount", ["--bind", from, path])
-    } else if (options.type === "pointer") {
-      await this.effects.mount({ location: path, target: options })
-    } else if (options.type === "backup") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/backup${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await execFile("mount", ["--bind", from, path])
-    } else {
-      throw new Error(`unknown type ${(options as any).type}`)
-    }
-    return this
-  }
- 
-  async destroy() {
-    const imageId = this.imageId
-    const guid = this.guid
-    await this.effects.destroyOverlayedImage({ guid })
-  }
- 
-  async exec(
-    command: string[],
-    options?: CommandOptions,
-    timeoutMs: number | null = 30000,
-  ): Promise<{
-    exitCode: number | null
-    exitSignal: NodeJS.Signals | null
-    stdout: string | Buffer
-    stderr: string | Buffer
-  }> {
-    const imageMeta: T.ImageMetadata = await fs
-      .readFile(`/media/startos/images/${this.imageId}.json`, {
-        encoding: "utf8",
-      })
-      .catch(() => "{}")
-      .then(JSON.parse)
-    let extra: string[] = []
-    Iif (options?.user) {
-      extra.push(`--user=${options.user}`)
-      delete options.user
-    }
-    let workdir = imageMeta.workdir || "/"
-    Iif (options?.cwd) {
-      workdir = options.cwd
-      delete options.cwd
-    }
-    const child = cp.spawn(
-      "start-cli",
-      [
-        "chroot",
-        `--env=/media/startos/images/${this.imageId}.env`,
-        `--workdir=${workdir}`,
-        ...extra,
-        this.rootfs,
-        ...command,
-      ],
-      options || {},
-    )
-    const pid = child.pid
-    const stdout = { data: "" as string | Buffer }
-    const stderr = { data: "" as string | Buffer }
-    const appendData =
-      (appendTo: { data: string | Buffer }) =>
-      (chunk: string | Buffer | any) => {
-        if (typeof appendTo.data === "string" && typeof chunk === "string") {
-          appendTo.data += chunk
-        } else if (typeof chunk === "string" || chunk instanceof Buffer) {
-          appendTo.data = Buffer.concat([
-            Buffer.from(appendTo.data),
-            Buffer.from(chunk),
-          ])
-        } else {
-          console.error("received unexpected chunk", chunk)
-        }
-      }
-    return new Promise((resolve, reject) => {
-      child.on("error", reject)
-      Iif (timeoutMs !== null && pid) {
-        setTimeout(
-          () => execFile("pkill", ["-9", "-s", String(pid)]).catch((_) => {}),
-          timeoutMs,
-        )
-      }
-      child.stdout.on("data", appendData(stdout))
-      child.stderr.on("data", appendData(stderr))
-      child.on("exit", (code, signal) =>
-        resolve({
-          exitCode: code,
-          exitSignal: signal,
-          stdout: stdout.data,
-          stderr: stderr.data,
-        }),
-      )
-    })
-  }
- 
-  async spawn(
-    command: string[],
-    options?: CommandOptions,
-  ): Promise<cp.ChildProcessWithoutNullStreams> {
-    const imageMeta: any = await fs
-      .readFile(`/media/startos/images/${this.imageId}.json`, {
-        encoding: "utf8",
-      })
-      .catch(() => "{}")
-      .then(JSON.parse)
-    let extra: string[] = []
-    Iif (options?.user) {
-      extra.push(`--user=${options.user}`)
-      delete options.user
-    }
-    let workdir = imageMeta.workdir || "/"
-    Iif (options?.cwd) {
-      workdir = options.cwd
-      delete options.cwd
-    }
-    return cp.spawn(
-      "start-cli",
-      [
-        "chroot",
-        `--env=/media/startos/images/${this.imageId}.env`,
-        `--workdir=${workdir}`,
-        ...extra,
-        this.rootfs,
-        ...command,
-      ],
-      options,
-    )
-  }
-}
- 
-export type CommandOptions = {
-  env?: { [variable: string]: string }
-  cwd?: string
-  user?: string
-}
- 
-export type MountOptions =
-  | MountOptionsVolume
-  | MountOptionsAssets
-  | MountOptionsPointer
-  | MountOptionsBackup
- 
-export type MountOptionsVolume = {
-  type: "volume"
-  id: string
-  subpath: string | null
-  readonly: boolean
-}
- 
-export type MountOptionsAssets = {
-  type: "assets"
-  id: string
-  subpath: string | null
-}
- 
-export type MountOptionsPointer = {
-  type: "pointer"
-  packageId: string
-  volumeId: string
-  subpath: string | null
-  readonly: boolean
-}
- 
-export type MountOptionsBackup = {
-  type: "backup"
-  subpath: string | null
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/SubContainer.ts.html b/sdk/lib/coverage/lcov-report/lib/util/SubContainer.ts.html deleted file mode 100644 index 335ad24d3..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/SubContainer.ts.html +++ /dev/null @@ -1,1389 +0,0 @@ - - - - Code coverage report for lib/util/SubContainer.ts - - - - - - - - - -
-
-

- All files / - lib/util SubContainer.ts -

-
-
- 6.79% - Statements - 11/162 -
- -
- 0% - Branches - 0/55 -
- -
- 0% - Functions - 0/36 -
- -
- 7% - Lines - 11/157 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -4355x -  -5x -5x -5x -5x -5x -5x -5x -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as fs from "fs/promises"
-import * as T from "../types"
-import * as cp from "child_process"
-import { promisify } from "util"
-import { Buffer } from "node:buffer"
-import { once } from "./once"
-export const execFile = promisify(cp.execFile)
-const WORKDIR = (imageId: string) => `/media/startos/images/${imageId}/`
-const False = () => false
-type ExecResults = {
-  exitCode: number | null
-  exitSignal: NodeJS.Signals | null
-  stdout: string | Buffer
-  stderr: string | Buffer
-}
- 
-export type ExecOptions = {
-  input?: string | Buffer
-}
- 
-const TIMES_TO_WAIT_FOR_PROC = 100
- 
-/**
- * This is the type that is going to describe what an subcontainer could do. The main point of the
- * subcontainer is to have commands that run in a chrooted environment. This is useful for running
- * commands in a containerized environment. But, I wanted the destroy to sometimes be doable, for example the
- * case where the subcontainer isn't owned by the process, the subcontainer shouldn't be destroyed.
- */
-export interface ExecSpawnable {
-  get destroy(): undefined | (() => Promise<void>)
-  exec(
-    command: string[],
-    options?: CommandOptions & ExecOptions,
-    timeoutMs?: number | null,
-  ): Promise<ExecResults>
-  spawn(
-    command: string[],
-    options?: CommandOptions,
-  ): Promise<cp.ChildProcessWithoutNullStreams>
-}
-/**
- * Want to limit what we can do in a container, so we want to launch a container with a specific image and the mounts.
- *
- * Implements:
- * @see {@link ExecSpawnable}
- */
-export class SubContainer implements ExecSpawnable {
-  private leader: cp.ChildProcess
-  private leaderExited: boolean = false
-  private waitProc: () => Promise<void>
-  private constructor(
-    readonly effects: T.Effects,
-    readonly imageId: T.ImageId,
-    readonly rootfs: string,
-    readonly guid: T.Guid,
-  ) {
-    this.leaderExited = false
-    this.leader = cp.spawn("start-cli", ["subcontainer", "launch", rootfs], {
-      killSignal: "SIGKILL",
-      stdio: "ignore",
-    })
-    this.leader.on("exit", () => {
-      this.leaderExited = true
-    })
-    this.waitProc = once(
-      () =>
-        new Promise(async (resolve, reject) => {
-          let count = 0
-          while (
-            !(await fs.stat(`${this.rootfs}/proc/1`).then((x) => !!x, False))
-          ) {
-            Iif (count++ > TIMES_TO_WAIT_FOR_PROC) {
-              console.debug("Failed to start subcontainer", {
-                guid: this.guid,
-                imageId: this.imageId,
-                rootfs: this.rootfs,
-              })
-              reject(new Error(`Failed to start subcontainer ${this.imageId}`))
-            }
-            await wait(1)
-          }
-          resolve()
-        }),
-    )
-  }
-  static async of(
-    effects: T.Effects,
-    image: { id: T.ImageId; sharedRun?: boolean },
-  ) {
-    const { id, sharedRun } = image
-    const [rootfs, guid] = await effects.subcontainer.createFs({
-      imageId: id as string,
-    })
- 
-    const shared = ["dev", "sys"]
-    Iif (!!sharedRun) {
-      shared.push("run")
-    }
- 
-    fs.copyFile("/etc/resolv.conf", `${rootfs}/etc/resolv.conf`)
- 
-    for (const dirPart of shared) {
-      const from = `/${dirPart}`
-      const to = `${rootfs}/${dirPart}`
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(to, { recursive: true })
-      await execFile("mount", ["--rbind", from, to])
-    }
- 
-    return new SubContainer(effects, id, rootfs, guid)
-  }
- 
-  static async with<T>(
-    effects: T.Effects,
-    image: { id: T.ImageId; sharedRun?: boolean },
-    mounts: { options: MountOptions; path: string }[],
-    fn: (subContainer: SubContainer) => Promise<T>,
-  ): Promise<T> {
-    const subContainer = await SubContainer.of(effects, image)
-    try {
-      for (let mount of mounts) {
-        await subContainer.mount(mount.options, mount.path)
-      }
-      return await fn(subContainer)
-    } finally {
-      await subContainer.destroy()
-    }
-  }
- 
-  async mount(options: MountOptions, path: string): Promise<SubContainer> {
-    path = path.startsWith("/")
-      ? `${this.rootfs}${path}`
-      : `${this.rootfs}/${path}`
-    if (options.type === "volume") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/volumes/${options.id}${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await execFile("mount", ["--bind", from, path])
-    } else if (options.type === "assets") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/assets/${options.id}${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await execFile("mount", ["--bind", from, path])
-    } else if (options.type === "pointer") {
-      await this.effects.mount({ location: path, target: options })
-    } else if (options.type === "backup") {
-      const subpath = options.subpath
-        ? options.subpath.startsWith("/")
-          ? options.subpath
-          : `/${options.subpath}`
-        : "/"
-      const from = `/media/startos/backup${subpath}`
- 
-      await fs.mkdir(from, { recursive: true })
-      await fs.mkdir(path, { recursive: true })
-      await execFile("mount", ["--bind", from, path])
-    } else {
-      throw new Error(`unknown type ${(options as any).type}`)
-    }
-    return this
-  }
- 
-  private async killLeader() {
-    Iif (this.leaderExited) {
-      return
-    }
-    return new Promise<void>((resolve, reject) => {
-      try {
-        this.leader.on("exit", () => {
-          resolve()
-        })
-        Iif (!this.leader.kill("SIGKILL")) {
-          reject(new Error("kill(2) failed"))
-        }
-      } catch (e) {
-        reject(e)
-      }
-    })
-  }
- 
-  get destroy() {
-    return async () => {
-      const guid = this.guid
-      await this.killLeader()
-      await this.effects.subcontainer.destroyFs({ guid })
-    }
-  }
- 
-  async exec(
-    command: string[],
-    options?: CommandOptions & ExecOptions,
-    timeoutMs: number | null = 30000,
-  ): Promise<{
-    exitCode: number | null
-    exitSignal: NodeJS.Signals | null
-    stdout: string | Buffer
-    stderr: string | Buffer
-  }> {
-    await this.waitProc()
-    const imageMeta: T.ImageMetadata = await fs
-      .readFile(`/media/startos/images/${this.imageId}.json`, {
-        encoding: "utf8",
-      })
-      .catch(() => "{}")
-      .then(JSON.parse)
-    let extra: string[] = []
-    Iif (options?.user) {
-      extra.push(`--user=${options.user}`)
-      delete options.user
-    }
-    let workdir = imageMeta.workdir || "/"
-    Iif (options?.cwd) {
-      workdir = options.cwd
-      delete options.cwd
-    }
-    const child = cp.spawn(
-      "start-cli",
-      [
-        "subcontainer",
-        "exec",
-        `--env=/media/startos/images/${this.imageId}.env`,
-        `--workdir=${workdir}`,
-        ...extra,
-        this.rootfs,
-        ...command,
-      ],
-      options || {},
-    )
-    Iif (options?.input) {
-      await new Promise<void>((resolve, reject) =>
-        child.stdin.write(options.input, (e) => {
-          if (e) {
-            reject(e)
-          } else {
-            resolve()
-          }
-        }),
-      )
-      await new Promise<void>((resolve) => child.stdin.end(resolve))
-    }
-    const pid = child.pid
-    const stdout = { data: "" as string | Buffer }
-    const stderr = { data: "" as string | Buffer }
-    const appendData =
-      (appendTo: { data: string | Buffer }) =>
-      (chunk: string | Buffer | any) => {
-        if (typeof appendTo.data === "string" && typeof chunk === "string") {
-          appendTo.data += chunk
-        } else if (typeof chunk === "string" || chunk instanceof Buffer) {
-          appendTo.data = Buffer.concat([
-            Buffer.from(appendTo.data),
-            Buffer.from(chunk),
-          ])
-        } else {
-          console.error("received unexpected chunk", chunk)
-        }
-      }
-    return new Promise((resolve, reject) => {
-      child.on("error", reject)
-      let killTimeout: NodeJS.Timeout | undefined
-      Iif (timeoutMs !== null && child.pid) {
-        killTimeout = setTimeout(() => child.kill("SIGKILL"), timeoutMs)
-      }
-      child.stdout.on("data", appendData(stdout))
-      child.stderr.on("data", appendData(stderr))
-      child.on("exit", (code, signal) => {
-        clearTimeout(killTimeout)
-        resolve({
-          exitCode: code,
-          exitSignal: signal,
-          stdout: stdout.data,
-          stderr: stderr.data,
-        })
-      })
-    })
-  }
- 
-  async launch(
-    command: string[],
-    options?: CommandOptions,
-  ): Promise<cp.ChildProcessWithoutNullStreams> {
-    await this.waitProc()
-    const imageMeta: any = await fs
-      .readFile(`/media/startos/images/${this.imageId}.json`, {
-        encoding: "utf8",
-      })
-      .catch(() => "{}")
-      .then(JSON.parse)
-    let extra: string[] = []
-    Iif (options?.user) {
-      extra.push(`--user=${options.user}`)
-      delete options.user
-    }
-    let workdir = imageMeta.workdir || "/"
-    Iif (options?.cwd) {
-      workdir = options.cwd
-      delete options.cwd
-    }
-    await this.killLeader()
-    this.leaderExited = false
-    this.leader = cp.spawn(
-      "start-cli",
-      [
-        "subcontainer",
-        "launch",
-        `--env=/media/startos/images/${this.imageId}.env`,
-        `--workdir=${workdir}`,
-        ...extra,
-        this.rootfs,
-        ...command,
-      ],
-      { ...options, stdio: "inherit" },
-    )
-    this.leader.on("exit", () => {
-      this.leaderExited = true
-    })
-    return this.leader as cp.ChildProcessWithoutNullStreams
-  }
- 
-  async spawn(
-    command: string[],
-    options?: CommandOptions,
-  ): Promise<cp.ChildProcessWithoutNullStreams> {
-    await this.waitProc()
-    const imageMeta: any = await fs
-      .readFile(`/media/startos/images/${this.imageId}.json`, {
-        encoding: "utf8",
-      })
-      .catch(() => "{}")
-      .then(JSON.parse)
-    let extra: string[] = []
-    Iif (options?.user) {
-      extra.push(`--user=${options.user}`)
-      delete options.user
-    }
-    let workdir = imageMeta.workdir || "/"
-    Iif (options?.cwd) {
-      workdir = options.cwd
-      delete options.cwd
-    }
-    return cp.spawn(
-      "start-cli",
-      [
-        "subcontainer",
-        "exec",
-        `--env=/media/startos/images/${this.imageId}.env`,
-        `--workdir=${workdir}`,
-        ...extra,
-        this.rootfs,
-        ...command,
-      ],
-      options,
-    )
-  }
-}
- 
-/**
- * Take an subcontainer but remove the ability to add the mounts and the destroy function.
- * Lets other functions, like health checks, to not destroy the parents.
- *
- */
-export class SubContainerHandle implements ExecSpawnable {
-  constructor(private subContainer: ExecSpawnable) {}
-  get destroy() {
-    return undefined
-  }
- 
-  exec(
-    command: string[],
-    options?: CommandOptions,
-    timeoutMs?: number | null,
-  ): Promise<ExecResults> {
-    return this.subContainer.exec(command, options, timeoutMs)
-  }
-  spawn(
-    command: string[],
-    options?: CommandOptions,
-  ): Promise<cp.ChildProcessWithoutNullStreams> {
-    return this.subContainer.spawn(command, options)
-  }
-}
- 
-export type CommandOptions = {
-  env?: { [variable: string]: string }
-  cwd?: string
-  user?: string
-}
- 
-export type MountOptions =
-  | MountOptionsVolume
-  | MountOptionsAssets
-  | MountOptionsPointer
-  | MountOptionsBackup
- 
-export type MountOptionsVolume = {
-  type: "volume"
-  id: string
-  subpath: string | null
-  readonly: boolean
-}
- 
-export type MountOptionsAssets = {
-  type: "assets"
-  id: string
-  subpath: string | null
-}
- 
-export type MountOptionsPointer = {
-  type: "pointer"
-  packageId: string
-  volumeId: string
-  subpath: string | null
-  readonly: boolean
-}
- 
-export type MountOptionsBackup = {
-  type: "backup"
-  subpath: string | null
-}
-function wait(time: number) {
-  return new Promise((resolve) => setTimeout(resolve, time))
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/asError.ts.html b/sdk/lib/coverage/lcov-report/lib/util/asError.ts.html deleted file mode 100644 index bde3e45ba..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/asError.ts.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - Code coverage report for lib/util/asError.ts - - - - - - - - - -
-
-

- All files / - lib/util asError.ts -

-
-
- 40% - Statements - 2/5 -
- -
- 0% - Branches - 0/1 -
- -
- 0% - Functions - 0/1 -
- -
- 25% - Lines - 1/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -75x -  -  -  -  -  - 
export const asError = (e: unknown) => {
-  Iif (e instanceof Error) {
-    return new Error(e as any)
-  }
-  return new Error(`${e}`)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/deepEqual.ts.html b/sdk/lib/coverage/lcov-report/lib/util/deepEqual.ts.html deleted file mode 100644 index cdcf40a49..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/deepEqual.ts.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - Code coverage report for lib/util/deepEqual.ts - - - - - - - - - -
-
-

- All files / - lib/util deepEqual.ts -

-
-
- 66.66% - Statements - 14/21 -
- -
- 16.66% - Branches - 1/6 -
- -
- 100% - Functions - 2/2 -
- -
- 85.71% - Lines - 12/14 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -206x -  -6x -11x -3x -3x -  -  -  -3x -6x -3x -5x -10x -10x -  -  -3x -  - 
import { object } from "ts-matches"
- 
-export function deepEqual(...args: unknown[]) {
-  if (!object.test(args[args.length - 1])) return args[args.length - 1]
-  const objects = args.filter(object.test)
-  Iif (objects.length === 0) {
-    for (const x of args) Iif (x !== args[0]) return false
-    return true
-  }
-  Iif (objects.length !== args.length) return false
-  const allKeys = new Set(objects.flatMap((x) => Object.keys(x)))
-  for (const key of allKeys) {
-    for (const x of objects) {
-      Iif (!(key in x)) return false
-      Iif (!deepEqual((objects[0] as any)[key], (x as any)[key])) return false
-    }
-  }
-  return true
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/deepMerge.ts.html b/sdk/lib/coverage/lcov-report/lib/util/deepMerge.ts.html deleted file mode 100644 index ec403d194..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/deepMerge.ts.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for lib/util/deepMerge.ts - - - - - - - - - -
-
-

- All files / - lib/util deepMerge.ts -

-
-
- 100% - Statements - 18/18 -
- -
- 100% - Branches - 5/5 -
- -
- 100% - Functions - 4/4 -
- -
- 100% - Lines - 13/13 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -186x -  -6x -253x -253x -126x -97x -71x -149x -71x -242x -528x -  -242x -  -71x -  - 
import { object } from "ts-matches"
- 
-export function deepMerge(...args: unknown[]): unknown {
-  const lastItem = (args as any)[args.length - 1]
-  if (!object.test(lastItem)) return lastItem
-  const objects = args.filter(object.test).filter((x) => !Array.isArray(x))
-  if (objects.length === 0) return lastItem as any
-  if (objects.length === 1) objects.unshift({})
-  const allKeys = new Set(objects.flatMap((x) => Object.keys(x)))
-  for (const key of allKeys) {
-    const filteredValues = objects.flatMap((x) =>
-      key in x ? [(x as any)[key]] : [],
-    )
-    ;(objects as any)[0][key] = deepMerge(...filteredValues)
-  }
-  return objects[0] as any
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/fileHelper.ts.html b/sdk/lib/coverage/lcov-report/lib/util/fileHelper.ts.html deleted file mode 100644 index e47796070..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/fileHelper.ts.html +++ /dev/null @@ -1,537 +0,0 @@ - - - - Code coverage report for lib/util/fileHelper.ts - - - - - - - - - -
-
-

- All files / - lib/util fileHelper.ts -

-
-
- 20.58% - Statements - 7/34 -
- -
- 0% - Branches - 0/4 -
- -
- 0% - Functions - 0/18 -
- -
- 21.21% - Lines - 7/33 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151  -5x -5x -5x -  -5x -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x - 
import * as matches from "ts-matches"
-import * as YAML from "yaml"
-import * as TOML from "@iarna/toml"
-import merge from "lodash.merge"
-import * as T from "../types"
-import * as fs from "node:fs/promises"
- 
-const previousPath = /(.+?)\/([^/]*)$/
- 
-/**
- * Used in the get config and the set config exported functions.
- * The idea is that we are going to be reading/ writing to a file, or multiple files. And then we use this tool
- * to keep the same path on the read and write, and have methods for helping with structured data.
- * And if we are not using a structured data, we can use the raw method which forces the construction of a BiMap
- * ```ts
-        import {InputSpec} from './InputSpec.ts'
-        import {matches, T} from '../deps.ts';
-        const { object, string, number, boolean, arrayOf, array, anyOf, allOf } = matches
-        const someValidator = object({
-        data: string
-        })
-        const jsonFile = FileHelper.json({
-        path: 'data.json',
-        validator: someValidator,
-        volume: 'main'
-        })
-        const  tomlFile = FileHelper.toml({
-        path: 'data.toml',
-        validator: someValidator,
-        volume: 'main'
-        })
-        const rawFile = FileHelper.raw({
-        path: 'data.amazingSettings',
-        volume: 'main'
-        fromData(dataIn: Data): string {
-            return `myDatais ///- ${dataIn.data}`
-        },
-        toData(rawData: string): Data {
-        const [,data] = /myDatais \/\/\/- (.*)/.match(rawData)
-        return {data}
-        }
-        })
- 
-        export const setConfig : T.ExpectedExports.setConfig= async (effects, config) => {
-        await  jsonFile.write({ data: 'here lies data'}, effects)
-        }
- 
-        export const getConfig: T.ExpectedExports.getConfig = async (effects, config) => ({
-        spec: InputSpec,
-        config: nullIfEmpty({
-            ...jsonFile.get(effects)
-        })
-    ```
- */
-export class FileHelper<A> {
-  protected constructor(
-    readonly path: string,
-    readonly writeData: (dataIn: A) => string,
-    readonly readData: (stringValue: string) => A,
-  ) {}
-  async write(data: A, effects: T.Effects) {
-    const parent = previousPath.exec(this.path)
-    Iif (parent) {
-      await fs.mkdir(parent[1], { recursive: true })
-    }
- 
-    await fs.writeFile(this.path, this.writeData(data))
-  }
-  async read(effects: T.Effects) {
-    Iif (
-      !(await fs.access(this.path).then(
-        () => true,
-        () => false,
-      ))
-    ) {
-      return null
-    }
-    return this.readData(
-      await fs.readFile(this.path).then((data) => data.toString("utf-8")),
-    )
-  }
- 
-  async merge(data: A, effects: T.Effects) {
-    const fileData = (await this.read(effects).catch(() => ({}))) || {}
-    const mergeData = merge({}, fileData, data)
-    return await this.write(mergeData, effects)
-  }
-  /**
-   * Create a File Helper for an arbitrary file type.
-   *
-   * Provide custom functions for translating data to the file format and visa versa.
-   */
-  static raw<A>(
-    path: string,
-    toFile: (dataIn: A) => string,
-    fromFile: (rawData: string) => A,
-  ) {
-    return new FileHelper<A>(path, toFile, fromFile)
-  }
-  /**
-   * Create a File Helper for a .json file
-   */
-  static json<A>(path: string, shape: matches.Validator<unknown, A>) {
-    return new FileHelper<A>(
-      path,
-      (inData) => {
-        return JSON.stringify(inData, null, 2)
-      },
-      (inString) => {
-        return shape.unsafeCast(JSON.parse(inString))
-      },
-    )
-  }
-  /**
-   * Create a File Helper for a .toml file
-   */
-  static toml<A extends Record<string, unknown>>(
-    path: string,
-    shape: matches.Validator<unknown, A>,
-  ) {
-    return new FileHelper<A>(
-      path,
-      (inData) => {
-        return TOML.stringify(inData as any)
-      },
-      (inString) => {
-        return shape.unsafeCast(TOML.parse(inString))
-      },
-    )
-  }
-  /**
-   * Create a File Helper for a .yaml file
-   */
-  static yaml<A extends Record<string, unknown>>(
-    path: string,
-    shape: matches.Validator<unknown, A>,
-  ) {
-    return new FileHelper<A>(
-      path,
-      (inData) => {
-        return YAML.stringify(inData, null, 2)
-      },
-      (inString) => {
-        return shape.unsafeCast(YAML.parse(inString))
-      },
-    )
-  }
-}
- 
-export default FileHelper
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/getDefaultString.ts.html b/sdk/lib/coverage/lcov-report/lib/util/getDefaultString.ts.html deleted file mode 100644 index 855db3fa3..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/getDefaultString.ts.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - Code coverage report for lib/util/getDefaultString.ts - - - - - - - - - -
-
-

- All files / - lib/util getDefaultString.ts -

-
-
- 40% - Statements - 2/5 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/1 -
- -
- 40% - Lines - 2/5 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11  -5x -  -5x -  -  -  -  -  -  - 
import { DefaultString } from "../config/configTypes"
-import { getRandomString } from "./getRandomString"
- 
-export function getDefaultString(defaultSpec: DefaultString): string {
-  if (typeof defaultSpec === "string") {
-    return defaultSpec
-  } else {
-    return getRandomString(defaultSpec)
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/getRandomCharInSet.ts.html b/sdk/lib/coverage/lcov-report/lib/util/getRandomCharInSet.ts.html deleted file mode 100644 index ee90040e0..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/getRandomCharInSet.ts.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - Code coverage report for lib/util/getRandomCharInSet.ts - - - - - - - - - -
-
-

- All files / - lib/util getRandomCharInSet.ts -

-
-
- 1.78% - Statements - 1/56 -
- -
- 0% - Branches - 0/42 -
- -
- 0% - Functions - 0/2 -
- -
- 1.78% - Lines - 1/56 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
// a,g,h,A-Z,,,,-
- 
-export function getRandomCharInSet(charset: string): string {
-  const set = stringToCharSet(charset)
-  let charIdx = Math.floor(
-    (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32) * set.len,
-  )
-  for (let range of set.ranges) {
-    Iif (range.len > charIdx) {
-      return String.fromCharCode(range.start.charCodeAt(0) + charIdx)
-    }
-    charIdx -= range.len
-  }
-  throw new Error("unreachable")
-}
-function stringToCharSet(charset: string): CharSet {
-  let set: CharSet = { ranges: [], len: 0 }
-  let start: string | null = null
-  let end: string | null = null
-  let in_range = false
-  for (let char of charset) {
-    switch (char) {
-      case ",":
-        if (start !== null && end !== null) {
-          Iif (start!.charCodeAt(0) > end!.charCodeAt(0)) {
-            throw new Error("start > end of charset")
-          }
-          const len = end.charCodeAt(0) - start.charCodeAt(0) + 1
-          set.ranges.push({
-            start,
-            end,
-            len,
-          })
-          set.len += len
-          start = null
-          end = null
-          in_range = false
-        } else if (start !== null && !in_range) {
-          set.len += 1
-          set.ranges.push({ start, end: start, len: 1 })
-          start = null
-        } else if (start !== null && in_range) {
-          end = ","
-        } else if (start === null && end === null && !in_range) {
-          start = ","
-        } else {
-          throw new Error('unexpected ","')
-        }
-        break
-      case "-":
-        if (start === null) {
-          start = "-"
-        } else if (!in_range) {
-          in_range = true
-        } else if (in_range && end === null) {
-          end = "-"
-        } else {
-          throw new Error('unexpected "-"')
-        }
-        break
-      default:
-        if (start === null) {
-          start = char
-        } else if (in_range && end === null) {
-          end = char
-        } else {
-          throw new Error(`unexpected "${char}"`)
-        }
-    }
-  }
-  if (start !== null && end !== null) {
-    Iif (start!.charCodeAt(0) > end!.charCodeAt(0)) {
-      throw new Error("start > end of charset")
-    }
-    const len = end.charCodeAt(0) - start.charCodeAt(0) + 1
-    set.ranges.push({
-      start,
-      end,
-      len,
-    })
-    set.len += len
-  } else Iif (start !== null) {
-    set.len += 1
-    set.ranges.push({
-      start,
-      end: start,
-      len: 1,
-    })
-  }
-  return set
-}
-type CharSet = {
-  ranges: {
-    start: string
-    end: string
-    len: number
-  }[]
-  len: number
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/getRandomString.ts.html b/sdk/lib/coverage/lcov-report/lib/util/getRandomString.ts.html deleted file mode 100644 index 9f547a7cb..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/getRandomString.ts.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - Code coverage report for lib/util/getRandomString.ts - - - - - - - - - -
-
-

- All files / - lib/util getRandomString.ts -

-
-
- 28.57% - Statements - 2/7 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/1 -
- -
- 33.33% - Lines - 2/6 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12  -5x -  -5x -  -  -  -  -  -  -  - 
import { RandomString } from "../config/configTypes"
-import { getRandomCharInSet } from "./getRandomCharInSet"
- 
-export function getRandomString(generator: RandomString): string {
-  let s = ""
-  for (let i = 0; i < generator.len; i++) {
-    s = s + getRandomCharInSet(generator.charset)
-  }
- 
-  return s
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/getServiceInterface.ts.html b/sdk/lib/coverage/lcov-report/lib/util/getServiceInterface.ts.html deleted file mode 100644 index 5bc055e7f..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/getServiceInterface.ts.html +++ /dev/null @@ -1,939 +0,0 @@ - - - - Code coverage report for lib/util/getServiceInterface.ts - - - - - - - - - -
-
-

- All files / - lib/util getServiceInterface.ts -

-
-
- 20.43% - Statements - 19/93 -
- -
- 0% - Branches - 0/37 -
- -
- 2.63% - Functions - 1/38 -
- -
- 18.82% - Lines - 16/85 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -6x -8x -8x -8x -8x -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -6x -  -  -6x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -6x -  -  -  -  -  - 
import { ServiceInterfaceType } from "../StartSdk"
-import { knownProtocols } from "../interfaces/Host"
-import {
-  AddressInfo,
-  Effects,
-  Host,
-  HostAddress,
-  Hostname,
-  HostnameInfo,
-  HostnameInfoIp,
-  HostnameInfoOnion,
-  IpInfo,
-} from "../types"
- 
-export type UrlString = string
-export type HostId = string
- 
-const getHostnameRegex = /^(\w+:\/\/)?([^\/\:]+)(:\d{1,3})?(\/)?/
-export const getHostname = (url: string): Hostname | null => {
-  const founds = url.match(getHostnameRegex)?.[2]
-  Iif (!founds) return null
-  const parts = founds.split("@")
-  const last = parts[parts.length - 1] as Hostname | null
-  return last
-}
- 
-export type Filled = {
-  hostnames: HostnameInfo[]
-  onionHostnames: HostnameInfo[]
-  localHostnames: HostnameInfo[]
-  ipHostnames: HostnameInfo[]
-  ipv4Hostnames: HostnameInfo[]
-  ipv6Hostnames: HostnameInfo[]
-  nonIpHostnames: HostnameInfo[]
- 
-  urls: UrlString[]
-  onionUrls: UrlString[]
-  localUrls: UrlString[]
-  ipUrls: UrlString[]
-  ipv4Urls: UrlString[]
-  ipv6Urls: UrlString[]
-  nonIpUrls: UrlString[]
-}
-export type FilledAddressInfo = AddressInfo & Filled
-export type ServiceInterfaceFilled = {
-  id: string
-  /** The title of this field to be displayed */
-  name: string
-  /** Human readable description, used as tooltip usually */
-  description: string
-  /** Whether or not the interface has a primary URL */
-  hasPrimary: boolean
-  /** Whether or not to mask the URIs for this interface. Useful if the URIs contain sensitive information, such as a password, macaroon, or API key */
-  masked: boolean
-  /** Information about the host for this binding */
-  host: Host | null
-  /** URI information */
-  addressInfo: FilledAddressInfo | null
-  /** Indicates if we are a ui/p2p/api for the kind of interface that this is representing */
-  type: ServiceInterfaceType
-  /** The primary hostname for the service, as chosen by the user */
-  primaryHostname: Hostname | null
-  /** The primary URL for the service, as chosen by the user */
-  primaryUrl: UrlString | null
-}
-const either =
-  <A>(...args: ((a: A) => boolean)[]) =>
-  (a: A) =>
-    args.some((x) => x(a))
-const negate =
-  <A>(fn: (a: A) => boolean) =>
-  (a: A) =>
-    !fn(a)
-const unique = <A>(values: A[]) => Array.from(new Set(values))
-export const addressHostToUrl = (
-  { scheme, sslScheme, username, suffix }: AddressInfo,
-  host: HostnameInfo,
-): UrlString[] => {
-  const res = []
-  const fmt = (scheme: string | null, host: HostnameInfo, port: number) => {
-    const excludePort =
-      scheme &&
-      scheme in knownProtocols &&
-      port === knownProtocols[scheme as keyof typeof knownProtocols].defaultPort
-    let hostname
-    if (host.kind === "onion") {
-      hostname = host.hostname.value
-    } else Iif (host.kind === "ip") {
-      if (host.hostname.kind === "domain") {
-        hostname = `${host.hostname.subdomain ? `${host.hostname.subdomain}.` : ""}${host.hostname.domain}`
-      } else if (host.hostname.kind === "ipv6") {
-        hostname = `[${host.hostname.value}]`
-      } else {
-        hostname = host.hostname.value
-      }
-    }
-    return `${scheme ? `${scheme}://` : ""}${
-      username ? `${username}@` : ""
-    }${hostname}${excludePort ? "" : `:${port}`}${suffix}`
-  }
-  Iif (host.hostname.sslPort !== null) {
-    res.push(fmt(sslScheme, host, host.hostname.sslPort))
-  }
-  Iif (host.hostname.port !== null) {
-    res.push(fmt(scheme, host, host.hostname.port))
-  }
- 
-  return res
-}
- 
-export const filledAddress = (
-  host: Host,
-  addressInfo: AddressInfo,
-): FilledAddressInfo => {
-  const toUrl = addressHostToUrl.bind(null, addressInfo)
-  const hostnames = host.hostnameInfo[addressInfo.internalPort]
- 
-  return {
-    ...addressInfo,
-    hostnames,
-    get onionHostnames() {
-      return hostnames.filter((h) => h.kind === "onion")
-    },
-    get localHostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "local",
-      )
-    },
-    get ipHostnames() {
-      return hostnames.filter(
-        (h) =>
-          h.kind === "ip" &&
-          (h.hostname.kind === "ipv4" || h.hostname.kind === "ipv6"),
-      )
-    },
-    get ipv4Hostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "ipv4",
-      )
-    },
-    get ipv6Hostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "ipv6",
-      )
-    },
-    get nonIpHostnames() {
-      return hostnames.filter(
-        (h) =>
-          h.kind === "ip" &&
-          h.hostname.kind !== "ipv4" &&
-          h.hostname.kind !== "ipv6",
-      )
-    },
-    get urls() {
-      return this.hostnames.flatMap(toUrl)
-    },
-    get onionUrls() {
-      return this.onionHostnames.flatMap(toUrl)
-    },
-    get localUrls() {
-      return this.localHostnames.flatMap(toUrl)
-    },
-    get ipUrls() {
-      return this.ipHostnames.flatMap(toUrl)
-    },
-    get ipv4Urls() {
-      return this.ipv4Hostnames.flatMap(toUrl)
-    },
-    get ipv6Urls() {
-      return this.ipv6Hostnames.flatMap(toUrl)
-    },
-    get nonIpUrls() {
-      return this.nonIpHostnames.flatMap(toUrl)
-    },
-  }
-}
- 
-const makeInterfaceFilled = async ({
-  effects,
-  id,
-  packageId,
-  callback,
-}: {
-  effects: Effects
-  id: string
-  packageId?: string
-  callback?: () => void
-}) => {
-  const serviceInterfaceValue = await effects.getServiceInterface({
-    serviceInterfaceId: id,
-    packageId,
-    callback,
-  })
-  Iif (!serviceInterfaceValue) {
-    return null
-  }
-  const hostId = serviceInterfaceValue.addressInfo.hostId
-  const host = await effects.getHostInfo({
-    packageId,
-    hostId,
-    callback,
-  })
-  const primaryUrl = await effects.getPrimaryUrl({
-    hostId,
-    packageId,
-    callback,
-  })
- 
-  const interfaceFilled: ServiceInterfaceFilled = {
-    ...serviceInterfaceValue,
-    primaryUrl: primaryUrl,
-    host,
-    addressInfo: host
-      ? filledAddress(host, serviceInterfaceValue.addressInfo)
-      : null,
-    get primaryHostname() {
-      Iif (primaryUrl == null) return null
-      return getHostname(primaryUrl)
-    },
-  }
-  return interfaceFilled
-}
- 
-export class GetServiceInterface {
-  constructor(
-    readonly effects: Effects,
-    readonly opts: { id: string; packageId?: string },
-  ) {}
- 
-  /**
-   * Returns the value of Store at the provided path. Restart the service if the value changes
-   */
-  async const() {
-    const { id, packageId } = this.opts
-    const callback = this.effects.restart
-    const interfaceFilled = await makeInterfaceFilled({
-      effects: this.effects,
-      id,
-      packageId,
-      callback,
-    })
- 
-    return interfaceFilled
-  }
-  /**
-   * Returns the value of ServiceInterfacesFilled at the provided path. Does nothing if the value changes
-   */
-  async once() {
-    const { id, packageId } = this.opts
-    const interfaceFilled = await makeInterfaceFilled({
-      effects: this.effects,
-      id,
-      packageId,
-    })
- 
-    return interfaceFilled
-  }
- 
-  /**
-   * Watches the value of ServiceInterfacesFilled at the provided path. Takes a custom callback function to run whenever the value changes
-   */
-  async *watch() {
-    const { id, packageId } = this.opts
-    while (true) {
-      let callback: () => void = () => {}
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await makeInterfaceFilled({
-        effects: this.effects,
-        id,
-        packageId,
-        callback,
-      })
-      await waitForNext
-    }
-  }
-}
-export function getServiceInterface(
-  effects: Effects,
-  opts: { id: string; packageId?: string },
-) {
-  return new GetServiceInterface(effects, opts)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/getServiceInterfaces.ts.html b/sdk/lib/coverage/lcov-report/lib/util/getServiceInterfaces.ts.html deleted file mode 100644 index e013de466..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/getServiceInterfaces.ts.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - Code coverage report for lib/util/getServiceInterfaces.ts - - - - - - - - - -
-
-

- All files / - lib/util getServiceInterfaces.ts -

-
-
- 11.76% - Statements - 4/34 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/11 -
- -
- 12.12% - Lines - 4/33 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115  -5x -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  - 
import { Effects } from "../types"
-import {
-  ServiceInterfaceFilled,
-  filledAddress,
-  getHostname,
-} from "./getServiceInterface"
- 
-const makeManyInterfaceFilled = async ({
-  effects,
-  packageId,
-  callback,
-}: {
-  effects: Effects
-  packageId?: string
-  callback?: () => void
-}) => {
-  const serviceInterfaceValues = await effects.listServiceInterfaces({
-    packageId,
-    callback,
-  })
- 
-  const serviceInterfacesFilled: ServiceInterfaceFilled[] = await Promise.all(
-    Object.values(serviceInterfaceValues).map(async (serviceInterfaceValue) => {
-      const hostId = serviceInterfaceValue.addressInfo.hostId
-      const host = await effects.getHostInfo({
-        packageId,
-        hostId,
-        callback,
-      })
-      Iif (!host) {
-        throw new Error(`host ${hostId} not found!`)
-      }
-      const primaryUrl = await effects
-        .getPrimaryUrl({
-          hostId,
-          packageId,
-          callback,
-        })
-        .catch(() => null)
-      return {
-        ...serviceInterfaceValue,
-        primaryUrl: primaryUrl,
-        host,
-        addressInfo: filledAddress(host, serviceInterfaceValue.addressInfo),
-        get primaryHostname() {
-          Iif (primaryUrl == null) return null
-          return getHostname(primaryUrl)
-        },
-      }
-    }),
-  )
-  return serviceInterfacesFilled
-}
- 
-export class GetServiceInterfaces {
-  constructor(
-    readonly effects: Effects,
-    readonly opts: { packageId?: string },
-  ) {}
- 
-  /**
-   * Returns the value of Store at the provided path. Restart the service if the value changes
-   */
-  async const() {
-    const { packageId } = this.opts
-    const callback = this.effects.restart
-    const interfaceFilled: ServiceInterfaceFilled[] =
-      await makeManyInterfaceFilled({
-        effects: this.effects,
-        packageId,
-        callback,
-      })
- 
-    return interfaceFilled
-  }
-  /**
-   * Returns the value of ServiceInterfacesFilled at the provided path. Does nothing if the value changes
-   */
-  async once() {
-    const { packageId } = this.opts
-    const interfaceFilled: ServiceInterfaceFilled[] =
-      await makeManyInterfaceFilled({
-        effects: this.effects,
-        packageId,
-      })
- 
-    return interfaceFilled
-  }
- 
-  /**
-   * Watches the value of ServiceInterfacesFilled at the provided path. Takes a custom callback function to run whenever the value changes
-   */
-  async *watch() {
-    const { packageId } = this.opts
-    while (true) {
-      let callback: () => void = () => {}
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await makeManyInterfaceFilled({
-        effects: this.effects,
-        packageId,
-        callback,
-      })
-      await waitForNext
-    }
-  }
-}
-export function getServiceInterfaces(
-  effects: Effects,
-  opts: { packageId?: string },
-) {
-  return new GetServiceInterfaces(effects, opts)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/graph.ts.html b/sdk/lib/coverage/lcov-report/lib/util/graph.ts.html deleted file mode 100644 index 780c092c0..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/graph.ts.html +++ /dev/null @@ -1,819 +0,0 @@ - - - - Code coverage report for lib/util/graph.ts - - - - - - - - - -
-
-

- All files / - lib/util graph.ts -

-
-
- 89.83% - Statements - 106/118 -
- -
- 75% - Branches - 18/24 -
- -
- 95.23% - Functions - 20/21 -
- -
- 90.59% - Lines - 106/117 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245  -  -  -  -  -  -  -  -  -  -  -  -  -5x -11x -  -  -  -  -  -  -39x -  -  -  -39x -20x -  -  -  -  -20x -20x -  -39x -1x -  -  -  -  -1x -1x -  -39x -39x -  -  -  -  -1x -  -1x -4x -1x -  -  -  -1x -  -  -  -  -  -  -12x -  -  -  -  -12x -12x -12x -  -  -  -  -  -  -6x -  -  -  -15x -1x -  -14x -14x -14x -23x -9x -14x -16x -16x -16x -18x -18x -9x -9x -  -  -  -  -  -6x -5x -5x -5x -15x -15x -15x -15x -15x -10x -10x -  -  -  -  -  -1x -  -  -  -  -  -  -  -6x -  -  -  -15x -1x -  -14x -14x -14x -23x -9x -14x -16x -16x -16x -18x -18x -9x -9x -  -  -  -  -  -6x -5x -5x -5x -15x -15x -15x -15x -15x -10x -10x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -3x -  -11x -3x -3x -  -  -  -  -11x -3x -  -8x -  -  -8x -8x -6x -12x -8x -6x -11x -11x -11x -13x -13x -6x -6x -  -  -7x -7x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -11x -11x -3x -  -  -  -  -  - 
import { boolean } from "ts-matches"
- 
-export type Vertex<VMetadata = void, EMetadata = void> = {
-  metadata: VMetadata
-  edges: Array<Edge<EMetadata, VMetadata>>
-}
- 
-export type Edge<EMetadata = void, VMetadata = void> = {
-  metadata: EMetadata
-  from: Vertex<VMetadata, EMetadata>
-  to: Vertex<VMetadata, EMetadata>
-}
- 
-export class Graph<VMetadata = void, EMetadata = void> {
-  private readonly vertices: Array<Vertex<VMetadata, EMetadata>> = []
-  constructor() {}
-  addVertex(
-    metadata: VMetadata,
-    fromEdges: Array<Omit<Edge<EMetadata, VMetadata>, "to">>,
-    toEdges: Array<Omit<Edge<EMetadata, VMetadata>, "from">>,
-  ): Vertex<VMetadata, EMetadata> {
-    const vertex: Vertex<VMetadata, EMetadata> = {
-      metadata,
-      edges: [],
-    }
-    for (let edge of fromEdges) {
-      const vEdge = {
-        metadata: edge.metadata,
-        from: edge.from,
-        to: vertex,
-      }
-      edge.from.edges.push(vEdge)
-      vertex.edges.push(vEdge)
-    }
-    for (let edge of toEdges) {
-      const vEdge = {
-        metadata: edge.metadata,
-        from: vertex,
-        to: edge.to,
-      }
-      edge.to.edges.push(vEdge)
-      vertex.edges.push(vEdge)
-    }
-    this.vertices.push(vertex)
-    return vertex
-  }
-  findVertex(
-    predicate: (vertex: Vertex<VMetadata, EMetadata>) => boolean,
-  ): Generator<Vertex<VMetadata, EMetadata>, void> {
-    const veritces = this.vertices
-    function* gen() {
-      for (let vertex of veritces) {
-        if (predicate(vertex)) {
-          yield vertex
-        }
-      }
-    }
-    return gen()
-  }
-  addEdge(
-    metadata: EMetadata,
-    from: Vertex<VMetadata, EMetadata>,
-    to: Vertex<VMetadata, EMetadata>,
-  ): Edge<EMetadata, VMetadata> {
-    const edge = {
-      metadata,
-      from,
-      to,
-    }
-    edge.from.edges.push(edge)
-    edge.to.edges.push(edge)
-    return edge
-  }
-  breadthFirstSearch(
-    from:
-      | Vertex<VMetadata, EMetadata>
-      | ((vertex: Vertex<VMetadata, EMetadata>) => boolean),
-  ): Generator<Vertex<VMetadata, EMetadata>, void> {
-    const visited: Array<Vertex<VMetadata, EMetadata>> = []
-    function* rec(
-      vertex: Vertex<VMetadata, EMetadata>,
-    ): Generator<Vertex<VMetadata, EMetadata>, void> {
-      if (visited.includes(vertex)) {
-        return
-      }
-      visited.push(vertex)
-      yield vertex
-      let generators = vertex.edges
-        .filter((e) => e.from === vertex)
-        .map((e) => rec(e.to))
-      while (generators.length) {
-        let prev = generators
-        generators = []
-        for (let gen of prev) {
-          const next = gen.next()
-          if (!next.done) {
-            generators.push(gen)
-            yield next.value
-          }
-        }
-      }
-    }
- 
-    if (from instanceof Function) {
-      let generators = this.vertices.filter(from).map(rec)
-      return (function* () {
-        while (generators.length) {
-          let prev = generators
-          generators = []
-          for (let gen of prev) {
-            const next = gen.next()
-            if (!next.done) {
-              generators.push(gen)
-              yield next.value
-            }
-          }
-        }
-      })()
-    } else {
-      return rec(from)
-    }
-  }
-  reverseBreadthFirstSearch(
-    to:
-      | Vertex<VMetadata, EMetadata>
-      | ((vertex: Vertex<VMetadata, EMetadata>) => boolean),
-  ): Generator<Vertex<VMetadata, EMetadata>, void> {
-    const visited: Array<Vertex<VMetadata, EMetadata>> = []
-    function* rec(
-      vertex: Vertex<VMetadata, EMetadata>,
-    ): Generator<Vertex<VMetadata, EMetadata>, void> {
-      if (visited.includes(vertex)) {
-        return
-      }
-      visited.push(vertex)
-      yield vertex
-      let generators = vertex.edges
-        .filter((e) => e.to === vertex)
-        .map((e) => rec(e.from))
-      while (generators.length) {
-        let prev = generators
-        generators = []
-        for (let gen of prev) {
-          const next = gen.next()
-          if (!next.done) {
-            generators.push(gen)
-            yield next.value
-          }
-        }
-      }
-    }
- 
-    if (to instanceof Function) {
-      let generators = this.vertices.filter(to).map(rec)
-      return (function* () {
-        while (generators.length) {
-          let prev = generators
-          generators = []
-          for (let gen of prev) {
-            const next = gen.next()
-            if (!next.done) {
-              generators.push(gen)
-              yield next.value
-            }
-          }
-        }
-      })()
-    } else {
-      return rec(to)
-    }
-  }
-  shortestPath(
-    from:
-      | Vertex<VMetadata, EMetadata>
-      | ((vertex: Vertex<VMetadata, EMetadata>) => boolean),
-    to:
-      | Vertex<VMetadata, EMetadata>
-      | ((vertex: Vertex<VMetadata, EMetadata>) => boolean),
-  ): Array<Edge<EMetadata, VMetadata>> | void {
-    const isDone =
-      to instanceof Function
-        ? to
-        : (v: Vertex<VMetadata, EMetadata>) => v === to
-    const path: Array<Edge<EMetadata, VMetadata>> = []
-    const visited: Array<Vertex<VMetadata, EMetadata>> = []
-    function* check(
-      vertex: Vertex<VMetadata, EMetadata>,
-      path: Array<Edge<EMetadata, VMetadata>>,
-    ): Generator<undefined, Array<Edge<EMetadata, VMetadata>> | undefined> {
-      if (isDone(vertex)) {
-        return path
-      }
-      Iif (visited.includes(vertex)) {
-        return
-      }
-      visited.push(vertex)
-      yield
-      let generators = vertex.edges
-        .filter((e) => e.from === vertex)
-        .map((e) => check(e.to, [...path, e]))
-      while (generators.length) {
-        let prev = generators
-        generators = []
-        for (let gen of prev) {
-          const next = gen.next()
-          if (next.done === true) {
-            if (next.value) {
-              return next.value
-            }
-          } else {
-            generators.push(gen)
-            yield
-          }
-        }
-      }
-    }
- 
-    Iif (from instanceof Function) {
-      let generators = this.vertices.filter(from).map((v) => check(v, []))
-      while (generators.length) {
-        let prev = generators
-        generators = []
-        for (let gen of prev) {
-          const next = gen.next()
-          if (next.done === true) {
-            Iif (next.value) {
-              return next.value
-            }
-          } else {
-            generators.push(gen)
-          }
-        }
-      }
-    } else {
-      const gen = check(from, [])
-      while (true) {
-        const next = gen.next()
-        if (next.done) {
-          return next.value
-        }
-      }
-    }
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/inMs.ts.html b/sdk/lib/coverage/lcov-report/lib/util/inMs.ts.html deleted file mode 100644 index d226181ab..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/inMs.ts.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - Code coverage report for lib/util/inMs.ts - - - - - - - - - -
-
-

- All files / - lib/util inMs.ts -

-
-
- 22.85% - Statements - 8/35 -
- -
- 8.33% - Branches - 1/12 -
- -
- 33.33% - Functions - 1/3 -
- -
- 25% - Lines - 6/24 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32  -  -6x -  -6x -  -  -  -  -  -  -  -  -6x -  -  -  -  -  -6x -1x -1x -  -  -  -  -  -  -  -  -  - 
import { DEFAULT_SIGTERM_TIMEOUT } from "../mainFn"
- 
-const matchTimeRegex = /^\s*(\d+)?(\.\d+)?\s*(ms|s|m|h|d)/
- 
-const unitMultiplier = (unit?: string) => {
-  Iif (!unit) return 1
-  Iif (unit === "ms") return 1
-  Iif (unit === "s") return 1000
-  Iif (unit === "m") return 1000 * 60
-  Iif (unit === "h") return 1000 * 60 * 60
-  Iif (unit === "d") return 1000 * 60 * 60 * 24
-  throw new Error(`Invalid unit: ${unit}`)
-}
-const digitsMs = (digits: string | null, multiplier: number) => {
-  Iif (!digits) return 0
-  const value = parseInt(digits.slice(1))
-  const divideBy = multiplier / Math.pow(10, digits.length - 1)
-  return Math.round(value * divideBy)
-}
-export const inMs = (time?: string | number) => {
-  Iif (typeof time === "number") return time
-  if (!time) return undefined
-  const matches = time.match(matchTimeRegex)
-  Iif (!matches) throw new Error(`Invalid time format: ${time}`)
-  const [_, leftHandSide, digits, unit] = matches
-  const multiplier = unitMultiplier(unit)
-  const firstValue = parseInt(leftHandSide || "0") * multiplier
-  const secondValue = digitsMs(digits, multiplier)
- 
-  return firstValue + secondValue
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/index.html b/sdk/lib/coverage/lcov-report/lib/util/index.html deleted file mode 100644 index a27e528bb..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/index.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - Code coverage report for lib/util - - - - - - - - - -
-
-

All files lib/util

-
-
- 36.83% - Statements - 256/695 -
- -
- 12.2% - Branches - 26/213 -
- -
- 17.96% - Functions - 30/167 -
- -
- 36.29% - Lines - 233/642 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- GetSslCertificate.ts - -
-
-
-
-
8.33%1/12100%0/00%0/68.33%1/12
- GetSystemSmtp.ts - -
-
-
-
-
10%1/10100%0/00%0/610%1/10
- Hostname.ts - -
-
-
-
-
6.66%1/150%0/130%0/16.66%1/15
- SubContainer.ts - -
-
-
-
-
6.79%11/1620%0/550%0/367%11/157
- asError.ts - -
-
-
-
-
40%2/50%0/10%0/125%1/4
- deepEqual.ts - -
-
-
-
-
66.66%14/2116.66%1/6100%2/285.71%12/14
- deepMerge.ts - -
-
-
-
-
100%18/18100%5/5100%4/4100%13/13
- fileHelper.ts - -
-
-
-
-
20.58%7/340%0/40%0/1821.21%7/33
- getDefaultString.ts - -
-
-
-
-
40%2/50%0/20%0/140%2/5
- getRandomCharInSet.ts - -
-
-
-
-
1.78%1/560%0/420%0/21.78%1/56
- getRandomString.ts - -
-
-
-
-
28.57%2/7100%0/00%0/133.33%2/6
- getServiceInterface.ts - -
-
-
-
-
20.43%19/930%0/372.63%1/3818.82%16/85
- getServiceInterfaces.ts - -
-
-
-
-
11.76%4/340%0/20%0/1112.12%4/33
- graph.ts - -
-
-
-
-
89.83%106/11875%18/2495.23%20/2190.59%106/117
- inMs.ts - -
-
-
-
-
22.85%8/358.33%1/1233.33%1/325%6/24
- index.ts - -
-
-
-
-
100%23/23100%0/00%0/8100%15/15
- nullIfEmpty.ts - -
-
-
-
-
25%1/40%0/30%0/133.33%1/3
- once.ts - -
-
-
-
-
100%6/6100%1/1100%2/2100%6/6
- patterns.ts - -
-
-
-
-
100%12/12100%0/0100%0/0100%12/12
- regexes.ts - -
-
-
-
-
100%11/11100%0/0100%0/0100%11/11
- splitCommand.ts - -
-
-
-
-
50%3/60%0/10%0/150%2/4
- stringFromStdErrOut.ts - -
-
-
-
-
50%1/20%0/20%0/150%1/2
- typeHelpers.ts - -
-
-
-
-
33.33%2/60%0/30%0/320%1/5
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/index.ts.html b/sdk/lib/coverage/lcov-report/lib/util/index.ts.html deleted file mode 100644 index 3a2e435ad..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/index.ts.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - Code coverage report for lib/util/index.ts - - - - - - - - - -
-
-

- All files / - lib/util index.ts -

-
-
- 100% - Statements - 23/23 -
- -
- 100% - Branches - 0/0 -
- -
- 0% - Functions - 0/8 -
- -
- 100% - Lines - 15/15 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -175x -5x -5x -5x -5x -5x -5x -  -5x -5x -5x -5x -5x -5x -5x -5x - 
import "./nullIfEmpty"
-import "./fileHelper"
-import "../store/getStore"
-import "./deepEqual"
-import "./deepMerge"
-import "./SubContainer"
-import "./once"
- 
-export { GetServiceInterface, getServiceInterface } from "./getServiceInterface"
-export { asError } from "./asError"
-export { getServiceInterfaces } from "./getServiceInterfaces"
-export { addressHostToUrl } from "./getServiceInterface"
-export { hostnameInfoToAddress } from "./Hostname"
-export * from "./typeHelpers"
-export { getDefaultString } from "./getDefaultString"
-export { inMs } from "./inMs"
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/nullIfEmpty.ts.html b/sdk/lib/coverage/lcov-report/lib/util/nullIfEmpty.ts.html deleted file mode 100644 index 2d3e19897..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/nullIfEmpty.ts.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for lib/util/nullIfEmpty.ts - - - - - - - - - -
-
-

- All files / - lib/util nullIfEmpty.ts -

-
-
- 25% - Statements - 1/4 -
- -
- 0% - Branches - 0/3 -
- -
- 0% - Functions - 0/1 -
- -
- 33.33% - Lines - 1/3 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13  -  -  -  -  -  -5x -  -  -  -  -  - 
/**
- * A useful tool when doing a getConfig.
- * Look into the config {@link FileHelper} for an example of the use.
- * @param s
- * @returns
- */
-export default function nullIfEmpty<A extends Record<string, any>>(
-  s: null | A,
-) {
-  Iif (s === null) return null
-  return Object.keys(s).length === 0 ? null : s
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/once.ts.html b/sdk/lib/coverage/lcov-report/lib/util/once.ts.html deleted file mode 100644 index 1e65412e2..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/once.ts.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - Code coverage report for lib/util/once.ts - - - - - - - - - -
-
-

- All files / - lib/util once.ts -

-
-
- 100% - Statements - 6/6 -
- -
- 100% - Branches - 1/1 -
- -
- 100% - Functions - 2/2 -
- -
- 100% - Lines - 6/6 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -106x -26x -26x -139x -25x -  -139x -  -  - 
export function once<B>(fn: () => B): () => B {
-  let result: [B] | [] = []
-  return () => {
-    if (!result.length) {
-      result = [fn()]
-    }
-    return result[0]
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/patterns.ts.html b/sdk/lib/coverage/lcov-report/lib/util/patterns.ts.html deleted file mode 100644 index 0e8f2b347..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/patterns.ts.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - Code coverage report for lib/util/patterns.ts - - - - - - - - - -
-
-

- All files / - lib/util patterns.ts -

-
-
- 100% - Statements - 12/12 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 12/12 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60  -5x -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  -  -5x -  -  -  -  -5x -  -  -  -  - 
import { Pattern } from "../config/configTypes"
-import * as regexes from "./regexes"
- 
-export const ipv6: Pattern = {
-  regex: regexes.ipv6.toString(),
-  description: "Must be a valid IPv6 address",
-}
- 
-export const ipv4: Pattern = {
-  regex: regexes.ipv4.toString(),
-  description: "Must be a valid IPv4 address",
-}
- 
-export const hostname: Pattern = {
-  regex: regexes.hostname.toString(),
-  description: "Must be a valid hostname",
-}
- 
-export const localHostname: Pattern = {
-  regex: regexes.localHostname.toString(),
-  description: 'Must be a valid ".local" hostname',
-}
- 
-export const torHostname: Pattern = {
-  regex: regexes.torHostname.toString(),
-  description: 'Must be a valid Tor (".onion") hostname',
-}
- 
-export const url: Pattern = {
-  regex: regexes.url.toString(),
-  description: "Must be a valid URL",
-}
- 
-export const localUrl: Pattern = {
-  regex: regexes.localUrl.toString(),
-  description: 'Must be a valid ".local" URL',
-}
- 
-export const torUrl: Pattern = {
-  regex: regexes.torUrl.toString(),
-  description: 'Must be a valid Tor (".onion") URL',
-}
- 
-export const ascii: Pattern = {
-  regex: regexes.ascii.toString(),
-  description:
-    "May only contain ASCII characters. See https://www.w3schools.com/charsets/ref_html_ascii.asp",
-}
- 
-export const email: Pattern = {
-  regex: regexes.email.toString(),
-  description: "Must be a valid email address",
-}
- 
-export const base64: Pattern = {
-  regex: regexes.base64.toString(),
-  description:
-    "May only contain base64 characters. See https://base64.guru/learn/base64-characters",
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/regexes.ts.html b/sdk/lib/coverage/lcov-report/lib/util/regexes.ts.html deleted file mode 100644 index 507c88c97..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/regexes.ts.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - Code coverage report for lib/util/regexes.ts - - - - - - - - - -
-
-

- All files / - lib/util regexes.ts -

-
-
- 100% - Statements - 11/11 -
- -
- 100% - Branches - 0/0 -
- -
- 100% - Functions - 0/0 -
- -
- 100% - Lines - 11/11 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35  -5x -  -  -  -5x -  -  -5x -  -  -5x -  -5x -  -  -5x -  -  -5x -  -  -5x -  -  -  -5x -  -  -5x -  -  -5x -  - 
// https://ihateregex.io/expr/ipv6/
-export const ipv6 =
-  /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/
- 
-// https://ihateregex.io/expr/ipv4/
-export const ipv4 =
-  /(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}/
- 
-export const hostname =
-  /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/
- 
-export const localHostname = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.local/
- 
-export const torHostname = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.onion/
- 
-// https://ihateregex.io/expr/url/
-export const url =
-  /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/
- 
-export const localUrl =
-  /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.local\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/
- 
-export const torUrl =
-  /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.onion\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/
- 
-// https://ihateregex.io/expr/ascii/
-export const ascii = /^[ -~]*$/
- 
-//https://ihateregex.io/expr/email/
-export const email = /[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+/
- 
-//https://rgxdb.com/r/1NUN74O6
-export const base64 =
-  /^(?:[a-zA-Z0-9+\/]{4})*(?:|(?:[a-zA-Z0-9+\/]{3}=)|(?:[a-zA-Z0-9+\/]{2}==)|(?:[a-zA-Z0-9+\/]{1}===))$/
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/splitCommand.ts.html b/sdk/lib/coverage/lcov-report/lib/util/splitCommand.ts.html deleted file mode 100644 index be6bd0b59..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/splitCommand.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for lib/util/splitCommand.ts - - - - - - - - - -
-
-

- All files / - lib/util splitCommand.ts -

-
-
- 50% - Statements - 3/6 -
- -
- 0% - Branches - 0/1 -
- -
- 0% - Functions - 0/1 -
- -
- 50% - Lines - 2/4 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -95x -  -5x -  -  -  -  -  - 
import { arrayOf, string } from "ts-matches"
- 
-export const splitCommand = (
-  command: string | [string, ...string[]],
-): string[] => {
-  Iif (arrayOf(string).test(command)) return command
-  return ["sh", "-c", command]
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/stringFromStdErrOut.ts.html b/sdk/lib/coverage/lcov-report/lib/util/stringFromStdErrOut.ts.html deleted file mode 100644 index 967fbb6a8..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/stringFromStdErrOut.ts.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - Code coverage report for lib/util/stringFromStdErrOut.ts - - - - - - - - - -
-
-

- All files / - lib/util stringFromStdErrOut.ts -

-
-
- 50% - Statements - 1/2 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/1 -
- -
- 50% - Lines - 1/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -76x -  -  -  -  -  - 
export async function stringFromStdErrOut(x: {
-  stdout: string
-  stderr: string
-}) {
-  return x?.stderr ? Promise.reject(x.stderr) : x.stdout
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/util/typeHelpers.ts.html b/sdk/lib/coverage/lcov-report/lib/util/typeHelpers.ts.html deleted file mode 100644 index fe078e433..000000000 --- a/sdk/lib/coverage/lcov-report/lib/util/typeHelpers.ts.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - Code coverage report for lib/util/typeHelpers.ts - - - - - - - - - -
-
-

- All files / - lib/util typeHelpers.ts -

-
-
- 33.33% - Statements - 2/6 -
- -
- 0% - Branches - 0/3 -
- -
- 0% - Functions - 0/3 -
- -
- 20% - Lines - 1/5 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117  -  -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import * as T from "../types"
- 
-// prettier-ignore
-export type FlattenIntersection<T> = 
-T extends ArrayLike<any> ? T :
-T extends object ? {} & {[P in keyof T]: T[P]} :
- T;
- 
-export type _<T> = FlattenIntersection<T>
- 
-export const isKnownError = (e: unknown): e is T.KnownError =>
-  e instanceof Object && ("error" in e || "error-code" in e)
- 
-declare const affine: unique symbol
- 
-export type Affine<A> = { [affine]: A }
- 
-type NeverPossible = { [affine]: string }
-export type NoAny<A> = NeverPossible extends A
-  ? keyof NeverPossible extends keyof A
-    ? never
-    : A
-  : A
- 
-type CapitalLetters =
-  | "A"
-  | "B"
-  | "C"
-  | "D"
-  | "E"
-  | "F"
-  | "G"
-  | "H"
-  | "I"
-  | "J"
-  | "K"
-  | "L"
-  | "M"
-  | "N"
-  | "O"
-  | "P"
-  | "Q"
-  | "R"
-  | "S"
-  | "T"
-  | "U"
-  | "V"
-  | "W"
-  | "X"
-  | "Y"
-  | "Z"
- 
-type Numbers = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
- 
-type CapitalChars = CapitalLetters | Numbers
- 
-export type ToKebab<S extends string> = S extends string
-  ? S extends `${infer Head}${CapitalChars}${infer Tail}` // string has a capital char somewhere
-    ? Head extends "" // there is a capital char in the first position
-      ? Tail extends ""
-        ? Lowercase<S> /*  'A' */
-        : S extends `${infer Caps}${Tail}` // tail exists, has capital characters
-          ? Caps extends CapitalChars
-            ? Tail extends CapitalLetters
-              ? `${Lowercase<Caps>}-${Lowercase<Tail>}` /* 'AB' */
-              : Tail extends `${CapitalLetters}${string}`
-                ? `${ToKebab<Caps>}-${ToKebab<Tail>}` /* first tail char is upper? 'ABcd' */
-                : `${ToKebab<Caps>}${ToKebab<Tail>}` /* 'AbCD','AbcD',  */ /* TODO: if tail is only numbers, append without underscore */
-            : never /* never reached, used for inference of caps */
-          : never
-      : Tail extends "" /* 'aB' 'abCD' 'ABCD' 'AB' */
-        ? S extends `${Head}${infer Caps}`
-          ? Caps extends CapitalChars
-            ? Head extends Lowercase<Head> /* 'abcD' */
-              ? Caps extends Numbers
-                ? // Head exists and is lowercase, tail does not, Caps is a number, we may be in a sub-select
-                  // if head ends with number, don't split head an Caps, keep contiguous numbers together
-                  Head extends `${string}${Numbers}`
-                  ? never
-                  : // head does not end in number, safe to split. 'abc2' -> 'abc-2'
-                    `${ToKebab<Head>}-${Caps}`
-                : `${ToKebab<Head>}-${ToKebab<Caps>}` /* 'abcD' 'abc25' */
-              : never /* stop union type forming */
-            : never
-          : never /* never reached, used for inference of caps */
-        : S extends `${Head}${infer Caps}${Tail}` /* 'abCd' 'ABCD' 'AbCd' 'ABcD' */
-          ? Caps extends CapitalChars
-            ? Head extends Lowercase<Head> /* is 'abCd' 'abCD' ? */
-              ? Tail extends CapitalLetters /* is 'abCD' where Caps = 'C' */
-                ? `${ToKebab<Head>}-${ToKebab<Caps>}-${Lowercase<Tail>}` /* aBCD Tail = 'D', Head = 'aB' */
-                : Tail extends `${CapitalLetters}${string}` /* is 'aBCd' where Caps = 'B' */
-                  ? Head extends Numbers
-                    ? never /* stop union type forming */
-                    : Head extends `${string}${Numbers}`
-                      ? never /* stop union type forming */
-                      : `${Head}-${ToKebab<Caps>}-${ToKebab<Tail>}` /* 'aBCd' => `${'a'}-${Lowercase<'B'>}-${ToSnake<'Cd'>}` */
-                  : `${ToKebab<Head>}-${Lowercase<Caps>}${ToKebab<Tail>}` /* 'aBcD' where Caps = 'B' tail starts as lowercase */
-              : never
-            : never
-          : never
-    : S /* 'abc'  */
-  : never
- 
-export type StringObject = Record<string, unknown>
- 
-function test() {
-  // prettier-ignore
-  const t = <A, B>(a: (
-    A extends B ? (
-      B extends A ? null : never
-    ) : never
-  )) =>{ }
-  t<"foo-bar", ToKebab<"FooBar">>(null)
-  // @ts-expect-error
-  t<"foo-3ar", ToKebab<"FooBar">>(null)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/version/VersionGraph.ts.html b/sdk/lib/coverage/lcov-report/lib/version/VersionGraph.ts.html deleted file mode 100644 index 0be831c44..000000000 --- a/sdk/lib/coverage/lcov-report/lib/version/VersionGraph.ts.html +++ /dev/null @@ -1,687 +0,0 @@ - - - - Code coverage report for lib/version/VersionGraph.ts - - - - - - - - - -
-
-

- All files / - lib/version VersionGraph.ts -

-
-
- 64.17% - Statements - 43/67 -
- -
- 51.35% - Branches - 19/37 -
- -
- 66.66% - Functions - 10/15 -
- -
- 65.15% - Lines - 43/66 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -2014x -  -  -4x -4x -4x -  -4x -  -  -  -  -  -5x -  -  -5x -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -5x -5x -5x -5x -5x -  -5x -  -5x -5x -  -  -  -  -  -  -  -  -  -5x -5x -5x -  -5x -  -  -  -  -  -5x -  -5x -5x -  -  -5x -  -5x -  -  -  -  -  -5x -  -5x -5x -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -5x -5x -  -  -  -  -  -  -  -  -5x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -5x -  -  -15x -  -  -  -  -  -  -10x -  -  -  -  -  -  -  -5x -5x -  -  -15x -  -  -  -  -  -  -10x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ExtendedVersion, VersionRange } from "../exver"
- 
-import * as T from "../types"
-import { Graph, Vertex } from "../util/graph"
-import { once } from "../util/once"
-import { IMPOSSIBLE, VersionInfo } from "./VersionInfo"
- 
-export class VersionGraph<CurrentVersion extends string> {
-  private readonly graph: () => Graph<
-    ExtendedVersion | VersionRange,
-    ((opts: { effects: T.Effects }) => Promise<void>) | undefined
-  >
-  private constructor(
-    readonly current: VersionInfo<CurrentVersion>,
-    versions: Array<VersionInfo<any>>,
-  ) {
-    this.graph = once(() => {
-      const graph = new Graph<
-        ExtendedVersion | VersionRange,
-        ((opts: { effects: T.Effects }) => Promise<void>) | undefined
-      >()
-      const flavorMap: Record<
-        string,
-        [
-          ExtendedVersion,
-          VersionInfo<any>,
-          Vertex<
-            ExtendedVersion | VersionRange,
-            ((opts: { effects: T.Effects }) => Promise<void>) | undefined
-          >,
-        ][]
-      > = {}
-      for (let version of [current, ...versions]) {
-        const v = ExtendedVersion.parse(version.options.version)
-        const vertex = graph.addVertex(v, [], [])
-        const flavor = v.flavor || ""
-        if (!flavorMap[flavor]) {
-          flavorMap[flavor] = []
-        }
-        flavorMap[flavor].push([v, version, vertex])
-      }
-      for (let flavor in flavorMap) {
-        flavorMap[flavor].sort((a, b) => a[0].compareForSort(b[0]))
-        let prev:
-          | [
-              ExtendedVersion,
-              VersionInfo<any>,
-              Vertex<
-                ExtendedVersion | VersionRange,
-                (opts: { effects: T.Effects }) => Promise<void>
-              >,
-            ]
-          | undefined = undefined
-        for (let [v, version, vertex] of flavorMap[flavor]) {
-          if (version.options.migrations.up !== IMPOSSIBLE) {
-            let range
-            Iif (prev) {
-              graph.addEdge(version.options.migrations.up, prev[2], vertex)
-              range = VersionRange.anchor(">=", prev[0]).and(
-                VersionRange.anchor("<", v),
-              )
-            } else {
-              range = VersionRange.anchor("<", v)
-            }
-            const vRange = graph.addVertex(range, [], [])
-            graph.addEdge(version.options.migrations.up, vRange, vertex)
-          }
- 
-          if (version.options.migrations.down !== IMPOSSIBLE) {
-            let range
-            Iif (prev) {
-              graph.addEdge(version.options.migrations.down, vertex, prev[2])
-              range = VersionRange.anchor(">=", prev[0]).and(
-                VersionRange.anchor("<", v),
-              )
-            } else {
-              range = VersionRange.anchor("<", v)
-            }
-            const vRange = graph.addVertex(range, [], [])
-            graph.addEdge(version.options.migrations.down, vertex, vRange)
-          }
- 
-          Iif (version.options.migrations.other) {
-            for (let rangeStr in version.options.migrations.other) {
-              const range = VersionRange.parse(rangeStr)
-              const vRange = graph.addVertex(range, [], [])
-              graph.addEdge(
-                version.options.migrations.other[rangeStr],
-                vRange,
-                vertex,
-              )
-              for (let matching of graph.findVertex(
-                (v) =>
-                  v.metadata instanceof ExtendedVersion &&
-                  v.metadata.satisfies(range),
-              )) {
-                graph.addEdge(
-                  version.options.migrations.other[rangeStr],
-                  matching,
-                  vertex,
-                )
-              }
-            }
-          }
-        }
-      }
-      return graph
-    })
-  }
-  currentVersion = once(() =>
-    ExtendedVersion.parse(this.current.options.version),
-  )
-  static of<
-    CurrentVersion extends string,
-    OtherVersions extends Array<VersionInfo<any>>,
-  >(
-    currentVersion: VersionInfo<CurrentVersion>,
-    ...other: EnsureUniqueId<OtherVersions, OtherVersions, CurrentVersion>
-  ) {
-    return new VersionGraph(currentVersion, other as Array<VersionInfo<any>>)
-  }
-  async migrate({
-    effects,
-    from,
-    to,
-  }: {
-    effects: T.Effects
-    from: ExtendedVersion
-    to: ExtendedVersion
-  }) {
-    const graph = this.graph()
-    Iif (from && to) {
-      const path = graph.shortestPath(
-        (v) =>
-          (v.metadata instanceof VersionRange &&
-            v.metadata.satisfiedBy(from)) ||
-          (v.metadata instanceof ExtendedVersion && v.metadata.equals(from)),
-        (v) =>
-          (v.metadata instanceof VersionRange && v.metadata.satisfiedBy(to)) ||
-          (v.metadata instanceof ExtendedVersion && v.metadata.equals(to)),
-      )
-      Iif (path) {
-        for (let edge of path) {
-          Iif (edge.metadata) {
-            await edge.metadata({ effects })
-          }
-          await effects.setDataVersion({ version: edge.to.metadata.toString() })
-        }
-        return
-      }
-    }
-    throw new Error()
-  }
-  canMigrateFrom = once(() =>
-    Array.from(
-      this.graph().reverseBreadthFirstSearch(
-        (v) =>
-          (v.metadata instanceof VersionRange &&
-            v.metadata.satisfiedBy(this.currentVersion())) ||
-          (v.metadata instanceof ExtendedVersion &&
-            v.metadata.equals(this.currentVersion())),
-      ),
-    ).reduce(
-      (acc, x) =>
-        acc.or(
-          x.metadata instanceof VersionRange
-            ? x.metadata
-            : VersionRange.anchor("=", x.metadata),
-        ),
-      VersionRange.none(),
-    ),
-  )
-  canMigrateTo = once(() =>
-    Array.from(
-      this.graph().breadthFirstSearch(
-        (v) =>
-          (v.metadata instanceof VersionRange &&
-            v.metadata.satisfiedBy(this.currentVersion())) ||
-          (v.metadata instanceof ExtendedVersion &&
-            v.metadata.equals(this.currentVersion())),
-      ),
-    ).reduce(
-      (acc, x) =>
-        acc.or(
-          x.metadata instanceof VersionRange
-            ? x.metadata
-            : VersionRange.anchor("=", x.metadata),
-        ),
-      VersionRange.none(),
-    ),
-  )
-}
- 
-// prettier-ignore
-export type EnsureUniqueId<A, B = A, OtherVersions = never> =
-  B extends [] ? A : 
-  B extends [VersionInfo<infer Version>, ...infer Rest] ? (
-    Version extends OtherVersions ?  "One or more versions are not unique"[] :
-    EnsureUniqueId<A, Rest, Version | OtherVersions>
-  ) : "There exists a migration that is not a Migration"[]
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/version/VersionInfo.ts.html b/sdk/lib/coverage/lcov-report/lib/version/VersionInfo.ts.html deleted file mode 100644 index 661ac4f8a..000000000 --- a/sdk/lib/coverage/lcov-report/lib/version/VersionInfo.ts.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - Code coverage report for lib/version/VersionInfo.ts - - - - - - - - - -
-
-

- All files / - lib/version VersionInfo.ts -

-
-
- 54.54% - Statements - 6/11 -
- -
- 100% - Branches - 0/0 -
- -
- 75% - Functions - 3/4 -
- -
- 54.54% - Lines - 6/11 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79  -  -  -4x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -13x -  -13x -  -  -5x -  -  -  -  -  -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ValidateExVer } from "../exver"
-import * as T from "../types"
- 
-export const IMPOSSIBLE = Symbol("IMPOSSIBLE")
- 
-export type VersionOptions<Version extends string> = {
-  /** The version being described */
-  version: Version & ValidateExVer<Version>
-  /** The release notes for this version */
-  releaseNotes: string
-  /** Data migrations for this version */
-  migrations: {
-    /**
-     * A migration from the previous version
-     *    Leave blank to indicate no migration is necessary
-     *    Set to `IMPOSSIBLE` to indicate migrating from the previous version is not possible
-     */
-    up?: ((opts: { effects: T.Effects }) => Promise<void>) | typeof IMPOSSIBLE
-    /**
-     * A migration to the previous version
-     *    Leave blank to indicate no migration is necessary
-     *    Set to `IMPOSSIBLE` to indicate downgrades are prohibited
-     */
-    down?: ((opts: { effects: T.Effects }) => Promise<void>) | typeof IMPOSSIBLE
-    /**
-     * Additional migrations, such as fast-forward migrations, or migrations from other flavors
-     */
-    other?: Record<string, (opts: { effects: T.Effects }) => Promise<void>>
-  }
-}
- 
-export class VersionInfo<Version extends string> {
-  private _version: null | Version = null
-  private constructor(
-    readonly options: VersionOptions<Version> & { satisfies: string[] },
-  ) {}
-  static of<Version extends string>(options: VersionOptions<Version>) {
-    return new VersionInfo<Version>({ ...options, satisfies: [] })
-  }
-  /** Specify a version that this version is 100% backwards compatible to */
-  satisfies<V extends string>(
-    version: V & ValidateExVer<V>,
-  ): VersionInfo<Version> {
-    return new VersionInfo({
-      ...this.options,
-      satisfies: [...this.options.satisfies, version],
-    })
-  }
-}
- 
-function __type_tests() {
-  const version: VersionInfo<"1.0.0:0"> = VersionInfo.of({
-    version: "1.0.0:0",
-    releaseNotes: "",
-    migrations: {},
-  })
-    .satisfies("#other:1.0.0:0")
-    .satisfies("#other:2.0.0:0")
-    // @ts-expect-error
-    .satisfies("#other:2.f.0:0")
- 
-  let a: VersionInfo<"1.0.0:0"> = version
-  // @ts-expect-error
-  let b: VersionInfo<"1.0.0:3"> = version
- 
-  VersionInfo.of({
-    // @ts-expect-error
-    version: "test",
-    releaseNotes: "",
-    migrations: {},
-  })
-  VersionInfo.of({
-    // @ts-expect-error
-    version: "test" as string,
-    releaseNotes: "",
-    migrations: {},
-  })
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/lib/version/index.html b/sdk/lib/coverage/lcov-report/lib/version/index.html deleted file mode 100644 index dac48a22c..000000000 --- a/sdk/lib/coverage/lcov-report/lib/version/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - Code coverage report for lib/version - - - - - - - - - -
-
-

All files lib/version

-
-
- 62.82% - Statements - 49/78 -
- -
- 51.35% - Branches - 19/37 -
- -
- 68.42% - Functions - 13/19 -
- -
- 63.63% - Lines - 49/77 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- VersionGraph.ts - -
-
-
-
-
64.17%43/6751.35%19/3766.66%10/1565.15%43/66
- VersionInfo.ts - -
-
-
-
-
54.54%6/11100%0/075%3/454.54%6/11
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/prettify.css b/sdk/lib/coverage/lcov-report/prettify.css deleted file mode 100644 index 006492ca2..000000000 --- a/sdk/lib/coverage/lcov-report/prettify.css +++ /dev/null @@ -1,101 +0,0 @@ -.pln { - color: #000; -} -@media screen { - .str { - color: #080; - } - .kwd { - color: #008; - } - .com { - color: #800; - } - .typ { - color: #606; - } - .lit { - color: #066; - } - .pun, - .opn, - .clo { - color: #660; - } - .tag { - color: #008; - } - .atn { - color: #606; - } - .atv { - color: #080; - } - .dec, - .var { - color: #606; - } - .fun { - color: red; - } -} -@media print, projection { - .str { - color: #060; - } - .kwd { - color: #006; - font-weight: bold; - } - .com { - color: #600; - font-style: italic; - } - .typ { - color: #404; - font-weight: bold; - } - .lit { - color: #044; - } - .pun, - .opn, - .clo { - color: #440; - } - .tag { - color: #006; - font-weight: bold; - } - .atn { - color: #404; - } - .atv { - color: #060; - } -} -pre.prettyprint { - padding: 2px; - border: 1px solid #888; -} -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} -li.L0, -li.L1, -li.L2, -li.L3, -li.L5, -li.L6, -li.L7, -li.L8 { - list-style-type: none; -} -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - background: #eee; -} diff --git a/sdk/lib/coverage/lcov-report/prettify.js b/sdk/lib/coverage/lcov-report/prettify.js deleted file mode 100644 index 87aafe233..000000000 --- a/sdk/lib/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,1008 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION = true; -(function () { - var h = ["break,continue,do,else,for,if,return,while"]; - var u = [ - h, - "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile", - ]; - var p = [ - u, - "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof", - ]; - var l = [ - p, - "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where", - ]; - var x = [ - p, - "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient", - ]; - var R = [ - x, - "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var", - ]; - var r = - "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes"; - var w = [ - p, - "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN", - ]; - var s = - "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"; - var I = [ - h, - "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None", - ]; - var f = [ - h, - "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END", - ]; - var H = [h, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"]; - var A = [l, R, w, s + I, f, H]; - var e = - /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/; - var C = "str"; - var z = "kwd"; - var j = "com"; - var O = "typ"; - var G = "lit"; - var L = "pun"; - var F = "pln"; - var m = "tag"; - var E = "dec"; - var J = "src"; - var P = "atn"; - var n = "atv"; - var N = "nocode"; - var M = - "(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*"; - function k(Z) { - var ad = 0; - var S = false; - var ac = false; - for (var V = 0, U = Z.length; V < U; ++V) { - var ae = Z[V]; - if (ae.ignoreCase) { - ac = true; - } else { - if ( - /[a-z]/i.test( - ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ""), - ) - ) { - S = true; - ac = false; - break; - } - } - } - var Y = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 }; - function ab(ah) { - var ag = ah.charCodeAt(0); - if (ag !== 92) { - return ag; - } - var af = ah.charAt(1); - ag = Y[af]; - if (ag) { - return ag; - } else { - if ("0" <= af && af <= "7") { - return parseInt(ah.substring(1), 8); - } else { - if (af === "u" || af === "x") { - return parseInt(ah.substring(2), 16); - } else { - return ah.charCodeAt(1); - } - } - } - } - function T(af) { - if (af < 32) { - return (af < 16 ? "\\x0" : "\\x") + af.toString(16); - } - var ag = String.fromCharCode(af); - if (ag === "\\" || ag === "-" || ag === "[" || ag === "]") { - ag = "\\" + ag; - } - return ag; - } - function X(am) { - var aq = am - .substring(1, am.length - 1) - .match( - new RegExp( - "\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]", - "g", - ), - ); - var ak = []; - var af = []; - var ao = aq[0] === "^"; - for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) { - var ah = aq[ar]; - if (/\\[bdsw]/i.test(ah)) { - ak.push(ah); - } else { - var ag = ab(ah); - var al; - if (ar + 2 < aj && "-" === aq[ar + 1]) { - al = ab(aq[ar + 2]); - ar += 2; - } else { - al = ag; - } - af.push([ag, al]); - if (!(al < 65 || ag > 122)) { - if (!(al < 65 || ag > 90)) { - af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]); - } - if (!(al < 97 || ag > 122)) { - af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]); - } - } - } - } - af.sort(function (av, au) { - return av[0] - au[0] || au[1] - av[1]; - }); - var ai = []; - var ap = [NaN, NaN]; - for (var ar = 0; ar < af.length; ++ar) { - var at = af[ar]; - if (at[0] <= ap[1] + 1) { - ap[1] = Math.max(ap[1], at[1]); - } else { - ai.push((ap = at)); - } - } - var an = ["["]; - if (ao) { - an.push("^"); - } - an.push.apply(an, ak); - for (var ar = 0; ar < ai.length; ++ar) { - var at = ai[ar]; - an.push(T(at[0])); - if (at[1] > at[0]) { - if (at[1] + 1 > at[0]) { - an.push("-"); - } - an.push(T(at[1])); - } - } - an.push("]"); - return an.join(""); - } - function W(al) { - var aj = al.source.match( - new RegExp( - "(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)", - "g", - ), - ); - var ah = aj.length; - var an = []; - for (var ak = 0, am = 0; ak < ah; ++ak) { - var ag = aj[ak]; - if (ag === "(") { - ++am; - } else { - if ("\\" === ag.charAt(0)) { - var af = +ag.substring(1); - if (af && af <= am) { - an[af] = -1; - } - } - } - } - for (var ak = 1; ak < an.length; ++ak) { - if (-1 === an[ak]) { - an[ak] = ++ad; - } - } - for (var ak = 0, am = 0; ak < ah; ++ak) { - var ag = aj[ak]; - if (ag === "(") { - ++am; - if (an[am] === undefined) { - aj[ak] = "(?:"; - } - } else { - if ("\\" === ag.charAt(0)) { - var af = +ag.substring(1); - if (af && af <= am) { - aj[ak] = "\\" + an[am]; - } - } - } - } - for (var ak = 0, am = 0; ak < ah; ++ak) { - if ("^" === aj[ak] && "^" !== aj[ak + 1]) { - aj[ak] = ""; - } - } - if (al.ignoreCase && S) { - for (var ak = 0; ak < ah; ++ak) { - var ag = aj[ak]; - var ai = ag.charAt(0); - if (ag.length >= 2 && ai === "[") { - aj[ak] = X(ag); - } else { - if (ai !== "\\") { - aj[ak] = ag.replace(/[a-zA-Z]/g, function (ao) { - var ap = ao.charCodeAt(0); - return "[" + String.fromCharCode(ap & ~32, ap | 32) + "]"; - }); - } - } - } - } - return aj.join(""); - } - var aa = []; - for (var V = 0, U = Z.length; V < U; ++V) { - var ae = Z[V]; - if (ae.global || ae.multiline) { - throw new Error("" + ae); - } - aa.push("(?:" + W(ae) + ")"); - } - return new RegExp(aa.join("|"), ac ? "gi" : "g"); - } - function a(V) { - var U = /(?:^|\s)nocode(?:\s|$)/; - var X = []; - var T = 0; - var Z = []; - var W = 0; - var S; - if (V.currentStyle) { - S = V.currentStyle.whiteSpace; - } else { - if (window.getComputedStyle) { - S = document.defaultView - .getComputedStyle(V, null) - .getPropertyValue("white-space"); - } - } - var Y = S && "pre" === S.substring(0, 3); - function aa(ab) { - switch (ab.nodeType) { - case 1: - if (U.test(ab.className)) { - return; - } - for (var ae = ab.firstChild; ae; ae = ae.nextSibling) { - aa(ae); - } - var ad = ab.nodeName; - if ("BR" === ad || "LI" === ad) { - X[W] = "\n"; - Z[W << 1] = T++; - Z[(W++ << 1) | 1] = ab; - } - break; - case 3: - case 4: - var ac = ab.nodeValue; - if (ac.length) { - if (!Y) { - ac = ac.replace(/[ \t\r\n]+/g, " "); - } else { - ac = ac.replace(/\r\n?/g, "\n"); - } - X[W] = ac; - Z[W << 1] = T; - T += ac.length; - Z[(W++ << 1) | 1] = ab; - } - break; - } - } - aa(V); - return { sourceCode: X.join("").replace(/\n$/, ""), spans: Z }; - } - function B(S, U, W, T) { - if (!U) { - return; - } - var V = { sourceCode: U, basePos: S }; - W(V); - T.push.apply(T, V.decorations); - } - var v = /\S/; - function o(S) { - var V = undefined; - for (var U = S.firstChild; U; U = U.nextSibling) { - var T = U.nodeType; - V = T === 1 ? (V ? S : U) : T === 3 ? (v.test(U.nodeValue) ? S : V) : V; - } - return V === S ? undefined : V; - } - function g(U, T) { - var S = {}; - var V; - (function () { - var ad = U.concat(T); - var ah = []; - var ag = {}; - for (var ab = 0, Z = ad.length; ab < Z; ++ab) { - var Y = ad[ab]; - var ac = Y[3]; - if (ac) { - for (var ae = ac.length; --ae >= 0; ) { - S[ac.charAt(ae)] = Y; - } - } - var af = Y[1]; - var aa = "" + af; - if (!ag.hasOwnProperty(aa)) { - ah.push(af); - ag[aa] = null; - } - } - ah.push(/[\0-\uffff]/); - V = k(ah); - })(); - var X = T.length; - var W = function (ah) { - var Z = ah.sourceCode, - Y = ah.basePos; - var ad = [Y, F]; - var af = 0; - var an = Z.match(V) || []; - var aj = {}; - for (var ae = 0, aq = an.length; ae < aq; ++ae) { - var ag = an[ae]; - var ap = aj[ag]; - var ai = void 0; - var am; - if (typeof ap === "string") { - am = false; - } else { - var aa = S[ag.charAt(0)]; - if (aa) { - ai = ag.match(aa[1]); - ap = aa[0]; - } else { - for (var ao = 0; ao < X; ++ao) { - aa = T[ao]; - ai = ag.match(aa[1]); - if (ai) { - ap = aa[0]; - break; - } - } - if (!ai) { - ap = F; - } - } - am = ap.length >= 5 && "lang-" === ap.substring(0, 5); - if (am && !(ai && typeof ai[1] === "string")) { - am = false; - ap = J; - } - if (!am) { - aj[ag] = ap; - } - } - var ab = af; - af += ag.length; - if (!am) { - ad.push(Y + ab, ap); - } else { - var al = ai[1]; - var ak = ag.indexOf(al); - var ac = ak + al.length; - if (ai[2]) { - ac = ag.length - ai[2].length; - ak = ac - al.length; - } - var ar = ap.substring(5); - B(Y + ab, ag.substring(0, ak), W, ad); - B(Y + ab + ak, al, q(ar, al), ad); - B(Y + ab + ac, ag.substring(ac), W, ad); - } - } - ah.decorations = ad; - }; - return W; - } - function i(T) { - var W = [], - S = []; - if (T.tripleQuotedStrings) { - W.push([ - C, - /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, - null, - "'\"", - ]); - } else { - if (T.multiLineStrings) { - W.push([ - C, - /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, - null, - "'\"`", - ]); - } else { - W.push([ - C, - /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, - null, - "\"'", - ]); - } - } - if (T.verbatimStrings) { - S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); - } - var Y = T.hashComments; - if (Y) { - if (T.cStyleComments) { - if (Y > 1) { - W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#"]); - } else { - W.push([ - j, - /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, - null, - "#", - ]); - } - S.push([ - C, - /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, - null, - ]); - } else { - W.push([j, /^#[^\r\n]*/, null, "#"]); - } - } - if (T.cStyleComments) { - S.push([j, /^\/\/[^\r\n]*/, null]); - S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); - } - if (T.regexLiterals) { - var X = - "/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/"; - S.push(["lang-regex", new RegExp("^" + M + "(" + X + ")")]); - } - var V = T.types; - if (V) { - S.push([O, V]); - } - var U = ("" + T.keywords).replace(/^ | $/g, ""); - if (U.length) { - S.push([ - z, - new RegExp("^(?:" + U.replace(/[\s,]+/g, "|") + ")\\b"), - null, - ]); - } - W.push([F, /^\s+/, null, " \r\n\t\xA0"]); - S.push( - [G, /^@[a-z_$][a-z_$@0-9]*/i, null], - [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], - [F, /^[a-z_$][a-z_$@0-9]*/i, null], - [ - G, - new RegExp( - "^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*", - "i", - ), - null, - "0123456789", - ], - [F, /^\\[\s\S]?/, null], - [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null], - ); - return g(W, S); - } - var K = i({ - keywords: A, - hashComments: true, - cStyleComments: true, - multiLineStrings: true, - regexLiterals: true, - }); - function Q(V, ag) { - var U = /(?:^|\s)nocode(?:\s|$)/; - var ab = /\r\n?|\n/; - var ac = V.ownerDocument; - var S; - if (V.currentStyle) { - S = V.currentStyle.whiteSpace; - } else { - if (window.getComputedStyle) { - S = ac.defaultView - .getComputedStyle(V, null) - .getPropertyValue("white-space"); - } - } - var Z = S && "pre" === S.substring(0, 3); - var af = ac.createElement("LI"); - while (V.firstChild) { - af.appendChild(V.firstChild); - } - var W = [af]; - function ae(al) { - switch (al.nodeType) { - case 1: - if (U.test(al.className)) { - break; - } - if ("BR" === al.nodeName) { - ad(al); - if (al.parentNode) { - al.parentNode.removeChild(al); - } - } else { - for (var an = al.firstChild; an; an = an.nextSibling) { - ae(an); - } - } - break; - case 3: - case 4: - if (Z) { - var am = al.nodeValue; - var aj = am.match(ab); - if (aj) { - var ai = am.substring(0, aj.index); - al.nodeValue = ai; - var ah = am.substring(aj.index + aj[0].length); - if (ah) { - var ak = al.parentNode; - ak.insertBefore(ac.createTextNode(ah), al.nextSibling); - } - ad(al); - if (!ai) { - al.parentNode.removeChild(al); - } - } - } - break; - } - } - function ad(ak) { - while (!ak.nextSibling) { - ak = ak.parentNode; - if (!ak) { - return; - } - } - function ai(al, ar) { - var aq = ar ? al.cloneNode(false) : al; - var ao = al.parentNode; - if (ao) { - var ap = ai(ao, 1); - var an = al.nextSibling; - ap.appendChild(aq); - for (var am = an; am; am = an) { - an = am.nextSibling; - ap.appendChild(am); - } - } - return aq; - } - var ah = ai(ak.nextSibling, 0); - for (var aj; (aj = ah.parentNode) && aj.nodeType === 1; ) { - ah = aj; - } - W.push(ah); - } - for (var Y = 0; Y < W.length; ++Y) { - ae(W[Y]); - } - if (ag === (ag | 0)) { - W[0].setAttribute("value", ag); - } - var aa = ac.createElement("OL"); - aa.className = "linenums"; - var X = Math.max(0, (ag - 1) | 0) || 0; - for (var Y = 0, T = W.length; Y < T; ++Y) { - af = W[Y]; - af.className = "L" + ((Y + X) % 10); - if (!af.firstChild) { - af.appendChild(ac.createTextNode("\xA0")); - } - aa.appendChild(af); - } - V.appendChild(aa); - } - function D(ac) { - var aj = /\bMSIE\b/.test(navigator.userAgent); - var am = /\n/g; - var al = ac.sourceCode; - var an = al.length; - var V = 0; - var aa = ac.spans; - var T = aa.length; - var ah = 0; - var X = ac.decorations; - var Y = X.length; - var Z = 0; - X[Y] = an; - var ar, aq; - for (aq = ar = 0; aq < Y; ) { - if (X[aq] !== X[aq + 2]) { - X[ar++] = X[aq++]; - X[ar++] = X[aq++]; - } else { - aq += 2; - } - } - Y = ar; - for (aq = ar = 0; aq < Y; ) { - var at = X[aq]; - var ab = X[aq + 1]; - var W = aq + 2; - while (W + 2 <= Y && X[W + 1] === ab) { - W += 2; - } - X[ar++] = at; - X[ar++] = ab; - aq = W; - } - Y = X.length = ar; - var ae = null; - while (ah < T) { - var af = aa[ah]; - var S = aa[ah + 2] || an; - var ag = X[Z]; - var ap = X[Z + 2] || an; - var W = Math.min(S, ap); - var ak = aa[ah + 1]; - var U; - if (ak.nodeType !== 1 && (U = al.substring(V, W))) { - if (aj) { - U = U.replace(am, "\r"); - } - ak.nodeValue = U; - var ai = ak.ownerDocument; - var ao = ai.createElement("SPAN"); - ao.className = X[Z + 1]; - var ad = ak.parentNode; - ad.replaceChild(ao, ak); - ao.appendChild(ak); - if (V < S) { - aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S)); - ad.insertBefore(ak, ao.nextSibling); - } - } - V = W; - if (V >= S) { - ah += 2; - } - if (V >= ap) { - Z += 2; - } - } - } - var t = {}; - function c(U, V) { - for (var S = V.length; --S >= 0; ) { - var T = V[S]; - if (!t.hasOwnProperty(T)) { - t[T] = U; - } else { - if (window.console) { - console.warn("cannot override language handler %s", T); - } - } - } - } - function q(T, S) { - if (!(T && t.hasOwnProperty(T))) { - T = /^\s*]*(?:>|$)/], - [j, /^<\!--[\s\S]*?(?:-\->|$)/], - ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], - ["lang-", /^<%([\s\S]+?)(?:%>|$)/], - [L, /^(?:<[%?]|[%?]>)/], - ["lang-", /^]*>([\s\S]+?)<\/xmp\b[^>]*>/i], - ["lang-js", /^]*>([\s\S]*?)(<\/script\b[^>]*>)/i], - ["lang-css", /^]*>([\s\S]*?)(<\/style\b[^>]*>)/i], - ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i], - ], - ), - ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"], - ); - c( - g( - [ - [F, /^[\s]+/, null, " \t\r\n"], - [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, "\"'"], - ], - [ - [m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], - [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], - ["lang-uq.val", /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], - [L, /^[=<>\/]+/], - ["lang-js", /^on\w+\s*=\s*\"([^\"]+)\"/i], - ["lang-js", /^on\w+\s*=\s*\'([^\']+)\'/i], - ["lang-js", /^on\w+\s*=\s*([^\"\'>\s]+)/i], - ["lang-css", /^style\s*=\s*\"([^\"]+)\"/i], - ["lang-css", /^style\s*=\s*\'([^\']+)\'/i], - ["lang-css", /^style\s*=\s*([^\"\'>\s]+)/i], - ], - ), - ["in.tag"], - ); - c(g([], [[n, /^[\s\S]+/]]), ["uq.val"]); - c(i({ keywords: l, hashComments: true, cStyleComments: true, types: e }), [ - "c", - "cc", - "cpp", - "cxx", - "cyc", - "m", - ]); - c(i({ keywords: "null,true,false" }), ["json"]); - c( - i({ - keywords: R, - hashComments: true, - cStyleComments: true, - verbatimStrings: true, - types: e, - }), - ["cs"], - ); - c(i({ keywords: x, cStyleComments: true }), ["java"]); - c(i({ keywords: H, hashComments: true, multiLineStrings: true }), [ - "bsh", - "csh", - "sh", - ]); - c( - i({ - keywords: I, - hashComments: true, - multiLineStrings: true, - tripleQuotedStrings: true, - }), - ["cv", "py"], - ); - c( - i({ - keywords: s, - hashComments: true, - multiLineStrings: true, - regexLiterals: true, - }), - ["perl", "pl", "pm"], - ); - c( - i({ - keywords: f, - hashComments: true, - multiLineStrings: true, - regexLiterals: true, - }), - ["rb"], - ); - c(i({ keywords: w, cStyleComments: true, regexLiterals: true }), ["js"]); - c( - i({ - keywords: r, - hashComments: 3, - cStyleComments: true, - multilineStrings: true, - tripleQuotedStrings: true, - regexLiterals: true, - }), - ["coffee"], - ); - c(g([], [[C, /^[\s\S]+/]]), ["regex"]); - function d(V) { - var U = V.langExtension; - try { - var S = a(V.sourceNode); - var T = S.sourceCode; - V.sourceCode = T; - V.spans = S.spans; - V.basePos = 0; - q(U, T)(V); - D(V); - } catch (W) { - if ("console" in window) { - console.log(W && W.stack ? W.stack : W); - } - } - } - function y(W, V, U) { - var S = document.createElement("PRE"); - S.innerHTML = W; - if (U) { - Q(S, U); - } - var T = { langExtension: V, numberLines: U, sourceNode: S }; - d(T); - return S.innerHTML; - } - function b(ad) { - function Y(af) { - return document.getElementsByTagName(af); - } - var ac = [Y("pre"), Y("code"), Y("xmp")]; - var T = []; - for (var aa = 0; aa < ac.length; ++aa) { - for (var Z = 0, V = ac[aa].length; Z < V; ++Z) { - T.push(ac[aa][Z]); - } - } - ac = null; - var W = Date; - if (!W.now) { - W = { - now: function () { - return +new Date(); - }, - }; - } - var X = 0; - var S; - var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/; - var ae = /\bprettyprint\b/; - function U() { - var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity; - for (; X < T.length && W.now() < ag; X++) { - var aj = T[X]; - var ai = aj.className; - if (ai.indexOf("prettyprint") >= 0) { - var ah = ai.match(ab); - var am; - if (!ah && (am = o(aj)) && "CODE" === am.tagName) { - ah = am.className.match(ab); - } - if (ah) { - ah = ah[1]; - } - var al = false; - for (var ak = aj.parentNode; ak; ak = ak.parentNode) { - if ( - (ak.tagName === "pre" || - ak.tagName === "code" || - ak.tagName === "xmp") && - ak.className && - ak.className.indexOf("prettyprint") >= 0 - ) { - al = true; - break; - } - } - if (!al) { - var af = aj.className.match(/\blinenums\b(?::(\d+))?/); - af = af ? (af[1] && af[1].length ? +af[1] : true) : false; - if (af) { - Q(aj, af); - } - S = { langExtension: ah, sourceNode: aj, numberLines: af }; - d(S); - } - } - } - if (X < T.length) { - setTimeout(U, 250); - } else { - if (ad) { - ad(); - } - } - } - U(); - } - window.prettyPrintOne = y; - window.prettyPrint = b; - window.PR = { - createSimpleLexer: g, - registerLangHandler: c, - sourceDecorator: i, - PR_ATTRIB_NAME: P, - PR_ATTRIB_VALUE: n, - PR_COMMENT: j, - PR_DECLARATION: E, - PR_KEYWORD: z, - PR_LITERAL: G, - PR_NOCODE: N, - PR_PLAIN: F, - PR_PUNCTUATION: L, - PR_SOURCE: J, - PR_STRING: C, - PR_TAG: m, - PR_TYPE: O, - }; -})(); -PR.registerLangHandler( - PR.createSimpleLexer( - [], - [ - [PR.PR_DECLARATION, /^]*(?:>|$)/], - [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], - [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], - ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], - ["lang-", /^<%([\s\S]+?)(?:%>|$)/], - ["lang-", /^]*>([\s\S]+?)<\/xmp\b[^>]*>/i], - [ - "lang-handlebars", - /^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i, - ], - ["lang-js", /^]*>([\s\S]*?)(<\/script\b[^>]*>)/i], - ["lang-css", /^]*>([\s\S]*?)(<\/style\b[^>]*>)/i], - ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i], - [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/], - [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/], - [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/], - [PR.PR_COMMENT, /^{{![^}]*}}/], - ], - ), - ["handlebars", "hbs"], -); -PR.registerLangHandler( - PR.createSimpleLexer( - [[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, " \t\r\n\f"]], - [ - [ - PR.PR_STRING, - /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, - null, - ], - [ - PR.PR_STRING, - /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, - null, - ], - ["lang-css-str", /^url\(([^\)\"\']*)\)/i], - [ - PR.PR_KEYWORD, - /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i, - null, - ], - [ - "lang-css-kw", - /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i, - ], - [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], - [PR.PR_COMMENT, /^(?:)/], - [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], - [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i], - [ - PR.PR_PLAIN, - /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i, - ], - [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/], - ], - ), - ["css"], -); -PR.registerLangHandler( - PR.createSimpleLexer( - [], - [ - [ - PR.PR_KEYWORD, - /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i, - ], - ], - ), - ["css-kw"], -); -PR.registerLangHandler( - PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]), - ["css-str"], -); diff --git a/sdk/lib/coverage/lcov-report/sort-arrow-sprite.png b/sdk/lib/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316e..000000000 Binary files a/sdk/lib/coverage/lcov-report/sort-arrow-sprite.png and /dev/null differ diff --git a/sdk/lib/coverage/lcov-report/sorter.js b/sdk/lib/coverage/lcov-report/sorter.js deleted file mode 100644 index 3b6a92fb5..000000000 --- a/sdk/lib/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,191 +0,0 @@ -/* eslint-disable */ -var addSorting = (function () { - "use strict"; - var cols, - currentSort = { - index: 0, - desc: false, - }; - - // returns the summary table element - function getTable() { - return document.querySelector(".coverage-summary"); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector("thead tr"); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector("tbody"); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll("th")[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById("fileSearch").value; - const rows = document.getElementsByTagName("tbody")[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if (row.textContent.toLowerCase().includes(searchValue.toLowerCase())) { - row.style.display = ""; - } else { - row.style.display = "none"; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById("filterTemplate"); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById("fileSearch").oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll("th"), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute("data-col"), - sortable: !colNode.getAttribute("data-nosort"), - type: colNode.getAttribute("data-type") || "string", - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === "number"; - colNode.innerHTML = colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll("td"), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute("data-value"); - if (col.type === "number") { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll("tr"), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function (a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector(".coverage-summary tbody"), - rowNodes = tableBody.querySelectorAll("tr"), - rows = [], - i; - - if (desc) { - finalSorter = function (a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, "").replace(/ sorted-desc$/, ""); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? " sorted-desc" - : " sorted"; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function () { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector(".sorter").parentElement; - if (el.addEventListener) { - el.addEventListener("click", ithSorter(i)); - } else { - el.attachEvent("onclick", ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function () { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener("load", addSorting); diff --git a/sdk/lib/coverage/lcov-report/util/deepEqual.ts.html b/sdk/lib/coverage/lcov-report/util/deepEqual.ts.html deleted file mode 100644 index dc880edd0..000000000 --- a/sdk/lib/coverage/lcov-report/util/deepEqual.ts.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - Code coverage report for util/deepEqual.ts - - - - - - - - - -
-
-

- All files / - util deepEqual.ts -

-
-
- 66.66% - Statements - 14/21 -
- -
- 16.66% - Branches - 1/6 -
- -
- 100% - Functions - 2/2 -
- -
- 85.71% - Lines - 12/14 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -201x -  -1x -11x -3x -3x -  -  -  -3x -6x -3x -5x -10x -10x -  -  -3x -  - 
import { object } from "ts-matches"
- 
-export function deepEqual(...args: unknown[]) {
-  if (!object.test(args[args.length - 1])) return args[args.length - 1]
-  const objects = args.filter(object.test)
-  Iif (objects.length === 0) {
-    for (const x of args) Iif (x !== args[0]) return false
-    return true
-  }
-  Iif (objects.length !== args.length) return false
-  const allKeys = new Set(objects.flatMap((x) => Object.keys(x)))
-  for (const key of allKeys) {
-    for (const x of objects) {
-      Iif (!(key in x)) return false
-      Iif (!deepEqual((objects[0] as any)[key], (x as any)[key])) return false
-    }
-  }
-  return true
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/deepMerge.ts.html b/sdk/lib/coverage/lcov-report/util/deepMerge.ts.html deleted file mode 100644 index f91a07cf5..000000000 --- a/sdk/lib/coverage/lcov-report/util/deepMerge.ts.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for util/deepMerge.ts - - - - - - - - - -
-
-

- All files / - util deepMerge.ts -

-
-
- 94.44% - Statements - 17/18 -
- -
- 80% - Branches - 4/5 -
- -
- 100% - Functions - 4/4 -
- -
- 100% - Lines - 13/13 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -181x -  -1x -13x -13x -14x -7x -5x -11x -5x -8x -18x -  -8x -  -5x -  - 
import { object } from "ts-matches"
- 
-export function deepMerge(...args: unknown[]): unknown {
-  const lastItem = (args as any)[args.length - 1]
-  if (!object.test(lastItem)) return lastItem
-  const objects = args.filter(object.test).filter((x) => !Array.isArray(x))
-  if (objects.length === 0) return lastItem as any
-  Iif (objects.length === 1) objects.unshift({})
-  const allKeys = new Set(objects.flatMap((x) => Object.keys(x)))
-  for (const key of allKeys) {
-    const filteredValues = objects.flatMap((x) =>
-      key in x ? [(x as any)[key]] : [],
-    )
-    ;(objects as any)[0][key] = deepMerge(...filteredValues)
-  }
-  return objects[0] as any
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/getServiceInterface.ts.html b/sdk/lib/coverage/lcov-report/util/getServiceInterface.ts.html deleted file mode 100644 index 407d1e4d0..000000000 --- a/sdk/lib/coverage/lcov-report/util/getServiceInterface.ts.html +++ /dev/null @@ -1,936 +0,0 @@ - - - - Code coverage report for util/getServiceInterface.ts - - - - - - - - - -
-
-

- All files / - util getServiceInterface.ts -

-
-
- 20.87% - Statements - 19/91 -
- -
- 0% - Branches - 0/32 -
- -
- 2.5% - Functions - 1/40 -
- -
- 19.27% - Lines - 16/83 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -8x -8x -8x -8x -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -1x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  - 
import { ServiceInterfaceType } from "../StartSdk"
-import { knownProtocols } from "../interfaces/Host"
-import {
-  AddressInfo,
-  Effects,
-  Host,
-  HostAddress,
-  Hostname,
-  HostnameInfo,
-  HostnameInfoIp,
-  HostnameInfoOnion,
-  IpInfo,
-} from "../types"
- 
-export type UrlString = string
-export type HostId = string
- 
-const getHostnameRegex = /^(\w+:\/\/)?([^\/\:]+)(:\d{1,3})?(\/)?/
-export const getHostname = (url: string): Hostname | null => {
-  const founds = url.match(getHostnameRegex)?.[2]
-  Iif (!founds) return null
-  const parts = founds.split("@")
-  const last = parts[parts.length - 1] as Hostname | null
-  return last
-}
- 
-export type Filled = {
-  hostnames: HostnameInfo[]
-  onionHostnames: HostnameInfo[]
-  localHostnames: HostnameInfo[]
-  ipHostnames: HostnameInfo[]
-  ipv4Hostnames: HostnameInfo[]
-  ipv6Hostnames: HostnameInfo[]
-  nonIpHostnames: HostnameInfo[]
- 
-  urls: UrlString[]
-  onionUrls: UrlString[]
-  localUrls: UrlString[]
-  ipUrls: UrlString[]
-  ipv4Urls: UrlString[]
-  ipv6Urls: UrlString[]
-  nonIpUrls: UrlString[]
-}
-export type FilledAddressInfo = AddressInfo & Filled
-export type ServiceInterfaceFilled = {
-  id: string
-  /** The title of this field to be displayed */
-  name: string
-  /** Human readable description, used as tooltip usually */
-  description: string
-  /** Whether or not the interface has a primary URL */
-  hasPrimary: boolean
-  /** Whether or not the interface disabled */
-  disabled: boolean
-  /** Whether or not to mask the URIs for this interface. Useful if the URIs contain sensitive information, such as a password, macaroon, or API key */
-  masked: boolean
-  /** Information about the host for this binding */
-  host: Host
-  /** URI information */
-  addressInfo: FilledAddressInfo
-  /** Indicates if we are a ui/p2p/api for the kind of interface that this is representing */
-  type: ServiceInterfaceType
-  /** The primary hostname for the service, as chosen by the user */
-  primaryHostname: Hostname | null
-  /** The primary URL for the service, as chosen by the user */
-  primaryUrl: UrlString | null
-}
-const either =
-  <A>(...args: ((a: A) => boolean)[]) =>
-  (a: A) =>
-    args.some((x) => x(a))
-const negate =
-  <A>(fn: (a: A) => boolean) =>
-  (a: A) =>
-    !fn(a)
-const unique = <A>(values: A[]) => Array.from(new Set(values))
-export const addressHostToUrl = (
-  { scheme, sslScheme, username, suffix }: AddressInfo,
-  host: HostnameInfo,
-): UrlString[] => {
-  const res = []
-  const fmt = (scheme: string | null, host: HostnameInfo, port: number) => {
-    const excludePort =
-      scheme &&
-      scheme in knownProtocols &&
-      port === knownProtocols[scheme as keyof typeof knownProtocols].defaultPort
-    let hostname
-    if (host.kind === "onion") {
-      hostname = host.hostname.value
-    } else Iif (host.kind === "ip") {
-      if (host.hostname.kind === "domain") {
-        hostname = `${host.hostname.subdomain ? `${host.hostname.subdomain}.` : ""}${host.hostname.domain}`
-      } else {
-        hostname = host.hostname.value
-      }
-    }
-    return `${scheme ? `${scheme}://` : ""}${
-      username ? `${username}@` : ""
-    }${hostname}${excludePort ? "" : `:${port}`}${suffix}`
-  }
-  Iif (host.hostname.sslPort !== null) {
-    res.push(fmt(sslScheme, host, host.hostname.sslPort))
-  }
-  Iif (host.hostname.port !== null) {
-    res.push(fmt(scheme, host, host.hostname.port))
-  }
- 
-  return res
-}
- 
-export const filledAddress = (
-  host: Host,
-  addressInfo: AddressInfo,
-): FilledAddressInfo => {
-  const toUrl = addressHostToUrl.bind(null, addressInfo)
-  const hostnames = host.hostnameInfo[addressInfo.internalPort]
- 
-  return {
-    ...addressInfo,
-    hostnames,
-    get onionHostnames() {
-      return hostnames.filter((h) => h.kind === "onion")
-    },
-    get localHostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "local",
-      )
-    },
-    get ipHostnames() {
-      return hostnames.filter(
-        (h) =>
-          h.kind === "ip" &&
-          (h.hostname.kind === "ipv4" || h.hostname.kind === "ipv6"),
-      )
-    },
-    get ipv4Hostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "ipv4",
-      )
-    },
-    get ipv6Hostnames() {
-      return hostnames.filter(
-        (h) => h.kind === "ip" && h.hostname.kind === "ipv6",
-      )
-    },
-    get nonIpHostnames() {
-      return hostnames.filter(
-        (h) =>
-          h.kind === "ip" &&
-          h.hostname.kind !== "ipv4" &&
-          h.hostname.kind !== "ipv6",
-      )
-    },
-    get urls() {
-      return this.hostnames.flatMap(toUrl)
-    },
-    get onionUrls() {
-      return this.onionHostnames.flatMap(toUrl)
-    },
-    get localUrls() {
-      return this.localHostnames.flatMap(toUrl)
-    },
-    get ipUrls() {
-      return this.ipHostnames.flatMap(toUrl)
-    },
-    get ipv4Urls() {
-      return this.ipv4Hostnames.flatMap(toUrl)
-    },
-    get ipv6Urls() {
-      return this.ipv6Hostnames.flatMap(toUrl)
-    },
-    get nonIpUrls() {
-      return this.nonIpHostnames.flatMap(toUrl)
-    },
-  }
-}
- 
-const makeInterfaceFilled = async ({
-  effects,
-  id,
-  packageId,
-  callback,
-}: {
-  effects: Effects
-  id: string
-  packageId: string | null
-  callback: () => void
-}) => {
-  const serviceInterfaceValue = await effects.getServiceInterface({
-    serviceInterfaceId: id,
-    packageId,
-    callback,
-  })
-  const hostId = serviceInterfaceValue.addressInfo.hostId
-  const host = await effects.getHostInfo({
-    packageId,
-    hostId,
-    callback,
-  })
-  const primaryUrl = await effects
-    .getPrimaryUrl({
-      serviceInterfaceId: id,
-      packageId,
-      callback,
-    })
-    .catch((e) => null)
- 
-  const interfaceFilled: ServiceInterfaceFilled = {
-    ...serviceInterfaceValue,
-    primaryUrl: primaryUrl,
-    host,
-    addressInfo: filledAddress(host, serviceInterfaceValue.addressInfo),
-    get primaryHostname() {
-      Iif (primaryUrl == null) return null
-      return getHostname(primaryUrl)
-    },
-  }
-  return interfaceFilled
-}
- 
-export class GetServiceInterface {
-  constructor(
-    readonly effects: Effects,
-    readonly opts: { id: string; packageId: string | null },
-  ) {}
- 
-  /**
-   * Returns the value of Store at the provided path. Restart the service if the value changes
-   */
-  async const() {
-    const { id, packageId } = this.opts
-    const callback = this.effects.restart
-    const interfaceFilled: ServiceInterfaceFilled = await makeInterfaceFilled({
-      effects: this.effects,
-      id,
-      packageId,
-      callback,
-    })
- 
-    return interfaceFilled
-  }
-  /**
-   * Returns the value of ServiceInterfacesFilled at the provided path. Does nothing if the value changes
-   */
-  async once() {
-    const { id, packageId } = this.opts
-    const callback = () => {}
-    const interfaceFilled: ServiceInterfaceFilled = await makeInterfaceFilled({
-      effects: this.effects,
-      id,
-      packageId,
-      callback,
-    })
- 
-    return interfaceFilled
-  }
- 
-  /**
-   * Watches the value of ServiceInterfacesFilled at the provided path. Takes a custom callback function to run whenever the value changes
-   */
-  async *watch() {
-    const { id, packageId } = this.opts
-    while (true) {
-      let callback: () => void = () => {}
-      const waitForNext = new Promise<void>((resolve) => {
-        callback = resolve
-      })
-      yield await makeInterfaceFilled({
-        effects: this.effects,
-        id,
-        packageId,
-        callback,
-      })
-      await waitForNext
-    }
-  }
-}
-export function getServiceInterface(
-  effects: Effects,
-  opts: { id: string; packageId: string | null },
-) {
-  return new GetServiceInterface(effects, opts)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/index.html b/sdk/lib/coverage/lcov-report/util/index.html deleted file mode 100644 index 2068b0cf7..000000000 --- a/sdk/lib/coverage/lcov-report/util/index.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - Code coverage report for util - - - - - - - - - -
-
-

All files util

-
-
- 42.85% - Statements - 63/147 -
- -
- 19.6% - Branches - 10/51 -
- -
- 22.64% - Functions - 12/53 -
- -
- 41.6% - Lines - 52/125 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- File - - Statements - - Branches - - Functions - - Lines -
- deepEqual.ts - -
-
-
-
-
66.66%14/2116.66%1/6100%2/285.71%12/14
- deepMerge.ts - -
-
-
-
-
94.44%17/1880%4/5100%4/4100%13/13
- getServiceInterface.ts - -
-
-
-
-
20.87%19/910%0/322.5%1/4019.27%16/83
- once.ts - -
-
-
-
-
50%3/60%0/150%1/250%3/6
- splitCommand.ts - -
-
-
-
-
100%9/9100%5/5100%4/4100%7/7
- stringFromStdErrOut.ts - -
-
-
-
-
50%1/20%0/20%0/150%1/2
-
-
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/once.ts.html b/sdk/lib/coverage/lcov-report/util/once.ts.html deleted file mode 100644 index f22c0ba10..000000000 --- a/sdk/lib/coverage/lcov-report/util/once.ts.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - Code coverage report for util/once.ts - - - - - - - - - -
-
-

- All files / - util once.ts -

-
-
- 50% - Statements - 3/6 -
- -
- 0% - Branches - 0/1 -
- -
- 50% - Functions - 1/2 -
- -
- 50% - Lines - 3/6 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -101x -1x -1x -  -  -  -  -  -  - 
export function once<B>(fn: () => B): () => B {
-  let result: [B] | [] = []
-  return () => {
-    Iif (!result.length) {
-      result = [fn()]
-    }
-    return result[0]
-  }
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/splitCommand.ts.html b/sdk/lib/coverage/lcov-report/util/splitCommand.ts.html deleted file mode 100644 index ac41a76a0..000000000 --- a/sdk/lib/coverage/lcov-report/util/splitCommand.ts.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for util/splitCommand.ts - - - - - - - - - -
-
-

- All files / - util splitCommand.ts -

-
-
- 100% - Statements - 9/9 -
- -
- 100% - Branches - 5/5 -
- -
- 100% - Functions - 4/4 -
- -
- 100% - Lines - 7/7 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -181x -  -  -1x -  -  -13x -9x -  -  -15x -  -16x -  -92x -  -  - 
import { arrayOf, string } from "ts-matches"
-import { ValidIfNoStupidEscape } from "../types"
- 
-export const splitCommand = (
-  command: string | [string, ...string[]],
-): string[] => {
-  if (arrayOf(string).test(command)) return command
-  return String(command)
-    .split('"')
-    .flatMap((x, i) =>
-      i % 2 !== 0
-        ? [x]
-        : x.split("'").flatMap((x, i) => (i % 2 !== 0 ? [x] : x.split(" "))),
-    )
-    .map((x) => x.trim())
-    .filter(Boolean)
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov-report/util/stringFromStdErrOut.ts.html b/sdk/lib/coverage/lcov-report/util/stringFromStdErrOut.ts.html deleted file mode 100644 index 5ef2fe05a..000000000 --- a/sdk/lib/coverage/lcov-report/util/stringFromStdErrOut.ts.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - Code coverage report for util/stringFromStdErrOut.ts - - - - - - - - - -
-
-

- All files / - util stringFromStdErrOut.ts -

-
-
- 50% - Statements - 1/2 -
- -
- 0% - Branches - 0/2 -
- -
- 0% - Functions - 0/1 -
- -
- 50% - Lines - 1/2 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -71x -  -  -  -  -  - 
export async function stringFromStdErrOut(x: {
-  stdout: string
-  stderr: string
-}) {
-  return x?.stderr ? Promise.reject(x.stderr) : x.stdout
-}
- 
- -
- -
- - - - - - - - diff --git a/sdk/lib/coverage/lcov.info b/sdk/lib/coverage/lcov.info deleted file mode 100644 index bb8f64179..000000000 --- a/sdk/lib/coverage/lcov.info +++ /dev/null @@ -1,5539 +0,0 @@ -TN: -SF:lib/Dependency.ts -FN:4,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:3,5 -DA:5,0 -LF:2 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/StartSdk.ts -FN:99,removeCallbackTypes -FN:100,(anonymous_8) -FN:116,(anonymous_9) -FN:117,(anonymous_10) -FN:120,(anonymous_11) -FN:123,(anonymous_12) -FN:127,(anonymous_13) -FN:159,(anonymous_14) -FN:160,(anonymous_15) -FN:161,(anonymous_16) -FN:162,(anonymous_17) -FN:163,(anonymous_18) -FN:164,(anonymous_19) -FN:165,(anonymous_20) -FN:166,(anonymous_21) -FN:168,(anonymous_22) -FN:169,(anonymous_23) -FN:171,(anonymous_24) -FN:173,(anonymous_25) -FN:175,(anonymous_26) -FN:176,(anonymous_27) -FN:177,(anonymous_28) -FN:178,(anonymous_29) -FN:179,(anonymous_30) -FN:180,(anonymous_31) -FN:181,(anonymous_32) -FN:195,(anonymous_33) -FN:201,(anonymous_34) -FN:206,(anonymous_35) -FN:208,(anonymous_36) -FN:216,(anonymous_37) -FN:226,(anonymous_38) -FN:233,(anonymous_39) -FN:249,(anonymous_40) -FN:252,(anonymous_41) -FN:266,(anonymous_42) -FN:291,(anonymous_43) -FN:306,(anonymous_44) -FN:309,(anonymous_45) -FN:318,(anonymous_46) -FN:343,(anonymous_47) -FN:348,(anonymous_48) -FN:358,(anonymous_49) -FN:360,(anonymous_50) -FN:362,(anonymous_51) -FN:370,(anonymous_52) -FN:378,(anonymous_53) -FN:386,(anonymous_54) -FN:397,(anonymous_55) -FN:403,(anonymous_56) -FN:407,(anonymous_57) -FN:429,(anonymous_58) -FN:448,(anonymous_59) -FN:449,(anonymous_60) -FN:456,(anonymous_61) -FN:463,(anonymous_62) -FN:466,(anonymous_63) -FN:468,(anonymous_64) -FN:477,(anonymous_65) -FN:482,(anonymous_66) -FN:485,(anonymous_67) -FN:488,(anonymous_68) -FN:492,(anonymous_69) -FN:499,(anonymous_70) -FN:508,(anonymous_71) -FN:539,(anonymous_72) -FN:555,(anonymous_73) -FN:595,(anonymous_74) -FN:607,(anonymous_75) -FN:628,(anonymous_76) -FN:644,(anonymous_77) -FN:663,(anonymous_78) -FN:676,(anonymous_79) -FN:692,(anonymous_80) -FN:705,(anonymous_81) -FN:720,(anonymous_82) -FN:739,(anonymous_83) -FN:757,(anonymous_84) -FN:772,runCommand -FN:785,(anonymous_86) -FN:788,nullifyProperties -FN:790,(anonymous_88) -FN:793,nullifyProperties_ -FN:801,(anonymous_90) -FNF:84 -FNH:10 -FNDA:0,removeCallbackTypes -FNDA:0,(anonymous_8) -FNDA:18,(anonymous_9) -FNDA:6,(anonymous_10) -FNDA:6,(anonymous_11) -FNDA:6,(anonymous_12) -FNDA:6,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:1,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -FNDA:0,(anonymous_57) -FNDA:0,(anonymous_58) -FNDA:0,(anonymous_59) -FNDA:0,(anonymous_60) -FNDA:0,(anonymous_61) -FNDA:0,(anonymous_62) -FNDA:0,(anonymous_63) -FNDA:0,(anonymous_64) -FNDA:0,(anonymous_65) -FNDA:0,(anonymous_66) -FNDA:0,(anonymous_67) -FNDA:0,(anonymous_68) -FNDA:32,(anonymous_69) -FNDA:0,(anonymous_70) -FNDA:1,(anonymous_71) -FNDA:4,(anonymous_72) -FNDA:0,(anonymous_73) -FNDA:0,(anonymous_74) -FNDA:0,(anonymous_75) -FNDA:0,(anonymous_76) -FNDA:0,(anonymous_77) -FNDA:0,(anonymous_78) -FNDA:0,(anonymous_79) -FNDA:0,(anonymous_80) -FNDA:0,(anonymous_81) -FNDA:0,(anonymous_82) -FNDA:0,(anonymous_83) -FNDA:4,(anonymous_84) -FNDA:0,runCommand -FNDA:0,(anonymous_86) -FNDA:0,nullifyProperties -FNDA:0,(anonymous_88) -FNDA:0,nullifyProperties_ -FNDA:0,(anonymous_90) -DA:1,5 -DA:2,5 -DA:12,5 -DA:13,5 -DA:24,5 -DA:25,5 -DA:26,5 -DA:27,5 -DA:28,5 -DA:29,5 -DA:30,5 -DA:31,5 -DA:32,5 -DA:33,5 -DA:34,5 -DA:35,5 -DA:36,5 -DA:37,5 -DA:38,5 -DA:39,5 -DA:40,5 -DA:41,5 -DA:42,5 -DA:47,5 -DA:52,5 -DA:54,5 -DA:55,5 -DA:56,5 -DA:57,5 -DA:58,5 -DA:62,5 -DA:63,5 -DA:64,5 -DA:65,5 -DA:66,5 -DA:67,5 -DA:69,5 -DA:71,5 -DA:72,5 -DA:77,5 -DA:80,5 -DA:95,5 -DA:96,5 -DA:97,5 -DA:100,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:115,5 -DA:116,18 -DA:118,6 -DA:121,6 -DA:124,6 -DA:158,6 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:165,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:172,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:184,6 -DA:196,0 -DA:205,0 -DA:207,0 -DA:212,0 -DA:221,0 -DA:230,0 -DA:238,0 -DA:249,0 -DA:263,0 -DA:282,0 -DA:283,0 -DA:305,0 -DA:307,0 -DA:314,0 -DA:335,0 -DA:344,0 -DA:349,0 -DA:359,0 -DA:361,0 -DA:369,0 -DA:377,0 -DA:385,0 -DA:396,1 -DA:403,0 -DA:404,0 -DA:405,0 -DA:412,0 -DA:440,0 -DA:448,0 -DA:455,0 -DA:461,0 -DA:466,0 -DA:467,0 -DA:469,0 -DA:478,0 -DA:484,0 -DA:487,0 -DA:489,0 -DA:496,32 -DA:504,0 -DA:529,1 -DA:554,4 -DA:580,0 -DA:606,0 -DA:627,0 -DA:643,0 -DA:662,0 -DA:675,0 -DA:691,0 -DA:704,0 -DA:719,0 -DA:733,0 -DA:754,0 -DA:766,4 -DA:772,5 -DA:780,0 -DA:781,0 -DA:785,0 -DA:789,0 -DA:790,0 -DA:794,0 -DA:795,0 -DA:797,0 -DA:801,0 -LF:142 -LH:57 -BRDA:101,0,0,0 -BRDA:101,0,1,0 -BRDA:101,1,0,0 -BRDA:101,1,1,0 -BRDA:104,2,0,0 -BRDA:107,3,0,0 -BRDA:415,4,0,0 -BRDA:415,4,1,0 -BRDA:784,5,0,0 -BRDA:784,5,1,0 -BRDA:794,6,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:lib/actions/createAction.ts -FN:18,(anonymous_0) -FN:33,(anonymous_1) -FN:55,(anonymous_2) -FN:62,(anonymous_3) -FN:69,(anonymous_4) -FN:75,(anonymous_5) -FN:82,(anonymous_6) -FNF:7 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:9,5 -DA:19,0 -DA:20,0 -DA:25,0 -DA:29,0 -DA:30,0 -DA:47,0 -DA:55,0 -DA:56,0 -DA:62,0 -DA:63,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:76,0 -DA:83,0 -DA:89,5 -LF:17 -LH:2 -BRDA:30,0,0,0 -BRDA:70,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/actions/setupActions.ts -FN:5,setupActions -FN:8,(anonymous_1) -FN:19,(anonymous_2) -FN:22,(anonymous_3) -FN:24,(anonymous_4) -FNF:5 -FNH:0 -FNDA:0,setupActions -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:5,5 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:28,0 -LF:11 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/backup/Backups.ts -FN:46,(anonymous_6) -FN:50,(anonymous_7) -FN:54,(anonymous_8) -FN:62,(anonymous_9) -FN:67,(anonymous_10) -FN:74,(anonymous_11) -FN:81,(anonymous_12) -FN:83,(anonymous_13) -FN:91,(anonymous_14) -FN:92,(anonymous_15) -FN:97,(anonymous_16) -FN:98,(anonymous_17) -FN:116,(anonymous_18) -FN:137,notEmptyPath -FN:140,runRsync -FN:177,(anonymous_21) -FN:186,(anonymous_22) -FN:190,(anonymous_23) -FN:197,(anonymous_24) -FN:198,(anonymous_25) -FN:206,(anonymous_26) -FN:207,(anonymous_27) -FNF:22 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,notEmptyPath -FNDA:0,runRsync -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -DA:3,5 -DA:5,5 -DA:8,5 -DA:43,5 -DA:44,5 -DA:47,0 -DA:48,0 -DA:53,0 -DA:54,0 -DA:65,0 -DA:70,0 -DA:73,5 -DA:75,0 -DA:79,0 -DA:82,0 -DA:83,0 -DA:92,0 -DA:93,0 -DA:95,0 -DA:98,0 -DA:101,0 -DA:102,0 -DA:112,0 -DA:114,0 -DA:116,0 -DA:119,0 -DA:120,0 -DA:130,0 -DA:132,0 -DA:134,0 -DA:138,0 -DA:154,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:161,0 -DA:162,0 -DA:164,0 -DA:165,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:186,0 -DA:187,0 -DA:190,0 -DA:191,0 -DA:192,0 -DA:193,0 -DA:195,0 -DA:197,0 -DA:198,0 -DA:199,0 -DA:200,0 -DA:202,0 -DA:206,0 -DA:207,0 -DA:208,0 -LF:70 -LH:6 -BRDA:47,0,0,0 -BRDA:48,1,0,0 -BRDA:158,2,0,0 -BRDA:161,3,0,0 -BRDA:164,4,0,0 -BRDA:181,5,0,0 -BRDA:192,6,0,0 -BRDA:199,7,0,0 -BRDA:199,7,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:lib/backup/setupBackups.ts -FN:10,setupBackups -FN:28,(anonymous_1) -FN:29,(anonymous_2) -FN:35,(anonymous_3) -FN:36,(anonymous_4) -FNF:5 -FNH:0 -FNDA:0,setupBackups -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,5 -DA:10,5 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:44,0 -LF:18 -LH:2 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/config/configConstants.ts -FN:51,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,5 -DA:3,5 -DA:4,5 -DA:5,5 -DA:6,5 -DA:11,5 -DA:50,5 -DA:52,0 -DA:53,0 -LF:9 -LH:7 -BRDA:53,0,0,0 -BRDA:53,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/config/configTypes.ts -FN:267,isValueSpecListOf -FNF:1 -FNH:1 -FNDA:3,isValueSpecListOf -DA:267,1 -DA:271,3 -LF:2 -LH:2 -BRDA:271,0,0,3 -BRDA:271,0,1,3 -BRF:2 -BRH:2 -end_of_record -TN: -SF:lib/config/setupConfig.ts -FN:43,setupConfig -FN:58,(anonymous_2) -FN:75,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,setupConfig -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:5,5 -DA:43,5 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:63,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:71,0 -DA:72,0 -DA:76,0 -DA:77,0 -DA:87,5 -LF:15 -LH:3 -BRDA:59,0,0,0 -BRDA:71,1,0,0 -BRDA:76,2,0,0 -BRDA:76,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:lib/config/builder/config.ts -FN:81,(anonymous_0) -FN:87,(anonymous_1) -FN:97,(anonymous_2) -FN:134,(anonymous_3) -FNF:4 -FNH:3 -FNDA:62,(anonymous_0) -FNDA:6,(anonymous_1) -FNDA:62,(anonymous_2) -FNDA:0,(anonymous_3) -DA:5,6 -DA:80,6 -DA:82,62 -DA:85,62 -DA:88,6 -DA:91,6 -DA:92,5 -DA:94,6 -DA:101,62 -DA:104,62 -DA:105,131 -DA:107,62 -DA:108,62 -DA:135,0 -LF:14 -LH:13 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/config/builder/list.ts -FN:25,(anonymous_0) -FN:29,(anonymous_1) -FN:51,(anonymous_2) -FN:76,(anonymous_3) -FN:102,(anonymous_4) -FN:128,(anonymous_5) -FN:144,(anonymous_6) -FN:185,(anonymous_7) -FNF:8 -FNH:7 -FNDA:11,(anonymous_0) -FNDA:4,(anonymous_1) -FNDA:1,(anonymous_2) -FNDA:1,(anonymous_3) -FNDA:1,(anonymous_4) -FNDA:6,(anonymous_5) -FNDA:1,(anonymous_6) -FNDA:0,(anonymous_7) -DA:10,6 -DA:24,6 -DA:26,11 -DA:27,11 -DA:51,4 -DA:52,1 -DA:62,1 -DA:73,1 -DA:102,1 -DA:103,1 -DA:104,1 -DA:114,1 -DA:125,1 -DA:144,6 -DA:145,1 -DA:146,1 -DA:147,1 -DA:154,1 -DA:159,1 -DA:186,0 -LF:20 -LH:19 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/config/builder/value.ts -FN:35,requiredLikeToAbove -FN:63,(anonymous_1) -FN:65,asRequiredParser -FN:99,(anonymous_3) -FN:103,(anonymous_4) -FN:113,(anonymous_5) -FN:124,(anonymous_6) -FN:137,(anonymous_7) -FN:148,(anonymous_8) -FN:169,(anonymous_9) -FN:188,(anonymous_10) -FN:213,(anonymous_11) -FN:233,(anonymous_12) -FN:245,(anonymous_13) -FN:260,(anonymous_14) -FN:275,(anonymous_15) -FN:290,(anonymous_16) -FN:307,(anonymous_17) -FN:324,(anonymous_18) -FN:343,(anonymous_19) -FN:361,(anonymous_20) -FN:371,(anonymous_21) -FN:385,(anonymous_22) -FN:397,(anonymous_23) -FN:410,(anonymous_24) -FN:424,(anonymous_25) -FN:440,(anonymous_26) -FN:456,(anonymous_27) -FN:472,(anonymous_28) -FN:492,(anonymous_29) -FN:503,(anonymous_30) -FN:509,(anonymous_31) -FN:527,(anonymous_32) -FN:540,(anonymous_33) -FN:559,(anonymous_34) -FN:574,(anonymous_35) -FN:594,(anonymous_36) -FN:608,(anonymous_37) -FN:616,(anonymous_38) -FN:627,(anonymous_39) -FN:641,(anonymous_40) -FN:649,(anonymous_41) -FN:662,(anonymous_42) -FN:671,(anonymous_43) -FN:690,(anonymous_44) -FN:703,(anonymous_45) -FN:718,(anonymous_46) -FN:731,(anonymous_47) -FN:748,(anonymous_48) -FN:762,(anonymous_49) -FN:763,(anonymous_50) -FN:780,(anonymous_51) -FNF:52 -FNH:40 -FNDA:16,requiredLikeToAbove -FNDA:5,(anonymous_1) -FNDA:89,asRequiredParser -FNDA:169,(anonymous_3) -FNDA:34,(anonymous_4) -FNDA:4,(anonymous_5) -FNDA:1,(anonymous_6) -FNDA:1,(anonymous_7) -FNDA:40,(anonymous_8) -FNDA:4,(anonymous_9) -FNDA:3,(anonymous_10) -FNDA:5,(anonymous_11) -FNDA:3,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:1,(anonymous_15) -FNDA:28,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:1,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:2,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:1,(anonymous_22) -FNDA:1,(anonymous_23) -FNDA:2,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:1,(anonymous_26) -FNDA:1,(anonymous_27) -FNDA:6,(anonymous_28) -FNDA:1,(anonymous_29) -FNDA:10,(anonymous_30) -FNDA:1,(anonymous_31) -FNDA:1,(anonymous_32) -FNDA:4,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:1,(anonymous_35) -FNDA:1,(anonymous_36) -FNDA:17,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:5,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:6,(anonymous_45) -FNDA:1,(anonymous_46) -FNDA:1,(anonymous_47) -FNDA:1,(anonymous_48) -FNDA:11,(anonymous_49) -FNDA:3,(anonymous_50) -FNDA:0,(anonymous_51) -DA:15,6 -DA:27,6 -DA:39,16 -DA:62,6 -DA:63,5 -DA:72,89 -DA:73,28 -DA:98,6 -DA:100,169 -DA:101,169 -DA:112,34 -DA:113,4 -DA:136,1 -DA:137,1 -DA:168,40 -DA:169,4 -DA:213,3 -DA:214,5 -DA:215,5 -DA:245,3 -DA:246,0 -DA:257,0 -DA:275,1 -DA:276,1 -DA:277,1 -DA:306,28 -DA:307,0 -DA:343,1 -DA:344,1 -DA:345,1 -DA:370,2 -DA:371,0 -DA:397,1 -DA:398,1 -DA:399,1 -DA:423,2 -DA:424,0 -DA:456,1 -DA:457,1 -DA:458,1 -DA:491,6 -DA:492,1 -DA:503,10 -DA:527,1 -DA:528,1 -DA:529,1 -DA:558,4 -DA:559,0 -DA:594,1 -DA:595,1 -DA:596,1 -DA:616,17 -DA:617,0 -DA:618,0 -DA:634,0 -DA:640,0 -DA:641,0 -DA:661,0 -DA:662,0 -DA:689,5 -DA:690,0 -DA:717,6 -DA:718,1 -DA:748,1 -DA:749,1 -DA:750,1 -DA:763,11 -DA:781,0 -LF:68 -LH:53 -BRDA:40,0,0,11 -BRDA:40,0,1,5 -BRDA:45,1,0,11 -BRDA:45,1,1,5 -BRDA:72,2,0,61 -BRDA:118,3,0,4 -BRDA:118,3,1,4 -BRDA:180,4,0,4 -BRDA:180,4,1,4 -BRDA:181,5,0,4 -BRDA:181,5,1,4 -BRDA:227,6,0,5 -BRDA:227,6,1,5 -BRDA:254,7,0,0 -BRDA:254,7,1,0 -BRDA:317,8,0,0 -BRDA:317,8,1,0 -BRDA:376,9,0,0 -BRDA:376,9,1,0 -BRDA:433,10,0,0 -BRDA:433,10,1,0 -BRDA:497,11,0,1 -BRDA:497,11,1,1 -BRDA:566,12,0,0 -BRDA:566,12,1,0 -BRDA:698,13,0,0 -BRDA:698,13,1,0 -BRDA:725,14,0,1 -BRDA:725,14,1,0 -BRF:29 -BRH:16 -end_of_record -TN: -SF:lib/config/builder/variants.ts -FN:56,(anonymous_0) -FN:60,(anonymous_1) -FN:70,(anonymous_2) -FN:89,(anonymous_3) -FN:117,(anonymous_4) -FNF:5 -FNH:4 -FNDA:12,(anonymous_0) -FNDA:12,(anonymous_1) -FNDA:28,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,5 -DA:54,5 -DA:57,12 -DA:58,12 -DA:69,12 -DA:71,28 -DA:78,12 -DA:90,2 -DA:93,2 -DA:94,4 -DA:95,4 -DA:100,2 -DA:118,0 -LF:13 -LH:12 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/dependencies/DependencyConfig.ts -FN:16,(anonymous_0) -FN:22,(anonymous_1) -FN:33,(anonymous_2) -FNF:3 -FNH:1 -FNDA:0,(anonymous_0) -FNDA:1,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,5 -DA:10,5 -DA:16,5 -DA:20,0 -DA:23,1 -DA:27,1 -DA:34,0 -LF:7 -LH:5 -BRDA:20,0,0,0 -BRDA:20,0,1,0 -BRDA:27,1,0,1 -BRF:3 -BRH:1 -end_of_record -TN: -SF:lib/dependencies/dependencies.ts -FN:32,checkDependencies -FN:45,(anonymous_1) -FN:50,(anonymous_2) -FN:51,(anonymous_3) -FN:52,(anonymous_4) -FN:59,(anonymous_5) -FN:61,(anonymous_6) -FN:70,(anonymous_7) -FN:74,(anonymous_8) -FN:76,(anonymous_9) -FN:89,(anonymous_10) -FN:90,(anonymous_11) -FN:93,(anonymous_12) -FN:99,(anonymous_13) -FN:102,(anonymous_14) -FN:104,(anonymous_15) -FN:110,(anonymous_16) -FN:116,(anonymous_17) -FN:127,(anonymous_18) -FN:133,(anonymous_19) -FN:141,(anonymous_20) -FN:154,(anonymous_21) -FN:155,(anonymous_22) -FN:160,(anonymous_23) -FN:167,(anonymous_24) -FN:174,(anonymous_25) -FN:177,(anonymous_26) -FN:178,(anonymous_27) -FNF:28 -FNH:0 -FNDA:0,checkDependencies -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -DA:1,5 -DA:32,5 -DA:38,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:80,0 -DA:81,0 -DA:86,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:93,0 -DA:94,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:115,0 -DA:117,0 -DA:122,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:141,0 -DA:145,0 -DA:146,0 -DA:151,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:156,0 -DA:157,0 -DA:161,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:174,0 -DA:175,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:182,0 -DA:183,0 -DA:185,0 -DA:187,0 -DA:188,0 -DA:192,0 -LF:81 -LH:2 -BRDA:44,0,0,0 -BRDA:53,1,0,0 -BRDA:53,2,0,0 -BRDA:53,2,1,0 -BRDA:64,3,0,0 -BRDA:64,3,1,0 -BRDA:72,4,0,0 -BRDA:72,4,1,0 -BRDA:81,5,0,0 -BRDA:82,6,0,0 -BRDA:82,6,1,0 -BRDA:82,6,2,0 -BRDA:89,7,0,0 -BRDA:89,7,1,0 -BRDA:94,8,0,0 -BRDA:94,8,1,0 -BRDA:94,8,2,0 -BRDA:94,8,3,0 -BRDA:94,8,4,0 -BRDA:100,9,0,0 -BRDA:100,9,1,0 -BRDA:106,10,0,0 -BRDA:107,11,0,0 -BRDA:107,11,1,0 -BRDA:112,12,0,0 -BRDA:113,13,0,0 -BRDA:113,13,1,0 -BRDA:115,14,0,0 -BRDA:123,15,0,0 -BRDA:123,15,1,0 -BRDA:129,16,0,0 -BRDA:129,17,0,0 -BRDA:129,17,1,0 -BRDA:130,18,0,0 -BRDA:130,18,1,0 -BRDA:135,19,0,0 -BRDA:137,20,0,0 -BRDA:137,20,1,0 -BRDA:146,21,0,0 -BRDA:147,22,0,0 -BRDA:147,22,1,0 -BRDA:147,22,2,0 -BRDA:154,23,0,0 -BRDA:154,23,1,0 -BRDA:156,24,0,0 -BRDA:161,25,0,0 -BRDA:161,25,1,0 -BRDA:161,26,0,0 -BRDA:161,26,1,0 -BRDA:175,27,0,0 -BRDA:175,27,1,0 -BRDA:182,28,0,0 -BRDA:187,29,0,0 -BRF:53 -BRH:0 -end_of_record -TN: -SF:lib/dependencies/setupDependencyConfig.ts -FN:6,setupDependencyConfig -FNF:1 -FNH:1 -FNDA:1,setupDependencyConfig -DA:6,5 -DA:21,1 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/exver/exver.ts -FN:9,(anonymous_0) -FN:14,peg$subclass -FN:16,C -FN:24,peg$SyntaxError -FN:49,peg$padEnd -FN:63,(anonymous_5) -FN:125,(anonymous_6) -FN:129,(anonymous_7) -FN:135,(anonymous_8) -FN:137,(anonymous_9) -FN:151,(anonymous_10) -FN:157,(anonymous_11) -FN:163,(anonymous_12) -FN:170,hex -FN:176,literalEscape -FN:192,(anonymous_15) -FN:194,(anonymous_16) -FN:198,classEscape -FN:218,(anonymous_18) -FN:220,(anonymous_19) -FN:224,describeExpectation -FN:230,describeExpected -FN:279,describeFound -FN:289,peg$parse -FN:353,(anonymous_24) -FN:356,(anonymous_25) -FN:359,(anonymous_26) -FN:362,(anonymous_27) -FN:365,(anonymous_28) -FN:368,(anonymous_29) -FN:371,(anonymous_30) -FN:374,(anonymous_31) -FN:377,(anonymous_32) -FN:380,(anonymous_33) -FN:383,(anonymous_34) -FN:386,(anonymous_35) -FN:389,(anonymous_36) -FN:392,(anonymous_37) -FN:395,(anonymous_38) -FN:400,(anonymous_39) -FN:422,(anonymous_40) -FN:425,(anonymous_41) -FN:428,(anonymous_42) -FN:431,(anonymous_43) -FN:441,(anonymous_44) -FN:443,(anonymous_45) -FN:446,(anonymous_46) -FN:451,(anonymous_47) -FN:453,(anonymous_48) -FN:456,(anonymous_49) -FN:487,text -FN:493,offset -FN:499,range -FN:512,location -FN:518,expected -FN:538,error -FN:551,peg$literalExpectation -FN:557,peg$classExpectation -FN:563,peg$anyExpectation -FN:569,peg$endExpectation -FN:575,peg$otherExpectation -FN:581,peg$computePosDetails -FN:638,peg$computeLocation -FN:679,peg$fail -FN:696,peg$buildSimpleError -FN:702,peg$buildStructuredError -FN:718,peg$parseVersionRange -FN:849,peg$parseOr -FN:873,peg$parseAnd -FN:897,peg$parseVersionRangeAtom -FN:930,peg$parseParens -FN:1006,peg$parseAnchor -FN:1043,peg$parseVersionSpec -FN:1122,peg$parseNot -FN:1174,peg$parseAny -FN:1209,peg$parseNone -FN:1244,peg$parseCmpOp -FN:1468,peg$parseExtendedVersion -FN:1536,peg$parseEmVer -FN:1674,peg$parseFlavor -FN:1746,peg$parseLowercase -FN:1808,peg$parseString -FN:1870,peg$parseVersion -FN:1905,peg$parsePreRelease -FN:2040,peg$parsePreReleaseSegment -FN:2091,peg$parseVersionNumber -FN:2204,peg$parseDigit -FN:2266,peg$parse_ -FNF:88 -FNH:61 -FNDA:6,(anonymous_0) -FNDA:6,peg$subclass -FNDA:6,C -FNDA:3,peg$SyntaxError -FNDA:0,peg$padEnd -FNDA:0,(anonymous_5) -FNDA:3,(anonymous_6) -FNDA:2,(anonymous_7) -FNDA:3,(anonymous_8) -FNDA:3,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,hex -FNDA:4,literalEscape -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:6,classEscape -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:5,describeExpectation -FNDA:3,describeExpected -FNDA:3,describeFound -FNDA:127,peg$parse -FNDA:0,(anonymous_24) -FNDA:24,(anonymous_25) -FNDA:24,(anonymous_26) -FNDA:2,(anonymous_27) -FNDA:1,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:1,(anonymous_30) -FNDA:2,(anonymous_31) -FNDA:7,(anonymous_32) -FNDA:4,(anonymous_33) -FNDA:7,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:3,(anonymous_37) -FNDA:106,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:1,(anonymous_42) -FNDA:242,(anonymous_43) -FNDA:1,(anonymous_44) -FNDA:1,(anonymous_45) -FNDA:2,(anonymous_46) -FNDA:242,(anonymous_47) -FNDA:150,(anonymous_48) -FNDA:393,(anonymous_49) -FNDA:394,text -FNDA:0,offset -FNDA:0,range -FNDA:0,location -FNDA:0,expected -FNDA:0,error -FNDA:2286,peg$literalExpectation -FNDA:508,peg$classExpectation -FNDA:0,peg$anyExpectation -FNDA:0,peg$endExpectation -FNDA:127,peg$otherExpectation -FNDA:6,peg$computePosDetails -FNDA:3,peg$computeLocation -FNDA:1542,peg$fail -FNDA:0,peg$buildSimpleError -FNDA:3,peg$buildStructuredError -FNDA:18,peg$parseVersionRange -FNDA:25,peg$parseOr -FNDA:22,peg$parseAnd -FNDA:45,peg$parseVersionRangeAtom -FNDA:45,peg$parseParens -FNDA:45,peg$parseAnchor -FNDA:45,peg$parseVersionSpec -FNDA:21,peg$parseNot -FNDA:19,peg$parseAny -FNDA:18,peg$parseNone -FNDA:45,peg$parseCmpOp -FNDA:109,peg$parseExtendedVersion -FNDA:0,peg$parseEmVer -FNDA:154,peg$parseFlavor -FNDA:0,peg$parseLowercase -FNDA:1,peg$parseString -FNDA:265,peg$parseVersion -FNDA:242,peg$parsePreRelease -FNDA:2,peg$parsePreReleaseSegment -FNDA:265,peg$parseVersionNumber -FNDA:418,peg$parseDigit -FNDA:79,peg$parse_ -DA:9,6 -DA:16,6 -DA:18,6 -DA:20,6 -DA:26,3 -DA:34,3 -DA:36,3 -DA:38,3 -DA:40,3 -DA:42,3 -DA:46,6 -DA:51,0 -DA:53,0 -DA:55,0 -DA:57,0 -DA:59,0 -DA:63,6 -DA:65,0 -DA:67,0 -DA:69,0 -DA:73,0 -DA:75,0 -DA:77,0 -DA:79,0 -DA:83,0 -DA:85,0 -DA:91,0 -DA:93,0 -DA:95,0 -DA:97,0 -DA:99,0 -DA:101,0 -DA:103,0 -DA:105,0 -DA:117,0 -DA:121,0 -DA:125,6 -DA:127,3 -DA:131,2 -DA:137,3 -DA:139,3 -DA:147,3 -DA:153,0 -DA:159,0 -DA:165,0 -DA:172,0 -DA:178,4 -DA:192,0 -DA:194,0 -DA:200,6 -DA:218,0 -DA:220,0 -DA:226,5 -DA:232,3 -DA:237,3 -DA:240,3 -DA:242,3 -DA:244,2 -DA:246,2 -DA:248,2 -DA:252,3 -DA:256,3 -DA:260,1 -DA:265,2 -DA:270,0 -DA:281,3 -DA:285,3 -DA:291,127 -DA:294,127 -DA:296,127 -DA:299,127 -DA:301,127 -DA:304,127 -DA:305,127 -DA:306,127 -DA:307,127 -DA:308,127 -DA:309,127 -DA:310,127 -DA:311,127 -DA:312,127 -DA:313,127 -DA:314,127 -DA:315,127 -DA:316,127 -DA:317,127 -DA:318,127 -DA:319,127 -DA:320,127 -DA:321,127 -DA:323,127 -DA:324,127 -DA:325,127 -DA:326,127 -DA:328,127 -DA:329,127 -DA:330,127 -DA:331,127 -DA:332,127 -DA:333,127 -DA:334,127 -DA:335,127 -DA:336,127 -DA:337,127 -DA:338,127 -DA:339,127 -DA:340,127 -DA:341,127 -DA:342,127 -DA:343,127 -DA:344,127 -DA:345,127 -DA:346,127 -DA:347,127 -DA:348,127 -DA:349,127 -DA:350,127 -DA:353,127 -DA:354,0 -DA:356,127 -DA:357,24 -DA:359,127 -DA:360,24 -DA:362,127 -DA:363,2 -DA:365,127 -DA:366,1 -DA:368,127 -DA:369,0 -DA:371,127 -DA:372,1 -DA:374,127 -DA:375,2 -DA:377,127 -DA:378,7 -DA:380,127 -DA:381,4 -DA:383,127 -DA:384,7 -DA:386,127 -DA:387,0 -DA:389,127 -DA:390,0 -DA:392,127 -DA:393,3 -DA:395,127 -DA:397,106 -DA:400,127 -DA:402,0 -DA:422,127 -DA:423,0 -DA:425,127 -DA:426,0 -DA:428,127 -DA:429,1 -DA:431,127 -DA:433,242 -DA:441,127 -DA:443,1 -DA:446,127 -DA:448,2 -DA:451,127 -DA:453,242 -DA:456,127 -DA:457,393 -DA:459,127 -DA:461,127 -DA:463,127 -DA:465,127 -DA:467,127 -DA:469,127 -DA:475,127 -DA:477,127 -DA:479,0 -DA:483,127 -DA:489,394 -DA:495,0 -DA:501,0 -DA:514,0 -DA:520,0 -DA:527,0 -DA:540,0 -DA:547,0 -DA:553,2286 -DA:559,508 -DA:565,0 -DA:571,0 -DA:577,127 -DA:583,6 -DA:588,6 -DA:590,3 -DA:594,3 -DA:596,3 -DA:598,1 -DA:602,3 -DA:604,3 -DA:612,3 -DA:614,4 -DA:616,0 -DA:618,0 -DA:622,4 -DA:626,4 -DA:630,3 -DA:633,3 -DA:640,3 -DA:642,3 -DA:645,3 -DA:668,3 -DA:670,0 -DA:672,0 -DA:675,3 -DA:681,1542 -DA:684,1540 -DA:686,438 -DA:688,438 -DA:692,1540 -DA:698,0 -DA:704,3 -DA:723,18 -DA:725,18 -DA:727,18 -DA:729,18 -DA:731,18 -DA:733,18 -DA:735,18 -DA:737,18 -DA:739,18 -DA:741,17 -DA:744,18 -DA:746,4 -DA:748,4 -DA:750,4 -DA:754,14 -DA:756,14 -DA:759,18 -DA:761,14 -DA:764,18 -DA:766,18 -DA:768,4 -DA:770,4 -DA:774,14 -DA:776,14 -DA:779,18 -DA:781,7 -DA:783,7 -DA:785,7 -DA:787,7 -DA:789,7 -DA:791,7 -DA:793,5 -DA:796,7 -DA:798,3 -DA:800,3 -DA:802,3 -DA:806,4 -DA:808,4 -DA:811,7 -DA:813,4 -DA:816,7 -DA:818,7 -DA:820,3 -DA:822,3 -DA:826,4 -DA:828,4 -DA:832,18 -DA:834,18 -DA:838,0 -DA:840,0 -DA:844,18 -DA:854,25 -DA:856,3 -DA:858,3 -DA:862,22 -DA:864,22 -DA:868,25 -DA:878,22 -DA:880,4 -DA:882,4 -DA:886,18 -DA:888,18 -DA:892,22 -DA:902,45 -DA:904,45 -DA:906,45 -DA:908,45 -DA:910,21 -DA:912,21 -DA:914,19 -DA:916,19 -DA:918,18 -DA:925,45 -DA:935,45 -DA:937,45 -DA:939,0 -DA:941,0 -DA:945,45 -DA:947,45 -DA:950,45 -DA:952,0 -DA:954,0 -DA:956,0 -DA:958,0 -DA:960,0 -DA:962,0 -DA:964,0 -DA:968,0 -DA:970,0 -DA:973,0 -DA:975,0 -DA:977,0 -DA:981,0 -DA:983,0 -DA:988,0 -DA:990,0 -DA:995,45 -DA:997,45 -DA:1001,45 -DA:1011,45 -DA:1013,45 -DA:1015,45 -DA:1017,21 -DA:1020,45 -DA:1022,45 -DA:1024,45 -DA:1026,24 -DA:1028,24 -DA:1032,21 -DA:1034,21 -DA:1038,45 -DA:1048,45 -DA:1050,45 -DA:1052,45 -DA:1054,45 -DA:1057,45 -DA:1059,45 -DA:1061,24 -DA:1063,24 -DA:1065,5 -DA:1067,5 -DA:1071,19 -DA:1073,19 -DA:1076,24 -DA:1078,5 -DA:1080,5 -DA:1082,5 -DA:1084,5 -DA:1088,0 -DA:1090,0 -DA:1095,19 -DA:1097,19 -DA:1100,24 -DA:1102,19 -DA:1105,24 -DA:1107,24 -DA:1111,21 -DA:1113,21 -DA:1117,45 -DA:1127,21 -DA:1129,21 -DA:1131,2 -DA:1133,2 -DA:1137,19 -DA:1139,19 -DA:1142,21 -DA:1144,2 -DA:1146,2 -DA:1148,2 -DA:1150,2 -DA:1152,2 -DA:1156,0 -DA:1158,0 -DA:1163,19 -DA:1165,19 -DA:1169,21 -DA:1179,19 -DA:1181,19 -DA:1183,1 -DA:1185,1 -DA:1189,18 -DA:1191,18 -DA:1194,19 -DA:1196,1 -DA:1198,1 -DA:1201,19 -DA:1204,19 -DA:1214,18 -DA:1216,18 -DA:1218,0 -DA:1220,0 -DA:1224,18 -DA:1226,18 -DA:1229,18 -DA:1231,0 -DA:1233,0 -DA:1236,18 -DA:1239,18 -DA:1249,45 -DA:1251,45 -DA:1253,1 -DA:1255,1 -DA:1259,44 -DA:1261,44 -DA:1264,45 -DA:1266,1 -DA:1268,1 -DA:1271,45 -DA:1273,45 -DA:1275,44 -DA:1277,44 -DA:1279,2 -DA:1281,2 -DA:1285,42 -DA:1287,42 -DA:1290,44 -DA:1292,2 -DA:1294,2 -DA:1297,44 -DA:1299,44 -DA:1301,42 -DA:1303,42 -DA:1305,7 -DA:1307,7 -DA:1311,35 -DA:1313,35 -DA:1316,42 -DA:1318,7 -DA:1320,7 -DA:1323,42 -DA:1325,42 -DA:1327,35 -DA:1329,35 -DA:1331,4 -DA:1333,4 -DA:1337,31 -DA:1339,31 -DA:1342,35 -DA:1344,4 -DA:1346,4 -DA:1349,35 -DA:1351,35 -DA:1353,31 -DA:1355,31 -DA:1357,7 -DA:1359,7 -DA:1363,24 -DA:1365,24 -DA:1368,31 -DA:1370,7 -DA:1372,7 -DA:1375,31 -DA:1377,31 -DA:1379,24 -DA:1381,24 -DA:1383,0 -DA:1385,0 -DA:1389,24 -DA:1391,24 -DA:1394,24 -DA:1396,0 -DA:1398,0 -DA:1401,24 -DA:1403,24 -DA:1405,24 -DA:1407,24 -DA:1409,0 -DA:1411,0 -DA:1415,24 -DA:1417,24 -DA:1420,24 -DA:1422,0 -DA:1424,0 -DA:1427,24 -DA:1429,24 -DA:1431,24 -DA:1433,24 -DA:1435,3 -DA:1437,3 -DA:1441,21 -DA:1443,21 -DA:1446,24 -DA:1448,3 -DA:1450,3 -DA:1453,24 -DA:1463,45 -DA:1473,109 -DA:1475,109 -DA:1477,109 -DA:1479,109 -DA:1482,109 -DA:1484,109 -DA:1486,107 -DA:1488,106 -DA:1490,106 -DA:1494,1 -DA:1496,1 -DA:1499,107 -DA:1501,106 -DA:1503,106 -DA:1505,106 -DA:1507,106 -DA:1511,0 -DA:1513,0 -DA:1518,1 -DA:1520,1 -DA:1525,2 -DA:1527,2 -DA:1531,109 -DA:1541,0 -DA:1543,0 -DA:1545,0 -DA:1547,0 -DA:1549,0 -DA:1551,0 -DA:1555,0 -DA:1557,0 -DA:1560,0 -DA:1562,0 -DA:1564,0 -DA:1566,0 -DA:1568,0 -DA:1570,0 -DA:1574,0 -DA:1576,0 -DA:1579,0 -DA:1581,0 -DA:1583,0 -DA:1585,0 -DA:1587,0 -DA:1589,0 -DA:1591,0 -DA:1595,0 -DA:1597,0 -DA:1600,0 -DA:1602,0 -DA:1604,0 -DA:1606,0 -DA:1608,0 -DA:1612,0 -DA:1614,0 -DA:1619,0 -DA:1621,0 -DA:1624,0 -DA:1626,0 -DA:1629,0 -DA:1631,0 -DA:1635,0 -DA:1637,0 -DA:1642,0 -DA:1644,0 -DA:1649,0 -DA:1651,0 -DA:1656,0 -DA:1658,0 -DA:1663,0 -DA:1665,0 -DA:1669,0 -DA:1679,154 -DA:1681,154 -DA:1683,0 -DA:1685,0 -DA:1689,154 -DA:1691,154 -DA:1694,154 -DA:1696,0 -DA:1698,0 -DA:1700,0 -DA:1702,0 -DA:1704,0 -DA:1708,0 -DA:1710,0 -DA:1713,0 -DA:1715,0 -DA:1717,0 -DA:1721,0 -DA:1723,0 -DA:1728,0 -DA:1730,0 -DA:1735,154 -DA:1737,154 -DA:1741,154 -DA:1751,0 -DA:1753,0 -DA:1755,0 -DA:1757,0 -DA:1759,0 -DA:1763,0 -DA:1765,0 -DA:1768,0 -DA:1770,0 -DA:1772,0 -DA:1774,0 -DA:1776,0 -DA:1778,0 -DA:1782,0 -DA:1784,0 -DA:1790,0 -DA:1793,0 -DA:1795,0 -DA:1797,0 -DA:1800,0 -DA:1803,0 -DA:1813,1 -DA:1815,1 -DA:1817,1 -DA:1819,1 -DA:1821,1 -DA:1825,0 -DA:1827,0 -DA:1830,1 -DA:1832,1 -DA:1834,4 -DA:1836,4 -DA:1838,3 -DA:1840,3 -DA:1844,1 -DA:1846,1 -DA:1852,0 -DA:1855,1 -DA:1857,1 -DA:1859,1 -DA:1862,1 -DA:1865,1 -DA:1875,265 -DA:1877,265 -DA:1879,265 -DA:1881,242 -DA:1883,242 -DA:1885,241 -DA:1888,242 -DA:1890,242 -DA:1894,23 -DA:1896,23 -DA:1900,265 -DA:1910,242 -DA:1912,242 -DA:1914,1 -DA:1916,1 -DA:1920,241 -DA:1922,241 -DA:1925,242 -DA:1927,1 -DA:1929,1 -DA:1931,1 -DA:1933,1 -DA:1935,1 -DA:1937,1 -DA:1939,1 -DA:1943,0 -DA:1945,0 -DA:1948,1 -DA:1950,1 -DA:1952,1 -DA:1954,1 -DA:1956,1 -DA:1960,0 -DA:1962,0 -DA:1967,0 -DA:1969,0 -DA:1972,1 -DA:1974,1 -DA:1976,1 -DA:1978,1 -DA:1980,0 -DA:1982,0 -DA:1986,1 -DA:1988,1 -DA:1991,1 -DA:1993,0 -DA:1995,0 -DA:1997,0 -DA:1999,0 -DA:2003,0 -DA:2005,0 -DA:2010,1 -DA:2012,1 -DA:2016,1 -DA:2018,1 -DA:2022,0 -DA:2024,0 -DA:2029,241 -DA:2031,241 -DA:2035,242 -DA:2045,2 -DA:2047,2 -DA:2049,0 -DA:2051,0 -DA:2055,2 -DA:2057,2 -DA:2060,2 -DA:2062,2 -DA:2065,2 -DA:2067,2 -DA:2069,1 -DA:2072,2 -DA:2074,2 -DA:2076,2 -DA:2080,0 -DA:2082,0 -DA:2086,2 -DA:2096,265 -DA:2098,265 -DA:2100,265 -DA:2102,242 -DA:2104,242 -DA:2106,242 -DA:2108,93 -DA:2110,93 -DA:2114,149 -DA:2116,149 -DA:2119,242 -DA:2121,93 -DA:2123,93 -DA:2125,92 -DA:2127,92 -DA:2131,1 -DA:2133,1 -DA:2138,149 -DA:2140,149 -DA:2143,242 -DA:2145,150 -DA:2147,150 -DA:2149,150 -DA:2151,58 -DA:2153,58 -DA:2157,92 -DA:2159,92 -DA:2162,150 -DA:2164,58 -DA:2166,58 -DA:2168,58 -DA:2170,58 -DA:2174,0 -DA:2176,0 -DA:2181,92 -DA:2183,92 -DA:2187,242 -DA:2189,242 -DA:2193,23 -DA:2195,23 -DA:2199,265 -DA:2209,418 -DA:2211,418 -DA:2213,418 -DA:2215,393 -DA:2217,393 -DA:2221,25 -DA:2223,25 -DA:2226,418 -DA:2228,393 -DA:2230,395 -DA:2232,395 -DA:2234,2 -DA:2236,2 -DA:2240,393 -DA:2242,393 -DA:2248,25 -DA:2251,418 -DA:2253,393 -DA:2255,393 -DA:2258,418 -DA:2261,418 -DA:2271,79 -DA:2273,79 -DA:2275,79 -DA:2277,14 -DA:2279,14 -DA:2283,65 -DA:2285,65 -DA:2288,79 -DA:2290,14 -DA:2292,14 -DA:2294,0 -DA:2296,0 -DA:2300,14 -DA:2302,14 -DA:2306,79 -DA:2308,79 -DA:2310,79 -DA:2313,79 -DA:2317,127 -DA:2320,127 -DA:2322,124 -DA:2326,3 -DA:2328,0 -DA:2332,3 -DA:2348,6 -DA:2422,6 -DA:2457,6 -DA:2459,6 -LF:789 -LH:582 -BRDA:51,0,0,0 -BRDA:51,0,1,0 -BRDA:53,1,0,0 -BRDA:67,2,0,0 -BRDA:75,3,0,0 -BRDA:85,4,0,0 -BRDA:85,4,1,0 -BRDA:85,5,0,0 -BRDA:85,5,1,0 -BRDA:93,6,0,0 -BRDA:93,6,1,0 -BRDA:101,7,0,0 -BRDA:101,7,1,0 -BRDA:103,8,0,0 -BRDA:103,8,1,0 -BRDA:139,9,0,3 -BRDA:139,9,1,0 -BRDA:147,10,0,0 -BRDA:147,10,1,3 -BRDA:240,11,0,3 -BRDA:244,12,0,2 -BRDA:256,13,0,1 -BRDA:256,13,1,2 -BRDA:256,13,2,0 -BRDA:281,14,0,2 -BRDA:281,14,1,1 -BRDA:291,15,0,127 -BRDA:291,15,1,0 -BRDA:360,16,0,24 -BRDA:360,16,1,24 -BRDA:360,17,0,5 -BRDA:360,17,1,19 -BRDA:397,18,0,106 -BRDA:397,18,1,106 -BRDA:415,19,0,0 -BRDA:415,19,1,0 -BRDA:437,20,0,242 -BRDA:437,20,1,241 -BRDA:475,21,0,127 -BRDA:477,22,0,0 -BRDA:520,23,0,0 -BRDA:520,23,1,0 -BRDA:540,24,0,0 -BRDA:540,24,1,0 -BRDA:588,25,0,3 -BRDA:588,25,1,3 -BRDA:614,26,0,0 -BRDA:614,26,1,4 -BRDA:668,27,0,0 -BRDA:668,28,0,3 -BRDA:668,28,1,0 -BRDA:668,28,2,0 -BRDA:681,29,0,2 -BRDA:684,30,0,438 -BRDA:727,31,0,18 -BRDA:727,31,1,0 -BRDA:739,32,0,17 -BRDA:744,33,0,4 -BRDA:744,33,1,14 -BRDA:759,34,0,14 -BRDA:766,35,0,4 -BRDA:766,35,1,14 -BRDA:791,36,0,5 -BRDA:796,37,0,3 -BRDA:796,37,1,4 -BRDA:811,38,0,4 -BRDA:818,39,0,3 -BRDA:818,39,1,4 -BRDA:854,40,0,3 -BRDA:854,40,1,22 -BRDA:864,41,0,22 -BRDA:878,42,0,4 -BRDA:878,42,1,18 -BRDA:888,43,0,18 -BRDA:904,44,0,45 -BRDA:908,45,0,21 -BRDA:912,46,0,19 -BRDA:916,47,0,18 -BRDA:937,48,0,0 -BRDA:937,48,1,45 -BRDA:947,49,0,45 -BRDA:950,50,0,0 -BRDA:950,50,1,45 -BRDA:956,51,0,0 -BRDA:956,51,1,0 -BRDA:960,52,0,0 -BRDA:960,52,1,0 -BRDA:970,53,0,0 -BRDA:973,54,0,0 -BRDA:973,54,1,0 -BRDA:1015,55,0,21 -BRDA:1024,56,0,24 -BRDA:1024,56,1,21 -BRDA:1052,57,0,45 -BRDA:1059,58,0,24 -BRDA:1059,58,1,21 -BRDA:1063,59,0,5 -BRDA:1063,59,1,19 -BRDA:1073,60,0,19 -BRDA:1076,61,0,5 -BRDA:1076,61,1,19 -BRDA:1080,62,0,5 -BRDA:1080,62,1,0 -BRDA:1100,63,0,19 -BRDA:1129,64,0,2 -BRDA:1129,64,1,19 -BRDA:1139,65,0,19 -BRDA:1142,66,0,2 -BRDA:1142,66,1,19 -BRDA:1148,67,0,2 -BRDA:1148,67,1,0 -BRDA:1181,68,0,1 -BRDA:1181,68,1,18 -BRDA:1191,69,0,18 -BRDA:1194,70,0,1 -BRDA:1216,71,0,0 -BRDA:1216,71,1,18 -BRDA:1226,72,0,18 -BRDA:1229,73,0,0 -BRDA:1251,74,0,1 -BRDA:1251,74,1,44 -BRDA:1261,75,0,44 -BRDA:1264,76,0,1 -BRDA:1273,77,0,44 -BRDA:1277,78,0,2 -BRDA:1277,78,1,42 -BRDA:1287,79,0,42 -BRDA:1290,80,0,2 -BRDA:1299,81,0,42 -BRDA:1303,82,0,7 -BRDA:1303,82,1,35 -BRDA:1313,83,0,35 -BRDA:1316,84,0,7 -BRDA:1325,85,0,35 -BRDA:1329,86,0,4 -BRDA:1329,86,1,31 -BRDA:1339,87,0,31 -BRDA:1342,88,0,4 -BRDA:1351,89,0,31 -BRDA:1355,90,0,7 -BRDA:1355,90,1,24 -BRDA:1365,91,0,24 -BRDA:1368,92,0,7 -BRDA:1377,93,0,24 -BRDA:1381,94,0,0 -BRDA:1381,94,1,24 -BRDA:1391,95,0,24 -BRDA:1394,96,0,0 -BRDA:1403,97,0,24 -BRDA:1407,98,0,0 -BRDA:1407,98,1,24 -BRDA:1417,99,0,24 -BRDA:1420,100,0,0 -BRDA:1429,101,0,24 -BRDA:1433,102,0,3 -BRDA:1433,102,1,21 -BRDA:1443,103,0,21 -BRDA:1446,104,0,3 -BRDA:1477,105,0,109 -BRDA:1484,106,0,107 -BRDA:1484,106,1,2 -BRDA:1486,107,0,106 -BRDA:1486,107,1,1 -BRDA:1496,108,0,1 -BRDA:1499,109,0,106 -BRDA:1499,109,1,1 -BRDA:1503,110,0,106 -BRDA:1503,110,1,0 -BRDA:1545,111,0,0 -BRDA:1545,111,1,0 -BRDA:1547,112,0,0 -BRDA:1547,112,1,0 -BRDA:1557,113,0,0 -BRDA:1560,114,0,0 -BRDA:1560,114,1,0 -BRDA:1564,115,0,0 -BRDA:1564,115,1,0 -BRDA:1566,116,0,0 -BRDA:1566,116,1,0 -BRDA:1576,117,0,0 -BRDA:1579,118,0,0 -BRDA:1579,118,1,0 -BRDA:1583,119,0,0 -BRDA:1583,119,1,0 -BRDA:1587,120,0,0 -BRDA:1587,120,1,0 -BRDA:1597,121,0,0 -BRDA:1600,122,0,0 -BRDA:1600,122,1,0 -BRDA:1604,123,0,0 -BRDA:1604,123,1,0 -BRDA:1624,124,0,0 -BRDA:1681,125,0,0 -BRDA:1681,125,1,154 -BRDA:1691,126,0,154 -BRDA:1694,127,0,0 -BRDA:1694,127,1,154 -BRDA:1698,128,0,0 -BRDA:1698,128,1,0 -BRDA:1700,129,0,0 -BRDA:1700,129,1,0 -BRDA:1710,130,0,0 -BRDA:1713,131,0,0 -BRDA:1713,131,1,0 -BRDA:1755,132,0,0 -BRDA:1755,132,1,0 -BRDA:1765,133,0,0 -BRDA:1768,134,0,0 -BRDA:1768,134,1,0 -BRDA:1774,135,0,0 -BRDA:1774,135,1,0 -BRDA:1784,136,0,0 -BRDA:1793,137,0,0 -BRDA:1817,138,0,1 -BRDA:1817,138,1,0 -BRDA:1827,139,0,0 -BRDA:1830,140,0,1 -BRDA:1830,140,1,0 -BRDA:1836,141,0,3 -BRDA:1836,141,1,1 -BRDA:1846,142,0,1 -BRDA:1855,143,0,1 -BRDA:1879,144,0,242 -BRDA:1879,144,1,23 -BRDA:1883,145,0,241 -BRDA:1912,146,0,1 -BRDA:1912,146,1,241 -BRDA:1922,147,0,241 -BRDA:1925,148,0,1 -BRDA:1925,148,1,241 -BRDA:1929,149,0,1 -BRDA:1929,149,1,0 -BRDA:1935,150,0,1 -BRDA:1935,150,1,0 -BRDA:1945,151,0,0 -BRDA:1948,152,0,1 -BRDA:1948,152,1,0 -BRDA:1952,153,0,1 -BRDA:1952,153,1,0 -BRDA:1978,154,0,0 -BRDA:1978,154,1,1 -BRDA:1988,155,0,1 -BRDA:1991,156,0,0 -BRDA:1991,156,1,1 -BRDA:1995,157,0,0 -BRDA:1995,157,1,0 -BRDA:2047,158,0,0 -BRDA:2047,158,1,2 -BRDA:2057,159,0,2 -BRDA:2060,160,0,2 -BRDA:2067,161,0,1 -BRDA:2072,162,0,2 -BRDA:2072,162,1,0 -BRDA:2100,163,0,242 -BRDA:2100,163,1,23 -BRDA:2106,164,0,93 -BRDA:2106,164,1,149 -BRDA:2116,165,0,149 -BRDA:2119,166,0,93 -BRDA:2119,166,1,149 -BRDA:2123,167,0,92 -BRDA:2123,167,1,1 -BRDA:2149,168,0,58 -BRDA:2149,168,1,92 -BRDA:2159,169,0,92 -BRDA:2162,170,0,58 -BRDA:2162,170,1,92 -BRDA:2166,171,0,58 -BRDA:2166,171,1,0 -BRDA:2213,172,0,393 -BRDA:2213,172,1,25 -BRDA:2223,173,0,25 -BRDA:2226,174,0,393 -BRDA:2226,174,1,25 -BRDA:2232,175,0,2 -BRDA:2232,175,1,393 -BRDA:2242,176,0,393 -BRDA:2251,177,0,393 -BRDA:2275,178,0,14 -BRDA:2275,178,1,65 -BRDA:2285,179,0,0 -BRDA:2292,180,0,0 -BRDA:2292,180,1,14 -BRDA:2302,181,0,0 -BRDA:2310,182,0,79 -BRDA:2320,183,0,124 -BRDA:2320,183,1,3 -BRDA:2320,184,0,127 -BRDA:2320,184,1,124 -BRDA:2326,185,0,0 -BRDA:2326,186,0,3 -BRDA:2326,186,1,0 -BRDA:2336,187,0,2 -BRDA:2336,187,1,1 -BRDA:2338,188,0,2 -BRDA:2338,188,1,1 -BRF:296 -BRH:185 -end_of_record -TN: -SF:lib/exver/index.ts -FN:47,(anonymous_6) -FN:49,(anonymous_7) -FN:66,(anonymous_8) -FN:96,(anonymous_9) -FN:120,(anonymous_10) -FN:126,(anonymous_11) -FN:130,(anonymous_12) -FN:134,(anonymous_13) -FN:138,(anonymous_14) -FN:142,(anonymous_15) -FN:146,(anonymous_16) -FN:150,(anonymous_17) -FN:156,(anonymous_18) -FN:161,(anonymous_19) -FN:165,(anonymous_20) -FN:208,(anonymous_21) -FN:213,(anonymous_22) -FN:222,(anonymous_23) -FN:228,(anonymous_24) -FN:232,(anonymous_25) -FN:243,(anonymous_26) -FN:253,(anonymous_27) -FN:264,(anonymous_28) -FN:268,(anonymous_29) -FN:272,(anonymous_30) -FN:276,(anonymous_31) -FN:280,(anonymous_32) -FN:284,(anonymous_33) -FN:293,(anonymous_34) -FN:307,(anonymous_35) -FN:308,(anonymous_36) -FN:310,(anonymous_37) -FN:334,(anonymous_38) -FN:335,(anonymous_39) -FN:338,(anonymous_40) -FN:361,(anonymous_41) -FN:419,(anonymous_42) -FN:421,(anonymous_43) -FN:423,tests -FNF:39 -FNH:30 -FNDA:87,(anonymous_6) -FNDA:50,(anonymous_7) -FNDA:27,(anonymous_8) -FNDA:18,(anonymous_9) -FNDA:18,(anonymous_10) -FNDA:1,(anonymous_11) -FNDA:21,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:20,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:10,(anonymous_16) -FNDA:112,(anonymous_17) -FNDA:308,(anonymous_18) -FNDA:40,(anonymous_19) -FNDA:235,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:154,(anonymous_23) -FNDA:20,(anonymous_24) -FNDA:160,(anonymous_25) -FNDA:3,(anonymous_26) -FNDA:3,(anonymous_27) -FNDA:30,(anonymous_28) -FNDA:30,(anonymous_29) -FNDA:31,(anonymous_30) -FNDA:54,(anonymous_31) -FNDA:9,(anonymous_32) -FNDA:109,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:24,(anonymous_38) -FNDA:24,(anonymous_39) -FNDA:48,(anonymous_40) -FNDA:198,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:5,(anonymous_43) -FNDA:0,tests -DA:1,6 -DA:46,6 -DA:47,87 -DA:50,50 -DA:52,20 -DA:54,0 -DA:56,20 -DA:58,0 -DA:60,0 -DA:62,10 -DA:67,27 -DA:69,2 -DA:74,0 -DA:76,24 -DA:92,1 -DA:97,18 -DA:98,18 -DA:99,7 -DA:101,3 -DA:106,3 -DA:109,4 -DA:114,4 -DA:117,18 -DA:121,18 -DA:127,1 -DA:131,21 -DA:135,1 -DA:139,20 -DA:143,0 -DA:147,10 -DA:151,112 -DA:155,6 -DA:157,308 -DA:158,308 -DA:162,40 -DA:166,235 -DA:167,235 -DA:168,419 -DA:169,63 -DA:170,356 -DA:171,38 -DA:175,134 -DA:176,0 -DA:177,134 -DA:178,0 -DA:181,134 -DA:182,134 -DA:183,252 -DA:184,252 -DA:185,0 -DA:186,252 -DA:187,0 -DA:190,0 -DA:192,0 -DA:194,0 -DA:197,0 -DA:200,0 -DA:205,134 -DA:209,0 -DA:210,0 -DA:214,0 -DA:221,6 -DA:223,154 -DA:224,154 -DA:225,154 -DA:229,20 -DA:233,160 -DA:234,0 -DA:236,160 -DA:237,160 -DA:238,85 -DA:240,75 -DA:244,3 -DA:245,0 -DA:246,3 -DA:247,0 -DA:249,3 -DA:254,3 -DA:256,1 -DA:258,1 -DA:260,1 -DA:265,30 -DA:269,30 -DA:273,31 -DA:277,54 -DA:281,9 -DA:285,109 -DA:286,106 -DA:294,0 -DA:295,0 -DA:308,0 -DA:310,0 -DA:311,0 -DA:312,0 -DA:313,0 -DA:314,0 -DA:316,0 -DA:319,0 -DA:320,0 -DA:322,0 -DA:335,24 -DA:336,24 -DA:338,24 -DA:339,48 -DA:340,0 -DA:341,48 -DA:342,24 -DA:344,24 -DA:347,24 -DA:348,24 -DA:350,24 -DA:362,198 -DA:364,129 -DA:365,129 -DA:367,21 -DA:369,30 -DA:371,39 -DA:373,6 -DA:375,9 -DA:377,0 -DA:379,0 -DA:380,0 -DA:384,0 -DA:386,0 -DA:389,24 -DA:390,24 -DA:394,6 -DA:396,18 -DA:400,21 -DA:405,17 -DA:410,22 -DA:412,9 -DA:414,0 -DA:419,6 -DA:421,6 -DA:422,5 -DA:424,0 -DA:425,0 -DA:426,0 -DA:427,0 -DA:428,0 -DA:429,0 -DA:431,0 -DA:433,0 -DA:435,0 -DA:437,0 -DA:438,0 -DA:439,0 -DA:440,0 -DA:441,0 -DA:442,0 -DA:443,0 -DA:445,0 -DA:447,0 -DA:449,0 -DA:451,0 -DA:453,0 -LF:157 -LH:97 -BRDA:50,0,0,20 -BRDA:50,0,1,0 -BRDA:50,0,2,20 -BRDA:50,0,3,0 -BRDA:50,0,4,0 -BRDA:50,0,5,10 -BRDA:67,1,0,2 -BRDA:67,1,1,0 -BRDA:67,1,2,24 -BRDA:67,1,3,1 -BRDA:78,2,0,24 -BRDA:78,2,1,0 -BRDA:99,3,0,3 -BRDA:99,3,1,4 -BRDA:99,3,2,4 -BRDA:162,4,0,0 -BRDA:162,4,1,40 -BRDA:168,5,0,63 -BRDA:168,5,1,356 -BRDA:168,6,0,419 -BRDA:168,6,1,131 -BRDA:168,7,0,419 -BRDA:168,7,1,135 -BRDA:170,8,0,38 -BRDA:170,9,0,356 -BRDA:170,9,1,131 -BRDA:170,10,0,356 -BRDA:170,10,1,114 -BRDA:175,11,0,0 -BRDA:175,11,1,134 -BRDA:175,12,0,134 -BRDA:175,12,1,134 -BRDA:177,13,0,0 -BRDA:177,14,0,134 -BRDA:177,14,1,0 -BRDA:183,15,0,252 -BRDA:183,15,1,0 -BRDA:184,16,0,0 -BRDA:184,16,1,252 -BRDA:186,17,0,0 -BRDA:190,18,0,0 -BRDA:190,18,1,0 -BRDA:190,18,2,0 -BRDA:190,18,3,0 -BRDA:190,18,4,0 -BRDA:190,18,5,0 -BRDA:229,19,0,0 -BRDA:229,19,1,20 -BRDA:233,20,0,0 -BRDA:237,21,0,85 -BRDA:244,22,0,0 -BRDA:244,22,1,3 -BRDA:244,23,0,3 -BRDA:244,23,1,3 -BRDA:244,24,0,3 -BRDA:244,24,1,3 -BRDA:246,25,0,0 -BRDA:246,25,1,3 -BRDA:246,26,0,3 -BRDA:246,26,1,3 -BRDA:246,27,0,3 -BRDA:246,27,1,3 -BRDA:254,28,0,1 -BRDA:254,28,1,1 -BRDA:254,28,2,1 -BRDA:311,29,0,0 -BRDA:311,29,1,0 -BRDA:313,30,0,0 -BRDA:336,31,0,0 -BRDA:336,31,1,24 -BRDA:339,32,0,0 -BRDA:339,32,1,48 -BRDA:341,33,0,24 -BRDA:362,34,0,129 -BRDA:362,34,1,21 -BRDA:362,34,2,17 -BRDA:362,34,3,22 -BRDA:362,34,4,9 -BRDA:362,34,5,0 -BRDA:365,35,0,21 -BRDA:365,35,1,30 -BRDA:365,35,2,39 -BRDA:365,35,3,6 -BRDA:365,35,4,9 -BRDA:365,35,5,0 -BRDA:365,35,6,0 -BRDA:365,35,7,24 -BRDA:380,36,0,0 -BRDA:380,36,1,0 -BRDA:381,37,0,0 -BRDA:381,37,1,0 -BRDA:390,38,0,6 -BRDA:390,38,1,18 -BRDA:391,39,0,24 -BRDA:391,39,1,15 -BRDA:401,40,0,21 -BRDA:401,40,1,13 -BRDA:406,41,0,17 -BRDA:406,41,1,13 -BRF:99 -BRH:65 -end_of_record -TN: -SF:lib/health/HealthCheck.ts -FN:21,healthCheck -FN:22,(anonymous_1) -FN:24,(anonymous_2) -FN:26,(anonymous_3) -FN:47,(anonymous_4) -FN:63,asMessage -FNF:6 -FNH:0 -FNDA:0,healthCheck -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,asMessage -DA:6,5 -DA:7,5 -DA:9,5 -DA:11,5 -DA:21,5 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:57,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -LF:26 -LH:5 -BRDA:25,0,0,0 -BRDA:25,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:28,2,0,0 -BRDA:28,2,1,0 -BRDA:44,3,0,0 -BRDA:44,3,1,0 -BRDA:55,4,0,0 -BRDA:55,4,1,0 -BRDA:64,5,0,0 -BRDA:66,6,0,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:lib/health/checkFns/checkPortListening.ts -FN:10,containsAddress -FN:15,(anonymous_7) -FN:17,(anonymous_8) -FN:26,checkPortListening -FN:37,(anonymous_10) -FN:55,(anonymous_11) -FN:57,(anonymous_12) -FNF:7 -FNH:3 -FNDA:2,containsAddress -FNDA:12,(anonymous_7) -FNDA:8,(anonymous_8) -FNDA:0,checkPortListening -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,6 -DA:5,6 -DA:6,6 -DA:8,6 -DA:9,6 -DA:10,6 -DA:11,2 -DA:15,12 -DA:17,8 -DA:19,2 -DA:26,6 -DA:36,0 -DA:39,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:56,0 -DA:58,0 -LF:18 -LH:11 -BRDA:39,0,0,0 -BRDA:39,0,1,0 -BRDA:47,1,0,0 -BRDA:61,2,0,0 -BRDA:61,2,1,0 -BRDA:63,3,0,0 -BRDA:63,3,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:lib/health/checkFns/checkWebUrl.ts -FN:13,(anonymous_0) -FN:24,(anonymous_1) -FN:30,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,5 -DA:4,5 -DA:5,5 -DA:13,5 -DA:22,0 -DA:25,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -LF:10 -LH:4 -BRDA:16,0,0,0 -BRDA:17,1,0,0 -BRDA:18,2,0,0 -BRDA:19,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:lib/health/checkFns/index.ts -FN:11,(anonymous_0) -FN:2,(anonymous_1) -FN:4,(anonymous_2) -FN:6,timeoutPromise -FN:7,(anonymous_4) -FN:8,(anonymous_5) -FNF:6 -FNH:2 -FNDA:6,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:6,(anonymous_2) -FNDA:0,timeoutPromise -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,5 -DA:2,5 -DA:4,11 -DA:6,5 -DA:7,0 -DA:8,0 -DA:11,11 -LF:7 -LH:5 -BRDA:6,0,0,0 -BRDA:6,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/health/checkFns/runHealthScript.ts -FN:14,(anonymous_0) -FN:20,(anonymous_1) -FN:27,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:5,5 -DA:14,5 -DA:21,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -LF:9 -LH:2 -BRDA:17,0,0,0 -BRDA:18,1,0,0 -BRDA:19,2,0,0 -BRDA:20,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:lib/inits/setupInit.ts -FN:11,setupInit -FN:26,(anonymous_1) -FN:47,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,setupInit -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,5 -DA:11,5 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:35,0 -DA:36,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:58,0 -LF:16 -LH:2 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRDA:48,1,0,0 -BRDA:48,1,1,0 -BRDA:50,2,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:lib/inits/setupInstall.ts -FN:7,(anonymous_0) -FN:8,(anonymous_1) -FN:14,(anonymous_2) -FN:21,setupInstall -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,setupInstall -DA:6,5 -DA:7,0 -DA:11,0 -DA:15,0 -DA:21,5 -DA:24,0 -LF:6 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/inits/setupUninstall.ts -FN:7,(anonymous_0) -FN:8,(anonymous_1) -FN:14,(anonymous_2) -FN:25,setupUninstall -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,setupUninstall -DA:6,5 -DA:7,0 -DA:11,0 -DA:18,0 -DA:19,0 -DA:25,5 -DA:28,0 -LF:7 -LH:2 -BRDA:18,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:lib/interfaces/Host.ts -FN:89,(anonymous_0) -FN:97,(anonymous_1) -FN:108,(anonymous_2) -FN:127,(anonymous_3) -FN:161,(anonymous_4) -FN:171,inObject -FN:191,(anonymous_6) -FNF:7 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,inObject -FNDA:0,(anonymous_6) -DA:1,6 -DA:3,6 -DA:11,6 -DA:84,6 -DA:88,6 -DA:90,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:116,0 -DA:122,0 -DA:124,0 -DA:131,0 -DA:133,0 -DA:135,0 -DA:137,0 -DA:147,0 -DA:149,0 -DA:158,0 -DA:165,0 -DA:166,0 -DA:167,0 -DA:175,0 -DA:190,6 -DA:192,0 -LF:25 -LH:6 -BRDA:101,0,0,0 -BRDA:101,0,1,0 -BRDA:133,1,0,0 -BRDA:133,1,1,0 -BRDA:137,2,0,0 -BRDA:137,2,1,0 -BRDA:137,3,0,0 -BRDA:137,3,1,0 -BRDA:143,4,0,0 -BRDA:143,4,1,0 -BRDA:147,5,0,0 -BRDA:147,5,1,0 -BRDA:165,6,0,0 -BRDA:165,7,0,0 -BRDA:165,7,1,0 -BRDA:166,8,0,0 -BRDA:166,9,0,0 -BRDA:166,9,1,0 -BRF:18 -BRH:0 -end_of_record -TN: -SF:lib/interfaces/Origin.ts -FN:7,(anonymous_0) -FN:14,(anonymous_1) -FN:17,(anonymous_2) -FN:41,(anonymous_3) -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:6,6 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:15,0 -DA:17,0 -DA:21,0 -DA:23,0 -DA:44,0 -DA:45,0 -DA:57,0 -DA:59,0 -DA:66,0 -DA:76,0 -DA:79,0 -LF:16 -LH:1 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:26,1,0,0 -BRDA:26,1,1,0 -BRDA:27,2,0,0 -BRDA:27,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:lib/interfaces/ServiceInterfaceBuilder.ts -FN:17,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:16,5 -DA:18,0 -LF:2 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/interfaces/setupInterfaces.ts -FN:23,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:22,5 -DA:23,5 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/CommandController.ts -FN:16,(anonymous_0) -FN:23,(anonymous_1) -FN:24,(anonymous_2) -FN:53,(anonymous_3) -FN:71,(anonymous_4) -FN:72,(anonymous_5) -FN:102,(anonymous_6) -FN:105,(anonymous_7) -FN:107,(anonymous_8) -FN:116,(anonymous_9) -FN:119,(anonymous_10) -FN:130,(anonymous_11) -FNF:12 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,5 -DA:2,5 -DA:6,5 -DA:12,5 -DA:15,5 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:49,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:66,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:79,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:93,0 -DA:103,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:111,0 -DA:113,0 -DA:114,0 -DA:116,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:134,0 -DA:136,0 -LF:48 -LH:5 -BRDA:21,0,0,0 -BRDA:51,1,0,0 -BRDA:51,1,1,0 -BRDA:55,2,0,0 -BRDA:55,2,1,0 -BRDA:61,3,0,0 -BRDA:61,3,1,0 -BRDA:74,4,0,0 -BRDA:75,5,0,0 -BRDA:75,5,1,0 -BRDA:75,5,2,0 -BRDA:75,5,3,0 -BRDA:81,6,0,0 -BRDA:81,6,1,0 -BRDA:105,7,0,0 -BRDA:105,8,0,0 -BRDA:106,9,0,0 -BRDA:113,10,0,0 -BRDA:119,11,0,0 -BRDA:119,12,0,0 -BRDA:119,13,0,0 -BRDA:121,14,0,0 -BRDA:122,15,0,0 -BRDA:129,16,0,0 -BRF:24 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/Daemon.ts -FN:16,(anonymous_0) -FN:17,(anonymous_1) -FN:20,(anonymous_2) -FN:21,(anonymous_3) -FN:44,(anonymous_4) -FN:54,(anonymous_5) -FN:60,(anonymous_6) -FN:63,(anonymous_7) -FN:64,(anonymous_8) -FN:68,(anonymous_9) -FN:72,(anonymous_10) -FN:78,(anonymous_11) -FN:85,(anonymous_12) -FNF:13 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,5 -DA:4,5 -DA:6,5 -DA:7,5 -DA:13,5 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:21,0 -DA:44,0 -DA:45,0 -DA:51,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:69,0 -DA:76,0 -DA:82,0 -DA:83,0 -DA:85,0 -DA:86,0 -LF:30 -LH:5 -BRDA:55,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/Daemons.ts -FN:21,(anonymous_6) -FN:22,(anonymous_7) -FN:54,(anonymous_8) -FN:81,(anonymous_9) -FN:98,(anonymous_10) -FN:117,(anonymous_11) -FN:135,(anonymous_12) -FN:136,(anonymous_13) -FN:137,(anonymous_14) -FN:156,(anonymous_15) -FN:158,(anonymous_16) -FN:159,(anonymous_17) -FN:162,(anonymous_18) -FN:164,(anonymous_19) -FN:170,(anonymous_20) -FN:174,(anonymous_21) -FNF:16 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -DA:18,5 -DA:19,5 -DA:21,5 -DA:22,5 -DA:23,5 -DA:24,5 -DA:25,5 -DA:27,5 -DA:28,5 -DA:54,5 -DA:55,0 -DA:80,5 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:103,0 -DA:126,0 -DA:127,0 -DA:131,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:161,0 -DA:163,0 -DA:164,0 -DA:166,0 -DA:170,0 -DA:171,0 -DA:175,0 -LF:38 -LH:11 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/HealthDaemon.ts -FN:9,(anonymous_0) -FN:11,(anonymous_1) -FN:28,(anonymous_2) -FN:39,(anonymous_3) -FN:39,(anonymous_4) -FN:43,(anonymous_5) -FN:51,(anonymous_6) -FN:60,(anonymous_7) -FN:64,(anonymous_8) -FN:68,(anonymous_9) -FN:85,(anonymous_10) -FN:88,(anonymous_11) -FN:90,(anonymous_12) -FN:97,(anonymous_13) -FN:108,(anonymous_14) -FN:123,(anonymous_15) -FN:125,(anonymous_16) -FN:131,(anonymous_17) -FN:133,(anonymous_18) -FN:146,(anonymous_19) -FN:147,(anonymous_20) -FN:148,(anonymous_21) -FNF:22 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -DA:2,5 -DA:6,5 -DA:7,5 -DA:9,5 -DA:11,0 -DA:12,0 -DA:14,0 -DA:24,5 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:51,0 -DA:52,0 -DA:61,0 -DA:65,0 -DA:69,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:77,0 -DA:78,0 -DA:80,0 -DA:84,0 -DA:86,0 -DA:89,0 -DA:90,0 -DA:94,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:103,0 -DA:105,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:115,0 -DA:117,0 -DA:123,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:139,0 -DA:147,0 -DA:148,0 -LF:64 -LH:5 -BRDA:36,0,0,0 -BRDA:69,1,0,0 -BRDA:73,2,0,0 -BRDA:73,2,1,0 -BRDA:89,3,0,0 -BRDA:90,4,0,0 -BRDA:90,4,1,0 -BRDA:105,5,0,0 -BRDA:105,5,1,0 -BRDA:112,6,0,0 -BRDA:112,6,1,0 -BRDA:136,7,0,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/Mounts.ts -FN:7,(anonymous_0) -FN:28,(anonymous_1) -FN:32,(anonymous_2) -FN:47,(anonymous_3) -FN:60,(anonymous_4) -FN:77,(anonymous_5) -FN:80,(anonymous_6) -FN:81,(anonymous_7) -FN:82,(anonymous_8) -FN:92,(anonymous_9) -FN:103,(anonymous_10) -FN:113,(anonymous_11) -FNF:12 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:6,5 -DA:8,0 -DA:14,0 -DA:19,0 -DA:29,0 -DA:38,0 -DA:44,0 -DA:52,0 -DA:57,0 -DA:67,0 -DA:74,0 -DA:78,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:88,0 -DA:90,0 -DA:92,0 -DA:103,0 -DA:113,0 -LF:23 -LH:1 -BRDA:83,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:lib/mainFn/index.ts -FN:21,(anonymous_0) -FN:27,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -DA:3,5 -DA:4,5 -DA:6,5 -DA:10,5 -DA:21,5 -DA:27,0 -DA:28,0 -DA:29,0 -LF:8 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/manifest/setupManifest.ts -FN:12,setupManifest -FN:32,(anonymous_1) -FN:63,(anonymous_2) -FN:70,(anonymous_3) -FN:77,(anonymous_4) -FNF:5 -FNH:1 -FNDA:5,setupManifest -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:4,4 -DA:12,4 -DA:31,5 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:41,5 -DA:63,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:77,0 -LF:15 -LH:4 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:34,1,0,0 -BRDA:35,2,0,0 -BRDA:35,2,1,0 -BRDA:47,3,0,5 -BRDA:47,3,1,0 -BRDA:52,4,0,5 -BRDA:52,4,1,5 -BRDA:53,5,0,5 -BRDA:53,5,1,5 -BRDA:54,6,0,5 -BRDA:54,6,1,5 -BRDA:55,7,0,5 -BRDA:55,7,1,5 -BRDA:56,8,0,5 -BRDA:56,8,1,5 -BRDA:57,9,0,5 -BRDA:57,9,1,5 -BRDA:59,10,0,5 -BRDA:59,10,1,0 -BRDA:62,11,0,5 -BRDA:62,11,1,5 -BRDA:66,12,0,5 -BRDA:66,12,1,5 -BRDA:68,13,0,5 -BRDA:68,13,1,0 -BRDA:71,14,0,0 -BRDA:74,15,0,0 -BRF:29 -BRH:19 -end_of_record -TN: -SF:lib/store/PathBuilder.ts -FN:22,(anonymous_0) -FN:26,(anonymous_1) -FN:30,(anonymous_2) -FNF:3 -FNH:1 -FNDA:0,(anonymous_0) -FNDA:6,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,5 -DA:21,5 -DA:22,5 -DA:23,0 -DA:26,5 -DA:29,6 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -LF:10 -LH:5 -BRDA:27,0,0,6 -BRDA:31,1,0,0 -BRDA:32,2,0,0 -BRF:3 -BRH:1 -end_of_record -TN: -SF:lib/store/getStore.ts -FN:5,(anonymous_0) -FN:17,(anonymous_1) -FN:27,(anonymous_2) -FN:37,(anonymous_3) -FN:40,(anonymous_4) -FN:46,(anonymous_5) -FN:52,getStore -FNF:7 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,getStore -DA:2,5 -DA:4,5 -DA:6,0 -DA:7,0 -DA:8,0 -DA:18,0 -DA:28,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:46,0 -DA:48,0 -DA:52,5 -DA:60,0 -LF:15 -LH:3 -BRDA:8,0,0,0 -BRDA:55,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/test/output.sdk.ts -FNF:0 -FNH:0 -DA:1,4 -DA:2,4 -DA:3,4 -DA:4,4 -DA:7,4 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/test/output.ts -FNF:0 -FNH:0 -DA:2,2 -DA:3,2 -DA:5,2 -DA:376,2 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/trigger/changeOnFirstSuccess.ts -FN:3,changeOnFirstSuccess -FN:7,(anonymous_1) -FNF:2 -FNH:1 -FNDA:5,changeOnFirstSuccess -FNDA:0,(anonymous_1) -DA:3,5 -DA:7,5 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:28,0 -DA:29,0 -LF:16 -LH:2 -BRDA:16,0,0,0 -BRDA:16,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/trigger/cooldownTrigger.ts -FN:1,cooldownTrigger -FN:2,(anonymous_1) -FN:4,(anonymous_2) -FNF:3 -FNH:1 -FNDA:10,cooldownTrigger -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,5 -DA:2,10 -DA:3,0 -DA:4,0 -DA:5,0 -LF:5 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/trigger/defaultTrigger.ts -FNF:0 -FNH:0 -DA:1,5 -DA:2,5 -DA:5,5 -LF:3 -LH:3 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/trigger/index.ts -FN:3,(anonymous_0) -FN:4,(anonymous_1) -FNF:2 -FNH:2 -FNDA:6,(anonymous_0) -FNDA:6,(anonymous_1) -DA:3,11 -DA:4,11 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/trigger/lastStatus.ts -FN:8,lastStatus -FN:9,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,lastStatus -FNDA:0,(anonymous_1) -DA:8,5 -DA:9,0 -DA:10,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -LF:16 -LH:1 -BRDA:19,0,0,0 -BRDA:23,1,0,0 -BRDA:26,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:lib/trigger/successFailure.ts -FN:4,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,5 -DA:4,5 -DA:7,0 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/GetSslCertificate.ts -FN:5,(anonymous_0) -FN:14,(anonymous_1) -FN:24,(anonymous_2) -FN:33,(anonymous_3) -FN:36,(anonymous_4) -FN:42,(anonymous_5) -FNF:6 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:4,5 -DA:6,0 -DA:7,0 -DA:8,0 -DA:15,0 -DA:25,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:42,0 -DA:44,0 -LF:12 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/GetSystemSmtp.ts -FN:4,(anonymous_0) -FN:9,(anonymous_1) -FN:17,(anonymous_2) -FN:23,(anonymous_3) -FN:26,(anonymous_4) -FN:30,(anonymous_5) -FNF:6 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:3,5 -DA:4,0 -DA:10,0 -DA:18,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:32,0 -LF:10 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/Hostname.ts -FN:3,hostnameInfoToAddress -FNF:1 -FNH:0 -FNDA:0,hostnameInfoToAddress -DA:3,5 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -LF:15 -LH:1 -BRDA:4,0,0,0 -BRDA:7,1,0,0 -BRDA:11,2,0,0 -BRDA:12,3,0,0 -BRDA:12,3,1,0 -BRDA:14,4,0,0 -BRDA:14,4,1,0 -BRDA:15,5,0,0 -BRDA:15,5,1,0 -BRDA:16,6,0,0 -BRDA:16,7,0,0 -BRDA:16,7,1,0 -BRDA:19,8,0,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:lib/util/SubContainer.ts -FN:8,(anonymous_6) -FN:9,(anonymous_7) -FN:51,(anonymous_8) -FN:62,(anonymous_9) -FN:66,(anonymous_10) -FN:67,(anonymous_11) -FN:70,(anonymous_12) -FN:86,(anonymous_13) -FN:113,(anonymous_14) -FN:130,(anonymous_15) -FN:175,(anonymous_16) -FN:179,(anonymous_17) -FN:181,(anonymous_18) -FN:193,(anonymous_19) -FN:194,(anonymous_20) -FN:201,(anonymous_21) -FN:216,(anonymous_22) -FN:242,(anonymous_23) -FN:243,(anonymous_24) -FN:251,(anonymous_25) -FN:257,(anonymous_26) -FN:258,(anonymous_27) -FN:270,(anonymous_28) -FN:274,(anonymous_29) -FN:278,(anonymous_30) -FN:290,(anonymous_31) -FN:299,(anonymous_32) -FN:326,(anonymous_33) -FN:332,(anonymous_34) -FN:341,(anonymous_35) -FN:375,(anonymous_36) -FN:376,(anonymous_37) -FN:380,(anonymous_38) -FN:387,(anonymous_39) -FN:432,wait -FN:433,(anonymous_41) -FNF:36 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,wait -FNDA:0,(anonymous_41) -DA:1,5 -DA:3,5 -DA:4,5 -DA:5,5 -DA:6,5 -DA:7,5 -DA:8,5 -DA:9,5 -DA:21,5 -DA:47,5 -DA:49,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:62,0 -DA:63,0 -DA:65,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:72,0 -DA:73,0 -DA:78,0 -DA:80,0 -DA:82,0 -DA:90,0 -DA:91,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:100,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:110,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:124,0 -DA:126,0 -DA:131,0 -DA:134,0 -DA:135,0 -DA:140,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:151,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:164,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:172,0 -DA:176,0 -DA:177,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:184,0 -DA:185,0 -DA:188,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:197,0 -DA:211,0 -DA:212,0 -DA:216,0 -DA:218,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:223,0 -DA:224,0 -DA:225,0 -DA:226,0 -DA:228,0 -DA:241,0 -DA:242,0 -DA:243,0 -DA:244,0 -DA:245,0 -DA:247,0 -DA:251,0 -DA:253,0 -DA:254,0 -DA:255,0 -DA:257,0 -DA:258,0 -DA:259,0 -DA:260,0 -DA:261,0 -DA:262,0 -DA:267,0 -DA:270,0 -DA:271,0 -DA:273,0 -DA:274,0 -DA:276,0 -DA:277,0 -DA:278,0 -DA:279,0 -DA:280,0 -DA:294,0 -DA:295,0 -DA:299,0 -DA:301,0 -DA:302,0 -DA:303,0 -DA:304,0 -DA:306,0 -DA:307,0 -DA:308,0 -DA:309,0 -DA:311,0 -DA:312,0 -DA:313,0 -DA:326,0 -DA:327,0 -DA:329,0 -DA:336,0 -DA:337,0 -DA:341,0 -DA:343,0 -DA:344,0 -DA:345,0 -DA:346,0 -DA:348,0 -DA:349,0 -DA:350,0 -DA:351,0 -DA:353,0 -DA:374,5 -DA:375,0 -DA:377,0 -DA:385,0 -DA:391,0 -DA:433,0 -LF:157 -LH:11 -BRDA:72,0,0,0 -BRDA:96,1,0,0 -BRDA:131,2,0,0 -BRDA:131,2,1,0 -BRDA:134,3,0,0 -BRDA:134,3,1,0 -BRDA:135,4,0,0 -BRDA:135,4,1,0 -BRDA:136,5,0,0 -BRDA:136,5,1,0 -BRDA:145,6,0,0 -BRDA:145,6,1,0 -BRDA:146,7,0,0 -BRDA:146,7,1,0 -BRDA:147,8,0,0 -BRDA:147,8,1,0 -BRDA:156,9,0,0 -BRDA:156,9,1,0 -BRDA:158,10,0,0 -BRDA:158,10,1,0 -BRDA:159,11,0,0 -BRDA:159,11,1,0 -BRDA:160,12,0,0 -BRDA:160,12,1,0 -BRDA:176,13,0,0 -BRDA:184,14,0,0 -BRDA:204,15,0,0 -BRDA:219,16,0,0 -BRDA:223,17,0,0 -BRDA:223,17,1,0 -BRDA:224,18,0,0 -BRDA:239,19,0,0 -BRDA:239,19,1,0 -BRDA:241,20,0,0 -BRDA:244,21,0,0 -BRDA:244,21,1,0 -BRDA:259,22,0,0 -BRDA:259,22,1,0 -BRDA:259,23,0,0 -BRDA:259,23,1,0 -BRDA:261,24,0,0 -BRDA:261,24,1,0 -BRDA:261,25,0,0 -BRDA:261,25,1,0 -BRDA:273,26,0,0 -BRDA:273,27,0,0 -BRDA:273,27,1,0 -BRDA:302,28,0,0 -BRDA:306,29,0,0 -BRDA:306,29,1,0 -BRDA:307,30,0,0 -BRDA:344,31,0,0 -BRDA:348,32,0,0 -BRDA:348,32,1,0 -BRDA:349,33,0,0 -BRF:55 -BRH:0 -end_of_record -TN: -SF:lib/util/asError.ts -FN:1,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,5 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:1 -BRDA:2,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:lib/util/deepEqual.ts -FN:3,deepEqual -FN:11,(anonymous_1) -FNF:2 -FNH:2 -FNDA:11,deepEqual -FNDA:6,(anonymous_1) -DA:1,6 -DA:3,6 -DA:4,11 -DA:5,3 -DA:6,3 -DA:7,0 -DA:8,0 -DA:10,3 -DA:11,6 -DA:12,3 -DA:13,5 -DA:14,10 -DA:15,10 -DA:18,3 -LF:14 -LH:12 -BRDA:4,0,0,8 -BRDA:6,1,0,0 -BRDA:7,2,0,0 -BRDA:10,3,0,0 -BRDA:14,4,0,0 -BRDA:15,5,0,0 -BRF:6 -BRH:1 -end_of_record -TN: -SF:lib/util/deepMerge.ts -FN:3,deepMerge -FN:6,(anonymous_1) -FN:9,(anonymous_2) -FN:11,(anonymous_3) -FNF:4 -FNH:4 -FNDA:253,deepMerge -FNDA:126,(anonymous_1) -FNDA:149,(anonymous_2) -FNDA:528,(anonymous_3) -DA:1,6 -DA:3,6 -DA:4,253 -DA:5,253 -DA:6,126 -DA:7,97 -DA:8,71 -DA:9,149 -DA:10,71 -DA:11,242 -DA:12,528 -DA:14,242 -DA:16,71 -LF:13 -LH:13 -BRDA:5,0,0,156 -BRDA:7,1,0,26 -BRDA:8,2,0,50 -BRDA:12,3,0,262 -BRDA:12,3,1,266 -BRF:5 -BRH:5 -end_of_record -TN: -SF:lib/util/fileHelper.ts -FN:56,(anonymous_7) -FN:61,(anonymous_8) -FN:69,(anonymous_9) -FN:72,(anonymous_10) -FN:73,(anonymous_11) -FN:79,(anonymous_12) -FN:83,(anonymous_13) -FN:84,(anonymous_14) -FN:93,(anonymous_15) -FN:103,(anonymous_16) -FN:106,(anonymous_17) -FN:109,(anonymous_18) -FN:117,(anonymous_19) -FN:123,(anonymous_20) -FN:126,(anonymous_21) -FN:134,(anonymous_22) -FN:140,(anonymous_23) -FN:143,(anonymous_24) -FNF:18 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -DA:2,5 -DA:3,5 -DA:4,5 -DA:6,5 -DA:8,5 -DA:55,5 -DA:57,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:67,0 -DA:70,0 -DA:72,0 -DA:73,0 -DA:76,0 -DA:78,0 -DA:79,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:98,0 -DA:104,0 -DA:107,0 -DA:110,0 -DA:121,0 -DA:124,0 -DA:127,0 -DA:138,0 -DA:141,0 -DA:144,0 -DA:150,5 -LF:33 -LH:7 -BRDA:63,0,0,0 -BRDA:70,1,0,0 -BRDA:84,2,0,0 -BRDA:84,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:lib/util/getDefaultString.ts -FN:4,getDefaultString -FNF:1 -FNH:0 -FNDA:0,getDefaultString -DA:2,5 -DA:4,5 -DA:5,0 -DA:6,0 -DA:8,0 -LF:5 -LH:2 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/util/getRandomCharInSet.ts -FN:3,getRandomCharInSet -FN:16,stringToCharSet -FNF:2 -FNH:0 -FNDA:0,getRandomCharInSet -FNDA:0,stringToCharSet -DA:3,5 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:67,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:75,0 -DA:76,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:90,0 -LF:56 -LH:1 -BRDA:9,0,0,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRDA:22,1,2,0 -BRDA:24,2,0,0 -BRDA:24,2,1,0 -BRDA:24,3,0,0 -BRDA:24,3,1,0 -BRDA:25,4,0,0 -BRDA:38,5,0,0 -BRDA:38,5,1,0 -BRDA:38,6,0,0 -BRDA:38,6,1,0 -BRDA:42,7,0,0 -BRDA:42,7,1,0 -BRDA:42,8,0,0 -BRDA:42,8,1,0 -BRDA:44,9,0,0 -BRDA:44,9,1,0 -BRDA:44,10,0,0 -BRDA:44,10,1,0 -BRDA:44,10,2,0 -BRDA:51,11,0,0 -BRDA:51,11,1,0 -BRDA:53,12,0,0 -BRDA:53,12,1,0 -BRDA:55,13,0,0 -BRDA:55,13,1,0 -BRDA:55,14,0,0 -BRDA:55,14,1,0 -BRDA:62,15,0,0 -BRDA:62,15,1,0 -BRDA:64,16,0,0 -BRDA:64,16,1,0 -BRDA:64,17,0,0 -BRDA:64,17,1,0 -BRDA:71,18,0,0 -BRDA:71,18,1,0 -BRDA:71,19,0,0 -BRDA:71,19,1,0 -BRDA:72,20,0,0 -BRDA:82,21,0,0 -BRF:42 -BRH:0 -end_of_record -TN: -SF:lib/util/getRandomString.ts -FN:4,getRandomString -FNF:1 -FNH:0 -FNDA:0,getRandomString -DA:2,5 -DA:4,5 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -LF:6 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/getServiceInterface.ts -FN:19,(anonymous_0) -FN:67,(anonymous_1) -FN:68,(anonymous_2) -FN:69,(anonymous_3) -FN:71,(anonymous_4) -FN:72,(anonymous_5) -FN:74,(anonymous_6) -FN:75,(anonymous_7) -FN:80,(anonymous_8) -FN:111,(anonymous_9) -FN:121,(anonymous_10) -FN:122,(anonymous_11) -FN:124,(anonymous_12) -FN:126,(anonymous_13) -FN:129,(anonymous_14) -FN:131,(anonymous_15) -FN:136,(anonymous_16) -FN:138,(anonymous_17) -FN:141,(anonymous_18) -FN:143,(anonymous_19) -FN:146,(anonymous_20) -FN:148,(anonymous_21) -FN:154,(anonymous_22) -FN:157,(anonymous_23) -FN:160,(anonymous_24) -FN:163,(anonymous_25) -FN:166,(anonymous_26) -FN:169,(anonymous_27) -FN:172,(anonymous_28) -FN:178,(anonymous_29) -FN:216,(anonymous_30) -FN:225,(anonymous_31) -FN:233,(anonymous_32) -FN:248,(anonymous_33) -FN:262,(anonymous_34) -FN:265,(anonymous_35) -FN:266,(anonymous_36) -FN:279,getServiceInterface -FNF:38 -FNH:1 -FNDA:8,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,getServiceInterface -DA:2,6 -DA:18,6 -DA:19,6 -DA:20,8 -DA:21,8 -DA:22,8 -DA:23,8 -DA:24,8 -DA:67,6 -DA:68,0 -DA:69,0 -DA:71,6 -DA:72,0 -DA:73,0 -DA:74,6 -DA:75,6 -DA:79,0 -DA:80,0 -DA:82,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:94,0 -DA:97,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:105,0 -DA:108,0 -DA:111,6 -DA:115,0 -DA:116,0 -DA:118,0 -DA:122,0 -DA:125,0 -DA:126,0 -DA:130,0 -DA:132,0 -DA:137,0 -DA:138,0 -DA:142,0 -DA:143,0 -DA:147,0 -DA:149,0 -DA:155,0 -DA:158,0 -DA:161,0 -DA:164,0 -DA:167,0 -DA:170,0 -DA:173,0 -DA:178,6 -DA:189,0 -DA:194,0 -DA:195,0 -DA:197,0 -DA:198,0 -DA:203,0 -DA:209,0 -DA:217,0 -DA:218,0 -DA:221,0 -DA:224,6 -DA:226,0 -DA:227,0 -DA:234,0 -DA:235,0 -DA:236,0 -DA:243,0 -DA:249,0 -DA:250,0 -DA:256,0 -DA:263,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:267,0 -DA:269,0 -DA:275,0 -DA:279,6 -DA:283,0 -LF:85 -LH:16 -BRDA:21,0,0,0 -BRDA:82,1,0,0 -BRDA:82,1,1,0 -BRDA:82,1,2,0 -BRDA:86,2,0,0 -BRDA:86,2,1,0 -BRDA:88,3,0,0 -BRDA:89,4,0,0 -BRDA:89,4,1,0 -BRDA:90,5,0,0 -BRDA:90,5,1,0 -BRDA:91,6,0,0 -BRDA:91,6,1,0 -BRDA:97,7,0,0 -BRDA:97,7,1,0 -BRDA:98,8,0,0 -BRDA:98,8,1,0 -BRDA:99,9,0,0 -BRDA:99,9,1,0 -BRDA:101,10,0,0 -BRDA:104,11,0,0 -BRDA:126,12,0,0 -BRDA:126,12,1,0 -BRDA:132,13,0,0 -BRDA:132,13,1,0 -BRDA:132,13,2,0 -BRDA:138,14,0,0 -BRDA:138,14,1,0 -BRDA:143,15,0,0 -BRDA:143,15,1,0 -BRDA:149,16,0,0 -BRDA:149,16,1,0 -BRDA:149,16,2,0 -BRDA:194,17,0,0 -BRDA:213,18,0,0 -BRDA:213,18,1,0 -BRDA:217,19,0,0 -BRF:37 -BRH:0 -end_of_record -TN: -SF:lib/util/getServiceInterfaces.ts -FN:8,(anonymous_0) -FN:23,(anonymous_1) -FN:39,(anonymous_2) -FN:45,(anonymous_3) -FN:56,(anonymous_4) -FN:64,(anonymous_5) -FN:79,(anonymous_6) -FN:93,(anonymous_7) -FN:96,(anonymous_8) -FN:97,(anonymous_9) -FN:109,getServiceInterfaces -FNF:11 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,getServiceInterfaces -DA:2,5 -DA:8,5 -DA:17,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:39,0 -DA:40,0 -DA:46,0 -DA:47,0 -DA:52,0 -DA:55,5 -DA:57,0 -DA:58,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:74,0 -DA:80,0 -DA:82,0 -DA:87,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:100,0 -DA:105,0 -DA:109,5 -DA:113,0 -LF:33 -LH:4 -BRDA:30,0,0,0 -BRDA:46,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/util/graph.ts -FN:16,(anonymous_0) -FN:17,(anonymous_1) -FN:47,(anonymous_2) -FN:51,gen -FN:60,(anonymous_4) -FN:74,(anonymous_5) -FN:80,rec -FN:89,(anonymous_7) -FN:90,(anonymous_8) -FN:106,(anonymous_9) -FN:123,(anonymous_10) -FN:129,rec -FN:138,(anonymous_12) -FN:139,(anonymous_13) -FN:155,(anonymous_14) -FN:172,(anonymous_15) -FN:183,(anonymous_16) -FN:186,check -FN:199,(anonymous_18) -FN:200,(anonymous_19) -FN:219,(anonymous_20) -FNF:21 -FNH:20 -FNDA:11,(anonymous_0) -FNDA:39,(anonymous_1) -FNDA:1,(anonymous_2) -FNDA:1,gen -FNDA:12,(anonymous_4) -FNDA:6,(anonymous_5) -FNDA:15,rec -FNDA:23,(anonymous_7) -FNDA:9,(anonymous_8) -FNDA:5,(anonymous_9) -FNDA:6,(anonymous_10) -FNDA:15,rec -FNDA:23,(anonymous_12) -FNDA:9,(anonymous_13) -FNDA:5,(anonymous_14) -FNDA:3,(anonymous_15) -FNDA:11,(anonymous_16) -FNDA:11,check -FNDA:12,(anonymous_18) -FNDA:8,(anonymous_19) -FNDA:0,(anonymous_20) -DA:14,5 -DA:15,11 -DA:22,39 -DA:26,39 -DA:27,20 -DA:32,20 -DA:33,20 -DA:35,39 -DA:36,1 -DA:41,1 -DA:42,1 -DA:44,39 -DA:45,39 -DA:50,1 -DA:52,1 -DA:53,4 -DA:54,1 -DA:58,1 -DA:65,12 -DA:70,12 -DA:71,12 -DA:72,12 -DA:79,6 -DA:83,15 -DA:84,1 -DA:86,14 -DA:87,14 -DA:88,14 -DA:89,23 -DA:90,9 -DA:91,14 -DA:92,16 -DA:93,16 -DA:94,16 -DA:95,18 -DA:96,18 -DA:97,9 -DA:98,9 -DA:104,6 -DA:105,5 -DA:106,5 -DA:107,5 -DA:108,15 -DA:109,15 -DA:110,15 -DA:111,15 -DA:112,15 -DA:113,10 -DA:114,10 -DA:120,1 -DA:128,6 -DA:132,15 -DA:133,1 -DA:135,14 -DA:136,14 -DA:137,14 -DA:138,23 -DA:139,9 -DA:140,14 -DA:141,16 -DA:142,16 -DA:143,16 -DA:144,18 -DA:145,18 -DA:146,9 -DA:147,9 -DA:153,6 -DA:154,5 -DA:155,5 -DA:156,5 -DA:157,15 -DA:158,15 -DA:159,15 -DA:160,15 -DA:161,15 -DA:162,10 -DA:163,10 -DA:169,1 -DA:181,3 -DA:183,11 -DA:184,3 -DA:185,3 -DA:190,11 -DA:191,3 -DA:193,8 -DA:194,0 -DA:196,8 -DA:197,8 -DA:198,6 -DA:199,12 -DA:200,8 -DA:201,6 -DA:202,11 -DA:203,11 -DA:204,11 -DA:205,13 -DA:206,13 -DA:207,6 -DA:208,6 -DA:211,7 -DA:212,7 -DA:218,3 -DA:219,0 -DA:220,0 -DA:221,0 -DA:222,0 -DA:223,0 -DA:224,0 -DA:225,0 -DA:226,0 -DA:227,0 -DA:230,0 -DA:235,3 -DA:236,3 -DA:237,11 -DA:238,11 -DA:239,3 -LF:117 -LH:106 -BRDA:53,0,0,1 -BRDA:83,1,0,1 -BRDA:96,2,0,9 -BRDA:104,3,0,5 -BRDA:104,3,1,1 -BRDA:112,4,0,10 -BRDA:132,5,0,1 -BRDA:145,6,0,9 -BRDA:153,7,0,5 -BRDA:153,7,1,1 -BRDA:161,8,0,10 -BRDA:181,9,0,0 -BRDA:181,9,1,3 -BRDA:190,10,0,3 -BRDA:193,11,0,0 -BRDA:206,12,0,6 -BRDA:206,12,1,7 -BRDA:207,13,0,6 -BRDA:218,14,0,0 -BRDA:218,14,1,3 -BRDA:225,15,0,0 -BRDA:225,15,1,0 -BRDA:226,16,0,0 -BRDA:238,17,0,3 -BRF:24 -BRH:18 -end_of_record -TN: -SF:lib/util/inMs.ts -FN:5,(anonymous_0) -FN:14,(anonymous_1) -FN:20,(anonymous_2) -FNF:3 -FNH:1 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:1,(anonymous_2) -DA:3,6 -DA:5,6 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,6 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,6 -DA:21,1 -DA:22,1 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -LF:24 -LH:6 -BRDA:6,0,0,0 -BRDA:7,1,0,0 -BRDA:8,2,0,0 -BRDA:9,3,0,0 -BRDA:10,4,0,0 -BRDA:11,5,0,0 -BRDA:15,6,0,0 -BRDA:21,7,0,0 -BRDA:22,8,0,1 -BRDA:24,9,0,0 -BRDA:27,10,0,0 -BRDA:27,10,1,0 -BRF:12 -BRH:1 -end_of_record -TN: -SF:lib/util/index.ts -FN:9,(anonymous_4) -FN:9,(anonymous_5) -FN:10,(anonymous_6) -FN:11,(anonymous_7) -FN:12,(anonymous_8) -FN:13,(anonymous_9) -FN:15,(anonymous_10) -FN:16,(anonymous_11) -FNF:8 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,5 -DA:2,5 -DA:3,5 -DA:4,5 -DA:5,5 -DA:6,5 -DA:7,5 -DA:9,5 -DA:10,5 -DA:11,5 -DA:12,5 -DA:13,5 -DA:14,5 -DA:15,5 -DA:16,5 -LF:15 -LH:15 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/nullIfEmpty.ts -FN:7,nullIfEmpty -FNF:1 -FNH:0 -FNDA:0,nullIfEmpty -DA:7,5 -DA:10,0 -DA:11,0 -LF:3 -LH:1 -BRDA:10,0,0,0 -BRDA:11,1,0,0 -BRDA:11,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:lib/util/once.ts -FN:1,once -FN:3,(anonymous_1) -FNF:2 -FNH:2 -FNDA:26,once -FNDA:139,(anonymous_1) -DA:1,6 -DA:2,26 -DA:3,26 -DA:4,139 -DA:5,25 -DA:7,139 -LF:6 -LH:6 -BRDA:4,0,0,25 -BRF:1 -BRH:1 -end_of_record -TN: -SF:lib/util/patterns.ts -FNF:0 -FNH:0 -DA:2,5 -DA:4,5 -DA:9,5 -DA:14,5 -DA:19,5 -DA:24,5 -DA:29,5 -DA:34,5 -DA:39,5 -DA:44,5 -DA:50,5 -DA:55,5 -LF:12 -LH:12 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/regexes.ts -FNF:0 -FNH:0 -DA:2,5 -DA:6,5 -DA:9,5 -DA:12,5 -DA:14,5 -DA:17,5 -DA:20,5 -DA:23,5 -DA:27,5 -DA:30,5 -DA:33,5 -LF:11 -LH:11 -BRF:0 -BRH:0 -end_of_record -TN: -SF:lib/util/splitCommand.ts -FN:3,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,5 -DA:3,5 -DA:6,0 -DA:7,0 -LF:4 -LH:2 -BRDA:6,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:lib/util/stringFromStdErrOut.ts -FN:1,stringFromStdErrOut -FNF:1 -FNH:0 -FNDA:0,stringFromStdErrOut -DA:1,6 -DA:5,0 -LF:2 -LH:1 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:lib/util/typeHelpers.ts -FN:11,(anonymous_0) -FN:106,test -FN:108,(anonymous_2) -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,test -FNDA:0,(anonymous_2) -DA:11,5 -DA:12,0 -DA:108,0 -DA:113,0 -DA:115,0 -LF:5 -LH:1 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:12,0,2,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:lib/version/VersionGraph.ts -FN:13,(anonymous_0) -FN:17,(anonymous_1) -FN:43,(anonymous_2) -FN:93,(anonymous_3) -FN:110,(anonymous_4) -FN:113,(anonymous_5) -FN:122,(anonymous_6) -FN:134,(anonymous_7) -FN:138,(anonymous_8) -FN:154,(anonymous_9) -FN:157,(anonymous_10) -FN:164,(anonymous_11) -FN:173,(anonymous_12) -FN:176,(anonymous_13) -FN:183,(anonymous_14) -FNF:15 -FNH:10 -FNDA:5,(anonymous_0) -FNDA:5,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:5,(anonymous_4) -FNDA:5,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:5,(anonymous_9) -FNDA:15,(anonymous_10) -FNDA:10,(anonymous_11) -FNDA:5,(anonymous_12) -FNDA:15,(anonymous_13) -FNDA:10,(anonymous_14) -DA:1,4 -DA:4,4 -DA:5,4 -DA:6,4 -DA:8,4 -DA:14,5 -DA:17,5 -DA:18,5 -DA:32,5 -DA:33,5 -DA:34,5 -DA:35,5 -DA:36,5 -DA:37,5 -DA:38,5 -DA:40,5 -DA:42,5 -DA:43,5 -DA:53,5 -DA:54,5 -DA:55,5 -DA:57,5 -DA:58,0 -DA:59,0 -DA:63,5 -DA:65,5 -DA:66,5 -DA:69,5 -DA:71,5 -DA:72,0 -DA:73,0 -DA:77,5 -DA:79,5 -DA:80,5 -DA:83,5 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:92,0 -DA:94,0 -DA:97,0 -DA:107,5 -DA:110,5 -DA:111,5 -DA:120,5 -DA:131,0 -DA:132,0 -DA:133,0 -DA:135,0 -DA:139,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:147,0 -DA:149,0 -DA:152,0 -DA:154,5 -DA:155,5 -DA:158,15 -DA:165,10 -DA:173,5 -DA:174,5 -DA:177,15 -DA:184,10 -LF:66 -LH:43 -BRDA:36,0,0,5 -BRDA:36,0,1,5 -BRDA:37,1,0,5 -BRDA:55,2,0,5 -BRDA:57,3,0,0 -BRDA:57,3,1,5 -BRDA:69,4,0,5 -BRDA:71,5,0,0 -BRDA:71,5,1,5 -BRDA:83,6,0,0 -BRDA:94,7,0,0 -BRDA:94,7,1,0 -BRDA:132,8,0,0 -BRDA:132,9,0,0 -BRDA:132,9,1,0 -BRDA:135,10,0,0 -BRDA:135,10,1,0 -BRDA:135,10,2,0 -BRDA:135,10,3,0 -BRDA:139,11,0,0 -BRDA:139,11,1,0 -BRDA:139,11,2,0 -BRDA:139,11,3,0 -BRDA:142,12,0,0 -BRDA:144,13,0,0 -BRDA:158,14,0,15 -BRDA:158,14,1,10 -BRDA:158,14,2,15 -BRDA:158,14,3,5 -BRDA:166,15,0,5 -BRDA:166,15,1,5 -BRDA:177,16,0,15 -BRDA:177,16,1,10 -BRDA:177,16,2,15 -BRDA:177,16,3,5 -BRDA:185,17,0,5 -BRDA:185,17,1,5 -BRF:37 -BRH:19 -end_of_record -TN: -SF:lib/version/VersionInfo.ts -FN:34,(anonymous_0) -FN:37,(anonymous_1) -FN:41,(anonymous_2) -FN:51,__type_tests -FNF:4 -FNH:3 -FNDA:13,(anonymous_0) -FNDA:5,(anonymous_1) -FNDA:8,(anonymous_2) -FNDA:0,__type_tests -DA:4,4 -DA:32,4 -DA:33,13 -DA:35,13 -DA:38,5 -DA:44,8 -DA:52,0 -DA:62,0 -DA:64,0 -DA:66,0 -DA:72,0 -LF:11 -LH:6 -BRF:0 -BRH:0 -end_of_record diff --git a/sdk/lib/test/output.ts b/sdk/lib/test/output.ts deleted file mode 100644 index ddcfeba35..000000000 --- a/sdk/lib/test/output.ts +++ /dev/null @@ -1,534 +0,0 @@ -import { sdk } from "./output.sdk"; -const { Config, List, Value, Variants } = sdk; - -export const configSpec = Config.of({ - mediasources: Value.multiselect({ - name: "Media Sources", - minLength: null, - maxLength: null, - default: ["nextcloud"], - description: "List of Media Sources to use with Jellyfin", - warning: null, - values: { - nextcloud: "NextCloud", - filebrowser: "File Browser", - }, - }), - testListUnion: Value.list( - /* TODO: Convert range for this value ([1,*))*/ List.obj( - { - name: "Lightning Nodes", - minLength: null, - maxLength: null, - default: [], - description: "List of Lightning Network node instances to manage", - warning: null, - }, - { - spec: Config.of({ - /* TODO: Convert range for this value ([1,*))*/ - union: Value.union( - { - name: "Type", - description: - "- LND: Lightning Network Daemon from Lightning Labs\n- CLN: Core Lightning from Blockstream\n", - warning: null, - required: { default: "lnd" }, - }, - Variants.of({ - lnd: { - name: "lnd", - spec: Config.of({ - name: Value.text({ - name: "Node Name", - required: { - default: "LND Wrapper", - }, - description: "Name of this node in the list", - warning: null, - masked: false, - placeholder: null, - inputmode: "text", - patterns: [], - minLength: null, - maxLength: null, - }), - }), - }, - }), - ), - }), - displayAs: "{{name}}", - uniqueBy: "name", - }, - ), - ), - rpc: Value.object( - { - name: "RPC Settings", - description: "RPC configuration options.", - warning: null, - }, - Config.of({ - enable: Value.toggle({ - name: "Enable", - default: true, - description: "Allow remote RPC requests.", - warning: null, - }), - username: Value.text({ - name: "Username", - required: { - default: "bitcoin", - }, - description: "The username for connecting to Bitcoin over RPC.", - warning: null, - masked: true, - placeholder: null, - inputmode: "text", - patterns: [ - { - regex: "^[a-zA-Z0-9_]+$", - description: "Must be alphanumeric (can contain underscore).", - }, - ], - minLength: null, - maxLength: null, - }), - password: Value.text({ - name: "RPC Password", - required: { - default: { - charset: "a-z,2-7", - len: 20, - }, - }, - description: "The password for connecting to Bitcoin over RPC.", - warning: null, - masked: true, - placeholder: null, - inputmode: "text", - patterns: [ - { - regex: '^[^\\n"]*$', - description: "Must not contain newline or quote characters.", - }, - ], - minLength: null, - maxLength: null, - }), - bio: Value.textarea({ - name: "Username", - description: "The username for connecting to Bitcoin over RPC.", - warning: null, - required: true, - placeholder: null, - maxLength: null, - minLength: null, - }), - advanced: Value.object( - { - name: "Advanced", - description: "Advanced RPC Settings", - warning: null, - }, - Config.of({ - auth: Value.list( - /* TODO: Convert range for this value ([0,*))*/ List.text( - { - name: "Authorization", - minLength: null, - maxLength: null, - default: [], - description: - "Username and hashed password for JSON-RPC connections. RPC clients connect using the usual http basic authentication.", - warning: null, - }, - { - masked: false, - placeholder: null, - patterns: [ - { - regex: - "^[a-zA-Z0-9_-]+:([0-9a-fA-F]{2})+\\$([0-9a-fA-F]{2})+$", - description: - 'Each item must be of the form ":$".', - }, - ], - minLength: null, - maxLength: null, - }, - ), - ), - serialversion: Value.select({ - name: "Serialization Version", - description: - "Return raw transaction or block hex with Segwit or non-SegWit serialization.", - warning: null, - required: { - default: "segwit", - }, - values: { - "non-segwit": "non-segwit", - segwit: "segwit", - }, - } as const), - servertimeout: - /* TODO: Convert range for this value ([5,300])*/ Value.number({ - name: "Rpc Server Timeout", - description: - "Number of seconds after which an uncompleted RPC call will time out.", - warning: null, - required: { - default: 30, - }, - min: null, - max: null, - step: null, - integer: true, - units: "seconds", - placeholder: null, - }), - threads: - /* TODO: Convert range for this value ([1,64])*/ Value.number({ - name: "Threads", - description: - "Set the number of threads for handling RPC calls. You may wish to increase this if you are making lots of calls via an integration.", - warning: null, - required: { - default: 16, - }, - min: null, - max: null, - step: null, - integer: true, - units: null, - placeholder: null, - }), - workqueue: - /* TODO: Convert range for this value ([8,256])*/ Value.number({ - name: "Work Queue", - description: - "Set the depth of the work queue to service RPC calls. Determines how long the backlog of RPC requests can get before it just rejects new ones.", - warning: null, - required: { - default: 128, - }, - min: null, - max: null, - step: null, - integer: true, - units: "requests", - placeholder: null, - }), - }), - ), - }), - ), - "zmq-enabled": Value.toggle({ - name: "ZeroMQ Enabled", - default: true, - description: "Enable the ZeroMQ interface", - warning: null, - }), - txindex: Value.toggle({ - name: "Transaction Index", - default: true, - description: "Enable the Transaction Index (txindex)", - warning: null, - }), - wallet: Value.object( - { - name: "Wallet", - description: "Wallet Settings", - warning: null, - }, - Config.of({ - enable: Value.toggle({ - name: "Enable Wallet", - default: true, - description: "Load the wallet and enable wallet RPC calls.", - warning: null, - }), - avoidpartialspends: Value.toggle({ - name: "Avoid Partial Spends", - default: true, - description: - "Group outputs by address, selecting all or none, instead of selecting on a per-output basis. This improves privacy at the expense of higher transaction fees.", - warning: null, - }), - discardfee: - /* TODO: Convert range for this value ([0,.01])*/ Value.number({ - name: "Discard Change Tolerance", - description: - "The fee rate (in BTC/kB) that indicates your tolerance for discarding change by adding it to the fee.", - warning: null, - required: { - default: 0.0001, - }, - min: null, - max: null, - step: null, - integer: false, - units: "BTC/kB", - placeholder: null, - }), - }), - ), - advanced: Value.object( - { - name: "Advanced", - description: "Advanced Settings", - warning: null, - }, - Config.of({ - mempool: Value.object( - { - name: "Mempool", - description: "Mempool Settings", - warning: null, - }, - Config.of({ - mempoolfullrbf: Value.toggle({ - name: "Enable Full RBF", - default: false, - description: - "Policy for your node to use for relaying and mining unconfirmed transactions. For details, see https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-24.0.md#notice-of-new-option-for-transaction-replacement-policies", - warning: null, - }), - persistmempool: Value.toggle({ - name: "Persist Mempool", - default: true, - description: "Save the mempool on shutdown and load on restart.", - warning: null, - }), - maxmempool: - /* TODO: Convert range for this value ([1,*))*/ Value.number({ - name: "Max Mempool Size", - description: - "Keep the transaction memory pool below megabytes.", - warning: null, - required: { - default: 300, - }, - min: null, - max: null, - step: null, - integer: true, - units: "MiB", - placeholder: null, - }), - mempoolexpiry: - /* TODO: Convert range for this value ([1,*))*/ Value.number({ - name: "Mempool Expiration", - description: - "Do not keep transactions in the mempool longer than hours.", - warning: null, - required: { - default: 336, - }, - min: null, - max: null, - step: null, - integer: true, - units: "Hr", - placeholder: null, - }), - }), - ), - peers: Value.object( - { - name: "Peers", - description: "Peer Connection Settings", - warning: null, - }, - Config.of({ - listen: Value.toggle({ - name: "Make Public", - default: true, - description: - "Allow other nodes to find your server on the network.", - warning: null, - }), - onlyconnect: Value.toggle({ - name: "Disable Peer Discovery", - default: false, - description: "Only connect to specified peers.", - warning: null, - }), - onlyonion: Value.toggle({ - name: "Disable Clearnet", - default: false, - description: "Only connect to peers over Tor.", - warning: null, - }), - addnode: Value.list( - /* TODO: Convert range for this value ([0,*))*/ List.obj( - { - name: "Add Nodes", - minLength: null, - maxLength: null, - default: [], - description: "Add addresses of nodes to connect to.", - warning: null, - }, - { - spec: Config.of({ - hostname: Value.text({ - name: "Hostname", - required: false, - description: "Domain or IP address of bitcoin peer", - warning: null, - masked: false, - placeholder: null, - inputmode: "text", - patterns: [ - { - regex: - "(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)|((^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$)|(^[a-z2-7]{16}\\.onion$)|(^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$))", - description: - "Must be either a domain name, or an IPv4 or IPv6 address. Do not include protocol scheme (eg 'http://') or port.", - }, - ], - minLength: null, - maxLength: null, - }), - port: /* TODO: Convert range for this value ([0,65535])*/ Value.number( - { - name: "Port", - description: - "Port that peer is listening on for inbound p2p connections", - warning: null, - required: false, - min: null, - max: null, - step: null, - integer: true, - units: null, - placeholder: null, - }, - ), - }), - displayAs: null, - uniqueBy: null, - }, - ), - ), - }), - ), - dbcache: /* TODO: Convert range for this value ((0,*))*/ Value.number({ - name: "Database Cache", - description: - "How much RAM to allocate for caching the TXO set. Higher values improve syncing performance, but increase your chance of using up all your system's memory or corrupting your database in the event of an ungraceful shutdown. Set this high but comfortably below your system's total RAM during IBD, then turn down to 450 (or leave blank) once the sync completes.", - warning: - "WARNING: Increasing this value results in a higher chance of ungraceful shutdowns, which can leave your node unusable if it happens during the initial block download. Use this setting with caution. Be sure to set this back to the default (450 or leave blank) once your node is synced. DO NOT press the STOP button if your dbcache is large. Instead, set this number back to the default, hit save, and wait for bitcoind to restart on its own.", - required: false, - min: null, - max: null, - step: null, - integer: true, - units: "MiB", - placeholder: null, - }), - pruning: Value.union( - { - name: "Pruning Settings", - description: - '- Disabled: Disable pruning\n- Automatic: Limit blockchain size on disk to a certain number of megabytes\n- Manual: Prune blockchain with the "pruneblockchain" RPC\n', - warning: null, - - // prettier-ignore - required: {"default":"disabled"}, - }, - Variants.of({ - disabled: { name: "Disabled", spec: Config.of({}) }, - automatic: { - name: "Automatic", - spec: Config.of({ - size: /* TODO: Convert range for this value ([550,1000000))*/ Value.number( - { - name: "Max Chain Size", - description: "Limit of blockchain size on disk.", - warning: - "Increasing this value will require re-syncing your node.", - required: { - default: 550, - }, - min: null, - max: null, - step: null, - integer: true, - units: "MiB", - placeholder: null, - }, - ), - }), - }, - manual: { - name: "Manual", - spec: Config.of({ - size: /* TODO: Convert range for this value ([550,1000000))*/ Value.number( - { - name: "Failsafe Chain Size", - description: "Prune blockchain if size expands beyond this.", - warning: null, - required: { - default: 65536, - }, - min: null, - max: null, - step: null, - integer: true, - units: "MiB", - placeholder: null, - }, - ), - }), - }, - }), - ), - blockfilters: Value.object( - { - name: "Block Filters", - description: "Settings for storing and serving compact block filters", - warning: null, - }, - Config.of({ - blockfilterindex: Value.toggle({ - name: "Compute Compact Block Filters (BIP158)", - default: true, - description: - "Generate Compact Block Filters during initial sync (IBD) to enable 'getblockfilter' RPC. This is useful if dependent services need block filters to efficiently scan for addresses/transactions etc.", - warning: null, - }), - peerblockfilters: Value.toggle({ - name: "Serve Compact Block Filters to Peers (BIP157)", - default: false, - description: - "Serve Compact Block Filters as a peer service to other nodes on the network. This is useful if you wish to connect an SPV client to your node to make it efficient to scan transactions without having to download all block data. 'Compute Compact Block Filters (BIP158)' is required.", - warning: null, - }), - }), - ), - bloomfilters: Value.object( - { - name: "Bloom Filters (BIP37)", - description: "Setting for serving Bloom Filters", - warning: null, - }, - Config.of({ - peerbloomfilters: Value.toggle({ - name: "Serve Bloom Filters to Peers", - default: false, - description: - "Peers have the option of setting filters on each connection they make after the version handshake has completed. Bloom filters are for clients implementing SPV (Simplified Payment Verification) that want to check that block headers connect together correctly, without needing to verify the full blockchain. The client must trust that the transactions in the chain are in fact valid. It is highly recommended AGAINST using for anything except Bisq integration.", - warning: - "This is ONLY for use with Bisq integration, please use Block Filters for all other applications.", - }), - }), - ), - }), - ), -}); -export const matchConfigSpec = configSpec.validator; -export type ConfigSpec = typeof matchConfigSpec._TYPE; diff --git a/sdk/package/lib/StartSdk.ts b/sdk/package/lib/StartSdk.ts index d639e6976..350f26d0b 100644 --- a/sdk/package/lib/StartSdk.ts +++ b/sdk/package/lib/StartSdk.ts @@ -1,7 +1,11 @@ import { Value } from "../../base/lib/actions/input/builder/value" import { InputSpec } from "../../base/lib/actions/input/builder/inputSpec" import { Variants } from "../../base/lib/actions/input/builder/variants" -import { Action, Actions } from "../../base/lib/actions/setupActions" +import { + Action, + ActionInfo, + Actions, +} from "../../base/lib/actions/setupActions" import { SyncOptions, ServiceInterfaceId, @@ -17,9 +21,7 @@ import { HealthCheck } from "./health/HealthCheck" import { checkPortListening } from "./health/checkFns/checkPortListening" import { checkWebUrl, runHealthScript } from "./health/checkFns" import { List } from "../../base/lib/actions/input/builder/list" -import { InstallFn, PostInstall, PreInstall } from "./inits/setupInstall" import { SetupBackupsParams, setupBackups } from "./backup/setupBackups" -import { UninstallFn, setupUninstall } from "./inits/setupUninstall" import { setupMain } from "./mainFn" import { defaultTrigger } from "./trigger/defaultTrigger" import { changeOnFirstSuccess, cooldownTrigger } from "./trigger" @@ -33,24 +35,40 @@ import { ServiceInterfaceBuilder } from "../../base/lib/interfaces/ServiceInterf import { GetSystemSmtp } from "./util" import { nullIfEmpty } from "./util" import { getServiceInterface, getServiceInterfaces } from "./util" -import { CommandOptions, ExitError, SubContainer } from "./util/SubContainer" +import { + CommandOptions, + ExitError, + SubContainer, + SubContainerOwned, +} from "./util/SubContainer" import { splitCommand } from "./util" import { Mounts } from "./mainFn/Mounts" import { setupDependencies } from "../../base/lib/dependencies/setupDependencies" import * as T from "../../base/lib/types" -import { testTypeVersion } from "../../base/lib/exver" +import { + ExtendedVersion, + testTypeVersion, + VersionRange, +} from "../../base/lib/exver" import { CheckDependencies, checkDependencies, } from "../../base/lib/dependencies/dependencies" import { GetSslCertificate } from "./util" -import { VersionGraph } from "./version" +import { getDataVersion, setDataVersion, VersionGraph } from "./version" import { MaybeFn } from "../../base/lib/actions/setupActions" import { GetInput } from "../../base/lib/actions/setupActions" import { Run } from "../../base/lib/actions/setupActions" import * as actions from "../../base/lib/actions" -import { setupInit } from "./inits/setupInit" import * as fs from "node:fs/promises" +import { + setupInit, + setupUninit, + setupOnInstall, + setupOnUpdate, + setupOnInstallOrUpdate, + setupOnInit, +} from "../../base/lib/inits" export const OSVersion = testTypeVersion("0.4.0-alpha.4") @@ -90,6 +108,8 @@ export class StartSdk { | "getSslCertificate" | "getSystemSmtp" | "getContainerIp" + | "getDataVersion" + | "setDataVersion" // prettier-ignore type StartSdkEffectWrapper = { @@ -108,8 +128,6 @@ export class StartSdk { clearBindings: (effects, ...args) => effects.clearBindings(...args), getOsIp: (effects, ...args) => effects.getOsIp(...args), getSslKey: (effects, ...args) => effects.getSslKey(...args), - setDataVersion: (effects, ...args) => effects.setDataVersion(...args), - getDataVersion: (effects, ...args) => effects.getDataVersion(...args), shutdown: (effects, ...args) => effects.shutdown(...args), getDependencies: (effects, ...args) => effects.getDependencies(...args), getStatus: (effects, ...args) => effects.getStatus(...args), @@ -118,37 +136,39 @@ export class StartSdk { return { manifest: this.manifest, ...startSdkEffectWrapper, + setDataVersion, + getDataVersion, action: { run: actions.runAction, - request: >( + createTask: >( effects: T.Effects, packageId: T.PackageId, action: T, - severity: T.ActionSeverity, - options?: actions.ActionRequestOptions, + severity: T.TaskSeverity, + options?: actions.TaskOptions, ) => - actions.requestAction({ + actions.createTask({ effects, packageId, action, severity, options: options, }), - requestOwn: >( + createOwnTask: >( effects: T.Effects, action: T, - severity: T.ActionSeverity, - options?: actions.ActionRequestOptions, + severity: T.TaskSeverity, + options?: actions.TaskOptions, ) => - actions.requestAction({ + actions.createTask({ effects, packageId: this.manifest.id, action, severity, options: options, }), - clearRequest: (effects: T.Effects, ...replayIds: string[]) => - effects.action.clearRequests({ only: replayIds }), + clearTask: (effects: T.Effects, ...replayIds: string[]) => + effects.action.clearTasks({ only: replayIds }), }, checkDependencies: checkDependencies as < DependencyId extends keyof Manifest["dependencies"] & @@ -379,7 +399,7 @@ export class StartSdk { schemeOverride: null, username: null, path: '', - search: {}, + query: {}, }) * ``` */ @@ -399,7 +419,7 @@ export class StartSdk { /** (optional) appends the provided path to all URLs. */ path: string /** (optional) appends the provided query params to all URLs. */ - search: Record + query: Record /** (optional) overrides the protocol prefix provided by the bind function. * * @example `ftp://` @@ -485,33 +505,61 @@ export class StartSdk { * ``` */ setupDependencies: setupDependencies, - setupInit: setupInit, /** - * @description Use this function to execute arbitrary logic *once*, on initial install *before* interfaces, actions, and dependencies are updated. + * @description Use this function to create an InitScript that runs every time the service initializes + */ + setupOnInit, + /** + * @description Use this function to create an InitScript that runs only when the service is freshly installed + */ + setupOnInstall, + /** + * @description Use this function to create an InitScript that runs only when the service is updated + */ + setupOnUpdate, + /** + * @description Use this function to create an InitScript that runs only when the service is installed or updated + */ + setupOnInstallOrUpdate, + /** + * @description Use this function to setup what happens when the service initializes. + * + * This happens when the server boots, or a service is installed, updated, or restored + * + * Not every init script does something on every initialization. For example, versions only does something on install or update + * + * These scripts are run in the order they are supplied * @example - * In the this example, we initialize a config file * * ``` - const preInstall = sdk.setupPreInstall(async ({ effects }) => { - await configFile.write(effects, { name: 'World' }) - }) + export const init = sdk.setupInit( + restoreInit, + versions, + setDependencies, + setInterfaces, + actions, + postInstall, + ) * ``` */ - setupPreInstall: (fn: InstallFn) => PreInstall.of(fn), + setupInit: setupInit, /** - * @description Use this function to execute arbitrary logic *once*, on initial install *after* interfaces, actions, and dependencies are updated. + * @description Use this function to setup what happens when the service uninitializes. + * + * This happens when the server shuts down, or a service is uninstalled or updated + * + * Not every uninit script does something on every uninitialization. For example, versions only does something on uninstall or update + * + * These scripts are run in the order they are supplied * @example - * In the this example, we create a task for the user to perform. * * ``` - const postInstall = sdk.setupPostInstall(async ({ effects }) => { - await sdk.action.requestOwn(effects, showSecretPhrase, 'important', { - reason: 'Check out your secret phrase!', - }) - }) + export const uninit = sdk.setupUninit( + versions, + ) * ``` */ - setupPostInstall: (fn: InstallFn) => PostInstall.of(fn), + setupUninit: setupUninit, /** * @description Use this function to determine how this service will be hosted and served. The function executes on service install, service update, and inputSpec save. * @param inputSpec - The inputSpec spec of this service as exported from /inputSpec/spec. @@ -537,7 +585,7 @@ export class StartSdk { schemeOverride: null, username: null, path: '', - search: {}, + query: {}, }) // Admin UI const adminUi = sdk.createInterface(effects, { @@ -549,7 +597,7 @@ export class StartSdk { schemeOverride: null, username: null, path: '/admin', - search: {}, + query: {}, }) // UI receipt const uiReceipt = await uiMultiOrigin.export([primaryUi, adminUi]) @@ -569,7 +617,7 @@ export class StartSdk { schemeOverride: null, username: null, path: '', - search: {}, + query: {}, }) // API receipt const apiReceipt = await apiMultiOrigin.export([api]) @@ -587,11 +635,6 @@ export class StartSdk { started(onTerm: () => PromiseLike): PromiseLike }) => Promise>, ) => setupMain(fn), - /** - * Use this function to execute arbitrary logic *once*, on uninstall only. Most services will not use this. - */ - setupUninstall: (fn: UninstallFn) => - setupUninstall(fn), trigger: { defaultTrigger, cooldownTrigger, @@ -675,7 +718,12 @@ export class StartSdk { mounts: Mounts | null, name: string, ) { - return SubContainer.of(effects, image, mounts, name) + return SubContainerOwned.of( + effects, + image, + mounts, + name, + ) }, /** * @description Run a function with a temporary SubContainer @@ -694,7 +742,7 @@ export class StartSdk { name: string, fn: (subContainer: SubContainer) => Promise, ): Promise { - return SubContainer.withTemp(effects, image, mounts, name, fn) + return SubContainerOwned.withTemp(effects, image, mounts, name, fn) }, }, List, @@ -714,7 +762,7 @@ export async function runCommand( name?: string, ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> { let commands: string[] - if (command instanceof T.UseEntrypoint) { + if (T.isUseEntrypoint(command)) { const imageMeta: T.ImageMetadata = await fs .readFile(`/media/startos/images/${image.imageId}.json`, { encoding: "utf8", @@ -724,7 +772,7 @@ export async function runCommand( commands = imageMeta.entrypoint ?? [] commands = commands.concat(...(command.overridCmd ?? imageMeta.cmd ?? [])) } else commands = splitCommand(command) - return SubContainer.withTemp( + return SubContainerOwned.withTemp( effects, image, options.mounts, diff --git a/sdk/package/lib/backup/Backups.ts b/sdk/package/lib/backup/Backups.ts index fdf4f0c4b..e2cab0778 100644 --- a/sdk/package/lib/backup/Backups.ts +++ b/sdk/package/lib/backup/Backups.ts @@ -2,6 +2,8 @@ import * as T from "../../../base/lib/types" import * as child_process from "child_process" import * as fs from "fs/promises" import { Affine, asError } from "../util" +import { ExtendedVersion, VersionRange } from "../../../base/lib" +import { InitKind, InitScript } from "../../../base/lib/inits" export const DEFAULT_OPTIONS: T.SyncOptions = { delete: true, @@ -17,7 +19,7 @@ export type BackupSync = { export type BackupEffects = T.Effects & Affine<"Backups"> -export class Backups { +export class Backups implements InitScript { private constructor( private options = DEFAULT_OPTIONS, private restoreOptions: Partial = {}, @@ -35,7 +37,7 @@ export class Backups { return Backups.withSyncs( ...volumeNames.map((srcVolume) => ({ dataPath: `/media/startos/volumes/${srcVolume}/` as const, - backupPath: `/media/startos/backup/${srcVolume}/` as const, + backupPath: `/media/startos/backup/volumes/${srcVolume}/` as const, })), ) } @@ -96,7 +98,7 @@ export class Backups { return this } - mountVolume( + addVolume( volume: M["volumes"][number], options?: Partial<{ options: T.SyncOptions @@ -106,7 +108,7 @@ export class Backups { ) { return this.addSync({ dataPath: `/media/startos/volumes/${volume}/` as const, - backupPath: `/media/startos/backup/${volume}/` as const, + backupPath: `/media/startos/backup/volumes/${volume}/` as const, ...options, }) } @@ -143,6 +145,12 @@ export class Backups { return } + async init(effects: T.Effects, kind: InitKind): Promise { + if (kind === "restore") { + await this.restoreBackup(effects) + } + } + async restoreBackup(effects: T.Effects) { this.preRestore(effects as BackupEffects) diff --git a/sdk/package/lib/backup/setupBackups.ts b/sdk/package/lib/backup/setupBackups.ts index 34c7300df..ef7275cf2 100644 --- a/sdk/package/lib/backup/setupBackups.ts +++ b/sdk/package/lib/backup/setupBackups.ts @@ -1,6 +1,7 @@ import { Backups } from "./Backups" import * as T from "../../../base/lib/types" import { _ } from "../util" +import { InitScript } from "../../../base/lib/inits" export type SetupBackupsParams = | M["volumes"][number][] @@ -8,7 +9,7 @@ export type SetupBackupsParams = type SetupBackupsRes = { createBackup: T.ExpectedExports.createBackup - restoreBackup: T.ExpectedExports.restoreBackup + restoreInit: InitScript } export function setupBackups( @@ -20,19 +21,18 @@ export function setupBackups( } else { backupsFactory = async () => Backups.withVolumes(...options) } - const answer: { - createBackup: T.ExpectedExports.createBackup - restoreBackup: T.ExpectedExports.restoreBackup - } = { + const answer: SetupBackupsRes = { get createBackup() { return (async (options) => { return (await backupsFactory(options)).createBackup(options.effects) }) as T.ExpectedExports.createBackup }, - get restoreBackup() { - return (async (options) => { - return (await backupsFactory(options)).restoreBackup(options.effects) - }) as T.ExpectedExports.restoreBackup + get restoreInit(): InitScript { + return { + init: async (effects, kind) => { + return (await backupsFactory({ effects })).init(effects, kind) + }, + } }, } return answer diff --git a/sdk/package/lib/index.ts b/sdk/package/lib/index.ts index ca689d5eb..d367368af 100644 --- a/sdk/package/lib/index.ts +++ b/sdk/package/lib/index.ts @@ -35,7 +35,6 @@ export * as backup from "./backup" export * as daemons from "./mainFn/Daemons" export * as health from "./health" export * as healthFns from "./health/checkFns" -export * as inits from "./inits" export * as mainFn from "./mainFn" export * as toml from "@iarna/toml" export * as yaml from "yaml" diff --git a/sdk/package/lib/inits/index.ts b/sdk/package/lib/inits/index.ts deleted file mode 100644 index 0a326a61e..000000000 --- a/sdk/package/lib/inits/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import "./setupInit" -import "./setupUninstall" -import "./setupInstall" diff --git a/sdk/package/lib/inits/setupInit.ts b/sdk/package/lib/inits/setupInit.ts deleted file mode 100644 index cf3af27ea..000000000 --- a/sdk/package/lib/inits/setupInit.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Actions } from "../../../base/lib/actions/setupActions" -import { ExtendedVersion } from "../../../base/lib/exver" -import { UpdateServiceInterfaces } from "../../../base/lib/interfaces/setupInterfaces" -import * as T from "../../../base/lib/types" -import { VersionGraph } from "../version/VersionGraph" -import { PostInstall, PreInstall } from "./setupInstall" -import { Uninstall } from "./setupUninstall" - -export function setupInit( - versions: VersionGraph, - preInstall: PreInstall, - postInstall: PostInstall, - uninstall: Uninstall, - setServiceInterfaces: UpdateServiceInterfaces, - setDependencies: (options: { - effects: T.Effects - }) => Promise, - actions: Actions, -): { - packageInit: T.ExpectedExports.packageInit - packageUninit: T.ExpectedExports.packageUninit - containerInit: T.ExpectedExports.containerInit -} { - return { - packageInit: async (opts) => { - const prev = await opts.effects.getDataVersion() - if (prev) { - await versions.migrate({ - effects: opts.effects, - from: ExtendedVersion.parse(prev), - to: versions.currentVersion(), - }) - } else { - await postInstall.postInstall(opts) - await opts.effects.setDataVersion({ - version: versions.current.options.version, - }) - } - }, - packageUninit: async (opts) => { - if (opts.nextVersion) { - const prev = await opts.effects.getDataVersion() - if (prev) { - await versions.migrate({ - effects: opts.effects, - from: ExtendedVersion.parse(prev), - to: ExtendedVersion.parse(opts.nextVersion), - }) - } - } else { - await uninstall.uninstall(opts) - } - }, - containerInit: async (opts) => { - const prev = await opts.effects.getDataVersion() - if (!prev) { - await preInstall.preInstall(opts) - } - await setServiceInterfaces({ - ...opts, - }) - await actions.update({ effects: opts.effects }) - await setDependencies({ effects: opts.effects }) - }, - } -} diff --git a/sdk/package/lib/inits/setupInstall.ts b/sdk/package/lib/inits/setupInstall.ts deleted file mode 100644 index 9a4c7b42b..000000000 --- a/sdk/package/lib/inits/setupInstall.ts +++ /dev/null @@ -1,54 +0,0 @@ -import * as T from "../../../base/lib/types" - -export type InstallFn = (opts: { - effects: T.Effects -}) => Promise -export class Install { - protected constructor(readonly fn: InstallFn) {} -} - -export class PreInstall< - Manifest extends T.SDKManifest, -> extends Install { - private constructor(fn: InstallFn) { - super(fn) - } - static of(fn: InstallFn) { - return new PreInstall(fn) - } - - async preInstall({ effects }: Parameters[0]) { - await this.fn({ - effects, - }) - } -} - -export function setupPreInstall( - fn: InstallFn, -) { - return PreInstall.of(fn) -} - -export class PostInstall< - Manifest extends T.SDKManifest, -> extends Install { - private constructor(fn: InstallFn) { - super(fn) - } - static of(fn: InstallFn) { - return new PostInstall(fn) - } - - async postInstall({ effects }: Parameters[0]) { - await this.fn({ - effects, - }) - } -} - -export function setupPostInstall( - fn: InstallFn, -) { - return PostInstall.of(fn) -} diff --git a/sdk/package/lib/inits/setupUninstall.ts b/sdk/package/lib/inits/setupUninstall.ts deleted file mode 100644 index bc298dd6f..000000000 --- a/sdk/package/lib/inits/setupUninstall.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as T from "../../../base/lib/types" - -export type UninstallFn = (opts: { - effects: T.Effects -}) => Promise -export class Uninstall { - private constructor(readonly fn: UninstallFn) {} - static of(fn: UninstallFn) { - return new Uninstall(fn) - } - - async uninstall({ - effects, - nextVersion, - }: Parameters[0]) { - if (!nextVersion) - await this.fn({ - effects, - }) - } -} - -export function setupUninstall( - fn: UninstallFn, -) { - return Uninstall.of(fn) -} diff --git a/sdk/package/lib/mainFn/CommandController.ts b/sdk/package/lib/mainFn/CommandController.ts index bcdcd1e3e..4d0617113 100644 --- a/sdk/package/lib/mainFn/CommandController.ts +++ b/sdk/package/lib/mainFn/CommandController.ts @@ -2,11 +2,7 @@ import { DEFAULT_SIGTERM_TIMEOUT } from "." import { NO_TIMEOUT, SIGTERM } from "../../../base/lib/types" import * as T from "../../../base/lib/types" -import { - MountOptions, - SubContainerHandle, - SubContainer, -} from "../util/SubContainer" +import { MountOptions, SubContainer } from "../util/SubContainer" import { Drop, splitCommand } from "../util" import * as cp from "child_process" import * as fs from "node:fs/promises" @@ -44,7 +40,7 @@ export class CommandController extends Drop { ) => { try { let commands: string[] - if (command instanceof T.UseEntrypoint) { + if (T.isUseEntrypoint(command)) { const imageMeta: T.ImageMetadata = await fs .readFile(`/media/startos/images/${subcontainer.imageId}.json`, { encoding: "utf8", @@ -110,13 +106,10 @@ export class CommandController extends Drop { } } } - get subContainerHandle() { - return new SubContainerHandle(this.subcontainer) - } - async wait({ timeout = NO_TIMEOUT, keepSubcontainer = false } = {}) { + async wait({ timeout = NO_TIMEOUT } = {}) { if (timeout > 0) setTimeout(() => { - this.term({ keepSubcontainer }) + this.term() }, timeout) try { return await this.runningAnswer @@ -124,14 +117,10 @@ export class CommandController extends Drop { if (!this.state.exited) { this.process.kill("SIGKILL") } - if (!keepSubcontainer) await this.subcontainer.destroy() + await this.subcontainer.destroy() } } - async term({ - signal = SIGTERM, - timeout = this.sigtermTimeout, - keepSubcontainer = false, - } = {}) { + async term({ signal = SIGTERM, timeout = this.sigtermTimeout } = {}) { try { if (!this.state.exited) { if (signal !== "SIGKILL") { @@ -148,10 +137,10 @@ export class CommandController extends Drop { await this.runningAnswer } finally { - if (!keepSubcontainer) await this.subcontainer.destroy() + await this.subcontainer.destroy() } } onDrop(): void { - this.term({ keepSubcontainer: true }).catch(console.error) + this.term().catch(console.error) } } diff --git a/sdk/package/lib/mainFn/Daemon.ts b/sdk/package/lib/mainFn/Daemon.ts index eb4e94f5e..e4f801ca9 100644 --- a/sdk/package/lib/mainFn/Daemon.ts +++ b/sdk/package/lib/mainFn/Daemon.ts @@ -1,8 +1,13 @@ import * as T from "../../../base/lib/types" import { asError } from "../../../base/lib/util/asError" import { Drop } from "../util" -import { ExecSpawnable, SubContainer } from "../util/SubContainer" +import { + SubContainer, + SubContainerOwned, + SubContainerRc, +} from "../util/SubContainer" import { CommandController } from "./CommandController" +import { Oneshot } from "./Oneshot" const TIMEOUT_INCREMENT_MS = 1000 const MAX_TIMEOUT_MS = 30000 @@ -16,14 +21,15 @@ export class Daemon extends Drop { private shouldBeRunning = false protected exitedSuccess = false protected constructor( + private subcontainer: SubContainer, private startCommand: () => Promise>, readonly oneshot: boolean = false, protected onExitSuccessFns: (() => void)[] = [], ) { super() } - get subContainerHandle(): undefined | ExecSpawnable { - return this.commandController?.subContainerHandle + isOneshot(): this is Oneshot { + return this.oneshot } static of() { return async ( @@ -44,14 +50,15 @@ export class Daemon extends Drop { sigtermTimeout?: number }, ) => { + if (subcontainer.isOwned()) subcontainer = subcontainer.rc() const startCommand = () => CommandController.of()( effects, - subcontainer, + subcontainer.rc(), command, options, ) - return new Daemon(startCommand) + return new Daemon(subcontainer, startCommand) } } async start() { @@ -65,11 +72,11 @@ export class Daemon extends Drop { while (this.shouldBeRunning) { if (this.commandController) await this.commandController - .term({ keepSubcontainer: true }) + .term({}) .catch((err) => console.error(err)) this.commandController = await this.startCommand() if ( - (await this.commandController.wait({ keepSubcontainer: true }).then( + (await this.commandController.wait().then( (_) => true, (err) => { console.error(err) @@ -112,6 +119,10 @@ export class Daemon extends Drop { ?.term({ ...termOptions }) .catch((e) => console.error(asError(e))) this.commandController = null + await this.subcontainer.destroy() + } + subcontainerRc(): SubContainerRc { + return this.subcontainer.rc() } onDrop(): void { this.stop().catch((e) => console.error(asError(e))) diff --git a/sdk/package/lib/mainFn/Daemons.ts b/sdk/package/lib/mainFn/Daemons.ts index e12f8a9a6..7f50e0cb1 100644 --- a/sdk/package/lib/mainFn/Daemons.ts +++ b/sdk/package/lib/mainFn/Daemons.ts @@ -5,7 +5,7 @@ import { HealthCheckResult } from "../health/checkFns" import { Trigger } from "../trigger" import * as T from "../../../base/lib/types" import { Mounts } from "./Mounts" -import { ExecSpawnable, MountOptions, SubContainer } from "../util/SubContainer" +import { MountOptions, SubContainer } from "../util/SubContainer" import { promisify } from "node:util" import * as CP from "node:child_process" @@ -17,6 +17,7 @@ import { Daemon } from "./Daemon" import { CommandController } from "./CommandController" import { HealthCheck } from "../health/HealthCheck" import { Oneshot } from "./Oneshot" +import { Manifest } from "../test/output.sdk" export const cpExec = promisify(CP.exec) export const cpExecFile = promisify(CP.execFile) @@ -38,7 +39,7 @@ export type Ready = { * ``` */ fn: ( - spawnable: ExecSpawnable, + subcontainer: SubContainer, ) => Promise | HealthCheckResult /** * A duration in milliseconds to treat a failing health check as "starting" @@ -168,9 +169,14 @@ export class Daemons const daemon = "daemon" in options ? Promise.resolve(options.daemon) - : Daemon.of()(this.effects, options.subcontainer, options.command, { - ...options, - }) + : Daemon.of()( + this.effects, + options.subcontainer, + options.command, + { + ...options, + }, + ) const healthDaemon = new HealthDaemon( daemon, options.requires @@ -212,7 +218,7 @@ export class Daemons : Id, options: AddOneshotParams, ) { - const daemon = Oneshot.of()( + const daemon = Oneshot.of()( this.effects, options.subcontainer, options.command, @@ -220,7 +226,7 @@ export class Daemons ...options, }, ) - const healthDaemon = new HealthDaemon( + const healthDaemon = new HealthDaemon( daemon, options.requires .map((x) => this.ids.indexOf(x)) diff --git a/sdk/package/lib/mainFn/HealthDaemon.ts b/sdk/package/lib/mainFn/HealthDaemon.ts index 1ccdb6788..73450993f 100644 --- a/sdk/package/lib/mainFn/HealthDaemon.ts +++ b/sdk/package/lib/mainFn/HealthDaemon.ts @@ -91,8 +91,9 @@ export class HealthDaemon { } private async setupHealthCheck() { if (this.ready === "EXIT_SUCCESS") { - if (this.daemon instanceof Oneshot) { - this.daemon.onExitSuccess(() => + const daemon = await this.daemon + if (daemon.isOneshot()) { + daemon.onExitSuccess(() => this.setHealth({ result: "success", message: null }), ) } @@ -113,9 +114,9 @@ export class HealthDaemon { !res.done; res = await Promise.race([status, trigger.next()]) ) { - const handle = (await this.daemon).subContainerHandle + const handle = (await this.daemon).subcontainerRc() - if (handle) { + try { const response: HealthCheckResult = await Promise.resolve( this.ready.fn(handle), ).catch((err) => { @@ -132,11 +133,8 @@ export class HealthDaemon { this.resolveReady() } await this.setHealth(response) - } else { - await this.setHealth({ - result: "failure", - message: "Daemon not running", - }) + } finally { + await handle.destroy() } } }).catch((err) => console.error(`Daemon ${this.id} failed: ${err}`)) @@ -164,7 +162,7 @@ export class HealthDaemon { if ( result === "failure" && this.started && - performance.now() - this.started <= (this.ready.gracePeriod ?? 5000) + performance.now() - this.started <= (this.ready.gracePeriod ?? 10_000) ) result = "starting" await this.effects.setHealth({ diff --git a/sdk/package/lib/mainFn/Oneshot.ts b/sdk/package/lib/mainFn/Oneshot.ts index b4c20ae64..b09d7380c 100644 --- a/sdk/package/lib/mainFn/Oneshot.ts +++ b/sdk/package/lib/mainFn/Oneshot.ts @@ -1,5 +1,5 @@ import * as T from "../../../base/lib/types" -import { SubContainer } from "../util/SubContainer" +import { SubContainer, SubContainerOwned } from "../util/SubContainer" import { CommandController } from "./CommandController" import { Daemon } from "./Daemon" @@ -28,14 +28,15 @@ export class Oneshot extends Daemon { sigtermTimeout?: number }, ) => { + if (subcontainer.isOwned()) subcontainer = subcontainer.rc() const startCommand = () => CommandController.of()( effects, - subcontainer, + subcontainer.rc(), command, options, ) - return new Oneshot(startCommand, true, []) + return new Oneshot(subcontainer, startCommand, true, []) } } diff --git a/sdk/package/lib/test/host.test.ts b/sdk/package/lib/test/host.test.ts index 88ca7c4b6..6c49c92db 100644 --- a/sdk/package/lib/test/host.test.ts +++ b/sdk/package/lib/test/host.test.ts @@ -18,7 +18,7 @@ describe("host", () => { type: "ui", username: "bar", path: "/baz", - search: { qux: "yes" }, + query: { qux: "yes" }, schemeOverride: null, masked: false, }) diff --git a/sdk/package/lib/test/inputSpecBuilder.test.ts b/sdk/package/lib/test/inputSpecBuilder.test.ts index 0f1a8510f..6864f6ed8 100644 --- a/sdk/package/lib/test/inputSpecBuilder.test.ts +++ b/sdk/package/lib/test/inputSpecBuilder.test.ts @@ -536,14 +536,14 @@ describe("values", () => { }) describe("filtering", () => { test("union", async () => { - const value = Value.filteredUnion( - () => ["a", "c"], - { + const value = Value.dynamicUnion( + () => ({ name: "Testing", default: "a", description: null, warning: null, - }, + disabled: ["a", "c"], + }), Variants.of({ a: { name: "a", diff --git a/sdk/package/lib/util/SubContainer.ts b/sdk/package/lib/util/SubContainer.ts index 277db5ae1..29ebcbdde 100644 --- a/sdk/package/lib/util/SubContainer.ts +++ b/sdk/package/lib/util/SubContainer.ts @@ -59,50 +59,97 @@ async function bind( await execFile("mount", ["--bind", from, to]) } -/** - * This is the type that is going to describe what an subcontainer could do. The main point of the - * subcontainer is to have commands that run in a chrooted environment. This is useful for running - * commands in a containerized environment. But, I wanted the destroy to sometimes be doable, for example the - * case where the subcontainer isn't owned by the process, the subcontainer shouldn't be destroyed. - */ -export interface ExecSpawnable { - get destroy(): undefined | (() => Promise) +export interface SubContainer< + Manifest extends T.SDKManifest, + Effects extends T.Effects = T.Effects, +> extends Drop { + readonly imageId: keyof Manifest["images"] & T.ImageId + readonly rootfs: string + readonly guid: T.Guid + mount( + mounts: Effects extends BackupEffects + ? Mounts< + Manifest, + { + subpath: string | null + mountpoint: string + } + > + : Mounts, + ): Promise + + destroy: () => Promise + + /** + * @description run a command inside this subcontainer + * DOES NOT THROW ON NONZERO EXIT CODE (see execFail) + * @param commands an array representing the command and args to execute + * @param options + * @param timeoutMs how long to wait before killing the command in ms + * @returns + */ exec( command: string[], options?: CommandOptions & ExecOptions, timeoutMs?: number | null, - ): Promise + ): Promise<{ + throw: () => { stdout: string | Buffer; stderr: string | Buffer } + exitCode: number | null + exitSignal: NodeJS.Signals | null + stdout: string | Buffer + stderr: string | Buffer + }> + + /** + * @description run a command inside this subcontainer, throwing on non-zero exit status + * @param commands an array representing the command and args to execute + * @param options + * @param timeoutMs how long to wait before killing the command in ms + * @returns + */ execFail( command: string[], options?: CommandOptions & ExecOptions, timeoutMs?: number | null, - ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> + ): Promise<{ + stdout: string | Buffer + stderr: string | Buffer + }> + + launch( + command: string[], + options?: CommandOptions, + ): Promise + spawn( command: string[], options?: CommandOptions & StdioOptions, ): Promise + + rc(): SubContainerRc + + isOwned(): this is SubContainerOwned } + /** * Want to limit what we can do in a container, so we want to launch a container with a specific image and the mounts. - * - * Implements: - * @see {@link ExecSpawnable} */ -export class SubContainer< +export class SubContainerOwned< Manifest extends T.SDKManifest, Effects extends T.Effects = T.Effects, > extends Drop - implements ExecSpawnable + implements SubContainer { private destroyed = false + public rcs = 0 private leader: cp.ChildProcess private leaderExited: boolean = false private waitProc: () => Promise private constructor( readonly effects: Effects, - readonly imageId: T.ImageId, + readonly imageId: keyof Manifest["images"] & T.ImageId, readonly rootfs: string, readonly guid: T.Guid, ) { @@ -156,14 +203,14 @@ export class SubContainer< : Mounts) | null, name: string, - ) { + ): Promise> { const { imageId, sharedRun } = image const [rootfs, guid] = await effects.subcontainer.createFs({ imageId, name, }) - const res = new SubContainer(effects, imageId, rootfs, guid) + const res = new SubContainerOwned(effects, imageId, rootfs, guid) try { if (mounts) { @@ -216,7 +263,12 @@ export class SubContainer< name: string, fn: (subContainer: SubContainer) => Promise, ): Promise { - const subContainer = await SubContainer.of(effects, image, mounts, name) + const subContainer = await SubContainerOwned.of( + effects, + image, + mounts, + name, + ) try { return await fn(subContainer) } finally { @@ -234,7 +286,7 @@ export class SubContainer< } > : Mounts, - ): Promise> { + ): Promise { for (let mount of mounts.build()) { let { options, mountpoint } = mount const path = mountpoint.startsWith("/") @@ -526,40 +578,188 @@ export class SubContainer< options, ) } + + rc(): SubContainerRc { + return new SubContainerRc(this) + } + + isOwned(): this is SubContainerOwned { + return true + } } -/** - * Take an subcontainer but remove the ability to add the mounts and the destroy function. - * Lets other functions, like health checks, to not destroy the parents. - * - */ -export class SubContainerHandle implements ExecSpawnable { - constructor(private subContainer: ExecSpawnable) {} +export class SubContainerRc< + Manifest extends T.SDKManifest, + Effects extends T.Effects = T.Effects, + > + extends Drop + implements SubContainer +{ + get imageId() { + return this.subcontainer.imageId + } + get rootfs() { + return this.subcontainer.rootfs + } + get guid() { + return this.subcontainer.guid + } + private destroyed = false + public constructor( + private readonly subcontainer: SubContainerOwned, + ) { + subcontainer.rcs++ + super() + } + static async of( + effects: Effects, + image: { + imageId: keyof Manifest["images"] & T.ImageId + sharedRun?: boolean + }, + mounts: + | (Effects extends BackupEffects + ? Mounts< + Manifest, + { + subpath: string | null + mountpoint: string + } + > + : Mounts) + | null, + name: string, + ) { + return new SubContainerRc( + await SubContainerOwned.of(effects, image, mounts, name), + ) + } + + static async withTemp< + Manifest extends T.SDKManifest, + T, + Effects extends T.Effects, + >( + effects: Effects, + image: { + imageId: keyof Manifest["images"] & T.ImageId + sharedRun?: boolean + }, + mounts: + | (Effects extends BackupEffects + ? Mounts< + Manifest, + { + subpath: string | null + mountpoint: string + } + > + : Mounts) + | null, + name: string, + fn: (subContainer: SubContainer) => Promise, + ): Promise { + const subContainer = await SubContainerRc.of(effects, image, mounts, name) + try { + return await fn(subContainer) + } finally { + await subContainer.destroy() + } + } + + async mount( + mounts: Effects extends BackupEffects + ? Mounts< + Manifest, + { + subpath: string | null + mountpoint: string + } + > + : Mounts, + ): Promise { + await this.subcontainer.mount(mounts) + return this + } + get destroy() { - return undefined + return async () => { + if (!this.destroyed) { + const rcs = --this.subcontainer.rcs + if (rcs <= 0) { + await this.subcontainer.destroy() + if (rcs < 0) console.error(new Error("UNREACHABLE: rcs < 0").stack) + } + this.destroyed = true + } + return null + } } - exec( - command: string[], - options?: CommandOptions, - timeoutMs?: number | null, - ): Promise { - return this.subContainer.exec(command, options, timeoutMs) + onDrop(): void { + this.destroy() } - execFail( + /** + * @description run a command inside this subcontainer + * DOES NOT THROW ON NONZERO EXIT CODE (see execFail) + * @param commands an array representing the command and args to execute + * @param options + * @param timeoutMs how long to wait before killing the command in ms + * @returns + */ + async exec( command: string[], options?: CommandOptions & ExecOptions, - timeoutMs?: number | null, - ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> { - return this.subContainer.execFail(command, options, timeoutMs) + timeoutMs: number | null = 30000, + ): Promise<{ + throw: () => { stdout: string | Buffer; stderr: string | Buffer } + exitCode: number | null + exitSignal: NodeJS.Signals | null + stdout: string | Buffer + stderr: string | Buffer + }> { + return this.subcontainer.exec(command, options, timeoutMs) } - spawn( + /** + * @description run a command inside this subcontainer, throwing on non-zero exit status + * @param commands an array representing the command and args to execute + * @param options + * @param timeoutMs how long to wait before killing the command in ms + * @returns + */ + async execFail( + command: string[], + options?: CommandOptions & ExecOptions, + timeoutMs: number | null = 30000, + ): Promise<{ + stdout: string | Buffer + stderr: string | Buffer + }> { + return this.subcontainer.execFail(command, options, timeoutMs) + } + + async launch( + command: string[], + options?: CommandOptions, + ): Promise { + return this.subcontainer.launch(command, options) + } + + async spawn( command: string[], options: CommandOptions & StdioOptions = { stdio: "inherit" }, ): Promise { - return this.subContainer.spawn(command, options) + return this.subcontainer.spawn(command, options) + } + + rc(): SubContainerRc { + return this.subcontainer.rc() + } + + isOwned(): this is SubContainerOwned { + return false } } diff --git a/sdk/package/lib/version/VersionGraph.ts b/sdk/package/lib/version/VersionGraph.ts index 129153e52..06cb8f272 100644 --- a/sdk/package/lib/version/VersionGraph.ts +++ b/sdk/package/lib/version/VersionGraph.ts @@ -1,9 +1,58 @@ import { ExtendedVersion, VersionRange } from "../../../base/lib/exver" import * as T from "../../../base/lib/types" +import { + InitFn, + InitKind, + InitScript, + InitScriptOrFn, + UninitFn, + UninitScript, +} from "../../../base/lib/inits" import { Graph, Vertex, once } from "../util" import { IMPOSSIBLE, VersionInfo } from "./VersionInfo" -export class VersionGraph { +export async function getDataVersion(effects: T.Effects) { + const versionStr = await effects.getDataVersion() + if (!versionStr) return null + try { + return ExtendedVersion.parse(versionStr) + } catch (_) { + return VersionRange.parse(versionStr) + } +} + +export async function setDataVersion( + effects: T.Effects, + version: ExtendedVersion | VersionRange | null, +) { + return effects.setDataVersion({ version: version?.toString() || null }) +} + +function isExver(v: ExtendedVersion | VersionRange): v is ExtendedVersion { + return "satisfies" in v +} + +function isRange(v: ExtendedVersion | VersionRange): v is VersionRange { + return "satisfiedBy" in v +} + +export function overlaps( + a: ExtendedVersion | VersionRange, + b: ExtendedVersion | VersionRange, +) { + return ( + (isRange(a) && isRange(b) && a.intersects(b)) || + (isRange(a) && isExver(b) && a.satisfiedBy(b)) || + (isExver(a) && isRange(b) && a.satisfies(b)) || + (isExver(a) && isExver(b) && a.equals(b)) + ) +} + +export class VersionGraph + implements InitScript, UninitScript +{ + protected initFn = this.init.bind(this) + protected uninitFn = this.uninit.bind(this) private readonly graph: () => Graph< ExtendedVersion | VersionRange, ((opts: { effects: T.Effects }) => Promise) | undefined @@ -11,6 +60,8 @@ export class VersionGraph { private constructor( readonly current: VersionInfo, versions: Array>, + private readonly preInstall?: InitScriptOrFn<"install">, + private readonly uninstall?: UninitScript | UninitFn, ) { this.graph = once(() => { const graph = new Graph< @@ -88,9 +139,7 @@ export class VersionGraph { vertex, ) for (let matching of graph.findVertex( - (v) => - v.metadata instanceof ExtendedVersion && - v.metadata.satisfies(range), + (v) => isExver(v.metadata) && v.metadata.satisfies(range), )) { graph.addEdge( version.options.migrations.other[rangeStr], @@ -116,11 +165,24 @@ export class VersionGraph { static of< CurrentVersion extends string, OtherVersions extends Array>, - >( - currentVersion: VersionInfo, - ...other: EnsureUniqueId - ) { - return new VersionGraph(currentVersion, other as Array>) + >(options: { + current: VersionInfo + other: OtherVersions + /** + * A script to run only on fresh install + */ + preInstall?: InitScript | InitFn + /** + * A script to run only on uninstall + */ + uninstall?: UninitScript | UninitFn + }) { + return new VersionGraph( + options.current, + options.other, + options.preInstall, + options.uninstall, + ) } async migrate({ effects, @@ -128,46 +190,42 @@ export class VersionGraph { to, }: { effects: T.Effects - from: ExtendedVersion - to: ExtendedVersion - }) { + from: ExtendedVersion | VersionRange + to: ExtendedVersion | VersionRange + }): Promise { + if (overlaps(from, to)) return from const graph = this.graph() if (from && to) { const path = graph.shortestPath( - (v) => - (v.metadata instanceof VersionRange && - v.metadata.satisfiedBy(from)) || - (v.metadata instanceof ExtendedVersion && v.metadata.equals(from)), - (v) => - (v.metadata instanceof VersionRange && v.metadata.satisfiedBy(to)) || - (v.metadata instanceof ExtendedVersion && v.metadata.equals(to)), + (v) => overlaps(v.metadata, from), + (v) => overlaps(v.metadata, to), ) if (path) { + let dataVersion = from for (let edge of path) { if (edge.metadata) { await edge.metadata({ effects }) } - await effects.setDataVersion({ version: edge.to.metadata.toString() }) + dataVersion = edge.to.metadata + await setDataVersion(effects, edge.to.metadata) } - return + return dataVersion } } - throw new Error() + throw new Error( + `cannot migrate from ${from.toString()} to ${to.toString()}`, + ) } canMigrateFrom = once(() => Array.from( - this.graph().reverseBreadthFirstSearch( - (v) => - (v.metadata instanceof VersionRange && - v.metadata.satisfiedBy(this.currentVersion())) || - (v.metadata instanceof ExtendedVersion && - v.metadata.equals(this.currentVersion())), + this.graph().reverseBreadthFirstSearch((v) => + overlaps(v.metadata, this.currentVersion()), ), ) .reduce( (acc, x) => acc.or( - x.metadata instanceof VersionRange + isRange(x.metadata) ? x.metadata : VersionRange.anchor("=", x.metadata), ), @@ -177,18 +235,14 @@ export class VersionGraph { ) canMigrateTo = once(() => Array.from( - this.graph().breadthFirstSearch( - (v) => - (v.metadata instanceof VersionRange && - v.metadata.satisfiedBy(this.currentVersion())) || - (v.metadata instanceof ExtendedVersion && - v.metadata.equals(this.currentVersion())), + this.graph().breadthFirstSearch((v) => + overlaps(v.metadata, this.currentVersion()), ), ) .reduce( (acc, x) => acc.or( - x.metadata instanceof VersionRange + isRange(x.metadata) ? x.metadata : VersionRange.anchor("=", x.metadata), ), @@ -196,6 +250,45 @@ export class VersionGraph { ) .normalize(), ) + + async init(effects: T.Effects, kind: InitKind): Promise { + const from = await getDataVersion(effects) + if (from) { + await this.migrate({ + effects, + from, + to: this.currentVersion(), + }) + } else { + kind = "install" // implied by !dataVersion + if (this.preInstall) + if ("init" in this.preInstall) await this.preInstall.init(effects, kind) + else await this.preInstall(effects, kind) + await effects.setDataVersion({ version: this.current.options.version }) + } + } + + async uninit( + effects: T.Effects, + target: VersionRange | ExtendedVersion | null, + ): Promise { + if (target) { + const from = await getDataVersion(effects) + if (from) { + target = await this.migrate({ + effects, + from, + to: target, + }) + } + } else { + if (this.uninstall) + if ("uninit" in this.uninstall) + await this.uninstall.uninit(effects, target) + else await this.uninstall(effects, target) + } + await setDataVersion(effects, target) + } } // prettier-ignore diff --git a/sdk/package/package-lock.json b/sdk/package/package-lock.json index dc4846df8..a25775d69 100644 --- a/sdk/package/package-lock.json +++ b/sdk/package/package-lock.json @@ -1,12 +1,12 @@ { "name": "@start9labs/start-sdk", - "version": "0.4.0-beta.20", + "version": "0.4.0-beta.23", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@start9labs/start-sdk", - "version": "0.4.0-beta.20", + "version": "0.4.0-beta.23", "license": "MIT", "dependencies": { "@iarna/toml": "^3.0.0", diff --git a/sdk/package/package.json b/sdk/package/package.json index 3e7e9734e..5188305f7 100644 --- a/sdk/package/package.json +++ b/sdk/package/package.json @@ -1,6 +1,6 @@ { "name": "@start9labs/start-sdk", - "version": "0.4.0-beta.20", + "version": "0.4.0-beta.23", "description": "Software development kit to facilitate packaging services for StartOS", "main": "./package/lib/index.js", "types": "./package/lib/index.d.ts", diff --git a/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts b/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts index 127201382..7cdc555a8 100644 --- a/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts +++ b/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts @@ -12,7 +12,7 @@ import { tuiIsNumber } from '@taiga-ui/cdk' import { CommonModule } from '@angular/common' @Component({ - selector: 'action-request-info', + selector: 'task-info', template: ` {{ 'The following modifications were made' | i18n }}: @@ -32,7 +32,7 @@ import { CommonModule } from '@angular/common' `, ], }) -export class ActionRequestInfoComponent implements OnInit { +export class TaskInfoComponent implements OnInit { @Input() originalValue: object = {} diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/action-request.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts similarity index 96% rename from web/projects/ui/src/app/routes/portal/routes/services/components/action-request.component.ts rename to web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts index d0c515a29..92374d035 100644 --- a/web/projects/ui/src/app/routes/portal/routes/services/components/action-request.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/services/components/task.component.ts @@ -77,10 +77,10 @@ import { getManifest } from 'src/app/utils/get-package-data' changeDetection: ChangeDetectionStrategy.OnPush, imports: [TuiButton, TuiAvatar, i18nPipe], }) -export class ServiceActionRequestComponent { +export class ServiceTaskComponent { private readonly actionService = inject(ActionService) - readonly actionRequest = input.required() + readonly actionRequest = input.required() readonly services = input.required>() readonly pkg = computed(() => this.services()[this.actionRequest().packageId]) diff --git a/web/projects/ui/src/app/routes/portal/routes/services/components/action-requests.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts similarity index 69% rename from web/projects/ui/src/app/routes/portal/routes/services/components/action-requests.component.ts rename to web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts index 185720b49..6909d1776 100644 --- a/web/projects/ui/src/app/routes/portal/routes/services/components/action-requests.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/services/components/tasks.component.ts @@ -7,12 +7,12 @@ import { import { TuiTable } from '@taiga-ui/addon-table' import { PlaceholderComponent } from 'src/app/routes/portal/components/placeholder.component' import { PackageDataEntry } from 'src/app/services/patch-db/data-model' -import { ServiceActionRequestComponent } from './action-request.component' +import { ServiceTaskComponent } from './task.component' import { i18nPipe } from '@start9labs/shared' @Component({ standalone: true, - selector: 'service-action-requests', + selector: 'service-tasks', template: `
{{ 'Tasks' | i18n }}
@@ -26,7 +26,7 @@ import { i18nPipe } from '@start9labs/shared' @for (item of requests(); track $index) { - + }
@@ -44,24 +44,19 @@ import { i18nPipe } from '@start9labs/shared' `, host: { class: 'g-card' }, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [ - TuiTable, - ServiceActionRequestComponent, - PlaceholderComponent, - i18nPipe, - ], + imports: [TuiTable, ServiceTaskComponent, PlaceholderComponent, i18nPipe], }) -export class ServiceActionRequestsComponent { +export class ServiceTasksComponent { readonly pkg = input.required() readonly services = input.required>() readonly requests = computed(() => - Object.values(this.pkg().requestedActions) + Object.values(this.pkg().tasks) .filter( - r => - this.services()[r.request.packageId]?.actions[r.request.actionId] && - r.active, + t => + this.services()[t.task.packageId]?.actions[t.task.actionId] && + t.active, ) - .sort((a, b) => a.request.severity.localeCompare(b.request.severity)), + .sort((a, b) => a.task.severity.localeCompare(b.task.severity)), ) } diff --git a/web/projects/ui/src/app/routes/portal/routes/services/modals/action-input.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/modals/action-input.component.ts index a0abb549c..f23b71e48 100644 --- a/web/projects/ui/src/app/routes/portal/routes/services/modals/action-input.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/services/modals/action-input.component.ts @@ -22,7 +22,7 @@ import { ActionButton, FormComponent, } from 'src/app/routes/portal/components/form.component' -import { ActionRequestInfoComponent } from 'src/app/routes/portal/modals/config-dep.component' +import { TaskInfoComponent } from 'src/app/routes/portal/modals/config-dep.component' import { ActionService } from 'src/app/services/action.service' import { ApiService } from 'src/app/services/api/embassy-api.service' import { DataModel } from 'src/app/services/patch-db/data-model' @@ -40,7 +40,7 @@ export type PackageActionData = { id: string metadata: T.ActionMetadata } - requestInfo?: T.ActionRequest + requestInfo?: T.Task } @Component({ @@ -63,7 +63,7 @@ export type PackageActionData = { } @if (requestInfo) { - @@ -114,7 +114,7 @@ export type PackageActionData = { TuiNotification, TuiLoader, TuiButton, - ActionRequestInfoComponent, + TaskInfoComponent, FormComponent, i18nPipe, ], @@ -186,16 +186,16 @@ export class ActionInputModal { .filter( id => id !== this.pkgInfo.id && - Object.values(packages[id]!.requestedActions).some( - ({ request, active }) => + Object.values(packages[id]!.tasks).some( + ({ task, active }) => !active && - request.severity === 'critical' && - request.packageId === this.pkgInfo.id && - request.actionId === this.actionId && - request.when?.condition === 'input-not-matches' && - request.input && + task.severity === 'critical' && + task.packageId === this.pkgInfo.id && + task.actionId === this.actionId && + task.when?.condition === 'input-not-matches' && + task.input && json - .compare(input, request.input) + .compare(input, task.input) .some(op => op.op === 'add' || op.op === 'replace'), ), ) diff --git a/web/projects/ui/src/app/routes/portal/routes/services/routes/service.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/routes/service.component.ts index b7612bb32..f639db08d 100644 --- a/web/projects/ui/src/app/routes/portal/routes/services/routes/service.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/services/routes/service.component.ts @@ -19,7 +19,7 @@ import { PackageDataEntry, } from 'src/app/services/patch-db/data-model' import { getInstalledPrimaryStatus } from 'src/app/services/pkg-status-rendering.service' -import { ServiceActionRequestsComponent } from '../components/action-requests.component' +import { ServiceTasksComponent } from '../components/tasks.component' import { ServiceControlsComponent } from '../components/controls.component' import { ServiceDependenciesComponent } from '../components/dependencies.component' import { ServiceErrorComponent } from '../components/error.component' @@ -63,7 +63,7 @@ import { ServiceStatusComponent } from '../components/status.component' } - + } } @else if (removing()) { = { @@ -2400,10 +2400,10 @@ export namespace Mock { storeExposedDependents: [], registry: 'https://registry.start9.com/', developerKey: 'developer-key', - requestedActions: { + tasks: { config: { active: true, - request: { + task: { packageId: 'lnd', actionId: 'config', severity: 'critical', @@ -2412,7 +2412,7 @@ export namespace Mock { }, connect: { active: true, - request: { + task: { packageId: 'lnd', actionId: 'connect', severity: 'important', @@ -2421,7 +2421,7 @@ export namespace Mock { }, 'bitcoind/config': { active: true, - request: { + task: { packageId: 'bitcoind', actionId: 'config', severity: 'critical', @@ -2437,7 +2437,7 @@ export namespace Mock { }, 'bitcoind/rpc': { active: true, - request: { + task: { packageId: 'bitcoind', actionId: 'rpc', severity: 'important', diff --git a/web/projects/ui/src/app/services/api/mock-patch.ts b/web/projects/ui/src/app/services/api/mock-patch.ts index 3e3fe7beb..d30b2742f 100644 --- a/web/projects/ui/src/app/services/api/mock-patch.ts +++ b/web/projects/ui/src/app/services/api/mock-patch.ts @@ -181,7 +181,7 @@ export const mockPatchData: DataModel = { }, hostname: 'random-words', pubkey: 'npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m', - caFingerprint: 'SHA-256: 63 2B 11 99 44 40 17 DF 37 FC C3 DF 0F 3D 15', + caFingerprint: '63:2B:11:99:44:40:17:DF:37:FC:C3:DF:0F:3D:15', ntpSynced: false, smtp: { server: '', @@ -195,6 +195,7 @@ export const mockPatchData: DataModel = { governor: 'performance', ram: 8 * 1024 * 1024 * 1024, devices: [], + kiosk: true, }, packageData: { bitcoind: { @@ -455,9 +456,9 @@ export const mockPatchData: DataModel = { storeExposedDependents: [], registry: 'https://registry.start9.com/', developerKey: 'developer-key', - requestedActions: { + tasks: { // 'bitcoind-config': { - // request: { + // task: { // packageId: 'bitcoind', // actionId: 'config', // severity: 'critical', @@ -467,7 +468,7 @@ export const mockPatchData: DataModel = { // active: true, // }, 'bitcoind-properties': { - request: { + task: { packageId: 'bitcoind', actionId: 'properties', severity: 'important', @@ -581,10 +582,10 @@ export const mockPatchData: DataModel = { storeExposedDependents: [], registry: 'https://registry.start9.com/', developerKey: 'developer-key', - requestedActions: { + tasks: { config: { active: true, - request: { + task: { packageId: 'lnd', actionId: 'config', severity: 'critical', @@ -593,7 +594,7 @@ export const mockPatchData: DataModel = { }, connect: { active: true, - request: { + task: { packageId: 'lnd', actionId: 'connect', severity: 'important', @@ -602,7 +603,7 @@ export const mockPatchData: DataModel = { }, 'bitcoind/config': { active: true, - request: { + task: { packageId: 'bitcoind', actionId: 'config', severity: 'critical', @@ -618,7 +619,7 @@ export const mockPatchData: DataModel = { }, 'bitcoind/rpc': { active: true, - request: { + task: { packageId: 'bitcoind', actionId: 'rpc', severity: 'important', diff --git a/web/projects/ui/src/app/services/dep-error.service.ts b/web/projects/ui/src/app/services/dep-error.service.ts index dcaf5e429..91a62f51b 100644 --- a/web/projects/ui/src/app/services/dep-error.service.ts +++ b/web/projects/ui/src/app/services/dep-error.service.ts @@ -103,11 +103,11 @@ export class DepErrorService { // action required if ( - Object.values(pkg.requestedActions).some( - a => - a.active && - a.request.packageId === depId && - a.request.severity === 'critical', + Object.values(pkg.tasks).some( + t => + t.active && + t.task.packageId === depId && + t.task.severity === 'critical', ) ) { return { diff --git a/web/projects/ui/src/app/services/pkg-status-rendering.service.ts b/web/projects/ui/src/app/services/pkg-status-rendering.service.ts index dfc665806..6050e02e4 100644 --- a/web/projects/ui/src/app/services/pkg-status-rendering.service.ts +++ b/web/projects/ui/src/app/services/pkg-status-rendering.service.ts @@ -29,11 +29,11 @@ export function renderPkgStatus( } export function getInstalledPrimaryStatus({ - requestedActions, + tasks, status, }: T.PackageDataEntry): PrimaryStatus { - return Object.values(requestedActions).some( - r => r.active && r.request.severity === 'critical', + return Object.values(tasks).some( + t => t.active && t.task.severity === 'critical', ) ? 'actionRequired' : status.main
-
-

- All files / - config/builder config.ts -

-
-
- 78.57% - Statements - 11/14 -
- -
- 100% - Branches - 0/0 -
- -
- 75% - Functions - 3/4 -
- -
- 78.57% - Lines - 11/14 -
-
-

- Press n or j to go to the next uncovered block, - b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -2x -  -  -2x -  -  -1x -  -  -1x -  -  -1x -  -  -  -  -  -  -2x -  -  -2x -  -  -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ValueSpec } from "../configTypes"
-import { Value } from "./value"
-import { _ } from "../../util"
-import { Effects } from "../../types"
-import { Parser, object } from "ts-matches"
- 
-export type LazyBuildOptions<Store> = {
-  effects: Effects
-}
-export type LazyBuild<Store, ExpectedOut> = (
-  options: LazyBuildOptions<Store>,
-) => Promise<ExpectedOut> | ExpectedOut
- 
-// prettier-ignore
-export type ExtractConfigType<A extends Record<string, any> | Config<Record<string, any>, any> | Config<Record<string, any>, never>> = 
-  A extends Config<infer B, any> | Config<infer B, never> ? B :
-  A
- 
-export type ConfigSpecOf<A extends Record<string, any>, Store = never> = {
-  [K in keyof A]: Value<A[K], Store>
-}
- 
-export type MaybeLazyValues<A> = LazyBuild<any, A> | A
-/**
- * Configs are the specs that are used by the os configuration form for this service.
- * Here is an example of a simple configuration
-  ```ts
-    const smallConfig = Config.of({
-      test: Value.boolean({
-        name: "Test",
-        description: "This is the description for the test",
-        warning: null,
-        default: false,
-      }),
-    });
-  ```
- 
-  The idea of a config is that now the form is going to ask for
-  Test: [ ] and the value is going to be checked as a boolean.
-  There are more complex values like selects, lists, and objects. See {@link Value}
- 
-  Also, there is the ability to get a validator/parser from this config spec.
-  ```ts
-  const matchSmallConfig = smallConfig.validator();
-  type SmallConfig = typeof matchSmallConfig._TYPE;
-  ```
- 
-  Here is an example of a more complex configuration which came from a configuration for a service
-  that works with bitcoin, like c-lightning.
-  ```ts
- 
-    export const hostname = Value.string({
-  name: "Hostname",
-  default: null,
-  description: "Domain or IP address of bitcoin peer",
-  warning: null,
-  required: true,
-  masked: false,
-  placeholder: null,
-  pattern:
-    "(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)|((^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$)|(^[a-z2-7]{16}\\.onion$)|(^([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$))",
-  patternDescription:
-    "Must be either a domain name, or an IPv4 or IPv6 address. Do not include protocol scheme (eg 'http://') or port.",
-});
-export const port = Value.number({
-  name: "Port",
-  default: null,
-  description: "Port that peer is listening on for inbound p2p connections",
-  warning: null,
-  required: false,
-  range: "[0,65535]",
-  integral: true,
-  units: null,
-  placeholder: null,
-});
-export const addNodesSpec = Config.of({ hostname: hostname, port: port });
- 
-  ```
- */
-export class Config<Type extends Record<string, any>, Store = never> {
-  private constructor(
-    private readonly spec: {
-      [K in keyof Type]: Value<Type[K], Store> | Value<Type[K], never>
-    },
-    public validator: Parser<unknown, Type>,
-  ) {}
-  async build(options: LazyBuildOptions<Store>) {
-    const answer = {} as {
-      [K in keyof Type]: ValueSpec
-    }
-    for (const k in this.spec) {
-      answer[k] = await this.spec[k].build(options as any)
-    }
-    return answer
-  }
- 
-  static of<
-    Spec extends Record<string, Value<any, Store> | Value<any, never>>,
-    Store = never,
-  >(spec: Spec) {
-    const validatorObj = {} as {
-      [K in keyof Spec]: Parser<unknown, any>
-    }
-    for (const key in spec) {
-      validatorObj[key] = spec[key].validator
-    }
-    const validator = object(validatorObj)
-    return new Config<
-      {
-        [K in keyof Spec]: Spec[K] extends
-          | Value<infer T, Store>
-          | Value<infer T, never>
-          ? T
-          : never
-      },
-      Store
-    >(spec, validator as any)
-  }
- 
-  /**
-   * Use this during the times that the input needs a more specific type.
-   * Used in types that the value/ variant/ list/ config is constructed somewhere else.
-  ```ts
-  const a = Config.text({
-    name: "a",
-    required: false,
-  })
- 
-  return Config.of<Store>()({
-    myValue: a.withStore(),
-  })
-  ```
-   */
-  withStore<NewStore extends Store extends never ? any : Store>() {
-    return this as any as Config<Type, NewStore>
-  }
-}
- 
- -
- -