From b0cbb0a713fce46d5dc0945da1502ce98556637d Mon Sep 17 00:00:00 2001
From: Brian Zalewski <brian@megabyte.space>
Date: Sat, 24 Dec 2022 22:00:16 -0500
Subject: [PATCH] =?UTF-8?q?=E2=98=81=EF=B8=8F=20chore(automation):=20Autom?=
 =?UTF-8?q?ated=20update?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .config/Brewfile                              | 221 ++++++++++++
 .config/assets/logo-jest-report.png           | Bin 0 -> 1735 bytes
 .config/bash/try-catch.sh                     |  85 +++++
 .config/docs/variables.json                   | 332 +++++++++++++++++
 .config/nodemon.jest.json                     |   5 +
 .config/nodemon.json                          |   5 +
 .config/run                                   |   4 +
 .config/scripts/esbuild.js                    |  18 +
 .config/variables.json                        | 341 ++++++++++++++++++
 home/.chezmoidata.yaml                        |   2 +-
 .../themes/themer-dark-color-theme.json       |  68 ++--
 .../themes/themer-light-color-theme.json      |  68 ++--
 package.json                                  |  10 +-
 13 files changed, 1085 insertions(+), 74 deletions(-)
 create mode 100644 .config/Brewfile
 create mode 100644 .config/assets/logo-jest-report.png
 create mode 100644 .config/bash/try-catch.sh
 create mode 100644 .config/docs/variables.json
 create mode 100644 .config/nodemon.jest.json
 create mode 100644 .config/nodemon.json
 create mode 100644 .config/run
 create mode 100644 .config/scripts/esbuild.js
 create mode 100644 .config/variables.json

diff --git a/.config/Brewfile b/.config/Brewfile
new file mode 100644
index 00000000..7deb6799
--- /dev/null
+++ b/.config/Brewfile
@@ -0,0 +1,221 @@
+# Standard Homebrew taps
+tap "homebrew/cask"
+tap "homebrew/core"
+tap "homebrew/bundle"
+tap "homebrew/services"
+
+# Homebrew Formulae
+# e.g. `brew install <program>`
+# @brew [act](https://github.com/nektos/act) - Run GitHub Actions locally
+brew "act"
+# @brew [appium](https://appium.io/) - A framework focused on native Android/iOS testing
+brew "appium"
+# @brew [azure-cli](https://docs.microsoft.com/en-us/cli/azure/) - The official CLI for interacting with Microsoft Azure
+brew "azure-cli"
+# @brew [bat](https://github.com/sharkdp/bat) - Clone of cat with syntax highlighting and Git integration
+brew "bat"
+# @brew [bitwarden-cli](https://github.com/bitwarden/cli) - Access and manage a BitWarden instance via CLI
+brew "bitwarden-cli"
+# @brew [codeclimate](https://github.com/codeclimate/codeclimate) - Interact with CodeClimate via CLI
+# tap "codeclimate/formulae"
+# brew "codeclimate"
+##### ERROR #####
+# ==> Installing codeclimate from codeclimate/formulae
+# ==> make install
+# Last 15 lines from /home/megabyte/.cache/Homebrew/Logs/codeclimate/01.make:
+# 2022-03-11 08:34:36 +0000
+#
+# make
+# install
+#
+# bin/check
+# Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
+# Unable to run `docker version', the docker daemon may not be running
+# Please ensure `docker version' succeeds and try again
+# make: *** [Makefile:43: install] Error 1
+#
+# If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
+# https://github.com/codeclimate/homebrew-formulae/issues
+#
+# Installing codeclimate has failed!
+##### ERROR #####
+# @brew [croc](https://github.com/schollz/croc) - A sharing tool that helps transfer files from one computer to another
+brew "croc"
+# @brew [curl](https://curl.se) - An HTTP command-line tool
+brew "curl"
+# @brew [dasel](https://github.com/TomWright/dasel) - Select, put, and delete data from JSON, TOML, YAML, XML and CSV files
+brew "dasel"
+# @brew [direnv](https://github.com/direnv/direnv) - Loads and unloads environment variables based on the directory you are in
+brew "direnv"
+# @brew [dive](https://github.com/wagoodman/dive) - Tool for exploring layer in a Docker image
+brew "dive"
+# @brew [docker](https://www.docker.com/) - A powerful toolchain for developing containerized applications
+if OS.linux?
+    brew "docker"
+end
+# @brew [docker-slim](https://github.com/docker-slim/docker-slim) - A tool that shrinks Docker images and makes them more secure
+brew "docker-slim"
+# @brew [Dockle](https://github.com/goodwithtech/dockle) - A container image security scanner
+tap "goodwithtech/r"
+brew "goodwithtech/r/dockle"
+# @brew [exiftool](https://exiftool.org) - A library for reading and writing EXIF data to files
+brew "exiftool"
+# @brew [ffsend](https://github.com/timvisee/ffsend) - Fully featured Firefox Send client that makes sharing files easy
+brew "ffsend"
+# @brew [gh](https://github.com/cli/cli) - The official GitHub command line tool
+brew "gh"
+# @brew [git](https://git-scm.com) - Tool for interacting with git repositories
+brew "git"
+# @brew [gitlab-runner](https://docs.gitlab.com/runner/) - Test GitLab CI configurations and add self-hosted runners
+brew "gitlab-runner"
+# @brew [gitleaks](https://github.com/zricethezav/gitleaks) - Scans git repos for secrets
+brew "gitleaks"
+# @brew [git-subrepo](https://github.com/ingydotnet/git-subrepo) - An alternative to git submodules
+brew "git-subrepo"
+# @brew [glab](https://glab.readthedocs.io/) - Open-source GitLab CLI
+brew "glab"
+# @brew [go](https://go.dev) - Open source programming language
+brew "go"
+# @brew [goofys](https://github.com/kahing/goofys) - High-performance, POSIX-ish Amazon S3 file system written in Go
+brew "goofys"
+# @brew [grex](https://github.com/pemistahl/grex) - Generate regular expressions by providing target matches
+brew "grex"
+# @brew [helm](https://helm.sh/) - The self-proclaimed package manager for Kubernetes
+brew "helm"
+# @brew [htmlq](https://github.com/mgdm/htmlq) - Use CSS to extract content from HTML via a CLI
+brew "htmlq"
+# @brew [hyperfine](https://github.com/sharkdp/hyperfine) - Command-line benchmarking tool
+brew "hyperfine"
+# @brew [jo](https://github.com/jpmens/jo) - JSON output from scripts
+brew "jo"
+# @brew [jq](https://stedolan.github.io/jq/) - Lightweight and flexible command-line JSON processor
+brew "jq"
+# @brew [kubectx](https://github.com/ahmetb/kubectx) - A tool for switching between Kubernetes clusters and namespaces
+brew "kubectx"
+# @brew [kubernetes-cli](https://kubernetes.io/docs/reference/kubectl/kubectl/) - The CLI for Kubernetes (also known as kubectl)
+brew "kubernetes-cli"
+# @brew [mc](https://github.com/minio/mc) - Replacement for ls, cp and other commands that are compatible with file-system-mounted S3 buckets
+tap "minio/stable"
+brew "minio/stable/mc"
+# @brew [mkcert](https://github.com/FiloSottile/mkcert) - Simple tool to make locally trusted development certificates
+brew "mkcert"
+# @brew [node](https://nodejs.org/) - A JavaScript engine, based on the ultra fast V8-engine
+brew "node"
+# @brew [openssh](https://www.openssh.com/) - OpenBSD freely-licensed SSH connectivity tools
+brew "openssh"
+# @brew [ots](https://ots.sniptt.com) - Share end-to-end encrypted secrets with others via a one-time URL
+brew "ots"
+# @brew [oq](https://blacksmoke16.github.io/oq) - Performant, and portable jq wrapper that supports formats other than JSON
+brew "oq"
+# @brew [php](https://www.php.net/) - General-purpose scripting language
+# brew "php", restart_service: false
+# @brew [poetry](https://python-poetry.org/) - A Python project package management tool and more
+brew "poetry"
+# @brew [pup](https://github.com/EricChiang/pup) - Parse HTML with a CLI
+brew "pup"
+# @brew [python](https://www.python.org/) - Interpreted, interactive, object-oriented programming language
+brew "python@3.10"
+# @brew [rsync](https://rsync.samba.org/) - Tool to do fast, incremental file transfers
+brew "rsync"
+# @brew [ruby](https://www.ruby-lang.org/) - Powerful, clean, object-oriented scripting language
+brew "ruby"
+# @brew [sshpass](https://github.com/hudochenkov/homebrew-sshpass) - Library that allows Ansible to connect over SSH with a password
+tap "hudochenkov/sshpass"
+brew "hudochenkov/sshpass/sshpass"
+# @brew [sysbench](https://github.com/akopytov/sysbench) - System performance benchmark tool
+brew "sysbench"
+# @brew [task](https://github.com/go-task/homebrew-tap) - A parallel task runner
+tap "go-task/tap"
+brew "go-task/tap/go-task"
+# @brew [teleport](https://github.com/bbatsche/homebrew-teleport) - An identity-aware SSH client for teams
+brew "teleport"
+# @brew [terraform](https://www.terraform.io/) - An infrastructure-as-code tool that allows you to define both cloud and on-prem resources
+brew "terraform"
+# @brew [tokei](https://github.com/XAMPPRocky/tokei) - Count and display the lines of code and the language used in a project
+brew "tokei"
+# @brew [trivy](https://aquasecurity.github.io/trivy/v0.18.3/) - Scan images for vulnerabilities
+tap "aquasecurity/trivy"
+brew "aquasecurity/trivy/trivy"
+# @brew [up](https://github.com/akavel/up) - Write Linux pipes with an instant live preview
+brew "up"
+# @brew [waypoint](https://www.waypointproject.io/) - Tool to build, deploy, and release any application on any platform
+tap "hashicorp/tap"
+brew "hashicorp/tap/waypoint"
+# @brew [wireshark](https://www.wireshark.org) - Graphical network analyzer and capture tool (CLI)
+if OS.linux?
+    brew "wireshark"
+end
+# @brew [yarn](https://yarnpkg.com/) - JavaScript package manager from Facebook
+brew "yarn"
+# @brew [yq](https://github.com/mikefarah/yq) - Process and manipulate YAML documents
+brew "yq"
+# @brew [coreutils](https://www.gnu.org/software/coreutils) - A suite of basic UNIX tools published to improve compatibility between Linux and macOS scripts
+if OS.mac?
+    brew "coreutils"
+end
+
+# Homebrew Casks (only available on macOS)
+# e.g. `brew install --cask <program>`
+# @cask [altair](https://altair.sirmuel.design/) - GraphQL GUI client
+cask "altair"
+# @cask [balenaetcher](https://balena.io/etcher) - Tool to flash OS images to SD cards & USB drives
+cask "balenaetcher"
+# @cask [bitwarden](https://bitwarden.com/) - Desktop client for BitWarden
+cask "bitwarden"
+# @cask [docker](https://docker.com) - The desktop GUI for Docker, a virtualization platform for containers and microservices
+cask "docker"
+# @cask [firefox](https://www.mozilla.org/firefox/) - A popular web browser
+cask "firefox"
+# @cask [gimp](https://www.gimp.org/) - Free and open-source image editor
+cask "gimp"
+# @cask [google-chrome](https://www.google.com/chrome/) - Sandbox-based web browser published by Google
+cask "google-chrome"
+# @cask [gcloud](https://cloud.google.com/sdk/gcloud) - The official Google Cloud Platform SDK CLI tool
+cask "google-cloud-sdk"
+# @cask [iterm2](https://www.iterm2.com/) - An improved terminal for macOS
+cask "iterm2"
+# @cask [java](https://www.java.com/en/) - Libraries required for running and developing Java applications
+cask "java" unless system "/usr/libexec/java_home --failfast"
+# @cask [lens](https://k8slens.dev/) - An IDE for Kubernetes
+cask "lens"
+# @cask [microsoft-teams](https://teams.microsoft.com/downloads) - Meet, chat, call, and collaborate in just one place
+cask "microsoft-teams"
+# @cask [osxfuse](https://github.com/osxfuse/osxfuse) - Extends macOS by adding support for user space file systems
+cask "osxfuse"
+# @cask [postman](https://www.postman.com/) - Collaboration platform for API development
+cask "postman"
+# @cask [slack](https://slack.com/) - Team communication and collaboration software
+cask "slack"
+# @cask [skype](https://www.skype.com/) - Video chat, voice call, and instant messaging application
+cask "skype"
+# @cask [teamviewer](https://www.teamviewer.com/) - Remote access and connectivity software focused on security
+cask "teamviewer"
+# @cask [vagrant](https://www.vagrantup.com/) - Command-line, configuration-driven CLI for launching virtualization tools
+cask "vagrant"
+# @cask [virtualbox](https://www.virtualbox.org/) - A popular virtualization platform for virtual machines
+cask "virtualbox"
+# @cask [visual-studio-code](https://code.visualstudio.com/) - Open source code editor
+cask "visual-studio-code"
+# @cask [vmware-fusion](https://www.vmware.com/products/fusion.html) - Create, manage, and run virtual machines
+cask "vmware-fusion"
+# @cask [wireshark](https://www.wireshark.org) - Graphical network analyzer and capture tool
+cask "wireshark"
+
+
+# Examples below
+# 'brew install --with-rmtp', 'brew services restart' on version changes
+# brew "denji/nginx/nginx-full", args: ["with-rmtp"], restart_service: :changed
+# 'brew install', always 'brew services restart', 'brew link', 'brew unlink mysql' (if it is installed)
+# brew "mysql@5.6", restart_service: true, link: true, conflicts_with: ["mysql"]
+# 'brew install --cask'
+# cask "google-chrome"
+# 'brew install --cask --appdir=~/my-apps/Applications'
+# cask "firefox", args: { appdir: "~/my-apps/Applications" }
+# always upgrade auto-updated or unversioned cask to latest version even if already installed
+# cask "opera", greedy: true
+# 'brew install --cask' only if '/usr/libexec/java_home --failfast' fails
+# cask "java" unless system "/usr/libexec/java_home --failfast"
+# 'mas install'
+# mas "1Password", id: 443987910
+# 'whalebrew install'
+# whalebrew "whalebrew/wget"
diff --git a/.config/assets/logo-jest-report.png b/.config/assets/logo-jest-report.png
new file mode 100644
index 0000000000000000000000000000000000000000..06e0995af1be9583500d813820d89b2561c75194
GIT binary patch
literal 1735
zcmb`I`9Bkk1IM>qGltn(Jw}YOIg`+wF>@w1SFRjMlY2=hrsf)I(M<77a>V0a?%P+c
zmt?txhvb@49&%*QL%zP>@4xW<;dA`>{^j%fq!4T^AYdsl004kkS>o-F)8bh7K!V4f
zlSMyu9KvCiuHgWHh~$3+9G#;a004r~R(KP~DAxDf>ml;G68(mlLzX3I>%}xI!4SC2
zpWke(i3WvJ(_yN*U7Dv}4G0U`YUILfe$YN<Eo3KGymzi0y2kw8FvqbuEXpwN(pt5f
zt}1INzuey0nKtbIn5%}uHx5@`L-pJo2~>~0r;Q;SXJ$w&e#JBT&8l@bC-S^|fIh`I
zT6n>i?SiRqlED>(?JX4i$<_gmczWQfuffk7h9)$Hgf$f~V;ex#I|nCkh|Vv?_$SJ9
zUUxk((qHQr%csH4s*2$-iw4Lx(&8&w{RDXqq4qFnB(RwNcg;Bv8PQ(6L+()0@#-4=
zi{-t_GOLa*kxPdcFLejt{b8D*yRkRL?lZ_tkB(Sj1)PY1Y5em${0O1X74O88wam^K
z7k4mR;mr5Ca;ZDPGl`c6nf_}Rv&}wVm$uYylUD*)Pa8c}US**&S~HrZxX?zh6K(9x
zc%QBlt?*eZFIbIxHGil)nUd~^;?SaER}^IOaZa!wB0uh5hR5}{VmEtN68_<Lex@MM
z>baAX=@%W(XU9*klyH$gX6UkZJkvWZ@Mrzbo%lTC)xzZUBG3E1DuyTvvSRzR<F;pG
z;Ii^ZH}tMOr|5}~Hpu2Q@NlGkF8m>cOr^!s33^e7O!V?-I2}SRMpS*Kj=sEin>=Y1
z`-<E+dg>xFoL;|)O0B(7V?d$>Q4YZ6(ur*wUg()N>1ORV4|IgerC$|uvDnFc42Mn5
zt77Qso-M?7dwQ06bi?=3q5nmE)NA5R{vYlCrG_cm!b!R9W1Z^$-CS(f>lFeL;dF`M
z;QrB^9Y3#U+mo^wWXxKLA<kVFo82K<GOk=Z=Ub7+H+v{cyVb(&E8P=k`-~~8t0qg?
zepoN6ib#U#m>EHbtV1j3`pd9H)^3Vbl%ETX@Nl;xeQI`-H_2`m&sOf1<JH)H?b9DD
z#4;?hB#Tm*W16};Y9u`9qKd-f{m`hZw0B|7wu8$qP@$M7$b#%IVKXImqSZ(?do&Xv
zlmzpGK5ej(sWPqfbdHgAPaeVK^#u$(kFYNh+sH#Ui3nv%3dN*7D9A3)p^R&^pGUf7
z)=LLq4V(3vfI`GGDYsrLl6=W>cx;4+rExuM>SSgT-ifKQRsuDr&=*q{T&7?;z$8xO
zVrAS5RZwx3DNkz#MOD%WDrHd3e=!@d3#J4V_4(T}0nDd<Ox>`Qb1LfXHJ1QCze~Kd
zIRsb`ay$b@nKh9$FtHw5l=7{clxr=}l4a@?@cYSxFI0^a^9n~t4&c>-9Atu`%RJX3
zGD<0p5B5oIB*?dgAhPLbv8-)x@gbzC_BXdR7rHeqy+o^2QjALw->kpz(tQxvor>q_
zm`)7itfUj`xbE{x`!$(UEQM-b`-PWwK@e?_6MJ~ke&R?TeG>$wNK7?z41I1xl0J|n
z*k=Q;&S*5&r`l=Sf7{L*=Y=!FS2D9HDj-wW(}}F7A;=}3XwueQFAV!V;$VFP;>Bz1
zI2a|e450`E>K@ueO(-VbVFG|BM<-a<k5~J>6M>e&GfplQYg8BYJl&=FiP~~>!^i<a
zdm@zhUH(X*lTX9pLkf}ZC5y{1^oG^knW??-(jg@x&toNodc$pZSvkg0dQ*U1$K6vu
zv9Hwyj}lDvi&y$o0-4_h3N8LCOg=UdmwCn2#VJVjMAE6<C7In=x-0$83@nSN{KoTS
z@ac_cHzrt3O!Nk+esoLR8%r!VnW$JWk-G9CDo*mSS^bv!Pc@5k-(5waID|PI?eRkJ
zkGij%>uHr(z1wy}68QlkKlUNTe5#c#wZ4Ulzw917GkS#1>k}w^%LguPMa;?|n^!O;
zhF!2p@;lsuW;N-LCSTu+@IdhF*j}W$s&FR?zbA_@|Nb#OQf-3+PpuS7Ej0u2pWi!^
zD5<AE(s*FBu<xU<(~`$&IkJHcW}t8qAH2g%;3Qa&-S0%DwDFaYA%Nutbe1Id7oXbn
zWT}9MdtJb2&XW@*otQ$Yrit;Eqt-XVjD|-fIO&Vf-3<>phZ>pYKSO=XBkV)p2n2V;
zp?|K6Nq&<cS@jdtKg;$GsKmo@>eh_hU}YRF4hU)Tu4_L(_VD<b09IzU_$r(?_1}$9
B5di=I

literal 0
HcmV?d00001

diff --git a/.config/bash/try-catch.sh b/.config/bash/try-catch.sh
new file mode 100644
index 00000000..a9ae744d
--- /dev/null
+++ b/.config/bash/try-catch.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+# Try / catch in bash
+#
+# ````
+# #!/bin/bash
+# export AnException=100
+# export AnotherException=101
+#
+# # start with a try
+# try
+# (   # open a subshell !!!
+#     echo "do something"
+#     [ someErrorCondition ] && throw $AnException
+#
+#     echo "do something more"
+#     executeCommandThatMightFail || throw $AnotherException
+#
+#     throwErrors # automaticatly end the try block, if command-result is non-null
+#     echo "now on to something completely different"
+#     executeCommandThatMightFail
+#
+#     echo "it's a wonder we came so far"
+#     executeCommandThatFailsForSure || true # ignore a single failing command
+#
+#     ignoreErrors # ignore failures of commands until further notice
+#     executeCommand1ThatFailsForSure
+#     local result = $(executeCommand2ThatFailsForSure)
+#     [ result != "expected error" ] && throw $AnException # ok, if it's not an expected error, we want to bail out!
+#     executeCommand3ThatFailsForSure
+#
+#     # make sure to clear $ex_code, otherwise catch * will run
+#     # echo "finished" does the trick for this example
+#     echo "finished"
+# )
+# # directly after closing the subshell you need to connect a group to the catch using ||
+# catch || {
+#     # now you can handle
+#     case $ex_code in
+#         $AnException)
+#             echo "AnException was thrown"
+#         ;;
+#         $AnotherException)
+#             echo "AnotherException was thrown"
+#         ;;
+#         *)
+#             echo "An unexpected exception was thrown"
+#             throw $ex_code # you can rethrow the "exception" causing the script to exit if not caught
+#         ;;
+#     esac
+# }
+# ```
+# Source: https://stackoverflow.com/a/25180186`
+
+# shellcheck disable=SC2034
+Logger="${BASH_SOURCE[0]}../log"
+
+# @description Turn on fail on errors mode
+function try() {
+    [[ $- = *e* ]]; SAVED_OPT_E=$?
+    set +e
+}
+
+# @description Turn on fail on errors mode
+function throw() {
+    exit "$1"
+}
+
+# @description Turn on fail on errors mode
+function catch() {
+    export ex_code=$?
+    # shellcheck disable=SC2004
+    (( $SAVED_OPT_E )) && set +e
+    return $ex_code
+}
+
+# @description Turn on fail on errors mode
+function throwErrors() {
+    set -e
+}
+
+# @description Do not fail on errors mode
+function ignoreErrors() {
+    set +e
+}
diff --git a/.config/docs/variables.json b/.config/docs/variables.json
new file mode 100644
index 00000000..9e56c395
--- /dev/null
+++ b/.config/docs/variables.json
@@ -0,0 +1,332 @@
+{
+  "SPACE": "",
+  "alt_badge_style": "flat-square",
+  "author": {
+    "email": "brian@megabyte.space",
+    "name": "Brian Zalewski"
+  },
+  "autodoc_actions_description": "",
+  "autodoc_tags_description": "",
+  "autodoc_todo_description": "",
+  "autodoc_variables_description": "",
+  "badge_style": "for-the-badge",
+  "build_coverage_regex": "Lines\\s*:\\s*(\\d+.?\\d*)%",
+  "commit_help_url": "https://megabyte.space/docs/contributing/commit-guidelines",
+  "company": "Megabyte LLC",
+  "copyright": "2020-2021",
+  "docker_label_authors": "Brian Zalewski <brian@megabyte.space>",
+  "docs": {
+    "header_description_post": "<i></i>",
+    "header_description_pre": "<i></i>",
+    "header_title_post": "<i></i>",
+    "header_title_pre": "<i></i>",
+    "link": "https://megabyte.space/docs/common/npm"
+  },
+  "downloadLinks": {
+    "fedora": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso",
+    "kali": "https://cdimage.kali.org/kali-2022.1/kali-linux-2022.1-installer-amd64.iso",
+    "qubes": "https://ftp.qubes-os.org/iso/Qubes-R4.1.0-x86_64.iso",
+    "tails": "https://ftp.osuosl.org/pub/tails/stable/tails-amd64-4.29/tails-amd64-4.29.iso",
+    "ubuntu": "https://mirror.arizona.edu/ubuntu-releases/21.10/ubuntu-21.10-desktop-amd64.iso",
+    "windows": "https://software.download.prss.microsoft.com/db/Win11_English_x64.iso?t=c15e0cba-9c8d-4984-b30f-43c42425733d&e=1650582458&h=960d57d2c6a0243e32d3106c0d8f82387966ddf9a9bfce82f89e66866457c014"
+  },
+  "email": {
+    "help": "help@megabyte.space"
+  },
+  "emoji_beginnings": ["🚀 ", "🔥👉 ", "👉 ", "😉 ", "🆓 ", "🐴 ", "👀 ", "🎉 ", "", "", "", "", "", "", "", ""],
+  "emoji_endings": [" 🚀", " 🔥🔥🔥", " 👏", " 😉", " 🐙", " 🐴", " 👀", " 🎟", " 🎉🎉", "", "", "", "", "", "", ""],
+  "github_prefix": "<i></i>",
+  "gitlab_pipelines": [
+    {
+      "active": true,
+      "cron": "0 5 1 * *",
+      "description": "Monthly Repository Update",
+      "ref": "synchronize",
+      "variable": {
+        "REPOSITORY_UPDATE": true
+      }
+    }
+  ],
+  "gomodProxy": true,
+  "group": "none",
+  "groups": {
+    "angular": ["app", "website"],
+    "ansible": ["playbook", "role"],
+    "docker": ["ansible-molecule", "app", "ci-pipeline", "codeclimate", "software"],
+    "go": ["cli", "library"],
+    "npm": ["app", "cli", "config", "library", "plugin"],
+    "packer": ["desktop", "server"],
+    "python": ["cli", "library"]
+  },
+  "homebrew": {
+    "folder": "Formula",
+    "name": "homebrew-tap",
+    "owner": "installdoc"
+  },
+  "idPost": "megabyte.space",
+  "json_top_keys": "",
+  "license": "MIT",
+  "link": {
+    "chat": "https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/",
+    "docs": "https://megabyte.space/docs",
+    "gitter": "https://gitter.im/megabyte-labs/community",
+    "home": "https://megabyte.space",
+    "installdoctor": "https://install.doctor",
+    "privacy": "https://megabyte.space/privacy",
+    "shield": "https://shields.io",
+    "terms": "https://megabyte.space/terms"
+  },
+  "misc": {
+    "appnest": "https://github.com/andreasbm/readme",
+    "husky": "https://www.npmjs.com/package/husky",
+    "tinypng": "https://tinypng.com/"
+  },
+  "name": "[[ package.json .blueprint.name - See CONTRIBUTING.md ]]",
+  "newProjectTemplates": {
+    "angular-app": {
+      "group": "angular",
+      "subgroup": "app",
+      "title": "Angular App"
+    },
+    "angular-website": {
+      "group": "angular",
+      "subgroup": "website",
+      "title": "Angular Website"
+    },
+    "ansible-role": {
+      "group": "ansible",
+      "subgroup": "role",
+      "title": "Ansible Role"
+    },
+    "docker-app": {
+      "group": "docker",
+      "subgroup": "app",
+      "title": "Dockerfile (App)"
+    },
+    "docker-ci-pipeline": {
+      "group": "docker",
+      "subgroup": "ci-pipeline",
+      "title": "CI/CD Pipeline Dockerfile"
+    },
+    "docker-codeclimate": {
+      "group": "docker",
+      "subgroup": "codeclimate",
+      "title": "CodeClimate Engine / Linter Dockerfile"
+    },
+    "docker-docker-compose": {
+      "group": "docker",
+      "subgroup": "docker-compose",
+      "title": "Docker Compose"
+    },
+    "go-cli": {
+      "group": "go",
+      "subgroup": "cli",
+      "title": "Go CLI"
+    },
+    "go-library": {
+      "group": "go",
+      "subgroup": "library",
+      "title": "Go Library"
+    },
+    "misc": {
+      "group": "misc",
+      "subgroup": "misc",
+      "title": "Miscellaneous project"
+    },
+    "npm-app": {
+      "group": "npm",
+      "subgroup": "app",
+      "title": "Node.js App"
+    },
+    "npm-cli": {
+      "group": "npm",
+      "subgroup": "cli",
+      "title": "Node.js CLI"
+    },
+    "npm-configs": {
+      "group": "npm",
+      "subgroup": "configs",
+      "title": "NPM Config Package"
+    },
+    "npm-library": {
+      "group": "npm",
+      "subgroup": "library",
+      "title": "Node.js Library"
+    },
+    "npm-plugin": {
+      "group": "npm",
+      "subgroup": "plugin",
+      "title": "NPM Plugin"
+    },
+    "npm-web-component": {
+      "group": "npm",
+      "subgroup": "web-component",
+      "title": "Web Component"
+    },
+    "packer-desktop": {
+      "group": "packer",
+      "subgroup": "desktop",
+      "title": "Packer (Desktop)"
+    },
+    "packer-server": {
+      "group": "packer",
+      "subgroup": "server",
+      "title": "Packer (Server)"
+    },
+    "python-cli": {
+      "group": "python",
+      "subgroup": "cli",
+      "title": "Python CLI"
+    },
+    "python-library": {
+      "group": "python",
+      "subgroup": "library",
+      "title": "Python Library"
+    },
+    "website": {
+      "group": "npm",
+      "subgroup": "website",
+      "title": "Website"
+    }
+  },
+  "npm_publish_config_access": "public",
+  "npm_standard_version_prerelease": "git add --all",
+  "npm_type": "module",
+  "organization": "Megabyte Labs",
+  "overview": "[[ This is a new repository without the details filled in yet. Look for the section about blueprint data in the CONTRIBUTING.md to set up the project. ]]",
+  "profile": {
+    "dockerHubUser": "professormanhattan",
+    "dockerhub": "megabytelabs",
+    "galaxy": "professormanhattan",
+    "github": "ProfessorManhattan",
+    "githubOrg": "megabyte-labs",
+    "linkedin": "blzalewski",
+    "npmjs": "thisismyfirstday",
+    "npmjs_organization": "mblabs",
+    "opencollective": "megabytelabs",
+    "patreon": "ProfessorManhattan",
+    "pypi": "ProfessorManhattan",
+    "replit": "ProfessorMegaby",
+    "stackblitz": "ProfessorManhattan",
+    "twitter": "MegabyteLabs",
+    "vagrant": "ProfessorManhattan"
+  },
+  "profile_link": {
+    "dockerhub": "https://hub.docker.com/u",
+    "galaxy": "https://galaxy.ansible.com",
+    "github": "https://github.com",
+    "linkedin": "https://www.linkedin.com/in/",
+    "npmjs": "https://www.npmjs.com/~",
+    "opencollective": "https://opencollective.com",
+    "patreon": "https://www.patreon.com",
+    "pypi": "https://pypi.org/user",
+    "replit": "https://repl.it/@",
+    "stackblitz": "https://stackblitz.com/@",
+    "twitter": "MegabyteLabs",
+    "vagrant": "https://app.vagrantup.com"
+  },
+  "redditApplicationId": "O3UxD7HlPpcN88gpEkPIXQ",
+  "redditUsername": "tsgangster",
+  "repository": {
+    "github": "",
+    "gitlab": "",
+    "gitlabBaseUrl": "https://gitlab.com/megabyte-labs",
+    "group": {
+      "ansible_roles": "https://gitlab.com/megabyte-labs/ansible-roles",
+      "ansible_roles_path": "megabyte-labs/ansible-roles",
+      "apps": "https://gitlab.com/megabyte-labs/apps",
+      "apps_path": "megabyte-labs/apps",
+      "ci": "https://gitlab.com/megabyte-labs/ci",
+      "ci_path": "megabyte-labs/ci",
+      "cloud": "https://gitlab.com/megabyte-labs/cloud",
+      "cloud_path": "megabyte-labs/cloud",
+      "common": "https://gitlab.com/megabyte-labs/common",
+      "common_path": "megabyte-labs/common",
+      "cryptocurrency": "https://gitlab.com/megabyte-labs/cryptocurrency",
+      "cryptocurrency_path": "megabyte-labs/cryptocurrency",
+      "docker_compose": "https://gitlab.com/megabyte-labs/docker-compose",
+      "docker_compose_path": "megabyte-labs/docker-compose",
+      "dockerfile": "https://gitlab.com/megabyte-labs/docker",
+      "dockerfile_path": "megabyte-labs/docker",
+      "documentation": "https://gitlab.com/megabyte-labs/documentation",
+      "documentation_path": "megabyte-labs/documentation",
+      "go": "https://gitlab.com/megabyte-labs/go",
+      "go_path": "megabyte-labs/go",
+      "kubernetes": "https://gitlab.com/megabyte-labs/kubernetes",
+      "kubernetes_path": "megabyte-labs/kubernetes_path",
+      "npm": "https://gitlab.com/megabyte-labs/npm",
+      "npm_path": "megabyte-labs/npm",
+      "packer": "https://gitlab.com/megabyte-labs/packer",
+      "packer_path": "megabyte-labs/packer",
+      "python": "https://gitlab.com/megabyte-labs/python",
+      "python_cli_path": "megabyte-labs/python/cli",
+      "python_path": "megabyte-labs/python",
+      "software": "https://gitlab.com/megabyte-labs/software",
+      "software_path": "megabyte-labs/software",
+      "web_components": "https://gitlab.com/megabyte-labs/web-components",
+      "web_components_path": "megabyte-labs/web-components"
+    },
+    "location": {
+      "commits": {
+        "github": "/commits/master",
+        "gitlab": "/-/commits/master",
+        "gitlab_e2e": "/-/commits/e2e"
+      },
+      "conduct": {
+        "github": "/blob/master/docs/CODE_OF_CONDUCT.md",
+        "gitlab": "/-/blob/master/docs/CODE_OF_CONDUCT.md"
+      },
+      "contributing": {
+        "github": "/blob/master/docs/CONTRIBUTING.md",
+        "gitlab": "/-/blob/master/docs/CONTRIBUTING.md"
+      },
+      "demo": {
+        "github": "/raw/master/docs/demo.gif",
+        "gitlab": "/-/raw/master/docs/demo.gif"
+      },
+      "issues": {
+        "github": "/issues",
+        "gitlab": "/-/issues"
+      },
+      "license": {
+        "github": "/blob/master/LICENSE",
+        "gitlab": "/-/blob/master/LICENSE"
+      },
+      "logo": {
+        "github": "/raw/master/logo.png",
+        "gitlab": "/-/raw/master/logo.png"
+      },
+      "readme": {
+        "github": "/blob/master/README.md",
+        "gitlab": "/-/blob/master/README.md"
+      }
+    },
+    "namespace": "",
+    "project": {
+      "assets": "https://gitlab.com/megabyte-labs/assets/-/raw/master",
+      "autodoc": "https://github.com/AndresBott/ansible-autodoc",
+      "playbooks": "https://github.com/ProfessorManhattan/Gas-Station",
+      "wrangler": "https://gitlab.com/megabyte-labs/wrangler"
+    }
+  },
+  "scriptsBuild": "task donothing",
+  "scriptsHelp": "task --menu",
+  "scriptsPrepare": "npm run start && (test -f Taskfile.yml && task common:husky) || true",
+  "scriptsReplaceThis": "\"",
+  "scriptsReplaceWith": "\\\"",
+  "scriptsStart": "bash start.sh",
+  "scriptsTest": "task donothing",
+  "sharp_instructions": [],
+  "slackNotificationChannel": "#misc",
+  "slackNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
+  "slackNotificationUsername": "Megabyte Labs Release Notification Bot",
+  "sponsorship": {
+    "author": "Brian Zalewski",
+    "text": "I create open source projects out of love. Although I have a job, shelter, and as much fast food as I can handle, it would still be pretty cool to be appreciated by the community for something I have spent a lot of time and money on. Please consider sponsoring me! Who knows? Maybe I will be able to quit my job and publish open source full time."
+  },
+  "subgroup": "[[ Needs to be setup. Set this in the common repository for this type of project ]]",
+  "teamsNotificationColor": "#1DA1F2",
+  "teamsNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
+  "title": "[[ package.json .blueprint.title - See CONTRIBUTING.md ]]",
+  "version": "0.0.1"
+}
diff --git a/.config/nodemon.jest.json b/.config/nodemon.jest.json
new file mode 100644
index 00000000..bbf02897
--- /dev/null
+++ b/.config/nodemon.jest.json
@@ -0,0 +1,5 @@
+{
+  "exec": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register jest --runInBand",
+  "ext": "js,jsx,ts,tsx,json,ts,yml",
+  "watch": [".env", "src"]
+}
diff --git a/.config/nodemon.json b/.config/nodemon.json
new file mode 100644
index 00000000..2440c3de
--- /dev/null
+++ b/.config/nodemon.json
@@ -0,0 +1,5 @@
+{
+  "exec": "task project:livereload",
+  "ext": "js,jsx,ts,tsx,json,ts,yml",
+  "watch": [".env", "src"]
+}
diff --git a/.config/run b/.config/run
new file mode 100644
index 00000000..0a785c90
--- /dev/null
+++ b/.config/run
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+# @file .config/run
+# @brief Wrapper for Task (the Taskfile.yml runner)
diff --git a/.config/scripts/esbuild.js b/.config/scripts/esbuild.js
new file mode 100644
index 00000000..62ad45ef
--- /dev/null
+++ b/.config/scripts/esbuild.js
@@ -0,0 +1,18 @@
+import * as esbuild from 'esbuild'
+import { nodeExternalsPlugin } from 'esbuild-node-externals'
+
+esbuild.build({
+  bundle: true,
+  entryPoints: ['src/main.ts'],
+  external: [
+    '@nestjs/microservices',
+    '@nestjs/websockets/socket-module',
+    'cache-manager',
+    'class-transformer',
+    'class-validator'
+  ],
+  minify: true,
+  outfile: 'dist/main.minified.js',
+  platform: 'node',
+  plugins: [nodeExternalsPlugin()]
+})
diff --git a/.config/variables.json b/.config/variables.json
new file mode 100644
index 00000000..35d2fb75
--- /dev/null
+++ b/.config/variables.json
@@ -0,0 +1,341 @@
+{
+  "SPACE": "",
+  "alt_badge_style": "flat-square",
+  "author": {
+    "email": "brian@megabyte.space",
+    "name": "Brian Zalewski"
+  },
+  "autodoc_actions_description": "",
+  "autodoc_tags_description": "",
+  "autodoc_todo_description": "",
+  "autodoc_variables_description": "",
+  "badge_style": "for-the-badge",
+  "build_coverage_regex": "Lines\\s*:\\s*(\\d+.?\\d*)%",
+  "commit_help_url": "https://megabyte.space/docs/contributing/commit-guidelines",
+  "company": "Megabyte LLC",
+  "copyright": "2020-2021",
+  "docker_label_authors": "Brian Zalewski <brian@megabyte.space>",
+  "docs": {
+    "header_description_post": "<i></i>",
+    "header_description_pre": "Maintained by ",
+    "header_title_post": "<i></i>",
+    "header_title_pre": "<i></i>",
+    "link": "https://megabyte.space/docs/common/npm"
+  },
+  "downloadLinks": {
+    "fedora": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso",
+    "kali": "https://cdimage.kali.org/kali-2022.1/kali-linux-2022.1-installer-amd64.iso",
+    "qubes": "https://ftp.qubes-os.org/iso/Qubes-R4.1.0-x86_64.iso",
+    "tails": "https://ftp.osuosl.org/pub/tails/stable/tails-amd64-4.29/tails-amd64-4.29.iso",
+    "ubuntu": "https://mirror.arizona.edu/ubuntu-releases/21.10/ubuntu-21.10-desktop-amd64.iso",
+    "windows": "https://software.download.prss.microsoft.com/db/Win11_English_x64.iso?t=c15e0cba-9c8d-4984-b30f-43c42425733d&e=1650582458&h=960d57d2c6a0243e32d3106c0d8f82387966ddf9a9bfce82f89e66866457c014"
+  },
+  "email": {
+    "help": "help@megabyte.space"
+  },
+  "emoji_beginnings": ["🚀 ", "🔥👉 ", "👉 ", "😉 ", "🆓 ", "🐴 ", "👀 ", "🎉 ", "", "", "", "", "", "", "", ""],
+  "emoji_endings": [" 🚀", " 🔥🔥🔥", " 👏", " 😉", " 🐙", " 🐴", " 👀", " 🎟", " 🎉🎉", "", "", "", "", "", "", ""],
+  "github_prefix": "<i></i>",
+  "gitlab_pipelines": [
+    {
+      "active": true,
+      "cron": "0 12 * * 1",
+      "description": "Weekly Test",
+      "ref": "master",
+      "variable": {
+        "WEEKLY_TEST": true
+      }
+    },
+    {
+      "active": true,
+      "cron": "0 5 1 * *",
+      "description": "Monthly Repository Update",
+      "ref": "synchronize",
+      "variable": {
+        "REPOSITORY_UPDATE": true
+      }
+    }
+  ],
+  "gomodProxy": true,
+  "group": "common",
+  "groups": {
+    "angular": ["app", "website"],
+    "ansible": ["playbook", "role"],
+    "docker": ["ansible-molecule", "app", "ci-pipeline", "codeclimate", "software"],
+    "go": ["cli", "library"],
+    "npm": ["app", "cli", "config", "library", "plugin"],
+    "packer": ["desktop", "server"],
+    "python": ["cli", "library"]
+  },
+  "homebrew": {
+    "folder": "Formula",
+    "name": "homebrew-tap",
+    "owner": "installdoc"
+  },
+  "idPost": "megabyte.space",
+  "json_top_keys": "",
+  "license": "MIT",
+  "link": {
+    "chat": "https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/",
+    "docs": "https://megabyte.space/docs",
+    "gitter": "https://gitter.im/megabyte-labs/community",
+    "home": "https://megabyte.space",
+    "installdoctor": "https://install.doctor",
+    "privacy": "https://megabyte.space/privacy",
+    "shield": "https://shields.io",
+    "terms": "https://megabyte.space/terms"
+  },
+  "misc": {
+    "appnest": "https://github.com/andreasbm/readme",
+    "husky": "https://www.npmjs.com/package/husky",
+    "tinypng": "https://tinypng.com/"
+  },
+  "name": "[[ package.json .blueprint.name - See CONTRIBUTING.md ]]",
+  "newProjectTemplates": {
+    "angular-app": {
+      "group": "angular",
+      "subgroup": "app",
+      "title": "Angular App"
+    },
+    "angular-website": {
+      "group": "angular",
+      "subgroup": "website",
+      "title": "Angular Website"
+    },
+    "ansible-role": {
+      "group": "ansible",
+      "subgroup": "role",
+      "title": "Ansible Role"
+    },
+    "docker-app": {
+      "group": "docker",
+      "subgroup": "app",
+      "title": "Dockerfile (App)"
+    },
+    "docker-ci-pipeline": {
+      "group": "docker",
+      "subgroup": "ci-pipeline",
+      "title": "CI/CD Pipeline Dockerfile"
+    },
+    "docker-codeclimate": {
+      "group": "docker",
+      "subgroup": "codeclimate",
+      "title": "CodeClimate Engine / Linter Dockerfile"
+    },
+    "docker-docker-compose": {
+      "group": "docker",
+      "subgroup": "docker-compose",
+      "title": "Docker Compose"
+    },
+    "go-cli": {
+      "group": "go",
+      "subgroup": "cli",
+      "title": "Go CLI"
+    },
+    "go-library": {
+      "group": "go",
+      "subgroup": "library",
+      "title": "Go Library"
+    },
+    "misc": {
+      "group": "misc",
+      "subgroup": "misc",
+      "title": "Miscellaneous project"
+    },
+    "npm-app": {
+      "group": "npm",
+      "subgroup": "app",
+      "title": "Node.js App"
+    },
+    "npm-cli": {
+      "group": "npm",
+      "subgroup": "cli",
+      "title": "Node.js CLI"
+    },
+    "npm-configs": {
+      "group": "npm",
+      "subgroup": "configs",
+      "title": "NPM Config Package"
+    },
+    "npm-library": {
+      "group": "npm",
+      "subgroup": "library",
+      "title": "Node.js Library"
+    },
+    "npm-plugin": {
+      "group": "npm",
+      "subgroup": "plugin",
+      "title": "NPM Plugin"
+    },
+    "npm-web-component": {
+      "group": "npm",
+      "subgroup": "web-component",
+      "title": "Web Component"
+    },
+    "packer-desktop": {
+      "group": "packer",
+      "subgroup": "desktop",
+      "title": "Packer (Desktop)"
+    },
+    "packer-server": {
+      "group": "packer",
+      "subgroup": "server",
+      "title": "Packer (Server)"
+    },
+    "python-cli": {
+      "group": "python",
+      "subgroup": "cli",
+      "title": "Python CLI"
+    },
+    "python-library": {
+      "group": "python",
+      "subgroup": "library",
+      "title": "Python Library"
+    },
+    "website": {
+      "group": "npm",
+      "subgroup": "website",
+      "title": "Website"
+    }
+  },
+  "npm_publish_config_access": "public",
+  "npm_standard_version_prerelease": "git add --all",
+  "npm_type": "commonjs",
+  "organization": "Megabyte Labs",
+  "overview": "[[ This is a new repository without the details filled in yet. Look for the section about blueprint data in the CONTRIBUTING.md to set up the project. ]]",
+  "profile": {
+    "dockerHubUser": "professormanhattan",
+    "dockerhub": "megabytelabs",
+    "galaxy": "professormanhattan",
+    "github": "ProfessorManhattan",
+    "githubOrg": "megabyte-labs",
+    "linkedin": "blzalewski",
+    "npmjs": "thisismyfirstday",
+    "npmjs_organization": "mblabs",
+    "opencollective": "megabytelabs",
+    "patreon": "ProfessorManhattan",
+    "pypi": "ProfessorManhattan",
+    "replit": "ProfessorMegaby",
+    "stackblitz": "ProfessorManhattan",
+    "twitter": "MegabyteLabs",
+    "vagrant": "ProfessorManhattan"
+  },
+  "profile_link": {
+    "dockerhub": "https://hub.docker.com/u",
+    "galaxy": "https://galaxy.ansible.com",
+    "github": "https://github.com",
+    "linkedin": "https://www.linkedin.com/in/",
+    "npmjs": "https://www.npmjs.com/~",
+    "opencollective": "https://opencollective.com",
+    "patreon": "https://www.patreon.com",
+    "pypi": "https://pypi.org/user",
+    "replit": "https://repl.it/@",
+    "stackblitz": "https://stackblitz.com/@",
+    "twitter": "MegabyteLabs",
+    "vagrant": "https://app.vagrantup.com"
+  },
+  "redditApplicationId": "O3UxD7HlPpcN88gpEkPIXQ",
+  "redditUsername": "tsgangster",
+  "repository": {
+    "github": "",
+    "gitlab": "",
+    "gitlabBaseUrl": "https://gitlab.com/megabyte-labs",
+    "group": {
+      "ansible_roles": "https://gitlab.com/megabyte-labs/ansible-roles",
+      "ansible_roles_path": "megabyte-labs/ansible-roles",
+      "apps": "https://gitlab.com/megabyte-labs/apps",
+      "apps_path": "megabyte-labs/apps",
+      "ci": "https://gitlab.com/megabyte-labs/ci",
+      "ci_path": "megabyte-labs/ci",
+      "cloud": "https://gitlab.com/megabyte-labs/cloud",
+      "cloud_path": "megabyte-labs/cloud",
+      "common": "https://gitlab.com/megabyte-labs/common",
+      "common_path": "megabyte-labs/common",
+      "cryptocurrency": "https://gitlab.com/megabyte-labs/cryptocurrency",
+      "cryptocurrency_path": "megabyte-labs/cryptocurrency",
+      "docker_compose": "https://gitlab.com/megabyte-labs/docker-compose",
+      "docker_compose_path": "megabyte-labs/docker-compose",
+      "dockerfile": "https://gitlab.com/megabyte-labs/docker",
+      "dockerfile_path": "megabyte-labs/docker",
+      "documentation": "https://gitlab.com/megabyte-labs/documentation",
+      "documentation_path": "megabyte-labs/documentation",
+      "go": "https://gitlab.com/megabyte-labs/go",
+      "go_path": "megabyte-labs/go",
+      "kubernetes": "https://gitlab.com/megabyte-labs/kubernetes",
+      "kubernetes_path": "megabyte-labs/kubernetes_path",
+      "npm": "https://gitlab.com/megabyte-labs/npm",
+      "npm_path": "megabyte-labs/npm",
+      "packer": "https://gitlab.com/megabyte-labs/packer",
+      "packer_path": "megabyte-labs/packer",
+      "python": "https://gitlab.com/megabyte-labs/python",
+      "python_cli_path": "megabyte-labs/python/cli",
+      "python_path": "megabyte-labs/python",
+      "software": "https://gitlab.com/megabyte-labs/software",
+      "software_path": "megabyte-labs/software",
+      "web_components": "https://gitlab.com/megabyte-labs/web-components",
+      "web_components_path": "megabyte-labs/web-components"
+    },
+    "location": {
+      "commits": {
+        "github": "/commits/master",
+        "gitlab": "/-/commits/master",
+        "gitlab_e2e": "/-/commits/e2e"
+      },
+      "conduct": {
+        "github": "/blob/master/docs/CODE_OF_CONDUCT.md",
+        "gitlab": "/-/blob/master/docs/CODE_OF_CONDUCT.md"
+      },
+      "contributing": {
+        "github": "/blob/master/docs/CONTRIBUTING.md",
+        "gitlab": "/-/blob/master/docs/CONTRIBUTING.md"
+      },
+      "demo": {
+        "github": "/raw/master/docs/demo.gif",
+        "gitlab": "/-/raw/master/docs/demo.gif"
+      },
+      "issues": {
+        "github": "/issues",
+        "gitlab": "/-/issues"
+      },
+      "license": {
+        "github": "/blob/master/LICENSE",
+        "gitlab": "/-/blob/master/LICENSE"
+      },
+      "logo": {
+        "github": "/raw/master/logo.png",
+        "gitlab": "/-/raw/master/logo.png"
+      },
+      "readme": {
+        "github": "/blob/master/README.md",
+        "gitlab": "/-/blob/master/README.md"
+      }
+    },
+    "namespace": "",
+    "project": {
+      "assets": "https://gitlab.com/megabyte-labs/assets/-/raw/master",
+      "autodoc": "https://github.com/AndresBott/ansible-autodoc",
+      "playbooks": "https://github.com/ProfessorManhattan/Gas-Station",
+      "wrangler": "https://gitlab.com/megabyte-labs/wrangler"
+    }
+  },
+  "scriptsBuild": "task npm:build:tsconfig",
+  "scriptsHelp": "task --menu",
+  "scriptsPrepare": "npm run start && (test -f Taskfile.yml && task common:husky) || true",
+  "scriptsReplaceThis": "\"",
+  "scriptsReplaceWith": "\\\"",
+  "scriptsStart": "bash start.sh",
+  "scriptsTest": "task donothing",
+  "sharp_instructions": [],
+  "slackNotificationChannel": "#misc",
+  "slackNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
+  "slackNotificationUsername": "Megabyte Labs Release Notification Bot",
+  "sponsorship": {
+    "author": "Brian Zalewski",
+    "text": "I create open source projects out of love. Although I have a job, shelter, and as much fast food as I can handle, it would still be pretty cool to be appreciated by the community for something I have spent a lot of time and money on. Please consider sponsoring me! Who knows? Maybe I will be able to quit my job and publish open source full time."
+  },
+  "subgroup": "misc",
+  "teamsNotificationColor": "#1DA1F2",
+  "teamsNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
+  "title": "[[ package.json .blueprint.title - See CONTRIBUTING.md ]]",
+  "version": "0.0.1"
+}
diff --git a/home/.chezmoidata.yaml b/home/.chezmoidata.yaml
index d2a91c49..ed543390 100644
--- a/home/.chezmoidata.yaml
+++ b/home/.chezmoidata.yaml
@@ -1,5 +1,5 @@
 ---
-# eslint-disable eslint-comments/disable-enable-pair, max-len, max-lines
+# eslint-disable eslint-comments/disable-enable-pair, max-lines
 colors:
   background: '#161925'
   color0: '#161925'
diff --git a/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-dark-color-theme.json b/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-dark-color-theme.json
index 6fe3b9fe..65aea72b 100644
--- a/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-dark-color-theme.json
+++ b/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-dark-color-theme.json
@@ -279,16 +279,6 @@
     "notebookStatusRunningIcon.foreground": "#7cb7ff",
     "notebookStatusSuccessIcon.foreground": "#71f79f",
     "notificationCenterHeader.background": "#474b56",
-    "sash.hoverBorder": "#7cb7ff",
-    "selection.background": "#474b56",
-    "widget.shadow": "#161925",
-    "textBlockQuote.background": "#2f323e",
-    "textBlockQuote.border": "#2f323e",
-    "textCodeBlock.background": "#161925",
-    "textLink.activeForeground": "#00c1e4",
-    "textLink.foreground": "#7cb7ff",
-    "textPreformat.foreground": "#dcdfe4",
-    "textSeparator.foreground": "#797c87",
     "notificationCenterHeader.foreground": "#aaaeb8",
     "notificationLink.foreground": "#7cb7ff",
     "notificationToast.border": "#60646f",
@@ -321,21 +311,23 @@
     "peekViewResult.selectionForeground": "#c3c7d1",
     "peekViewTitle.background": "#2f323e",
     "peekViewTitleDescription.foreground": "#9295a0",
-    "scrollbar.shadow": "#161925",
-    "scrollbarSlider.activeBackground": "#9295a07f",
-    "scrollbarSlider.background": "#60646f7f",
-    "scrollbarSlider.hoverBackground": "#797c877f",
     "peekViewTitleLabel.foreground": "#c3c7d1",
     "pickerGroup.border": "#474b56",
     "pickerGroup.foreground": "#797c87",
     "problemsErrorIcon.foreground": "#ed254e",
-    "progressBar.background": "#71f79f",
     "problemsInfoIcon.foreground": "#7cb7ff",
     "problemsWarningIcon.foreground": "#dcdfe4",
+    "progressBar.background": "#71f79f",
     "quickInput.background": "#2f323e",
     "quickInput.foreground": "#c3c7d1",
     "quickInputTitle.background": "#474b56",
+    "sash.hoverBorder": "#7cb7ff",
     "scm.providerBorder": "#474b56",
+    "scrollbar.shadow": "#161925",
+    "scrollbarSlider.activeBackground": "#9295a07f",
+    "scrollbarSlider.background": "#60646f7f",
+    "scrollbarSlider.hoverBackground": "#797c877f",
+    "selection.background": "#474b56",
     "settings.checkboxBackground": "#7cb7ff",
     "settings.checkboxBorder": "#7cb7ff",
     "settings.checkboxForeground": "#161925",
@@ -346,7 +338,6 @@
     "settings.headerForeground": "#c3c7d1",
     "settings.modifiedItemIndicator": "#00c1e4",
     "settings.numberInputBackground": "#2f323e",
-    "tree.indentGuidesStroke": "#2f323e",
     "settings.numberInputForeground": "#aaaeb8",
     "settings.textInputBackground": "#2f323e",
     "settings.textInputForeground": "#aaaeb8",
@@ -359,6 +350,14 @@
     "sideBarSectionHeader.foreground": "#aaaeb8",
     "sideBarTitle.foreground": "#9295a0",
     "statusBar.background": "#7cb7ff",
+    "textBlockQuote.background": "#2f323e",
+    "widget.shadow": "#161925",
+    "textBlockQuote.border": "#2f323e",
+    "textCodeBlock.background": "#161925",
+    "textLink.activeForeground": "#00c1e4",
+    "textLink.foreground": "#7cb7ff",
+    "textPreformat.foreground": "#dcdfe4",
+    "textSeparator.foreground": "#797c87",
     "statusBar.border": "#161925",
     "statusBar.debuggingBackground": "#dcdfe4",
     "statusBar.debuggingBorder": "#161925",
@@ -385,24 +384,6 @@
     "symbolIcon.enumeratorMemberForeground": "#7cb7ff",
     "symbolIcon.eventForeground": "#dcdfe4",
     "symbolIcon.fieldForeground": "#ed254e",
-    "tab.activeBackground": "#161925",
-    "tab.activeForeground": "#aaaeb8",
-    "tab.activeModifiedBorder": "#f9dc5c",
-    "tab.border": "#161925",
-    "tab.unfocusedActiveBackground": "#161925",
-    "tab.inactiveBackground": "#2f323e",
-    "tab.inactiveForeground": "#60646f",
-    "tab.lastPinnedBorder": "#c74d89",
-    "tab.unfocusedInactiveBackground": "#2f323e",
-    "tab.unfocusedActiveForeground": "#60646f",
-    "tab.unfocusedInactiveForeground": "#474b56",
-    "tab.hoverBackground": "#2f323e80",
-    "tab.hoverForeground": "#9295a0",
-    "tab.unfocusedHoverBackground": "#2f323e80",
-    "tab.unfocusedHoverForeground": "#797c87",
-    "tab.inactiveModifiedBorder": "#f9dc5c",
-    "tab.unfocusedActiveModifiedBorder": "#f9dc5c",
-    "tab.unfocusedInactiveModifiedBorder": "#f9dc5c",
     "symbolIcon.fileForeground": "#aaaeb8",
     "symbolIcon.folderForeground": "#9295a0",
     "symbolIcon.functionForeground": "#c3c7d1",
@@ -426,6 +407,25 @@
     "symbolIcon.typeParameterForeground": "#7cb7ff",
     "symbolIcon.unitForeground": "#f9dc5c",
     "symbolIcon.variableForeground": "#dcdfe4",
+    "tab.activeBackground": "#161925",
+    "tab.activeForeground": "#aaaeb8",
+    "tab.activeModifiedBorder": "#f9dc5c",
+    "tab.border": "#161925",
+    "tab.hoverBackground": "#2f323e80",
+    "tab.hoverForeground": "#9295a0",
+    "tab.inactiveBackground": "#2f323e",
+    "tab.inactiveForeground": "#60646f",
+    "tab.inactiveModifiedBorder": "#f9dc5c",
+    "tree.indentGuidesStroke": "#2f323e",
+    "tab.lastPinnedBorder": "#c74d89",
+    "tab.unfocusedActiveBackground": "#161925",
+    "tab.unfocusedActiveForeground": "#60646f",
+    "tab.unfocusedActiveModifiedBorder": "#f9dc5c",
+    "tab.unfocusedHoverBackground": "#2f323e80",
+    "tab.unfocusedHoverForeground": "#797c87",
+    "tab.unfocusedInactiveBackground": "#2f323e",
+    "tab.unfocusedInactiveForeground": "#474b56",
+    "tab.unfocusedInactiveModifiedBorder": "#f9dc5c",
     "terminal.ansiBlack": "#161925",
     "terminal.ansiBlue": "#7cb7ff",
     "terminal.ansiBrightBlack": "#2f323e",
diff --git a/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-light-color-theme.json b/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-light-color-theme.json
index 6ac3f9c3..1bc85c48 100644
--- a/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-light-color-theme.json
+++ b/home/private_dot_config/private_Code/User/extensions/theme-betelgeuse-vscode/themes/themer-light-color-theme.json
@@ -279,16 +279,6 @@
     "notebookStatusRunningIcon.foreground": "#a0dbff",
     "notebookStatusSuccessIcon.foreground": "#95ffc3",
     "notificationCenterHeader.background": "#cccdcf",
-    "sash.hoverBorder": "#a0dbff",
-    "selection.background": "#cccdcf",
-    "widget.shadow": "#4c505866",
-    "textBlockQuote.background": "#e5e6e7",
-    "textBlockQuote.border": "#e5e6e7",
-    "textCodeBlock.background": "#ffffff",
-    "textLink.activeForeground": "#24e5ff",
-    "textLink.foreground": "#a0dbff",
-    "textPreformat.foreground": "#dcdfe4",
-    "textSeparator.foreground": "#999ba0",
     "notificationCenterHeader.foreground": "#666970",
     "notificationLink.foreground": "#a0dbff",
     "notificationToast.border": "#b2b4b7",
@@ -321,21 +311,23 @@
     "peekViewResult.selectionForeground": "#4c5058",
     "peekViewTitle.background": "#e5e6e7",
     "peekViewTitleDescription.foreground": "#7f8288",
-    "scrollbar.shadow": "#4c505866",
-    "scrollbarSlider.activeBackground": "#7f82887f",
-    "scrollbarSlider.background": "#b2b4b77f",
-    "scrollbarSlider.hoverBackground": "#999ba07f",
     "peekViewTitleLabel.foreground": "#4c5058",
     "pickerGroup.border": "#cccdcf",
     "pickerGroup.foreground": "#999ba0",
     "problemsErrorIcon.foreground": "#ff4972",
-    "progressBar.background": "#95ffc3",
     "problemsInfoIcon.foreground": "#a0dbff",
     "problemsWarningIcon.foreground": "#dcdfe4",
+    "progressBar.background": "#95ffc3",
     "quickInput.background": "#e5e6e7",
     "quickInput.foreground": "#4c5058",
     "quickInputTitle.background": "#cccdcf",
+    "sash.hoverBorder": "#a0dbff",
     "scm.providerBorder": "#cccdcf",
+    "scrollbar.shadow": "#4c505866",
+    "scrollbarSlider.activeBackground": "#7f82887f",
+    "scrollbarSlider.background": "#b2b4b77f",
+    "scrollbarSlider.hoverBackground": "#999ba07f",
+    "selection.background": "#cccdcf",
     "settings.checkboxBackground": "#a0dbff",
     "settings.checkboxBorder": "#a0dbff",
     "settings.checkboxForeground": "#ffffff",
@@ -346,7 +338,6 @@
     "settings.headerForeground": "#4c5058",
     "settings.modifiedItemIndicator": "#24e5ff",
     "settings.numberInputBackground": "#e5e6e7",
-    "tree.indentGuidesStroke": "#e5e6e7",
     "settings.numberInputForeground": "#666970",
     "settings.textInputBackground": "#e5e6e7",
     "settings.textInputForeground": "#666970",
@@ -359,6 +350,14 @@
     "sideBarSectionHeader.foreground": "#666970",
     "sideBarTitle.foreground": "#7f8288",
     "statusBar.background": "#a0dbff",
+    "textBlockQuote.background": "#e5e6e7",
+    "widget.shadow": "#4c505866",
+    "textBlockQuote.border": "#e5e6e7",
+    "textCodeBlock.background": "#ffffff",
+    "textLink.activeForeground": "#24e5ff",
+    "textLink.foreground": "#a0dbff",
+    "textPreformat.foreground": "#dcdfe4",
+    "textSeparator.foreground": "#999ba0",
     "statusBar.border": "#ffffff",
     "statusBar.debuggingBackground": "#dcdfe4",
     "statusBar.debuggingBorder": "#ffffff",
@@ -385,24 +384,6 @@
     "symbolIcon.enumeratorMemberForeground": "#a0dbff",
     "symbolIcon.eventForeground": "#dcdfe4",
     "symbolIcon.fieldForeground": "#ff4972",
-    "tab.activeBackground": "#ffffff",
-    "tab.activeForeground": "#666970",
-    "tab.activeModifiedBorder": "#ffff80",
-    "tab.border": "#ffffff",
-    "tab.unfocusedActiveBackground": "#ffffff",
-    "tab.inactiveBackground": "#e5e6e7",
-    "tab.inactiveForeground": "#b2b4b7",
-    "tab.lastPinnedBorder": "#eb71ad",
-    "tab.unfocusedInactiveBackground": "#e5e6e7",
-    "tab.unfocusedActiveForeground": "#b2b4b7",
-    "tab.unfocusedInactiveForeground": "#cccdcf",
-    "tab.hoverBackground": "#e5e6e780",
-    "tab.hoverForeground": "#7f8288",
-    "tab.unfocusedHoverBackground": "#e5e6e780",
-    "tab.unfocusedHoverForeground": "#999ba0",
-    "tab.inactiveModifiedBorder": "#ffff80",
-    "tab.unfocusedActiveModifiedBorder": "#ffff80",
-    "tab.unfocusedInactiveModifiedBorder": "#ffff80",
     "symbolIcon.fileForeground": "#666970",
     "symbolIcon.folderForeground": "#7f8288",
     "symbolIcon.functionForeground": "#4c5058",
@@ -426,6 +407,25 @@
     "symbolIcon.typeParameterForeground": "#a0dbff",
     "symbolIcon.unitForeground": "#ffff80",
     "symbolIcon.variableForeground": "#dcdfe4",
+    "tab.activeBackground": "#ffffff",
+    "tab.activeForeground": "#666970",
+    "tab.activeModifiedBorder": "#ffff80",
+    "tab.border": "#ffffff",
+    "tab.hoverBackground": "#e5e6e780",
+    "tab.hoverForeground": "#7f8288",
+    "tab.inactiveBackground": "#e5e6e7",
+    "tab.inactiveForeground": "#b2b4b7",
+    "tab.inactiveModifiedBorder": "#ffff80",
+    "tree.indentGuidesStroke": "#e5e6e7",
+    "tab.lastPinnedBorder": "#eb71ad",
+    "tab.unfocusedActiveBackground": "#ffffff",
+    "tab.unfocusedActiveForeground": "#b2b4b7",
+    "tab.unfocusedActiveModifiedBorder": "#ffff80",
+    "tab.unfocusedHoverBackground": "#e5e6e780",
+    "tab.unfocusedHoverForeground": "#999ba0",
+    "tab.unfocusedInactiveBackground": "#e5e6e7",
+    "tab.unfocusedInactiveForeground": "#cccdcf",
+    "tab.unfocusedInactiveModifiedBorder": "#ffff80",
     "terminal.ansiBlack": "#ffffff",
     "terminal.ansiBlue": "#a0dbff",
     "terminal.ansiBrightBlack": "#e5e6e7",
diff --git a/package.json b/package.json
index de12ae3e..ba64b9c9 100644
--- a/package.json
+++ b/package.json
@@ -87,13 +87,16 @@
     "node": ">=18.4.0"
   },
   "publishConfig": {
-    "@gitlab:registry": "https://gitlab.com/api/v4/projects//packages/npm/",
+    "@gitlab:registry": "https://gitlab.com/api/v4/projects/33994416/packages/npm/",
     "access": "public",
     "registry": "https://registry.npmjs.org/",
     "tag": "edge"
   },
   "blueprint": {
     "description": "A glorious combination of application settings, theme files, and a performant cross-platform, desktop-oriented software installer.",
+    "github_id": "R_kgDOIq_huw",
+    "gitlab_group_id": "3940994",
+    "gitlab_project_id": "33994416",
     "group": "npm",
     "name": "Hiawatha Dotfiles",
     "overview": "Hiawatha Dotfiles is a glorious combination of application settings, theme files, and a performant yet flexible software installer written with [ZX](https://github.com/google/zx). The installer supports almost any operating system, just checkout the [software.yml file](https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/blob/master/software.yml). It uses [Chezmoi](https://github.com/twpayne/chezmoi) to apply file changes in an interactive way. It is not your typical Chezmoi project - it is built around the philosophy that you should be able to bash all your computers to bits with a hammer and then resurrect them the next day ✝️️ by storing stateful data to an S3 bucket and automating desktop configuration as much as possible.",
@@ -103,10 +106,7 @@
     },
     "slug": "hiawatha-dotfiles",
     "subgroup": "misc",
-    "title": "Hiawatha Dotfiles - The Spirit of GitHub",
-    "github_id": "R_kgDOIq_huw",
-    "gitlab_project_id": "33994416",
-    "gitlab_group_id": "3940994"
+    "title": "Hiawatha Dotfiles - The Spirit of GitHub"
   },
   "changelog": {
     "displayTypes": [